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