From e35abc495e50cfb3cfabed23a7d0d4c942c6dde9 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 25 七月 2023 10:09:22 +0800 Subject: [PATCH] 捡料 --- src/main/java/com/zy/common/utils/NavigateUtils.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 48 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java index a0aab42..950116e 100644 --- a/src/main/java/com/zy/common/utils/NavigateUtils.java +++ b/src/main/java/com/zy/common/utils/NavigateUtils.java @@ -3,6 +3,7 @@ import com.zy.asrs.utils.Utils; import com.zy.common.model.MapNode; import com.zy.common.model.NavigateNode; +import com.zy.common.model.enums.NavigationMapType; import com.zy.core.enums.ShuttleTaskModeType; import java.util.*; @@ -12,10 +13,13 @@ */ public class NavigateUtils { - public static List<NavigateNode> calc(String startPoint, String endPoint, Integer mapType) { + public static List<NavigateNode> calc(String startPoint, String endPoint, Integer mapType, List<int[]> shuttlePoints) { //閫氳繃寮�濮嬬紪鍙峰拰缁撴潫缂栧彿鑾峰彇瀵瑰簲鐨剎y杞村潗鏍� int[] startArr = NavigatePositionConvert.positionToXY(startPoint);//寮�濮嬭妭鐐� int[] endArr = NavigatePositionConvert.positionToXY(endPoint);//缁撴潫鑺傜偣 + + ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟 + whiteList.add(startArr);//灏嗗紑濮嬭妭鐐硅缃负鐧藉悕鍗曪紝浠ラ槻琚繃婊� //鑾峰彇褰撳墠鑺傜偣璁$畻鐨勫眰楂橈紝骞惰祴鍊煎埌姣忎竴涓妭鐐逛腑 int lev = Utils.getLev(startPoint); @@ -26,7 +30,9 @@ start.setFather(null); NavigateNode end = new NavigateNode(endArr[0], endArr[1]); - NavigateSolution solution = new NavigateSolution(mapType, lev); + NavigateSolution solution = new NavigateSolution(mapType, lev, whiteList, shuttlePoints); + //寮�濮嬭妭鐐癸紝涓嶇撼鍏ョ鐢ㄨ妭鐐瑰唴璁$畻 + NavigateNode res_node = solution.astarSearch(start, end); if (res_node == null) { System.out.println("鏈壘鍒拌矾寰�"); @@ -163,7 +169,7 @@ //鑾峰彇浠巟鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈 public static Integer getXToNextDistance(NavigateNode xNode) { NavigateMapData mapData = new NavigateMapData(); - List<List<MapNode>> lists = mapData.getJsonData(1); + List<List<MapNode>> lists = mapData.getJsonData(NavigationMapType.NONE.id, null, null); if (lists != null) { MapNode mapNode = lists.get(xNode.getX()).get(xNode.getY()); if (mapNode != null) { @@ -184,6 +190,19 @@ } /** + * 鏍规嵁鍘熷鑺傜偣缁撴灉锛岃绠楁�昏璧拌窛绂� + */ + public static Integer getOriginPathAllDistance(List<NavigateNode> path) { + ArrayList<ArrayList<NavigateNode>> sectionPath = NavigateUtils.getSectionPath(path); + Integer allDistance = 0; + for (ArrayList<NavigateNode> navigateNodes : sectionPath) { + Integer distance = NavigateUtils.getCurrentPathAllDistance(navigateNodes); + allDistance += distance; + } + return allDistance; + } + + /** * 鑾峰彇褰撳墠璺緞鎬昏璧拌窛绂� */ public static Integer getCurrentPathAllDistance(List<NavigateNode> path) { @@ -200,9 +219,34 @@ return allDistance; } + /** + * 鑾峰彇涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂� + */ + public static Integer getMiddleToDistDistance(List<NavigateNode> path, NavigateNode middlePath) { + //鏈�鍚庝竴鏉¤妭鐐逛笉璁$畻杩涜璧拌窛绂� + NavigateNode lastPath = path.get(path.size() - 1); + //鎬昏窛绂� + int allDistance = 0; + boolean flag = false; + for (NavigateNode navigateNode : path) { + if (!flag && navigateNode.equals(middlePath)) { + flag = true; + } + + if (navigateNode.equals(lastPath)) { + continue;//鏈�鍚庝竴鏉¤妭鐐逛笉璁$畻杩涜璧拌窛绂� + } + + if (flag) { + allDistance += navigateNode.getMoveDistance(); + } + } + return allDistance; + } + public static void main(String[] args) { //璁$畻璺緞 - List<NavigateNode> calc = calc("1000901", "1800201", ShuttleTaskModeType.PAK_OUT.id); + List<NavigateNode> calc = calc("1000901", "1800201", NavigationMapType.NONE.id, null); System.out.println(calc); System.out.println("------------------------"); // List<NavigateNode> calc = calc("0501401", "0201801", "out"); -- Gitblit v1.9.1