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/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 63 ++++++++++++++++++++++++++-----
1 files changed, 53 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纭畾鏈哄櫒浜虹粍锛堢珯鐐瑰垎閰嶅畬鍏ㄧ敱瀹氭椂浠诲姟澶勭悊锛�
--
Gitblit v1.9.1