SchedulerJobServiceImpl.java 3.64 KB
Newer Older
谢恒's avatar
谢恒 committed
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
package com.hs.admin.service.impl;

import com.hs.admin.base.CodeMessageEnum;
import com.hs.admin.base.HsRuntimeException;
import com.hs.admin.bean.SysTask;
import com.hs.admin.dao.SysTaskDao;
import com.hs.admin.service.JobManagerService;
import com.hs.admin.service.SchedulerJobService;
import com.hs.admin.util.JsonUtils;
import com.hs.admin.util.LogUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;

import javax.annotation.Resource;

/**
 * @author xieheng
 */
@Service
public class SchedulerJobServiceImpl implements SchedulerJobService {
    @Resource
    JobManagerService jobManagerService;

    /**
     * @description: 校验任务id
     * @param: taskId
     * @param: request
     * @return: void
     * @author: XieHeng
     * @date: 2021/5/6 11:03 上午
     */
    private void checkId(Long taskId, String prefix) {
        if (taskId < 1) {
            LogUtil.error(prefix + "参数错误:taskId=" + taskId);
            throw new HsRuntimeException(CodeMessageEnum.REQUEST_ERROR.getCode(), CodeMessageEnum.REQUEST_ERROR.getMsg());
        }
    }


    @Override
    public boolean initJob(SysTask task) {
        return excuteInitJobOperate(task);
    }

    /**
     * @description: 立即执行,只运行一次
     * @param: sysTask
     * @return: boolean
     * @author: XieHeng
     * @date: 2021/5/7 2:56 下午
     */
    @Override
    public boolean runNow(SysTask sysTask) {
        return jobManagerService.runJobNow(sysTask);
    }

    private boolean excuteInitJobOperate(SysTask task) {
        if (!ObjectUtils.isEmpty(task)) {
谢恒's avatar
谢恒 committed
60
            return jobManagerService.addJob(task);
谢恒's avatar
谢恒 committed
61 62 63 64 65 66 67 68
        } else {
            LogUtil.error("初始化定时任务失败");
            throw new HsRuntimeException(CodeMessageEnum.RECORDS_NOT_EXIST.getCode(), CodeMessageEnum.RECORDS_NOT_EXIST.getMsg());
        }
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
谢恒's avatar
谢恒 committed
69
    public boolean pauseJob(SysTask task) {
谢恒's avatar
谢恒 committed
70
        if (!ObjectUtils.isEmpty(task)) {
谢恒's avatar
谢恒 committed
71
            return jobManagerService.pauseJob(task);
谢恒's avatar
谢恒 committed
72 73 74 75 76 77 78 79 80 81 82
        } else {
            LogUtil.error("暂停任务失败:" + JsonUtils.beanToJson(task));
            throw new HsRuntimeException(CodeMessageEnum.RECORDS_NOT_EXIST.getCode(), CodeMessageEnum.RECORDS_NOT_EXIST.getMsg());
        }
    }

    @Override
    public boolean resumeJob(SysTask task) {
        if (!ObjectUtils.isEmpty(task)) {
            boolean b = jobManagerService.resumeJob(task);
            if (b) {
谢恒's avatar
谢恒 committed
83 84
                LogUtil.error("恢复任务" + JsonUtils.beanToJson(task));
                return b;
谢恒's avatar
谢恒 committed
85 86
            }
        }
谢恒's avatar
谢恒 committed
87 88
        LogUtil.error("恢复任务失败" + JsonUtils.beanToJson(task));
        throw new HsRuntimeException(CodeMessageEnum.RECORDS_NOT_EXIST.getCode(), CodeMessageEnum.RECORDS_NOT_EXIST.getMsg());
谢恒's avatar
谢恒 committed
89 90 91 92 93 94

    }

    @Override
    public boolean deleteJob(SysTask task) {
        if (!ObjectUtils.isEmpty(task)) {
谢恒's avatar
谢恒 committed
95
            return jobManagerService.deleteJob(task);
谢恒's avatar
谢恒 committed
96 97 98 99 100 101 102
        } else {
            LogUtil.error("删除任务失败" + JsonUtils.beanToJson(task));
            throw new HsRuntimeException(CodeMessageEnum.RECORDS_NOT_EXIST.getCode(), CodeMessageEnum.RECORDS_NOT_EXIST.getMsg());
        }
    }

    @Override
谢恒's avatar
谢恒 committed
103
    public SysTask editCron(SysTask task, String cron) {
谢恒's avatar
谢恒 committed
104 105 106 107 108 109
        if (ObjectUtils.isEmpty(task)) {
            throw new HsRuntimeException(CodeMessageEnum.RECORDS_NOT_EXIST.getMsg(), CodeMessageEnum.RECORDS_NOT_EXIST.getMsg());
        }
        task.setCronExpression(cron);
        jobManagerService.updateJobCron(task);
        jobManagerService.runJobNow(task);
谢恒's avatar
谢恒 committed
110
        return task;
谢恒's avatar
谢恒 committed
111 112 113
    }


谢恒's avatar
谢恒 committed
114 115


谢恒's avatar
谢恒 committed
116
}