|
@@ -12,11 +12,15 @@ import cn.iocoder.yudao.module.infra.dal.dataobject.job.JobDO;
|
|
import cn.iocoder.yudao.module.infra.dal.mysql.job.JobMapper;
|
|
import cn.iocoder.yudao.module.infra.dal.mysql.job.JobMapper;
|
|
import cn.iocoder.yudao.module.infra.enums.job.JobStatusEnum;
|
|
import cn.iocoder.yudao.module.infra.enums.job.JobStatusEnum;
|
|
import jakarta.annotation.Resource;
|
|
import jakarta.annotation.Resource;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.quartz.SchedulerException;
|
|
import org.quartz.SchedulerException;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Objects;
|
|
|
|
+
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.containsAny;
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.containsAny;
|
|
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
|
|
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
|
|
@@ -28,6 +32,7 @@ import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
@Validated
|
|
@Validated
|
|
|
|
+@Slf4j
|
|
public class JobServiceImpl implements JobService {
|
|
public class JobServiceImpl implements JobService {
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
@@ -129,6 +134,26 @@ public class JobServiceImpl implements JobService {
|
|
schedulerManager.triggerJob(job.getId(), job.getHandlerName(), job.getHandlerParam());
|
|
schedulerManager.triggerJob(job.getId(), job.getHandlerName(), job.getHandlerParam());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void syncJob() throws SchedulerException {
|
|
|
|
+ // 1. 查询 Job 配置
|
|
|
|
+ List<JobDO> jobList = jobMapper.selectList();
|
|
|
|
+
|
|
|
|
+ // 2. 遍历处理
|
|
|
|
+ for (JobDO job : jobList) {
|
|
|
|
+ // 2.1 先删除,再创建
|
|
|
|
+ schedulerManager.deleteJob(job.getHandlerName());
|
|
|
|
+ schedulerManager.addJob(job.getId(), job.getHandlerName(), job.getHandlerParam(), job.getCronExpression(),
|
|
|
|
+ job.getRetryCount(), job.getRetryInterval());
|
|
|
|
+ // 2.2 如果 status 为暂停,则需要暂停
|
|
|
|
+ if (Objects.equals(job.getStatus(), JobStatusEnum.STOP.getStatus())) {
|
|
|
|
+ schedulerManager.pauseJob(job.getHandlerName());
|
|
|
|
+ }
|
|
|
|
+ log.info("[syncJob][id({}) handlerName({}) 同步完成]", job.getId(), job.getHandlerName());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public void deleteJob(Long id) throws SchedulerException {
|
|
public void deleteJob(Long id) throws SchedulerException {
|