| | |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.utils.NotifyUtils; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.model.NavigateNode; |
| | | import com.zy.common.model.enums.NavigationMapType; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.utils.LiftUtils; |
| | |
| | | |
| | | if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { |
| | | //小车在取货点 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_Lift_1.sts);//小车移动到输送线 301.生成小车移库任务 ==> 呼叫小车至取货点 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_1.sts);//小车移动到输送线 301.生成小车移库任务 ==> 呼叫小车至取货点 |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMastService.updateById(wrkMast); |
| | |
| | | return false; |
| | | } |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_Lift_1.sts);//小车移动到输送线 301.生成小车移库任务 ==> 呼叫小车至取货点 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_1.sts);//小车移动到输送线 301.生成小车移库任务 ==> 呼叫小车至取货点 |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMastService.updateById(wrkMast); |
| | |
| | | Date now = new Date(); |
| | | |
| | | //小车移动至站点 301.生成小车移库任务 ==> 302.小车移动至站点中 |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_Lift_2.sts) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_2.sts) { |
| | | //获取四向穿梭车线程 |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | |
| | | commands.addAll(moveCommands); |
| | | } |
| | | |
| | | List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true); |
| | | if (liftCommand == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}小车获取顶升命令失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | commands.addAll(0, liftCommand); |
| | | |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_Lift_3.sts);//小车移动到待机点 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_3.sts);//小车移动到待机点 |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | |
| | | //--------------------------------------小车迁入提升机-----------------------------------------// |
| | | Date now = new Date(); |
| | | //小车移动到提升机中 小车移动至站点完成 ==> 提升机至小车层 |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_Lift_4.sts) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_4.sts) { |
| | | //获取四向穿梭车线程 |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | |
| | | //判断提升机楼层 |
| | | if (liftProtocol.getLev() == Utils.getLev(shuttleProtocol.getCurrentLocNo())) { |
| | | //提升机在小车楼层 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_Lift_6.sts);//小车移动到提升机中 小车移动至站点完成 ==> 提升机至小车层完成 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_6.sts);//小车移动到提升机中 小车移动至站点完成 ==> 提升机至小车层完成 |
| | | wrkMast.setModiTime(now); |
| | | wrkMastService.updateById(wrkMast); |
| | | return false; |
| | |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); |
| | | assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue()); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_Lift_5.sts);//小车移动到提升机中 小车移动至站点完成 ==> 提升机至小车层 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_5.sts);//小车移动到提升机中 小车移动至站点完成 ==> 提升机至小车层 |
| | | wrkMast.setLiftNo(liftProtocol.getLiftNo());//提前锁定提升机 |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMast.setModiTime(now); |
| | |
| | | //--------------------------------------小车迁入提升机-----------------------------------------// |
| | | Date now = new Date(); |
| | | //小车移动到提升机中 提升机至小车层完成 ==> 小车迁入提升机中 |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_Lift_6.sts) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_6.sts) { |
| | | //获取四向穿梭车线程 |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | |
| | | |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_Lift_7.sts);//小车移动到提升机中 提升机至小车层完成 ==> 小车迁入提升机中 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_7.sts);//小车移动到提升机中 提升机至小车层完成 ==> 小车迁入提升机中 |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //下发任务 |
| | |
| | | //--------------------------------------小车迁入提升机-----------------------------------------// |
| | | Date now = new Date(); |
| | | //小车移动到提升机中 小车迁入提升机完成 ==> 提升机至放货层 |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_Lift_8.sts) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_8.sts) { |
| | | if (wrkMast.getLiftNo() == null) { |
| | | News.info("{}任务未绑定提升机", wrkMast.getWrkNo()); |
| | | return false; |
| | |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); |
| | | assignCommand.setTaskMode(LiftCommandModeType.MOVE.id.shortValue()); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_Lift_9.sts);//小车移动到提升机中 小车迁入提升机完成 ==> 提升机至放货层 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_9.sts);//小车移动到提升机中 小车迁入提升机完成 ==> 提升机至放货层 |
| | | wrkMast.setLiftNo(liftProtocol.getLiftNo());//提前锁定提升机 |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMast.setModiTime(now); |
| | |
| | | //--------------------------------------小车迁入提升机-----------------------------------------// |
| | | Date now = new Date(); |
| | | //小车移动到提升机中 提升机至放货层完成 ==> 小车迁出提升机中 |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_Lift_10.sts) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_10.sts) { |
| | | //获取四向穿梭车线程 |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | |
| | | return false; |
| | | } |
| | | |
| | | List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true); |
| | | if (liftCommand == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}小车获取顶升命令失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | commands.addAll(0, liftCommand); |
| | | |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_Lift_11.sts);//小车移动到提升机中 提升机至放货层完成 ==> 小车迁出提升机中 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_11.sts);//小车移动到提升机中 提升机至放货层完成 ==> 小车迁出提升机中 |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //下发任务 |
| | |
| | | Date now = new Date(); |
| | | |
| | | //小车移动到目标库位中 小车迁出提升机完成 ==> 小车放货中 |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_Lift_12.sts) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_12.sts) { |
| | | //获取四向穿梭车线程 |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | |
| | | |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_Lift_13.sts);//小车移动到目标库位中 小车迁出提升机完成 ==> 小车放货中 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_13.sts);//小车移动到目标库位中 小车迁出提升机完成 ==> 小车放货中 |
| | | wrkMast.setLiftNo(null);//释放提升机 |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMast.setModiTime(now); |
| | |
| | | Date now = new Date(); |
| | | |
| | | //小车移动到目标库位中 309.小车迁出提升机完成 ==> 310.小车移动中 |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_Lift_2.sts) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_1.sts) { |
| | | |
| | | List<NavigateNode> targetNodes = null; |
| | | if (wrkMast.getLiftNo() != null) { |
| | | //判断提升机是否有其他任务 |
| | | WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); |
| | | if (liftWrkMast != null) { |
| | | if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//提升机任务和当前任务不相同 |
| | | News.info("{}任务,{}号提升机,提升机存在未完成任务,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false;//当前提升机存在未完成任务,等待下一次轮询 |
| | | } |
| | | } |
| | | |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); |
| | | if (liftThread == null) { |
| | | News.info("{}任务,{}号提升机,提升机线程不存在,禁止派发", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false; |
| | | } |
| | | |
| | | //小车目标就是提升机位置,直接认定小车移动任务完成 |
| | | if (liftThread.getLiftLocNo(Utils.getLev(wrkMast.getLocNo())).equals(wrkMast.getLocNo())) { |
| | | wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.小车移动完成 |
| | | wrkMast.setLiftNo(null);//释放提升机 |
| | | wrkMast.setModiTime(now); |
| | | wrkMastService.updateById(wrkMast); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | //获取四向穿梭车线程 |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | |
| | | return false; |
| | | } |
| | | |
| | | //小车已经在目标库位,直接认定小车移动任务完成 |
| | | if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) { |
| | | wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.小车移动完成 |
| | | wrkMast.setLiftNo(null);//释放提升机 |
| | | wrkMast.setModiTime(now); |
| | | wrkMastService.updateById(wrkMast); |
| | | return false; |
| | | } |
| | | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 四向穿梭车编号 |
| | |
| | | assignCommand.setLocNo(wrkMast.getLocNo());//目标库位 |
| | | |
| | | List<ShuttleCommand> commands = new ArrayList<>(); |
| | | List<ShuttleCommand> liftCommand = null; |
| | | Integer mapType = NavigationMapType.NORMAL.id; |
| | | |
| | | List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread); |
| | |
| | | |
| | | commands.addAll(moveCommands); |
| | | |
| | | List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true); |
| | | if (liftCommand == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}小车获取顶升命令失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | commands.addAll(0, liftCommand); |
| | | |
| | | List<ShuttleCommand> liftCommandDown = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false); |
| | | if (liftCommandDown == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}小车获取下降命令失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | commands.addAll(liftCommandDown); |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_Lift_13.sts);//小车移动到目标库位中 |
| | | wrkMast.setLiftNo(null);//释放提升机 |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_13.sts);//小车移动到目标库位中 |
| | | wrkMast.setSystemMsg("");//清空消息 |
| | | wrkMast.setModiTime(now); |
| | | |