|  |  |  | 
|---|
|  |  |  | package com.zy.common.utils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.zy.asrs.utils.Utils; | 
|---|
|  |  |  | import com.zy.common.model.MapNode; | 
|---|
|  |  |  | import com.zy.common.model.NavigateNode; | 
|---|
|  |  |  | import com.zy.core.enums.ShuttleTaskModeType; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | start.setFather(null); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | NavigateNode end = new NavigateNode(endArr[0], endArr[1]); | 
|---|
|  |  |  | NavigateSolution solution = new NavigateSolution(mapType); | 
|---|
|  |  |  | NavigateSolution solution = new NavigateSolution(mapType, lev); | 
|---|
|  |  |  | NavigateNode res_node = solution.astarSearch(start, end); | 
|---|
|  |  |  | if (res_node == null) { | 
|---|
|  |  |  | System.out.println("未找到路径"); | 
|---|
|  |  |  | 
|---|
|  |  |  | //获取从x点到下一点的行走距离 | 
|---|
|  |  |  | public static Integer getXToNextDistance(NavigateNode xNode) { | 
|---|
|  |  |  | NavigateMapData mapData = new NavigateMapData(); | 
|---|
|  |  |  | ArrayList<ArrayList<JSONObject>> lists = mapData.getJsonData(1); | 
|---|
|  |  |  | List<List<MapNode>> 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()); | 
|---|
|  |  |  | MapNode mapNode = lists.get(xNode.getX()).get(xNode.getY()); | 
|---|
|  |  |  | if (mapNode != null) { | 
|---|
|  |  |  | switch (xNode.getDirection()) { | 
|---|
|  |  |  | case "top": | 
|---|
|  |  |  | return mapNode.getTop(); | 
|---|
|  |  |  | case "bottom": | 
|---|
|  |  |  | return mapNode.getBottom(); | 
|---|
|  |  |  | case "left": | 
|---|
|  |  |  | return mapNode.getLeft(); | 
|---|
|  |  |  | case "right": | 
|---|
|  |  |  | return mapNode.getRight(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | return allDistance; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取中间点到目标点行走距离 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static Integer getMiddleToDistDistance(List<NavigateNode> path) { | 
|---|
|  |  |  | //中间路径 | 
|---|
|  |  |  | NavigateNode middlePath = path.get(path.size() - 2); | 
|---|
|  |  |  | return middlePath.getMoveDistance(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static void main(String[] args) { | 
|---|
|  |  |  | //计算路径 | 
|---|
|  |  |  | List<NavigateNode> calc = calc("1000901", "1800201", ShuttleTaskModeType.PAK_OUT.id); | 
|---|