Integrate.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package jnpf.integrate.job;
  2. import jnpf.base.UserInfo;
  3. import jnpf.config.ConfigValueUtil;
  4. import jnpf.database.util.TenantDataSourceUtil;
  5. import jnpf.exception.TenantInvalidException;
  6. import jnpf.integrate.entity.IntegrateEntity;
  7. import jnpf.integrate.entity.IntegrateQueueEntity;
  8. import jnpf.integrate.model.nodeJson.IntegrateModel;
  9. import jnpf.integrate.service.IntegrateQueueService;
  10. import jnpf.integrate.service.IntegrateService;
  11. import jnpf.util.JsonUtil;
  12. import jnpf.util.RandomUtil;
  13. import jnpf.util.RedisUtil;
  14. import jnpf.util.StringUtil;
  15. import jnpf.util.context.SpringContext;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.quartz.*;
  18. import org.springframework.scheduling.quartz.QuartzJobBean;
  19. import java.util.Date;
  20. import java.util.Objects;
  21. @Slf4j
  22. @DisallowConcurrentExecution
  23. public class Integrate extends QuartzJobBean {
  24. private static RedisUtil redisUtil;
  25. private static ConfigValueUtil configValueUtil;
  26. private static IntegrateService integrateService;
  27. private static IntegrateQueueService integrateQueueService;
  28. static {
  29. redisUtil = SpringContext.getBean(RedisUtil.class);
  30. configValueUtil = SpringContext.getBean(ConfigValueUtil.class);
  31. integrateService = SpringContext.getBean(IntegrateService.class);
  32. integrateQueueService = SpringContext.getBean(IntegrateQueueService.class);
  33. }
  34. @Override
  35. protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
  36. JobDetail jobDetail = context.getJobDetail();
  37. String jobName = jobDetail.getKey().getName();
  38. JobDataMap jobDataMap = jobDetail.getJobDataMap();
  39. IntegrateModel model = IntegrateJobUtil.getModel(JsonUtil.getJsonToBean(jobDataMap, IntegrateModel.class), redisUtil);
  40. boolean isModel = model == null;
  41. IntegrateModel integrateModel = isModel ? JsonUtil.getJsonToBean(jobDataMap, IntegrateModel.class) : model;
  42. if (integrateModel != null) {
  43. UserInfo userInfo = integrateModel.getUserInfo();
  44. if (configValueUtil.isMultiTenancy()) {
  45. try {
  46. TenantDataSourceUtil.switchTenant(userInfo.getTenantId());
  47. }catch (TenantInvalidException e){
  48. // 租户无效 禁用调度, 删除任务
  49. log.error("Integrate, 租户无效, 删除任务:{}", userInfo.getTenantId());
  50. IntegrateJobUtil.removeModel(integrateModel, redisUtil);
  51. QuartzUtil.deleteJob(jobName);
  52. return;
  53. }
  54. }
  55. IntegrateEntity info = integrateService.getInfo(integrateModel.getId());
  56. if (info != null) {
  57. integrateModel.setTime(System.currentTimeMillis());
  58. Integer num = integrateModel.getNum();
  59. Integer endTimeType = integrateModel.getEndTimeType();
  60. Integer endLimit = integrateModel.getEndLimit();
  61. boolean isNext = Objects.equals(endTimeType, 1) ? num + 1 <= endLimit : Objects.equals(endTimeType, 2) ? integrateModel.getTime() <= integrateModel.getEndTime() : true;
  62. integrateModel.setNum(++num);
  63. if (isNext) {
  64. IntegrateJobUtil.insertModel(integrateModel, redisUtil);
  65. IntegrateQueueEntity entity = new IntegrateQueueEntity();
  66. entity.setState(0);
  67. entity.setId(RandomUtil.uuId());
  68. entity.setIntegrateId(integrateModel.getId());
  69. entity.setExecutionTime(new Date());
  70. entity.setFullName(info.getFullName());
  71. IntegrateModel integrate = new IntegrateModel();
  72. integrate.setId(entity.getId());
  73. integrate.setUserInfo(userInfo);
  74. IntegrateJobUtil.insertIntegrate(integrate,redisUtil);
  75. integrateQueueService.create(entity);
  76. } else {
  77. IntegrateJobUtil.removeModel(integrateModel, redisUtil);
  78. QuartzUtil.deleteJob(jobName);
  79. }
  80. } else {
  81. IntegrateJobUtil.removeModel(integrateModel, redisUtil);
  82. QuartzUtil.deleteJob(jobName);
  83. }
  84. }
  85. }
  86. }