From 411b69b35e91d3d75fb7de7de1bc50e148038959 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期日, 03 八月 2025 08:58:12 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/utils/ShuttleOperaUtils.java |   31 +++++++++++++++++++++----------
 1 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
index c421287..0b3fd1f 100644
--- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -154,16 +154,16 @@
     }
 
     //妫�娴嬮殰纰嶇墿杞�
-    public synchronized boolean checkObstacle(String locNo, List<Integer> whiteShuttles) {
+    public synchronized boolean checkObstacle(String locNo, List<Integer> whiteShuttles, List<NavigateNode> whiteNodes) {
         int innerCircle = 0;
         int outerCircle = 3;
         Config avoidInnerCircleConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "avoidInnerCircle"));
-        if(avoidInnerCircleConfig != null) {
+        if (avoidInnerCircleConfig != null) {
             innerCircle = Integer.parseInt(avoidInnerCircleConfig.getValue());
         }
 
         Config avoidOuterCircleConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "avoidOuterCircle"));
-        if(avoidOuterCircleConfig != null) {
+        if (avoidOuterCircleConfig != null) {
             outerCircle = Integer.parseInt(avoidOuterCircleConfig.getValue());
         }
 
@@ -191,7 +191,7 @@
         }
 
         //鑾峰彇澶栧湀鑺傜偣
-        List<NavigateNode> outerNodes = getOuterNodes(locNo, outerCircle, whiteShuttlePointList, innerNodes);
+        List<NavigateNode> outerNodes = getOuterNodes(locNo, outerCircle, whiteShuttlePointList, innerNodes, whiteNodes);
 
         //灏嗗唴鍦堣妭鐐逛腑闅滅灏忚溅璋冪
         for (Integer shuttleNo : nodesCar) {
@@ -214,14 +214,14 @@
                 List<NavigateNode> avoidInnerNodes = getInnerNodes(dispatchLocNo, innerCircle, new ArrayList<>());
                 //璁$畻鍐呭湀鏄惁鏈夊皬杞�
                 List<Integer> avoidNodesCar = findNodesCar(avoidInnerNodes);
-                if(!avoidNodesCar.isEmpty()) {
-                   continue;
+                if (!avoidNodesCar.isEmpty()) {
+                    continue;
                 }
                 targetLocNo = dispatchLocNo;
                 break;
             }
 
-            if(targetLocNo == null) {
+            if (targetLocNo == null) {
                 continue;
             }
             shuttleDispatchUtils.dispatchShuttle(null, targetLocNo, shuttleNo);
@@ -268,7 +268,7 @@
         return list;
     }
 
-    private List<NavigateNode> getOuterNodes(String locNo, int outerCircle, List<int[]> whiteShuttlePointList, List<NavigateNode> innerNodes) {
+    private List<NavigateNode> getOuterNodes(String locNo, int outerCircle, List<int[]> whiteShuttlePointList, List<NavigateNode> innerNodes, List<NavigateNode> whiteNodes) {
         List<NavigateNode> outerNodes = new ArrayList<>();
         List<NavigateNode> outerNodesTmp = new ArrayList<>();
         int lev = Utils.getLev(locNo);
@@ -293,13 +293,24 @@
         for (NavigateNode node : outerNodesTmp) {
             boolean flag = false;
             for (NavigateNode innerNode : innerNodes) {
-                if(node.getX() == innerNode.getX() && node.getY() == innerNode.getY()) {
+                if (node.getX() == innerNode.getX() && node.getY() == innerNode.getY()) {
                     flag = true;
                     break;
                 }
             }
 
-            if(flag) {
+            if (flag) {
+                continue;
+            }
+
+            for (NavigateNode whiteNode : whiteNodes) {
+                if (node.getX() == whiteNode.getX() && node.getY() == whiteNode.getY()) {
+                    flag = true;
+                    break;
+                }
+            }
+
+            if (flag) {
                 continue;
             }
 

--
Gitblit v1.9.1