初始代码
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>yunzhupaas-visualdev-integrate</artifactId>
|
||||
<groupId>com.yunzhupaas</groupId>
|
||||
<version>5.2.0-RELEASE</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>yunzhupaas-visualdev-integrate-biz</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.yunzhupaas</groupId>
|
||||
<artifactId>yunzhupaas-visualdev-integrate-entity</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.yunzhupaas</groupId>
|
||||
<artifactId>yunzhupaas-visualdev-base-biz</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.yunzhupaas</groupId>
|
||||
<artifactId>yunzhupaas-visualdev-onlinedev-biz</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.yunzhupaas</groupId>
|
||||
<artifactId>yunzhupaas-provider</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.yunzhupaas</groupId>
|
||||
<artifactId>yunzhupaas-flowable-biz</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.yunzhupaas.integrate.config;
|
||||
|
||||
import com.yunzhupaas.integrate.job.IntegrateQueryJobUtil;
|
||||
import org.quartz.*;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class IntegrateConfig {
|
||||
|
||||
@Bean
|
||||
public JobDetail integrateJobDetail() {
|
||||
JobDetail JobDetail = JobBuilder.newJob(IntegrateQueryJobUtil.class)
|
||||
.storeDurably() //必须调用该方法,添加任务
|
||||
.build();
|
||||
return JobDetail;
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Trigger integrateTrigger() {
|
||||
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("* * * * * ?");
|
||||
Trigger trigger = TriggerBuilder.newTrigger()
|
||||
.forJob(integrateJobDetail())
|
||||
.withSchedule(cronScheduleBuilder) //对触发器配置任务
|
||||
.build();
|
||||
return trigger;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.yunzhupaas.integrate.config;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.yunzhupaas.base.UserInfo;
|
||||
import com.yunzhupaas.integrate.job.Integrate;
|
||||
import com.yunzhupaas.integrate.job.IntegrateJobUtil;
|
||||
import com.yunzhupaas.integrate.job.QuartzUtil;
|
||||
import com.yunzhupaas.integrate.model.nodeJson.IntegrateModel;
|
||||
import com.yunzhupaas.util.JsonUtil;
|
||||
import com.yunzhupaas.util.RedisUtil;
|
||||
import com.yunzhupaas.util.StringUtil;
|
||||
import org.quartz.JobDataMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Component
|
||||
public class IntegrateListener implements ApplicationRunner {
|
||||
|
||||
@Autowired
|
||||
private RedisUtil redisUtil;
|
||||
@Autowired
|
||||
private RedisTemplate redisTemplate;
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) throws Exception {
|
||||
Set<String> keysList = redisTemplate.keys(IntegrateJobUtil.WORKTIMEOUT_REDIS_KEY + "_key*");
|
||||
for (String id : keysList) {
|
||||
redisTemplate.delete(id);
|
||||
}
|
||||
List<String> hashValues = redisUtil.getHashValues(IntegrateJobUtil.IDGENERATOR_REDIS_KEY);
|
||||
for (String value : hashValues) {
|
||||
IntegrateModel integrateModel = JsonUtil.getJsonToBean(value, IntegrateModel.class);
|
||||
JobDataMap jobDataMap = new JobDataMap();
|
||||
jobDataMap.putAll(JsonUtil.entityToMap(integrateModel));
|
||||
Date startTime = new Date(integrateModel.getStartTime());
|
||||
Date endTime = ObjectUtil.isNotEmpty(integrateModel.getEndTime()) ? new Date(integrateModel.getEndTime()) : null;
|
||||
boolean isAdd = ObjectUtil.isNotEmpty(endTime) ? endTime.getTime() > System.currentTimeMillis() : true;
|
||||
if (isAdd) {
|
||||
QuartzUtil.addJob(integrateModel.getId(), integrateModel.getCron(), Integrate.class, jobDataMap, startTime, endTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
package com.yunzhupaas.integrate.job;
|
||||
|
||||
import com.yunzhupaas.base.UserInfo;
|
||||
import com.yunzhupaas.config.ConfigValueUtil;
|
||||
import com.yunzhupaas.database.util.TenantDataSourceUtil;
|
||||
import com.yunzhupaas.exception.TenantInvalidException;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateEntity;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateQueueEntity;
|
||||
import com.yunzhupaas.integrate.model.nodeJson.IntegrateModel;
|
||||
import com.yunzhupaas.integrate.service.IntegrateQueueService;
|
||||
import com.yunzhupaas.integrate.service.IntegrateService;
|
||||
import com.yunzhupaas.util.JsonUtil;
|
||||
import com.yunzhupaas.util.RandomUtil;
|
||||
import com.yunzhupaas.util.RedisUtil;
|
||||
import com.yunzhupaas.util.StringUtil;
|
||||
import com.yunzhupaas.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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
package com.yunzhupaas.integrate.job;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.yunzhupaas.base.UserInfo;
|
||||
import com.yunzhupaas.integrate.model.nodeJson.IntegrateModel;
|
||||
import com.yunzhupaas.util.JsonUtil;
|
||||
import com.yunzhupaas.util.RedisUtil;
|
||||
import com.yunzhupaas.util.StringUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
|
||||
/**
|
||||
* @author 云筑产品开发平台组
|
||||
* @version V3.3.0 flowable
|
||||
* @copyright 深圳市乐程软件有限公司
|
||||
* @date 2024/6/15 17:37
|
||||
*/
|
||||
@Slf4j
|
||||
public class IntegrateJobUtil {
|
||||
/**
|
||||
* 缓存key
|
||||
*/
|
||||
public static final String WORKTIMEOUT_REDIS_KEY = "idgenerator_IntegrateList";
|
||||
|
||||
/**
|
||||
* 缓存key
|
||||
*/
|
||||
public static final String IDGENERATOR_REDIS_KEY = "idgenerator_IntegrateModel";
|
||||
|
||||
/**
|
||||
* 缓存key
|
||||
*/
|
||||
public static final String IDGENERATORID_REDIS_KEY = "idgenerator_id";
|
||||
|
||||
public static IntegrateModel getModel(IntegrateModel model, RedisUtil redisUtil) {
|
||||
String id = model.getId();
|
||||
String hashValues = redisUtil.getHashValues(IDGENERATOR_REDIS_KEY, id);
|
||||
IntegrateModel integrateModel = StringUtil.isNotEmpty(hashValues) ? JsonUtil.getJsonToBean(hashValues, IntegrateModel.class) : null;
|
||||
return integrateModel;
|
||||
}
|
||||
|
||||
public static void insertModel(IntegrateModel model, RedisUtil redisUtil) {
|
||||
String integrateId = model.getId();
|
||||
redisUtil.insertHash(IDGENERATOR_REDIS_KEY, integrateId, JsonUtil.getObjectToString(model));
|
||||
insertTenant(model, redisUtil);
|
||||
}
|
||||
|
||||
public static void removeModel(IntegrateModel model, RedisUtil redisUtil) {
|
||||
redisUtil.removeHash(IDGENERATOR_REDIS_KEY, model.getId());
|
||||
}
|
||||
|
||||
public static void insertTenant(IntegrateModel model, RedisUtil redisUtil) {
|
||||
String tenantId = StringUtil.isNotEmpty(model.getUserInfo().getTenantId()) ? model.getUserInfo().getTenantId() : "yunzhupaas";
|
||||
UserInfo userInfo = model.getUserInfo();
|
||||
redisUtil.insertHash(WORKTIMEOUT_REDIS_KEY, tenantId, JsonUtil.getObjectToString(userInfo));
|
||||
}
|
||||
|
||||
public static void removeTenant(String tenantId, RedisUtil redisUtil) {
|
||||
tenantId = StringUtil.isNotEmpty(tenantId) ? tenantId : "com.yunzhupaas";
|
||||
redisUtil.removeHash(WORKTIMEOUT_REDIS_KEY, tenantId);
|
||||
}
|
||||
|
||||
public static boolean getIntegrate(IntegrateModel model, RedisUtil redisUtil){
|
||||
String value = redisUtil.getHashValues(IDGENERATORID_REDIS_KEY, model.getId());
|
||||
return ObjectUtil.isNotEmpty(value);
|
||||
}
|
||||
|
||||
public static void insertIntegrate(IntegrateModel model, RedisUtil redisUtil){
|
||||
redisUtil.insertHash(IDGENERATORID_REDIS_KEY, model.getId(), model.getId());
|
||||
}
|
||||
|
||||
public static void removeIntegrate(IntegrateModel model, RedisUtil redisUtil){
|
||||
redisUtil.removeHash(IDGENERATORID_REDIS_KEY, model.getId());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
package com.yunzhupaas.integrate.job;
|
||||
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.Method;
|
||||
import com.yunzhupaas.base.UserInfo;
|
||||
import com.yunzhupaas.config.ConfigValueUtil;
|
||||
import com.yunzhupaas.database.util.TenantDataSourceUtil;
|
||||
import com.yunzhupaas.exception.TenantInvalidException;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateQueueEntity;
|
||||
import com.yunzhupaas.integrate.model.nodeJson.IntegrateModel;
|
||||
import com.yunzhupaas.integrate.service.IntegrateQueueService;
|
||||
import com.yunzhupaas.integrate.util.IntegrateHttpModel;
|
||||
import com.yunzhupaas.util.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.quartz.DisallowConcurrentExecution;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||
import org.springframework.scheduling.quartz.QuartzJobBean;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Slf4j
|
||||
@DisallowConcurrentExecution
|
||||
public class IntegrateQueryJobUtil extends QuartzJobBean {
|
||||
|
||||
@Autowired
|
||||
private RedisUtil redisUtil;
|
||||
@Autowired
|
||||
private RedisTemplate redisTemplate;
|
||||
@Autowired
|
||||
private ConfigValueUtil configValueUtil;
|
||||
@Autowired
|
||||
private IntegrateQueueService integrateQueueService;
|
||||
|
||||
public static Map<String, ScheduledFuture> futureList = new HashMap<>();
|
||||
|
||||
private static ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = null;
|
||||
|
||||
IntegrateQueryJobUtil(ThreadPoolTaskExecutor threadPoolTaskExecutor) {
|
||||
if(scheduledThreadPoolExecutor == null) {
|
||||
scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(20, threadPoolTaskExecutor.getThreadPoolExecutor().getThreadFactory());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
|
||||
List<String> hashValues = redisUtil.getHashValues(IntegrateJobUtil.WORKTIMEOUT_REDIS_KEY);
|
||||
for (String id : hashValues) {
|
||||
UserInfo userInfo = JsonUtil.getJsonToBean(id, UserInfo.class);
|
||||
String tenantId = StringUtil.isNotEmpty(userInfo.getTenantId()) ? userInfo.getTenantId() : "yunzhupaas";
|
||||
boolean useSuccess = redisTemplate.opsForValue().setIfAbsent(IntegrateJobUtil.WORKTIMEOUT_REDIS_KEY + "_key:" + tenantId, System.currentTimeMillis(), 3600, TimeUnit.SECONDS);
|
||||
if (!useSuccess) continue;
|
||||
if (futureList.get(tenantId) == null) {
|
||||
ScheduledFuture scheduledFuture = scheduledThreadPoolExecutor.scheduleAtFixedRate(new Task(userInfo), 0, 1, TimeUnit.SECONDS);
|
||||
futureList.put(tenantId, scheduledFuture);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Task implements Runnable {
|
||||
private UserInfo userInfo;
|
||||
|
||||
public Task(UserInfo userInfo) {
|
||||
this.userInfo = userInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
String tenantId = StringUtil.isNotEmpty(userInfo.getTenantId()) ? userInfo.getTenantId() : "yunzhupaas";
|
||||
if (configValueUtil.isMultiTenancy()) {
|
||||
try {
|
||||
TenantDataSourceUtil.switchTenant(userInfo.getTenantId());
|
||||
}catch (TenantInvalidException e){
|
||||
// 租户无效 删除缓存, 删除任务
|
||||
log.error("Task, 租户无效, 删除任务:{}", userInfo.getTenantId());
|
||||
IntegrateJobUtil.removeTenant(userInfo.getTenantId(), redisUtil);
|
||||
ScheduledFuture scheduledFuture = futureList.get(userInfo.getTenantId());
|
||||
if(scheduledFuture != null) {
|
||||
scheduledFuture.cancel(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
List<IntegrateQueueEntity> list = integrateQueueService.getList();
|
||||
if (list.size() > 0) {
|
||||
String token = AuthUtil.loginTempUser(userInfo.getUserId(), userInfo.getTenantId(), true);
|
||||
String url = configValueUtil.getApiDomain() + "/api/visualdev/Integrate/executeQuery";
|
||||
for (IntegrateQueueEntity entity : list) {
|
||||
IntegrateModel model = new IntegrateModel();
|
||||
model.setUserInfo(userInfo);
|
||||
model.setId(entity.getId());
|
||||
boolean integrate = IntegrateJobUtil.getIntegrate(model, redisUtil);
|
||||
boolean useSuccess = redisTemplate.opsForValue().setIfAbsent(IntegrateJobUtil.WORKTIMEOUT_REDIS_KEY + "_key:" + entity.getId(), System.currentTimeMillis(), 3600, TimeUnit.SECONDS);
|
||||
if (integrate && useSuccess) {
|
||||
System.out.println("执行一组调度开始----------------------------");
|
||||
IntegrateHttpModel httpModel = new IntegrateHttpModel();
|
||||
httpModel.setUserInfo(UserProvider.getUser(token));
|
||||
httpModel.setId(entity.getId());
|
||||
HttpRequest request = HttpRequest.of(url).method(Method.POST).body(JsonUtil.getObjectToString(httpModel));
|
||||
request.header(Constants.AUTHORIZATION, token);
|
||||
request.execute().body();
|
||||
System.out.println("执行一组调度结束----------------------------");
|
||||
}
|
||||
}
|
||||
}
|
||||
//删除
|
||||
redisTemplate.delete(IntegrateJobUtil.WORKTIMEOUT_REDIS_KEY + "_key:" + tenantId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
package com.yunzhupaas.integrate.job;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.quartz.*;
|
||||
import org.quartz.impl.StdSchedulerFactory;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Slf4j
|
||||
public class QuartzUtil {
|
||||
|
||||
private static final SchedulerFactory schedulerFactory = new StdSchedulerFactory();
|
||||
|
||||
public static void addJob(String jobName, String cron, Class<? extends Job> jobClass, JobDataMap jobDataMap, Date startDate, Date endDate) {
|
||||
if (jobDataMap == null) {
|
||||
jobDataMap = new JobDataMap();
|
||||
}
|
||||
JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(jobName).setJobData(jobDataMap).build();
|
||||
Trigger trigger = TriggerBuilder.newTrigger()
|
||||
.forJob(jobDetail)
|
||||
.withIdentity(jobName)
|
||||
.withSchedule(CronScheduleBuilder.cronSchedule(cron))
|
||||
.startAt(startDate == null ? new Date() : startDate)
|
||||
.endAt(endDate != null ? endDate : null)
|
||||
.build();
|
||||
try {
|
||||
//获取实例化的 Scheduler。
|
||||
Scheduler scheduler = getScheduler();
|
||||
//将任务及其触发器放入调度器
|
||||
scheduler.scheduleJob(jobDetail, trigger);
|
||||
//调度器开始调度任务
|
||||
if (!scheduler.isShutdown()) {
|
||||
scheduler.start();
|
||||
}
|
||||
} catch (SchedulerException e) {
|
||||
log.error("新增调度失败:"+e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private static Scheduler getScheduler() {
|
||||
try {
|
||||
return schedulerFactory.getScheduler();
|
||||
} catch (SchedulerException e) {
|
||||
e.getMessage();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void deleteJob(String jobName) {
|
||||
try {
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
|
||||
Scheduler scheduler = getScheduler();
|
||||
scheduler.pauseTrigger(triggerKey);
|
||||
scheduler.unscheduleJob(triggerKey);
|
||||
scheduler.deleteJob(JobKey.jobKey(jobName));
|
||||
} catch (SchedulerException e) {
|
||||
log.error("删除调度失败:"+e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isTriKey(String jobName) {
|
||||
boolean flag = false;
|
||||
try {
|
||||
Scheduler sched = schedulerFactory.getScheduler();
|
||||
TriggerKey triggerKey = TriggerKey.triggerKey(jobName);
|
||||
CronTrigger trigger = (CronTrigger) sched.getTrigger(triggerKey);
|
||||
flag = trigger != null;
|
||||
} catch (Exception e) {
|
||||
e.getMessage();
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yunzhupaas.integrate.mapper;
|
||||
|
||||
import com.yunzhupaas.base.mapper.SuperMapper;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateEntity;
|
||||
|
||||
public interface IntegrateMapper extends SuperMapper<IntegrateEntity> {
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.yunzhupaas.integrate.mapper;
|
||||
|
||||
|
||||
import com.yunzhupaas.base.mapper.SuperMapper;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateNodeEntity;
|
||||
|
||||
public interface IntegrateNodeMapper extends SuperMapper<IntegrateNodeEntity> {
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.yunzhupaas.integrate.mapper;
|
||||
|
||||
import com.yunzhupaas.base.mapper.SuperMapper;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateEntity;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateQueueEntity;
|
||||
|
||||
public interface IntegrateQueueMapper extends SuperMapper<IntegrateQueueEntity> {
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.yunzhupaas.integrate.mapper;
|
||||
|
||||
import com.yunzhupaas.base.mapper.SuperMapper;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateTaskEntity;
|
||||
|
||||
public interface IntegrateTaskMapper extends SuperMapper<IntegrateTaskEntity> {
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.yunzhupaas.integrate.service;
|
||||
|
||||
import com.yunzhupaas.base.service.SuperService;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateNodeEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IntegrateNodeService extends SuperService<IntegrateNodeEntity> {
|
||||
|
||||
List<IntegrateNodeEntity> getList(List<String> id,String nodeCode);
|
||||
|
||||
List<IntegrateNodeEntity> getList(List<String> id,String nodeCode, Integer isRetry);
|
||||
|
||||
IntegrateNodeEntity getInfo(String id);
|
||||
|
||||
void create(IntegrateNodeEntity entity);
|
||||
|
||||
void update(String id,String nodeCode);
|
||||
|
||||
Boolean update(String id, IntegrateNodeEntity entity);
|
||||
|
||||
void delete(IntegrateNodeEntity entity);
|
||||
|
||||
void delete(String id);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.yunzhupaas.integrate.service;
|
||||
|
||||
import com.yunzhupaas.base.service.SuperService;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateQueueEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IntegrateQueueService extends SuperService<IntegrateQueueEntity> {
|
||||
|
||||
List<IntegrateQueueEntity> getList();
|
||||
|
||||
void create(IntegrateQueueEntity entity);
|
||||
|
||||
Boolean update(String id, IntegrateQueueEntity entity);
|
||||
|
||||
void delete(IntegrateQueueEntity entity);
|
||||
|
||||
void delete(String integrateId);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.yunzhupaas.integrate.service;
|
||||
|
||||
import com.yunzhupaas.base.ActionResult;
|
||||
import com.yunzhupaas.base.service.SuperService;
|
||||
import com.yunzhupaas.exception.WorkFlowException;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateEntity;
|
||||
import com.yunzhupaas.integrate.model.integrate.IntegratePagination;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IntegrateService extends SuperService<IntegrateEntity> {
|
||||
|
||||
List<IntegrateEntity> getList(IntegratePagination pagination);
|
||||
|
||||
List<IntegrateEntity> getList(IntegratePagination pagination, boolean isPage);
|
||||
|
||||
IntegrateEntity getInfo(String id);
|
||||
|
||||
Boolean isExistByFullName(String fullName, String id);
|
||||
|
||||
Boolean isExistByEnCode(String encode, String id);
|
||||
|
||||
void create(IntegrateEntity entity);
|
||||
|
||||
ActionResult ImportData(IntegrateEntity entity, Integer type) throws WorkFlowException;
|
||||
|
||||
Boolean update(String id, IntegrateEntity entity,boolean state);
|
||||
|
||||
void delete(IntegrateEntity entity);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.yunzhupaas.integrate.service;
|
||||
|
||||
import com.yunzhupaas.base.service.SuperService;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateTaskEntity;
|
||||
import com.yunzhupaas.integrate.model.integrate.IntegratePageModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IntegrateTaskService extends SuperService<IntegrateTaskEntity> {
|
||||
|
||||
List<IntegrateTaskEntity> getList(IntegratePageModel pagination);
|
||||
|
||||
List<IntegrateTaskEntity> getList(List<String> id);
|
||||
|
||||
IntegrateTaskEntity getInfo(String id);
|
||||
|
||||
void create(IntegrateTaskEntity entity);
|
||||
|
||||
Boolean update(String id, IntegrateTaskEntity entity);
|
||||
|
||||
void delete(String id) ;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.yunzhupaas.integrate.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.yunzhupaas.base.service.SuperServiceImpl;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateNodeEntity;
|
||||
import com.yunzhupaas.integrate.mapper.IntegrateNodeMapper;
|
||||
import com.yunzhupaas.integrate.service.IntegrateNodeService;
|
||||
import com.yunzhupaas.util.RandomUtil;
|
||||
import com.yunzhupaas.util.StringUtil;
|
||||
import com.yunzhupaas.util.UserProvider;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class IntegrateNodeServiceImpl extends SuperServiceImpl<IntegrateNodeMapper, IntegrateNodeEntity> implements IntegrateNodeService {
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<IntegrateNodeEntity> getList(List<String> id, String nodeCode) {
|
||||
return getList(id,nodeCode,null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IntegrateNodeEntity> getList(List<String> id, String nodeCode, Integer resultType) {
|
||||
List<IntegrateNodeEntity> list = new ArrayList<>();
|
||||
QueryWrapper<IntegrateNodeEntity> queryWrapper = new QueryWrapper<>();
|
||||
if (id.size() > 0) {
|
||||
queryWrapper.lambda().in(IntegrateNodeEntity::getTaskId, id);
|
||||
if (StringUtil.isNotEmpty(nodeCode)) {
|
||||
queryWrapper.lambda().eq(IntegrateNodeEntity::getNodeCode, nodeCode);
|
||||
}
|
||||
if(ObjectUtil.isNotEmpty(resultType)){
|
||||
queryWrapper.lambda().eq(IntegrateNodeEntity::getResultType, resultType);
|
||||
}
|
||||
queryWrapper.lambda().orderByAsc(IntegrateNodeEntity::getSortCode);
|
||||
queryWrapper.lambda().orderByAsc(IntegrateNodeEntity::getStartTime);
|
||||
list.addAll(this.list(queryWrapper));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntegrateNodeEntity getInfo(String id) {
|
||||
QueryWrapper<IntegrateNodeEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(IntegrateNodeEntity::getId, id);
|
||||
return this.getOne(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(IntegrateNodeEntity entity) {
|
||||
if (StringUtil.isEmpty(entity.getId())) {
|
||||
entity.setId(RandomUtil.uuId());
|
||||
}
|
||||
entity.setIsRetry(1);
|
||||
entity.setCreatorTime(new Date());
|
||||
entity.setCreatorUserId(UserProvider.getUser().getUserId());
|
||||
entity.setEnabledMark(1);
|
||||
this.save(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(String taskId, String nodeCode) {
|
||||
UpdateWrapper<IntegrateNodeEntity> queryWrapper = new UpdateWrapper<>();
|
||||
queryWrapper.lambda().eq(IntegrateNodeEntity::getTaskId,taskId);
|
||||
queryWrapper.lambda().eq(IntegrateNodeEntity::getNodeCode,nodeCode);
|
||||
queryWrapper.lambda().set(IntegrateNodeEntity::getIsRetry,0);
|
||||
this.update(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean update(String id, IntegrateNodeEntity entity) {
|
||||
entity.setId(id);
|
||||
entity.setLastModifyTime(new Date());
|
||||
entity.setLastModifyUserId(UserProvider.getUser().getUserId());
|
||||
return this.updateById(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(IntegrateNodeEntity entity) {
|
||||
if(entity!=null) {
|
||||
this.removeById(entity.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String taskId) {
|
||||
QueryWrapper<IntegrateNodeEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(IntegrateNodeEntity::getTaskId,taskId);
|
||||
this.remove(queryWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.yunzhupaas.integrate.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.yunzhupaas.base.service.SuperServiceImpl;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateQueueEntity;
|
||||
import com.yunzhupaas.integrate.mapper.IntegrateQueueMapper;
|
||||
import com.yunzhupaas.integrate.service.IntegrateQueueService;
|
||||
import com.yunzhupaas.util.RandomUtil;
|
||||
import com.yunzhupaas.util.StringUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class IntegrateQueueServiceImpl extends SuperServiceImpl<IntegrateQueueMapper, IntegrateQueueEntity> implements IntegrateQueueService {
|
||||
|
||||
|
||||
@Override
|
||||
public List<IntegrateQueueEntity> getList() {
|
||||
QueryWrapper<IntegrateQueueEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().orderByAsc(IntegrateQueueEntity::getCreatorTime);
|
||||
return this.list(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(IntegrateQueueEntity entity) {
|
||||
if(StringUtil.isEmpty(entity.getId())){
|
||||
entity.setId(RandomUtil.uuId());
|
||||
}
|
||||
entity.setCreatorTime(new Date());
|
||||
this.save(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean update(String id, IntegrateQueueEntity entity) {
|
||||
entity.setId(id);
|
||||
entity.setLastModifyTime(new Date());
|
||||
return this.updateById(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(IntegrateQueueEntity entity) {
|
||||
if(entity!=null){
|
||||
this.removeById(entity.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String integrateId) {
|
||||
QueryWrapper<IntegrateQueueEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(IntegrateQueueEntity::getIntegrateId,integrateId);
|
||||
this.remove(queryWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
package com.yunzhupaas.integrate.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.yunzhupaas.base.ActionResult;
|
||||
import com.yunzhupaas.base.service.SuperServiceImpl;
|
||||
import com.yunzhupaas.constant.MsgCode;
|
||||
import com.yunzhupaas.exception.WorkFlowException;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateEntity;
|
||||
import com.yunzhupaas.integrate.job.Integrate;
|
||||
import com.yunzhupaas.integrate.job.IntegrateJobUtil;
|
||||
import com.yunzhupaas.integrate.job.QuartzUtil;
|
||||
import com.yunzhupaas.integrate.mapper.IntegrateMapper;
|
||||
import com.yunzhupaas.integrate.model.childnode.IntegrateChildNode;
|
||||
import com.yunzhupaas.integrate.model.childnode.IntegrateProperties;
|
||||
import com.yunzhupaas.integrate.model.integrate.IntegratePagination;
|
||||
import com.yunzhupaas.integrate.model.nodeJson.IntegrateModel;
|
||||
import com.yunzhupaas.integrate.service.IntegrateQueueService;
|
||||
import com.yunzhupaas.integrate.service.IntegrateService;
|
||||
import com.yunzhupaas.util.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.quartz.JobDataMap;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
public class IntegrateServiceImpl extends SuperServiceImpl<IntegrateMapper, IntegrateEntity> implements IntegrateService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private RedisUtil redisUtil;
|
||||
@Autowired
|
||||
private IntegrateQueueService integrateQueueService;
|
||||
|
||||
@Override
|
||||
public List<IntegrateEntity> getList(IntegratePagination pagination) {
|
||||
return getList(pagination, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IntegrateEntity> getList(IntegratePagination pagination, boolean isPage) {
|
||||
QueryWrapper<IntegrateEntity> queryWrapper = new QueryWrapper<>();
|
||||
if (StringUtil.isNotEmpty(pagination.getKeyword())) {
|
||||
queryWrapper.lambda().and(
|
||||
t -> t.like(IntegrateEntity::getFullName, pagination.getKeyword())
|
||||
.or().like(IntegrateEntity::getEnCode, pagination.getKeyword())
|
||||
);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(pagination.getType())) {
|
||||
queryWrapper.lambda().eq(IntegrateEntity::getType, pagination.getType());
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(pagination.getFormId())) {
|
||||
queryWrapper.lambda().eq(IntegrateEntity::getFormId, pagination.getFormId());
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(pagination.getTrigger())) {
|
||||
queryWrapper.lambda().eq(IntegrateEntity::getTriggerType, pagination.getTrigger());
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(pagination.getEnabledMark())) {
|
||||
queryWrapper.lambda().eq(IntegrateEntity::getEnabledMark, pagination.getEnabledMark());
|
||||
}
|
||||
//排序
|
||||
if (StringUtils.isEmpty(pagination.getSidx())) {
|
||||
queryWrapper.lambda().orderByDesc(IntegrateEntity::getCreatorTime);
|
||||
} else {
|
||||
queryWrapper = "asc".equals(pagination.getSort().toLowerCase()) ? queryWrapper.orderByAsc(pagination.getSidx()) : queryWrapper.orderByDesc(pagination.getSidx());
|
||||
}
|
||||
if (isPage) {
|
||||
Page<IntegrateEntity> page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize());
|
||||
IPage<IntegrateEntity> userPage = page(page, queryWrapper);
|
||||
return pagination.setData(userPage.getRecords(), page.getTotal());
|
||||
}
|
||||
return this.list(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntegrateEntity getInfo(String id) {
|
||||
QueryWrapper<IntegrateEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(IntegrateEntity::getId, id);
|
||||
return this.getOne(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean isExistByFullName(String fullName, String id) {
|
||||
QueryWrapper<IntegrateEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(IntegrateEntity::getFullName, fullName);
|
||||
if (!StringUtil.isEmpty(id)) {
|
||||
queryWrapper.lambda().ne(IntegrateEntity::getId, id);
|
||||
}
|
||||
return this.count(queryWrapper) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean isExistByEnCode(String encode, String id) {
|
||||
QueryWrapper<IntegrateEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(IntegrateEntity::getEnCode, encode);
|
||||
if (!StringUtil.isEmpty(id)) {
|
||||
queryWrapper.lambda().ne(IntegrateEntity::getId, id);
|
||||
}
|
||||
return this.count(queryWrapper) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(IntegrateEntity entity) {
|
||||
if (StringUtil.isEmpty(entity.getId())) {
|
||||
entity.setId(RandomUtil.uuId());
|
||||
}
|
||||
entity.setCreatorTime(new Date());
|
||||
entity.setCreatorUserId(UserProvider.getUser().getUserId());
|
||||
formId(entity);
|
||||
this.save(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
@DSTransactional
|
||||
public ActionResult ImportData(IntegrateEntity entity, Integer type) throws WorkFlowException {
|
||||
if (entity != null) {
|
||||
StringJoiner errList = new StringJoiner("、");
|
||||
String copyNum = UUID.randomUUID().toString().substring(0, 5);
|
||||
if (this.getInfo(entity.getId()) != null) {
|
||||
if (Objects.equals(type, 0)) {
|
||||
errList.add("ID");
|
||||
} else {
|
||||
entity.setId(RandomUtil.uuId());
|
||||
}
|
||||
}
|
||||
if (this.isExistByEnCode(entity.getEnCode(),null) ) {
|
||||
if (Objects.equals(type, 0)) {
|
||||
errList.add(MsgCode.IMP009.get());
|
||||
} else {
|
||||
entity.setEnCode(entity.getEnCode() + copyNum);
|
||||
}
|
||||
}
|
||||
if (this.isExistByFullName(entity.getFullName(), null) ) {
|
||||
if (Objects.equals(type, 0)) {
|
||||
errList.add(MsgCode.IMP008.get());
|
||||
} else {
|
||||
entity.setFullName(entity.getFullName() + ".副本" + copyNum);
|
||||
}
|
||||
}
|
||||
if (Objects.equals(type, 0) && errList.length() > 0) {
|
||||
return ActionResult.fail(errList + MsgCode.IMP007.get());
|
||||
}
|
||||
try {
|
||||
this.setIgnoreLogicDelete().removeById(entity.getId());
|
||||
entity.setCreatorTime(new Date());
|
||||
entity.setCreatorUserId(UserProvider.getLoginUserId());
|
||||
entity.setLastModifyTime(null);
|
||||
entity.setLastModifyUserId(null);
|
||||
entity.setEnabledMark(0);
|
||||
this.setIgnoreLogicDelete().saveOrUpdate(entity);
|
||||
this.clearIgnoreLogicDelete();
|
||||
} catch (Exception e) {
|
||||
throw new WorkFlowException(MsgCode.IMP003.get(),e);
|
||||
}
|
||||
return ActionResult.success(MsgCode.IMP001.get());
|
||||
}
|
||||
return ActionResult.fail(MsgCode.IMP006.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean update(String id, IntegrateEntity entity, boolean state) {
|
||||
entity.setId(id);
|
||||
IntegrateEntity info = getInfo(id);
|
||||
if (Objects.equals(entity.getEnabledMark(), 0) || !Objects.equals(info.getTemplateJson(), entity.getTemplateJson())) {
|
||||
deleteJob(entity);
|
||||
}
|
||||
if (ObjectUtil.isEmpty(entity.getEnabledMark())) {
|
||||
entity.setEnabledMark(info.getEnabledMark());
|
||||
}
|
||||
if (ObjectUtil.isEmpty(entity.getType())) {
|
||||
entity.setType(info.getType());
|
||||
}
|
||||
if ((!Objects.equals(info.getTemplateJson(), entity.getTemplateJson()) || state) && Objects.equals(entity.getEnabledMark(), 1)) {
|
||||
formId(entity);
|
||||
}
|
||||
entity.setLastModifyTime(new Date());
|
||||
entity.setLastModifyUserId(UserProvider.getUser().getUserId());
|
||||
return this.updateById(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(IntegrateEntity entity) {
|
||||
deleteJob(entity);
|
||||
this.removeById(entity.getId());
|
||||
}
|
||||
|
||||
private void formId(IntegrateEntity entity) {
|
||||
Integer enabledMark = entity.getEnabledMark();
|
||||
String templateJson = entity.getTemplateJson();
|
||||
if (StringUtil.isNotEmpty(templateJson)) {
|
||||
IntegrateChildNode childNode = JsonUtil.getJsonToBean(templateJson, IntegrateChildNode.class);
|
||||
IntegrateProperties properties = childNode.getProperties();
|
||||
String formId = properties.getFormId();
|
||||
entity.setFormId(formId);
|
||||
entity.setTriggerType(properties.getTriggerEvent());
|
||||
if (Objects.equals(enabledMark, 1)) {
|
||||
if (Objects.equals(entity.getType(), 2)) {
|
||||
IntegrateModel model = new IntegrateModel();
|
||||
model.setId(entity.getId());
|
||||
IntegrateJobUtil.removeModel(model, redisUtil);
|
||||
IntegrateModel integrateModel = JsonUtil.getJsonToBean(properties, IntegrateModel.class);
|
||||
integrateModel.setUserInfo(UserProvider.getUser());
|
||||
integrateModel.setId(entity.getId());
|
||||
integrateModel.setState(0);
|
||||
JobDataMap jobDataMap = new JobDataMap();
|
||||
Date startTime = ObjectUtil.isNotEmpty(properties.getStartTime()) ? new Date(properties.getStartTime()) : new Date();
|
||||
Date endTime = Objects.equals(properties.getEndTimeType(), 2) ? new Date(properties.getEndTime()) : null;
|
||||
integrateModel.setEndTime(endTime != null ? endTime.getTime() : null);
|
||||
integrateModel.setStartTime(startTime.getTime());
|
||||
jobDataMap.putAll(JsonUtil.entityToMap(integrateModel));
|
||||
redisUtil.removeHash(IntegrateJobUtil.IDGENERATOR_REDIS_KEY, entity.getId());
|
||||
boolean isAdd = ObjectUtil.isNotEmpty(endTime) ? endTime.getTime() > System.currentTimeMillis() : true;
|
||||
if (isAdd) {
|
||||
QuartzUtil.addJob(entity.getId(), properties.getCron(), Integrate.class, jobDataMap, startTime, endTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteJob(IntegrateEntity entity) {
|
||||
QuartzUtil.deleteJob(entity.getId());
|
||||
integrateQueueService.delete(entity.getId());
|
||||
IntegrateModel model = new IntegrateModel();
|
||||
model.setId(entity.getId());
|
||||
IntegrateJobUtil.removeModel(model, redisUtil);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
package com.yunzhupaas.integrate.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.yunzhupaas.base.service.SuperServiceImpl;
|
||||
import com.yunzhupaas.integrate.entity.IntegrateTaskEntity;
|
||||
import com.yunzhupaas.integrate.mapper.IntegrateTaskMapper;
|
||||
import com.yunzhupaas.integrate.model.integrate.IntegratePageModel;
|
||||
import com.yunzhupaas.integrate.service.IntegrateNodeService;
|
||||
import com.yunzhupaas.integrate.service.IntegrateTaskService;
|
||||
import com.yunzhupaas.util.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class IntegrateTaskServiceImpl extends SuperServiceImpl<IntegrateTaskMapper, IntegrateTaskEntity> implements IntegrateTaskService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private IntegrateNodeService integrateNodeService;
|
||||
|
||||
@Override
|
||||
public List<IntegrateTaskEntity> getList(IntegratePageModel pagination) {
|
||||
QueryWrapper<IntegrateTaskEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(IntegrateTaskEntity::getIntegrateId,pagination.getIntegrateId());
|
||||
//日期范围(近7天、近1月、近3月、自定义)
|
||||
String startTime = pagination.getStartTime() != null ? pagination.getStartTime() : null;
|
||||
String endTime = pagination.getEndTime() != null ? pagination.getEndTime() : null;
|
||||
if (!StringUtils.isEmpty(startTime) && !StringUtils.isEmpty(endTime)) {
|
||||
Date startTimes = new Date(Long.parseLong(startTime));
|
||||
Date endTimes = new Date(Long.parseLong(endTime));
|
||||
queryWrapper.lambda().ge(IntegrateTaskEntity::getExecutionTime, startTimes).le(IntegrateTaskEntity::getExecutionTime, endTimes);
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(pagination.getResultType())) {
|
||||
queryWrapper.lambda().eq(IntegrateTaskEntity::getResultType, pagination.getResultType());
|
||||
}
|
||||
queryWrapper.lambda().orderByDesc(IntegrateTaskEntity::getExecutionTime);
|
||||
Page<IntegrateTaskEntity> page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize());
|
||||
IPage<IntegrateTaskEntity> userPage = page(page, queryWrapper);
|
||||
return pagination.setData(userPage.getRecords(), page.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IntegrateTaskEntity> getList(List<String> id) {
|
||||
List<IntegrateTaskEntity> list = new ArrayList<>();
|
||||
QueryWrapper<IntegrateTaskEntity> queryWrapper = new QueryWrapper<>();
|
||||
if (id.size() > 0) {
|
||||
queryWrapper.lambda().in(IntegrateTaskEntity::getIntegrateId, id);
|
||||
list.addAll(this.list(queryWrapper));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntegrateTaskEntity getInfo(String id) {
|
||||
QueryWrapper<IntegrateTaskEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(IntegrateTaskEntity::getId, id);
|
||||
return this.getOne(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void create(IntegrateTaskEntity entity) {
|
||||
if (StringUtil.isEmpty(entity.getId())) {
|
||||
entity.setId(RandomUtil.uuId());
|
||||
}
|
||||
entity.setCreatorTime(new Date());
|
||||
entity.setCreatorUserId(UserProvider.getUser().getUserId());
|
||||
entity.setEnabledMark(0);
|
||||
this.save(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean update(String id, IntegrateTaskEntity entity) {
|
||||
entity.setId(id);
|
||||
entity.setLastModifyTime(new Date());
|
||||
entity.setLastModifyUserId(UserProvider.getUser().getUserId());
|
||||
return this.updateById(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String id) {
|
||||
if(StringUtils.isNotEmpty(id)) {
|
||||
QueryWrapper<IntegrateTaskEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(IntegrateTaskEntity::getId, id);
|
||||
this.remove(queryWrapper);
|
||||
integrateNodeService.delete(id);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.yunzhupaas.integrate.util;
|
||||
|
||||
import com.yunzhupaas.base.UserInfo;
|
||||
import com.yunzhupaas.base.model.OnlineImport.VisualdevModelDataInfoVO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author :云筑产品开发平台组
|
||||
* @version: V3.1.0
|
||||
* @copyright 深圳市乐程软件有限公司
|
||||
* @date :2024/7/13 上午9:44
|
||||
*/
|
||||
@Data
|
||||
public class IntegrateHttpModel {
|
||||
private String id;
|
||||
public UserInfo userInfo;
|
||||
private List<VisualdevModelDataInfoVO> dataInfoVOList = new ArrayList<>();
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user