自动化立体仓库 - WCS系统
#
Junjie
2023-08-10 f886fe7c00267539242b6bdd8a465ad950fe8493
#
1个文件已修改
25 ■■■■ 已修改文件
src/main/java/com/zy/core/thread/NyShuttleThread.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -298,12 +298,13 @@
            return false;
        }
        WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class);
        WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class);
        Object o = redisUtil.get("shuttle_wrk_no_" + wrkNo);
        if (o == null) {
            return false;
        }
        ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class);
        List<NyShuttleHttpCommand> commands = redisCommand.getAssignCommand().getCommands();
        ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
@@ -363,13 +364,11 @@
            return false;
        }
        //检查路径是否可行走(检查路径锁定状态,检测路径是否有其他小车)
        //检测当前行走路径,和下一步路径
        boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(command.getNodes(), shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
        boolean checkPathIsAvailable2 = NavigateUtils.checkPathIsAvailable(nextNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
        if (!checkPathIsAvailable && !checkPathIsAvailable2) {
        //检测路径是否可行走
        if (!checkPath(command.getNodes(), nextNodes)) {
            return false;
        }
        //锁定路径,锁定当前路径和下一步路径
        List<NavigateNode> nodes = command.getNodes();
        nodes.addAll(nextNodes);
@@ -553,4 +552,18 @@
        return false;//默认不放行
    }
    /**
     * 检测路径是否可行走
     */
    private boolean checkPath(List<NavigateNode> currentNodes, List<NavigateNode> nextNodes) {
        //检测路径是否可行走(检查路径锁定状态,检测路径是否有其他小车)
        //检测当前行走路径,和下一步路径
        boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(currentNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
        boolean checkPathIsAvailable2 = NavigateUtils.checkPathIsAvailable(nextNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo()));
        if (checkPathIsAvailable && checkPathIsAvailable2) {
            return true;//可行走
        }
        return false;//不可行走
    }
}