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 +++++++++++++++++++++----------
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java         |    8 ++++----
 src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java |    2 +-
 3 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 63ca0b6..aadf7ed 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -183,7 +183,7 @@
             //妫�娴嬮殰纰嶇墿杞�
             boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
                 add(shuttleProtocol.getShuttleNo());
-            }});
+            }}, new ArrayList<>());
             if (checkObstacle) {
                 News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
                 return false;
@@ -374,7 +374,7 @@
                 //妫�娴嬮殰纰嶇墿杞�
                 boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getSourceLocNo(), new ArrayList<Integer>() {{
                     add(shuttleProtocol.getShuttleNo());
-                }});
+                }}, new ArrayList<>());
                 if (checkObstacle) {
                     News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
                     return false;
@@ -516,7 +516,7 @@
             //妫�娴嬮殰纰嶇墿杞�
             boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
                 add(shuttleProtocol.getShuttleNo());
-            }});
+            }}, new ArrayList<>());
             if (checkObstacle) {
                 News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
                 return false;
@@ -1386,7 +1386,7 @@
             //妫�娴嬮殰纰嶇墿杞�
             boolean checkObstacle = shuttleOperaUtils.checkObstacle(basShuttleCharge.getWaitLocNo(), new ArrayList<Integer>() {{
                 add(shuttleProtocol.getShuttleNo());
-            }});
+            }}, new ArrayList<>());
             if (checkObstacle) {
                 News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo());
                 return false;
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;
             }
 
diff --git a/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java b/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java
index 89819a2..721e5ee 100644
--- a/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java
+++ b/src/main/java/com/zy/core/thread/impl/TrafficControlImplThread.java
@@ -176,7 +176,7 @@
                             //妫�娴嬮殰纰嶇墿杞�
                             boolean checkObstacle = shuttleOperaUtils.checkObstacle(shuttleProtocol.getCurrentLocNo(), new ArrayList<Integer>() {{
                                 add(shuttleNo);
-                            }});
+                            }}, totalNodeList);
                             pathIdleShuttleMap.remove(shuttleProtocol.getShuttleNo());
                         }
                     }else {

--
Gitblit v1.9.1