From 997c3f99757ba9488da232ada5c176da0f6a3cb3 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期四, 12 三月 2026 10:51:29 +0800
Subject: [PATCH] no message

---
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |  249 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 201 insertions(+), 48 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 1a0345d..4078f98 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -12,6 +12,7 @@
 import com.zy.asrs.service.impl.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
+import com.zy.common.service.CommonService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -65,6 +66,8 @@
     private BasStationDetlService basStationDetlService;
     @Autowired
     private BasAreasService basAreasService;
+    @Autowired
+    private CommonService commonService;
 
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
@@ -192,8 +195,8 @@
                                 }
                             }
                         } catch (Exception ignore) {
-                        }
 
+                        }
                     }
                     // 淇敼搴撲綅鐘舵�� S ====>> F
                     if (locMast.getLocSts().equals("S")) {
@@ -278,7 +281,6 @@
                                 + wrkMast.getLocNo() + "]");
                     }
                     for (WrkDetl wrkDetl : wrkDetls53) {
-
                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(),
                                 wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(),
                                 wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(),
@@ -323,8 +325,8 @@
                                 }
                             }
                         } catch (Exception ignore) {
-                        }
 
+                        }
                     }
                     // 淇敼搴撲綅鐘舵�� Q ====>> F
                     if (locMast.getLocSts().equals("Q")) {
@@ -386,6 +388,42 @@
                             }
                         }
 
+
+//                        OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", pakin.getOrderNo()));
+//                        if (Objects.isNull(orderPakin)) {
+//                            throw new CoolException("鏁版嵁閿欒锛岃鍗曚俊鎭笉瀛樺湪锛侊紒");
+//                        }
+//
+//                        if (!orderPakin.getDocType().equals(0)) {
+//                            // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+//                            OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(),
+//                                    pakin.getMatnr(), pakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
+//                                    pakin.getStandby2(), pakin.getStandby3(),
+//                                    pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
+//                            if (orderDetlPakin == null) {
+//                                orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(), pakin.getMatnr(),
+//                                        pakin.getBatch(),
+//                                        pakin.getBrand(), pakin.getStandby1(), pakin.getStandby2(),
+//                                        pakin.getStandby3(),
+//                                        pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
+//                            }
+//                            try {
+//                                if (!Cools.isEmpty(orderDetlPakin)) {
+//                                    if (!orderDetlPakinService.increaseQtyByOrderNo(pakin.getOrderNo(),
+//                                            pakin.getMatnr(),
+//                                            orderDetlPakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
+//                                            pakin.getStandby2(), pakin.getStandby3(),
+//                                            pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3(),
+//                                            pakin.getAnfme())) {
+//                                        throw new CoolException("AGV鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo()
+//                                                + "],[locNo=" + wrkMast.getLocNo() + "]");
+//                                    }
+//                                }
+//                            } catch (Exception ignore) {
+//
+//                            }
+//                        }
+
                         // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
                         OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(wrkDetl.getOrderNo(),
                                 wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
@@ -407,7 +445,6 @@
                         } catch (Exception ignore) {
 
                         }
-
                     }
                     // 淇敼搴撲綅鐘舵�� Q ====>> F
                     if (locMast.getLocSts().equals("Q")) {
@@ -462,9 +499,9 @@
                             locDetl.setAnfme(checkOrderDetl.getDiffQty()
                                     .compareTo(BigDecimal.ZERO) == 0
                                     || checkOrderDetl.getDiffQty()
-                                            .compareTo(BigDecimal.ZERO) > 0
-                                                    ? oriAnfme.doubleValue()
-                                                    : oriAnfme.add(checkOrderDetl.getDiffQty()).doubleValue());
+                                    .compareTo(BigDecimal.ZERO) > 0
+                                    ? oriAnfme.doubleValue()
+                                    : oriAnfme.add(checkOrderDetl.getDiffQty()).doubleValue());
                             locDetl.setBookQty(oriAnfme);
                             locDetl.setDiffQty(checkOrderDetl.getDiffQty());
                             if (!locDetlService.updateById(locDetl)) {
@@ -631,6 +668,46 @@
                         }
                     }
                     break;
+                case 103:
+//                    List<WrkDetl> wrkDetls103 = wrkDetlService
+//                            .selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+//                    if (wrkDetls103.isEmpty()) {
+//                        // exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌猴紱[workNo={0}]", wrkMast.getWrkNo());
+//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                        return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + wrkMast.getWrkNo() + "],[locNo="
+//                                + wrkMast.getSourceLocNo() + "]");
+//                    }
+
+//                    for (WrkDetl wrkDetl : wrkDetls103) {
+//                        // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+//                        OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
+//                                wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+//                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+//                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+//                        if (orderDetlPakout == null) {
+//                            orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(),
+//                                    wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+//                                    wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+//                                    wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
+//                        }
+//                        try {
+//                            if (!Cools.isEmpty(orderDetlPakout)) {
+//                                if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
+//                                        wrkDetl.getMatnr(),
+//                                        orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+//                                        wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+//                                        wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
+//                                        wrkDetl.getAnfme())) {
+//                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+//                                    return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo()
+//                                            + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+//                                }
+//                            }
+//                        } catch (Exception ignore) {
+//                            log.error(ignore.getMessage());
+//                        }
+//                    }
+                    break;
                 // 骞舵澘閫斾腑鎹℃枡
                 case 108:
                     // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
