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;
|
}
|
}
|