From c44c7027aa6038c9de302c080367d84cfcb46a75 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 23 三月 2026 22:59:07 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/utils/StationOperateProcessUtils.java |   30 +++++++++++++++++++++++++++++-
 1 files changed, 29 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java b/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
index f988dd1..a6f36f0 100644
--- a/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
+++ b/src/main/java/com/zy/core/utils/StationOperateProcessUtils.java
@@ -27,6 +27,7 @@
 import com.zy.core.model.Task;
 import com.zy.core.model.command.StationCommand;
 import com.zy.core.model.protocol.StationProtocol;
+import com.zy.core.model.protocol.StationTaskBufferItem;
 import com.zy.core.service.StationTaskLoopService;
 import com.zy.core.thread.StationThread;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,7 +40,7 @@
     private static final int LOOP_LOAD_RESERVE_EXPIRE_SECONDS = 120;
     private static final int OUT_ORDER_DISPATCH_LIMIT_SECONDS = 2;
     private static final int STATION_IDLE_RECOVER_SECONDS = 10;
-    private static final int STATION_IDLE_RECOVER_LIMIT_SECONDS = 10;
+    private static final int STATION_IDLE_RECOVER_LIMIT_SECONDS = 30;
     private static final int STATION_IDLE_TRACK_EXPIRE_SECONDS = 60 * 60;
     private static final long STATION_MOVE_RESET_WAIT_MS = 1000L;
     private static final String IDLE_RECOVER_CLEARED_MEMO = "idleRecoverRerouteCleared";
@@ -1312,6 +1313,17 @@
         if (lock != null) {
             return;
         }
+        int currentTaskBufferCommandCount = countCurrentTaskBufferCommands(
+                stationProtocol.getTaskBufferItems(),
+                stationProtocol.getTaskNo()
+        );
+        if (currentTaskBufferCommandCount > 0) {
+            News.info("杈撻�佺珯鐐逛换鍔″仠鐣欒秴鏃讹紝浣嗙紦瀛樺尯浠嶅瓨鍦ㄥ綋鍓嶄换鍔″懡浠わ紝宸茶烦杩囬噸绠椼�傜珯鐐瑰彿={}锛屽伐浣滃彿={}锛屽綋鍓嶄换鍔″懡浠ゆ暟={}",
+                    stationProtocol.getStationId(),
+                    stationProtocol.getTaskNo(),
+                    currentTaskBufferCommandCount);
+            return;
+        }
 
         Double pathLenFactor = resolveOutboundPathLenFactor(wrkMast);
         OutOrderDispatchDecision dispatchDecision = null;
@@ -1375,6 +1387,22 @@
         redisUtil.del(key);
     }
 
+    private int countCurrentTaskBufferCommands(List<StationTaskBufferItem> taskBufferItems, Integer currentTaskNo) {
+        if (taskBufferItems == null || taskBufferItems.isEmpty() || currentTaskNo == null || currentTaskNo <= 0) {
+            return 0;
+        }
+        int count = 0;
+        for (StationTaskBufferItem item : taskBufferItems) {
+            if (item == null || item.getTaskNo() == null) {
+                continue;
+            }
+            if (currentTaskNo.equals(item.getTaskNo())) {
+                count++;
+            }
+        }
+        return count;
+    }
+
     private int clearIssuedMoveCommandsDuringIdleStay(StationTaskIdleTrack idleTrack,
                                                       Integer taskNo,
                                                       Integer stationId) {

--
Gitblit v1.9.1