From 99b819fb7354c86ef4111a1b3465f63d6d263fd7 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期一, 14 七月 2025 16:58:41 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java |  100 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 81 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index 4e595cd..614b63a 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -227,7 +227,9 @@
             updateAgvLocMast(agvLocMastService.selectById(sourceLocNo), locSts);
             //鏇存柊鐩爣绔欑偣鐘舵��
             //locSts = ioType == 101 ? "S" : "Q";
-            updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo), "S");
+            AgvBasDevp agvBasDevp = agvBasDevpService.selectById(targetLocNo);
+            agvBasDevp.setBarcode("");
+            updateAgvBasDevp(agvBasDevp, "S");
 
         });
     }
@@ -493,6 +495,10 @@
         if (Cools.isEmpty(agvBasDevp)) {
             throw new CoolException("鏆傛棤" + station + "绔欑偣");
         }
+        AgvBasDevp agvBasDevp2 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", containerCode).ne("dev_no", agvBasDevp.getDevNo()));
+        if (!Cools.isEmpty(agvBasDevp2)) {
+            throw new CoolException(station + "绔欑偣缁戝畾璇ヨ揣鏋讹紝鏃犳硶鍏ュ簱");
+        }
         int br = 0;
         if (containerType == 21 && agvBasDevp.getFloor() == 2) {
             containerType = 20;
@@ -643,6 +649,15 @@
         if (Cools.isEmpty(agvBasDevp)) {
             throw new CoolException("鏆傛棤" + station + "绔欑偣");
         }
+
+        AgvBasDevp agvBasDevp2 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", containerCode).ne("dev_no", agvBasDevp.getDevNo()));
+        if (!Cools.isEmpty(agvBasDevp2)) {
+            throw new CoolException(station + "绔欑偣缁戝畾璇ヨ揣鏋讹紝鏃犳硶鍏ュ簱");
+        }
+        if (Cools.isEmpty(agvBasDevp)) {
+            throw new CoolException("鏆傛棤" + station + "绔欑偣");
+        }
+
         int br = 0;
         if (containerType == 21 && agvBasDevp.getFloor() == 2) {
             containerType = 20;
@@ -750,9 +765,9 @@
             String ctnNo = null;
             // 鎵撴爣璁帮紝鑻ュ簱浣嶄笉澶燂紝鍏ュ簱鍒板埆鐨勬ゼ灞傦紝閭d箞闇�瑕佽法灞傜Щ搴�
             if (!Cools.isEmpty(code)) {
-                if (agvLocMast.getLev1() == 1 && !code.equals(AsrsConstants.SANCHANG)) {
-                    ctnNo = "1";
-                } else if (agvLocMast.getLev1() == 2 && !code.equals(AsrsConstants.ERCHANG)) {
+                if (agvLocMast.getLev1() == 1 && code.equals(AsrsConstants.ERCHANG)) {
+                    ctnNo = "2";
+                } else if (agvLocMast.getLev1() == 2 && code.equals(AsrsConstants.SANCHANG)) {
                     ctnNo = "1";
                 }
             }
@@ -798,6 +813,10 @@
         AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station);
         if (Cools.isEmpty(agvBasDevp)) {
             throw new CoolException("鏆傛棤" + station + "绔欑偣");
+        }
+        AgvBasDevp agvBasDevp2 = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("barcode", containerCode).ne("dev_no", agvBasDevp.getDevNo()));
+        if (!Cools.isEmpty(agvBasDevp2)) {
+            throw new CoolException(station + "绔欑偣缁戝畾璇ヨ揣鏋讹紝鏃犳硶鍏ュ簱");
         }
         int br = 0;
         if (containerType == 21 && agvBasDevp.getFloor() == 2) {
@@ -903,7 +922,7 @@
                     }
                 }
             }
