From 510e90328547a8a0d03fa508a46070d1d8c780c2 Mon Sep 17 00:00:00 2001
From: zyh <zyh@123>
Date: 星期四, 02 四月 2026 10:57:32 +0800
Subject: [PATCH] 完善出库时上传托盘码的逻辑以及用过的出库单重置

---
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |  171 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 154 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 d715373..fab9bcb 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -3,15 +3,18 @@
 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.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.utils.OrderInAndOutUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,6 +60,11 @@
     private TaskDetlService taskDetlService;
     @Autowired
     private BasStationServiceImpl basStationService;
+
+    @Autowired
+    private OrderPakoutService orderPakoutService;
+    @Autowired
+    private CanFinMapper canFinMapper;
     @Value("${mes.url}")
     private String url;
 
@@ -93,6 +101,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();
@@ -177,6 +186,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();
@@ -244,9 +254,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();
@@ -285,6 +295,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();
@@ -354,6 +365,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();
@@ -391,6 +403,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();
@@ -413,8 +426,10 @@
                         }
                     }
                     // 淇敼婧愬簱浣嶇姸鎬� ==> O
+                    String picUrl = "";
                     LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
                     if (null != sourceLoc) {
+                        picUrl = sourceLoc.getPic();
                         sourceLoc.setBarcode("");
                         sourceLoc.setLocSts("O");
                         sourceLoc.setModiTime(now);
@@ -430,6 +445,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();
@@ -447,13 +463,49 @@
                 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());
         }
+        if (wrkMast.getStaNo().equals("307")){
+            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;
     }
 
@@ -584,12 +636,84 @@
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                 return FAIL.setMsg("鏇存柊鍑哄簱瀹屾垚鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
             }
+            // 妫�鏌ラ厤鐩樺崟鏄惁宸插畬鎴�
+            List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+            for (WrkDetl wrkDetl : wrkDetls) {
+                if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
+                    OrderInAndOutUtil.checkComplete(Boolean.FALSE, wrkDetl.getOrderNo());
+                    break;
+                }
+            }
         } catch (Exception e) {
             log.error("fail", e);
             e.printStackTrace();
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
             return FAIL.setMsg(e.getMessage());
         }
+
+        if (wrkMast.getStaNo().equals("307")){
+            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;
     }
 
@@ -604,32 +728,45 @@
         //鏌ヨ鏄惁鏈夊叧鑱旂殑WrkMast浠诲姟
         WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", task.getWrkNo()));
         if (wrkMast != null) {
-            if (wrkMast.getIoType()==110){
+            if (wrkMast.getIoType()==110&& wrkMast.getWrkSts()>12){
                 wrkMast.setWrkSts(32L);//32.绛夊緟缁勬墭
-            }else if (wrkMast.getIoType()==101){
+            }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());
-            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 if(task.getTaskType().equals("ZX-AGV-08-1")||task.getTaskType().equals("ZX-AGV-08-2")){
+            if(!task.getStaNo().equals("307")){
+                HashMap<String,Object> map = new HashMap<>();
+                map.put("taskno", task.getTaskNo());
+                map.put("StationId", task.getSourceStaNo());
+                String mesUrl = url+"AGVArrivalCompletedFit";
+                String response = RcsServiceImpl.sendPost(mesUrl, JSONObject.toJSONString(map));
+                log.info("AGV浠诲姟瀹屾垚杞彂MES");
+                if (!StringUtils.isEmpty(response) && response.contains("Success")){
+                    MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+                    if("1".equals(mesReturn.getSuccess())) {
+                        log.info("AGV浠诲姟瀹屾垚杞彂MES鎴愬姛");
+                        task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
+                        task.setModiTime(new Date());
+                        taskService.updateById(task);
+                    }else {
+                        log.error("AGV浠诲姟瀹屾垚杞彂MES澶辫触");
+                        return new ReturnT<>(500, mesReturn.getMessage());
+                    }
                 }
+            }else {
+                task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
+                task.setModiTime(new Date());
+                taskService.updateById(task);
             }
         }else {
             task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305

--
Gitblit v1.9.1