From 1ef1063281497f32fcfa4f14b07d99399c0bb765 Mon Sep 17 00:00:00 2001
From: jinglun-cloud <jinglun2019@foxmail.com>
Date: 星期四, 07 五月 2026 15:04:17 +0800
Subject: [PATCH] refactor(设备运动): 重构条码设备运动逻辑,提取运动常量并优化代码结构
---
src/main/java/com/zy/core/utils/station/StationDispatchLoadSupport.java | 51 +++++++++++++++++++++++++++++++++++++--------------
1 files changed, 37 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/zy/core/utils/station/StationDispatchLoadSupport.java b/src/main/java/com/zy/core/utils/station/StationDispatchLoadSupport.java
index d7a77a4..ac7c568 100644
--- a/src/main/java/com/zy/core/utils/station/StationDispatchLoadSupport.java
+++ b/src/main/java/com/zy/core/utils/station/StationDispatchLoadSupport.java
@@ -24,6 +24,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -143,27 +144,49 @@
List<NavigateNode> nodes = wrkMast == null
? navigateUtils.calcOptimalPathByStationId(sourceStationId, targetStationId, null, null)
: calcOutboundNavigatePath(wrkMast, sourceStationId, targetStationId, pathLenFactor);
- if (nodes == null || nodes.isEmpty()) {
- return LoopHitResult.noHit();
- }
-
- for (NavigateNode node : nodes) {
- Integer stationId = getStationIdFromNode(node);
- if (stationId == null) {
- continue;
- }
- Integer loopNo = loadGuardState.getStationLoopNoMap().get(stationId);
- if (loopNo != null) {
- return new LoopHitResult(true, loopNo, stationId);
- }
- }
+ return findPathLoopHitByNavigateNodes(nodes, loadGuardState);
} catch (Exception ignore) {
return LoopHitResult.noHit();
}
+ }
+ public LoopHitResult findPathLoopHitByNavigatePath(List<Integer> navigatePath,
+ LoadGuardState loadGuardState) {
+ if (navigatePath == null || navigatePath.isEmpty()) {
+ return LoopHitResult.noHit();
+ }
+ if (loadGuardState == null || loadGuardState.getStationLoopNoMap().isEmpty()) {
+ return LoopHitResult.noHit();
+ }
+
+ for (Integer stationId : navigatePath) {
+ if (stationId == null) {
+ continue;
+ }
+ Integer loopNo = loadGuardState.getStationLoopNoMap().get(stationId);
+ if (loopNo != null) {
+ return new LoopHitResult(true, loopNo, stationId);
+ }
+ }
return LoopHitResult.noHit();
}
+ public LoopHitResult findPathLoopHitByNavigateNodes(List<NavigateNode> nodes,
+ LoadGuardState loadGuardState) {
+ if (nodes == null || nodes.isEmpty()) {
+ return LoopHitResult.noHit();
+ }
+
+ List<Integer> navigatePath = new ArrayList<>();
+ for (NavigateNode node : nodes) {
+ Integer stationId = getStationIdFromNode(node);
+ if (stationId != null) {
+ navigatePath.add(stationId);
+ }
+ }
+ return findPathLoopHitByNavigatePath(navigatePath, loadGuardState);
+ }
+
public void saveLoopLoadReserve(Integer wrkNo, LoopHitResult loopHitResult) {
if (wrkNo == null || wrkNo <= 0 || loopHitResult == null || !loopHitResult.isThroughLoop()) {
return;
--
Gitblit v1.9.1