自动化立体仓库 - WCS系统
#
luxiaotao1123
2022-10-25 a315e29b913babd2e6f8005e2af75ae8484751aa
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -695,18 +695,6 @@
            }
            // 检测是否存在出库任务
//            WrkMast pakoutWrkMast = wrkMastMapper.selectPakout(slave.getId(), null);
//            if (null != pakoutWrkMast) {
//                if ((pakoutWrkMast.getIoType() == 103 || pakoutWrkMast.getIoType() == 104 || pakoutWrkMast.getIoType() == 107)
//                        && pakoutWrkMast.getWrkSts() == 17
//                        && basDevpService.selectByWrkNo(pakoutWrkMast.getWrkNo()) != null
//                ) {
//
//                } else {
//                    log.error("{}入库任务无法作业,因存在出库中任务!", wrkMast.getWrkNo());
//                    continue;
//                }
//            }
            if (null != wrkMastMapper.selectPakout(slave.getId(), null)) {
                log.error("{}入库任务无法作业,因存在出库中任务!", wrkMast.getWrkNo());
                continue;
@@ -716,6 +704,7 @@
            wrkMast.setIoPri((double) 9999);
            wrkMastMapper.updateById(wrkMast);
            // 判断是否为穿梭库
            if (!locMastService.isShuttle(wrkMast.getLocNo())) {
                // 非穿梭库入库 【 堆垛机直接入库 】
@@ -734,17 +723,17 @@
                        switch (shallowLoc.getLocSts()) {
                            case "P":
                            case "R": {
                                WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                                if (null == waitWrkMast || (waitWrkMast.getIoType() == 101 && waitWrkMast.getWrkSts() >= 14L)) {
                                WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo);
                                if (null == waitWrkMast) {
                                    log.error("{}库位异常,未检索到相应工作档!", shallowLocNo);
                                } else {
                                    waitWrkMast.setIoPri(15D);
                                    if (waitWrkMast.getWrkSts() < 17) {
                                        waitWrkMast.setIoPri(20D);
                                    waitWrkMast.setModiTime(new Date());
                                    if (wrkMastMapper.updateById(waitWrkMast) == 0) {
                                        log.error("调整工作档优先级失败!工作号={}", waitWrkMast.getWrkNo());
                                    }
                                    //20220719 Add,如果浅库位状态为P/R,工作状态为14/15,说明浅库位已经空了,可以执行入库任务
                                    if (waitWrkMast.getWrkSts() < 14L) {
                                        continue;
                                    }
                                }
@@ -755,15 +744,15 @@
                                // 此标记避免多次执行移库任务
                                if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
                                    wrkMast.setUpdMk("Y");
                                    wrkMast.setIoPri(14D);
                                    wrkMast.setIoPri(20D);
                                    wrkMastMapper.updateById(wrkMast);
                                    // 生成工作档、改变浅库位的源库/目标库 库位状态、下发堆垛机命令(立马执行)
                                    moveLocForDeepLoc(slave, shallowLoc);
                                }
                                continue;
                            case "Q": {
                                WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                                if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
                                WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo);
                                if (null != waitWrkMast && waitWrkMast.getWrkSts() == 9) {
                                    continue;
                                }
                                break;
@@ -1799,6 +1788,20 @@
                if (wrkMast.getIoType() != 11) {
                    // 入库 ==>> 货物搬入库
                    if (wrkMast.getWrkSts() == 7){
                        if (!locMastService.isShuttle(wrkMast.getLocNo())) {
                            // ==> 9.入库完成
                            wrkMast.setWrkSts(9L);
                            Date now = new Date();
                            wrkMast.setCrnEndTime(now);
                            wrkMast.setModiTime(now);
                            // 修改成功后复位堆垛机
                            if (wrkMastMapper.updateById(wrkMast) > 0) {
                                // 堆垛机复位
                                crnThread.setResetFlag(true);
                            } else {
                                log.error("修改工作档状态 7.吊车入库中 => 9.入库完成 失败!!,工作号={}", wrkMast.getWrkNo());
                            }
                        } else {
                        // 判断是否需要小车入库
                        if (locMastService.isOutMost(wrkMast.getLocNo())) {
                            // ==> 9.入库完成
@@ -1842,6 +1845,7 @@
                                }
                            }
                        }
                        }
                        // 入库 ===>> 迁入小车 完成
                    } else if (wrkMast.getWrkSts() == 4) {
                        // 4.迁入小车 ==> 6.小车待入