自动化立体仓库 - WCS系统
Junjie
2024-12-21 802c12dcbc63ee1662c15723d27c8fc1f4fd36e6
src/main/java/com/zy/common/utils/NyShuttleOperaUtils.java
@@ -22,7 +22,7 @@
     * @param startPoint 起点(小车当前位置)
     * @param targetPoint 目标点(货物目标位置)
     */
    public static NyShuttleOperaResult getShuttleTransportCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint) {
    public static synchronized NyShuttleOperaResult getShuttleTransportCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint) {
        //行走路径
        ArrayList<NavigateNode> nodes = new ArrayList<>();
        //命令集合
@@ -51,7 +51,7 @@
     * @param middlePoint 中间点(货物位置)
     * @param targetPoint 目标点(货物目标位置)
     */
    public static NyShuttleOperaResult getShuttleTransportCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String middlePoint, String targetPoint) {
    public static synchronized NyShuttleOperaResult getShuttleTransportCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String middlePoint, String targetPoint) {
        //行走路径
        ArrayList<NavigateNode> nodes = new ArrayList<>();
        //命令集合
@@ -86,7 +86,7 @@
    /**
     * 获取起点到目标点行走命令
     */
    public static NyShuttleOperaResult getStartToTargetCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint, Integer mapType) {
    public static synchronized NyShuttleOperaResult getStartToTargetCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint, Integer mapType) {
        NavigateMapUtils navigateMapUtils = SpringUtils.getBean(NavigateMapUtils.class);
        //计算起点到目标点行走节点
        List<NavigateNode> calc = NavigateUtils.calc(startPoint, targetPoint, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startPoint)), null);
@@ -114,7 +114,7 @@
            allNode.addAll(nodes);
        }
        boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), allNode, true);//锁定路径
        boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), shuttleNo, allNode, true);//锁定路径
        if (!result) {
            return null;//路径锁定失败
        }
@@ -124,7 +124,7 @@
    /**
     * 获取起点到目标点行走命令(可传白名单)
     */
    public static NyShuttleOperaResult getStartToTargetCommandsByWhites(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint, Integer mapType, List<int[]> whites) {
    public static synchronized NyShuttleOperaResult getStartToTargetCommandsByWhites(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint, Integer mapType, List<int[]> whites) {
        NavigateMapUtils navigateMapUtils = SpringUtils.getBean(NavigateMapUtils.class);
        //计算起点到目标点行走节点
        List<NavigateNode> calc = NavigateUtils.calc(startPoint, targetPoint, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startPoint)), whites);
@@ -152,7 +152,22 @@
            allNode.addAll(nodes);
        }
        boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), allNode, true);//锁定路径
        //锁定路径时剔除白名单节点
        ArrayList<NavigateNode> nodes = new ArrayList<>();
        for (NavigateNode node : allNode) {
            boolean flag = false;
            for (int[] white : whites) {
                if (node.getX() == white[0] && node.getY() == white[1]) {
                    flag = true;//存在白名单节点
                    break;//跳过白名单节点
                }
            }
            if (!flag) {
                nodes.add(node);
            }
        }
        boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), shuttleNo, nodes, true);//锁定路径
        if (!result) {
            return null;//路径锁定失败
        }