From 1d520bffcd63cb8389c9cdf719c3cf7e7c4af567 Mon Sep 17 00:00:00 2001
From: jianghaiyue <jianghaiyue@zkyt.com>
Date: 星期四, 30 十月 2025 10:20:28 +0800
Subject: [PATCH] 优化更新
---
algo-zkd/src/main/java/com/algo/service/AStarPathPlanner.java | 51 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 48 insertions(+), 3 deletions(-)
diff --git a/algo-zkd/src/main/java/com/algo/service/AStarPathPlanner.java b/algo-zkd/src/main/java/com/algo/service/AStarPathPlanner.java
index 5fe5554..cdc4431 100644
--- a/algo-zkd/src/main/java/com/algo/service/AStarPathPlanner.java
+++ b/algo-zkd/src/main/java/com/algo/service/AStarPathPlanner.java
@@ -5,7 +5,10 @@
import com.algo.model.PlannedPath;
import com.algo.util.JsonUtils;
import com.algo.util.PathTimeCalculator;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.File;
import java.util.*;
/**
@@ -70,13 +73,22 @@
*/
public AStarPathPlanner(Map<String, Map<String, Integer>> pathMapping) {
this.pathMapping = pathMapping;
- this.adjacencyList = new HashMap<>();
// 鍔犺浇鐜杩為�氭�ф暟鎹�
this.environmentConnectivity = JsonUtils.loadEnvironmentConnectivity("environment.json");
- // 鏋勫缓鐜鎰熺煡鐨勯偦鎺ヨ〃
- buildEnvironmentAwareAdjacencyList();
+ // 鍔犺浇閭绘帴琛�
+ Map<String, List<Map<String, String>>> loadedAdjacency = loadAdjacencyListFromJson("adjacency.json");
+
+ if (loadedAdjacency != null && !loadedAdjacency.isEmpty()) {
+ // 鎴愬姛鍔犺浇棰勭敓鎴愮殑閭绘帴琛�
+ this.adjacencyList = loadedAdjacency;
+ System.out.println("浠� adjacency.json 鍔犺浇閭绘帴琛�: " + adjacencyList.size() + " 涓妭鐐�");
+ } else {
+ this.adjacencyList = new HashMap<>();
+ buildEnvironmentAwareAdjacencyList();
+ System.out.println("浣跨敤缃戞牸鐩搁偦鎬ф瀯寤洪偦鎺ヨ〃: " + adjacencyList.size() + " 涓妭鐐�");
+ }
// 鍔犺浇瀹為檯鍧愭爣鏄犲皠
loadRealCoordinateMapping();
@@ -91,6 +103,39 @@
}
/**
+ * 浠� JSON 鏂囦欢鍔犺浇棰勭敓鎴愮殑閭绘帴琛�
+ */
+ private Map<String, List<Map<String, String>>> loadAdjacencyListFromJson(String filePath) {
+ try {
+ File file = new File(filePath);
+
+ if (!file.exists()) {
+ System.out.println("璺緞閭绘帴琛ㄦ枃浠朵笉瀛樺湪: " + filePath + "锛屼娇鐢ㄩ粯璁ゆ瀯寤烘柟娉�");
+ return null;
+ }
+
+ ObjectMapper objectMapper = new ObjectMapper();
+
+ TypeReference<Map<String, List<Map<String, String>>>> typeRef =
+ new TypeReference<Map<String, List<Map<String, String>>>>() {};
+
+ Map<String, List<Map<String, String>>> adjacency = objectMapper.readValue(file, typeRef);
+
+ if (adjacency == null || adjacency.isEmpty()) {
+ System.out.println("閭绘帴琛ㄦ枃浠朵负绌�: " + filePath);
+ return null;
+ }
+
+ return adjacency;
+
+ } catch (Exception e) {
+ System.err.println("鍔犺浇閭绘帴琛ㄥけ璐�: " + e.getMessage());
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
* 鍔犺浇瀹為檯鍧愭爣鏄犲皠
*/
private void loadRealCoordinateMapping() {
--
Gitblit v1.9.1