package com.ruoyi.business.task; import com.ruoyi.business.entity.InspectionTask; import com.ruoyi.business.entity.TimingTask; import com.ruoyi.business.mapper.InspectionTaskMapper; import com.ruoyi.business.service.TimingTaskService; import org.quartz.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.time.LocalDateTime; @Component @DisallowConcurrentExecution // 禁止并发执行同一个Job public class TimingTaskJob implements Job { @Autowired private TimingTaskService timingTaskService; @Autowired private InspectionTaskMapper inspectionTaskMapper; @Override public void execute(JobExecutionContext context) throws JobExecutionException { JobDataMap jobDataMap = context.getJobDetail().getJobDataMap(); Long taskId = jobDataMap.getLong("taskId"); try { // 1. 获取定时任务详情 TimingTask timingTask = timingTaskService.getById(taskId); if (timingTask == null || !timingTask.isActive()) { return; } // 2. 创建并保存巡检任务记录 - 这就是您提供的代码应该放的位置 InspectionTask inspectionTask = createInspectionTask(timingTask); inspectionTaskMapper.insert(inspectionTask); // 3. 更新定时任务的执行时间 timingTaskService.updateTaskExecutionTime(taskId); // 4. 记录执行日志 // timingTaskService.recordExecutionLog(taskId, true, "任务执行成功,生成巡检任务ID: " + inspectionTask.getId()); } catch (Exception e) { // timingTaskService.recordExecutionLog(taskId, false, "任务执行失败: " + e.getMessage()); throw new JobExecutionException(e); } } // 这就是您提供的代码封装成的方法 private InspectionTask createInspectionTask(TimingTask timingTask) { InspectionTask inspectionTask = new InspectionTask(); // 复制基本属性 inspectionTask.setTaskName(timingTask.getTaskName()); inspectionTask.setInspectorId(timingTask.getInspectorIds()); inspectionTask.setInspectionLocation(timingTask.getInspectionLocation()); inspectionTask.setRemarks("自动生成自定时任务ID: " + timingTask.getId()); inspectionTask.setRegistrantId(timingTask.getRegistrantId()); inspectionTask.setFrequencyType(timingTask.getFrequencyType()); return inspectionTask; } }