From 6577403b7d7aa71c55a8df80721ddfd2a82a6015 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期六, 06 十二月 2025 15:08:25 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java |  101 ++++++++++++++++++++++++++++----------------------
 1 files changed, 57 insertions(+), 44 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..0c2d420 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;
@@ -29,6 +31,8 @@
     private LocMastService locMastService;
     @Autowired
     private LocDetlService locDetlService;
+    @Autowired
+    private OpenService openService;
 
 
     public ReturnT<String> start(BasAgvMast basAgvMast) {
@@ -52,6 +56,7 @@
                     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());
@@ -105,11 +110,26 @@
                     basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                     basAgvMast.setStatus(3);
                     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,59 +143,50 @@
                         }
                     } 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)) {
+                                }
+                            }
                         }
                     }
 
@@ -183,10 +194,12 @@
                     basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                     basAgvMast.setStatus(3);
                     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