From 463b9e4b68b8ab62a11c6985081fd5d62692cc79 Mon Sep 17 00:00:00 2001
From: cpT <1@123>
Date: 星期四, 29 一月 2026 19:42:07 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/plugin/NormalProcess.java | 8 ----
src/main/java/com/zy/core/plugin/XiaosongProcess.java | 8 ----
src/main/java/com/zy/core/network/ZyStationConnectDriver.java | 18 ++++++++
src/main/java/com/zy/core/network/real/ZyStationV3RealConnect.java | 3 +
src/main/java/com/zy/core/utils/WmsOperateUtils.java | 2
src/main/java/com/zy/core/enums/RedisKeyType.java | 2 +
src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java | 29 ++++++++++++--
7 files changed, 47 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/zy/core/enums/RedisKeyType.java b/src/main/java/com/zy/core/enums/RedisKeyType.java
index 3dcf3ce..88281e4 100644
--- a/src/main/java/com/zy/core/enums/RedisKeyType.java
+++ b/src/main/java/com/zy/core/enums/RedisKeyType.java
@@ -10,6 +10,7 @@
LIFT_FLAG("lift_"),
DUAL_CRN_COMMAND_("dual_crn_command_"),
+ DUAL_CRN_COMMAND_STATION_TASK_NO("dual_crn_command_station_task_no_"),
QUEUE_CRN("queue_crn_"),
QUEUE_DUAL_CRN("queue_dual_crn_"),
@@ -49,6 +50,7 @@
CHECK_SHALLOW_LOC_STATUS_LIMIT("check_shallow_loc_status_limit_"),
GENERATE_ENABLE_IN_STATION_DATA_LIMIT("generate_enable_in_station_data_limit_"),
GENERATE_STATION_BACK_LIMIT("generate_station_back_limit_"),
+ STATION_EXECUTE_COMMAND_LOCK("station_execute_command_lock"),
DUAL_CRN_PICK_WAIT_NEXT_TASK("dual_crn_pick_wait_next_task_"),
DUAL_CRN_OUT_TASK_STATION_INFO("dual_crn_out_task_station_info_"),
diff --git a/src/main/java/com/zy/core/network/ZyStationConnectDriver.java b/src/main/java/com/zy/core/network/ZyStationConnectDriver.java
index 78be50b..59d0d1b 100644
--- a/src/main/java/com/zy/core/network/ZyStationConnectDriver.java
+++ b/src/main/java/com/zy/core/network/ZyStationConnectDriver.java
@@ -3,6 +3,7 @@
import com.zy.asrs.entity.DeviceConfig;
import com.zy.common.utils.RedisUtil;
import com.zy.core.ThreadHandler;
+import com.zy.core.enums.RedisKeyType;
import com.zy.core.model.CommandResponse;
import com.zy.core.model.command.StationCommand;
import com.zy.core.network.api.ZyStationConnectApi;
@@ -114,7 +115,22 @@
}
public CommandResponse sendCommand(StationCommand command) {
- return zyStationConnectApi.sendCommand(deviceConfig.getDeviceNo(), command);
+ while (true) {
+ Object lock = redisUtil.get(RedisKeyType.STATION_EXECUTE_COMMAND_LOCK.key);
+ if(lock != null) {
+ try {
+ Thread.sleep(500);
+ }catch (Exception e) {
+ e.printStackTrace();
+ }
+ }else {
+ redisUtil.set(RedisKeyType.STATION_EXECUTE_COMMAND_LOCK.key, "lock", 60 * 5);
+ break;
+ }
+ }
+ CommandResponse commandResponse = zyStationConnectApi.sendCommand(deviceConfig.getDeviceNo(), command);
+ redisUtil.del(RedisKeyType.STATION_EXECUTE_COMMAND_LOCK.key);
+ return commandResponse;
}
public CommandResponse sendOriginCommand(String address, short[] data) {
diff --git a/src/main/java/com/zy/core/network/real/ZyStationV3RealConnect.java b/src/main/java/com/zy/core/network/real/ZyStationV3RealConnect.java
index 56283bd..a3ba391 100644
--- a/src/main/java/com/zy/core/network/real/ZyStationV3RealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyStationV3RealConnect.java
@@ -15,6 +15,7 @@
import com.zy.common.utils.RedisUtil;
import com.zy.core.News;
import com.zy.core.cache.OutputQueue;
+import com.zy.core.enums.RedisKeyType;
import com.zy.core.enums.StationCommandType;
import com.zy.core.model.CommandResponse;
import com.zy.core.model.StationObjModel;
@@ -315,7 +316,7 @@
}
@Override
- public CommandResponse sendOriginCommand(String address, short[] data) {
+ public synchronized CommandResponse sendOriginCommand(String address, short[] data) {
CommandResponse commandResponse = new CommandResponse(false);
if (null == data || data.length == 0) {
commandResponse.setMessage("鏁版嵁涓虹┖");
diff --git a/src/main/java/com/zy/core/plugin/NormalProcess.java b/src/main/java/com/zy/core/plugin/NormalProcess.java
index 77541c8..2154359 100644
--- a/src/main/java/com/zy/core/plugin/NormalProcess.java
+++ b/src/main/java/com/zy/core/plugin/NormalProcess.java
@@ -171,14 +171,6 @@
taskParam.setTaskPri(dto.getTaskPri());
taskParam.setBarcode(barcode);
WrkMast wrkMast = commonService.createInTask(taskParam);
-
- StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
- wrkMast.getWrkNo(), stationId, stationId, 0);
- if (command == null) {
- News.taskInfo(wrkMast.getWrkNo(), "鑾峰彇杈撻�佺嚎鍛戒护澶辫触");
- continue;
- }
- MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
stationProtocol.setSystemWarning("");
} else {
// 鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹�
diff --git a/src/main/java/com/zy/core/plugin/XiaosongProcess.java b/src/main/java/com/zy/core/plugin/XiaosongProcess.java
index f208869..87a8091 100644
--- a/src/main/java/com/zy/core/plugin/XiaosongProcess.java
+++ b/src/main/java/com/zy/core/plugin/XiaosongProcess.java
@@ -181,14 +181,6 @@
taskParam.setTaskPri(dto.getTaskPri());
taskParam.setBarcode(barcode);
WrkMast wrkMast = commonService.createInTask(taskParam);
-
- StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
- wrkMast.getWrkNo(), stationId, stationId, 0);
- if (command == null) {
- News.taskInfo(wrkMast.getWrkNo(), "鑾峰彇杈撻�佺嚎鍛戒护澶辫触");
- continue;
- }
- MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
stationProtocol.setSystemWarning("");
} else {
// 鎺ュ彛杩斿洖闈�200锛岄噸鏂板彂璧疯姹�
diff --git a/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java b/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
index 4917e58..7bf7e62 100644
--- a/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
@@ -92,6 +92,7 @@
map.put("commands", commandList);
map.put("idx", 1);
redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + command.getTaskNo(), JSON.toJSONString(map, SerializerFeature.DisableCircularReferenceDetect), 60 * 60 * 24);
+ redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_STATION_TASK_NO.key + crnProtocol.getCrnNo() + "_" + command.getStation(), command.getTaskNo(), 60 * 60 * 24);
sendCommand(command);
} else if (step == 3) {
sendCommand((DualCrnCommand) task.getData());
@@ -123,8 +124,18 @@
}
}
- if(crnProtocol.getTaskNo() > 0 && crnProtocol.getStatus().equals(DualCrnStatusType.FETCH_COMPLETE.id)) {
- Integer taskNo = crnProtocol.getTaskNo();
+ if(crnProtocol.getTaskNo() == 0 && crnProtocol.getStatus().equals(DualCrnStatusType.FETCH_COMPLETE.id)) {
+ Integer taskNo = null;
+ Object stationObj = redisUtil.get(RedisKeyType.DUAL_CRN_COMMAND_STATION_TASK_NO.key + crnProtocol.getCrnNo() + "_" + 1);
+ if(stationObj != null) {
+ taskNo = Integer.parseInt(String.valueOf(stationObj));
+ }
+
+ if (taskNo == null) {
+ News.error("鍙屽伐浣嶅爢鍨涙満锛屽伐浣�1绌洪棽绛夊緟涓嬪彂鍛戒护锛屼絾鏈壘鍒板伐浣滃彿銆傚爢鍨涙満鍙�={}", crnProtocol.getCrnNo());
+ continue;
+ }
+
Object commandObj = redisUtil.get(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo);
if (commandObj == null) {
News.error("鍙屽伐浣嶅爢鍨涙満锛屽伐浣�1绌洪棽绛夊緟涓嬪彂鍛戒护锛屼絾鏈壘鍒板懡浠ゃ�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crnProtocol.getCrnNo(), taskNo);
@@ -181,8 +192,18 @@
redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo, commandMap.toJSONString(), 60 * 60 * 24);
}
- if(crnProtocol.getTaskNoTwo() > 0 && crnProtocol.getStatusTwo() == DualCrnStatusType.IDLE.id) {
- Integer taskNo = crnProtocol.getTaskNoTwo();
+ if(crnProtocol.getTaskNoTwo() == 0 && crnProtocol.getStatusTwo().equals(DualCrnStatusType.FETCH_COMPLETE.id)) {
+ Integer taskNo = null;
+ Object stationObj = redisUtil.get(RedisKeyType.DUAL_CRN_COMMAND_STATION_TASK_NO.key + crnProtocol.getCrnNo() + "_" + 2);
+ if(stationObj != null) {
+ taskNo = Integer.parseInt(String.valueOf(stationObj));
+ }
+
+ if (taskNo == null) {
+ News.error("鍙屽伐浣嶅爢鍨涙満锛屽伐浣�1绌洪棽绛夊緟涓嬪彂鍛戒护锛屼絾鏈壘鍒板伐浣滃彿銆傚爢鍨涙満鍙�={}", crnProtocol.getCrnNo());
+ continue;
+ }
+
Object commandObj = redisUtil.get(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo);
if (commandObj == null) {
News.error("鍙屽伐浣嶅爢鍨涙満锛屽伐浣�2绌洪棽绛夊緟涓嬪彂鍛戒护锛屼絾鏈壘鍒板懡浠ゃ�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crnProtocol.getCrnNo(), taskNo);
diff --git a/src/main/java/com/zy/core/utils/WmsOperateUtils.java b/src/main/java/com/zy/core/utils/WmsOperateUtils.java
index 42e682a..4ef1979 100644
--- a/src/main/java/com/zy/core/utils/WmsOperateUtils.java
+++ b/src/main/java/com/zy/core/utils/WmsOperateUtils.java
@@ -93,7 +93,7 @@
requestParam.put("barcode", barcode);
requestParam.put("sourceStaNo", stationNo);
- requestParam.put("locType1", locType1);
+ requestParam.put("locType1", locType1 == null ? 1 : locType1);
requestParam.put("row", Utils.getInTaskEnableRow(sourceStaNo));
response = new HttpHandler.Builder()
--
Gitblit v1.9.1