From f8fa396c3b931bf20e342d866e5aa14076a8629a Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期四, 05 二月 2026 08:50:57 +0800
Subject: [PATCH] 增加校验

---
 src/main/webapp/static/js/task/task.js                        |    3 +
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |   63 ++++++++++++++++++++++++++-----
 2 files changed, 56 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index e9c6220..9492211 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -160,6 +160,9 @@
                 if (count == 0) {
                     throw new CoolException("鏉$爜鏈粍鎵橈細" + barcode);
                 }
+                
+                // 娉ㄦ剰锛氭墭鐩樼爜鏄惁鍦ㄥ簱鐨勬牎楠屽凡鍦ㄧ粺涓�鏍¢獙涓鐞�
+                
                 ioType = 1; // AGV瀹瑰櫒鍏ュ簱锛堝疄鎵樺叆搴擄級
 
                 // 濡傛灉搴撲綅瀛樺湪锛屾洿鏂扮姸鎬佷负鍏ュ簱棰勭害锛涗笉瀛樺湪鍒欒烦杩囷紝鐢卞畾鏃朵换鍔″鐞�
@@ -177,6 +180,14 @@
                 if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 107) {
                     throw new CoolException("鏉$爜涓嶉渶瑕佸洖搴擄細" + barcode);
                 }
+                
+                // 鏍¢獙鎷i�夊洖搴撴墭鐩橈細褰撳墠宸ヤ綔妗e繀椤诲凡瀹屾垚锛堢姸鎬�14鎴�15锛�
+                Long wrkSts = wrkMast.getWrkSts();
+                if (wrkSts == null || (wrkSts != 14L && wrkSts != 15L)) {
+                    log.warn("鎷i�夊洖搴撴墭鐩樻椂锛屽綋鍓嶅伐浣滄。鏈畬鎴愶紝鐘舵�侊細{}锛屼笉鍏佽鍛煎彨AGV锛歿}", wrkSts, barcode);
+                    throw new CoolException("鏉$爜鍦ㄥ簱锛岃鏇存崲鏉$爜" + barcode);
+                }
+                
                 ioType = wrkMast.getIoType() - 50; // 103->53(鎷f枡鍏ュ簱), 107->57(鐩樼偣鍏ュ簱)
 
                 // 濡傛灉搴撲綅瀛樺湪锛屾洿鏂扮姸鎬佷负鍏ュ簱棰勭害锛涗笉瀛樺湪鍒欒烦杩囷紝鐢卞畾鏃朵换鍔″鐞�
@@ -196,20 +207,20 @@
                     throw new CoolException("鏉$爜缁勬墭妗e凡瀛樺湪锛�" + barcode);
                 }
                 
-                // 妫�鏌ユ槸鍚︽湁浠诲姟
+                // 妫�鏌ユ槸鍚︽湁浠讳綍宸ヤ綔妗o紙绌烘墭鐩樹笉搴旇鏈変换浣曞伐浣滄。锛屽寘鎷凡瀹屾垚鐨勫伐浣滄。锛�
                 int wrkMastCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", barcode));
                 if (wrkMastCount != 0) {
                     log.warn("鏉$爜浠诲姟妗e凡瀛樺湪锛屼笉鏄┖鎵樼洏锛歿}", barcode);
                     throw new CoolException("鏉$爜浠诲姟妗e凡瀛樺湪锛�" + barcode);
                 }
                 
-                // 妫�鏌ユ槸鍚︽湁搴撳瓨
-                int locDetlCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", barcode));
-                if (locDetlCount != 0) {
-                    log.warn("鏉$爜搴撳瓨宸插瓨鍦紝涓嶆槸绌烘墭鐩橈細{}", barcode);
-                    throw new CoolException("鏉$爜搴撳瓨宸插瓨鍦細" + barcode);
+                // 妫�鏌ュ簱浣嶄笂鏄惁鏈夎鏉$爜
+                if (locCache != null && !Cools.isEmpty(locCache.getBarcode()) && locCache.getBarcode().equals(barcode)) {
+                    log.warn("绌烘墭鐩樺叆搴撴椂锛屽簱浣嶄笂宸叉湁璇ユ潯鐮侊紝涓嶅厑璁稿懠鍙獳GV锛氬簱浣�={}锛屾潯鐮�={}", sourceSite, barcode);
+                    throw new CoolException("鏉$爜鍦ㄥ簱锛岃鏇存崲鏉$爜" + barcode);
                 }
                 
+
                 // 閫氳繃鎵�鏈夋鏌ワ紝纭涓虹┖鎵樼洏锛岃缃负绌烘墭鍏ュ簱
                 ioType = 10;
                 log.info("纭涓虹┖鎵樼洏锛岃缃负绌烘墭鍏ュ簱锛屾潯鐮侊細{}锛宨oType锛歿}", barcode, ioType);
@@ -217,10 +228,42 @@
             default:
                 throw new CoolException("鍏ュ簱绫诲瀷閿欒,type锛�" + type);
         }
