From 0f64ee96e72e34135201f28e033e1b5537031712 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期三, 10 十二月 2025 14:03:41 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java |  131 +++++++++++++++++++++++--------------------
 1 files changed, 70 insertions(+), 61 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java b/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
index ef0cf30..c2f21f6 100644
--- a/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
@@ -10,6 +10,8 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.transaction.support.TransactionSynchronizationAdapter;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -22,6 +24,8 @@
     @Autowired
     private BasAgvMastService basAgvMastService;
     @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
     private BasAgvLocDetlService basAgvLocDetlService;
     @Autowired
     private BasAgvWrkDetlService basAgvWrkDetlService;
@@ -29,15 +33,21 @@
     private LocMastService locMastService;
     @Autowired
     private LocDetlService locDetlService;
+    @Autowired
+    private OpenService openService;
 
 
-    public ReturnT<String> start(BasAgvMast basAgvMast) {
+    public ReturnT<String>                           start(BasAgvMast basAgvMast) {
         try {
             Date now = new Date();
             switch (basAgvMast.getIoType()){
                 case 0:
                     LocMast sourceLoc0 = locMastService.selectById(basAgvMast.getSourceLocNo());
                     locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc0.getLocNo()));
+                    if(basAgvMast.getFloorNo() == 4){
+                        basAgvMast.setBarcode(sourceLoc0.getBarcode());
+                        basAgvMastService.updateById(basAgvMast);
+                    }
                     sourceLoc0.setLocSts("O");
                     sourceLoc0.setBarcode("");
                     sourceLoc0.setModiTime(now);
@@ -47,25 +57,22 @@
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                         return FAIL.setMsg("鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getSourceLocNo() + "]");
                     }
-
                     basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                     basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                     basAgvMast.setStatus(3);
                     basAgvMastService.updateById(basAgvMast);
+                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                     break;
                 case 1:
                     LocMast sourceLoc1 = locMastService.selectById(basAgvMast.getSourceLocNo());
-
-
-
                     LocMast locMast1 = locMastService.selectById(basAgvMast.getLocNo());
                     List<LocDetl> locDetls1 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     if (!locDetls1.isEmpty()) {
                         locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     }
-
                     // 淇敼鐩爣搴撲綅鐘舵�� ==> .locSts
                     locMast1.setLocSts("F");
+                    locMast1.setBarcode(sourceLoc1.getBarcode());
                     locMast1.setIoTime(now);
                     locMast1.setModiTime(now);
                     if (!locMastService.updateById(locMast1)) {
@@ -73,21 +80,12 @@
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                         return FAIL.setMsg("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐�; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
                     }
-
-
                     try{
                         // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣�
                         locDetlService.updateLocNo(basAgvMast.getLocNo(), basAgvMast.getSourceLocNo());
-//                        if (!) {
-//                            exceptionHandle("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={0}],[鐩爣搴撲綅={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
-//                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//                            return FAIL.setMsg("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-//                        }
                     } catch (Exception e) {
-
+                        return FAIL.setMsg(e.getMessage());
                     }
-
-
                     if (null != sourceLoc1) {
                         sourceLoc1.setBarcode("");
                         sourceLoc1.setLocSts("O");
@@ -103,13 +101,28 @@
                     basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                     basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                     basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
-                    basAgvMast.setStatus(3);
+                    basAgvMast.setStatus(4);
                     basAgvMastService.updateById(basAgvMast);
+//                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                     break;
                 case 2:
                     List<LocDetl> locDetls2 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     if (!locDetls2.isEmpty()) {
                         locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
+                    }
+
+                    LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo());
+                    // 淇敼搴撲綅鐘舵�� S ====>> F
+                    if (locMast2.getLocSts().equals("S") ) {
+                        locMast2.setLocSts("F");
+                        locMast2.setIoTime(now);
+                        locMast2.setModiTime(now);
+                    } else if(basAgvMast.getTaskNo()>10000){
+                        locMast2.setLocSts("D");
+                        locMast2.setIoTime(now);
+                        locMast2.setModiTime(now);
+                    } else {
+                        return FAIL.setMsg("搴撲綅鐘舵�佸紓甯�");
                     }
                     List<LocDetl> locDetlList1 = new ArrayList<>();
                     List<LocDetl> locDetlList2 = new ArrayList<>();
@@ -123,70 +136,66 @@
                         }
                     } else if (!basAgvWrkDetlList.isEmpty()){
                         for (BasAgvWrkDetl wrkDetl : basAgvWrkDetlList){
+                            LocDetl locDetl = new LocDetl();
+                            locDetl.sync(wrkDetl);
+                            locDetl.setLocNo(basAgvMast.getLocNo()); // 搴撲綅鍙�
+                            locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+                            locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+                            locDetl.setModiTime(now);
+                            locDetl.setAppeTime(now);
+                            locDetl.setOrigin("鍦ㄥ簱");
+                            locDetlList2.add(locDetl);
 
-                            LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand()
-                                    ,wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3(),wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3());
+                        }
+                    } else {
+                        locMast2.setLocSts("D");
+                    }
+
+                    if (!locMastService.updateById(locMast2)) {
+                        return FAIL;
+                    }
+                    if (!locDetlList1.isEmpty()){
+                        for (LocDetl locDetlold : locDetlList1) {
+                            LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand()
+                                    ,locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3(),locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3());
                             if (null != locDetl) {
-                                if (!locDetlService.updateAnfme(wrkDetl.getAnfme(), basAgvMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getBrand(),wrkDetl.getStandby1(),wrkDetl.getStandby2(),wrkDetl.getStandby3()
-                                        ,wrkDetl.getBoxType1(),wrkDetl.getBoxType2(),wrkDetl.getBoxType3())) {
-//                                exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                    return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊搴撳瓨鏄庣粏澶辫触; [workNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
+                                if (!locDetlService.updateAnfme(locDetlold.getAnfme(), basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand(),locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3()
+                                        ,locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3())) {
                                 }
                             } else {
-                                locDetl = new LocDetl();
-                                locDetl.sync(wrkDetl);
-                                locDetl.setLocNo(basAgvMast.getLocNo()); // 搴撲綅鍙�
-                                locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
-                                locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
-                                locDetl.setModiTime(now);
-                                locDetl.setAppeTime(now);
-                                locDetl.setOrigin("鍦ㄥ簱");
-                                if (!locDetlService.insert(locDetl)) {
-//                                exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                    return FAIL.setMsg("鍏ュ簱 ===>> 娣诲姞搴撳瓨鏄庣粏澶辫触; [workNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
+                                if (!locDetlService.insert(locDetlold)) {
                                 }
                             }
-
-                        }
-                    }
-
-                    LocMast locMast2 = locMastService.selectById(basAgvMast.getLocNo());
-
-
-                    // 淇敼搴撲綅鐘舵�� S ====>> F
-                    if (locMast2.getLocSts().equals("S")) {
-                        locMast2.setLocSts("F");
-                        locMast2.setIoTime(now);
-                        locMast2.setModiTime(now);
-                        if (!locMastService.updateById(locMast2)) {
-//                            exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                            return FAIL.setMsg("鍏ㄥ叆搴� ===>> 淇敼搴撲綅鐘舵�佸け璐�; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
-                        }
-                    }
-
-
-                    if (!locDetlList1.isEmpty()){
-                        for (LocDetl locDetl : locDetlList1) {
-                            locDetlService.insert(locDetl);
                         }
                     }
                     if (!locDetlList2.isEmpty()){
-                        for (LocDetl locDetl : locDetlList2) {
-                            locDetlService.insert(locDetl);
+                        for (LocDetl locDetlold : locDetlList2) {
+                            LocDetl locDetl = locDetlService.selectItem(basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand()
+                                    ,locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3(),locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3());
+                            if (null != locDetl) {
+                                if (!locDetlService.updateAnfme(locDetlold.getAnfme(), basAgvMast.getLocNo(), locDetlold.getMatnr(), locDetlold.getBatch(),locDetlold.getBrand(),locDetlold.getStandby1(),locDetlold.getStandby2(),locDetlold.getStandby3()
+                                        ,locDetlold.getBoxType1(),locDetlold.getBoxType2(),locDetlold.getBoxType3())) {
+                                }
+                            } else {
+                                if (!locDetlService.insert(locDetlold)) {
+                                }
+                            }
                         }
                     }
 
                     basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                     basAgvMast.setStatus(3);
+                    if(basAgvMast.getFloorNo() == 2 || basAgvMast.getFloorNo() == 3){
+                        basAgvMast.setStatus(4);
+                    }
                     basAgvMastService.updateById(basAgvMast);
+                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                     break;
                 case 3:
                     basAgvMast.setStatus(3);
                     basAgvMastService.updateById(basAgvMast);
+                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                     break;
                 default:
                     return FAIL.setMsg("鏆備笉鏀寔璇ョ被鍨�");

--
Gitblit v1.9.1