| | |
| | | } |
| | | |
| | | // 检测是否存在出库任务 |
| | | // 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; |
| | |
| | | wrkMast.setIoPri((double) 9999); |
| | | wrkMastMapper.updateById(wrkMast); |
| | | |
| | | // 判断是否为穿梭库 |
| | | if (!locMastService.isShuttle(wrkMast.getLocNo())) { |
| | | |
| | | // 非穿梭库入库 【 堆垛机直接入库 】 |
| | |
| | | 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); |
| | | waitWrkMast.setModiTime(new Date()); |
| | | if (wrkMastMapper.updateById(waitWrkMast) == 0) { |
| | | log.error("调整工作档优先级失败!工作号={}", waitWrkMast.getWrkNo()); |
| | | } |
| | | //20220719 Add,如果浅库位状态为P/R,工作状态为14/15,说明浅库位已经空了,可以执行入库任务 |
| | | if (waitWrkMast.getWrkSts() < 14L) { |
| | | 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,说明浅库位已经空了,可以执行入库任务 |
| | | continue; |
| | | } |
| | | } |
| | |
| | | // 此标记避免多次执行移库任务 |
| | | 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; |
| | |
| | | if (wrkMast.getIoType() != 11) { |
| | | // 入库 ==>> 货物搬入库 |
| | | if (wrkMast.getWrkSts() == 7){ |
| | | // 判断是否需要小车入库 |
| | | if (locMastService.isOutMost(wrkMast.getLocNo())) { |
| | | if (!locMastService.isShuttle(wrkMast.getLocNo())) { |
| | | // ==> 9.入库完成 |
| | | wrkMast.setWrkSts(9L); |
| | | Date now = new Date(); |
| | |
| | | log.error("修改工作档状态 7.吊车入库中 => 9.入库完成 失败!!,工作号={}", wrkMast.getWrkNo()); |
| | | } |
| | | } else { |
| | | // 给穿梭车下发命令 |
| | | Integer steNo = wrkMast.getSteNo(); |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | if (steProtocol.isIdle()) { |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | SteCommand steCommand = new SteCommand(); |
| | | steCommand.setSteNo(steNo); // 穿梭车编号 |
| | | steCommand.setTaskNo(wrkMast.getWrkNo()); // 工作号 |
| | | steCommand.setTaskMode(SteTaskModeType.findInByLoc(wrkMast.getLocNo())); // 任务模式: 搬入库 |
| | | if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { |
| | | log.error("穿梭车命令下发失败,穿梭车号={},任务数据={}", steNo, JSON.toJSON(steCommand)); |
| | | // 判断是否需要小车入库 |
| | | if (locMastService.isOutMost(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 { |
| | | // 修改工作档状态 7.吊车入库中 => 8.小车搬入库 |
| | | wrkMast.setWrkSts(8L); |
| | | Date now = new Date(); |
| | | wrkMast.setCrnEndTime(now); |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast) > 0) { |
| | | // 堆垛机复位 |
| | | crnThread.setResetFlag(true); |
| | | log.error("修改工作档状态 7.吊车入库中 => 9.入库完成 失败!!,工作号={}", wrkMast.getWrkNo()); |
| | | } |
| | | } else { |
| | | // 给穿梭车下发命令 |
| | | Integer steNo = wrkMast.getSteNo(); |
| | | SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); |
| | | SteProtocol steProtocol = steThread.getSteProtocol(); |
| | | if (steProtocol == null) { continue; } |
| | | if (steProtocol.isIdle()) { |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | SteCommand steCommand = new SteCommand(); |
| | | steCommand.setSteNo(steNo); // 穿梭车编号 |
| | | steCommand.setTaskNo(wrkMast.getWrkNo()); // 工作号 |
| | | steCommand.setTaskMode(SteTaskModeType.findInByLoc(wrkMast.getLocNo())); // 任务模式: 搬入库 |
| | | if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { |
| | | log.error("穿梭车命令下发失败,穿梭车号={},任务数据={}", steNo, JSON.toJSON(steCommand)); |
| | | } else { |
| | | log.error("修改工作档状态 7.吊车入库中 => 8.小车搬入库 失败!!,工作号={}", wrkMast.getWrkNo()); |
| | | // 修改工作档状态 7.吊车入库中 => 8.小车搬入库 |
| | | wrkMast.setWrkSts(8L); |
| | | Date now = new Date(); |
| | | wrkMast.setCrnEndTime(now); |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast) > 0) { |
| | | // 堆垛机复位 |
| | | crnThread.setResetFlag(true); |
| | | } else { |
| | | log.error("修改工作档状态 7.吊车入库中 => 8.小车搬入库 失败!!,工作号={}", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // 入库 ===>> 迁入小车 完成 |
| | | // 入库 ===>> 迁入小车 完成 |
| | | } else if (wrkMast.getWrkSts() == 4) { |
| | | // 4.迁入小车 ==> 6.小车待入 |
| | | wrkMast.setWrkSts(6L); |