From 701542ac0a90cf0e3a0a81ec2bb8066b5de68e75 Mon Sep 17 00:00:00 2001
From: zyh <zyh@123>
Date: 星期六, 28 三月 2026 11:21:17 +0800
Subject: [PATCH] 更新为正式部署许可证

---
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |  310 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 282 insertions(+), 28 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 308d93b..554edd9 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -1,18 +1,23 @@
 package com.zy.asrs.task.handler;
 
+import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.mes.MesReturn;
 import com.zy.asrs.enums.LocStsType;
+import com.zy.asrs.mapper.CanFinMapper;
 import com.zy.asrs.service.*;
-import com.zy.asrs.service.impl.LocCacheServiceImpl;
-import com.zy.asrs.service.impl.OrderPakinServiceImpl;
+import com.zy.asrs.service.impl.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -50,6 +55,17 @@
     private OrderPakinService orderPakinService;
     @Autowired
     private TaskService taskService;
+    @Autowired
+    private TaskDetlService taskDetlService;
+    @Autowired
+    private BasStationServiceImpl basStationService;
+    @Autowired
+    private CanFinMapper canFinMapper;
+    @Autowired
+    private OrderPakoutService orderPakoutService;
+
+    @Value("${mes.url}")
+    private String url;
 
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
@@ -84,6 +100,7 @@
                         locMast.setLocSts("D");
                         locMast.setIoTime(now);
                         locMast.setModiTime(now);
