| | |
| | | return false; |
| | | } |
| | | |
| | | boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), liftSta.getLocNo()); |
| | | if(!checkLocPathIsAvailable) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,未计算到可执行路径,等待中", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | if (wrkMast.getShuttleNo() == null) {//没有绑定小车,进行调度 |
| | | //强制预留一台小车给入库任务 |
| | | int lev = Utils.getLev(wrkMast.getSourceLocNo()); |
| | |
| | | |
| | | //小车移动至站点 501.生成移库任务 ==> 502.小车搬运中 |
| | | if (wrkMast.getWrkSts() == WrkStsType.NEW_LOC_MOVE.sts) { |
| | | boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), wrkMast.getLocNo()); |
| | | if(!checkLocPathIsAvailable) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,未计算到可执行路径,等待中", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | if (wrkMast.getShuttleNo() == null) {//没有绑定小车,进行调度 |
| | | boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//调度小车到货物点进行取货 |
| | | News.info("{}任务,调度小车{}系统等待中", wrkMast.getWrkNo(), result ? "成功" : "失败"); |
| | |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,未找到匹配的提升机", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //申请提升机资源 |
| | | boolean applyForkLift = forkLiftAction.applyForkLift(liftNo, wrkMast.getWrkNo()); |
| | | if(!applyForkLift) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,申请提升机资源失败,禁止入库", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); |
| | |
| | | if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,提升机不处于入库模式,禁止入库", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //判断提升机是否有其他任务 |
| | | WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); |
| | | if (liftWrkMast != null) { |
| | | if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同 |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false;//当前提升机存在未完成任务,等待下一次轮询 |
| | | } |
| | | } |
| | | |
| | | //检测楼层是否有可用穿梭车 |
| | |
| | | assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue()); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN.sts);//提升机搬运中 1.生成入库任务 ==> 3.提升机搬运中 |
| | | wrkMast.setLiftNo(liftNo); |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,未找到匹配的提升机", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | //申请提升机资源 |
| | | boolean applyForkLift = forkLiftAction.applyForkLift(liftSta.getLiftNo(), wrkMast.getWrkNo()); |
| | | if(!applyForkLift) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,申请提升机资源失败,禁止执行出库", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); |
| | |
| | | if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,提升机不处于出库模式,禁止出库", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //判断提升机是否有其他任务 |
| | | WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); |
| | | if (liftWrkMast != null) { |
| | | if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同 |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false;//当前提升机存在未完成任务,等待下一次轮询 |
| | | } |
| | | } |
| | | |
| | | //请求上级系统,是否允许出库 |
| | |
| | | assignCommand.setTaskMode(ForkLiftTaskModeType.PICK_PUT.id.shortValue()); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.OUTBOUND_LIFT_RUN.sts);//提升机搬运中 103.生成入库任务 ==> 104.提升机搬运中 |
| | | wrkMast.setLiftNo(liftNo); |
| | | wrkMast.setShuttleNo(null);//释放小车 |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMast.setModiTime(new Date()); |
| | |
| | | return false; |
| | | } |
| | | |
| | | if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) { |
| | | if (!wrkMast.getLocNo().equals(shuttleProtocol.getCurrentLocNo())) { |
| | | return false; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | if (wrkMast.getLiftNo() == null) { |
| | | //判断提升机是否有其他任务(该任务需要换层必须提前独占提升机) |
| | | WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftSta.getLiftNo()); |
| | | if (liftWrkMast != null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), liftSta.getLiftNo()); |
| | | return false;//当前提升机存在未完成任务,等待下一次轮询 |
| | | //申请提升机资源(该任务需要换层必须提前独占提升机) |
| | | boolean applyForkLift = forkLiftAction.applyForkLift(liftSta.getLiftNo(), wrkMast.getWrkNo()); |
| | | if(!applyForkLift) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,申请提升机资源失败,禁止移动至站点", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setLiftNo(liftSta.getLiftNo());//提前锁定提升机 |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMastService.updateById(wrkMast); |
| | | return false; |
| | | } |
| | | |
| | | //*************尝试锁定目标站路径*************** |
| | |
| | | if (!forkLiftThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机忙碌中,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false; |
| | | } |
| | | //判断提升机是否有其他任务 |
| | | WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); |
| | | if (liftWrkMast != null) { |
| | | if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同 |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false;//当前提升机存在未完成任务,等待下一次轮询 |
| | | } |
| | | } |
| | | |
| | | //获取源站 |
| | |
| | | continue; |
| | | } |
| | | |
| | | //判断提升机是否有其他任务 |
| | | WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); |
| | | if (liftWrkMast != null) { |
| | | //存在调度锁 |
| | | Object object = redisUtil.get(RedisKeyType.OUT_TASK_PREVIEW_DISPATCH_FORKLIFT.key + forkLiftProtocol.getLiftNo()); |
| | | if (object != null) { |
| | | continue; |
| | | } |
| | | |
| | | //申请提升机资源 |
| | | boolean applyForkLift = forkLiftAction.applyForkLift(liftNo, null); |
| | | if(!applyForkLift) { |
| | | continue;//提升机已被绑定,不再执行预调度任务 |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | //提升机不在出库层 |
| | | if (!forkLiftProtocol.getLev().equals(Utils.getLev(wrkMast.getSourceLocNo()))) { |
| | | if (forkLiftProtocol.getLev().equals(Utils.getLev(wrkMast.getSourceLocNo()))) { |
| | | continue; |
| | | } |
| | | |
| | |
| | | assignCommand.setTaskMode(ForkLiftTaskModeType.MOVE.id.shortValue()); |
| | | |
| | | forkLiftAction.assignWork(forkLiftProtocol.getLiftNo(), assignCommand); |
| | | |
| | | redisUtil.set(RedisKeyType.OUT_TASK_PREVIEW_DISPATCH_FORKLIFT.key + forkLiftProtocol.getLiftNo(), "lock", 30);//30秒不再调度 |
| | | } |
| | | } |
| | | |