| | |
| | | return false; |
| | | } |
| | | |
| | | List<WrkMast> shuttleMoveList = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("io_type", 200) |
| | | ); |
| | | for (WrkMast moveWrkMast : shuttleMoveList) { |
| | | if(Utils.getLev(moveWrkMast.getLocNo()) != Utils.getLev(wrkMast.getSourceLocNo())) { |
| | | continue; |
| | | } |
| | | |
| | | if(Utils.getLev(moveWrkMast.getLocNo()) == Utils.getLev(moveWrkMast.getSourceLocNo())) { |
| | | continue; |
| | | } |
| | | |
| | | //存在换层任务,出库任务暂时不执行 |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,存在换层任务,出库任务等待中", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), liftSta.getLocNo()); |
| | | if(!checkLocPathIsAvailable) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,未计算到可执行路径,等待中", wrkMast.getWrkNo()); |
| | |
| | | return false; |
| | | } |
| | | |
| | | //检测楼层是否有可用穿梭车 |
| | | boolean checkLevHasShuttle = Utils.checkLevHasShuttle(liftSta.getLev()); |
| | | if (!checkLevHasShuttle) { |
| | | if (wrkMast.getShuttleNo() != null) { |
| | | return false; |
| | | } |
| | | |
| | | //获取小车待机位 |
| | | String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo()); |
| | | if (standbyLocNo == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,获取小车待机位失败", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //调度小车去待机位 |
| | | boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo); |
| | | if (!dispatchShuttle) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,调度小车失败", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | Integer liftNo = wrkMast.getLiftNo(); |
| | | if (liftNo == null) { |
| | | //未分配提升机 |
| | |
| | | //判断提升机是否处于入库模式 |
| | | if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,提升机不处于入库模式,禁止入库", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //检测楼层是否有可用穿梭车 |
| | | boolean checkLevHasShuttle = Utils.checkLevHasShuttle(liftSta.getLev()); |
| | | if (!checkLevHasShuttle) { |
| | | if (wrkMast.getShuttleNo() != null) { |
| | | return false; |
| | | } |
| | | |
| | | //获取小车待机位 |
| | | String standbyLocNo = Utils.getShuttleStandbyLocNo(liftSta.getLocNo()); |
| | | if (standbyLocNo == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,获取小车待机位失败", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //调度小车去待机位 |
| | | boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), standbyLocNo); |
| | | if (!dispatchShuttle) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,调度小车失败", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//四向穿梭车号 |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//任务号 |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id);//出库模式 |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_ON.id);//充电开 |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//源库位(小车当前位置) |
| | | |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, true); |
| | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//四向穿梭车号 |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//任务号 |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id);//出库模式 |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_OFF.id);//充电关 |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//源库位(小车当前位置) |
| | | |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, false); |
| | |
| | | return false; |
| | | } |
| | | |
| | | //小车已在近点位置无需前往 |
| | | if (shuttleProtocol.getCurrentLocNo().equals(endLocation)) { |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY_COMPLETE.sts);//小车移动到提升机中 301.生成小车移库任务 ==> 303.小车移动至近点完成 |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMastService.updateById(wrkMast); |
| | | return true; |
| | | } |
| | | |
| | | //获取小车到近点行走命令 |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), endLocation, NavigationMapType.NORMAL.id, assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | |
| | | return false; |
| | | } |
| | | |
| | | List<WrkMast> outWrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("io_type", 101) |
| | | .in("wrk_sts" |
| | | , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts |
| | | , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts |
| | | , WrkStsType.OUTBOUND_LIFT_RUN.sts |
| | | , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts |
| | | ) |
| | | ); |
| | | for (WrkMast outWrkMast : outWrkMastList) { |
| | | if(Utils.getLev(outWrkMast.getSourceLocNo()) == Utils.getLev(wrkMast.getLocNo())) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,存在正在执行的小车出库任务,禁止移动至站点", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | if (wrkMast.getLiftNo() == null) { |
| | | //申请提升机资源(该任务需要换层必须提前独占提升机) |
| | | boolean applyForkLift = forkLiftAction.applyForkLift(liftSta.getLiftNo(), wrkMast.getWrkNo()); |