zc
2025-05-06 d983b88916d7489aa154984b67e1bcfb2f13f5d1
解决待机位和提升机互锁问题
3个文件已修改
44 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1104,12 +1104,13 @@
                return false;
            }
            //判断提升机是否有其他任务(该任务需要换层必须提前独占提升机)
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo());
            if (liftWrkMast != null) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
                return false;//当前提升机存在未完成任务,等待下一次轮询
            }
//            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo());
//            if (liftWrkMast != null) {
//                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
//                return false;//当前提升机存在未完成任务,等待下一次轮询
//            }
            //判断提升机内是否有小车
            if (liftProtocol.getHasCar()) {
@@ -1203,8 +1204,18 @@
            assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());
            assignCommand.setTaskMode(LiftCommandModeType.PALLET_IN.id.shortValue());
            //判断提升机是否有其他任务(该任务需要换层必须提前独占提升机)
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo());
            if (liftWrkMast != null) {
                if (liftWrkMast != null && !wrkMast.getMainWrkNo().equals(liftWrkMast.getWrkNo())) {
                    News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
                    return false;//当前提升机存在未完成任务,等待下一次轮询
                }
            }
            wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN.sts);
            wrkMast.setLiftNo(liftProtocol.getLiftNo());//提前锁定提升机
            //wrkMast.setLiftNo(liftProtocol.getLiftNo());//提前锁定提升机
            wrkMast.setSystemMsg("");//清空消息
            wrkMast.setModiTime(now);
            if (wrkMastService.updateById(wrkMast)) {
src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java
@@ -220,6 +220,16 @@
                 News.taskInfo(wrkMast.getWrkNo(),"{}号提升机对象不存在", wrkMast.getLiftNo());
                return false;
            }
            //判断提升机是否有其他任务(该任务需要换层必须提前独占提升机)
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo());
            if (liftWrkMast != null) {
                if (liftWrkMast != null && !wrkMast.getMainWrkNo().equals(liftWrkMast.getWrkNo())) {
                    News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
                    return false;//当前提升机存在未完成任务,等待下一次轮询
                }
            }
            //当1011入库,托盘在提升机里,1014也在入库,待机位被1014占住,去提升机里的任务,小车会卡住
            if (liftProtocol.getHasTray() && liftProtocol.getLev() == 1 && wrkMast.getStaNo() != null && wrkMast.getStaNo() == 1015) {
                 News.taskInfo(wrkMast.getWrkNo(),"{}任务,{}号提升机,提升机内有托盘且在1层需要小车去接,就不要占住待机位,禁止派发", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
@@ -260,6 +270,10 @@
            assignCommand.setCommands(commands);
            wrkMast.setLiftNo(liftProtocol.getLiftNo());//提前锁定提升机
            wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_3.sts);//小车移动到待机点
            wrkMast.setModiTime(now);
            wrkMast.setSystemMsg("");//清空消息
src/main/java/com/zy/core/MainProcess.java
@@ -47,7 +47,6 @@
                    mainService.generateInboundWrk();
                    mainService.noLiftIn();
                    // 间隔
                    Thread.sleep(50);
                    // 出库
                    mainService.outFirst();
                    mainService.stnToOutStn();//输送线
@@ -62,15 +61,12 @@
                    //提升机入库任务
                    mainService.liftInExecute();
                    // 间隔
                    Thread.sleep(50);
                    //提升机出库任务
                    mainService.liftOutExecute();
                    // 间隔
                    Thread.sleep(50);
                    //四向穿梭车任务完成
                    mainService.shuttleFinished();
                    // 间隔
                    Thread.sleep(50);
                    //执行移库任务
                    mainService.shuttleLocMoveExecute();
//                    //货叉提升机任务
@@ -82,7 +78,6 @@
                    //提升机任务完成
                    mainService.liftFinished();
                    // 间隔
                    Thread.sleep(50);
                    //执行小车移动任务
                    mainService.shuttleMoveExecute();
                    // 异常信息记录
@@ -99,7 +94,7 @@
                    }
                    // 间隔
                    Thread.sleep(200);
                    Thread.sleep(300);
                } catch (Exception e) {
                    e.printStackTrace();
                }