0720 ljc 新增自定义模板导入方法,编写流水线转新增模板代码
This commit is contained in:
parent
ec75b66281
commit
753cf7b798
@ -10,6 +10,7 @@ import cd.casic.ci.process.dto.resp.pipeline.PipelineFindResp;
|
||||
import cd.casic.ci.process.engine.executor.PipelineExecutor;
|
||||
import cd.casic.ci.process.engine.runContext.PipelineRunContext;
|
||||
import cd.casic.ci.process.enums.PiplineTriggerModeEnum;
|
||||
import cd.casic.ci.process.process.dataObject.base.BaseIdReq;
|
||||
import cd.casic.ci.process.process.service.pipeline.PipelineService;
|
||||
import cd.casic.framework.commons.pojo.CommonResult;
|
||||
import cd.casic.framework.commons.pojo.PageResult;
|
||||
@ -117,4 +118,12 @@ public class PipelineController {
|
||||
pipelineExecutor.traversePipelineContext(pipelineId);
|
||||
return CommonResult.success();
|
||||
}
|
||||
|
||||
@PostMapping(path="/transformTemplateByPipeline")
|
||||
public CommonResult<Void> transformTemplateByPipeline(@RequestBody @Valid BaseIdReq req){
|
||||
|
||||
pipelineService.transformTemplateByPipeline(req);
|
||||
|
||||
return CommonResult.success();
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cd.casic.ci.api;
|
||||
|
||||
|
||||
import cd.casic.ci.process.dto.req.template.TemplateCreateByDataReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateCreateReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateQueryReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateUpdateReq;
|
||||
@ -38,6 +39,16 @@ public class TemplateManagerController {
|
||||
String templateId = templateManagerService.createTemplateManager(req);
|
||||
return CommonResult.success(templateId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PostMapping(path="/createTemplateByData")
|
||||
public CommonResult<String> createTemplateByData(@RequestBody @Valid TemplateCreateByDataReq req){
|
||||
String templateId = templateManagerService.createTemplateByData(req);
|
||||
return CommonResult.success(templateId);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping(path="/updateTemplateManager")
|
||||
public CommonResult<String> updateTemplateManager(@RequestBody TemplateUpdateReq req){
|
||||
String templateId = templateManagerService.updateTemplateManager(req);
|
||||
|
@ -0,0 +1,33 @@
|
||||
package cd.casic.ci.process.dto.req.template;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author HopeLi
|
||||
* @version v1.0
|
||||
* @ClassName TemplateCreateReq
|
||||
* @Date: 2025/5/29 10:41
|
||||
* @Description:
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class TemplateCreateByDataReq {
|
||||
/**
|
||||
* 模板名称
|
||||
*/
|
||||
private String templateName;
|
||||
|
||||
/**
|
||||
* 模板分类
|
||||
*/
|
||||
private String templateType;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
private List<TemplateStageCreateByDataReq> stageCreateByDataReqList;
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package cd.casic.ci.process.dto.req.template;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @ClassName TemplateStageCreateByDataReq
|
||||
* @Author hopeli
|
||||
* @Date 2025/7/20 18:34
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Data
|
||||
public class TemplateStageCreateByDataReq {
|
||||
/**
|
||||
* 阶段名称
|
||||
*/
|
||||
private String stageName;
|
||||
|
||||
/**
|
||||
* 流水线模板ID
|
||||
*/
|
||||
private String templateId;
|
||||
|
||||
/**
|
||||
* 阶段排序
|
||||
*/
|
||||
private Integer stageSort;
|
||||
|
||||
/**
|
||||
* 父级阶段ID
|
||||
*/
|
||||
private String parentId;
|
||||
|
||||
/**
|
||||
* 是否是代码阶段
|
||||
*/
|
||||
private Boolean code = false;
|
||||
|
||||
private List<TemplateStageCreateByDataReq> stageCreateByDataReqList;
|
||||
|
||||
private List<TemplateTaskCreateByDataReq> taskCreateByDataReqList;
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package cd.casic.ci.process.dto.req.template;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
||||
import lombok.Data;
|
||||
import org.apache.ibatis.type.JdbcType;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @ClassName TemplateTaskCreateByDataReq
|
||||
* @Author hopeli
|
||||
* @Date 2025/7/20 18:50
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Data
|
||||
public class TemplateTaskCreateByDataReq {
|
||||
/**
|
||||
* 阶段ID
|
||||
*/
|
||||
private String stageId;
|
||||
|
||||
/**
|
||||
* 任务名称
|
||||
*/
|
||||
private String taskName;
|
||||
|
||||
/**
|
||||
* 流水线模板ID
|
||||
*/
|
||||
private String templateId;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
private String taskType;
|
||||
|
||||
/**
|
||||
* 任务排序
|
||||
*/
|
||||
private Integer taskSort;
|
||||
|
||||
/**
|
||||
* 后置处理器ID
|
||||
*/
|
||||
private String postprocessId;
|
||||
|
||||
/**
|
||||
* 任务配置(JSON格式存储)
|
||||
*/
|
||||
@TableField(typeHandler = JacksonTypeHandler.class,jdbcType = JdbcType.VARCHAR)
|
||||
private Map<String, Object> taskProperties;
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package cd.casic.ci.process.process.converter;
|
||||
|
||||
import cd.casic.ci.process.dto.req.template.TemplateCreateByDataReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateCreateReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateUpdateReq;
|
||||
import cd.casic.ci.process.dto.resp.template.TemplateFindResp;
|
||||
@ -31,4 +32,6 @@ public interface TemplateConverter {
|
||||
PipTask templateTaskToTask(TemplateTasksResp resp);
|
||||
TemplateManager managerCreateReqToManager(TemplateCreateReq req);
|
||||
TemplateManager managerUpdateReqToManager(TemplateUpdateReq req);
|
||||
|
||||
TemplateManager managerDataToManagerModule(TemplateCreateByDataReq req);
|
||||
}
|
||||
|
@ -1,8 +1,7 @@
|
||||
package cd.casic.ci.process.process.converter;
|
||||
|
||||
import cd.casic.ci.process.dto.resp.stage.StageResp;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateStageCreateByDataReq;
|
||||
import cd.casic.ci.process.dto.resp.template.TemplateStageResp;
|
||||
import cd.casic.ci.process.process.dataObject.stage.PipStage;
|
||||
import cd.casic.ci.process.process.dataObject.template.TemplateStage;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
@ -15,4 +14,5 @@ public interface TemplateStageConverter {
|
||||
public TemplateStageResp converter(TemplateStage stage);
|
||||
public List<TemplateStageResp> converter(List<TemplateStage> stage);
|
||||
|
||||
TemplateStage stageDataToStageModule(TemplateStageCreateByDataReq o);
|
||||
}
|
||||
|
@ -1,8 +1,7 @@
|
||||
package cd.casic.ci.process.process.converter;
|
||||
|
||||
import cd.casic.ci.process.dto.resp.task.TasksResp;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateTaskCreateByDataReq;
|
||||
import cd.casic.ci.process.dto.resp.template.TemplateTasksResp;
|
||||
import cd.casic.ci.process.process.dataObject.task.PipTask;
|
||||
import cd.casic.ci.process.process.dataObject.template.TemplateTask;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
@ -11,4 +10,6 @@ import org.mapstruct.factory.Mappers;
|
||||
public interface TemplateTaskConverter {
|
||||
TemplateTaskConverter INSTANCE = Mappers.getMapper(TemplateTaskConverter.class);
|
||||
TemplateTasksResp doToResp(TemplateTask task);
|
||||
|
||||
TemplateTask taskDataToTaskModule(TemplateTaskCreateByDataReq k);
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ public class TemplateStage extends PipBaseElement {
|
||||
/**
|
||||
* 是否为源码(0-否,1-是)
|
||||
*/
|
||||
private String code;
|
||||
private Boolean code = false;
|
||||
|
||||
/**
|
||||
* 触发方式(0-手动触发,1-自动触发)
|
||||
|
@ -7,6 +7,7 @@ import cd.casic.ci.process.dto.req.pipeline.PipelineReq;
|
||||
import cd.casic.ci.process.dto.req.pipeline.PipelineUpdateReq;
|
||||
import cd.casic.ci.process.dto.resp.context.TreeRunContextResp;
|
||||
import cd.casic.ci.process.dto.resp.pipeline.PipelineFindResp;
|
||||
import cd.casic.ci.process.process.dataObject.base.BaseIdReq;
|
||||
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
|
||||
import cd.casic.framework.commons.pojo.PageResult;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
@ -38,4 +39,6 @@ public interface PipelineService extends IService<PipPipeline> {
|
||||
|
||||
TreeRunContextResp getPipelineRunState(String pipelineId);
|
||||
Long getGroupCount(String groupId);
|
||||
|
||||
void transformTemplateByPipeline(@Valid BaseIdReq req);
|
||||
}
|
||||
|
@ -5,6 +5,9 @@ import cd.casic.ci.process.dto.req.pipeline.PipelineCreateReq;
|
||||
import cd.casic.ci.process.dto.req.pipeline.PipelineQueryReq;
|
||||
import cd.casic.ci.process.dto.req.pipeline.PipelineReq;
|
||||
import cd.casic.ci.process.dto.req.pipeline.PipelineUpdateReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateCreateByDataReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateStageCreateByDataReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateTaskCreateByDataReq;
|
||||
import cd.casic.ci.process.dto.resp.context.TreeRunContextResp;
|
||||
import cd.casic.ci.process.dto.resp.pipeline.PipelineFindResp;
|
||||
import cd.casic.ci.process.dto.resp.stage.StageResp;
|
||||
@ -19,6 +22,7 @@ import cd.casic.ci.process.process.dao.pipeline.PipStageDao;
|
||||
import cd.casic.ci.process.process.dao.pipeline.PipTaskDao;
|
||||
import cd.casic.ci.process.process.dao.pipeline.PipelineDao;
|
||||
import cd.casic.ci.process.process.dao.pipeline.TargetVersionDao;
|
||||
import cd.casic.ci.process.process.dataObject.base.BaseIdReq;
|
||||
import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline;
|
||||
import cd.casic.ci.process.process.dataObject.stage.PipStage;
|
||||
import cd.casic.ci.process.process.dataObject.target.TargetVersion;
|
||||
@ -48,7 +52,13 @@ import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -156,8 +166,6 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
|
||||
PipStage pipStage = templateConverter.respToStage(o);
|
||||
pipStage.setId(idWork.nextUUID(null));
|
||||
pipStage.setPipelineId(pipeline.getId());
|
||||
pipStage.setCreateTime(LocalDateTime.now());
|
||||
pipStage.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId()));
|
||||
if (o.isCode()){
|
||||
pipStage.setCode(true);
|
||||
}else {
|
||||
@ -540,6 +548,73 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
|
||||
return pipelineDao.selectCount(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void transformTemplateByPipeline(BaseIdReq req) {
|
||||
if (ObjectUtils.isEmpty(req.getId())){
|
||||
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"id不能为空");
|
||||
}
|
||||
|
||||
PipelineQueryReq pipelineQueryReq = new PipelineQueryReq();
|
||||
pipelineQueryReq.setId(req.getId());
|
||||
PipelineFindResp pipeline = this.findPipelineById(pipelineQueryReq);
|
||||
|
||||
if (ObjectUtils.isEmpty(pipeline)){
|
||||
throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"数据错误,请联系管理员");
|
||||
}
|
||||
|
||||
TemplateCreateByDataReq templateCreateByDataReq = new TemplateCreateByDataReq();
|
||||
|
||||
templateCreateByDataReq.setTemplateName(pipeline.getName());
|
||||
templateCreateByDataReq.setTemplateType(pipeline.getTargetType());
|
||||
templateCreateByDataReq.setRemark(pipeline.getRemark());
|
||||
|
||||
if (!ObjectUtils.isEmpty(pipeline.getStageList())){
|
||||
List<TemplateStageCreateByDataReq> parentTemplateStageList = new ArrayList<>();
|
||||
pipeline.getStageList().forEach(o->{
|
||||
TemplateStageCreateByDataReq parentTemplateStage = new TemplateStageCreateByDataReq();
|
||||
parentTemplateStage.setStageName(o.getStageName());
|
||||
parentTemplateStage.setStageSort(o.getStageSort());
|
||||
if (o.isCode()){
|
||||
parentTemplateStage.setCode(true);
|
||||
}
|
||||
|
||||
if (!ObjectUtils.isEmpty(o.getStageList())){
|
||||
List<TemplateStageCreateByDataReq> childTemplateStageList = new ArrayList<>();
|
||||
o.getStageList().forEach(j->{
|
||||
TemplateStageCreateByDataReq childTemplateStage = new TemplateStageCreateByDataReq();
|
||||
childTemplateStage.setStageName(j.getStageName());
|
||||
childTemplateStage.setStageSort(j.getStageSort());
|
||||
if (j.isCode()){
|
||||
childTemplateStage.setCode(true);
|
||||
}
|
||||
|
||||
if (!ObjectUtils.isEmpty(j.getTaskValues())){
|
||||
List<TemplateTaskCreateByDataReq> templateTaskList = new ArrayList<>();
|
||||
j.getTaskValues().forEach(k->{
|
||||
TemplateTaskCreateByDataReq templateTaskCreateByDataReq = new TemplateTaskCreateByDataReq();
|
||||
templateTaskCreateByDataReq.setTaskName(k.getTaskName());
|
||||
templateTaskCreateByDataReq.setTaskType(k.getTaskType());
|
||||
templateTaskCreateByDataReq.setTaskSort(k.getTaskSort());
|
||||
templateTaskCreateByDataReq.setTaskProperties(k.getTaskProperties());
|
||||
templateTaskList.add(templateTaskCreateByDataReq);
|
||||
});
|
||||
childTemplateStage.setTaskCreateByDataReqList(templateTaskList);
|
||||
}
|
||||
|
||||
childTemplateStageList.add(childTemplateStage);
|
||||
});
|
||||
|
||||
parentTemplateStage.setStageCreateByDataReqList(childTemplateStageList);
|
||||
}
|
||||
|
||||
parentTemplateStageList.add(parentTemplateStage);
|
||||
});
|
||||
|
||||
templateCreateByDataReq.setStageCreateByDataReqList(parentTemplateStageList);
|
||||
}
|
||||
templateService.createTemplateByData(templateCreateByDataReq);
|
||||
}
|
||||
|
||||
private String between(LocalDateTime startTime,LocalDateTime endTime){
|
||||
if (startTime==null||endTime==null) {
|
||||
return "";
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cd.casic.ci.process.process.service.template;
|
||||
|
||||
|
||||
import cd.casic.ci.process.dto.req.template.TemplateCreateByDataReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateCreateReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateQueryReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateUpdateReq;
|
||||
@ -28,4 +29,6 @@ public interface TemplateManagerService extends IService<TemplateManager> {
|
||||
List<TemplateFindResp> findTemplateList(@Valid TemplateQueryReq query);
|
||||
|
||||
TemplateFindResp findTemplateById(String id);
|
||||
|
||||
String createTemplateByData(@Valid TemplateCreateByDataReq req);
|
||||
}
|
||||
|
@ -1,12 +1,15 @@
|
||||
package cd.casic.ci.process.process.service.template.impl;
|
||||
|
||||
|
||||
import cd.casic.ci.process.dto.req.template.TemplateCreateByDataReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateCreateReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateQueryReq;
|
||||
import cd.casic.ci.process.dto.req.template.TemplateUpdateReq;
|
||||
import cd.casic.ci.process.dto.resp.template.TemplateFindResp;
|
||||
import cd.casic.ci.process.dto.resp.template.TemplateStageResp;
|
||||
import cd.casic.ci.process.process.converter.TemplateConverter;
|
||||
import cd.casic.ci.process.process.converter.TemplateStageConverter;
|
||||
import cd.casic.ci.process.process.converter.TemplateTaskConverter;
|
||||
import cd.casic.ci.process.process.dao.template.TemplateManagerDao;
|
||||
import cd.casic.ci.process.process.dao.template.TemplateStageDao;
|
||||
import cd.casic.ci.process.process.dao.template.TemplateTaskDao;
|
||||
@ -15,14 +18,12 @@ import cd.casic.ci.process.process.dataObject.template.TemplateStage;
|
||||
import cd.casic.ci.process.process.dataObject.template.TemplateTask;
|
||||
import cd.casic.ci.process.process.service.template.TemplateManagerService;
|
||||
import cd.casic.ci.process.process.service.template.TemplateStageService;
|
||||
import cd.casic.ci.process.process.service.template.TemplateTaskService;
|
||||
import cd.casic.ci.process.util.snowflake.SnowflakeIdentifierGenerator;
|
||||
import cd.casic.framework.commons.exception.ServiceException;
|
||||
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
|
||||
import cd.casic.framework.commons.pojo.PageResult;
|
||||
import cd.casic.framework.security.dal.user.AdminUserDO;
|
||||
import cd.casic.framework.tenant.core.service.AdminUserServiceImpl;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@ -67,6 +68,8 @@ public class TemplateManagerServiceImpl extends ServiceImpl<TemplateManagerDao,
|
||||
private TemplateStageService templateStageService;
|
||||
@Resource
|
||||
private SnowflakeIdentifierGenerator idWork;
|
||||
@Resource
|
||||
private TemplateStageConverter templateStageConverter;
|
||||
|
||||
public String createTemplateManager(TemplateCreateReq req){
|
||||
TemplateManager templateManager = templateConverter.managerCreateReqToManager(req);
|
||||
@ -188,6 +191,48 @@ public class TemplateManagerServiceImpl extends ServiceImpl<TemplateManagerDao,
|
||||
return resp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String createTemplateByData(TemplateCreateByDataReq req) {
|
||||
TemplateManager templateManager = templateConverter.managerDataToManagerModule(req);
|
||||
templateManager.setId(idWork.nextUUID(null));
|
||||
templateManagerDao.insert(templateManager);
|
||||
|
||||
List<TemplateStage> stageList = new ArrayList<>();
|
||||
List<TemplateTask> taskList = new ArrayList<>();
|
||||
if (!ObjectUtils.isEmpty(req.getStageCreateByDataReqList())){
|
||||
req.getStageCreateByDataReqList().forEach(o->{
|
||||
TemplateStage templateStage = templateStageConverter.stageDataToStageModule(o);
|
||||
templateStage.setId(idWork.nextUUID(null));
|
||||
templateStage.setTemplateId(templateManager.getId());
|
||||
templateStage.setParentId("-1");
|
||||
stageList.add(templateStage);
|
||||
|
||||
if (!ObjectUtils.isEmpty(o.getStageCreateByDataReqList())){
|
||||
o.getStageCreateByDataReqList().forEach(j->{
|
||||
TemplateStage childTemplateStage = templateStageConverter.stageDataToStageModule(j);
|
||||
childTemplateStage.setId(idWork.nextUUID(null));
|
||||
childTemplateStage.setParentId(templateStage.getId());
|
||||
childTemplateStage.setTemplateId(templateStage.getTemplateId());
|
||||
stageList.add(childTemplateStage);
|
||||
|
||||
if (!ObjectUtils.isEmpty(j.getTaskCreateByDataReqList())){
|
||||
j.getTaskCreateByDataReqList().forEach(k->{
|
||||
TemplateTask templateTask = TemplateTaskConverter.INSTANCE.taskDataToTaskModule(k);
|
||||
templateTask.setId(idWork.nextUUID(null));
|
||||
templateTask.setStageId(childTemplateStage.getId());
|
||||
templateTask.setTemplateId(templateManager.getId());
|
||||
taskList.add(templateTask);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
templateStageDao.insertBatch(stageList);
|
||||
templateTaskDao.insertBatch(taskList);
|
||||
return templateManager.getId();
|
||||
}
|
||||
|
||||
private void setUserName(TemplateFindResp templateFindResp) {
|
||||
if (!StringUtils.isEmpty(templateFindResp.getCreator())){
|
||||
AdminUserDO user = adminUserService.getUser(Long.valueOf(templateFindResp.getCreator()));
|
||||
|
Loading…
x
Reference in New Issue
Block a user