From 2bdbfd1ac24d4e9a87daf6fb8b99ec32264d5752 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 21 十二月 2024 11:25:27 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java |   32 +++++++++++---------------------
 1 files changed, 11 insertions(+), 21 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java
index fa4c317..1583ceb 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java
@@ -1,6 +1,7 @@
 package com.zy.acs.manager.core.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.acs.common.constant.RedisConstant;
 import com.zy.acs.common.utils.RedisSupport;
 import com.zy.acs.common.utils.Utils;
 import com.zy.acs.framework.common.Cools;
@@ -9,6 +10,7 @@
 import com.zy.acs.manager.core.domain.Lane;
 import com.zy.acs.manager.core.service.astart.*;
 import com.zy.acs.manager.core.service.astart.domain.DynamicNode;
+import com.zy.acs.manager.core.utils.RouteGenerator;
 import com.zy.acs.manager.manager.entity.Code;
 import com.zy.acs.manager.manager.entity.Jam;
 import com.zy.acs.manager.manager.entity.Route;
@@ -80,13 +82,13 @@
         RetreatNavigateNode finialNode = null;
 
         PriorityQueue<RetreatNavigateNode> openQueue = new PriorityQueue<>();
-        ArrayList<RetreatNavigateNode> existNodes = new ArrayList<>();
+        Set<RetreatNavigateNode> existNodes = new HashSet<>();
 
         openQueue.add(start);
         existNodes.add(start);
         boolean phaseSecond = true;
 
-        while (openQueue.size() > 0 && null == finialNode) {
+        while (!openQueue.isEmpty() && null == finialNode) {
 
             RetreatNavigateNode currentNode = openQueue.poll();
 
@@ -203,7 +205,7 @@
             int actualLanesOfTurn = 0;
             int filterPointOfTurnTimes = 0;
 
-            while (openQueue.size() > 0 && null == finialNode) {
+            while (!openQueue.isEmpty() && null == finialNode) {
 
                 RetreatNavigateNode currentNode = openQueue.poll();
                 List<RetreatNavigateNode> enableNodes = new ArrayList<>();
@@ -315,7 +317,7 @@
     }
 
     // 鑾峰彇鍥涘懆鑺傜偣
-    private ArrayList<RetreatNavigateNode> getNeighborNodes(RetreatNavigateNode currentNode, List<RetreatNavigateNode> existNodes) {
+    private ArrayList<RetreatNavigateNode> getNeighborNodes(RetreatNavigateNode currentNode, Set<RetreatNavigateNode> existNodes) {
 
         int x = currentNode.getX();
         int y = currentNode.getY();
@@ -345,7 +347,7 @@
         return neighbourNodes;
     }
 
-    private RetreatNavigateNode extendNeighborNodes(RetreatNavigateNode currentNode, RetreatNavigateNode extendNode, List<RetreatNavigateNode> existNodes, Integer dx, Integer dy) {
+    private RetreatNavigateNode extendNeighborNodes(RetreatNavigateNode currentNode, RetreatNavigateNode extendNode, Set<RetreatNavigateNode> existNodes, Integer dx, Integer dy) {
         RetreatNavigateNode nextNode;
 
         if (null == dx || null == dy) {
@@ -371,7 +373,7 @@
             return extendNeighborNodes(currentNode, nextNode, existNodes, dx, dy);
 
         } else {
-            if (this.isExist(nextNode, existNodes)) {
+            if (existNodes.contains(nextNode)) {
                 return null;
             }
 
@@ -386,26 +388,14 @@
             nextNode.setCodeData(nextNodeCodeData);
 
             // 鍒ゆ柇閫氳繃鎬�
-            Route route = routeService.findByCodeOfBoth(
-                    codeService.selectByData(currentNodeCodeData).getId(),
-                    codeService.selectByData(nextNodeCodeData).getId()
-            );
-            if (null == route) {
+            String routeKey = RouteGenerator.generateRouteKey(currentNodeCodeData, nextNodeCodeData);
+            Object routeVal = redis.getMap(RedisConstant.AGV_MAP_ROUTE_HASH_FLAG, routeKey);
+            if (routeVal == null || !(Boolean) routeVal) {
                 return null;
             }
-
         }
 
         return nextNode;
-    }
-
-    private boolean isExist(RetreatNavigateNode node, List<RetreatNavigateNode> existNodes) {
-        for (RetreatNavigateNode existNode : existNodes) {
-            if (this.isSame(node, existNode)) {
-                return true;
-            }
-        }
-        return false;
     }
 
     private boolean isSame(RetreatNavigateNode o1, RetreatNavigateNode o2) {

--
Gitblit v1.9.1