| | |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | log.error("修改工作档状态 {} => 7.吊车入库中 失败!!,工作号={}", wrkMast.getWrkSts$(), wrkMast.getWrkNo()); |
| | | } else { |
| | | return true; |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | } else { |
| | |
| | | // 没有其他任务 |
| | | if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) { |
| | | this.letCarBeReady(wrkMast, steNo, wrkMast.getLocNo()); |
| | | return true; |
| | | } |
| | | } |
| | | // 小车搬走 |
| | | if (wrkMast.getWrkSts() == 3L) { |
| | | this.carMoveOut(wrkMast, steNo, crnProtocol); |
| | | return true; |
| | | } |
| | | // 没有小车 |
| | | } else { |
| | |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | log.error("修改工作档状态 {} => 7.吊车入库中 失败!!,工作号={}", wrkMast.getWrkSts$(), wrkMast.getWrkNo()); |
| | | } else { |
| | | return true; |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | |
| | |
| | | // 没有其他任务 |
| | | if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) { |
| | | this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo()); |
| | | } else { |
| | | return true; |
| | | } |
| | | } |
| | | // 堆垛机将货放至小车上 3.小车待搬(小车不用搬运,已经在当前组库位) / 6.小车待入 ===>> 7.吊车入库中 |
| | |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | log.error("修改工作档状态 3.小车待搬/6.小车待入 => 7.吊车入库中 失败!!,工作号={}", wrkMast.getWrkNo()); |
| | | } else { |
| | | return true; |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | |
| | | if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) { |
| | | // 让小车等待搬运待续 |
| | | this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getLocNo()); |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | // 堆垛机搬运小车 |
| | | if (wrkMast.getWrkSts() == 3L) { |
| | | this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | |
| | | /** |
| | | * 出库 ===>> 库位到堆垛机站 |
| | | */ |
| | | public boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){ |
| | | public synchronized boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){ |
| | | for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { |
| | | // 获取工作状态为11(生成出库ID)的出库工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectPakOutStep111215(slave.getId(), crnStn.getStaNo()); |
| | |
| | | log.error("出库操作库位状态不符合--状态, 库位号={},库位状态={}", wrkMast.getLocNo(), sourceSta.getLocSts()); |
| | | continue; |
| | | } |
| | | |
| | | // 判断是否有同库位组的出库任务,如果有,则暂停 |
| | | List<String> outsideLoc = Utils.getGroupOutsideLoc(wrkMast.getSourceLocNo()); |
| | | if (!Cools.isEmpty(outsideLoc)) { |
| | | if (!Cools.isEmpty(wrkMastMapper.selectWorkingOfPakOutBySource(outsideLoc))) { |
| | | log.warn("{}工作档出库失败,原因:外层库位{}正在执行出库任务!", wrkMast.getWrkNo(), JSON.toJSONString(outsideLoc)); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | // 获取堆垛机出库站信息 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); |
| | |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | log.error("修改工作档状态 11.生成出库ID => 16.吊车出库中 失败!!,工作号={}", wrkMast.getWrkNo()); |
| | | } else { |
| | | return true; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } else { |
| | |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | log.error("修改工作档状态 11.生成出库ID => 16.吊车出库中 失败!!,工作号={}", wrkMast.getWrkNo()); |
| | | } else { |
| | | return true; |
| | | } |
| | | return true; |
| | | } |
| | | // 不是最外层库位,需要使用穿梭车搬运后,再堆垛机出库 |
| | | } else { |
| | |
| | | wrkMast.setCrnNo(outCrnNo); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | log.error("修改工作档状态 11.生成出库ID => 14.小车搬出库 失败!!,工作号={}", wrkMast.getWrkNo()); |
| | | } else { |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast) == 0) { |
| | | log.error("修改工作档状态 15.等待吊车 => 16.吊车出库中 失败!!,工作号={}", wrkMast.getWrkNo()); |
| | | } else { |
| | | return true; |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | |
| | |
| | | if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) { |
| | | // 让小车等待搬运待续 |
| | | this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo()); |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | // 堆垛机搬运小车 |
| | | if (wrkMast.getWrkSts() == 12L) { |
| | | this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | |
| | | continue; |
| | | } |
| | | |
| | | // 小车处于通道 |
| | | List<String> channel = slaveProperties.getChannel(); |
| | | for (String channelLocNo : channel) { |
| | | if (steProtocol.getRow().intValue() == Utils.getRow(channelLocNo) |
| | | && steProtocol.getBay().intValue() == Utils.getBay(channelLocNo) |
| | | && steProtocol.getLev().intValue() == Utils.getLev(channelLocNo)) { |
| | | Integer otherSte = existOtherSte(channelLocNo, wrkCharge.getSteNo()); |
| | | if (null != otherSte) { |
| | | log.warn("{}号小车充电阻断,原因:通道存在{}号穿梭车!", wrkCharge.getSteNo(), otherSte); |
| | | } else { |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | SteCommand steCommand = new SteCommand(); |
| | | steCommand.setSteNo(wrkCharge.getSteNo()); // 穿梭车编号 |
| | | steCommand.setTaskNo(wrkCharge.getWrkNo()); // 工作号 |
| | | steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN); // 去右端 |
| | | |
| | | steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue()); |
| | | steCommand.setBay(steProtocol.getBay()); |
| | | steCommand.setLev(steProtocol.getLev()); |
| | | if (!MessageQueue.offer(SlaveType.Ste, wrkCharge.getSteNo(), new Task(2, steCommand))) { |
| | | log.error("穿梭车命令下发失败,穿梭车号={},任务数据={}", wrkCharge.getSteNo(), JSON.toJSON(steCommand)); |
| | | } else { |
| | | // 修改工作档状态 21.准备充电 ===> 25.小车走行 |
| | | wrkCharge.setWrkSts(25L); |
| | | Date now = new Date(); |
| | | wrkCharge.setModiTime(now); |
| | | if (!wrkChargeService.updateById(wrkCharge)) { |
| | | log.error("修改充电任务状态 21.准备充电 ===> 25.小车走行 失败!!,工作号={}", wrkCharge.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 处于充电库位组 |
| | | if (steProtocol.getRow().intValue() == Utils.getRow(chargeLocNo) |
| | | && steProtocol.getBay().intValue() == Utils.getBay(chargeLocNo) |