From 85392bb7db247c4596d3fbf49c9e00cfd0e76a13 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期四, 11 九月 2025 09:15:11 +0800
Subject: [PATCH] 1

---
 algo-zkd/src/main/java/com/algo/service/PathPlanningService.java |   62 ++++++++----------------------
 1 files changed, 17 insertions(+), 45 deletions(-)

diff --git a/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java b/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java
index 9fef948..833510e 100644
--- a/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java
+++ b/algo-zkd/src/main/java/com/algo/service/PathPlanningService.java
@@ -1,26 +1,23 @@
 package com.algo.service;
 
+import com.algo.config.EnvDataConfig;
 import com.algo.model.*;
 import com.algo.util.JsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.PostConstruct;
 import java.util.*;
 import java.util.concurrent.*;
 
 /**
  * 璺緞瑙勫垝鏈嶅姟
  */
+@Service
 public class PathPlanningService {
 
-    /**
-     * 璺緞鏄犲皠琛�
-     */
-    private Map<String, Map<String, Integer>> pathMapping;
-
-    /**
-     * 鐜閰嶇疆
-     */
-    private Map<String, Object> environmentConfig;
+    @Autowired
+    private EnvDataConfig envDataConfig;
 
     /**
      * 鎵ц涓换鍔℃彁鍙�
@@ -47,63 +44,35 @@
      */
     private RemainingPathProcessor remainingPathProcessor;
 
-    /**
-     * 绾跨▼姹犲ぇ灏�
-     */
-    private final int threadPoolSize;
 
     /**
      * 绾跨▼姹�
      */
-    private final ExecutorService executorService;
+    private final ExecutorService executorService = Executors.newFixedThreadPool(Math.max(4, Runtime.getRuntime().availableProcessors()));
 
     /**
      * CTU鎵瑰鐞嗗ぇ灏�
      */
     private final int batchSize = 10;
 
-    /**
-     * 鏋勯�犲嚱鏁�
-     *
-     * @param pathMapping       璺緞鏄犲皠琛�
-     * @param environmentConfig 鐜閰嶇疆
-     * @param taskDataList      浠诲姟鏁版嵁鍒楄〃
-     */
-    public PathPlanningService(Map<String, Map<String, Integer>> pathMapping,
-                               Map<String, Object> environmentConfig,
-                               List<TaskData> taskDataList) {
-        this.pathMapping = pathMapping;
-        this.environmentConfig = environmentConfig;
-
-        this.threadPoolSize = Math.max(4, Runtime.getRuntime().availableProcessors());
-        this.executorService = Executors.newFixedThreadPool(threadPoolSize);
-
-        // 鍒濆鍖�
-        initializeComponents(taskDataList);
-
-        System.out.println("璺緞瑙勫垝鏈嶅姟鍒濆鍖栧畬鎴愶紙绾跨▼姹犲ぇ灏�: " + threadPoolSize + "锛�");
-    }
 
     /**
      * 鍒濆鍖栧悇涓粍浠�
-     *
-     * @param taskDataList 浠诲姟鏁版嵁鍒楄〃
      */
-    private void initializeComponents(List<TaskData> taskDataList) {
-        // 鍒濆鍖栦换鍔℃彁鍙栧櫒
-        this.taskExtractor = new ExecutingTaskExtractor(pathMapping, taskDataList);
+    @PostConstruct
+    public void initializeComponents() {
 
         // 鍒濆鍖栬矾寰勮鍒掑櫒
-        this.pathPlanner = new AStarPathPlanner(pathMapping);
+        this.pathPlanner = new AStarPathPlanner(envDataConfig.getPathMapping());
 
         // 鍒濆鍖栫鎾炴娴嬪櫒
-        this.collisionDetector = new CollisionDetector(pathMapping);
+        this.collisionDetector = new CollisionDetector(envDataConfig.getPathMapping());
 
         // 鍒濆鍖栫鎾炶В鍐冲櫒
         this.collisionResolver = new CollisionResolver(collisionDetector);
 
         // 鍒濆鍖栧墿浣欒矾寰勫鐞嗗櫒
-        this.remainingPathProcessor = new RemainingPathProcessor(pathMapping);
+        this.remainingPathProcessor = new RemainingPathProcessor(envDataConfig.getPathMapping());
     }
 
     /**
@@ -114,9 +83,12 @@
      * @param constraints    璺緞绾︽潫鏉′欢
      * @return 璺緞瑙勫垝缁撴灉
      */
-    public PathPlanningResult planAllAgvPaths(List<AGVStatus> agvStatusList,
+    public PathPlanningResult planAllAgvPaths(List<TaskData> taskList, List<AGVStatus> agvStatusList,
                                               boolean includeIdleAgv,
                                               List<double[]> constraints) {
+        // 鍒濆鍖栦换鍔℃彁鍙栧櫒
+        this.taskExtractor = new ExecutingTaskExtractor(envDataConfig.getPathMapping(), taskList);
+
         long startTime = System.currentTimeMillis();
 
         System.out.println("寮�濮嬩负 " + agvStatusList.size() + " 涓狢TU瑙勫垝");
@@ -416,7 +388,7 @@
         long currentTime = System.currentTimeMillis() / 1000; // 杞崲涓虹
 
         for (PathCode pathCode : codeList) {
-            int[] coord = JsonUtils.getCoordinate(pathCode.getCode(), pathMapping);
+            int[] coord = JsonUtils.getCoordinate(pathCode.getCode(), envDataConfig.getPathMapping());
             if (coord != null) {
                 String spaceTimeKey = coord[0] + "," + coord[1] + "," + currentTime;
                 occupancyMap.put(spaceTimeKey, agvStatus.getAgvId());

--
Gitblit v1.9.1