From b8640dc78123f4be2483feed2f48b9183983f51f Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 13 四月 2026 14:11:54 +0800
Subject: [PATCH] #站点运行优化
---
src/main/java/com/zy/core/thread/impl/station/StationSegmentExecutor.java | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/impl/station/StationSegmentExecutor.java b/src/main/java/com/zy/core/thread/impl/station/StationSegmentExecutor.java
index 95209a6..7d81825 100644
--- a/src/main/java/com/zy/core/thread/impl/station/StationSegmentExecutor.java
+++ b/src/main/java/com/zy/core/thread/impl/station/StationSegmentExecutor.java
@@ -15,6 +15,8 @@
import com.zy.core.model.protocol.StationProtocol;
import com.zy.core.move.StationMoveCoordinator;
import com.zy.core.trace.StationTaskTraceRegistry;
+import com.zy.core.thread.impl.v5.StationV5RuntimeConfigProvider;
+import com.zy.core.thread.support.StationTaskLocationRegistry;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
@@ -29,6 +31,7 @@
private static final String CFG_STATION_COMMAND_SEGMENT_ADVANCE_RATIO = "stationCommandSegmentAdvanceRatio";
private static final double DEFAULT_STATION_COMMAND_SEGMENT_ADVANCE_RATIO = 0.3d;
private static final long CURRENT_STATION_TIMEOUT_MS = 1000L * 60L;
+ private static final long TASK_LOCATION_STALE_MS = 2_000L;
private final DeviceConfig deviceConfig;
private final RedisUtil redisUtil;
@@ -310,6 +313,13 @@
}
private double loadSegmentAdvanceRatio() {
+ if (isV5ThreadImpl()) {
+ StationV5RuntimeConfigProvider configProvider = SpringUtils.getBean(StationV5RuntimeConfigProvider.class);
+ if (configProvider != null) {
+ return configProvider.getSegmentAdvanceRatio();
+ }
+ return DEFAULT_STATION_COMMAND_SEGMENT_ADVANCE_RATIO;
+ }
try {
ConfigService configService = SpringUtils.getBean(ConfigService.class);
if (configService == null) {
@@ -363,6 +373,9 @@
}
private StationProtocol findCurrentStationByTask(Integer taskNo) {
+ if (isV5ThreadImpl()) {
+ return findCurrentStationByTaskFromRegistry(taskNo);
+ }
try {
com.zy.asrs.service.DeviceConfigService deviceConfigService = SpringUtils.getBean(com.zy.asrs.service.DeviceConfigService.class);
if (deviceConfigService == null) {
@@ -391,6 +404,27 @@
return null;
}
+ private StationProtocol findCurrentStationByTaskFromRegistry(Integer taskNo) {
+ StationTaskLocationRegistry registry = SpringUtils.getBean(StationTaskLocationRegistry.class);
+ if (registry == null) {
+ return null;
+ }
+ StationTaskLocationRegistry.TaskLocationSnapshot snapshot = registry.findActive(taskNo, TASK_LOCATION_STALE_MS);
+ if (snapshot == null || !snapshot.isLoading()) {
+ return null;
+ }
+ StationProtocol stationProtocol = new StationProtocol();
+ stationProtocol.setTaskNo(snapshot.getTaskNo());
+ stationProtocol.setStationId(snapshot.getStationId());
+ stationProtocol.setRunBlock(snapshot.isRunBlock());
+ stationProtocol.setLoading(true);
+ return stationProtocol;
+ }
+
+ private boolean isV5ThreadImpl() {
+ return deviceConfig != null && "ZyStationV5Thread".equals(deviceConfig.getThreadImpl());
+ }
+
private List<StationTaskTraceSegmentVo> buildTraceSegments(List<StationCommand> segmentCommands) {
List<StationTaskTraceSegmentVo> result = new ArrayList<>();
if (segmentCommands == null) {
--
Gitblit v1.9.1