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 86c3e36..bc30a72 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 @@ -20,6 +20,7 @@ import org.apache.commons.lang3.StringUtils; import org.jsoup.helper.W3CDom; import org.springframework.core.task.VirtualThreadTaskExecutor; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Collections; @@ -182,17 +183,70 @@ public class StageServiceImpl implements StageService { @Override public void deleteStagesOrTask(String taskId) { - PipTask pipTask = new PipTask(); -// pipTask.set - List taskById = taskService.getTask(pipTask); + PipTask taskQuery = new PipTask(); + taskQuery.setTaskId(taskId); + List taskList = taskService.getTask(taskQuery); + if (CollectionUtils.isEmpty(taskList)) { + return; + } + PipTask task = taskList.get(0); + taskService.deleteTaskById(taskId); + // 查询上一级stage下有无其他task 没有则连着stage删除 + String stageId = task.getStageId(); + String pipelineId = task.getPipelineId(); + taskQuery.setTaskId(""); + taskQuery.setStageId(stageId); + List otherTask = taskService.getTask(task); + if (CollectionUtils.isEmpty(otherTask)) { + // 删除当前task的父stage,然后判断父stage的父级有无其他子集如果没有就继续删除当前阶段 + + PipStage stageQuery = new PipStage(); + stageQuery.setPipelineId(stageId); + List currStageList = getPipStageList(stageQuery); + if (CollectionUtils.isEmpty(currStageList)) { + throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"stage不存在"); + } + PipStage currStage = currStageList.get(0); + deleteStages(stageId); + String parentId = currStage.getParentId(); + stageQuery.setParentId(parentId); + stageQuery.setStageId(null); + // 查询同阶段其他二级stage,如果不存在其他stage则删除阶段stage并整理sort值 + List otherStageList = getPipStageList(stageQuery); + if (CollectionUtils.isEmpty(otherStageList)) { + //没有其他并行路径就需要删除当前阶段 + deleteStages(parentId); + } else { + for (PipStage stage : otherStageList) { + if (currStage.getStageSort() getPipStageList(PipStage pipStage){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StringUtils.isNotEmpty(pipStage.getStageId()),PipStage::getStageId,pipStage.getStageId()); + wrapper.eq(StringUtils.isNotEmpty(pipStage.getPipelineId()),PipStage::getPipelineId,pipStage.getPipelineId()); + wrapper.eq(StringUtils.isNotEmpty(pipStage.getParentId()),PipStage::getParentId,pipStage.getParentId()); + return stageDao.selectList(wrapper); + } + @Override public void updateStageName(StageReq stage) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); @@ -235,7 +289,7 @@ public class StageServiceImpl implements StageService { @Override public void deleteStages(String stageId) { - + stageDao.deleteById(stageId); } @Override diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/TaskService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/TaskService.java index 9359d60..da5e4a1 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/TaskService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/TaskService.java @@ -14,4 +14,5 @@ public interface TaskService { public String createTasksOrTask(PipTask tasks); List finAllStageTask(String stageId); List getTask(PipTask pipTask); + void deleteTaskById(String taskId); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/impl/TaskServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/impl/TaskServiceImpl.java index 6c5d60e..ec6b431 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/impl/TaskServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/task/impl/TaskServiceImpl.java @@ -94,7 +94,7 @@ public class TaskServiceImpl implements TaskService { String tasksId = createTasks(tasks); //创建任务 - createDifferentTask(tasksId,taskType,tasks.getValues()); +// createDifferentTask(tasksId,taskType,tasks.getValues()); return tasksId; } @@ -114,6 +114,11 @@ public class TaskServiceImpl implements TaskService { return taskDao.selectList(wrapper); } + @Override + public void deleteTaskById(String taskId) { + taskDao.deleteById(taskId); + } + void createDifferentTask(String taskId,String taskType,Object values){ // TODO }