From 205cb40876114827a2134c29fde159e063e81454 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 21 三月 2026 09:54:42 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/impl/ZyStationV3Thread.java | 55 ++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 42 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/impl/ZyStationV3Thread.java b/src/main/java/com/zy/core/thread/impl/ZyStationV3Thread.java
index ffdbc41..af286c8 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationV3Thread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationV3Thread.java
@@ -219,6 +219,11 @@
if (commandType == StationCommandType.MOVE) {
if (!stationId.equals(targetStationId)) {
List<Integer> path = calcPathStationIds(stationId, targetStationId);
+ if (path == null || path.isEmpty()) {
+ log.warn("杈撻�佺嚎鍛戒护鐢熸垚澶辫触锛岃矾寰勪负绌猴紝taskNo={}, stationId={}, targetStationId={}",
+ taskNo, stationId, targetStationId);
+ return null;
+ }
stationCommand.setNavigatePath(path);
}
}
@@ -334,7 +339,9 @@
segCmd.setCommandType(original.getCommandType());
segCmd.setPalletSize(original.getPalletSize());
segCmd.setNavigatePath(new ArrayList<>(path.subList(0, currentEndIdx + 1)));
- sendCommand(segCmd);
+ if (!sendSegmentWithRetry(segCmd, original.getTaskNo())) {
+ return;
+ }
long runTime = System.currentTimeMillis();
boolean firstRun = true;
@@ -385,18 +392,8 @@
nextCmd.setPalletSize(original.getPalletSize());
nextCmd.setNavigatePath(new ArrayList<>(path.subList(currentStartIdx, currentEndIdx + 1)));
nextCmd.setOriginalNavigatePath(path);
- while (true) {
- CommandResponse commandResponse = sendCommand(nextCmd);
- if (commandResponse == null) {
- Thread.sleep(200);
- continue;
- }
-
- if (commandResponse.getResult()) {
- break;
- }
-
- Thread.sleep(200);
+ if (!sendSegmentWithRetry(nextCmd, original.getTaskNo())) {
+ break;
}
}
Thread.sleep(500);
@@ -438,4 +435,36 @@
}
return null;
}
+
+ private boolean sendSegmentWithRetry(StationCommand command, Integer taskNo) {
+ while (true) {
+ if (isTaskMoveReset(taskNo)) {
+ return false;
+ }
+ CommandResponse commandResponse = sendCommand(command);
+ if (commandResponse == null) {
+ sleepQuietly(200L);
+ continue;
+ }
+ if (commandResponse.getResult()) {
+ return true;
+ }
+ sleepQuietly(200L);
+ }
+ }
+
+ private boolean isTaskMoveReset(Integer taskNo) {
+ if (taskNo == null || redisUtil == null) {
+ return false;
+ }
+ Object cancel = redisUtil.get(RedisKeyType.DEVICE_STATION_MOVE_RESET.key + taskNo);
+ return cancel != null;
+ }
+
+ private void sleepQuietly(long millis) {
+ try {
+ Thread.sleep(millis);
+ } catch (Exception ignore) {
+ }
+ }
}
--
Gitblit v1.9.1