| 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) ; | 
|         } | 
|     } | 
| } |