4/28 ljc 新增trigger模块初始代码,完善postprocess模块impl
This commit is contained in:
parent
57dd302228
commit
848c41b7a2
@ -0,0 +1,18 @@
|
|||||||
|
package cd.casic.ci.commons.join.annototion;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName FindAll
|
||||||
|
*@Author hopeli
|
||||||
|
*@Date 2025/4/28 15:15
|
||||||
|
*@Version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Target({ElementType.METHOD})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface FindAll {
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package cd.casic.ci.commons.join.annototion;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName FindList
|
||||||
|
* @Author hopeli
|
||||||
|
* @Date 2025/4/28 15:18
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Target({ElementType.METHOD})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface FindList {
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package cd.casic.ci.commons.join.annototion;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName FindOne
|
||||||
|
*@Author hopeli
|
||||||
|
*@Date 2025/4/28 15:19
|
||||||
|
*@Version 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Target({ElementType.METHOD})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface FindOne {
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package cd.casic.ci.commons.join.annototion;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName JoinProvider
|
||||||
|
* @Author hopeli
|
||||||
|
* @Date 2025/4/28 15:12
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
@Target({ElementType.TYPE})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface JoinProvider {
|
||||||
|
Class model() default Object.class;
|
||||||
|
}
|
@ -1,8 +1,8 @@
|
|||||||
package cd.casic.module.process.dispatch.trigger;
|
package cd.casic.module.process.dispatch.trigger;
|
||||||
|
|
||||||
|
|
||||||
import cd.casic.ci.commons.bean.dispatch.trigger.Trigger;
|
import cd.casic.module.process.support.trigger.entity.Trigger;
|
||||||
import cd.casic.ci.commons.bean.dispatch.trigger.TriggerQuery;
|
import cd.casic.module.process.support.trigger.entity.TriggerQuery;
|
||||||
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package cd.casic.module.process.dispatch.trigger;
|
package cd.casic.module.process.dispatch.trigger;
|
||||||
|
|
||||||
|
|
||||||
import cd.casic.ci.commons.bean.dispatch.trigger.TriggerTime;
|
import cd.casic.module.process.support.trigger.entity.TriggerTime;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ import java.util.List;
|
|||||||
* @Author hopeli
|
* @Author hopeli
|
||||||
* @Date 2025/4/28 10:43
|
* @Date 2025/4/28 10:43
|
||||||
* @Version 1.0
|
* @Version 1.0
|
||||||
**/
|
*/
|
||||||
public class PostprocessController {
|
public class PostprocessController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package cd.casic.module.process.support.postprocess.dao;
|
package cd.casic.module.process.support.postprocess.dao;
|
||||||
|
|
||||||
|
import cd.casic.ci.commons.bean.engine.postprocess.Postprocess;
|
||||||
import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
|
import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import cd.casic.module.process.support.postprocess.entity.PostprocessDo;
|
import cd.casic.module.process.support.postprocess.entity.PostprocessDo;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author by mianbin
|
* @author by mianbin
|
||||||
* @Classname PostprocessDao
|
* @Classname PostprocessDao
|
||||||
@ -12,4 +15,19 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface PostprocessDao extends BaseMapperX<PostprocessDo> {
|
public interface PostprocessDao extends BaseMapperX<PostprocessDo> {
|
||||||
|
List<PostprocessDo> findTaskPost(String taskId);
|
||||||
|
|
||||||
|
List<PostprocessDo> findPipelinePost(String pipelineId);
|
||||||
|
|
||||||
|
String createPost(PostprocessDo postprocessEntity);
|
||||||
|
|
||||||
|
void deletePost(String postprocessId);
|
||||||
|
|
||||||
|
PostprocessDo findOnePost(String postprocessId);
|
||||||
|
|
||||||
|
List<Postprocess> findAllPost();
|
||||||
|
|
||||||
|
List<Postprocess> findAllPostList(List<String> idList);
|
||||||
|
|
||||||
|
void updatePost(PostprocessDo map);
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package cd.casic.module.process.support.postprocess.dao;
|
package cd.casic.module.process.support.postprocess.dao;
|
||||||
|
|
||||||
|
import cd.casic.ci.commons.bean.engine.postprocess.PostprocessInstance;
|
||||||
import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
|
import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import cd.casic.module.process.support.postprocess.entity.PostprocessInstanceDo;
|
import cd.casic.module.process.support.postprocess.entity.PostprocessInstanceDo;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author by mianbin
|
* @author by mianbin
|
||||||
* @Classname PostprocessInstanceDao
|
* @Classname PostprocessInstanceDao
|
||||||
@ -12,4 +15,15 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface PostprocessInstanceDao extends BaseMapperX<PostprocessInstanceDo> {
|
public interface PostprocessInstanceDao extends BaseMapperX<PostprocessInstanceDo> {
|
||||||
|
String createPostInstance(PostprocessInstance instance);
|
||||||
|
|
||||||
|
PostprocessInstance findOnePostInstance(String postInstanceId);
|
||||||
|
|
||||||
|
void updatePostInstance(PostprocessInstance instance);
|
||||||
|
|
||||||
|
List<PostprocessInstanceDo> findPipelinePostInstance(String instanceId);
|
||||||
|
|
||||||
|
List<PostprocessInstance> findAllPostInstance();
|
||||||
|
|
||||||
|
List<PostprocessInstanceDo> findTaskPostInstance(String taskInstanceId);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,104 @@
|
|||||||
|
package cd.casic.module.process.support.postprocess.service.impl;
|
||||||
|
|
||||||
|
import cd.casic.ci.commons.bean.engine.job.Tasks;
|
||||||
|
import cd.casic.ci.commons.bean.engine.postprocess.Postprocess;
|
||||||
|
import cd.casic.ci.commons.bean.engine.postprocess.PostprocessInstance;
|
||||||
|
import cd.casic.module.process.engine.task.TasksExecService;
|
||||||
|
import cd.casic.module.process.engine.task.TasksService;
|
||||||
|
import cd.casic.module.process.support.postprocess.service.PostprocessExecService;
|
||||||
|
import cd.casic.module.process.support.postprocess.service.PostprocessInstanceService;
|
||||||
|
import cd.casic.module.process.support.postprocess.service.PostprocessService;
|
||||||
|
import cd.casic.module.process.support.util.PipelineUtilService;
|
||||||
|
import cd.casic.module.process.support.util.util.PipelineFinal;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName PostprocessExecServiceImpl
|
||||||
|
* @Author hopeli
|
||||||
|
* @Date 2025/4/28 15:39
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public class PostprocessExecServiceImpl implements PostprocessExecService {
|
||||||
|
@Resource
|
||||||
|
PostprocessService postprocessService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
TasksExecService tasksExecService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
PostprocessInstanceService postInstanceService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
PipelineUtilService utilService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
TasksService tasksService;
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(PostprocessExecServiceImpl.class);
|
||||||
|
|
||||||
|
|
||||||
|
//后置任务id与后置任务实例id之间的关系
|
||||||
|
public static Map<String , String> postIdOrPostInstanceId = new HashMap<>();
|
||||||
|
|
||||||
|
//后置实例id与后置任务实例之间的关系
|
||||||
|
public static Map<String , PostprocessInstance> postInstanceIdOrPostInstance = new HashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
private final static Map<String , List<String>> pipelineIdOrPostInstanceId = new HashMap<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Postprocess> createPipelinePostInstance(String pipelineId, String instanceId){
|
||||||
|
String fileAddress = utilService.findPipelineDefaultAddress(pipelineId,2) + instanceId;
|
||||||
|
List<Postprocess> postprocessList = postprocessService.findAllPipelinePostTask(pipelineId);
|
||||||
|
if (postprocessList.isEmpty()){
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
for (Postprocess postprocess : postprocessList) {
|
||||||
|
|
||||||
|
PostprocessInstance postInstance = new PostprocessInstance();
|
||||||
|
postInstance.setInstanceId(instanceId);
|
||||||
|
postInstance.setPostState(PipelineFinal.RUN_HALT);
|
||||||
|
String postInstanceId = postInstanceService.createPostInstance(postInstance);
|
||||||
|
|
||||||
|
Tasks task = tasksService.findOnePostTaskOrTask(postprocess.getPostId());
|
||||||
|
task.setTaskSort(postprocess.getTaskSort());
|
||||||
|
fileAddress = fileAddress + "/" + postInstanceId;
|
||||||
|
String taskInstanceId = tasksExecService.createTaskExecInstance(task, postInstanceId, 3, fileAddress);
|
||||||
|
task.setInstanceId(taskInstanceId);
|
||||||
|
|
||||||
|
postInstance.setTaskInstanceId(taskInstanceId);
|
||||||
|
task.setTaskSort(postprocess.getTaskSort());
|
||||||
|
postprocess.setTask(task);
|
||||||
|
postprocess.setValues(task);
|
||||||
|
postprocess.setInstanceId(postInstanceId);
|
||||||
|
}
|
||||||
|
return postprocessList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String findPostInstanceId(String postId){
|
||||||
|
return postIdOrPostInstanceId.get(postId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PostprocessInstance findPostInstance(String postInstanceId){
|
||||||
|
return postInstanceIdOrPostInstance.get(postInstanceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private List<String> findPipelineOrPostInstanceCache(String pipelineId){
|
||||||
|
List<String> list = pipelineIdOrPostInstanceId.get(pipelineId);
|
||||||
|
if (Objects.isNull(list)){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,100 @@
|
|||||||
|
package cd.casic.module.process.support.postprocess.service.impl;
|
||||||
|
|
||||||
|
import cd.casic.ci.commons.bean.engine.postprocess.PostprocessInstance;
|
||||||
|
import cd.casic.module.process.support.postprocess.dao.PostprocessInstanceDao;
|
||||||
|
import cd.casic.module.process.support.postprocess.entity.PostprocessInstanceDo;
|
||||||
|
import cd.casic.module.process.support.postprocess.service.PostprocessInstanceService;
|
||||||
|
import cd.casic.module.process.toolkit.beans.BeanMapper;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.beans.BeanUtils;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName PostprocessInstanceServiceImpl
|
||||||
|
* @Author hopeli
|
||||||
|
* @Date 2025/4/28 15:42
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public class PostprocessInstanceServiceImpl implements PostprocessInstanceService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PostprocessInstanceDao postInstanceDao;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createPostInstance(PostprocessInstance instance) {
|
||||||
|
return postInstanceDao.createPostInstance(instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PostprocessInstance findPostInstance(String postInstanceId) {
|
||||||
|
PostprocessInstance postprocessInstance = postInstanceDao.findOnePostInstance(postInstanceId);
|
||||||
|
return BeanMapper.map(postprocessInstance,PostprocessInstance.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除执行实例
|
||||||
|
* @param postInstanceId 实例id
|
||||||
|
*/
|
||||||
|
public void deletePostInstance(String postInstanceId) {
|
||||||
|
postInstanceDao.findOnePostInstance(postInstanceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deletePipelinePostInstance(String instanceId) {
|
||||||
|
List<PostprocessInstance> postInstanceList = findPipelinePostInstance(instanceId);
|
||||||
|
if (postInstanceList.isEmpty()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (PostprocessInstance instance : postInstanceList) {
|
||||||
|
deletePostInstance(instance.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteTaskPostInstance(String taskInstanceId) {
|
||||||
|
List<PostprocessInstance> postInstanceList = findPipelinePostInstance(taskInstanceId);
|
||||||
|
if (postInstanceList.isEmpty()){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (PostprocessInstance instance : postInstanceList) {
|
||||||
|
deletePostInstance(instance.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updatePostInstance(PostprocessInstance instance) {
|
||||||
|
postInstanceDao.updatePostInstance(instance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PostprocessInstance> findTaskPostInstance(String taskInstanceId) {
|
||||||
|
List<PostprocessInstanceDo> allPostInstanceEntity = postInstanceDao.findTaskPostInstance(taskInstanceId);
|
||||||
|
if (allPostInstanceEntity.isEmpty()){
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return BeanMapper.mapList(allPostInstanceEntity,PostprocessInstance.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PostprocessInstance> findPipelinePostInstance(String instanceId) {
|
||||||
|
List<PostprocessInstanceDo> allPostInstanceEntity = postInstanceDao.findPipelinePostInstance(instanceId);
|
||||||
|
if (allPostInstanceEntity.isEmpty()){
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return BeanMapper.mapList(allPostInstanceEntity,PostprocessInstance.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有后置处理实例
|
||||||
|
* @return 后置处理实例集合
|
||||||
|
*/
|
||||||
|
private List<PostprocessInstance> findAllPostInstance(){
|
||||||
|
List<PostprocessInstance> allPostInstance = postInstanceDao.findAllPostInstance();
|
||||||
|
if (allPostInstance == null || allPostInstance.isEmpty()){
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return allPostInstance;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,196 @@
|
|||||||
|
package cd.casic.module.process.support.postprocess.service.impl;
|
||||||
|
|
||||||
|
import cd.casic.ci.commons.bean.engine.job.Tasks;
|
||||||
|
import cd.casic.ci.commons.bean.engine.postprocess.Postprocess;
|
||||||
|
import cd.casic.ci.commons.bean.exception.ApplicationException;
|
||||||
|
import cd.casic.module.process.engine.task.TasksCloneService;
|
||||||
|
import cd.casic.module.process.engine.task.TasksService;
|
||||||
|
import cd.casic.module.process.support.postprocess.dao.PostprocessDao;
|
||||||
|
import cd.casic.module.process.support.postprocess.entity.PostprocessDo;
|
||||||
|
import cd.casic.module.process.support.postprocess.service.PostprocessService;
|
||||||
|
import cd.casic.module.process.toolkit.beans.BeanMapper;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName PostprocessServiceImpl
|
||||||
|
* @Author hopeli
|
||||||
|
* @Date 2025/4/28 16:26
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public class PostprocessServiceImpl implements PostprocessService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
PostprocessDao postprocessDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
TasksService tasksService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
TasksCloneService tasksCloneService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String createPostTask(Postprocess postprocess) {
|
||||||
|
if (Objects.isNull(postprocess.getTaskType())){
|
||||||
|
throw new ApplicationException("taskType不能为空!");
|
||||||
|
}
|
||||||
|
|
||||||
|
String pipelineId = postprocess.getPipelineId();
|
||||||
|
if (Objects.isNull(pipelineId)){
|
||||||
|
List<PostprocessDo> taskPost = postprocessDao.findTaskPost(postprocess.getTaskId());
|
||||||
|
int size = taskPost.size();
|
||||||
|
postprocess.setTaskSort(size);
|
||||||
|
}else {
|
||||||
|
List<PostprocessDo> taskPost = postprocessDao.findPipelinePost(pipelineId);
|
||||||
|
int size = taskPost.size();
|
||||||
|
postprocess.setTaskSort(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置默认名称
|
||||||
|
if (Objects.isNull(postprocess.getPostName())){
|
||||||
|
String name = tasksService.initDifferentTaskName(postprocess.getTaskType());
|
||||||
|
postprocess.setPostName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
PostprocessDo postprocessEntity = BeanMapper.map(postprocess, PostprocessDo.class);
|
||||||
|
postprocessEntity.setCreateTime(LocalDateTime.now());
|
||||||
|
String postId = postprocessDao.createPost(postprocessEntity);
|
||||||
|
Tasks tasks = new Tasks();
|
||||||
|
tasks.setTaskSort(postprocess.getTaskSort());
|
||||||
|
tasks.setTaskName(postprocess.getPostName());
|
||||||
|
tasks.setTaskType(postprocess.getTaskType());
|
||||||
|
tasks.setPostprocessId(postId);
|
||||||
|
tasks.setValues(postprocess.getValues());
|
||||||
|
tasksService.createTasksOrTask(tasks);
|
||||||
|
return postId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Postprocess> findAllPipelinePostTask(String pipelineId){
|
||||||
|
List<PostprocessDo> allPostEntity = postprocessDao.findPipelinePost(pipelineId);
|
||||||
|
List<Postprocess> postprocessList = BeanMapper.mapList(allPostEntity, Postprocess.class);
|
||||||
|
if (postprocessList.isEmpty()){
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<Postprocess> list = new ArrayList<>();
|
||||||
|
for (Postprocess postprocess : postprocessList) {
|
||||||
|
String postprocessId = postprocess.getPostId();
|
||||||
|
Tasks tasks = tasksService.findOnePostTaskOrTask(postprocessId);
|
||||||
|
postprocess.setTask(tasks);
|
||||||
|
String taskType = tasks.getTaskType();
|
||||||
|
postprocess.setTaskType(taskType);
|
||||||
|
list.add(postprocess);
|
||||||
|
}
|
||||||
|
list.sort(Comparator.comparing(Postprocess::getTaskSort));
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clonePostTask(String pipelineId,String clonePipelineId){
|
||||||
|
List<PostprocessDo> allPostEntity = postprocessDao.findPipelinePost(pipelineId);
|
||||||
|
List<Postprocess> postprocessList = BeanMapper.mapList(allPostEntity, Postprocess.class);
|
||||||
|
for (Postprocess postprocess : postprocessList) {
|
||||||
|
postprocess.setPipelineId(clonePipelineId);
|
||||||
|
PostprocessDo postprocessEntity = BeanMapper.map(postprocess, PostprocessDo.class);
|
||||||
|
String clonePostId = postprocessDao.createPost(postprocessEntity);
|
||||||
|
tasksCloneService.clonePostTasks(postprocess.getPostId(),clonePostId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Postprocess> findAllTaskPostTask(String taskId) {
|
||||||
|
List<PostprocessDo> allPostEntity = postprocessDao.findTaskPost(taskId);
|
||||||
|
List<Postprocess> postprocessList = BeanMapper.mapList(allPostEntity, Postprocess.class);
|
||||||
|
if (postprocessList.isEmpty()){
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<Postprocess> list = new ArrayList<>();
|
||||||
|
for (Postprocess postprocess : postprocessList) {
|
||||||
|
String id = postprocess.getPostId();
|
||||||
|
Tasks tasks = tasksService.findOnePostTaskOrTask(id);
|
||||||
|
String taskType = tasks.getTaskType();
|
||||||
|
postprocess.setTaskType(taskType);
|
||||||
|
postprocess.setTask(tasks);
|
||||||
|
list.add(postprocess);
|
||||||
|
}
|
||||||
|
postprocessList.sort(Comparator.comparing(Postprocess::getCreateTime).reversed());
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deletePostTask(String postprocessId) {
|
||||||
|
Tasks postTask = tasksService.findOnePostTask(postprocessId);
|
||||||
|
String taskId = postTask.getTaskId();
|
||||||
|
tasksService.deleteTasksOrTask(taskId);
|
||||||
|
postprocessDao.deletePost(postprocessId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Postprocess> findAllPost(String taskId) {
|
||||||
|
List<Postprocess> allPostprocess = findAllPost();
|
||||||
|
if (allPostprocess == null){
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<Postprocess> list = new ArrayList<>();
|
||||||
|
for (Postprocess postprocess : allPostprocess) {
|
||||||
|
String postTaskId = postprocess.getTaskId();
|
||||||
|
if (!postTaskId.equals(taskId)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
list.add(postprocess);
|
||||||
|
}
|
||||||
|
list.sort(Comparator.comparing(Postprocess::getCreateTime).reversed());
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updatePostTask(Postprocess postprocess) {
|
||||||
|
String postprocessId = postprocess.getPostId();
|
||||||
|
Postprocess onePost = findOnePost(postprocessId);
|
||||||
|
onePost.setPostName(postprocess.getPostName());
|
||||||
|
postprocessDao.updatePost(BeanMapper.map(onePost,PostprocessDo.class));
|
||||||
|
|
||||||
|
Tasks task = tasksService.findOnePostTask(postprocessId);
|
||||||
|
Object values = postprocess.getValues();
|
||||||
|
task.setTask(values);
|
||||||
|
task.setValues(values);
|
||||||
|
task.setTaskType(postprocess.getTaskType());
|
||||||
|
tasksService.updateTasksTask(task);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updatePost(Postprocess postprocess){
|
||||||
|
postprocessDao.updatePost(BeanMapper.map(postprocess,PostprocessDo.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Postprocess findOnePostOrTask(String postprocessId) {
|
||||||
|
Postprocess postprocess = findOnePost(postprocessId);
|
||||||
|
String id = postprocess.getPostId();
|
||||||
|
Tasks taskOrTask = tasksService.findOnePostTaskOrTask(id);
|
||||||
|
postprocess.setTask(taskOrTask);
|
||||||
|
postprocess.setTaskType(taskOrTask.getTaskType());
|
||||||
|
return postprocess;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Postprocess findOnePost(String postprocessId) {
|
||||||
|
PostprocessDo postprocessEntity = postprocessDao.findOnePost(postprocessId);
|
||||||
|
return BeanMapper.map(postprocessEntity, Postprocess.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Postprocess> findAllPost() {
|
||||||
|
return BeanMapper.mapList(postprocessDao.findAllPost(), Postprocess.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Postprocess> findAllPostList(List<String> idList) {
|
||||||
|
return BeanMapper.mapList(postprocessDao.findAllPostList(idList), Postprocess.class);
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package cd.casic.ci.commons.bean.dispatch.trigger;
|
package cd.casic.module.process.support.trigger.entity;
|
||||||
|
|
||||||
|
|
||||||
import cd.casic.ci.commons.bean.process.definition.Pipeline;
|
import cd.casic.ci.commons.bean.process.definition.Pipeline;
|
||||||
@ -6,9 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
import org.mapstruct.Mappings;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author by mianbin
|
* @author by mianbin
|
@ -1,4 +1,4 @@
|
|||||||
package cd.casic.ci.commons.bean.dispatch.trigger;
|
package cd.casic.module.process.support.trigger.entity;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
@ -1,4 +1,4 @@
|
|||||||
package cd.casic.ci.commons.bean.dispatch.trigger;
|
package cd.casic.module.process.support.trigger.entity;
|
||||||
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
@ -0,0 +1,181 @@
|
|||||||
|
package cd.casic.module.process.support.trigger.service;
|
||||||
|
|
||||||
|
import cd.casic.ci.commons.bean.exception.ApplicationException;
|
||||||
|
import cd.casic.ci.commons.bean.utils.PipelineUtil;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.DayOfWeek;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.temporal.TemporalAdjusters;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName CronUtils
|
||||||
|
* @Author hopeli
|
||||||
|
* @Date 2025/4/28 14:49
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
public class CronUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cron 表达式转换成日期
|
||||||
|
* @param cron 表达式
|
||||||
|
* @return 日期
|
||||||
|
*/
|
||||||
|
public static Map<String, String > cronWeek(String cron) {
|
||||||
|
String[] s = cron.split(" ");
|
||||||
|
String date = s[2]+":"+s[1];
|
||||||
|
|
||||||
|
LocalDate localDate = LocalDate.of(Integer.parseInt(s[6]), Integer.parseInt(s[4]), Integer.parseInt(s[3]));
|
||||||
|
int value = localDate.getDayOfWeek().getValue();
|
||||||
|
String[] weekDays = {"今天","周一", "周二", "周三", "周四", "周五", "周六","周日"};
|
||||||
|
|
||||||
|
String weekTime = weekTime(cron);
|
||||||
|
|
||||||
|
Date chengeDate = PipelineUtil.StringChengeDate(weekTime);
|
||||||
|
|
||||||
|
// 获取当前日期
|
||||||
|
LocalDate today = LocalDate.now();
|
||||||
|
LocalDate tomorrow = today.plusDays(1);
|
||||||
|
LocalDateTime tomorrowMidnight = LocalDateTime.of(tomorrow, LocalTime.MIDNIGHT);
|
||||||
|
Date dates = Date.from(tomorrowMidnight.atZone(ZoneId.systemDefault()).toInstant());
|
||||||
|
if (new Date().getTime() < chengeDate.getTime() && chengeDate.getTime()< dates.getTime()){
|
||||||
|
value = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
String time = weekDays[value];
|
||||||
|
|
||||||
|
Map<String, String > map = new HashMap<>();
|
||||||
|
map.put("cron",time);
|
||||||
|
map.put("time",date);
|
||||||
|
map.put("weekTime",weekTime);
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 周几转换成具体日期
|
||||||
|
* @param cron 表达式
|
||||||
|
* @return 日期
|
||||||
|
*/
|
||||||
|
public static String weekTime(String cron){
|
||||||
|
String[] s = cron.split(" ");
|
||||||
|
// 0 27 16 1 4 ? 2023
|
||||||
|
return s[6] + "-" + s[4]+ "-" + s[3] +" "+ s[2] + ":"+ s[1] +":00";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String weekCron(String date,int timeDay){
|
||||||
|
|
||||||
|
int year ;
|
||||||
|
int month ;
|
||||||
|
int day ;
|
||||||
|
String hour ;
|
||||||
|
String minute ;
|
||||||
|
|
||||||
|
boolean isToday = false;
|
||||||
|
|
||||||
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
|
||||||
|
Date parse ;
|
||||||
|
try {
|
||||||
|
parse = simpleDateFormat.parse(date);
|
||||||
|
} catch (ParseException e) {
|
||||||
|
throw new ApplicationException("时间格式转换错误,错误时间:" + date);
|
||||||
|
}
|
||||||
|
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat("mm");
|
||||||
|
minute = dateFormat.format(parse);
|
||||||
|
|
||||||
|
SimpleDateFormat format = new SimpleDateFormat("HH");
|
||||||
|
hour = format.format(parse);
|
||||||
|
|
||||||
|
// 判断是否为今天
|
||||||
|
int nowWeek = PipelineUtil.week();
|
||||||
|
if( timeDay == nowWeek){
|
||||||
|
LocalTime currentTime = LocalTime.now();
|
||||||
|
if (currentTime.getHour() == Integer.parseInt(hour) ){
|
||||||
|
if (currentTime.getMinute() < Integer.parseInt(minute) ){
|
||||||
|
isToday = true;
|
||||||
|
}
|
||||||
|
} else if (currentTime.getHour() < Integer.parseInt(hour)){
|
||||||
|
isToday = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isToday){
|
||||||
|
// 获取今天的日期
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
// 获取年、月和日
|
||||||
|
year = currentDate.getYear();
|
||||||
|
month = currentDate.getMonthValue();
|
||||||
|
day = currentDate.getDayOfMonth();
|
||||||
|
}else {
|
||||||
|
Map<String, Integer> weekDetails ;
|
||||||
|
if (timeDay <= nowWeek ){
|
||||||
|
weekDetails = findNextWeekTime(timeDay);
|
||||||
|
}else {
|
||||||
|
weekDetails = findNowWeekTime(timeDay);
|
||||||
|
}
|
||||||
|
|
||||||
|
year = weekDetails.get("year");
|
||||||
|
month = weekDetails.get("month");
|
||||||
|
day = weekDetails.get("day");
|
||||||
|
}
|
||||||
|
|
||||||
|
return "00 " + minute + " " + hour + " " + day + " " + month + " ? " + year;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取下周的日期
|
||||||
|
* @param week 周几
|
||||||
|
* @return 下周的日期
|
||||||
|
*/
|
||||||
|
public static Map<String, Integer> findNextWeekTime(int week) {
|
||||||
|
|
||||||
|
// 获取当前日期
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
// 找到下一个周一的日期
|
||||||
|
LocalDate nextMonday = currentDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
|
||||||
|
|
||||||
|
LocalDate nextDate = nextMonday.plusDays(week-1);
|
||||||
|
|
||||||
|
// 获取年、月、日和星期几
|
||||||
|
int year = nextDate.getYear();
|
||||||
|
int month = nextDate.getMonthValue();
|
||||||
|
int day = nextDate.getDayOfMonth();
|
||||||
|
int dayOfWeek = nextDate.getDayOfWeek().getValue();
|
||||||
|
Map<String,Integer> weekMap = new HashMap<>();
|
||||||
|
weekMap.put("year", nextDate.getYear());
|
||||||
|
weekMap.put("month", nextDate.getMonthValue());
|
||||||
|
weekMap.put("day", nextDate.getDayOfMonth());
|
||||||
|
return weekMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取本周的日期
|
||||||
|
* @param week 周几
|
||||||
|
* @return 下周的日期
|
||||||
|
*/
|
||||||
|
public static Map<String, Integer> findNowWeekTime(int week) {
|
||||||
|
// 获取当前日期
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
|
||||||
|
// 获取传入数字对应的DayOfWeek
|
||||||
|
DayOfWeek targetDayOfWeek = DayOfWeek.of(week);
|
||||||
|
|
||||||
|
// 如果传入的是星期六或星期天,获取当前周的相应星期的日期
|
||||||
|
LocalDate nowDate = (week == 6 || week == 7) ?
|
||||||
|
currentDate.with(TemporalAdjusters.nextOrSame(targetDayOfWeek)) :
|
||||||
|
currentDate.with(TemporalAdjusters.next(targetDayOfWeek));
|
||||||
|
|
||||||
|
Map<String,Integer> weekMap = new HashMap<>();
|
||||||
|
weekMap.put("year", nowDate.getYear());
|
||||||
|
weekMap.put("month", nowDate.getMonthValue());
|
||||||
|
weekMap.put("day", nowDate.getDayOfMonth());
|
||||||
|
return weekMap;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,88 @@
|
|||||||
|
package cd.casic.module.process.support.trigger.service;
|
||||||
|
|
||||||
|
import cd.casic.module.process.support.trigger.entity.Trigger;
|
||||||
|
import cd.casic.module.process.support.trigger.entity.TriggerQuery;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流水线触发器服务接口
|
||||||
|
*@ClassName TriggerService
|
||||||
|
*@Author hopeli
|
||||||
|
*@Date 2025/4/28 14:57
|
||||||
|
*@Version 1.0
|
||||||
|
*/
|
||||||
|
public interface TriggerService {
|
||||||
|
/**
|
||||||
|
* 创建配置及任务
|
||||||
|
* @param trigger 配置
|
||||||
|
* @return 配置id
|
||||||
|
*/
|
||||||
|
String createTrigger(Trigger trigger);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有配置
|
||||||
|
* @param triggerQuery 流水线id
|
||||||
|
* @return 配置列表
|
||||||
|
*/
|
||||||
|
List<Object> findAllTrigger(TriggerQuery triggerQuery);
|
||||||
|
|
||||||
|
|
||||||
|
void cloneTrigger(String pipelineId,String clonePipelineId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除流水线所有定时任务
|
||||||
|
* @param pipelineId 流水线id
|
||||||
|
*/
|
||||||
|
void deleteAllTrigger(String pipelineId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新单个定时任务
|
||||||
|
* @param triggerId 定时任务id
|
||||||
|
*/
|
||||||
|
void updateTrigger(String triggerId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新配置信息
|
||||||
|
* @param trigger 配置
|
||||||
|
*/
|
||||||
|
void updateTrigger(Trigger trigger);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据流水线id查询触发器配置
|
||||||
|
* @param triggerQuery 流水线id
|
||||||
|
* @return 配置
|
||||||
|
*/
|
||||||
|
List<Trigger> findTriggerList(TriggerQuery triggerQuery) ;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除单个定时任务
|
||||||
|
* @param triggerId 定时任务id
|
||||||
|
*/
|
||||||
|
void deleteTrigger(String triggerId) ;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有配置
|
||||||
|
* @return 配置列表
|
||||||
|
*/
|
||||||
|
List<Trigger> findAllTrigger();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据ID查询配置
|
||||||
|
* @param triggerId 配置ID
|
||||||
|
* @return 配置
|
||||||
|
*/
|
||||||
|
Trigger findOneTriggerById(String triggerId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据ID列表查询配置
|
||||||
|
* @param idList 配置ID列表
|
||||||
|
* @return 配置列表
|
||||||
|
*/
|
||||||
|
List<Trigger> findAllTriggerConfigList(List<String> idList) ;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,101 @@
|
|||||||
|
package cd.casic.module.process.support.trigger.service;
|
||||||
|
|
||||||
|
import cd.casic.ci.commons.join.annototion.FindList;
|
||||||
|
import cd.casic.ci.commons.join.annototion.FindOne;
|
||||||
|
import cd.casic.ci.commons.join.annototion.JoinProvider;
|
||||||
|
import cd.casic.module.process.support.trigger.entity.TriggerTime;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 流水线触发器时间服务接口
|
||||||
|
* @ClassName TriggerTimeService
|
||||||
|
* @Author hopeli
|
||||||
|
* @Date 2025/4/28 15:01
|
||||||
|
* @Version 1.0
|
||||||
|
*/
|
||||||
|
@JoinProvider(model = TriggerTime.class)
|
||||||
|
public interface TriggerTimeService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建所有关联时间信息
|
||||||
|
* @param triggerTime 信息
|
||||||
|
*/
|
||||||
|
String createTriggerTime(TriggerTime triggerTime, String pipelineId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据配置id查询消息类型
|
||||||
|
* @param triggerId 配置id
|
||||||
|
* @return 消息
|
||||||
|
*/
|
||||||
|
TriggerTime findTriggerTime(String triggerId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据配置查询所有任务
|
||||||
|
* @param triggerId 配置id
|
||||||
|
* @return 任务集合
|
||||||
|
*/
|
||||||
|
List<TriggerTime> findAllTriggerTime(String triggerId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询cron时间列表
|
||||||
|
* @param cron cron表达式
|
||||||
|
* @return 时间列表
|
||||||
|
*/
|
||||||
|
List<TriggerTime> fondCronTimeList(String cron);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据配置获取所有时间
|
||||||
|
* @param configId 配置id
|
||||||
|
* @return 时间集合
|
||||||
|
*/
|
||||||
|
List<Integer> findAllDataConfig(String configId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除当前配置下的的所有任务
|
||||||
|
* @param triggerId 配置id
|
||||||
|
*/
|
||||||
|
void deleteAllTime(String triggerId,String pipelineId);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 周期任务更新执行时间
|
||||||
|
* @param timeId 任务id
|
||||||
|
*/
|
||||||
|
Boolean deleteCronTime(String pipelineId,String timeId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除
|
||||||
|
* @param timeId timeId
|
||||||
|
*/
|
||||||
|
void deleteTime(String timeId) ;
|
||||||
|
|
||||||
|
|
||||||
|
void updateTime(TriggerTime triggerTime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询单个信息
|
||||||
|
* @param timeId pipelineTimeId
|
||||||
|
* @return time信息
|
||||||
|
*/
|
||||||
|
@FindOne
|
||||||
|
TriggerTime findOneTime(String timeId) ;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有信息
|
||||||
|
* @return time信息集合
|
||||||
|
*/
|
||||||
|
List<TriggerTime> findAllTime() ;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据ID列表查询时间
|
||||||
|
* @param idList 时间ID列表
|
||||||
|
* @return 时间列表
|
||||||
|
*/
|
||||||
|
@FindList
|
||||||
|
List<TriggerTime> findAllTimeList(List<String> idList);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user