| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package jnpf.integrate.job;
- import jnpf.base.UserInfo;
- import jnpf.config.ConfigValueUtil;
- import jnpf.database.util.TenantDataSourceUtil;
- import jnpf.exception.TenantInvalidException;
- import jnpf.integrate.entity.IntegrateEntity;
- import jnpf.integrate.entity.IntegrateQueueEntity;
- import jnpf.integrate.model.nodeJson.IntegrateModel;
- import jnpf.integrate.service.IntegrateQueueService;
- import jnpf.integrate.service.IntegrateService;
- import jnpf.util.JsonUtil;
- import jnpf.util.RandomUtil;
- import jnpf.util.RedisUtil;
- import jnpf.util.StringUtil;
- import jnpf.util.context.SpringContext;
- import lombok.extern.slf4j.Slf4j;
- import org.quartz.*;
- import org.springframework.scheduling.quartz.QuartzJobBean;
- import java.util.Date;
- import java.util.Objects;
- @Slf4j
- @DisallowConcurrentExecution
- public class Integrate extends QuartzJobBean {
- private static RedisUtil redisUtil;
- private static ConfigValueUtil configValueUtil;
- private static IntegrateService integrateService;
- private static IntegrateQueueService integrateQueueService;
- static {
- redisUtil = SpringContext.getBean(RedisUtil.class);
- configValueUtil = SpringContext.getBean(ConfigValueUtil.class);
- integrateService = SpringContext.getBean(IntegrateService.class);
- integrateQueueService = SpringContext.getBean(IntegrateQueueService.class);
- }
- @Override
- protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
- JobDetail jobDetail = context.getJobDetail();
- String jobName = jobDetail.getKey().getName();
- JobDataMap jobDataMap = jobDetail.getJobDataMap();
- IntegrateModel model = IntegrateJobUtil.getModel(JsonUtil.getJsonToBean(jobDataMap, IntegrateModel.class), redisUtil);
- boolean isModel = model == null;
- IntegrateModel integrateModel = isModel ? JsonUtil.getJsonToBean(jobDataMap, IntegrateModel.class) : model;
- if (integrateModel != null) {
- UserInfo userInfo = integrateModel.getUserInfo();
- if (configValueUtil.isMultiTenancy()) {
- try {
- TenantDataSourceUtil.switchTenant(userInfo.getTenantId());
- }catch (TenantInvalidException e){
- // 租户无效 禁用调度, 删除任务
- log.error("Integrate, 租户无效, 删除任务:{}", userInfo.getTenantId());
- IntegrateJobUtil.removeModel(integrateModel, redisUtil);
- QuartzUtil.deleteJob(jobName);
- return;
- }
- }
- IntegrateEntity info = integrateService.getInfo(integrateModel.getId());
- if (info != null) {
- integrateModel.setTime(System.currentTimeMillis());
- Integer num = integrateModel.getNum();
- Integer endTimeType = integrateModel.getEndTimeType();
- Integer endLimit = integrateModel.getEndLimit();
- boolean isNext = Objects.equals(endTimeType, 1) ? num + 1 <= endLimit : Objects.equals(endTimeType, 2) ? integrateModel.getTime() <= integrateModel.getEndTime() : true;
- integrateModel.setNum(++num);
- if (isNext) {
- IntegrateJobUtil.insertModel(integrateModel, redisUtil);
- IntegrateQueueEntity entity = new IntegrateQueueEntity();
- entity.setState(0);
- entity.setId(RandomUtil.uuId());
- entity.setIntegrateId(integrateModel.getId());
- entity.setExecutionTime(new Date());
- entity.setFullName(info.getFullName());
- IntegrateModel integrate = new IntegrateModel();
- integrate.setId(entity.getId());
- integrate.setUserInfo(userInfo);
- IntegrateJobUtil.insertIntegrate(integrate,redisUtil);
- integrateQueueService.create(entity);
- } else {
- IntegrateJobUtil.removeModel(integrateModel, redisUtil);
- QuartzUtil.deleteJob(jobName);
- }
- } else {
- IntegrateJobUtil.removeModel(integrateModel, redisUtil);
- QuartzUtil.deleteJob(jobName);
- }
- }
- }
- }
|