999
zhangc
2025-04-17 6c467481fdaccead755bb803224c555b42e5579b
999
10个文件已修改
176 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkMastService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/NoLiftOutServiceImpl.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WrkMastScheduler.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/NyLiftThread.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -55,6 +55,9 @@
    WrkMast selectShuttleWorking(@Param("shuttleNo") Integer shuttleNo);//是否有穿梭车任务(移库任务除外)
    WrkMast selectShuttleWorking2(@Param("shuttleNo") Integer shuttleNo, @Param("wrkNo") Integer wrkNo, @Param("wrkNo2") Integer wrkNo2);//是否有穿梭车任务(移库任务除外)
    WrkMast selectByBarcode(String barcode);
    List<WrkMast> selectInWrkMastByLiftNo(Integer liftNo);//搜索指定提升机的入库任务
src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -13,6 +13,8 @@
    WrkMast selectByShuttleNo(Integer shuttleNo);
    WrkMast selectShuttleWorking2(Integer shuttleNo, Integer wrkNo, Integer wrkNo2);
    Boolean judgeInbound(WrkMast wrkMast);
    //查询指定楼层待分配车辆的任务
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -101,11 +101,6 @@
    private BasWrkStatusService wrkStatusService;
    public static List<Integer> staNosIn = new ArrayList<Integer>() {{
        add(1015);
        add(1026);
    }};
    private boolean isInEnable(DevpThread devpThread, Integer staNo) {
        if (staNo == null) {
            return false;
@@ -290,7 +285,7 @@
                    if (liftWrkMast != null) {
                        if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同
                            News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), 1);
                            return;
                            continue;
                        }
                    }
                    wrkMast.setLiftNo(1);
@@ -302,24 +297,24 @@
                String locNo = "1200301";
                if (wrkMast.getStaNo() == 1025) {
                if (wrkMast.getStaNo() == 1026) {
                    locNo = "1200305";
                }
                boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_DEVP");
                if (!dispatchShuttle) {
                    News.info("{}任务,调度小车失败", wrkMast.getWrkNo());
                    return;
                    continue;
                } else {
                    News.info("{}任务,调度小车失成功", wrkMast.getWrkNo());
                }
                wrkMast.setWrkSts(WrkStsType.INBOUND_SHUTTLE_RUN.sts);
                wrkMast.setLiftNo(null);
                wrkMast.setSystemMsg("");//清空消息
                wrkMast.setModiTime(new Date());
                if (wrkMastService.updateById(wrkMast)) {
                    return;
                if (!wrkMastService.updateById(wrkMast)) {
                    News.info("{}任务,更新工作档失败", wrkMast.getWrkNo());
                }
            }
        }
    }
@@ -332,21 +327,21 @@
        List<WrkMast> wrkSts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.NEW_OUTBOUND.sts).in("sta_no", 1013, 1024));
        for (WrkMast wrkMast : wrkSts) {
            if (devpThread == null) {
                return;
                continue;
            }
            Map<Integer, StaProtocol> station = devpThread.getStation();
            StaProtocol staProtocol = station.get(wrkMast.getStaNo());
            if (staProtocol == null) {
                return;
                continue;
            }
            if (!staProtocol.isAutoing()) {
                News.info("{}任务,{}站点,不在自动状态", wrkMast.getWrkNo(), staProtocol.getSiteId());
                return;
                continue;
            }
            if (!staProtocol.isOutEnable()) {
                News.info("{}任务,{}站点,没有可出信号", wrkMast.getWrkNo(), staProtocol.getSiteId());
                return;
                continue;
            }
            String locNo = "1200301";
            if (wrkMast.getStaNo() == 1024) {
@@ -355,7 +350,7 @@
            boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), locNo, "TRANSPORT_DEVP");
            if (!dispatchShuttle) {
                News.info("{}任务,调度小车失败", wrkMast.getWrkNo());
                return;
                continue;
            } else {
                News.info("{}任务,无提升机处调度小车成功", wrkMast.getWrkNo());
            }
@@ -363,8 +358,11 @@
            wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);
            wrkMast.setSystemMsg("");//清空消息
            wrkMast.setModiTime(now);
            if (wrkMastService.updateById(wrkMast)) {
                return;
            if (!wrkMastService.updateById(wrkMast)) {
                News.info("{}任务,更新工作档失败", wrkMast.getWrkNo());
            } else {
                WrkMast wrkMast1 = wrkMastService.selectByMainWrkNo(wrkMast.getWrkNo());
                News.info("{}任务,移动任务生成成功——1", wrkMast1.getWrkNo());
            }
        }
    }
