From 3f14cb5d2fc4c68b486ca92689dfe86d1dc11533 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 06 一月 2025 13:26:12 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java |   26 +++++++++++++++-----------
 1 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
index f3e6e74..11f942d 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
@@ -6,6 +6,7 @@
 import com.zy.acs.manager.common.utils.MapDataUtils;
 import com.zy.acs.manager.core.constant.MapDataConstant;
 import com.zy.acs.manager.core.service.astart.*;
+import com.zy.acs.manager.core.service.astart.domain.AStarNavigateNode;
 import com.zy.acs.manager.core.service.astart.domain.DynamicNode;
 import com.zy.acs.manager.core.service.floyd.FloydNavigateService;
 import com.zy.acs.manager.manager.entity.Code;
@@ -54,15 +55,17 @@
         int[] startMapIdx = mapDataDispatcher.getCodeMatrixIdx(null, startCode.getData());
         int[] endMapIdx = mapDataDispatcher.getCodeMatrixIdx(null, endCode.getData());
 
-        NavigateNode startNode = new NavigateNode(startMapIdx[0], startMapIdx[1], startCode.getData());
-        NavigateNode endNode = new NavigateNode(endMapIdx[0], endMapIdx[1], endCode.getData());
+        AStarNavigateNode startNode = new AStarNavigateNode(startMapIdx[0], startMapIdx[1], startCode.getData());
+        AStarNavigateNode endNode = new AStarNavigateNode(endMapIdx[0], endMapIdx[1], endCode.getData());
 
-        NavigateNode finishNode = aStarNavigateService.execute(agvNo, startNode, endNode, lock, blackList, segment);
+//        long startTime = System.currentTimeMillis();
+        AStarNavigateNode finishNode = aStarNavigateService.execute(agvNo, startNode, endNode, lock, blackList, segment);
+//        System.out.println("A Star Spend time :" + (System.currentTimeMillis() - startTime));
         if (null == finishNode) {
             return new ArrayList<>();
         }
 
-        ArrayList<NavigateNode> navigateNodes = new ArrayList<>();
+        ArrayList<AStarNavigateNode> navigateNodes = new ArrayList<>();
 
         while (finishNode != null) {
             navigateNodes.add(finishNode);
@@ -71,7 +74,7 @@
 
         Collections.reverse(navigateNodes);
 
-        List<String> navigatePath = navigateNodes.stream().map(NavigateNode::getCodeData).collect(Collectors.toList());
+        List<String> navigatePath = navigateNodes.stream().map(AStarNavigateNode::getCodeData).collect(Collectors.toList());
 
         // max count of steps
         if (navigatePath.size() > MapDataConstant.MAX_STEPS_SINGLE) {
@@ -170,7 +173,8 @@
     }
 
     public void lockPath(Integer lev, List<String> pathList, String agvNo) {
-        mapDataDispatcher.modifyDynamicMatrix(lev, pathList, agvNo);
+        List<int[]> codeMatrixIdxList = mapDataDispatcher.getCodeMatrixIdxList(lev, pathList);
+        mapDataDispatcher.modifyDynamicMatrix(lev, codeMatrixIdxList, agvNo);
     }
 
     public synchronized void unlockPath(String agvNo, String codeData) {
@@ -193,9 +197,9 @@
             DynamicNode dynamicNode = dynamicMatrix[codeMatrixIdx[0]][codeMatrixIdx[1]];
 
 
-            Integer serial = dynamicNode.getSerial();
+            int serial = dynamicNode.getSerial();
 
-            List<String> resetCodeList = new ArrayList<>();
+            List<int[]> resetCodeIdxList = new ArrayList<>();
 
             for (int i = 0; i < dynamicMatrix.length; i++) {
                 for (int j = 0; j < dynamicMatrix[i].length; j++) {
@@ -205,15 +209,15 @@
                     DynamicNode node = dynamicMatrix[i][j];
                     if (node.getVehicle().equals(agvNo)) {
                         if (node.getSerial() < serial) {
-                            resetCodeList.add(codeMatrix[i][j]);
+                            resetCodeIdxList.add(new int[] {i, j});
                         }
                     }
                 }
             }
 
-            if (!Cools.isEmpty(resetCodeList)) {
+            if (!Cools.isEmpty(resetCodeIdxList)) {
 
-                mapDataDispatcher.clearDynamicMatrixByCodeList(lev, resetCodeList);
+                mapDataDispatcher.clearDynamicMatrixByCodeList(lev, resetCodeIdxList);
             }
 
             stopWatch.stop();

--
Gitblit v1.9.1