From 2aa6001a302f86e521584ccc738d3b009e200cd2 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 19 三月 2026 17:48:05 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |  102 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 85 insertions(+), 17 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 7d518be..f414b25 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -2,6 +2,7 @@
 
 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;
@@ -12,6 +13,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -23,6 +25,9 @@
 @Transactional
 public class WorkMastHandler extends AbstractHandler<String> {
 
+
+    @Autowired
+    private MatService matService;
     @Autowired
     private WrkMastService wrkMastService;
     @Autowired
@@ -124,11 +129,15 @@
                         }
 
                         // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBomCode(),wrkDetl.getThreeCode());
                         try {
                             if(!Cools.isEmpty(orderDetl)){
-                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        wrkDetl.getBatch(),wrkDetl.getAnfme())){
+                                if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
+                                        wrkDetl.getMatnr(),
+                                        wrkDetl.getBatch(),
+                                        wrkDetl.getAnfme(),
+                                        wrkDetl.getBomCode(),
+                                        wrkDetl.getThreeCode())){
 //                                    exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -142,6 +151,7 @@
                     if (locMast.getLocSts().equals("S")) {
                         locMast.setLocSts("F");
                         locMast.setBarcode(wrkMast.getBarcode());
+                        locMast.setFullPlt(wrkMast.getFullPlt());
                         locMast.setIoTime(now);
                         locMast.setModiTime(now);
                         if (!locMastService.updateById(locMast)) {
@@ -161,13 +171,53 @@
                         return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                     }
                     for (WrkDetl wrkDetl : wrkDetls53) {
+                        String matnr = wrkDetl.getMatnr();
+                        if (matnr.substring(0,1).equals("B")) {
+                            wrkDetl.setMatnr(matnr.substring(1));
+                        }
 
                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
                         if (null != locDetl) {
                             if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
 //                                exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+                                log.error("鎹℃枡鏇存柊搴撳瓨澶辫触锛屽簱浣�"+locMast.getLocNo()+",鐗╂枡鍙�"+wrkDetl.getMatnr());
                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+
                                 return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                            }
+                            List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>()
+                                    .eq("loc_no", wrkMast.getLocNo())
+                                    .eq("matnr", wrkDetl.getMatnr())
+                                    .eq(!Cools.isEmpty(wrkDetl.getBatch()), "batch", wrkDetl.getBatch())
+                                    .in(Cools.isEmpty(wrkDetl.getBatch()), "batch", null, "", " ")
+                            );
+                            if (locDetls1.size() != 1) {
+                                log.error("鎹℃枡鏇存柊搴撳瓨鍚庨噸鏌ュ簱瀛樺け璐ワ紝鏈壘鍒板簱瀛樻垨鏌ヨ鍒颁笉涓轰竴涓�");
+                            }else {
+                                BigDecimal newAnf = new BigDecimal(locDetls1.get(0).getAnfme().toString());
+                                BigDecimal subAnf = new BigDecimal((locDetl.getAnfme() - wrkDetl.getAnfme()));
+                                if (newAnf.compareTo(subAnf) != 0) {
+                                    log.error("鎹℃枡鏇存柊搴撳瓨鍚庯紝鍙嶆煡鏁伴噺寮傚父锛屽簱浣�"+locMast.getLocNo()+",鐗╂枡鍙�"+wrkDetl.getMatnr()+",閲嶆煡鏁伴噺"+newAnf+",搴斾负鏁伴噺"+subAnf);
+                                }
+
+                            }
+                        } else {
+                            if (Math.abs(wrkDetl.getAnfme())<=0){
+                                continue;
+                            }
+                            LocDetl detl = new LocDetl();
+
+//                            Mat mat = matService.selectByMatnr(wrkDetl.getMatnr());
+//                            detl.sync(mat);
+                            detl.sync(wrkDetl);
+                            detl.setOrderNo(wrkDetl.getOrderNo());//璁㈠崟缂栧彿
+                            detl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
+                            detl.setAnfme(Math.abs(wrkDetl.getAnfme())); // 鏁伴噺
+                            detl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+                            detl.setModiTime(now);
+                            detl.setAppeTime(now);
+                            if (!locDetlService.insert(detl)) {
+                                return FAIL.setMsg("琛ユ枡 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                             }
                         }
 
@@ -208,10 +258,12 @@
                     }
                     // 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏃犲簱瀛橈紝鏇炬柊澧�
                     for (WrkDetl wrkDetl:wrkDetls54) {
-
-                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+                        if (Cools.isEmpty(wrkDetl.getMemo())) {
+                            continue;
+                        }
+                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBomCode(), wrkDetl.getThreeCode());
                         if (null != locDetl) {
-                            if (!locDetlService.updateAnfme(locDetl.getAnfme() + wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
+                            if (!locDetlService.updateAnfme(locDetl.getAnfme() + wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBomCode(), wrkDetl.getThreeCode())) {
                                 exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
                             }
                         } else {
@@ -228,14 +280,18 @@
                         }
 
                         // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+                        OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBomCode(), wrkDetl.getThreeCode());
                         if (orderDetl == null) {
-                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+                            orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBomCode(), wrkDetl.getThreeCode());
                         }
                         try {
                             if(!Cools.isEmpty(orderDetl)){
-                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetl.getBatch(), wrkDetl.getAnfme())) {
+                                if (!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
+                                        wrkDetl.getMatnr(),
+                                        orderDetl.getBatch(),
+                                        wrkDetl.getAnfme(),
+                                        wrkDetl.getBomCode(),
+                                        wrkDetl.getThreeCode())) {
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                     return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                                 }
@@ -363,13 +419,25 @@
                     }
 
                     for (WrkDetl w: wrkDetls101) {
-                        //鏇存敼璁㈠崟鏁伴噺
-//                        OrderDetl orderDetl=orderDetlService.selectItem(w.getOrderNo(),w.getMatnr(),w.getBatch());
-//                        orderDetl.setQty(orderDetl.getQty()+w.getAnfme());
-//                        if(!orderDetlService.updateById(orderDetl)){
-//                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//                            return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼璁㈠崟鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
-//                        }
+                        if (!Cools.isEmpty(w.getOrderNo())) {
+                            //鏇存敼璁㈠崟鏁伴噺
+//                            OrderDetl orderDetl=orderDetlService.selectItem(w.getOrderNo(),w.getMatnr(),w.getBatch());
+                            List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>()
+                                    .eq("order_no", w.getOrderNo())
+                                    .eq("matnr", w.getMatnr())
+                                    .eq(!Cools.isEmpty(w.getBatch()),"batch", w.getBatch())
+                            );
+                            if (Cools.isEmpty(orderDetls) || orderDetls.size() != 1) {
+                                log.error("鍏ㄦ澘鍑哄簱鏇存柊璁㈠崟淇℃伅锛屾煡鎵惧埌璁㈠崟鏄庣粏涓虹┖鎴栦笉涓�1锛氳鍗�:"+w.getOrderNo()+",鐗╂枡:"+w.getMatnr()+",鎵规:"+w.getBatch());
+                                continue;
+                            }
+                            OrderDetl orderDetl =  orderDetls.get(0);
+                            orderDetl.setQty(orderDetl.getQty()+w.getAnfme());
+                            if(!orderDetlService.updateById(orderDetl)){
+                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                                return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼璁㈠崟鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+                            }
+                        }
                     }
 
                     // 鍒犻櫎宸ヤ綔妗f簮搴撲綅鐨勫簱瀛樻槑缁�

--
Gitblit v1.9.1