| | |
| | | @Autowired |
| | | private TaskService taskService; |
| | | @Autowired |
| | | private AgvModelService agvModelService; |
| | | @Autowired |
| | | private MainService mainService; |
| | | @Autowired |
| | | private MainLockWrapService mainLockWrapService; |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:agv:update')") |
| | | @PostMapping("/control/agv/charge/stop") |
| | | public R stopCharging(@RequestHeader String appKey, |
| | | @RequestBody HandlerPublishParam param) { |
| | | if (Cools.isEmpty(param.getAgvNo(), appKey)) { |
| | | return R.error(); |
| | | } |
| | | if (!APP_KEY.equals(appKey)) { |
| | | return R.error(); |
| | | } |
| | | |
| | | Agv agv = agvService.selectByUuid(param.getAgvNo()); |
| | | if (agv == null) { |
| | | return R.error("AGV不存在"); |
| | | } |
| | | |
| | | if (!agvService.judgeEnable(agv.getId())) { |
| | | log.info("{}号AGV不可用,停止充电失败...", agv.getUuid()); |
| | | return R.error(); |
| | | } |
| | | |
| | | AgvModel agvModel = agvModelService.getByAgvId(agv.getId()); |
| | | if (agvModel == null || !AgvModelType.UNDERDRIVE_AGV.toString().equals(agvModel.getType())) { |
| | | return R.error("当前AGV车型不支持断开充电"); |
| | | } |
| | | if (!hikInstantActionPublishService.support(agv.getId())) { |
| | | return R.error("当前AGV协议不支持断开充电"); |
| | | } |
| | | |
| | | hikInstantActionPublishService.publishStopCharging(agv.getUuid()); |
| | | return R.ok("断开充电指令已发送"); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:agv:update')") |
| | | @PostMapping("/control/agv/task/cancel") |
| | | @Transactional |
| | | public R cancelAgvTask(@RequestHeader String appKey, |
| | | @RequestBody HandlerPublishParam param) { |
| | | if (Cools.isEmpty(param.getAgvNo(), appKey)) { |
| | | return R.error(); |
| | | } |
| | | if (!APP_KEY.equals(appKey)) { |
| | | return R.error(); |
| | | } |
| | | |
| | | Agv agv = agvService.selectByUuid(param.getAgvNo()); |
| | | if (agv == null) { |
| | | return R.error("AGV不存在"); |
| | | } |
| | | |
| | | if (!agvService.judgeEnable(agv.getId())) { |
| | | log.info("{}号AGV不可用,取消任务失败...", agv.getUuid()); |
| | | return R.error(); |
| | | } |
| | | |
| | | AgvModel agvModel = agvModelService.getByAgvId(agv.getId()); |
| | | if (agvModel == null || !AgvModelType.UNDERDRIVE_AGV.toString().equals(agvModel.getType())) { |
| | | return R.error("当前AGV车型不支持取消任务"); |
| | | } |
| | | |
| | | if (!hikInstantActionPublishService.support(agv.getId())) { |
| | | return R.error("当前AGV协议不支持取消任务"); |
| | | } |
| | | |
| | | hikInstantActionPublishService.publishCancelOrder(agv.getUuid()); |
| | | // List<Task> tasks = taskService.selectInSts(agv.getId(), TaskStsType.WAITING, TaskStsType.ASSIGN, TaskStsType.PROGRESS); |
| | | // if (Cools.isEmpty(tasks)) { |
| | | // return R.error("当前AGV没有可取消的任务"); |
| | | // } |
| | | // |
| | | // Long userId = getLoginUserId(); |
| | | // Date now = new Date(); |
| | | // List<Long> taskIds = tasks.stream().map(Task::getId).collect(Collectors.toList()); |
| | | // for (Task task : tasks) { |
| | | // taskService.cancel(task.getId(), userId, Constants.HANDLE); |
| | | // } |
| | | // actionService.update(new LambdaUpdateWrapper<Action>() |
| | | // .in(Action::getTaskId, taskIds) |
| | | // .set(Action::getActionSts, ActionStsType.FINISH.val()) |
| | | // .set(Action::getUpdateBy, userId) |
| | | // .set(Action::getUpdateTime, now)); |
| | | return R.ok("取消任务指令已发送"); |
| | | } |
| | | |
| | | @RequestMapping(value = "/restore/agv", method = {RequestMethod.GET, RequestMethod.POST}) |
| | | public R restoreAgv(@RequestHeader String appKey, @RequestBody HandlerPublishParam param) { |
| | | if (Cools.isEmpty(appKey)) { |
| | |
| | | |
| | | Agv agv = null; |
| | | if (!Cools.isEmpty(param.getAgvNo())) { |
| | | agv = agvService.selectByUuid(param.getAgvNo()); |
| | | List<Task> tasks = taskService.selectInSts(agv.getId(), TaskStsType.WAITING, TaskStsType.ASSIGN, TaskStsType.PROGRESS); |
| | | if (!Cools.isEmpty(tasks)) { |
| | | for (Task task : tasks) { |
| | | if (TaskTypeType.LOC_TO_LOC.toString().equals(task.getTaskTypeEl()) |
| | | || TaskTypeType.LOC_TO_STA.toString().equals(task.getTaskTypeEl()) |
| | | || TaskTypeType.STA_TO_LOC.toString().equals(task.getTaskTypeEl()) |
| | | || TaskTypeType.STA_TO_STA.toString().equals(task.getTaskTypeEl()) |
| | | ) { |
| | | return R.error("Restore Failed, because the agv has Tasks that are associated with Loc!"); |
| | | } |
| | | } |
| | | } |
| | | // agv = agvService.selectByUuid(param.getAgvNo()); |
| | | // List<Task> tasks = taskService.selectInSts(agv.getId(), TaskStsType.WAITING, TaskStsType.ASSIGN, TaskStsType.PROGRESS); |
| | | // if (!Cools.isEmpty(tasks)) { |
| | | // for (Task task : tasks) { |
| | | // if (TaskTypeType.LOC_TO_LOC.toString().equals(task.getTaskTypeEl()) |
| | | // || TaskTypeType.LOC_TO_STA.toString().equals(task.getTaskTypeEl()) |
| | | // || TaskTypeType.STA_TO_LOC.toString().equals(task.getTaskTypeEl()) |
| | | // || TaskTypeType.STA_TO_STA.toString().equals(task.getTaskTypeEl()) |
| | | // ) { |
| | | // return R.error("Restore Failed, because the agv has Tasks that are associated with Loc!"); |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | if (null != agv) { |