|  | @@ -1,5 +1,6 @@
 | 
	
		
			
				|  |  |  package com.xunmei.job.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
	
		
			
				|  | @@ -25,12 +26,11 @@ import java.util.List;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * 定时任务调度信息 服务层
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * @author xunmei
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  | -public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> implements ISysJobService
 | 
	
		
			
				|  |  | -{
 | 
	
		
			
				|  |  | +public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> implements ISysJobService {
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private Scheduler scheduler;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -41,12 +41,10 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |       * 项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据)
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @PostConstruct
 | 
	
		
			
				|  |  | -    public void init() throws SchedulerException, TaskException
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public void init() throws SchedulerException, TaskException {
 | 
	
		
			
				|  |  |          scheduler.clear();
 | 
	
		
			
				|  |  |          List<SysJob> jobList = jobMapper.selectJobAll();
 | 
	
		
			
				|  |  | -        for (SysJob job : jobList)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        for (SysJob job : jobList) {
 | 
	
		
			
				|  |  |              ScheduleUtils.createScheduleJob(scheduler, job);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -54,60 +52,53 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public TableDataInfo selectJob(SysJob job) {
 | 
	
		
			
				|  |  |          Page<SysJob> page;
 | 
	
		
			
				|  |  | -        if (job.getPageNum() != null &&job.getPageSize() != null){
 | 
	
		
			
				|  |  | +        if (job.getPageNum() != null && job.getPageSize() != null) {
 | 
	
		
			
				|  |  |              page = new Page<>(job.getPageNum(), job.getPageSize());
 | 
	
		
			
				|  |  | -        }else{
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  |              page = new Page<>();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        QueryWrapper<SysJob> where = new QueryWrapper<SysJob>();
 | 
	
		
			
				|  |  | +        LambdaQueryWrapper<SysJob> where = new LambdaQueryWrapper<SysJob>();
 | 
	
		
			
				|  |  | +        where.orderByAsc(SysJob::getStatus);
 | 
	
		
			
				|  |  | +        where.orderByDesc(SysJob::getCreateTime);
 | 
	
		
			
				|  |  |          Page<SysJob> list = baseMapper.selectPage(page, where);
 | 
	
		
			
				|  |  | -        TableDataInfo rspData = new TableDataInfo();
 | 
	
		
			
				|  |  | -        rspData.setRows(list.getRecords());
 | 
	
		
			
				|  |  | -        rspData.setTotal(list.getTotal());
 | 
	
		
			
				|  |  | -        rspData.setCode(200);
 | 
	
		
			
				|  |  | -        rspData.setMsg("查询成功");
 | 
	
		
			
				|  |  | -        return rspData;
 | 
	
		
			
				|  |  | +        return TableDataInfo.build(list);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 获取quartz调度器的计划任务列表
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param job 调度信息
 | 
	
		
			
				|  |  |       * @return
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public List<SysJob> selectJobList(SysJob job)
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public List<SysJob> selectJobList(SysJob job) {
 | 
	
		
			
				|  |  |          return jobMapper.selectJobList(job);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 通过调度任务ID查询调度信息
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param jobId 调度任务ID
 | 
	
		
			
				|  |  |       * @return 调度任务对象信息
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public SysJob selectJobById(Long jobId)
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public SysJob selectJobById(Long jobId) {
 | 
	
		
			
				|  |  |          return jobMapper.selectJobById(jobId);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 暂停任务
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param job 调度信息
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public int pauseJob(SysJob job) throws SchedulerException
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public int pauseJob(SysJob job) throws SchedulerException {
 | 
	
		
			
				|  |  |          Long jobId = job.getJobId();
 | 
	
		
			
				|  |  |          String jobGroup = job.getJobGroup();
 | 
	
		
			
				|  |  |          job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
 | 
	
		
			
				|  |  |          int rows = jobMapper.updateJob(job);
 | 
	
		
			
				|  |  | -        if (rows > 0)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (rows > 0) {
 | 
	
		
			
				|  |  |              scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return rows;
 | 
	
	
		
			
				|  | @@ -115,19 +106,17 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 恢复任务
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param job 调度信息
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public int resumeJob(SysJob job) throws SchedulerException
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public int resumeJob(SysJob job) throws SchedulerException {
 | 
	
		
			
				|  |  |          Long jobId = job.getJobId();
 | 
	
		
			
				|  |  |          String jobGroup = job.getJobGroup();
 | 
	
		
			
				|  |  |          job.setStatus(ScheduleConstants.Status.NORMAL.getValue());
 | 
	
		
			
				|  |  |          int rows = jobMapper.updateJob(job);
 | 
	
		
			
				|  |  | -        if (rows > 0)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (rows > 0) {
 | 
	
		
			
				|  |  |              scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return rows;
 | 
	
	
		
			
				|  | @@ -135,18 +124,16 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 删除任务后,所对应的trigger也将被删除
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param job 调度信息
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public int deleteJob(SysJob job) throws SchedulerException
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public int deleteJob(SysJob job) throws SchedulerException {
 | 
	
		
			
				|  |  |          Long jobId = job.getJobId();
 | 
	
		
			
				|  |  |          String jobGroup = job.getJobGroup();
 | 
	
		
			
				|  |  |          int rows = jobMapper.deleteJobById(jobId);
 | 
	
		
			
				|  |  | -        if (rows > 0)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (rows > 0) {
 | 
	
		
			
				|  |  |              scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return rows;
 | 
	
	
		
			
				|  | @@ -154,16 +141,14 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 批量删除调度信息
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param jobIds 需要删除的任务ID
 | 
	
		
			
				|  |  |       * @return 结果
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public void deleteJobByIds(Long[] jobIds) throws SchedulerException
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -        for (Long jobId : jobIds)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +    public void deleteJobByIds(Long[] jobIds) throws SchedulerException {
 | 
	
		
			
				|  |  | +        for (Long jobId : jobIds) {
 | 
	
		
			
				|  |  |              SysJob job = jobMapper.selectJobById(jobId);
 | 
	
		
			
				|  |  |              deleteJob(job);
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -171,21 +156,17 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 任务调度状态修改
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param job 调度信息
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public int changeStatus(SysJob job) throws SchedulerException
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public int changeStatus(SysJob job) throws SchedulerException {
 | 
	
		
			
				|  |  |          int rows = 0;
 | 
	
		
			
				|  |  |          String status = job.getStatus();
 | 
	
		
			
				|  |  | -        if (ScheduleConstants.Status.NORMAL.getValue().equals(status))
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (ScheduleConstants.Status.NORMAL.getValue().equals(status)) {
 | 
	
		
			
				|  |  |              rows = resumeJob(job);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        else if (ScheduleConstants.Status.PAUSE.getValue().equals(status))
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        } else if (ScheduleConstants.Status.PAUSE.getValue().equals(status)) {
 | 
	
		
			
				|  |  |              rows = pauseJob(job);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return rows;
 | 
	
	
		
			
				|  | @@ -193,13 +174,12 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 立即运行任务
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param job 调度信息
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public boolean run(SysJob job) throws SchedulerException
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public boolean run(SysJob job) throws SchedulerException {
 | 
	
		
			
				|  |  |          boolean result = false;
 | 
	
		
			
				|  |  |          Long jobId = job.getJobId();
 | 
	
		
			
				|  |  |          String jobGroup = job.getJobGroup();
 | 
	
	
		
			
				|  | @@ -208,8 +188,7 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |          JobDataMap dataMap = new JobDataMap();
 | 
	
		
			
				|  |  |          dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);
 | 
	
		
			
				|  |  |          JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
 | 
	
		
			
				|  |  | -        if (scheduler.checkExists(jobKey))
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (scheduler.checkExists(jobKey)) {
 | 
	
		
			
				|  |  |              result = true;
 | 
	
		
			
				|  |  |              scheduler.triggerJob(jobKey, dataMap);
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -218,17 +197,15 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 新增任务
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param job 调度信息 调度信息
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public int insertJob(SysJob job) throws SchedulerException, TaskException
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public int insertJob(SysJob job) throws SchedulerException, TaskException {
 | 
	
		
			
				|  |  |          job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
 | 
	
		
			
				|  |  |          int rows = jobMapper.insertJob(job);
 | 
	
		
			
				|  |  | -        if (rows > 0)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (rows > 0) {
 | 
	
		
			
				|  |  |              ScheduleUtils.createScheduleJob(scheduler, job);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return rows;
 | 
	
	
		
			
				|  | @@ -236,17 +213,15 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 更新任务的时间表达式
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param job 调度信息
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -    public int updateJob(SysJob job) throws SchedulerException, TaskException
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public int updateJob(SysJob job) throws SchedulerException, TaskException {
 | 
	
		
			
				|  |  |          SysJob properties = selectJobById(job.getJobId());
 | 
	
		
			
				|  |  |          int rows = jobMapper.updateJob(job);
 | 
	
		
			
				|  |  | -        if (rows > 0)
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (rows > 0) {
 | 
	
		
			
				|  |  |              updateSchedulerJob(job, properties.getJobGroup());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return rows;
 | 
	
	
		
			
				|  | @@ -254,17 +229,15 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 更新任务
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | -     * @param job 任务对象
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param job      任务对象
 | 
	
		
			
				|  |  |       * @param jobGroup 任务组名
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException {
 | 
	
		
			
				|  |  |          Long jobId = job.getJobId();
 | 
	
		
			
				|  |  |          // 判断是否存在
 | 
	
		
			
				|  |  |          JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
 | 
	
		
			
				|  |  | -        if (scheduler.checkExists(jobKey))
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +        if (scheduler.checkExists(jobKey)) {
 | 
	
		
			
				|  |  |              // 防止创建时存在数据问题 先移除,然后在执行创建操作
 | 
	
		
			
				|  |  |              scheduler.deleteJob(jobKey);
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -273,13 +246,12 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 校验cron表达式是否有效
 | 
	
		
			
				|  |  | -     * 
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  |       * @param cronExpression 表达式
 | 
	
		
			
				|  |  |       * @return 结果
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public boolean checkCronExpressionIsValid(String cronExpression)
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | +    public boolean checkCronExpressionIsValid(String cronExpression) {
 | 
	
		
			
				|  |  |          return CronUtils.isValid(cronExpression);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |