From a1dd6ff24f7cae0b529ad313ba07351c07965605 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 03 十一月 2025 13:04:09 +0800
Subject: [PATCH] 管控线边仓库存

---
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |   78 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 78 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index acb5fa9..b8b09db 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -2,18 +2,22 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.utils.SaasUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * Created by vincent on 2020/7/4
@@ -35,6 +39,15 @@
     private WaitPakinService waitPakinService;
     @Autowired
     private OrderDetlService orderDetlService;
+
+    @Resource
+    private OrderService orderService;
+
+    @Resource
+    private ManLocDetlService manLocDetlService;
+
+    @Resource
+    private NodeService nodeService;
 
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
@@ -127,6 +140,28 @@
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                     return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                                } else {
+                                    // 鎻掑叆璋冩嫧鍏ュ簱鍗曞搴旂嚎杈逛粨鍑哄簱璁板綍
+                                    Order order = orderService.selectByNo(orderDetl.getOrderNo());
+                                    if (order.getDocType$().equals("璋冩嫧鍏ュ簱鍗�")) {
+                                        String locNo = orderDetl.getSupp();
+                                        ManLocDetl locDetl2 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
+                                        if (locDetl2 == null) { // 绾胯竟搴撴棤姝ゅ簱瀛�
+                                            log.warn("璋冩嫧鍏ュ簱鍗曞搴旂嚎杈瑰簱搴撳瓨鏃狅細{locNo:{},matnr:{},batch:{}}", locNo, wrkDetl.getMatnr(), wrkDetl.getBatch());
+                                        } else if (locDetl2.getAnfme() < wrkDetl.getAnfme()) { // 绾胯竟搴撴搴撳瓨涓嶅
+                                            manLocDetlService.delete(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
+                                            log.warn("璋冩嫧鍏ュ簱鍗曞搴旂嚎杈瑰簱搴撳瓨涓嶈冻锛歿locNo:{},matnr:{},batch:{},locAnfme:{},wrkAnfme:{}}", locNo, wrkDetl.getMatnr(), wrkDetl.getBatch(), locDetl2.getAnfme(), wrkDetl.getAnfme());
+                                        } else if (Objects.equals(locDetl2.getAnfme(), wrkDetl.getAnfme())) { // 鍒犻櫎璇ョ墿鏂欑嚎杈瑰簱搴撳瓨鏁版嵁
+                                            manLocDetlService.delete(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
+                                        } else { // 鏇存柊璇ョ墿鏂欑嚎杈瑰簱搴撳瓨
+                                            locDetl2.setAnfme(locDetl2.getAnfme() - wrkDetl.getAnfme());
+                                            locDetl2.setUpdateBy(wrkDetl.getAppeUser());
+                                            locDetl2.setModiTime(new Date());
+                                            manLocDetlService.update(locDetl2, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
+                                        }
+                                        // 璁板綍鏃ュ織
+                                        SaasUtils.insertLog(3, locNo, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getAppeUser(), wrkDetl.getBatch());
+                                    }
                                 }
                             }
                         } catch (Exception ignore){}
@@ -361,6 +396,49 @@
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                     return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+                                } else  { // 鎻掑叆璋冩嫧鍑哄簱鍗曞搴旂嚎杈逛粨鍏ュ簱璁板綍
+                                    Order order = orderService.selectByNo(orderDetl.getOrderNo());
+                                    if(order.getDocType$().equals("璋冩嫧鍑哄簱鍗�")) {
+
+                                        String locNo = orderDetl.getSuppCode(); // 绾胯竟浠�
+
+                                        Node node = nodeService.selectByUuid(locNo);
+                                        if (Cools.isEmpty(node)) {
+                                            throw new CoolException(locNo + ":搴撲綅涓嶅瓨鍦�");
+                                        }
+                                        ManLocDetl locDetl1 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).
+                                                eq("batch", wrkDetl.getBatch()));
+                                        if (!Cools.isEmpty(locDetl1)) {
+                                            locDetl1.setAnfme(locDetl1.getAnfme() + wrkDetl.getAnfme());
+                                            locDetl1.setModiTime(now);
+                                            manLocDetlService.update(locDetl1, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).
+                                                    eq("batch", wrkDetl.getBatch()));
+                                        } else {
+                                            ManLocDetl manLocDetl = new ManLocDetl();
+                                            manLocDetl.setLocNo(locNo);
+//                                            manLocDetl.setBarcode(barcode);
+//                                            manLocDetl.setZpallet(barcode);
+                                            manLocDetl.setNodeId(node.getId());
+                                            manLocDetl.setMaktx(wrkDetl.getMaktx());
+                                            manLocDetl.setMatnr(wrkDetl.getMatnr());
+                                            manLocDetl.setSpecs(wrkDetl.getSpecs());
+                                            manLocDetl.setBatch(Cools.isEmpty(wrkDetl.getBatch()) ? "" : wrkDetl.getBatch());
+                                            manLocDetl.setAnfme(wrkDetl.getAnfme());
+                                            manLocDetl.setCreateBy(wrkDetl.getAppeUser());
+                                            manLocDetl.setCreateTime(now);
+                                            if (!manLocDetlService.insert(manLocDetl)) {
+                                                log.error("搴撳瓨鏇存柊鏃舵彃鍏ョ嚎杈瑰簱鏄庣粏澶辫触");
+                                                throw new CoolException("搴撳瓨鏇存柊鏃舵彃鍏ョ嚎杈瑰簱鏄庣粏澶辫触锛�");
+                                            }
+
+                                            node.setUpdateBy(wrkDetl.getAppeUser());
+                                            node.setUpdateTime(now);
+                                            nodeService.updateById(node);
+                                        }
+
+                                        // 璁板綍鏃ュ織
+                                        SaasUtils.insertLog(2, locNo, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getAppeUser(),wrkDetl.getBatch());
+                                    }
                                 }
                             }
                         } catch (Exception ignore){}

--
Gitblit v1.9.1