MedicalRecordContentTask.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package com.diagbot.task;
  2. import java.time.LocalDateTime;
  3. import java.util.Date;
  4. import com.diagbot.facade.data.AMedicalRecordContentFacade;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.context.annotation.Configuration;
  7. import org.springframework.scheduling.Trigger;
  8. import org.springframework.scheduling.TriggerContext;
  9. import org.springframework.scheduling.annotation.EnableScheduling;
  10. import org.springframework.scheduling.annotation.SchedulingConfigurer;
  11. import org.springframework.scheduling.config.ScheduledTaskRegistrar;
  12. import org.springframework.scheduling.support.CronTrigger;
  13. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  14. import com.diagbot.entity.SysTaskCron;
  15. import com.diagbot.enums.IsDeleteEnum;
  16. import com.diagbot.facade.SysTaskCronFacade;
  17. import com.diagbot.util.StringUtil;
  18. import lombok.extern.slf4j.Slf4j;
  19. @Configuration //1.主要用于标记配置类,兼备Component的效果。
  20. @EnableScheduling // 2.开启定时任务
  21. @Slf4j
  22. public class MedicalRecordContentTask implements SchedulingConfigurer{
  23. @Autowired
  24. private SysTaskCronFacade sysTaskCronFacade;
  25. private SysTaskCron task001 = new SysTaskCron();
  26. @Autowired
  27. private AMedicalRecordContentFacade aMedicalRecordContentFacade;
  28. /**
  29. * 执行定时任务.
  30. */
  31. @Override
  32. public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
  33. taskRegistrar.addTriggerTask(new Runnable() {
  34. @Override
  35. public void run() {
  36. //1.添加任务内容(Runnable)
  37. if (null != task001
  38. && task001.getIsDeleted().equals(IsDeleteEnum.N.getKey())
  39. && task001.getIsUsed().equals(1)) {
  40. log.info("执行动态定时任务: " + LocalDateTime.now().toLocalTime());
  41. aMedicalRecordContentFacade.executeMrRecordContent();
  42. }
  43. }
  44. }, new Trigger() {
  45. @Override
  46. public Date nextExecutionTime(TriggerContext triggerContext) {
  47. //2.1 从数据库获取执行周期
  48. task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
  49. .eq("cron_code", "TASK007"), false);
  50. String cron = "0 0/1 * * * ?";
  51. //2.2 合法性校验.
  52. if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {
  53. cron = task001.getCron();
  54. }
  55. CronTrigger trigger = new CronTrigger(cron);
  56. return trigger.nextExecutionTime(triggerContext);
  57. }
  58. });
  59. }
  60. }