liding
3 天以前 49e1bc66ebaf696ebd3fc3ed33d65c8795fd3cde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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;
    }
}