From 220841252e98efec8c0972f2672e2647842ea6a1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 09 十月 2023 10:43:42 +0800
Subject: [PATCH] #检测路径是否可用(fixed)
---
src/main/java/com/zy/common/utils/NavigateUtils.java | 12 ++----------
src/main/java/com/zy/core/thread/NyShuttleThread.java | 16 ++++++++++++----
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java
index 489c168..c086759 100644
--- a/src/main/java/com/zy/common/utils/NavigateUtils.java
+++ b/src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -251,7 +251,7 @@
/**
* 妫�娴嬭矾寰勬槸鍚﹀彲鐢�(鍙蛋)
*/
- public static boolean checkPathIsAvailable(List<NavigateNode> path, Integer shuttleNo, Integer lev) {
+ public static boolean checkPathIsAvailable(List<NavigateNode> path, Integer shuttleNo, Integer lev, List<int[]> whitePoints) {
NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo);
if (shuttleThread == null) {
return false;
@@ -261,23 +261,15 @@
return false;
}
- if (shuttleProtocol.getPoint() == null) {
- return false;//灏忚溅涓嶅瓨鍦ㄨ妭鐐�
- }
-
Integer mapType = NavigationMapType.DFX.id;
if (shuttleProtocol.getLiftPosition() == 1) {
//涓嬮檷浣嶇疆
mapType = NavigationMapType.NORMAL.id;
}
- NavigateSolution solution = new NavigateSolution(mapType, lev, null, Utils.getShuttlePoints(shuttleNo, lev));//鑾峰彇鏃犵櫧鍚嶅崟鍦板浘(璇ュ湴鍥惧寘鍚皬杞﹀潗鏍�)
+ NavigateSolution solution = new NavigateSolution(mapType, lev, whitePoints, Utils.getShuttlePoints(shuttleNo, lev));//鑾峰彇鏃犵櫧鍚嶅崟鍦板浘(璇ュ湴鍥惧寘鍚皬杞﹀潗鏍�)
int[][] map = solution.map;
for (NavigateNode node : path) {
- if (shuttleProtocol.getPoint().getX() == node.getX() && shuttleProtocol.getPoint().getY() == node.getY()) {
- continue;//灏忚溅鍧愭爣鍜屽綋鍓嶆娴嬪潗鏍囩浉鍚岋紝鐩存帴璺宠繃锛屼笉妫�娴嬪皬杞︽墍澶勫綋鍓嶅潗鏍�
- }
-
int value = map[node.getX()][node.getY()];
if (value != 0 && value != 3 && value != 5) {//姣嶈建閬�3銆佸瓙杞ㄩ亾0銆佸厖鐢垫々5
return false;
diff --git a/src/main/java/com/zy/core/thread/NyShuttleThread.java b/src/main/java/com/zy/core/thread/NyShuttleThread.java
index 1ba299f..23a86ea 100644
--- a/src/main/java/com/zy/core/thread/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -370,6 +370,7 @@
}
WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class);
+ WrkMast wrkMast = wrkMastMapper.selectByWorkNo(wrkNo.intValue());
Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo);
if (o == null) {
@@ -465,8 +466,15 @@
}
if (command.getRequest().getBody().get("requestType").equals("move")) {
+ ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆鑺傜偣鐨勭櫧鍚嶅崟
+ if (wrkMast != null && (wrkMast.getIoType() > 100 && wrkMast.getIoType() < 200)) {
+ //鍑哄簱浠诲姟锛屼笉妫�娴嬮鑺傜偣
+ int[] startArr = NavigatePositionConvert.positionToXY(wrkMast.getSourceLocNo());//寮�濮嬭妭鐐�
+ whiteList.add(startArr);
+ }
+
//妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋
- if (!checkPath(command.getNodes(), nextNodes, redisCommand)) {
+ if (!checkPath(command.getNodes(), nextNodes, whiteList)) {
return false;
}
@@ -636,17 +644,17 @@
* 妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋
* 濡傛灉璺緞涓虹洰鏍囧簱浣嶏紝浣嗕笉鍙璧帮紝绯荤粺灏嗗皾璇曢噸鏂拌绠楄矾寰�
*/
- private boolean checkPath(List<NavigateNode> currentNodes, List<NavigateNode> nextNodes, ShuttleRedisCommand redisCommand) {
+ private boolean checkPath(List<NavigateNode> currentNodes, List<NavigateNode> nextNodes, List<int[]> whitePoints) {
//妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋(妫�鏌ヨ矾寰勯攣瀹氱姸鎬侊紝妫�娴嬭矾寰勬槸鍚︽湁鍏朵粬灏忚溅)
//妫�娴嬪綋鍓嶈璧拌矾寰勶紝鍜屼笅涓�姝ヨ矾寰�
- boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(currentNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
+ boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(currentNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), whitePoints);
if (nextNodes == null) {
if (checkPathIsAvailable) {
return true;//鍙璧�
}
return false;
}else {
- boolean checkPathIsAvailable2 = NavigateUtils.checkPathIsAvailable(nextNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
+ boolean checkPathIsAvailable2 = NavigateUtils.checkPathIsAvailable(nextNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()), whitePoints);
if (checkPathIsAvailable && checkPathIsAvailable2) {
return true;//鍙璧�
}
--
Gitblit v1.9.1