This commit is contained in:
even 2025-07-15 17:39:32 +08:00
commit 84cf91df8b

View File

@ -28,6 +28,7 @@ import cd.casic.ci.process.process.service.stage.impl.StageServiceImpl;
import cd.casic.ci.process.process.service.task.impl.TaskServiceImpl; import cd.casic.ci.process.process.service.task.impl.TaskServiceImpl;
import cd.casic.ci.process.process.service.template.impl.TemplateManagerServiceImpl; import cd.casic.ci.process.process.service.template.impl.TemplateManagerServiceImpl;
import cd.casic.ci.process.util.WebFrameworkUtils; import cd.casic.ci.process.util.WebFrameworkUtils;
import cd.casic.ci.process.util.snowflake.SnowflakeIdentifierGenerator;
import cd.casic.framework.commons.exception.ServiceException; import cd.casic.framework.commons.exception.ServiceException;
import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
import cd.casic.framework.commons.pojo.PageResult; import cd.casic.framework.commons.pojo.PageResult;
@ -90,6 +91,9 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
@Resource @Resource
private TargetVersionDao targetVersionDao; private TargetVersionDao targetVersionDao;
@Resource
private SnowflakeIdentifierGenerator idWork;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public String createPipeline(PipelineCreateReq pipelineReq) { public String createPipeline(PipelineCreateReq pipelineReq) {
@ -106,12 +110,42 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
pipeline.setState(1); pipeline.setState(1);
this.save(pipeline); this.save(pipeline);
// 默认模板id以后数据库迁移需要更换 //如果模板id为空则设置默认模板只新增初始节点
if (StringUtils.isEmpty(pipelineReq.getTemplateId())) { if (StringUtils.isEmpty(pipelineReq.getTemplateId())) {
pipelineReq.setTemplateId("732923254863433728"); //新增父级阶段
} PipStage pipStage = new PipStage();
//根据模板ID初始化 String stageId = idWork.nextUUID(null);
if (!ObjectUtils.isEmpty(pipelineReq.getTemplateId())){ pipStage.setId(stageId);
pipStage.setStageName("初始阶段");
pipStage.setStageSort(1);
pipStage.setParentId("-1");
pipStage.setPipelineId(pipeline.getId());
pipStage.setCode(true);
pipStageDao.insert(pipStage);
//新增子级阶段
PipStage childPipStage = new PipStage();
String childPipStageId = idWork.nextUUID(null);
childPipStage.setId(childPipStageId);
childPipStage.setStageName("初始阶段");
childPipStage.setStageSort(1);
childPipStage.setParentId(pipStage.getId());
childPipStage.setPipelineId(pipeline.getId());
childPipStage.setCode(true);
pipStageDao.insert(childPipStage);
//新增节点信息
PipTask pipTask = new PipTask();
pipTask.setStageId(childPipStage.getId());
pipTask.setTaskName("初始节点");
pipTask.setPipelineId(pipeline.getId());
pipTask.setTaskType(pipelineReq.getTargetType());
pipTask.setTaskSort(1);
pipTask.setTaskProperties(new HashMap<>());
pipTaskDao.insert(pipTask);
}else {
//根据模板ID初始化
TemplateFindResp template = templateService.findTemplateById(pipelineReq.getTemplateId()); TemplateFindResp template = templateService.findTemplateById(pipelineReq.getTemplateId());
if (!ObjectUtils.isEmpty(template)){ if (!ObjectUtils.isEmpty(template)){
@ -120,7 +154,7 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
List<TemplateStageResp> stageList = template.getStageList(); List<TemplateStageResp> stageList = template.getStageList();
stageList.forEach(o->{ stageList.forEach(o->{
PipStage pipStage = templateConverter.respToStage(o); PipStage pipStage = templateConverter.respToStage(o);
pipStage.setId(null); pipStage.setId(idWork.nextUUID(null));
pipStage.setPipelineId(pipeline.getId()); pipStage.setPipelineId(pipeline.getId());
pipStage.setCreateTime(LocalDateTime.now()); pipStage.setCreateTime(LocalDateTime.now());
pipStage.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId())); pipStage.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId()));
@ -138,8 +172,9 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
PipStage childStage = templateConverter.respToStage(j); PipStage childStage = templateConverter.respToStage(j);
Map<PipStage,List<PipTask>> stageTaskMap = new HashMap<>(); Map<PipStage,List<PipTask>> stageTaskMap = new HashMap<>();
childStage.setId(null); childStage.setId(idWork.nextUUID(null));
childStage.setPipelineId(pipeline.getId()); childStage.setPipelineId(pipeline.getId());
childStage.setParentId(pipStage.getId());
childStage.setCreateTime(LocalDateTime.now()); childStage.setCreateTime(LocalDateTime.now());
childStage.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId())); childStage.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId()));
if (j.isCode()){ if (j.isCode()){
@ -154,7 +189,8 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
List<PipTask> taskList = new ArrayList<>(0); List<PipTask> taskList = new ArrayList<>(0);
j.getTaskValues().forEach(k->{ j.getTaskValues().forEach(k->{
PipTask pipTask = templateConverter.templateTaskToTask(k); PipTask pipTask = templateConverter.templateTaskToTask(k);
pipTask.setId(null); pipTask.setId(idWork.nextUUID(null));
pipTask.setStageId(childStage.getId());
pipTask.setPipelineId(pipeline.getId()); pipTask.setPipelineId(pipeline.getId());
pipTask.setCreateTime(LocalDateTime.now()); pipTask.setCreateTime(LocalDateTime.now());
pipTask.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId())); pipTask.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId()));
@ -174,31 +210,29 @@ public class PipelineServiceImpl extends ServiceImpl<PipelineDao, PipPipeline> i
pipTaskDao.insertBatch(pipTaskList); pipTaskDao.insertBatch(pipTaskList);
//清空数组 //清空数组
pipStageList.clear(); // pipStageList.clear();
pipTaskList.clear(); // pipTaskList.clear();
//
templateCopyPipelineMap.forEach((parentStage, childStages) -> { // templateCopyPipelineMap.forEach((parentStage, childStages) -> {
//
childStages.forEach((childStage, tasks) -> { // childStages.forEach((childStage, tasks) -> {
childStage.setParentId(parentStage.getId()); // childStage.setParentId(parentStage.getId());
pipStageList.add(childStage); // pipStageList.add(childStage);
//
tasks.forEach(task -> { // tasks.forEach(task -> {
task.setStageId(childStage.getId()); // task.setStageId(childStage.getId());
pipTaskList.add(task); // pipTaskList.add(task);
}); // });
}); // });
}); // });
if (!CollectionUtils.isEmpty(pipStageList)){ // if (!CollectionUtils.isEmpty(pipStageList)){
pipStageDao.updateBatch(pipStageList); // pipStageDao.updateBatch(pipStageList);
} // }
if (!CollectionUtils.isEmpty(pipTaskList)){ // if (!CollectionUtils.isEmpty(pipTaskList)){
pipTaskDao.updateBatch(pipTaskList); // pipTaskDao.updateBatch(pipTaskList);
} // }
} }
//TODO 创建对应的鉴权关系
//TODO 创建对应的消息分发
return pipeline.getId(); return pipeline.getId();
} }