-            if (agvLocMast==null){
+            if (agvLocMast == null) {
                 throw new CoolException("娌℃湁璇ョ被鍨嬬殑绌哄簱浣嶄簡");
             }
 
@@ -959,21 +978,37 @@
         if (!Cools.isEmpty(agvWrkMast)) {
             throw new CoolException("鏈夎揣鏋跺湪寰�绔欑偣鎼繍" + agvBasDevp.getDevNo() + ",鏃犳硶杩涜绌烘澘鍑哄簱");
         }
+        AgvLocMast agvLocMast = null;
+        if (station.startsWith("XI") && station.endsWith("F4") && containerType == 30) {
+            agvLocMast = agvLocMastService.select30EmptyZpallet();
+        } else {
+            //瀵绘壘鐩稿簲绫诲瀷鐨勭┖璐ф灦
+            Integer floor = agvBasDevp.getFloor();
+            if (floor == 4) {
+                floor = 1;
+            }
+            agvLocMast = agvLocMastService.selectEmptyZpallet(containerType, floor);
+            if (containerType == 0) {
+                //绌烘澘鑷姩鍑哄簱锛屾牴鎹珯鐐圭被鍨嬮�夋嫨
+                agvLocMastService.selectEmptyZpalletByLocType1(agvBasDevp.getLocType1());
 
-        //瀵绘壘鐩稿簲绫诲瀷鐨勭┖璐ф灦
-        Integer floor = agvBasDevp.getFloor();
-        if (floor == 4) {
-            floor = 1;
+            }
         }
-        AgvLocMast agvLocMast = agvLocMastService.selectEmptyZpallet(containerType, floor);
-        if (containerType == 0) {
-            //绌烘澘鑷姩鍑哄簱锛屾牴鎹珯鐐圭被鍨嬮�夋嫨
-            agvLocMastService.selectEmptyZpalletByLocType1(agvBasDevp.getLocType1());
 
-        }
 
         if (Cools.isEmpty(agvLocMast)) {
             throw new CoolException("鏆傛棤褰撳墠鍑哄簱绔欑偣绫诲瀷鐨勭┖璐ф灦锛�");
+        }
+        if (!Cools.isEmpty(agvBasDevp.getArea())) {
+            if (!Cools.isEmpty(agvLocMast.getBarcode())) {
+                if (!agvBasDevp.getArea().contains(agvLocMast.getBarcode().substring(0, 2))) {
+                    throw new CoolException("1褰撳墠鍑哄簱绔欑偣涓嶅厑璁稿彨璇ョ被鍨嬬殑璐ф灦锛�" + agvLocMast.getBarcode());
+                }
+            }else {
+                if (!agvBasDevp.getArea().contains(agvLocMast.getLocType1$().toString())) {
+                    throw new CoolException("2褰撳墠鍑哄簱绔欑偣涓嶅厑璁稿彨璇ョ被鍨嬬殑璐ф灦锛�" + agvLocMast.getBarcode());
+                }
+            }
         }
         //鐢熸垚宸ヤ綔妗�
         createWrkMast(110, 21L, agvLocMast.getLocNo(), agvBasDevp.getDevNo(), agvLocMast.getBarcode(), now, userId, containerType, agvLocMast.getPltType());
@@ -985,6 +1020,7 @@
         updateAgvBasDevp(agvBasDevp, "S", (short) containerType, agvLocMast.getBarcode());
 
     }
+
 
     @Transactional
     public void adjustLocDetl(LocDetlAdjustParam param, Long userId) {
@@ -1001,7 +1037,7 @@
         List<AgvLocDetl> locDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", param.getLocNo()));
 
         List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
-
+        String barcode = null;
         // 淇敼鏁伴噺
         Iterator<AgvLocDetl> iterator = locDetls.iterator();
         while (iterator.hasNext()) {
@@ -1088,6 +1124,7 @@
             locDetl.setThreeCode(adjust.getThreeCode());
             locDetl.setDeadTime(adjust.getDeadTime());
             locDetl.setSuppCode(adjust.getSuppCode());
+            barcode = adjust.getSuppCode();
             if (!agvLocDetlService.insert(locDetl)) {
                 throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
             }
@@ -1120,6 +1157,7 @@
         if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
             if (count > 0) {
                 locMast.setLocSts("F");
+                locMast.setBarcode(barcode);
             }
         }
         locMast.setModiUser(userId);
@@ -1232,6 +1270,9 @@
                 String devNo = wrkMast.getSourceLocNo();
                 //鐩爣搴撲綅
                 String locNo = wrkMast.getLocNo();
+                if (!Cools.isEmpty(locNo)) {
+                    agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo));
+                }
                 agvLocMastService.updateLocStsByLocNo(locNo, "O", "", null);
                 if (wrkMast.getIoType() == 58) {
                     agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo, "F", wrkMast.getBarcode(), wrkMast.getWhsType().shortValue());
