| | |
| | | import java.time.LocalDateTime; |
| | | import java.time.LocalTime; |
| | | import java.time.YearMonth; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Component |
| | | @DisallowConcurrentExecution // 禁止并发执行同一个Job |
| | |
| | | // throw new JobExecutionException("定时任务已禁用: " + taskId); |
| | | // } |
| | | |
| | | // 2. 创建并保存巡检任务记录 - 这就是您提供的代码应该放的位置 |
| | | InspectionTask inspectionTask = createInspectionTask(timingTask); |
| | | inspectionTaskMapper.insert(inspectionTask); |
| | | // 2. 解析设备ID列表,为每个设备创建巡检任务记录 |
| | | List<Integer> deviceIds = resolveDeviceIds(timingTask); |
| | | for (Integer deviceId : deviceIds) { |
| | | InspectionTask inspectionTask = createInspectionTask(timingTask, deviceId); |
| | | inspectionTaskMapper.insert(inspectionTask); |
| | | } |
| | | |
| | | // 3. 更新定时任务的执行时间 |
| | | if (!tasks.isEmpty()) { |
| | |
| | | } |
| | | } |
| | | |
| | | // 这就是您提供的代码封装成的方法 |
| | | private InspectionTask createInspectionTask(TimingTask timingTask) { |
| | | private List<Integer> resolveDeviceIds(TimingTask timingTask) throws JobExecutionException { |
| | | if (StringUtils.isNotBlank(timingTask.getTaskIdsStr())) { |
| | | return Arrays.stream(timingTask.getTaskIdsStr().split(",")) |
| | | .map(String::trim) |
| | | .filter(StringUtils::isNotBlank) |
| | | .map(Integer::parseInt) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | if (timingTask.getTaskId() != null) { |
| | | List<Integer> list = new ArrayList<>(); |
| | | list.add(timingTask.getTaskId()); |
| | | return list; |
| | | } |
| | | throw new JobExecutionException("定时任务 " + timingTask.getId() + " 未配置设备ID"); |
| | | } |
| | | |
| | | private InspectionTask createInspectionTask(TimingTask timingTask, Integer deviceId) { |
| | | InspectionTask inspectionTask = new InspectionTask(); |
| | | |
| | | // 复制基本属性 |
| | | inspectionTask.setTaskName(timingTask.getTaskName()); |
| | | inspectionTask.setInspectionProject(timingTask.getInspectionProject()); |
| | | inspectionTask.setTaskId(timingTask.getTaskId()); |
| | | inspectionTask.setTaskId(deviceId); |
| | | inspectionTask.setInspectorId(timingTask.getInspectorIds()); |
| | | inspectionTask.setInspectionLocation(timingTask.getInspectionLocation()); |
| | | inspectionTask.setAreaId(timingTask.getAreaId()); |
| | | inspectionTask.setTimingId(timingTask.getId()); |
| | | String remarks = "自动生成自定时任务ID: " + timingTask.getId(); |
| | | if (StringUtils.isNotBlank(timingTask.getRemarks())) { |
| | | remarks = remarks + ";" + timingTask.getRemarks(); |
| | |
| | | inspectionTask.setFrequencyType(timingTask.getFrequencyType()); |
| | | inspectionTask.setFrequencyDetail(timingTask.getFrequencyDetail()); |
| | | inspectionTask.setTenantId(timingTask.getTenantId()); |
| | | inspectionTask.setInspectionStatus(1); |
| | | |
| | | return inspectionTask; |
| | | } |