dataease-dm/backend/src/main/java/io/dataease/service/ScheduleService.java

82 lines
3.6 KiB
Java
Raw Normal View History

package io.dataease.service;
import io.dataease.base.domain.DatasetTableTask;
2021-03-18 17:59:52 +08:00
import io.dataease.commons.constants.ScheduleType;
2021-03-10 18:13:27 +08:00
import io.dataease.job.sechedule.ExtractDataJob;
import io.dataease.job.sechedule.ScheduleManager;
2021-11-19 18:44:58 +08:00
import io.dataease.job.sechedule.strategy.TaskHandler;
import io.dataease.job.sechedule.strategy.TaskStrategyFactory;
import io.dataease.plugins.common.entity.GlobalTaskEntity;
import org.apache.commons.lang3.StringUtils;
import org.quartz.JobKey;
import org.quartz.TriggerKey;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
/**
* @Author gin
* @Date 2021/3/5 2:38 下午
*/
@Service
public class ScheduleService {
@Resource
private ScheduleManager scheduleManager;
public void addSchedule(DatasetTableTask datasetTableTask) throws Exception {
2021-03-18 17:59:52 +08:00
if (StringUtils.equalsIgnoreCase(datasetTableTask.getRate(), ScheduleType.SIMPLE.toString())) {
scheduleManager.addOrUpdateSingleJob(new JobKey(datasetTableTask.getId(), datasetTableTask.getTableId()),
new TriggerKey(datasetTableTask.getId(), datasetTableTask.getTableId()),
2021-03-10 18:13:27 +08:00
ExtractDataJob.class,
2021-03-18 17:59:52 +08:00
new Date(datasetTableTask.getStartTime()),
scheduleManager.getDefaultJobDataMap(datasetTableTask.getTableId(), datasetTableTask.getCron(), datasetTableTask.getId(), datasetTableTask.getType()));
} else {
Date endTime;
2021-06-18 11:19:55 +08:00
if (StringUtils.equalsIgnoreCase(datasetTableTask.getEnd(), "1")) {
if (datasetTableTask.getEndTime() == null || datasetTableTask.getEndTime() == 0) {
endTime = null;
} else {
endTime = new Date(datasetTableTask.getEndTime());
if (endTime.before(new Date())) {
deleteSchedule(datasetTableTask);
return;
}
2021-06-16 14:09:37 +08:00
}
2021-06-18 11:19:55 +08:00
} else {
endTime = null;
}
scheduleManager.addOrUpdateCronJob(new JobKey(datasetTableTask.getId(), datasetTableTask.getTableId()),
new TriggerKey(datasetTableTask.getId(), datasetTableTask.getTableId()),
2021-03-10 18:13:27 +08:00
ExtractDataJob.class,
datasetTableTask.getCron(), new Date(datasetTableTask.getStartTime()), endTime,
2021-03-18 17:59:52 +08:00
scheduleManager.getDefaultJobDataMap(datasetTableTask.getTableId(), datasetTableTask.getCron(), datasetTableTask.getId(), datasetTableTask.getType()));
}
}
public void deleteSchedule(DatasetTableTask datasetTableTask) {
scheduleManager.removeJob(new JobKey(datasetTableTask.getId(), datasetTableTask.getTableId()), new TriggerKey(datasetTableTask.getId(), datasetTableTask.getTableId()));
}
2021-07-08 09:14:55 +08:00
public void fireNow(DatasetTableTask datasetTableTask) throws Exception{
scheduleManager.fireNow(datasetTableTask.getId(), datasetTableTask.getTableId());
}
2021-11-19 18:44:58 +08:00
public void addSchedule(GlobalTaskEntity task) throws Exception{
TaskHandler taskHandler = TaskStrategyFactory.getInvokeStrategy(task.getTaskType());
taskHandler.addTask(scheduleManager, task);
}
public void deleteSchedule(GlobalTaskEntity task) {
TaskHandler taskHandler = TaskStrategyFactory.getInvokeStrategy(task.getTaskType());
taskHandler.removeTask(scheduleManager, task);
}
public void fireNow(GlobalTaskEntity task) throws Exception{
TaskHandler taskHandler = TaskStrategyFactory.getInvokeStrategy(task.getTaskType());
taskHandler.executeTask(scheduleManager, task);
}
}