From ed266efb662c5b8460ecc22e31a070a718f35f9c Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 31 三月 2026 16:08:59 +0800
Subject: [PATCH] #地图编辑路径联通性导致算法计算失败问题修复
---
src/main/java/com/zy/asrs/service/impl/StationCycleCapacityServiceImpl.java | 38 ++++++++++++++++++++++++++++----------
1 files changed, 28 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/StationCycleCapacityServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/StationCycleCapacityServiceImpl.java
index 08525e5..cb9a719 100644
--- a/src/main/java/com/zy/asrs/service/impl/StationCycleCapacityServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/StationCycleCapacityServiceImpl.java
@@ -1,6 +1,7 @@
package com.zy.asrs.service.impl;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zy.asrs.domain.vo.StationCycleCapacityVo;
@@ -372,17 +373,13 @@
continue;
}
for (NavigateNode nextNode : nextNodeList) {
- JSONObject nextValueObj = parseNodeValue(nextNode.getNodeValue());
- if (nextValueObj == null) {
- continue;
+ for (Integer nextStationId : resolveConnectedStationIds(stationId, nextNode)) {
+ if (nextStationId == null || stationId.equals(nextStationId)) {
+ continue;
+ }
+ context.graph.computeIfAbsent(nextStationId, k -> new HashSet<>());
+ context.graph.get(stationId).add(nextStationId);
}
- Integer nextStationId = nextValueObj.getInteger("stationId");
- if (nextStationId == null || stationId.equals(nextStationId)) {
- continue;
- }
-
- context.graph.computeIfAbsent(nextStationId, k -> new HashSet<>());
- context.graph.get(stationId).add(nextStationId);
}
}
}
@@ -434,6 +431,27 @@
|| (isBarcodeStation != null && isBarcodeStation == 1);
}
+ private Set<Integer> resolveConnectedStationIds(Integer currentStationId, NavigateNode nextNode) {
+ Set<Integer> stationIdSet = new HashSet<>();
+ JSONObject nextValueObj = parseNodeValue(nextNode == null ? null : nextNode.getNodeValue());
+ if (nextValueObj == null) {
+ return stationIdSet;
+ }
+ Integer directStationId = nextValueObj.getInteger("stationId");
+ if (directStationId != null && !directStationId.equals(currentStationId)) {
+ stationIdSet.add(directStationId);
+ }
+ JSONArray bridgeStationIds = nextValueObj.getJSONArray("bridgeStationIds");
+ if (bridgeStationIds != null) {
+ for (Integer bridgeStationId : bridgeStationIds.toJavaList(Integer.class)) {
+ if (bridgeStationId != null && !bridgeStationId.equals(currentStationId)) {
+ stationIdSet.add(bridgeStationId);
+ }
+ }
+ }
+ return stationIdSet;
+ }
+
private StationOccupancyContext buildStationOccupancyContext() {
StationOccupancyContext context = new StationOccupancyContext();
List<DeviceConfig> devpList = deviceConfigService.list(new QueryWrapper<DeviceConfig>()
--
Gitblit v1.9.1