| | |
| | | |
| | | /** |
| | | * 从没有提升机侧入库,有两种情况,一种入库到同层,一种入库到不同层,则需要提升机 |
| | | * |
| | | * @param wrkMast |
| | | */ |
| | | public void shuttleMoveExecute(WrkMast wrkMast, Integer staNo, Integer lev) { |
| | |
| | | if (liftProtocol == null) { |
| | | News.info("{}号提升机对象不存在", wrkMast.getLiftNo()); |
| | | return false; |
| | | } |
| | | //当1011入库,托盘在提升机里,1014也在入库,待机位被1014占住,去提升机里的任务,小车会卡住 |
| | | if (liftProtocol.getHasTray() && liftProtocol.getLev() == 1 && wrkMast.getStaNo() == 1015) { |
| | | News.info("{}任务,{}号提升机,提升机内有托盘且在1层需要小车去接,就不要占住待机位,禁止派发", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); |
| | | return false;//提升机内无小车 |
| | | } |
| | | if (liftProtocol.getHasTray() && liftProtocol.getLev() == 5 && wrkMast.getStaNo() == 1026) { |
| | | News.info("{}任务,{}号提升机,提升机内有托盘且在5层需要小车去接,就不要占住待机位,禁止派发", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); |
| | | return false;//提升机内无小车 |
| | | } |
| | | |
| | | //获取提升机待机位 |
| | |
| | | return false; |
| | | } |
| | | |
| | | //判断提升机是否有其他任务 |
| | | WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); |
| | | if (liftWrkMast != null) { |
| | | if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同 |
| | | News.info("{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false;//当前提升机存在未完成任务,等待下一次轮询 |
| | | } |
| | | } |
| | | |
| | | if (!liftThread.isIdle()) { |
| | | News.info("{}任务,{}号提升机,提升机忙碌中,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | |
| | | } |
| | | |
| | | //判断提升机是否有其他任务 |
| | | WrkMast w = wrkMastService.selectLiftWrkMast(1); |
| | | if (w != null) { |
| | | if (!w.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同 |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}号提升机,提升机存在别的绑定任务ru,禁止派发", wrkMast.getWrkNo(), 1); |
| | | return false; |
| | | WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); |
| | | if (liftWrkMast != null) { |
| | | if (!liftWrkMast.getWrkNo().equals(wrkMast.getMainWrkNo())) {//提升机任务和当前任务不相同 |
| | | News.info("{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false;//当前提升机存在未完成任务,等待下一次轮询 |
| | | } |
| | | } |
| | | |
| | |
| | | assignCommand.setAuto(true);//自动模式 |
| | | |
| | | //获取小车到提升机行走命令 |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.DFX.id, assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}小车,路径计算失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | |
| | | assignCommand.setLocNo(wrkMast.getLocNo());//目标库位 |
| | | |
| | | List<ShuttleCommand> commands = new ArrayList<>(); |
| | | Integer mapType = NavigationMapType.NORMAL.id; |
| | | Integer mapType = NavigationMapType.DFX.id; |
| | | |
| | | List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread); |
| | | if (moveCommands == null) { |