| | |
| | | package com.zy.common.utils; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.zy.common.model.NavigateNode; |
| | | import com.zy.core.enums.ShuttleTaskModeType; |
| | | |
| | |
| | | //直行线路 |
| | | mapNode.setDirection(direction);//设置行走方向 |
| | | } |
| | | Integer distance = getXToNextDistance(mapNode);//获取当前点到下一点的行走距离 |
| | | mapNode.setMoveDistance(distance); |
| | | } |
| | | |
| | | //将最后一段数据添加进入 |
| | |
| | | return list; |
| | | } |
| | | |
| | | //获取从x点到下一点的行走距离 |
| | | 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); |
| | | } |
| | | |