自动化立体仓库 - WCS系统
#
luxiaotao1123
2020-08-11 4c362043cec8a44787a4658b0e09638a3baf2bc0
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -383,11 +383,14 @@
            if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
            } else {
                // 修改工作档状态 2=>3 todo:luxiaotao
//                Date now = new Date();
//                wrkMast.setWrkSts(3L);
//                wrkMast.setCrnStrTime(now);
//                wrkMast.setModiTime(now);
                // 修改工作档状态 2.设备上走 => 3.吊车入库中
                Date now = new Date();
                wrkMast.setWrkSts(3L);
                wrkMast.setCrnStrTime(now);
                wrkMast.setModiTime(now);
                if (wrkMastMapper.updateById(wrkMast) == 0) {
                    log.error("修改工作档状态 2.设备上走 => 3.吊车入库中 失败!!,工作号={}", wrkMast.getWrkNo());
                }
            }
        }
    }
@@ -439,6 +442,15 @@
                crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 目标库位层
                if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                    log.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                } else {
                    // 修改工作档状态 11.生成出库ID => 12.吊车出库中
                    Date now = new Date();
                    wrkMast.setWrkSts(12L);
                    wrkMast.setCrnStrTime(now);
                    wrkMast.setModiTime(now);
                    if (wrkMastMapper.updateById(wrkMast) == 0) {
                        log.error("修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", wrkMast.getWrkNo());
                    }
                }
            }
        }
@@ -507,43 +519,26 @@
                    log.error("堆垛机处于等待确认且任务完成状态,但未找到工作档。堆垛机号={},工作号={}", crn.getId(), crnProtocol.getTaskNo());
                    continue;
                }
                // 如果工作状态为3.吊车入库中,则修改为4.入库完成
                if (wrkMast.getWrkSts() == 3) {
                    Date now = new Date();
                // 入库 + 库位转移  ==> 4.入库完成
                if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)){
                    wrkMast.setWrkSts(4L);
                    wrkMast.setCrnEndTime(now);
                    wrkMast.setModiTime(now);
                    // 修改成功后复位堆垛机
                    if (wrkMastMapper.updateById(wrkMast) > 0) {
                // 出库 + 拣料/盘点/并板出库中:12.吊车出库中 ==> 14.出库完成
                } else if (wrkMast.getWrkSts() == 12) {
                    wrkMast.setWrkSts(14L);
                }
                Date now = new Date();
                wrkMast.setCrnEndTime(now);
                wrkMast.setModiTime(now);
                // 修改成功后复位堆垛机
                if (wrkMastMapper.updateById(wrkMast) > 0) {
                    // 命令下发区 -------------------------------------------------------------------------
                    // 复位
                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(3, new CrnCommand()))) {
                        log.error("堆垛机复位命令下发失败,工作号={}", wrkMast.getWrkNo());
                    }
                }
            }
        }
    }
    /**
     * 更新堆垛机移动时工作档状态
     */
    public void updateCrnMove() {
        for (CrnSlave crn : slaveProperties.getCrn()) {
            // 获取堆垛机信息
            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
            // todo
            if (crnProtocol.getStatusType() == CrnStatusType.FETCH_POSITION) {
                WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
            }
        }
    }
}