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;
|
||||
|
||||
|
||||
import cd.casic.ci.commons.bean.dispatch.trigger.Trigger;
|
||||
import cd.casic.ci.commons.bean.dispatch.trigger.TriggerQuery;
|
||||
import cd.casic.module.process.support.trigger.entity.Trigger;
|
||||
import cd.casic.module.process.support.trigger.entity.TriggerQuery;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,7 +1,7 @@
|
||||
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;
|
||||
|
||||
|
@ -17,7 +17,7 @@ import java.util.List;
|
||||
* @Author hopeli
|
||||
* @Date 2025/4/28 10:43
|
||||
* @Version 1.0
|
||||
**/
|
||||
*/
|
||||
public class PostprocessController {
|
||||
|
||||
@Resource
|
||||
|
@ -1,9 +1,12 @@
|
||||
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.module.process.support.postprocess.entity.PostprocessDo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author by mianbin
|
||||
* @Classname PostprocessDao
|
||||
@ -12,4 +15,19 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
*/
|
||||
@Mapper
|
||||
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;
|
||||
|
||||
import cd.casic.ci.commons.bean.engine.postprocess.PostprocessInstance;
|
||||
import cd.casic.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cd.casic.module.process.support.postprocess.entity.PostprocessInstanceDo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author by mianbin
|
||||
* @Classname PostprocessInstanceDao
|
||||
@ -12,4 +15,15 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
*/
|
||||
@Mapper
|
||||
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;
|
||||
@ -6,9 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.mapstruct.Mappings;
|
||||
|
||||
/**
|
||||
* @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.Builder;
|
@ -1,4 +1,4 @@
|
||||
package cd.casic.ci.commons.bean.dispatch.trigger;
|
||||
package cd.casic.module.process.support.trigger.entity;
|
||||
|
||||
|
||||
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