jiangping
2024-05-23 a675a9d1acfacbc0f305f868929b4f0f086ec2dd
server/system_service/src/main/java/com/doumee/service/timer/QuartzJobService.java
@@ -1,6 +1,14 @@
package com.doumee.service.timer;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.timer.entity.JobState;
import com.doumee.dao.timer.entity.QuartzJob;
import com.doumee.dao.timer.mapper.QuartzJobMapper;
@@ -25,24 +33,6 @@
    @Resource
    private QuartzManage quartzManage;
    /**
     * 初始化加载定时任务
     */
    @PostConstruct
    public void init () {
        LambdaQueryWrapper<QuartzJob> queryWrapper = new LambdaQueryWrapper<>() ;
        queryWrapper.in(QuartzJob::getState, JobState.JOB_RUN.getStatus(),JobState.JOB_STOP.getStatus());
        List<QuartzJob> jobList = quartzJobMapper.selectList(queryWrapper);
        jobList.forEach(quartzJob -> {
            CronTrigger cronTrigger = quartzManage.getCronTrigger(quartzJob.getId()) ;
            if (Objects.isNull(cronTrigger)){
                quartzManage.createJob(quartzJob);
            } else {
                quartzManage.updateJob(quartzJob);
            }
        });
    }
    /**
     * 任务主键查询
@@ -108,4 +98,32 @@
            quartzManage.run(quartzJob);
        }
    }
    public PageData<QuartzJob> findPage(PageWrap<QuartzJob> pageWrap) {
        IPage<QuartzJob> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<QuartzJob> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.lambda()
                .eq(pageWrap.getModel().getId() != null, QuartzJob::getId, pageWrap.getModel().getId())
                .eq(pageWrap.getModel().getParams() != null, QuartzJob::getParams, pageWrap.getModel().getParams())
                .like(pageWrap.getModel().getBeanName() != null, QuartzJob::getBeanName, pageWrap.getModel().getBeanName())
                .eq(pageWrap.getModel().getState() != null, QuartzJob::getState, pageWrap.getModel().getState())
                .eq(pageWrap.getModel().getRemark() != null, QuartzJob::getRemark, pageWrap.getModel().getRemark())
                .like(pageWrap.getModel().getModule() != null, QuartzJob::getModule, pageWrap.getModel().getModule())
        ;
        return PageData.from(quartzJobMapper.selectPage(page, queryWrapper));
    }
    public void updateById(QuartzJob model) {
        QuartzJob quartzJob = quartzJobMapper.selectById(model.getId()) ;
        if (Objects.isNull(quartzJob)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        pause(model.getId());//暂停
        //先删除就任务
        quartzManage.deleteJob(model.getId());
        quartzJob.setState(JobState.JOB_STOP.getStatus());
        quartzJobMapper.updateById(quartzJob) ;
    }
}