| | |
| | | //// + Arrays.toString(jobIds.toArray())); |
| | | // } |
| | | |
| | | // Group job id by dock sn. |
| | | // 按 dock sn 对作业 ID 进行分组。 |
| | | Map<String, List<String>> dockJobs = waylineJobs.stream() |
| | | .collect(Collectors.groupingBy(WaylineJobDTO::getDockSn, |
| | | Collectors.mapping(WaylineJobDTO::getJobId, Collectors.toList()))); |
| | |
| | | */ |
| | | @Override |
| | | public ResponseResult publishCancelTask(String dockSn, List<String> jobIds) { |
| | | |
| | | for(String jobId : jobIds) { |
| | | Optional<WaylineJobDTO> waylineJobDTO = this.getJobByJobId(jobId); |
| | | if (waylineJobDTO.isEmpty()) { |
| | | return ResponseResult.error("任务不存在,jobId: " + jobId); |
| | | } |
| | | if (waylineJobDTO.get().getTaskType() == 3) { |
| | | // 已经执行完的子任务一起全部删除 |
| | | this.deleteTask(jobId); |
| | | log.info("删除循环任务已经完成,主任务ID:{}。", waylineJobDTO.get().getJobId()); |
| | | List<WaylineJobDTO> waylineParentIds = this.getJobByJobParentId(jobId); |
| | | if (!waylineParentIds.isEmpty()) { |
| | | for (WaylineJobDTO waylineJob : waylineParentIds) { |
| | | this.deleteTask(waylineJob.getJobId()); |
| | | RedisOpsUtils.zRemove(RedisConst.WAYLINE_JOB_TIMED_EXECUTE, dockSn + RedisConst.DELIMITER + waylineJob.getJobId()); |
| | | log.info("删除循环子任务已经完成,子任务ID:{}。", waylineJob.getJobId()); |
| | | } |
| | | } |
| | | return ResponseResult.success(); |
| | | } |
| | | } |
| | | boolean isOnline = deviceService.checkDeviceOnline(dockSn); |
| | | if (!isOnline) { |
| | | Integer errorCode = CommonErrorEnum.DEVICE_OFFLINE.getErrorCode(); |
| | |
| | | .status(WaylineJobStatusEnum.CANCEL.getVal()) |
| | | .completedTime(LocalDateTime.now()) |
| | | .build()); |
| | | RedisOpsUtils.zRemove(RedisConst.WAYLINE_JOB_TIMED_EXECUTE, RedisConst.DELIMITER + dockSn + RedisConst.DELIMITER + jobId); |
| | | RedisOpsUtils.zRemove(RedisConst.WAYLINE_JOB_TIMED_EXECUTE, dockSn + RedisConst.DELIMITER + jobId); |
| | | // 原流程是修改表中数据的status状态值,现在的精力是直接删除 |
| | | this.deleteTask(jobId); |
| | | } |
| | |
| | | public List<WaylineJobDTO> getJobsByConditions(Collection<String> jobIds, WaylineJobStatusEnum status) { |
| | | return mapper.selectList( |
| | | new LambdaQueryWrapper<WaylineJobEntity>() |
| | | .eq(Objects.nonNull(status), WaylineJobEntity::getStatus, status.getVal()) |
| | | // 不过滤状态, |
| | | //.eq(Objects.nonNull(status), WaylineJobEntity::getStatus, status.getVal()) |
| | | .and(!CollectionUtils.isEmpty(jobIds), |
| | | wrapper -> jobIds.forEach(id -> wrapper.eq(WaylineJobEntity::getJobId, id).or()))) |
| | | .stream() |
| | |
| | | .orderByDesc(WaylineJobEntity::getId)); |
| | | } |
| | | |
| | | /** |
| | | * 获取所有待定状态的定时任务,未执行即将要执行的。 |
| | | * */ |
| | | public List<WaylineJobEntity> selectScheduledTaskList(){ |
| | | // "1":"定时任务" |
| | | return mapper.selectList(new LambdaQueryWrapper<WaylineJobEntity>() |
| | | .eq(WaylineJobEntity::getTaskType, 1) |
| | | .eq(WaylineJobEntity::getStatus, WaylineJobStatusEnum.PENDING.getVal()) |
| | | .gt(WaylineJobEntity::getBeginTime, System.currentTimeMillis()) |
| | | .orderByDesc(WaylineJobEntity::getBeginTime)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 根据航班任务ID获取航班任务资源 |