@@ -742,10 +819,11 @@
      */
     @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> agvDoOut(Task task) {
+        LocCache locMast = locCacheService
+                .selectOne(new EntityWrapper<LocCache>().eq("loc_no", task.getSourceLocNo()));
+        Date now = new Date();
+
         if (task.getIoType().equals(101)) {
-            Date now = new Date();
-            LocCache locMast = locCacheService
-                    .selectOne(new EntityWrapper<LocCache>().eq("loc_no", task.getSourceLocNo()));
             if (Objects.isNull(locMast)) {
                 throw new RuntimeException("鏁版嵁閿欒锛氬簱浣嶄俊鎭笉鑳戒负绌猴紒锛�");
             }
@@ -756,7 +834,6 @@
                 return FAIL.setMsg(
                         "鍏ㄦ澘鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
             }
-
             BasStation devNo = basStationService
                     .selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo()));
             if (Objects.isNull(devNo)) {
@@ -831,9 +908,6 @@
                 throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
             }
         } else if (task.getIoType().equals(110)) {
-            Date now = new Date();
-            LocCache locMast = locCacheService
-                    .selectOne(new EntityWrapper<LocCache>().eq("loc_no", task.getSourceLocNo()));
             if (Objects.isNull(locMast)) {
                 throw new RuntimeException("鏁版嵁閿欒锛氬簱浣嶄俊鎭笉鑳戒负绌猴紒锛�");
             }
@@ -866,8 +940,77 @@
             if (!taskService.updateById(task)) {
                 throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
             }
-        } else {
+        } else if (task.getIoType().equals(103)) {
+            List<TaskDetl> wrkDetls103 = taskDetlService
+                    .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
+            if (wrkDetls103.isEmpty()) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + task.getWrkNo() + "],[locNo="
+                        + task.getSourceLocNo() + "]");
+            }
+            for (TaskDetl wrkDetl : wrkDetls103) {
+                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                OrderDetlPakout orderDetlPakout = orderDetlPakoutService.
+                        selectOne(new EntityWrapper<OrderDetlPakout>()
+                                .eq("matnr", wrkDetl.getMatnr())
+                                .eq("supp_code", wrkDetl.getSuppCode())
+                                .eq("order_no", wrkDetl.getOrderNo()));
+                try {
+                    if (!Cools.isEmpty(orderDetlPakout)) {
+                        if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(),
+                                wrkDetl.getMatnr(),
+                                orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(),
+                                wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(),
+                                wrkDetl.getAnfme())) {
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + task.getWrkNo()
+                                    + "],[locNo=" + task.getSourceLocNo() + "]");
+                        }
+                    }
+                    //TODO 淇敼绔欑偣鐘舵�侀绾︾洰鏍囧簱浣�,浠ュ強绔欑偣搴撲綅淇℃伅
+                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+                            .eq("matnr", wrkDetl.getMatnr())
+                            .eq("supp_code", wrkDetl.getSuppCode())
+                            .eq("loc_no", task.getSourceLocNo()));
+                    if (Objects.isNull(locDetl) ) {
+                        throw new CoolException("搴撳瓨鏁版嵁閿欒锛岃鑱旂郴绠$悊鍛橈紒锛�");
+                    }
+                    Double sulp = Math.round((locDetl.getAnfme() - wrkDetl.getAnfme()) * 10000) / 10000.0;
+                    locDetl.setAnfme(sulp);
+                    if (!locDetlService.update(locDetl, new EntityWrapper<LocDetl>().eq("loc_no", locDetl.getLocNo())
+                            .eq("matnr", locDetl.getMatnr())
+                            .eq("supp_code", locDetl.getSuppCode()))) {
+                        return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + task.getWrkNo()
+                                + "],[locNo=" + task.getSourceLocNo() + "]");
+                    }
+                } catch (Exception ignore) {
+                    log.error(ignore.getMessage());
+                }
+            }
+//            int workNo = commonService.getWorkNo(0);
+            task.setIoType(task.getIoType() - 50);
+            task.setLocNo(task.getSourceLocNo());
+            task.setWrkSts(TaskStatusType.AGV_IN_START.type);
 
+            if (!taskService.update(task, new EntityWrapper<Task>().eq("wrk_no", task.getWrkNo()))) {
+                throw new CoolException("浠诲姟鎷h揣瀹屾垚鐘舵�佹洿鏂板け璐ワ紒锛�");
+            }
+
+            // 淇敼婧愬簱浣嶇姸鎬� R ===>> O
+            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
+                locMast.setLocSts(LocStsType.LOC_STS_TYPE_S.type);
+                locMast.setBarcode("");
+                locMast.setModiTime(now);
+                locMast.setIoTime(now);
+                if (!locCacheService.updateById(locMast)) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return FAIL.setMsg("鎷f枡鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + task.getWrkNo() + "],[locNo="
+                            + task.getSourceLocNo() + "]");
+                }
+            } else {
+                throw new CoolException("褰撳墠搴撲綅鐘舵��" + locMast.getLocSts() + ", 鏃犳硶鎵ц鍑哄簱鎿嶄綔锛侊紒");
+            }
         }
         return SUCCESS;
     }
