From 6bad808389ec9d4c7331bb471c1410b50893fc1c Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期二, 28 三月 2023 15:35:23 +0800 Subject: [PATCH] 四向车下命令时计算移动距离 --- src/main/java/com/zy/common/utils/NavigateUtils.java | 38 +++++++++++++++++++++++++++++++++++++- 1 files changed, 37 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java index fd743d4..4be9c78 100644 --- a/src/main/java/com/zy/common/utils/NavigateUtils.java +++ b/src/main/java/com/zy/common/utils/NavigateUtils.java @@ -1,5 +1,6 @@ package com.zy.common.utils; +import com.alibaba.fastjson.JSONObject; import com.zy.common.model.NavigateNode; import com.zy.core.enums.ShuttleTaskModeType; @@ -141,6 +142,8 @@ //鐩磋绾胯矾 mapNode.setDirection(direction);//璁剧疆琛岃蛋鏂瑰悜 } + Integer distance = getXToNextDistance(mapNode);//鑾峰彇褰撳墠鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈 + mapNode.setMoveDistance(distance); } //灏嗘渶鍚庝竴娈垫暟鎹坊鍔犺繘鍏� @@ -149,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", ShuttleTaskModeType.PAK_OUT.id); + 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