From 5d68f36fb16c07ea5459a167c9711f681c2f71b2 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 27 三月 2026 17:10:25 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java b/src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java
index 1a8a4b7..9921b26 100644
--- a/src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZyStationV4Thread.java
@@ -30,6 +30,8 @@
 import com.zy.core.network.DeviceConnectPool;
 import com.zy.core.network.ZyStationConnectDriver;
 import com.zy.core.network.entity.ZyStationStatusEntity;
+import com.zy.core.thread.impl.v5.StationMoveSegmentExecutor;
+import com.zy.core.thread.support.RecentStationArrivalTracker;
 import com.zy.core.utils.DeviceLogRedisKeyBuilder;
 import com.zy.system.entity.Config;
 import com.zy.system.service.ConfigService;
@@ -51,14 +53,17 @@
     private DeviceConfig deviceConfig;
     private RedisUtil redisUtil;
     private ZyStationConnectDriver zyStationConnectDriver;
+    private StationMoveSegmentExecutor segmentExecutor;
     private int deviceLogCollectTime = 200;
     private boolean initStatus = false;
     private long deviceDataLogTime = System.currentTimeMillis();
     private ExecutorService executor = Executors.newFixedThreadPool(9999);
+    private final RecentStationArrivalTracker recentArrivalTracker = new RecentStationArrivalTracker();
 
     public ZyStationV4Thread(DeviceConfig deviceConfig, RedisUtil redisUtil) {
         this.deviceConfig = deviceConfig;
         this.redisUtil = redisUtil;
+        this.segmentExecutor = new StationMoveSegmentExecutor(deviceConfig, redisUtil, this::sendCommand);
     }
 
     @Override
@@ -92,7 +97,7 @@
                     }
                     if (step == 2) {
                         StationCommand cmd = (StationCommand) task.getData();
-                        executor.submit(() -> executeMoveWithSeg(cmd));
+                        executor.submit(() -> segmentExecutor.execute(cmd));
                     }
                     Thread.sleep(100);
                 } catch (Exception e) {
@@ -154,6 +159,7 @@
                     stationProtocol.setWeight(statusEntity.getWeight());
                     stationProtocol.setTaskWriteIdx(statusEntity.getTaskWriteIdx());
                     stationProtocol.setTaskBufferItems(statusEntity.getTaskBufferItems());
+                    recentArrivalTracker.observe(statusEntity.getStationId(), statusEntity.getTaskNo(), statusEntity.isLoading());
                 }
 
                 if (!Cools.isEmpty(stationProtocol.getSystemWarning())) {
@@ -211,6 +217,11 @@
             map.put(stationProtocol.getStationId(), stationProtocol);
         }
         return map;
+    }
+
+    @Override
+    public boolean hasRecentArrival(Integer stationId, Integer taskNo) {
+        return recentArrivalTracker.hasRecentArrival(stationId, taskNo);
     }
 
     @Override
@@ -560,4 +571,9 @@
         } catch (Exception ignore) {
         }
     }
+
+    @Override
+    public boolean clearPath(Integer taskNo) {
+        return false;
+    }
 }

--
Gitblit v1.9.1