自动化立体仓库 - WCS系统
#
Junjie
5 天以前 e2cbfe96c6dea03c15bbb8ea8c7af320242a5d19
#
2个文件已修改
62 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -179,14 +179,14 @@
                return false;
            }
//            //检测障碍物车
//            boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
//                add(shuttleProtocol.getShuttleNo());
//            }});
//            if (checkObstacle) {
//                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
//                return false;
//            }
            //检测障碍物车
            boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{
                add(shuttleProtocol.getShuttleNo());
            }});
            if (checkObstacle) {
                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
                return false;
            }
            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 四向穿梭车编号
@@ -350,14 +350,14 @@
                return false;
            }
//            //检测障碍物车
//            boolean checkObstacle = shuttleOperaUtils.checkObstacle(liftSta.getLocNo(), new ArrayList<Integer>() {{
//                add(shuttleProtocol.getShuttleNo());
//            }});
//            if (checkObstacle) {
//                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
//                return false;
//            }
            //检测障碍物车
            boolean checkObstacle = shuttleOperaUtils.checkObstacle(liftSta.getLocNo(), new ArrayList<Integer>() {{
                add(shuttleProtocol.getShuttleNo());
            }});
            if (checkObstacle) {
                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
                return false;
            }
            ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
            assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 四向穿梭车编号
@@ -576,8 +576,8 @@
                return false;
            }
//            commands.add(0, liftCommand.get(0));
//            commands.add(liftCommand2.get(0));
            commands.add(0, liftCommand.get(0));
            commands.add(liftCommand2.get(0));
            assignCommand.setCommands(commands);
            wrkMast.setWrkSts(WrkStsType.LOC_MOVE_SHUTTLE_RUN.sts);//小车搬运中  501.生成移库任务 ==> 502.小车搬运中
@@ -1384,14 +1384,14 @@
                return false;
            }
//            //检测障碍物车
//            boolean checkObstacle = shuttleOperaUtils.checkObstacle(basShuttleCharge.getWaitLocNo(), new ArrayList<Integer>() {{
//                add(shuttleProtocol.getShuttleNo());
//            }});
//            if (checkObstacle) {
//                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
//                return false;
//            }
            //检测障碍物车
            boolean checkObstacle = shuttleOperaUtils.checkObstacle(basShuttleCharge.getWaitLocNo(), new ArrayList<Integer>() {{
                add(shuttleProtocol.getShuttleNo());
            }});
            if (checkObstacle) {
                News.info("{}任务,避障范围有小车,等待障碍小车调离中", wrkMast.getWrkNo());
                return false;
            }
            //调度小车去待机位
            boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), basShuttleCharge.getWaitLocNo(), wrkMast.getShuttleNo());
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -260,13 +260,15 @@
                continue;
            }
            HashMap<String, Integer> carMap = findCarMap();
            String targetLocNo = null;
            for (NavigateNode node : outerNodes) {
                String dispatchLocNo = NavigatePositionConvert.nodeToLocNo(node);
                if (carMap.containsKey(dispatchLocNo)) {
                    continue;
                //获取内圈节点
                List<NavigateNode> avoidInnerNodes = getInnerNodes(dispatchLocNo, innerCircle, new ArrayList<>());
                //计算内圈是否有小车
                List<Integer> avoidNodesCar = findNodesCar(avoidInnerNodes);
                if(!avoidNodesCar.isEmpty()) {
                   continue;
                }
                targetLocNo = dispatchLocNo;
                break;