diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/task/TaskCreateReq.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/task/TaskCreateReq.java index 99fa1082..10e16448 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/task/TaskCreateReq.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/task/TaskCreateReq.java @@ -9,6 +9,6 @@ public class TaskCreateReq { private String taskName; private String pipelineId; private String taskType; - private String taskSort; + private Integer taskSort; private JSONObject taskProperties; } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java index f065bc71..952cbcdf 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java @@ -24,13 +24,13 @@ public class PipStage { private String pipelineId; //@ApiProperty(name="stageSort",desc="阶段顺序") - private int stageSort; + private Integer stageSort; //@ApiProperty(name = "parentId",desc="主阶段") private String parentId; //@ApiProperty(name = "code",desc="是否是源码") - private boolean code = false; + private Boolean code = false; //@ApiProperty(name = "taskValues",desc="阶段任务") @TableField(exist = false) diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java index 533c1f92..4e71e06f 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java @@ -22,6 +22,7 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.json.JSONObject; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; @@ -39,7 +40,7 @@ public class StageServiceImpl extends ServiceImpl impleme private TaskService taskService; @Resource private PipStageDao stageDao; - + @Transactional(rollbackFor = Exception.class) @Override public String createStagesOrTask(StageCreateReq stageReq) { String firstStageId = stageReq.getStageId(); @@ -49,7 +50,7 @@ public class StageServiceImpl extends ServiceImpl impleme String secondStageId = task.getStageId(); JSONObject taskProperties = task.getTaskProperties(); String taskType = task.getTaskType(); - String taskSort = task.getTaskSort(); + Integer taskSort = task.getTaskSort(); String pipelineId = task.getPipelineId(); PipStage firstStage = null; // 判断是否需要新建阶段,如果没有传第一级tageId而传了sort就是需要创建阶段 @@ -64,11 +65,65 @@ public class StageServiceImpl extends ServiceImpl impleme firstStage.setCreateTime(LocalDateTime.now()); firstStage.setParentId("-1"); firstStage.setPipelineId(pipelineId); + PipStage stageQuery = new PipStage(); + stageQuery.setPipelineId(pipelineId); + stageQuery.setParentId("-1"); + List otherStageList = getPipStageList(stageQuery); + if (!CollectionUtils.isEmpty(otherStageList)) { + for (PipStage stage : otherStageList) { + if (stageSort<=stage.getStageSort()) { + stage.setStageSort(stage.getStageSort()+1); + } + } + updateBatchById(otherStageList); + } + save(firstStage); // firstStage } else { - + PipStage stageQuery = new PipStage(); + stageQuery.setStageId(firstStageId); + List pipStageList = getPipStageList(stageQuery); + if (!CollectionUtils.isEmpty(pipStageList)) { + firstStage = pipStageList.get(0); + } } - return null; + if (firstStage == null) { + throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"创建节点失败"); + } + PipStage secondStage = null; + if (secondStageId==null||taskSort==null) { + // 添加并行节点 + secondStage = new PipStage(); + PipStage stageQuery = new PipStage(); + stageQuery.setParentId(firstStageId); + stageQuery.setPipelineId(pipelineId); + List pipStageList = getPipStageList(stageQuery); + if (CollectionUtils.isEmpty(pipStageList)) { + secondStage.setStageSort(1); + } else { + secondStage.setStageSort(pipStageList.size()+1); + } + secondStage.setCreateTime(LocalDateTime.now()); + save(secondStage); + taskSort=1; + secondStageId = secondStage.getStageId(); + } else { + secondStage = getById(secondStageId); + } + if (secondStage == null) { + throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"创建节点失败"); + } + // 保存task + PipTask pipTask = new PipTask(); + pipTask.setTaskType(taskType); + pipTask.setTaskSort(taskSort); + pipTask.setStageId(secondStageId); + pipTask.setTaskName(taskName); + pipTask.setCreateTime(LocalDateTime.now()); + pipTask.setTaskProperties(taskProperties); + pipTask.setPipelineId(pipelineId); + taskService.save(pipTask); + return pipTask.getTaskId(); } /** * 更新主节点阶段顺序 @@ -274,7 +329,7 @@ public class StageServiceImpl extends ServiceImpl impleme return; } for (PipStage stage : allStage) { - if (stage.isCode()){ + if (stage.getCode()){ throw new ServiceException(50001,"代码源已存在,无法再次创建。"); } }