2 天以前 4f55d3cb4bc644e4534106336f2047af1a4db5df
src/main/java/com/ruoyi/inspectiontask/service/impl/TimingTaskJob.java
@@ -15,9 +15,12 @@
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
@@ -56,9 +59,12 @@
//                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()) {
@@ -97,16 +103,32 @@
        }
    }
    // 这就是您提供的代码封装成的方法
    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();
@@ -116,6 +138,7 @@
        inspectionTask.setFrequencyType(timingTask.getFrequencyType());
        inspectionTask.setFrequencyDetail(timingTask.getFrequencyDetail());
        inspectionTask.setTenantId(timingTask.getTenantId());
        inspectionTask.setInspectionStatus(1);
        return inspectionTask;
    }