| | |
| | | //小车同楼层没有充电桩,只要充电桩可用就生成充电任务 |
| | | for (BasShuttleCharge charge : charges) { |
| | | if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) { |
| | | //判断当前充电桩楼层是否有小车,如有小车,不分配该充电桩 |
| | | int chargeLev = Utils.getLev(charge.getLocNo());//充电桩楼层 |
| | | boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//检测楼层是否有穿梭车 |
| | | if (checkLevHasShuttle) { |
| | | //当前充电桩楼层有穿梭车,不分配该充电桩 |
| | | //判断当前充电桩是否有小车,如有小车,不分配该充电桩 |
| | | ArrayList<String> locs = new ArrayList<>(); |
| | | locs.add(charge.getLocNo()); |
| | | Integer checkHasShuttle = Utils.checkGroupLocHasShuttle(locs); |
| | | if(checkHasShuttle != null) { |
| | | //当前充电桩有穿梭车,不分配该充电桩 |
| | | continue; |
| | | } |
| | | |
| | |
| | | return false;//找不到站点 |
| | | } |
| | | |
| | | //判断提升机是否有其他任务(该任务需要换层必须提前独占提升机) |
| | | WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftSta.getLiftNo()); |
| | | if (liftWrkMast != null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), liftSta.getLiftNo()); |
| | | 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;//当前提升机存在未完成任务,等待下一次轮询 |
| | | } |
| | | |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setLiftNo(liftSta.getLiftNo());//提前锁定提升机 |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMastService.updateById(wrkMast); |
| | | return false; |
| | | } |
| | | |
| | | //*************尝试锁定目标站路径*************** |
| | |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//小车移动到提升机中 301.生成小车移库任务 ==> 302.小车移动至站点 |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setLiftNo(liftSta.getLiftNo());//提前锁定提升机 |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | // shuttleProtocol.setToken(wrkMast.getWrkNo());//独占该小车令牌 |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //下发任务 |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | |
| | | List<ShuttleCommand> commands = null; |
| | | //跨楼层移动任务 |
| | | if (Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(wrkMast.getLocNo())) { |
| | | if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) { |
| | | return false;//小车未到达目标层 |
| | | } |
| | | |
| | | //需要将前两个节点作为白名单节点传入 |
| | | List<NavigateNode> targetNodes = ForkLiftUtils.getLiftStaNodes(wrkMast.getStaNo()); |
| | | if (targetNodes == null) { |