自动化立体仓库 - WCS系统
#
Junjie
2023-10-25 7a3b50af32dce3c806a6e520043a714594f3acff
src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -370,6 +370,7 @@
            return false;
        }
        NavigateMapUtils navigateMapUtils = SpringUtils.getBean(NavigateMapUtils.class);
        WrkMastMapper wrkMastMapper = SpringUtils.getBean(WrkMastMapper.class);
        WrkMast wrkMast = wrkMastMapper.selectByWorkNo(wrkNo.intValue());
@@ -388,8 +389,6 @@
        }
        checkIOSta(commands, commandStep);//检测小车是否进出提升机输送站
        NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo()));
        boolean isLock = false;//是否解锁路径
        //取出命令
@@ -414,7 +413,12 @@
//                        nodes.addAll(command.getNodes());
//                    }
                    if (nodes != null) {
                        boolean result = navigateMapData.writeNavigateNodeToRedisMap(nodes, false);//解锁路径
                        NavigateNode targetNode = assignCommand.getNodes().get(assignCommand.getNodes().size() - 1);//最终节点
                        NavigateNode node = nodes.get(nodes.size() - 1);
                        if (!(targetNode.getX() == node.getX() && targetNode.getY() == node.getY())) {
                            nodes.remove(nodes.size() - 1);//剔除尾节点
                        }
                        boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), nodes, false);//解锁路径
                        if (!result) {
                            return false;//解锁失败
                        }
@@ -474,41 +478,41 @@
            return false;
        }
        if (command.getRequest().getBody().get("requestType").equals("move")) {
            ArrayList<int[]> whiteList = new ArrayList<>();//设置节点的白名单
            if (wrkMast != null && ((wrkMast.getIoType() > 100 && wrkMast.getIoType() < 200) || wrkMast.getIoType() == 11)) {
                //出库任务,不检测首节点
                int[] startArr = NavigatePositionConvert.positionToXY(wrkMast.getSourceLocNo());//开始节点
                whiteList.add(startArr);
            }
            //解锁过路径,只检测下一段路径是否可走(当前路径已经被锁定无需再检测)
            if (isLock) {
                //只检测下一段路径是否可走(当前路径已经被锁定无需再检测)
                //检测路径是否可行走
                if (!checkPath(nextNodes == null ? command.getNodes() : nextNodes, null, whiteList)) {
                    return false;
                }
            }else {
                //检测当前路径和下一段路径
                //检测路径是否可行走
                if (!checkPath(command.getNodes(), nextNodes, whiteList)) {
                    return false;
                }
            }
            //锁定路径,锁定当前路径和下一步路径
            List<NavigateNode> nodes = command.getNodes();
            if (nextNodes != null) {
                nodes.addAll(nextNodes);
            }
            if (nodes != null) {
                boolean result = navigateMapData.writeNavigateNodeToRedisMap(nodes, true);//所使用的路径进行锁定禁用
                if (!result) {
                    return false;//路径锁定失败
                }
            }
        }
//        if (command.getRequest().getBody().get("requestType").equals("move")) {
//            ArrayList<int[]> whiteList = new ArrayList<>();//设置节点的白名单
//            if (wrkMast != null && ((wrkMast.getIoType() > 100 && wrkMast.getIoType() < 200) || wrkMast.getIoType() == 11)) {
//                //出库任务,不检测首节点
//                int[] startArr = NavigatePositionConvert.positionToXY(wrkMast.getSourceLocNo());//开始节点
//                whiteList.add(startArr);
//            }
//
//            //解锁过路径,只检测下一段路径是否可走(当前路径已经被锁定无需再检测)
//            if (isLock) {
//                //只检测下一段路径是否可走(当前路径已经被锁定无需再检测)
//                //检测路径是否可行走
//                if (!checkPath(nextNodes == null ? command.getNodes() : nextNodes, null, whiteList)) {
//                    return false;
//                }
//            }else {
//                //检测当前路径和下一段路径
//                //检测路径是否可行走
//                if (!checkPath(command.getNodes(), nextNodes, whiteList)) {
//                    return false;
//                }
//            }
//
//            //锁定路径,锁定当前路径和下一步路径
//            List<NavigateNode> nodes = command.getNodes();
//            if (nextNodes != null) {
//                nodes.addAll(nextNodes);
//            }
//            if (nodes != null) {
//                boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), nodes, true);//所使用的路径进行锁定禁用
//                if (!result) {
//                    return false;//路径锁定失败
//                }
//            }
//        }
        //可执行命令
        if (!write(command, assignCommand)) {