package com.doumee.dao.timer.scheduler; 
 | 
  
 | 
import com.doumee.config.SpringContextUtil; 
 | 
import com.doumee.dao.timer.entity.LogState; 
 | 
import com.doumee.dao.timer.entity.QuartzJob; 
 | 
import com.doumee.dao.timer.entity.QuartzLog; 
 | 
import com.doumee.service.timer.QuartzLogService; 
 | 
import org.quartz.JobExecutionContext; 
 | 
import org.springframework.scheduling.quartz.QuartzJobBean; 
 | 
  
 | 
import java.lang.reflect.Method; 
 | 
import java.util.Date; 
 | 
  
 | 
/** 
 | 
 * 任务记录 
 | 
 * @author 公众号:知了一笑 
 | 
 * @since 2023-07-26 10:21 
 | 
 */ 
 | 
public class QuartzRecord extends QuartzJobBean { 
 | 
  
 | 
    @Override 
 | 
    protected void executeInternal(JobExecutionContext context) { 
 | 
        QuartzJob quartzJob = (QuartzJob) context.getMergedJobDataMap().get(QuartzJob.JOB_PARAM_KEY) ; 
 | 
        QuartzLogService quartzLogService = (QuartzLogService) SpringContextUtil.getBean("quartzLogService") ; 
 | 
        // 定时器日志记录 
 | 
        QuartzLog quartzLog = new QuartzLog () ; 
 | 
        quartzLog.setJobId(quartzJob.getId()); 
 | 
        quartzLog.setBeanName(quartzJob.getBeanName()); 
 | 
        quartzLog.setParams(quartzJob.getParams()); 
 | 
        quartzLog.setCreateTime(new Date()); 
 | 
        long beginTime = System.currentTimeMillis() ; 
 | 
        try { 
 | 
            // 加载并执行 
 | 
            Object target = SpringContextUtil.getBean(quartzJob.getBeanName()); 
 | 
            Method method = target.getClass().getDeclaredMethod("run", String.class,String.class); 
 | 
            method.invoke(target, quartzJob.getParams(),quartzJob.getModule()); 
 | 
            long executeTime = System.currentTimeMillis() - beginTime; 
 | 
            quartzLog.setTimes((int)executeTime); 
 | 
            quartzLog.setModule(quartzJob.getModule()); 
 | 
            quartzLog.setState(LogState.LOG_SUS.getStatus()); 
 | 
        } catch (Exception e){ 
 | 
            // 异常信息 
 | 
            long executeTime = System.currentTimeMillis() - beginTime; 
 | 
            quartzLog.setTimes((int)executeTime); 
 | 
            quartzLog.setState(LogState.LOG_FAIL.getStatus()); 
 | 
            quartzLog.setError(e.getMessage()); 
 | 
        } finally { 
 | 
            // 保存执行日志 
 | 
            quartzLogService.insert(quartzLog) ; 
 | 
        } 
 | 
    } 
 | 
} 
 |