+                        locMast.setPic(wrkMast.getPic());
                         if (!locMastService.updateById(locMast)) {
 //                            exceptionHandle("绌烘澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -125,6 +142,11 @@
                             locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
                             locDetl.setModiTime(now);
                             locDetl.setAppeTime(now);
+                            locDetl.setMatnr(wrkDetl.getMatnr());
+                            locDetl.setMaktx(wrkDetl.getMaktx());
+                            locDetl.setSpecs(wrkDetl.getSpecs());
+                            locDetl.setUnit(wrkDetl.getUnit());
+                            locDetl.setZpallet(wrkDetl.getZpallet());
                             if (!locDetlService.insert(locDetl)) {
 //                                exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -163,6 +185,7 @@
                         locMast.setBarcode(wrkMast.getBarcode());
                         locMast.setIoTime(now);
                         locMast.setModiTime(now);
+                        locMast.setPic(wrkMast.getPic());
                         if (!locMastService.updateById(locMast)) {
 //                            exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -180,7 +203,6 @@
                     }
                     // 閬嶅巻宸ヤ綔鏄庣粏锛屾洿鏂板簱瀛樻槑缁嗗拰鍏ュ簱閫氱煡妗�
                     for (WrkDetl wrkDetl : wrkDetls8) {
-
                         LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand()
                                 , wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                         if (null != locDetl) {
@@ -197,6 +219,11 @@
                             locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
                             locDetl.setModiTime(now);
                             locDetl.setAppeTime(now);
+                            locDetl.setMatnr(wrkDetl.getMatnr());
+                            locDetl.setMaktx(wrkDetl.getMaktx());
+                            locDetl.setSpecs(wrkDetl.getSpecs());
+                            locDetl.setUnit(wrkDetl.getUnit());
+                            locDetl.setZpallet(wrkDetl.getZpallet());
                             if (!locDetlService.insert(locDetl)) {
                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                 return FAIL.setMsg("鎷f枡閫斾腑骞舵澘 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
@@ -226,9 +253,9 @@
                     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(), wrkDetl.getBoxType3());
+                                , null, wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                         if (null != locDetl) {
-                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3()
+                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),null, wrkDetl.getStandby2(), wrkDetl.getStandby3()
                                     , wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3())) {
 //                                exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -239,17 +266,17 @@
                         // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
                         OrderDetlPakin orderDetlPakin = orderDetlPakinService.selectItem
                                 (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(),
-                                        wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                        null, wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                         wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                         if (orderDetlPakin == null) {
                             orderDetlPakin = orderDetlPakinService.selectItem
-                                    (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                    (wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), null, wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                             wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3());
                         }
                         try {
                             if (!Cools.isEmpty(orderDetlPakin)) {
                                 if (!orderDetlPakinService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
-                                        orderDetlPakin.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),
+                                        orderDetlPakin.getBatch(), wrkDetl.getBrand(), null, wrkDetl.getStandby2(), wrkDetl.getStandby3(),
                                         wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) {
 //                                    exceptionHandle("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
 //                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
@@ -267,6 +294,7 @@
                         locMast.setBarcode(wrkMast.getBarcode());
                         locMast.setIoTime(now);
                         locMast.setModiTime(now);
+                        locMast.setPic(wrkMast.getPic());
                         if (!locMastService.updateById(locMast)) {
 //                            exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -303,6 +331,11 @@
                             locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
                             locDetl.setModiTime(now);
                             locDetl.setAppeTime(now);
+                            locDetl.setMatnr(wrkDetl.getMatnr());
+                            locDetl.setMaktx(wrkDetl.getMaktx());
+                            locDetl.setSpecs(wrkDetl.getSpecs());
+                            locDetl.setUnit(wrkDetl.getUnit());
+                            locDetl.setZpallet(wrkDetl.getZpallet());
                             if (!locDetlService.insert(locDetl)) {
                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                 return FAIL.setMsg("骞舵澘鍏ュ簱 ===>> 鏂板搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
@@ -331,6 +364,7 @@
                         locMast.setBarcode(wrkMast.getBarcode());
                         locMast.setIoTime(now);
                         locMast.setModiTime(now);
+                        locMast.setPic(wrkMast.getPic());
                         if (!locMastService.updateById(locMast)) {
 //                            exceptionHandle("骞舵澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -368,6 +402,7 @@
                         locMast.setBarcode(wrkMast.getBarcode());
                         locMast.setIoTime(now);
                         locMast.setModiTime(now);
+                        locMast.setPic(wrkMast.getPic());
                         if (!locMastService.updateById(locMast)) {
 //                            exceptionHandle("鐩樼偣鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -390,8 +425,10 @@
                         }
                     }
                     // 淇敼婧愬簱浣嶇姸鎬� ==> O
+                    String picUrl = "";
                     LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
                     if (null != sourceLoc) {
+                        picUrl = sourceLoc.getPic();
                         sourceLoc.setBarcode("");
                         sourceLoc.setLocSts("O");
                         sourceLoc.setModiTime(now);
@@ -407,6 +444,7 @@
                     locMast.setBarcode(wrkMast.getBarcode());
                     locMast.setIoTime(now);
                     locMast.setModiTime(now);
+                    locMast.setPic(picUrl);
                     if (!locMastService.updateById(locMast)) {
 //                        exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -424,11 +462,51 @@
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return FAIL.setMsg("鏇存柊鍏ュ簱瀹屾垚鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
             }
+            
+            // 灏唚aitPakin琛ㄤ腑鐨勬暟鎹爣璁颁负宸插鐞�
+            if (wrkMast.getIoType() == 1) { // 鍏ㄦ澘鍏ュ簱
+                Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode());
+                WaitPakin setParam = new WaitPakin();
+                setParam.setStatus("N");
+                setParam.setModiTime(new Date());
+                waitPakinService.update(setParam, wrapper);
+                log.info("鏇存柊搴撳瓨鎴愬姛锛佹墭鐩樼爜锛歿}", wrkMast.getBarcode());
+            }
+
+
+
         } catch (Exception e) {
             log.error("fail", e);
             e.printStackTrace();
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
             return FAIL.setMsg(e.getMessage());
+        }
+
+        try{
+            CanFin canFin = new CanFin();
+            List<CanFin> canFinList = canFinMapper.selectList(
+                    new EntityWrapper<CanFin>()
+                            .orderBy("apply_time", true)
+            );
+            if (canFinList != null){
+                CanFin firstCanFin = canFinList.get(0);
+                if (firstCanFin.getAgvType().equals("agv-in")){
+//                    if (firstCanFin.getAgvType().equals("agv-in-out")){
+                    canFinMapper.deleteById(firstCanFin.getId());
+
+                    if (canFinList.size() > 1){
+                        CanFin firstCanFin1 = canFinList.get(1);
+                        firstCanFin1.setTaskStatus("canout");
+                        log.info("can_fin琛ㄥ凡鏇存柊锛屽叆搴撳崟鐘舵�亄}", firstCanFin1.getOutType());
+                        canFinMapper.updateById(firstCanFin1);
+                    }
+                }
+//                    else if(firstCanFin.getAgvType().equals("agv-in")){
+//                        canFinMapper.deleteById(firstCanFin.getId());
+//                    }
+            }
+        } catch (Exception e) {
+            log.error("鏈鍏ュ簱娌℃湁浠诲姟鍗�");
         }
 
         return SUCCESS;
@@ -471,18 +549,16 @@
                                 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())) {
-//                                    exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
-//                                            wrkMast.getWrkNo(), wrkMast.getLocNo());
                                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                     return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                                 }
                             }
                         } catch (Exception ignore) {
+
                         }
                     }
                     // 鍒犻櫎宸ヤ綔妗f簮搴撲綅鐨勫簱瀛樻槑缁�
                     if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) {
-//                        exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 鍒犻櫎搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                         return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鍒犻櫎搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                     }
@@ -493,7 +569,6 @@
                         locMast.setModiTime(now);
                         locMast.setIoTime(now);
                         if (!locMastService.updateById(locMast)) {
-//                            exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
                             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                             return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
                         }
@@ -551,8 +626,13 @@
                 default:
                     break;
             }
-            // 淇敼宸ヤ綔涓绘。鐘舵��
-            wrkMast.setWrkSts(15L);
+            if(!Cools.isEmpty(wrkMast.getMemo())){
+                // 淇敼宸ヤ綔涓绘。鐘舵��
+                wrkMast.setWrkSts(30L);//30.绛夊緟鍒涘缓AGV鎼繍浠诲姟
+            }else {
+                // 淇敼宸ヤ綔涓绘。鐘舵��
+                wrkMast.setWrkSts(15L);
+            }
             wrkMast.setModiTime(now);
             if (!wrkMastService.updateById(wrkMast)) {
 //                exceptionHandle("鏇存柊鍑哄簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo());
@@ -565,6 +645,69 @@
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
             return FAIL.setMsg(e.getMessage());
         }
+
+
+        try{
+            List<CanFin> firstCanFinList = canFinMapper.selectList(
+                    new EntityWrapper<CanFin>()
+                            .orderBy("apply_time", true)
+            );
+            CanFin firstCanfin = firstCanFinList.get(0);
+            if (firstCanfin.getOutNo() != null && firstCanfin.getAgvType().equals("agv-out")){
+                log.info("can_fin琛ㄥ凡鏇存柊锛屽嚭搴撳崟{}宸插垹闄�",firstCanfin.getOutNo());
+                canFinMapper.deleteById(firstCanfin.getId());
+            }
+            if (firstCanfin.getOutNo() == null && firstCanfin.getAgvType().equals("agv-out")){
+                log.info("can_fin琛ㄥ凡鏇存柊锛屽嚭搴撲换鍔″凡鍒犻櫎锛屽綋鍓嶅嚭搴撴棤浠诲姟鍗�");
+                canFinMapper.deleteById(firstCanfin.getId());
+            }
+            if (firstCanFinList.size() > 1){
+                CanFin secondCanFin = firstCanFinList.get(1);
+                secondCanFin.setTaskStatus("canout");
+                canFinMapper.updateById(secondCanFin);
+            }
+//                else {
+//                OrderPakout isOut = orderPakoutService.selectOne(
+//                                        new EntityWrapper<OrderPakout>()
+//                                                .eq("settle", 2L)
+//                                                .eq("doc_type", 12L));
+//                String outOrderNo = isOut.getOrderNo();
+//                    List<CanFin> canFinList = canFinMapper.selectList(
+//                            new EntityWrapper<CanFin>()
+//                                    .eq("agv_type", "agv-in-out")
+//                                    .orderBy("apply_time", true)
+//                    );
+//                    if (canFinList != null){
+//                        CanFin firstCanFin = canFinList.get(0);
+//
+//                        OrderPakout isOut = orderPakoutService.selectOne(
+//                                new EntityWrapper<OrderPakout>()
+//                                        .eq("orderNo", firstCanFin.getOutNo()));
+//
+//                        String outOrderNo = isOut.getOrderNo();
+//                        if (outOrderNo.equals(firstCanFin.getOutNo())){
+//                            log.info("can_fin琛ㄥ凡鏇存柊锛岃浆搴忓嚭搴撳崟{}宸插垹闄�", firstCanFin.getOutNo());
+//                            canFinMapper.deleteById(firstCanFin.getId());
+//                        }else {
+//                            log.info("鏈壘鍒拌鍑哄簱鍗曪紝can_fin琛ㄦ湭鏇存柊");
+//                        }
+//                        List<CanFin> canFinList1 = canFinMapper.selectList(
+//                                new EntityWrapper<CanFin>()
+//                                        .eq("agv_type", "agv-in-out")
+//                                        .orderBy("apply_time", true));
+//                        if (!canFinList1.isEmpty()){
+//                            CanFin firstCanFin2 = canFinList.get(0);
+//                            firstCanFin2.setTaskType("Y");
+//                            log.info("can_fin琛ㄥ凡鏇存柊锛岃浆搴忓嚭搴撳崟鍙互杞簭", firstCanFin2.getOutNo());
+//                            canFinMapper.updateById(firstCanFin2);
+//                        }
+//                    }
+//                }
+        } catch (Exception e) {
+            log.error("鏈鍑哄簱娌℃湁浠诲姟鍗�");
+            return null;
+        }
+
         return SUCCESS;
     }
 
@@ -575,13 +718,135 @@
      * @version 1.0
      */
     @Transactional(rollbackFor = Exception.class)
-    public ReturnT<String> AgvStart(Task wrkMast) {
+    public ReturnT<String> AgvStart(Task task) {
+        //鏌ヨ鏄惁鏈夊叧鑱旂殑WrkMast浠诲姟
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", task.getWrkNo()));
+        if (wrkMast != null) {
+            if (wrkMast.getIoType()==110&& wrkMast.getWrkSts()>12){
+                wrkMast.setWrkSts(15L);//32.绛夊緟缁勬墭
+            }else if (wrkMast.getIoType()==101 && wrkMast.getWrkSts()>12){
+                wrkMast.setWrkSts(15L);//15.鍑哄簱鏇存柊瀹屾垚
+            }else if (wrkMast.getIoType()==103 && wrkMast.getWrkSts()>12){
+                wrkMast.setWrkSts(20L);//20.绛夊緟鍥炲簱
+            }
+            wrkMast.setModiTime(new Date());
+            wrkMast.setOveMk("Y");
+            wrkMastService.updateById(wrkMast);
+            task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
+            task.setModiTime(new Date());
+            taskService.updateById(task);
+
+            //瀵硅浆搴忔惉杩愬畬鎴愮殑浠诲姟缁撴灉鍙嶉缁檓es
+        }else if(task.getTaskType().equals("ZX-AGV")){
+            HashMap<String,Object> map = new HashMap<>();
+            map.put("taskno", task.getTaskNo());
+            map.put("agvFactory", "2");
+            String mesUrl = url+"AGVArrivalCompletedFit";
+            String response = RcsServiceImpl.sendPost(mesUrl, JSONObject.toJSONString(map));
+            if (!StringUtils.isEmpty(response) && response.contains("Success")){
+                MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+                if("1".equals(mesReturn.getSuccess())) {
+                    task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
+                    task.setModiTime(new Date());
+                    taskService.updateById(task);
+                }else {
+                    return new ReturnT<>(500, mesReturn.getMessage());
+                }
+            }
+        }else {
+            task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
+            task.setModiTime(new Date());
+            taskService.updateById(task);
+        }
+        return SUCCESS;
+    }
+
+
+    /**
+     * @author Ryan
+     * @date 2025/9/25
+     * @description: AGV鍑哄簱浠诲姟
+     * @version 1.0
+     */
+    public ReturnT<String> agvDoOut(Task task) {
+        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("鏁版嵁閿欒锛氬簱浣嶄俊鎭笉鑳戒负绌猴紒锛�");
+            }
+            List<TaskDetl> wrkDetls101 = taskDetlService.selectList(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
+            if (wrkDetls101.isEmpty()) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 宸ヤ綔鏄庣粏妗d负绌�; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
+            }
+            for (TaskDetl wrkDetl : wrkDetls101) {
+                // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+                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=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
+                        }
+                    }
+                } catch (Exception ignore) {
+                }
+            }
+            // 鍒犻櫎宸ヤ綔妗f簮搴撲綅鐨勫簱瀛樻槑缁�
+            if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", task.getSourceLocNo()))) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鍒犻櫎搴撳瓨鏄庣粏澶辫触; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
+            }
+            // 淇敼婧愬簱浣嶇姸鎬� R ===>> O
+            if (locMast.getLocSts().equals(LocStsType.LOC_STS_TYPE_R.type)) {
+                locMast.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+                locMast.setBarcode("");
+                locMast.setModiTime(now);
+                locMast.setIoTime(now);
+                if (!locCacheService.updateById(locMast)) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + task.getWrkNo() + "],[locNo=" + task.getSourceLocNo() + "]");
+                }
+            } else {
+                throw new CoolException("褰撳墠搴撲綅鐘舵��" + locMast.getLocSts() + ", 鏃犳硶鎵ц鍑哄簱鎿嶄綔锛侊紒");
+            }
+
+            BasStation devNo = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo()));
+            if (Objects.isNull(devNo)) {
+                throw new CoolException("绔欑偣锛�" + task.getSourceStaNo() + ", 涓嶅瓨鍦紒锛�");
+            }
+            devNo.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
+            devNo.setModiTime(new Date());
+            if (!basStationService.updateById(devNo)) {
+                throw new CoolException("绔欑偣淇℃伅淇敼澶辫触锛侊紒");
+            }
+            task.setWrkSts(15L);
+            if (!taskService.updateById(task)) {
+                throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+            }
+        } else {
+
+        }
+        return SUCCESS;
+    }
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public ReturnT<String> agvDoIn(Task wrkMast) {
         LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", wrkMast.getLocNo()));
         if (Objects.isNull(locCache)) {
             throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄笉瀛樺湪锛侊紒");
         }
         if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_S.type)) {
-            throw new CoolException("褰撳墠搴撲綅鐘舵�佷负锛�" +  LocStsType.LOC_STS_TYPE_S.type +  "." +  LocStsType.LOC_STS_TYPE_S.desc  + "锛屼笉鏄嚭搴撻绾︾姸鎬�");
+            throw new CoolException("褰撳墠搴撲綅鐘舵�佷负锛�" + LocStsType.LOC_STS_TYPE_S.type + "." + LocStsType.LOC_STS_TYPE_S.desc + "锛屼笉鏄嚭搴撻绾︾姸鎬�");
         }
         List<WaitPakin> apallet = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
         if (Objects.isNull(apallet)) {
@@ -609,7 +874,7 @@
 
         locCache.setLocSts(LocStsType.LOC_STS_TYPE_F.type);
         locCache.setModiTime(new Date());
-        locCache.setBarcode("");
+        locCache.setBarcode(wrkMast.getBarcode());
         locCache.setModiTime(new Date());
         locCache.setIoTime(new Date());
         if (!locCacheService.updateById(locCache)) {
@@ -626,17 +891,6 @@
         if (Objects.isNull(pakins) || pakins.isEmpty()) {
             throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
         }
-
-//        pakins.forEach(orderPakin -> {
-//            orderPakin.setSettle(4L);
-//            if (!orderPakinService.updateById(orderPakin)) {
-//                throw new CoolException("鍗曟嵁淇敼澶辫触锛侊紒");
-//            }
-//            List<OrderDetlPakin> detlPakins = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", orderPakin.getId()));
-//            if (Objects.isNull(detlPakins) || detlPakins.isEmpty()) {
-//                throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
-//            }
-//        });
 
         return SUCCESS;
     }

--
Gitblit v1.9.1