@@ -1345,6 +1386,9 @@
                 if (wrkMast.getIoType() == 112) {
                     throw new CoolException("褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
                 }
+                if (wrkMast.getIoType() == 108 && wrkMast.getWrkSts() >= 204) {
+                    throw new CoolException("婧愬簱浣嶅凡缁忛噴鏀撅紝褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
+                }
                 // 婧愬簱浣�
                 String locNo = wrkMast.getSourceLocNo();
                 // 鐩爣搴撲綅
@@ -1374,6 +1418,14 @@
                         orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
                         if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", "DB" + agvLocDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) {
                             throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr());
+                        }
+                    } else {
+                        orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()).eq("source", 33).ge("qty", agvLocDetl.getAnfme()));
+                        if (orderDetl != null) {
+                            orderDetl.setQty(orderDetl.getQty() - agvLocDetl.getAnfme());
+                            if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", orderDetl.getOrderNo()).eq("matnr", agvLocDetl.getMatnr()).eq("three_code", agvLocDetl.getThreeCode()))) {
+                                //throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + agvLocDetl.getOrderNo() + agvLocDetl.getMatnr());
+                            }
                         }
                     }
 //                    FlowLog flowLog = new FlowLog();
@@ -1407,6 +1459,9 @@
 
                 // 鍥炴祦鍗曞彇娑�
             } else if (wrkMast.getIoType() == 114) {
+                if (wrkMast.getWrkSts() >= 204) {
+                    throw new CoolException("婧愬簱浣嶅凡缁忛噴鏀撅紝褰撳墠浣滀笟涓嶈兘鍙栨秷锛�");
+                }
                 //婧愬簱浣�
                 String locNo = wrkMast.getSourceLocNo();
                 // 鐩爣搴撲綅
@@ -1512,9 +1567,13 @@
                 throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
             }
 
-            if (type == 2) {
-                //璋冪敤agv鍙栨秷浠诲姟鎺ュ彛
-                agvWrkMastService.callCancelTask(wrkMast.getWrkNo());
+            if (type == 2 || type == 5) {
+                try {
+                    //璋冪敤agv鍙栨秷浠诲姟鎺ュ彛
+                    agvWrkMastService.callCancelTask(wrkMast.getWrkNo());
+                } catch (Exception e) {
+                    log.info("璋冪敤agv鍙栨秷浠诲姟鎺ュ彛澶辫触");
+                }
             }
         }
     }
@@ -1578,7 +1637,10 @@
         }
         OrderDetl orderDetl = orderDetlService.selectItem(orderNo, mat.getMatnr(), batch, csocode);
         if (orderDetl == null) {
-            throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+            orderDetl = orderDetlService.selectItem(orderNo, mat.getMatnr(), null, csocode);
+            if (orderDetl == null) {
+                throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+            }
         }
         AgvWrkDetl wrkDetl = new AgvWrkDetl();
         wrkDetl.sync(mat);

--
Gitblit v1.9.1