BehospitalInfoAnalyzeTask.java 2.6 KB

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