#
zc
2025-04-29 62b1f39e60f64ec4e05b21d11af3e36f5891a91a
src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java
@@ -64,15 +64,16 @@
    /**
     * 从没有提升机侧入库,有两种情况,一种入库到同层,一种入库到不同层,则需要提升机
     *
     * @param wrkMast
     */
    public void shuttleMoveExecute(WrkMast wrkMast) {
    public void shuttleMoveExecute(WrkMast wrkMast, Integer staNo, Integer lev) {
        boolean stepMoveSta = this.shuttleMoveExecuteTransportLiftStepCallShuttle(wrkMast);//小车迁移-呼叫小车至取货点
        if (!stepMoveSta) {
            return;
        }
        //判断目标库位是否在1层或5层
        if (Utils.getLev(wrkMast.getLocNo()) == 1 || Utils.getLev(wrkMast.getLocNo()) == 5) {
        if ((lev == 1 && staNo == 1015) || (lev == 5 && staNo == 1026)) {
            //直接入库
            boolean stepMoveLoc = this.shuttleMoveExecuteStepMoveLoc(wrkMast);//小车移动到目标库位中
            if (!stepMoveLoc) {
@@ -133,18 +134,19 @@
            if (devpThread == null) {
                return false;
            }
            StaProtocol staProtocol = devpThread.getStation().get(Utils.getLev(wrkMast.getSourceLocNo()) == 1 ? 1015 : 1026);
            if (!staProtocol.isLoading() || !staProtocol.isAutoing()) {
                log.info("{}任务,{}号输送线无物", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线无物", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
                return false;
            WrkMast wrkMast1 = wrkMastService.selectByWorkNo(wrkMast.getMainWrkNo());
            if (wrkMast1 != null) {
                StaProtocol staProtocol = devpThread.getStation().get(wrkMast1.getStaNo());
                if (!staProtocol.isLoading() || !staProtocol.isAutoing()) {
                    News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线无物或非自动", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
                    return false;
                }
                if (staProtocol.getFinishWorkNo() != null && staProtocol.getFinishWorkNo().intValue() != wrkMast.getMainWrkNo()) {
                    News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线的工作号和工作档不匹配", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
                    return false;
                }
            }
            //TODO
//            if (!staProtocol.getFinishWorkNo().equals(wrkMast.getWrkNo())) {
//                            log.info( "{}任务,{}号输送线的工作号和工作档不匹配", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
//                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线的工作号和工作档不匹配", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
//                return false;
//            }
            //小车处于空闲状态
            if (!shuttleThread.isIdle()) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}小车,小车忙碌中", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
@@ -305,7 +307,7 @@
                }
                //判断提升机是否有其他任务(该任务需要换层必须提前独占提升机)
                WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo());
                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());
@@ -333,7 +335,7 @@
            }
            //判断提升机是否有其他任务
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo());
            if (liftWrkMast != null) {
                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同
                    News.info("{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo());
@@ -438,14 +440,7 @@
                return false;
            }
            //判断提升机是否有其他任务
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
            if (liftWrkMast != null) {
                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同
                    News.info("{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo());
                    return false;//当前提升机存在未完成任务,等待下一次轮询
                }
            }
            if (!liftThread.isIdle()) {
                News.info("{}任务,{}号提升机,提升机忙碌中,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo());
@@ -473,11 +468,11 @@
            }
            //判断提升机是否有其他任务
            WrkMast w = wrkMastService.selectLiftWrkMast(1);
            if (w != null) {
                if (!w.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同
                    News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在别的绑定任务ru,禁止派发", wrkMast.getWrkNo(), 1);
                    return false;
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo());
            if (liftWrkMast != null) {
                if (!liftWrkMast.getWrkNo().equals(wrkMast.getMainWrkNo())) {//提升机任务和当前任务不相同
                    News.info("{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo());
                    return false;//当前提升机存在未完成任务,等待下一次轮询
                }
            }
@@ -488,7 +483,7 @@
            assignCommand.setAuto(true);//自动模式
            //获取小车到提升机行走命令
            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
            List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.DFX.id, assignCommand, shuttleThread);
            if (commands == null) {
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}小车,路径计算失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
                return false;
@@ -541,7 +536,7 @@
            }
            //判断提升机是否有其他任务
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo());
            if (liftWrkMast != null) {
                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同
                    News.info("{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo());
@@ -632,7 +627,7 @@
            }
            //判断提升机是否有其他任务
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo());
            WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(1, wrkMast.getWrkNo(), wrkMast.getMainWrkNo());
            if (liftWrkMast != null) {
                if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同
                    News.info("{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo());
@@ -837,16 +832,15 @@
            }
            StaProtocol staProtocol = devpThread.getStation().get(Utils.getLev(wrkMast.getSourceLocNo()) == 1 ? 1015 : 1026);
            if (!staProtocol.isLoading()) {
                log.error("{}任务,{}号输送线无物", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线无物", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
                //log.error("{}任务,{}号输送线无物", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线无物或非自动", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
                return false;
            }
            //TODO
//            if (!staProtocol.getFinishWorkNo().equals(wrkMast.getWrkNo())) {
//                log.error("{}任务,{}号输送线的工作号和工作档不匹配", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
//                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线的工作号和工作档不匹配", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
//                return false;
//            }
            if (staProtocol.getFinishWorkNo() != null && staProtocol.getFinishWorkNo().intValue() != wrkMast.getMainWrkNo()) {
                //log.error("{}任务,{}号输送线的工作号和工作档不匹配", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线的工作号和工作档不匹配", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
                return false;
            }
            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
                return false;
@@ -861,7 +855,7 @@
            assignCommand.setLocNo(wrkMast.getLocNo());//目标库位
            List<ShuttleCommand> commands = new ArrayList<>();
            Integer mapType = NavigationMapType.NORMAL.id;
            Integer mapType = NavigationMapType.DFX.id;
            List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread);
            if (moveCommands == null) {