-        // 鏉$爜瀛樺湪agv浠诲姟
-        int count = taskService.selectCount(new EntityWrapper<Task>().eq("barcode", barcode).eq("is_deleted", 0));
-        if (count > 0) {
-            throw new CoolException(barcode+ "锛氭潯鐮佸瓨鍦╝gv鎼繍浠诲姟!");
+        
+        // 缁熶竴鏍¢獙锛氬湪鎵�鏈堿GV鍛煎彨鍦烘櫙涓兘闇�瑕佹鏌ヤ互涓嬫潯浠讹紝鏈変换浣曚竴涓弧瓒冲垯涓嶅厑璁稿懠鍙獳GV
+        
+        // 1. 鏍¢獙搴撲綅涓婄殑鏉$爜鏄惁鍦ㄥ簱锛氭鏌ocCache琛ㄤ笂鏄惁鏈夎鏉$爜锛屼笖璇ユ潯鐮佸湪LocDetl搴撳瓨涓�
+        // 娉ㄦ剰锛氱┖鎵樼洏鍏ュ簱锛坱ype=3锛変笉鏍¢獙搴撳瓨鏄庣粏锛屽彧鍦ㄦ牎楠屽簱浣嶄笂鏄惁鏈夋潯鐮侊紙宸插湪case 3涓鐞嗭級
+        if (type != 3 && locCache != null && !Cools.isEmpty(locCache.getBarcode())) {
+            String locCacheBarcode = locCache.getBarcode();
+            if (locCacheBarcode.equals(barcode)) {
+                // 搴撲綅涓婄殑鏉$爜涓庡綋鍓嶈鍛煎彨鐨勬潯鐮佺浉鍚岋紝妫�鏌ユ槸鍚﹀湪搴撳瓨涓�
+                int locDetlCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", barcode));
+                if (locDetlCount > 0) {
+                    log.warn("AGV鍛煎彨鏃讹紝搴撲綅涓婄殑鏉$爜鍦ㄥ簱涓紝涓嶅厑璁稿懠鍙獳GV锛氬簱浣�={}锛屾潯鐮�={}", sourceSite, barcode);
+                    throw new CoolException("鏉$爜鍦ㄥ簱锛岃鏇存崲鏉$爜" + barcode);
+                }
+            }
+        }
+        
+        // 2. 鏍¢獙宸ヤ綔妗d腑杩愯涓殑鎵樼洏鐮侊細妫�鏌ユ槸鍚︽湁鏈畬鎴愮殑宸ヤ綔妗o紙wrk_sts涓嶇瓑浜�4銆�14鍜�15锛�
+        // 4=鍏ュ簱瀹屾垚锛�14=宸插嚭搴撴湭纭锛�15=鍑哄簱鏇存柊瀹屾垚
+        int runningWrkMastCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>()
+                .eq("barcode", barcode)
+                .notIn("wrk_sts", Arrays.asList(4L, 14L, 15L))); // 涓嶇瓑浜庡叆搴撳畬鎴�(4)鍜屽嚭搴撳畬鎴�(14,15)
+        if (runningWrkMastCount > 0) {
+            log.warn("AGV鍛煎彨鏃讹紝鎵樼洏鐮佸湪宸ヤ綔妗d腑杩愯涓紝涓嶅厑璁稿懠鍙獳GV锛歿}", barcode);
+            throw new CoolException("鏉$爜鍦ㄥ伐浣滄。锛岃鏇存崲鏉$爜锛�" + barcode);
+        }
+        
+        // 3. 鏍¢獙AGV浠诲姟鍒楄〃涓湭瀹屾垚鐨勬墭鐩樼爜锛氭鏌ユ槸鍚︽湁鏈畬鎴愮殑AGV浠诲姟锛坕s_deleted=0涓攚rk_sts涓嶇瓑浜�4銆�14鍜�15锛�
+        // 4=鍏ュ簱瀹屾垚锛�14=宸插嚭搴撴湭纭锛�15=鍑哄簱鏇存柊瀹屾垚
+        int unfinishedTaskCount = taskService.selectCount(new EntityWrapper<Task>()
+                .eq("barcode", barcode)
+                .eq("is_deleted", 0)
+                .notIn("wrk_sts", Arrays.asList(4L, 14L, 15L))); // 涓嶇瓑浜庡叆搴撳畬鎴�(4)鍜屽嚭搴撳畬鎴�(14,15)
+        if (unfinishedTaskCount > 0) {
+            log.warn("AGV鍛煎彨鏃讹紝鎵樼洏鐮佸湪AGV浠诲姟鍒楄〃涓湭瀹屾垚锛屼笉鍏佽鍛煎彨AGV锛歿}", barcode);
+            throw new CoolException("鏉$爜鍦ˋGV浠诲姟妗o紝璇锋洿鎹㈡潯鐮侊細" + barcode);
         }
 
         // 鏍规嵁whs_type纭畾鏈哄櫒浜虹粍锛堢珯鐐瑰垎閰嶅畬鍏ㄧ敱瀹氭椂浠诲姟澶勭悊锛�
diff --git a/src/main/webapp/static/js/task/task.js b/src/main/webapp/static/js/task/task.js
index 22ad3df..dcda583 100644
--- a/src/main/webapp/static/js/task/task.js
+++ b/src/main/webapp/static/js/task/task.js
@@ -35,6 +35,9 @@
             , {field: 'staNo$', align: 'center', title: '鐩爣绔�', width: 120}
             , {field: 'locNo', align: 'center', title: '鐩爣搴撲綅', width: 120}
             , {field: 'barcode', align: 'center', title: '鏉$爜', width: 110}
+            , {field: 'errorMemo', align: 'center', title: '閿欒鍘熷洜', width: 200}
+            , {field: 'errorMemo2', align: 'center', title: '閿欒鍘熷洜2', width: 200, hide: true}
+            , {field: 'errorTime$', align: 'center', title: '閿欒鏃堕棿', width: 160, hide: true}
             , {field: 'preHave', align: 'center', title: '鍏堝叆鍝�', hide: true}
             , {field: 'takeNone', align: 'center', title: '绌烘搷浣�', hide: true}
             , {field: 'modiUser$', align: 'center', title: '淇敼浜哄憳', hide: true}

--
Gitblit v1.9.1