| | |
| | | if (null == shuttleProtocol) { |
| | | return false; |
| | | } |
| | | if (!shuttleThread.isIdle()) {//设备不空闲 |
| | | |
| | | if (!shuttleThread.isIdle(new ExecuteSupport() { |
| | | @Override |
| | | public Boolean judgement() { |
| | | if (Objects.equals(MotionCtgType.get(motion.getMotionCtgEl()), MotionCtgType.SHUTTLE_CHARGE_OFF)) {//非关闭充电motion,需要判断设备状态 |
| | | return false;//不需要判断状态 |
| | | } |
| | | return true;//需要判断状态 |
| | | } |
| | | })) {//设备不空闲 |
| | | return false; |
| | | } |
| | | |
| | | if (motionService.count(new LambdaQueryWrapper<Motion>() |
| | | .eq(Motion::getDeviceCtg, DeviceCtgType.SHUTTLE.val()) |
| | | .eq(Motion::getDevice, motion.getDevice()) |
| | |
| | | } |
| | | })) { |
| | | //锁定提升机 |
| | | LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令 |
| | | List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令 |
| | | |
| | | LiftAssignCommand liftAssignCommand = new LiftAssignCommand(); |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(lockCommand); |
| | | list.addAll(lockCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | |
| | | } |
| | | })) { |
| | | //锁定提升机 |
| | | LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令 |
| | | List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令 |
| | | if (lockCommand == null) { |
| | | return false; |
| | | } |
| | |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(lockCommand); |
| | | list.addAll(lockCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | |
| | | |
| | | //充电任务 |
| | | if (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl())).equals(MotionCtgType.SHUTTLE_CHARGE_ON)) { |
| | | // 复位穿梭车 |
| | | shuttleThread.setSyncTaskNo(0); |
| | | shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE); |
| | | shuttleThread.setPakMk(true); |
| | | return true; |
| | | if (shuttleProtocol.getHasCharge() || shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.CHARGING_WAITING)) { |
| | | // 复位穿梭车 |
| | | shuttleThread.setSyncTaskNo(0); |
| | | shuttleThread.setProtocolStatus(ShuttleProtocolStatusType.IDLE); |
| | | shuttleThread.setPakMk(true); |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | if (!shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.WAITING) |
| | |
| | | } |
| | | })) { |
| | | //解锁提升机 |
| | | LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | |
| | | LiftAssignCommand liftAssignCommand = new LiftAssignCommand(); |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(lockCommand); |
| | | list.addAll(lockCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | |
| | | |
| | | //判断小车是否已到位 |
| | | if (liftProtocol.getHasCar()) { |
| | | LiftCommand signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), true);//获取小车已到位命令 |
| | | List<LiftCommand> signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), true);//获取小车已到位命令 |
| | | if(signalCommand != null) { |
| | | boolean hasKey = redisUtil.hasKey(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo()); |
| | | if (!hasKey) { |
| | |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(signalCommand); |
| | | list.addAll(signalCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | | return false; |
| | |
| | | } |
| | | })) { |
| | | //解锁提升机 |
| | | LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | |
| | | LiftAssignCommand liftAssignCommand = new LiftAssignCommand(); |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(lockCommand); |
| | | list.addAll(lockCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | |
| | | |
| | | //判断小车是否已离开 |
| | | if (!liftProtocol.getHasCar()) { |
| | | LiftCommand signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), false);//获取小车已驾离命令 |
| | | List<LiftCommand> signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), false);//获取小车已驾离命令 |
| | | if(signalCommand != null) { |
| | | boolean hasKey = redisUtil.hasKey(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo()); |
| | | if (!hasKey) { |
| | |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(signalCommand); |
| | | list.addAll(signalCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | | return false; |
| | |
| | | } |
| | | })) { |
| | | //解锁提升机 |
| | | LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | |
| | | LiftAssignCommand liftAssignCommand = new LiftAssignCommand(); |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(lockCommand); |
| | | list.addAll(lockCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | |
| | | //通过xy坐标小车二维码 |
| | | String distCodeNum = NavigatePositionConvert.xyToPosition(endPath.getX(), endPath.getY(), endPath.getZ(), hostId); |
| | | //获取移动命令 |
| | | ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed); |
| | | ShuttleCommand command = shuttleThread.getMoveCommand(assignCommand.getDeviceTaskNo(), startCodeNum, distCodeNum, allDistance, ShuttleRunDirection.get(startPath.getDirection()).id.intValue(), runSpeed, nodes); |
| | | command.setNodes(nodes);//将行走节点添加到每一步命令中 |
| | | commands.add(command); |
| | | } |