From 87c4efe93e6fe31a9c989b4aa5cc0c8f559b845d Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期五, 31 三月 2023 16:50:47 +0800 Subject: [PATCH] 提升机代码,四向穿梭车线程优化 --- src/main/java/com/zy/common/utils/NavigateUtils.java | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java index 417b0cd..4be9c78 100644 --- a/src/main/java/com/zy/common/utils/NavigateUtils.java +++ b/src/main/java/com/zy/common/utils/NavigateUtils.java @@ -1,6 +1,8 @@ package com.zy.common.utils; +import com.alibaba.fastjson.JSONObject; import com.zy.common.model.NavigateNode; +import com.zy.core.enums.ShuttleTaskModeType; import java.util.*; @@ -9,7 +11,7 @@ */ public class NavigateUtils { - public static List<NavigateNode> calc(String startPoint, String endPoint, String mapType) { + public static List<NavigateNode> calc(String startPoint, String endPoint, Integer mapType) { //閫氳繃寮�濮嬬紪鍙峰拰缁撴潫缂栧彿鑾峰彇瀵瑰簲鐨剎y杞村潗鏍� int[] startArr = NavigatePositionConvert.positionToXY(startPoint);//寮�濮嬭妭鐐� int[] endArr = NavigatePositionConvert.positionToXY(endPoint);//缁撴潫鑺傜偣 @@ -126,6 +128,7 @@ public static ArrayList<ArrayList<NavigateNode>> getSectionPath(List<NavigateNode> mapList) { ArrayList<ArrayList<NavigateNode>> list = new ArrayList<>(); ArrayList<NavigateNode> data = new ArrayList<>(); + String direction = mapList.get(0).getDirection();//琛岃蛋鏂瑰悜 for (NavigateNode mapNode : mapList) { boolean isInflectionPoint = mapNode.getIsInflectionPoint(); data.add(mapNode); @@ -133,8 +136,14 @@ //鎷愮偣 //鍒嗗壊鏁版嵁 list.add(data);//娣诲姞鏌愪竴娈垫暟鎹� + direction = mapNode.getDirection();//鏇存柊琛岃蛋鏂瑰悜 data = new ArrayList<>(); + }else { + //鐩磋绾胯矾 + mapNode.setDirection(direction);//璁剧疆琛岃蛋鏂瑰悜 } + Integer distance = getXToNextDistance(mapNode);//鑾峰彇褰撳墠鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈 + mapNode.setMoveDistance(distance); } //灏嗘渶鍚庝竴娈垫暟鎹坊鍔犺繘鍏� @@ -143,15 +152,48 @@ return list; } + //鑾峰彇浠巟鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈 + public static Integer getXToNextDistance(NavigateNode xNode) { + NavigateMapData mapData = new NavigateMapData(); + ArrayList<ArrayList<JSONObject>> lists = mapData.getJsonData(1); + if (lists != null) { + JSONObject jsonObject = lists.get(xNode.getX()).get(xNode.getY()); + if (jsonObject != null) { + return Integer.parseInt(jsonObject.getOrDefault(xNode.getDirection(), 0).toString()); + } + return 0; + } + return 0; + } + + /** + * 鑾峰彇褰撳墠璺緞鎬昏璧拌窛绂� + */ + public static Integer getCurrentPathAllDistance(ArrayList<NavigateNode> path) { + if (path.size() == 1) { + //璺緞鍙湁涓�鏉℃暟鎹紝鍒欑洿鎺ヨ繑鍥炶璧拌窛绂� + return path.get(0).getMoveDistance(); + } + + //鎬昏窛绂� + int allDistance = 0; + for (int i = 0; i < path.size() - 1; i++) {//璺緞涓渶鍚庝竴涓妭鐐逛笉缁熻鍒版�昏窛绂伙紝鏈�鍚庝竴涓妭鐐瑰苟涓嶄細鍐嶈璧� + allDistance += path.get(i).getMoveDistance(); + } + return allDistance; + } + public static void main(String[] args) { //璁$畻璺緞 - List<NavigateNode> calc = calc("1000901", "0201801", "out"); + List<NavigateNode> calc = calc("1000901", "1800201", ShuttleTaskModeType.PAK_OUT.id); System.out.println(calc); System.out.println("------------------------"); // List<NavigateNode> calc = calc("0501401", "0201801", "out"); //灏嗚矾寰勫垎鍓叉垚澶氭 ArrayList<ArrayList<NavigateNode>> data = getSectionPath(calc); for (ArrayList<NavigateNode> list : data) { + Integer currentPathAllDistance = getCurrentPathAllDistance(list);//璁$畻褰撳墠璺緞鎬昏窛绂� + System.out.println(currentPathAllDistance); System.out.println(list); } -- Gitblit v1.9.1