@@ -884,11 +1027,13 @@
                     station.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
                 }
                 station.setBarcode("");
-                basStationService.updateById(station);
+                if (!basStationService.updateById(station)) {
+                    basStationDetlService.delete(new EntityWrapper<BasStationDetl>().eq("dev_no", station.getDevNo()));
+                }
             }
         }
 
-        if(wrkMast.getIoType().equals(1)){
+        if (wrkMast.getIoType().equals(1)) {
             if (Objects.isNull(locCache)) {
                 throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄笉瀛樺湪锛侊紒");
             }
@@ -924,32 +1069,40 @@
                     throw new CoolException("搴撲綅鏄庣粏淇濆瓨澶辫触锛侊紒");
                 }
 
-                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
-                OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(),
-                        pakin.getMatnr(), pakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
-                        pakin.getStandby2(), pakin.getStandby3(),
-                        pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
-                if (orderDetlPakin == null) {
-                    orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(), pakin.getMatnr(),
-                            pakin.getBatch(),
-                            pakin.getBrand(), pakin.getStandby1(), pakin.getStandby2(),
-                            pakin.getStandby3(),
-                            pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
-                }
-                try {
-                    if (!Cools.isEmpty(orderDetlPakin)) {
-                        if (!orderDetlPakinService.increaseQtyByOrderNo(pakin.getOrderNo(),
-                                pakin.getMatnr(),
-                                orderDetlPakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
-                                pakin.getStandby2(), pakin.getStandby3(),
-                                pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3(),
-                                pakin.getAnfme())) {
-                            throw new CoolException("AGV鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo()
-                                    + "],[locNo=" + wrkMast.getLocNo() + "]");
-                        }
-                    }
-                } catch (Exception ignore) {
-                }
+//                OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("order_no", pakin.getOrderNo()));
+//                if (Objects.isNull(orderPakin)) {
+//                    throw new CoolException("鏁版嵁閿欒锛岃鍗曚俊鎭笉瀛樺湪锛侊紒");
+//                }
+//
+//                if (!orderPakin.getDocType().equals(0)) {
+//                    // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+//                    OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(),
+//                            pakin.getMatnr(), pakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
+//                            pakin.getStandby2(), pakin.getStandby3(),
+//                            pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
+//                    if (orderDetlPakin == null) {
+//                        orderDetlPakin = orderDetlPakinService.selectItem(pakin.getOrderNo(), pakin.getMatnr(),
+//                                pakin.getBatch(),
+//                                pakin.getBrand(), pakin.getStandby1(), pakin.getStandby2(),
+//                                pakin.getStandby3(),
+//                                pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3());
+//                    }
+//                    try {
+//                        if (!Cools.isEmpty(orderDetlPakin)) {
+//                            if (!orderDetlPakinService.increaseQtyByOrderNo(pakin.getOrderNo(),
+//                                    pakin.getMatnr(),
+//                                    orderDetlPakin.getBatch(), pakin.getBrand(), pakin.getStandby1(),
+//                                    pakin.getStandby2(), pakin.getStandby3(),
+//                                    pakin.getBoxType1(), pakin.getBoxType2(), pakin.getBoxType3(),
+//                                    pakin.getAnfme())) {
+//                                throw new CoolException("AGV鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo()
+//                                        + "],[locNo=" + wrkMast.getLocNo() + "]");
+//                            }
+//                        }
+//                    } catch (Exception ignore) {
+//
+//                    }
+//                }
             });
 
             locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
@@ -968,7 +1121,7 @@
 
             List<WaitPakin> apallets = waitPakinService
                     .selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
-            for (WaitPakin pakin : apallets){
+            for (WaitPakin pakin : apallets) {
                 WaitPakinLog waitPakinLog = new WaitPakinLog();
                 BeanUtils.copyProperties(pakin, waitPakinLog);
                 waitPakinLogService.insert(waitPakinLog);
@@ -977,10 +1130,10 @@
 
             Set<Long> list = apallets.stream().map(WaitPakin::getOrderId).collect(Collectors.toSet());
             List<OrderPakin> pakins = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("id", list));
-            if (Objects.isNull(pakins) || pakins.isEmpty()) {
-//            throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
-            }
-        }else if(wrkMast.getIoType().equals(53)){
+//            if (Objects.isNull(pakins) || pakins.isEmpty()) {
+////            throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+//            }
+        } else if (wrkMast.getIoType().equals(53)) {
             // 鏍规嵁宸ヤ綔鍙凤紝鏌ヨ宸ヤ綔鏄庣粏妗�
             List<TaskDetl> wrkDetls53 = taskDetlService
                     .selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", wrkMast.getWrkNo()));

--
Gitblit v1.9.1