#
Junjie
2025-02-06 9a516a0f650c3192071a20431789ea3942fbba8d
#
4个文件已修改
36 ■■■■ 已修改文件
src/main/java/com/zy/common/model/NavigateNode.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/NavigateMapUtils.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/NavigateSolution.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/NavigateUtils.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/model/NavigateNode.java
@@ -20,6 +20,7 @@
    private Boolean isInflectionPoint;//是否为拐点
    private String direction;//行走方向
    private Integer moveDistance;//行走距离
    private Integer nodeValue;//节点数据
    public NavigateNode(int x, int y) {
        this.x = x;
src/main/java/com/zy/common/utils/NavigateMapUtils.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasMap;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.MapNode;
@@ -42,7 +43,11 @@
            ArrayList arrayList = JSON.parseObject(basMap.getData(), ArrayList.class);
            //带小车地图
            List<List<MapNode>> listsHasShuttle = navigateMapData.filterMap(NavigationMapType.NONE.id, arrayList, lev, null, shuttlePoints);//获取带小车地图数据
            List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.NONE.id, arrayList, lev, null, null);//获取全部地图数据
            //获取全部地图数据
            List<List<MapNode>> lists = navigateMapData.rebuildData(arrayList);
            //载入库位信息
            lists = navigateMapData.loadLocMast(NavigationMapType.NONE.id, lists, lev, null);
            //检测路径是否被锁定
            if (lock) {
@@ -59,7 +64,6 @@
            }
            //尝试锁定/解锁路径
            List<List<MapNode>> realMap = navigateMapData.getJsonData(nodes.get(0).getZ(), -1, null, null);//获取完整地图(包括入库出库)
            for (NavigateNode node : nodes) {
                if (node.getZ() != lev) {
                    continue;
@@ -70,10 +74,7 @@
                if (lock) {
                    mapNode.setValue(MapNodeType.LOCK.id);//禁用库位
                } else {
                    //获取原始节点数据
                    List<MapNode> rows = realMap.get(node.getX());
                    MapNode col = rows.get(node.getY());
                    mapNode.setValue(col.getValue());//恢复库位
                    mapNode.setValue(node.getNodeValue());//恢复原始节点数据
                }
                listX.set(node.getY(), mapNode);
src/main/java/com/zy/common/utils/NavigateSolution.java
@@ -195,11 +195,13 @@
                if (is_valid(x + 1, y))
                {
                    NavigateNode node = new NavigateNode(x + 1, y);
                    node.setNodeValue(map[x + 1][y]);
                    neighbour_node.add(node);
                }
                if (is_valid(x - 1, y))
                {
                    NavigateNode node = new NavigateNode(x -1, y);
                    NavigateNode node = new NavigateNode(x - 1, y);
                    node.setNodeValue(map[x - 1][y]);
                    neighbour_node.add(node);
                }
            }
@@ -209,11 +211,13 @@
                if (is_valid(x, y + 1))
                {
                    NavigateNode node = new NavigateNode(x, y + 1);
                    node.setNodeValue(map[x][y + 1]);
                    neighbour_node.add(node);
                }
                if (is_valid(x, y - 1))
                {
                    NavigateNode node = new NavigateNode(x, y - 1);
                    node.setNodeValue(map[x][y - 1]);
                    neighbour_node.add(node);
                }
            }
@@ -223,11 +227,13 @@
                if (is_valid(x, y + 1))
                {
                    NavigateNode node = new NavigateNode(x, y + 1);
                    node.setNodeValue(map[x][y + 1]);
                    neighbour_node.add(node);
                }
                if (is_valid(x, y - 1))
                {
                    NavigateNode node = new NavigateNode(x, y - 1);
                    node.setNodeValue(map[x][y - 1]);
                    neighbour_node.add(node);
                }
            }
@@ -237,11 +243,13 @@
                if (is_valid(x + 1, y))
                {
                    NavigateNode node = new NavigateNode(x + 1, y);
                    node.setNodeValue(map[x + 1][y]);
                    neighbour_node.add(node);
                }
                if (is_valid(x - 1, y))
                {
                    NavigateNode node = new NavigateNode(x -1, y);
                    NavigateNode node = new NavigateNode(x - 1, y);
                    node.setNodeValue(map[x - 1][y]);
                    neighbour_node.add(node);
                }
            }
src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -48,14 +48,17 @@
        //获取当前节点计算的层高,并赋值到每一个节点中
        int lev = Utils.getLev(startPoint);
        NavigateSolution solution = new NavigateSolution(mapType, lev, whiteList, shuttlePoints);
        int[][] map = solution.map;
        //初始化开始节点
        NavigateNode start = new NavigateNode(startArr[0], startArr[1]);
        //开始节点无父节点
        start.setFather(null);
        start.setNodeValue(map[startArr[0]][startArr[1]]);
        NavigateNode end = new NavigateNode(endArr[0], endArr[1]);
        NavigateSolution solution = new NavigateSolution(mapType, lev, whiteList, shuttlePoints);
        end.setNodeValue(map[endArr[0]][endArr[1]]);
        //开始节点,不纳入禁用节点内计算
        NavigateNode res_node = solution.astarSearchJava(start, end);
@@ -118,14 +121,17 @@
        //获取当前节点计算的层高,并赋值到每一个节点中
        int lev = Utils.getLev(startPoint);
        NavigateSolution solution = new NavigateSolution(mapType, lev, whiteList, shuttlePoints);
        int[][] map = solution.map;
        //初始化开始节点
        NavigateNode start = new NavigateNode(startArr[0], startArr[1]);
        start.setNodeValue(map[startArr[0]][startArr[1]]);
        //开始节点无父节点
        start.setFather(null);
        NavigateNode end = new NavigateNode(endArr[0], endArr[1]);
        NavigateSolution solution = new NavigateSolution(mapType, lev, whiteList, shuttlePoints);
        end.setNodeValue(map[endArr[0]][endArr[1]]);
        //开始节点,不纳入禁用节点内计算
        String pathStr = solution.astarSearchPython(start, end, pythonCalcPath);