#
luxiaotao1123
2022-03-11 de92c7f5e4643f678febef20435473f8c619b3d0
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -735,7 +735,7 @@
    }
    /**
     * 入库  ===>>  堆垛机搬入小车
     * 入出库  ===>>  堆垛机搬入小车
     */
    public void carMoveIn(WrkMast wrkMast, Integer steNo, CrnProtocol crnProtocol) {
        // 获取堆垛机信息
@@ -746,6 +746,7 @@
            // 堆垛机空闲
            if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) {
                LocMast locMast;
                // 入库搬
                if (wrkMast.getWrkSts() <= 10) {
                    locMast = locMastService.selectById(wrkMast.getLocNo());
                    // 堆垛机命令下发区 --------------------------------------------------------------------------
@@ -772,7 +773,33 @@
                            log.error("修改工作档状态 3.小车待搬 => 4.迁入小车 失败!!,工作号={}", wrkMast.getWrkNo());
                        }
                    }
                // 出库搬
                } else {
                    locMast = locMastService.selectById(wrkMast.getSourceLocNo());
                    // 堆垛机命令下发区 --------------------------------------------------------------------------
                    CrnCommand crnCommand = new CrnCommand();
                    crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 堆垛机编号
                    crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
                    crnCommand.setAckFinish((short) 0);  // 任务完成确认位
                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转
                    crnCommand.setSourcePosX(steProtocol.getRow());     // 源库位排
                    crnCommand.setSourcePosY(steProtocol.getBay());     // 源库位列
                    crnCommand.setSourcePosZ(steProtocol.getLev());     // 源库位层
                    crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue());     // 目标库位排
                    crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 目标库位列
                    crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 目标库位层
                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                        log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                    } else {
                        // 修改工作档状态 12.小车待搬 => 13.迁入小车
                        Date now = new Date();
                        wrkMast.setWrkSts(13L);
                        wrkMast.setCrnStrTime(now);
                        wrkMast.setModiTime(now);
                        if (wrkMastMapper.updateById(wrkMast) == 0) {
                            log.error("修改工作档状态 12.小车待搬 => 13.迁入小车 失败!!,工作号={}", wrkMast.getWrkNo());
                        }
                    }
                }
            }
@@ -985,7 +1012,7 @@
                            }
                        }
                        // 堆垛机搬运小车
                        if (wrkMast.getWrkSts() == 3L) {
                        if (wrkMast.getWrkSts() == 12L) {
                            this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
                        }
                    }
@@ -1066,43 +1093,6 @@
    /**
     * 堆垛机针对于小车迁移工作的完成
     */
    @Async
    public void carMoveFinished() {
        for (CrnSlave crn : slaveProperties.getCrn()) {
            // 获取堆垛机信息
            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
            if (crnProtocol == null) { continue; }
            //  状态:等待确认 并且  任务完成位 = 1
            if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
                // 获取入库待确认工作档
                WrkMast wrkMast = wrkMastMapper.selectPakInStep45(crnProtocol.getTaskNo().intValue());
                if (wrkMast == null) {
                    log.error("堆垛机处于等待确认且任务完成状态,但未找到工作档。堆垛机号={},工作号={}", crn.getId(), crnProtocol.getTaskNo());
                    continue;
                }
                // 入库 + 库位转移  ==> 6.小车待入
                if ((wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 5) || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)){
                    wrkMast.setWrkSts(6L);
                } else  {
                    continue;
                }
                Date now = new Date();
                wrkMast.setCrnEndTime(now);
                wrkMast.setModiTime(now);
                // 修改成功后复位堆垛机
                if (wrkMastMapper.updateById(wrkMast) > 0) {
                    // 堆垛机复位
                    crnThread.setResetFlag(true);
                }
            }
        }
    }
    /**
     * 执行对工作档的完成操作
     */
    @Async
@@ -1167,7 +1157,7 @@
                            }
                        }
                    }
                // 迁入小车 完成
                // 入库 ===>> 迁入小车 完成
                } else if (wrkMast.getWrkSts() == 4) {
                    // 4.迁入小车 ==> 6.小车待入
                    wrkMast.setWrkSts(6L);
@@ -1181,7 +1171,7 @@
                    } else {
                        log.error("修改工作档状态 4.迁入小车 => 6.小车待入 失败!!,工作号={}", wrkMast.getWrkNo());
                    }
                // 迁出小车 完成
                // 入库 ===>> 迁出小车 完成
                } else if (wrkMast.getWrkSts() == 5) {
                    // 5.迁出小车 ==> 6.小车待入
                    wrkMast.setWrkSts(6L);
@@ -1194,6 +1184,20 @@
                        crnThread.setResetFlag(true);
                    } else {
                        log.error("修改工作档状态 5.迁出小车 => 6.小车待入 失败!!,工作号={}", wrkMast.getWrkNo());
                    }
                // 出库 ===>> 迁入小车 完成
                } else if (wrkMast.getWrkSts() == 13) {
                    // 13.迁入小车 ==> 14.小车搬出库
                    wrkMast.setWrkSts(14L);
                    Date now = new Date();
                    wrkMast.setCrnEndTime(now);
                    wrkMast.setModiTime(now);
                    // 修改成功后复位堆垛机
                    if (wrkMastMapper.updateById(wrkMast) > 0) {
                        // 堆垛机复位
                        crnThread.setResetFlag(true);
                    } else {
                        log.error("修改工作档状态 13.迁入小车 ==> 14.小车搬出库 失败!!,工作号={}", wrkMast.getWrkNo());
                    }
                }
            }
@@ -1212,7 +1216,7 @@
            if (steProtocol == null) { continue; }
            if (steProtocol.getStatusType().equals(SteStatusType.WAITING) && steProtocol.getTaskNo() != 0) {
                // 查询是否有待入库的任务
                WrkMast wrkMast = wrkMastMapper.selectPakInStep8(steProtocol.getSteNo().intValue());
                WrkMast wrkMast = wrkMastMapper.selectCarWaiting(steProtocol.getTaskNo());
                if (wrkMast == null) { continue; }
                switch (wrkMast.getWrkSts().intValue()) {
@@ -1236,6 +1240,16 @@
                            steThread.setResetFlag(true);
                        }
                        break;
                    case 11:
                        // 修改工作档状态 11.生成出库ID => 12.小车待搬
                        wrkMast.setWrkSts(12L);
                        wrkMast.setModiTime(now);
                        if (wrkMastMapper.updateById(wrkMast) == 0) {
                            log.error("修改工作档状态 11.生成出库ID => 12.小车待搬 失败!!,工作号={}", wrkMast.getWrkNo());
                        } else {
                            steThread.setResetFlag(true);
                        }
                        break;
                    case 14:
                        // 修改工作档状态 14.小车搬出库 => 15.等待吊车
                        wrkMast.setWrkSts(15L);