@@ -834,7 +832,6 @@
            boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
            wrkMast.setWrkSts(WrkStsType.INBOUND_DEVICE_RUN.sts);
            wrkMast.setLiftNo(1);
            wrkMast.setSystemMsg("");//清空消息
            wrkMast.setModiTime(now);
            if (wrkMastService.updateById(wrkMast)) {
@@ -909,19 +906,42 @@
                News.info("{}任务,{}站点,无托盘", wrkMast.getWrkNo(), staProtocol.getSiteId());
                return false;
            }
            if (sourceStaNo == 1023) {
                if (staProtocol.getFinishWorkNo().intValue() != wrkMast.getWrkNo()) {
                    News.info("{}任务,{}站点,任务号不一致", wrkMast.getWrkNo(), staProtocol.getSiteId());
                    return false;
                }
                if (!station.get(1022).getBarcode().equals(wrkMast.getBarcode())) {
                    News.info("{}任务,{}站点,托盘码不匹配,站点托盘码:{},任务托盘码:{}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode());
                    return false;
                }
            } else {
                if (staProtocol.getWorkNo().intValue() != wrkMast.getWrkNo()) {
                    News.info("{}任务,{}站点,任务号不一致", wrkMast.getWrkNo(), staProtocol.getSiteId());
                    return false;
                }
                if (!staProtocol.getBarcode().equals(wrkMast.getBarcode())) {
                    News.info("{}任务,{}站点,托盘码不匹配,站点托盘码:{},任务托盘码:{}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode());
                    return false;
                }
            }
            if (staProtocol.getWorkNo().intValue() != wrkMast.getWrkNo()) {
                News.info("{}任务,{}站点,任务号不一致", wrkMast.getWrkNo(), staProtocol.getSiteId());
            String locNo = "0200305";
            if (wrkMast.getSourceStaNo() == 1012) {
                locNo = "0200301";
            }
            boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_LIFT");
            if (!dispatchShuttle) {
                News.info("{}任务,调度小车失败", wrkMast.getWrkNo());
                return false;
            }
            if (!staProtocol.getBarcode().equals(wrkMast.getBarcode())) {
                News.info("{}任务,{}站点,托盘码不匹配,站点托盘码:{},任务托盘码:{}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode());
                return false;
            int lev = 105;
            if (wrkMast.getSourceStaNo() == 1012) {
                lev = 101;
            }
            //获取提升机命令
            List<LiftCommand> liftCommands = liftThread.getPalletInCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), 101);
            List<LiftCommand> liftCommands = liftThread.getPalletInCommand(wrkMast.getWrkNo(), sourceStaNo, lev);
            LiftCommand liftCommand = liftCommands.get(0);
            int deviceWrk = commonService.getWorkNo(8);//生成提升机设备工作号
@@ -981,15 +1001,15 @@
                News.info("{}任务,{}号提升机,提升机内无托盘,禁止派发", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
                return false;
            }
            String locNo = "0200305";
            if (wrkMast.getStaNo() == 1011) {
                locNo = "0200301";
            }
            boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_LIFT");
            if (!dispatchShuttle) {
                News.info("{}任务,调度小车失败", wrkMast.getWrkNo());
                return false;
            }
//            String locNo = "0200305";
//            if (wrkMast.getStaNo() == 1011) {
//                locNo = "0200301";
//            }
//            boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_LIFT");
//            if (!dispatchShuttle) {
//                News.info("{}任务,调度小车失败", wrkMast.getWrkNo());
//                return false;
//            }
            wrkMast.setWrkSts(WrkStsType.INBOUND_SHUTTLE_RUN.sts);
            // TODO 测试中发现不能解禁,因为提升机里存在托盘,就不能解禁,不然另一辆小车可能会近提升机
@@ -1541,7 +1561,7 @@
            Map<Integer, StaProtocol> station = devpThread.getStation();
            WrkMast wrkMast = null;
            for (StaProtocol staProtocol : station.values()) {
                if (staProtocol.getSiteId() == 1013 || staProtocol.getSiteId() == 1014) {
                if (staProtocol.getSiteId() == 1013 || staProtocol.getSiteId() == 1024) {
                    wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getFinishWorkNo()).eq("wrk_sts", WrkStsType.OUTBOUND_DEVP_RUN.sts));
                    if (wrkMast != null) {
                        wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java
@@ -139,12 +139,12 @@
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线无物", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
                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 (!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());
@@ -841,12 +841,11 @@
                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().equals(wrkMast.getWrkNo())) {
                log.error("{}任务,{}号输送线的工作号和工作档不匹配", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线的工作号和工作档不匹配", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
                return false;
            }
            if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) {
                return false;
src/main/java/com/zy/asrs/service/impl/NoLiftOutServiceImpl.java
@@ -144,12 +144,13 @@
            }
            int lev = Utils.getLev(wrkMast.getLocNo());
            StaProtocol staProtocol2 = devpThread.getStation().get(lev == 1 ? 1014 : 1025);
            //TODO
//            if (!staProtocol2.isOutEnable()) {
//                log.error("{}任务,{}号输送线不可出", wrkMast.getWrkNo(), lev == 1 ? 1014 : 1025);
//                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线不可出", wrkMast.getWrkNo(), lev == 1 ? 1014 : 1025);
//                return false;
//            }
            if (!staProtocol2.isOutEnable()) {
                log.error("{}任务,{}号输送线不可出", wrkMast.getWrkNo(), lev == 1 ? 1014 : 1025);
                News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号输送线不可出", wrkMast.getWrkNo(), lev == 1 ? 1014 : 1025);
                return false;
            }
            StaProtocol staProtocol = devpThread.getStation().get(lev == 1 ? 1015 : 1026);
            if (staProtocol.isLoading()) {
                log.error("{}任务,{}号输送线有物", wrkMast.getWrkNo(), wrkMast.getSourceStaNo());
@@ -216,7 +217,7 @@
            //获取穿梭车最近且空闲的提升机
            LiftThread liftThread = LiftUtils.getRecentLift(shuttleProtocol.getCurrentLocNo());
            if (liftThread == null) {
                News.info("{}号小车,{}目标库位,没有可用空闲提升机", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
                News.info("{}号小车,{}小车库位,没有可用空闲提升机", shuttleProtocol.getShuttleNo(), shuttleProtocol.getCurrentLocNo());
                return false;//没有可用且空闲的提升机
            }
@@ -302,6 +303,18 @@
                }
                liftProtocol = liftThread.getStatus();
                //判断提升机内是否有小车
                if (liftProtocol.getHasCar()) {
                    News.info("{}任务,{}号提升机,提升机内有小车,禁止派发", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
                    return false;
                }
                //判断提升机内是否有托盘
                if (liftProtocol.getHasTray()) {
                    News.info("{}任务,{}号提升机,提升机内有托盘,禁止派发", wrkMast.getWrkNo(), liftProtocol.getLiftNo());
                    return false;
                }
                if (liftProtocol == null) {
                    News.info("{}号提升机对象不存在", wrkMast.getLiftNo());
                    return false;
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -122,6 +122,11 @@
    }
    @Override
    public WrkMast selectShuttleWorking2(Integer shuttleNo,Integer wrkNo,Integer wrkNo2) {
        return this.baseMapper.selectShuttleWorking2(shuttleNo,wrkNo,wrkNo2);
    }
    @Override
    public WrkMast selectByShuttleNo(Integer shuttleNo) {
        return this.baseMapper.selectByShuttleNo(shuttleNo);
    }
src/main/java/com/zy/asrs/task/WrkMastScheduler.java
@@ -212,8 +212,6 @@
                if (!wrkMastService.updateById(main)) {
                    log.info("更新主工作档[workNo={}]失败", wrkMast.getWrkNo());
                }
            } else {
                log.info("找不到主工作档[workNo={},mainWorkNo={}]失败", wrkMast.getWrkNo(), wrkMast.getMainWrkNo());
            }
            // 保存工作主档历史档
            if (!wrkMastLogService.save(wrkMast.getWrkNo())) {
src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
@@ -402,13 +402,13 @@
        }
        //判断是否有其他任务正在使用穿梭车
        WrkMast wrkMast2 = wrkMastService.selectShuttleWorking(shuttleNo);
        WrkMast wrkMast2 = wrkMastService.selectShuttleWorking2(shuttleNo, wrkNo, mainWrkMast != null ? mainWrkMast.getMainWrkNo() : null);
        if (wrkMast2 != null && !disableCheck) {//小车存在其他工作档任务,等待执行完成后再生成新的任务
            if (mainWrkMast == null) {
                News.info("{}号小车,存在其他工作档任务,等待执行完成再生成新的任务", shuttleNo);
                return false;
            } else {
                if (!mainWrkMast.getShuttleNo().equals(shuttleNo)) {
                if (mainWrkMast.getShuttleNo() != null && !mainWrkMast.getShuttleNo().equals(shuttleNo)) {
                    News.info("{}号小车,存在其他工作档任务,等待执行完成再生成新的任务", shuttleNo);
                    return false;
                }
src/main/java/com/zy/core/thread/impl/NyLiftThread.java
@@ -59,6 +59,8 @@
        put(7, 107);
        put(8, 108);
        put(9, 109);
        put(10, 1023);
        put(11, 1032);
    }};
    public static final HashMap<Integer, List<String>> liftNodeMap = new HashMap<Integer, List<String>>() {{
src/main/resources/mapper/WrkMastMapper.xml
@@ -189,6 +189,20 @@
        order by io_pri desc, io_time, wrk_no asc limit 0,1
    </select>
    <select id="selectShuttleWorking2" resultMap="BaseResultMap">
        select *
        from asr_wrk_mast
        where 1 = 1
          and shuttle_no = #{shuttleNo}
        <if test="wrkNo !=null">
            and wrk_no != #{wrkNo}
        </if>
        <if test="wrkNo2 !=null">
            and wrk_no != #{wrkNo2}
        </if>
        order by io_pri desc, io_time, wrk_no asc limit 0,1
    </select>
    <select id="selectByBarcode" resultMap="BaseResultMap">
        select *
        from asr_wrk_mast