TimeTriggerRunner.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package jnpf.flowable.job;
  2. import jnpf.flowable.model.trigger.TimeTriggerModel;
  3. import jnpf.util.JsonUtil;
  4. import jnpf.util.RedisUtil;
  5. import org.quartz.JobDataMap;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.ApplicationArguments;
  8. import org.springframework.boot.ApplicationRunner;
  9. import org.springframework.stereotype.Component;
  10. import java.util.Date;
  11. import java.util.List;
  12. /**
  13. * 类的描述
  14. *
  15. * @author JNPF@YinMai Info. Co., Ltd
  16. * @version 5.0.x
  17. * @since 2024/9/20 14:55
  18. */
  19. @Component
  20. public class TimeTriggerRunner implements ApplicationRunner {
  21. @Autowired
  22. private RedisUtil redisUtil;
  23. @Override
  24. public void run(ApplicationArguments args) throws Exception {
  25. List<String> hashValues = redisUtil.getHashValues(TriggerJobUtil.TRIGGER_MODEL);
  26. for (String value : hashValues) {
  27. TimeTriggerModel model = JsonUtil.getJsonToBean(value, TimeTriggerModel.class);
  28. JobDataMap jobDataMap = new JobDataMap();
  29. jobDataMap.putAll(JsonUtil.entityToMap(model));
  30. Date startTime = new Date(model.getStartTime());
  31. Date endTime = null != model.getEndTime() ? new Date(model.getEndTime()) : null;
  32. boolean isAdd = null != endTime ? endTime.getTime() > System.currentTimeMillis() : true;
  33. if (isAdd) {
  34. QuartzJobUtil.addJob(model.getId(), model.getCron(), TimeTriggerJob.class, jobDataMap, startTime, endTime);
  35. }
  36. }
  37. }
  38. }