From 14cc8925be94a6c07e8e48278afc8f2d4aa284f1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 19 三月 2026 20:45:42 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/plugin/NormalProcess.java | 11 +++--
src/main/java/com/zy/core/plugin/XiaosongProcess.java | 11 +++--
src/main/java/com/zy/core/utils/WmsOperateUtils.java | 43 +++++++++++++++++----
src/main/java/com/zy/core/plugin/FakeProcess.java | 11 +++--
src/main/java/com/zy/core/plugin/GslProcess.java | 11 +++--
5 files changed, 59 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/zy/core/plugin/FakeProcess.java b/src/main/java/com/zy/core/plugin/FakeProcess.java
index f739578..6e2bb05 100644
--- a/src/main/java/com/zy/core/plugin/FakeProcess.java
+++ b/src/main/java/com/zy/core/plugin/FakeProcess.java
@@ -492,9 +492,10 @@
String barcode = stationProtocol.getBarcode();
Integer stationIdVal = stationProtocol.getStationId();
+ Integer taskNo = stationProtocol.getTaskNo();
// 1. 棣栧厛鏌ヨ鏄惁鏈夊凡瀹屾垚鐨勫紓姝ュ搷搴�
- String response = wmsOperateUtils.queryAsyncInTaskResponse(barcode, stationIdVal);
+ String response = wmsOperateUtils.queryAsyncInTaskResponse(barcode, stationIdVal, taskNo);
if (!Cools.isEmpty(response)) {
// 2. 鏈夊搷搴旂粨鏋滐紝澶勭悊鍝嶅簲
@@ -502,7 +503,7 @@
// 璇锋眰澶辫触锛岄噸鏂板彂璧峰紓姝ヨ姹�
News.error("WMS鍏ュ簱璇锋眰澶辫触锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
@@ -535,7 +536,7 @@
// 鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹�
News.error("WMS鍏ュ簱鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
@@ -543,10 +544,10 @@
}
} else {
// 3. 娌℃湁鍝嶅簲缁撴灉锛屾鏌ユ槸鍚︽湁璇锋眰姝e湪杩涜涓�
- if (!wmsOperateUtils.isAsyncRequestInProgress(barcode, stationIdVal)) {
+ if (!wmsOperateUtils.isAsyncRequestInProgress(barcode, stationIdVal, taskNo)) {
// 娌℃湁璇锋眰杩涜涓紝鍙戣捣鏂扮殑寮傛璇锋眰
News.info("鍙戣捣寮傛WMS鍏ュ簱璇锋眰锛宐arcode={}锛宻tationId={}", barcode, stationIdVal);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
diff --git a/src/main/java/com/zy/core/plugin/GslProcess.java b/src/main/java/com/zy/core/plugin/GslProcess.java
index dd4708e..75092ab 100644
--- a/src/main/java/com/zy/core/plugin/GslProcess.java
+++ b/src/main/java/com/zy/core/plugin/GslProcess.java
@@ -167,9 +167,10 @@
String barcode = stationProtocol.getBarcode();
Integer stationIdVal = stationProtocol.getStationId();
+ Integer taskNo = stationProtocol.getTaskNo();
// 1. 棣栧厛鏌ヨ鏄惁鏈夊凡瀹屾垚鐨勫紓姝ュ搷搴�
- String response = wmsOperateUtils.queryAsyncInTaskResponse(barcode, stationIdVal);
+ String response = wmsOperateUtils.queryAsyncInTaskResponse(barcode, stationIdVal, taskNo);
if (!Cools.isEmpty(response)) {
// 2. 鏈夊搷搴旂粨鏋滐紝澶勭悊鍝嶅簲
@@ -177,7 +178,7 @@
// 璇锋眰澶辫触锛岄噸鏂板彂璧峰紓姝ヨ姹�
News.error("WMS鍏ュ簱璇锋眰澶辫触锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
stationProtocol.setSystemWarning("璇锋眰鍏ュ簱澶辫触锛學MS杩斿洖=" + response);
@@ -200,17 +201,17 @@
// 鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹�
News.error("WMS鍏ュ簱鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
stationProtocol.setSystemWarning("璇锋眰鍏ュ簱澶辫触锛學MS杩斿洖=" + response);
}
} else {
// 3. 娌℃湁鍝嶅簲缁撴灉锛屾鏌ユ槸鍚︽湁璇锋眰姝e湪杩涜涓�
- if (!wmsOperateUtils.isAsyncRequestInProgress(barcode, stationIdVal)) {
+ if (!wmsOperateUtils.isAsyncRequestInProgress(barcode, stationIdVal, taskNo)) {
// 娌℃湁璇锋眰杩涜涓紝鍙戣捣鏂扮殑寮傛璇锋眰
News.info("鍙戣捣寮傛WMS鍏ュ簱璇锋眰锛宐arcode={}锛宻tationId={}", barcode, stationIdVal);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
stationProtocol.setSystemWarning("璇锋眰鍏ュ簱澶辫触锛學MS鏃犺繑鍥�");
diff --git a/src/main/java/com/zy/core/plugin/NormalProcess.java b/src/main/java/com/zy/core/plugin/NormalProcess.java
index b29ca52..f230ee7 100644
--- a/src/main/java/com/zy/core/plugin/NormalProcess.java
+++ b/src/main/java/com/zy/core/plugin/NormalProcess.java
@@ -145,9 +145,10 @@
String barcode = stationProtocol.getBarcode();
Integer stationIdVal = stationProtocol.getStationId();
+ Integer taskNo = stationProtocol.getTaskNo();
// 1. 棣栧厛鏌ヨ鏄惁鏈夊凡瀹屾垚鐨勫紓姝ュ搷搴�
- String response = wmsOperateUtils.queryAsyncInTaskResponse(barcode, stationIdVal);
+ String response = wmsOperateUtils.queryAsyncInTaskResponse(barcode, stationIdVal, taskNo);
if (!Cools.isEmpty(response)) {
// 2. 鏈夊搷搴旂粨鏋滐紝澶勭悊鍝嶅簲
@@ -155,7 +156,7 @@
// 璇锋眰澶辫触锛岄噸鏂板彂璧峰紓姝ヨ姹�
News.error("WMS鍏ュ簱璇锋眰澶辫触锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
stationProtocol.setSystemWarning("璇锋眰鍏ュ簱澶辫触锛學MS杩斿洖=" + response);
@@ -178,17 +179,17 @@
// 鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹�
News.error("WMS鍏ュ簱鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
stationProtocol.setSystemWarning("璇锋眰鍏ュ簱澶辫触锛學MS杩斿洖=" + response);
}
} else {
// 3. 娌℃湁鍝嶅簲缁撴灉锛屾鏌ユ槸鍚︽湁璇锋眰姝e湪杩涜涓�
- if (!wmsOperateUtils.isAsyncRequestInProgress(barcode, stationIdVal)) {
+ if (!wmsOperateUtils.isAsyncRequestInProgress(barcode, stationIdVal, taskNo)) {
// 娌℃湁璇锋眰杩涜涓紝鍙戣捣鏂扮殑寮傛璇锋眰
News.info("鍙戣捣寮傛WMS鍏ュ簱璇锋眰锛宐arcode={}锛宻tationId={}", barcode, stationIdVal);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
stationProtocol.setSystemWarning("璇锋眰鍏ュ簱澶辫触锛學MS鏃犺繑鍥�");
diff --git a/src/main/java/com/zy/core/plugin/XiaosongProcess.java b/src/main/java/com/zy/core/plugin/XiaosongProcess.java
index abe40da..3a26d41 100644
--- a/src/main/java/com/zy/core/plugin/XiaosongProcess.java
+++ b/src/main/java/com/zy/core/plugin/XiaosongProcess.java
@@ -172,9 +172,10 @@
String barcode = stationProtocol.getBarcode();
Integer stationIdVal = stationProtocol.getStationId();
+ Integer taskNo = stationProtocol.getTaskNo();
// 1. 棣栧厛鏌ヨ鏄惁鏈夊凡瀹屾垚鐨勫紓姝ュ搷搴�
- String response = wmsOperateUtils.queryAsyncInTaskResponse(barcode, stationIdVal);
+ String response = wmsOperateUtils.queryAsyncInTaskResponse(barcode, stationIdVal, taskNo);
if (!Cools.isEmpty(response)) {
// 2. 鏈夊搷搴旂粨鏋滐紝澶勭悊鍝嶅簲
@@ -182,7 +183,7 @@
// 璇锋眰澶辫触锛岄噸鏂板彂璧峰紓姝ヨ姹�
News.error("WMS鍏ュ簱璇锋眰澶辫触锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
stationProtocol.setSystemWarning("璇锋眰鍏ュ簱澶辫触锛學MS杩斿洖=" + response);
@@ -205,17 +206,17 @@
// 鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹�
News.error("WMS鍏ュ簱鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹傦紝barcode={}锛宻tationId={}锛宺esponse={}", barcode,
stationIdVal, response);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
stationProtocol.setSystemWarning("璇锋眰鍏ュ簱澶辫触锛學MS杩斿洖=" + response);
}
} else {
// 3. 娌℃湁鍝嶅簲缁撴灉锛屾鏌ユ槸鍚︽湁璇锋眰姝e湪杩涜涓�
- if (!wmsOperateUtils.isAsyncRequestInProgress(barcode, stationIdVal)) {
+ if (!wmsOperateUtils.isAsyncRequestInProgress(barcode, stationIdVal, taskNo)) {
// 娌℃湁璇锋眰杩涜涓紝鍙戣捣鏂扮殑寮傛璇锋眰
News.info("鍙戣捣寮傛WMS鍏ュ簱璇锋眰锛宐arcode={}锛宻tationId={}", barcode, stationIdVal);
- wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
+ wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal, taskNo,
stationProtocol.getPalletHeight());
redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
stationProtocol.setSystemWarning("璇锋眰鍏ュ簱澶辫触锛學MS鏃犺繑鍥�");
diff --git a/src/main/java/com/zy/core/utils/WmsOperateUtils.java b/src/main/java/com/zy/core/utils/WmsOperateUtils.java
index 7bbcb33..a99d80a 100644
--- a/src/main/java/com/zy/core/utils/WmsOperateUtils.java
+++ b/src/main/java/com/zy/core/utils/WmsOperateUtils.java
@@ -82,6 +82,17 @@
private final ConcurrentMap<String, Boolean> asyncInTaskInflight = new ConcurrentHashMap<>();
+ private String buildAsyncInTaskKey(String prefix, String barcode, Integer stationId, Integer taskNo) {
+ StringBuilder keyBuilder = new StringBuilder(prefix)
+ .append(barcode)
+ .append("_")
+ .append(stationId);
+ if (taskNo != null && taskNo > 0) {
+ keyBuilder.append("_").append(taskNo);
+ }
+ return keyBuilder.toString();
+ }
+
// 鐢宠鍏ュ簱浠诲姟
public String applyInTask(String barcode, Integer sourceStaNo, Integer locType1) {
Object systemConfigMapObj = redisUtil.get(RedisKeyType.SYSTEM_CONFIG_MAP.key);
@@ -169,8 +180,12 @@
* @param locType1 鎵樼洏楂樺害
*/
public void applyInTaskAsync(String barcode, Integer sourceStaNo, Integer locType1) {
- String requestKey = RedisKeyType.ASYNC_WMS_IN_TASK_REQUEST.key + barcode + "_" + sourceStaNo;
- String responseKey = RedisKeyType.ASYNC_WMS_IN_TASK_RESPONSE.key + barcode + "_" + sourceStaNo;
+ applyInTaskAsync(barcode, sourceStaNo, null, locType1);
+ }
+
+ public void applyInTaskAsync(String barcode, Integer sourceStaNo, Integer taskNo, Integer locType1) {
+ String requestKey = buildAsyncInTaskKey(RedisKeyType.ASYNC_WMS_IN_TASK_REQUEST.key, barcode, sourceStaNo, taskNo);
+ String responseKey = buildAsyncInTaskKey(RedisKeyType.ASYNC_WMS_IN_TASK_RESPONSE.key, barcode, sourceStaNo, taskNo);
if (asyncInTaskInflight.putIfAbsent(requestKey, Boolean.TRUE) != null) {
return;
@@ -192,13 +207,16 @@
String response = applyInTask(barcode, sourceStaNo, locType1);
if (response != null) {
redisUtil.set(responseKey, response, APPLY_IN_TASK_RESPONSE_TTL_SECONDS);
- News.info("寮傛WMS鍏ュ簱璇锋眰瀹屾垚锛宐arcode={}锛宻tationId={}锛宺esponse={}", barcode, sourceStaNo, response);
+ News.info("寮傛WMS鍏ュ簱璇锋眰瀹屾垚锛宐arcode={}锛宻tationId={}锛宼askNo={}锛宺esponse={}",
+ barcode, sourceStaNo, taskNo, response);
} else {
redisUtil.set(responseKey, "FAILED", 10);
- News.error("寮傛WMS鍏ュ簱璇锋眰澶辫触锛宐arcode={}锛宻tationId={}", barcode, sourceStaNo);
+ News.error("寮傛WMS鍏ュ簱璇锋眰澶辫触锛宐arcode={}锛宻tationId={}锛宼askNo={}",
+ barcode, sourceStaNo, taskNo);
}
} catch (Exception e) {
- News.error("寮傛WMS鍏ュ簱璇锋眰寮傚父锛宐arcode={}锛宻tationId={}锛宔rror={}", barcode, sourceStaNo, e.getMessage());
+ News.error("寮傛WMS鍏ュ簱璇锋眰寮傚父锛宐arcode={}锛宻tationId={}锛宼askNo={}锛宔rror={}",
+ barcode, sourceStaNo, taskNo, e.getMessage());
redisUtil.set(responseKey, "ERROR:" + e.getMessage(), 10);
} finally {
asyncInTaskInflight.remove(requestKey);
@@ -209,7 +227,8 @@
asyncInTaskInflight.remove(requestKey);
redisUtil.del(requestKey);
redisUtil.set(responseKey, "ERROR:ASYNC_QUEUE_FULL", 10);
- News.error("寮傛WMS鍏ュ簱璇锋眰琚嫆缁濓紝绾跨▼姹犲凡婊★紝barcode={}锛宻tationId={}", barcode, sourceStaNo);
+ News.error("寮傛WMS鍏ュ簱璇锋眰琚嫆缁濓紝绾跨▼姹犲凡婊★紝barcode={}锛宻tationId={}锛宼askNo={}",
+ barcode, sourceStaNo, taskNo);
}
}
@@ -221,7 +240,11 @@
* @return 鍝嶅簲缁撴灉锛宯ull琛ㄧず杩樻湭瀹屾垚鎴栨湭鎵惧埌
*/
public String queryAsyncInTaskResponse(String barcode, Integer stationId) {
- String responseKey = RedisKeyType.ASYNC_WMS_IN_TASK_RESPONSE.key + barcode + "_" + stationId;
+ return queryAsyncInTaskResponse(barcode, stationId, null);
+ }
+
+ public String queryAsyncInTaskResponse(String barcode, Integer stationId, Integer taskNo) {
+ String responseKey = buildAsyncInTaskKey(RedisKeyType.ASYNC_WMS_IN_TASK_RESPONSE.key, barcode, stationId, taskNo);
Object response = redisUtil.get(responseKey);
if (response != null) {
// 鑾峰彇鍚庡垹闄わ紝閬垮厤閲嶅澶勭悊
@@ -239,7 +262,11 @@
* @return true琛ㄧず姝e湪璇锋眰涓�
*/
public boolean isAsyncRequestInProgress(String barcode, Integer stationId) {
- String requestKey = RedisKeyType.ASYNC_WMS_IN_TASK_REQUEST.key + barcode + "_" + stationId;
+ return isAsyncRequestInProgress(barcode, stationId, null);
+ }
+
+ public boolean isAsyncRequestInProgress(String barcode, Integer stationId, Integer taskNo) {
+ String requestKey = buildAsyncInTaskKey(RedisKeyType.ASYNC_WMS_IN_TASK_REQUEST.key, barcode, stationId, taskNo);
return asyncInTaskInflight.containsKey(requestKey) || redisUtil.get(requestKey) != null;
}
--
Gitblit v1.9.1