From 96033d6353a26f66cd981dca5a6fae8270801b0a Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Tue, 20 May 2025 19:32:19 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/dataObject/task/PipTask.java | 2 ++ .../service/stage/impl/StageServiceImpl.java | 28 +++++++++++++++---- .../server/controller/StageController.java | 2 +- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/task/PipTask.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/task/PipTask.java index ec81567a..3ba3e0bc 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/task/PipTask.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/task/PipTask.java @@ -2,6 +2,7 @@ package cd.casic.ci.process.process.dataObject.task; import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import lombok.Data; import lombok.EqualsAndHashCode; import org.json.JSONObject; @@ -28,6 +29,7 @@ public class PipTask extends PipBaseElement { //@ApiProperty(name="stageId",desc="阶段",eg="@selectOne") private String stageId; // task节点配置 + @TableField(typeHandler = JacksonTypeHandler.class) private JSONObject taskProperties; // 执行实例id 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 a4a48426..cfcc9bf2 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 @@ -80,9 +80,12 @@ public class StageServiceImpl extends ServiceImpl impleme } else { PipStage stageQuery = new PipStage(); stageQuery.setId(firstStageId); + stageQuery.setParentId("-1"); List pipStageList = getPipStageList(stageQuery); if (!CollectionUtils.isEmpty(pipStageList)) { firstStage = pipStageList.get(0); + } else { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"阶段不存在"); } } if (firstStage == null) { @@ -116,6 +119,15 @@ public class StageServiceImpl extends ServiceImpl impleme if (secondStage == null) { throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"创建节点失败"); } + List taskValues = taskService.getTaskByStageIdList(Arrays.asList(secondStage.getId())); + if (!CollectionUtils.isEmpty(taskValues)) { + for (PipTask taskValue : taskValues) { + if (taskValue.getTaskSort()>=taskSort) { + taskValue.setTaskSort(taskValue.getTaskSort()+1); + } + } + taskService.updateBatchById(taskValues); + } // 保存task PipTask pipTask = new PipTask(); pipTask.setTaskType(taskType); @@ -175,6 +187,7 @@ public class StageServiceImpl extends ServiceImpl impleme } @Override + @Transactional(rollbackFor = Exception.class) public void deleteStagesOrTask(String taskId) { PipTask taskQuery = new PipTask(); taskQuery.setId(taskId); @@ -187,14 +200,14 @@ public class StageServiceImpl extends ServiceImpl impleme // 查询上一级stage下有无其他task 没有则连着stage删除 String stageId = task.getStageId(); String pipelineId = task.getPipelineId(); - taskQuery.setId(""); + taskQuery = new PipTask(); taskQuery.setStageId(stageId); - List otherTask = taskService.getTask(task); + List otherTask = taskService.getTask(taskQuery); if (CollectionUtils.isEmpty(otherTask)) { - // 删除当前task的父stage,然后判断父stage的父级有无其他子集如果没有就继续删除当前阶段 - + // 删除当前task的父stage,然后判断父stage的父级有无其他子级如果没有就继续删除当前阶段 PipStage stageQuery = new PipStage(); - stageQuery.setPipelineId(stageId); + stageQuery.setPipelineId(pipelineId); + stageQuery.setId(stageId); List currStageList = getPipStageList(stageQuery); if (CollectionUtils.isEmpty(currStageList)) { throw new ServiceException(GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR.getCode(),"stage不存在"); @@ -202,8 +215,8 @@ public class StageServiceImpl extends ServiceImpl impleme PipStage currStage = currStageList.get(0); deleteStages(stageId); String parentId = currStage.getParentId(); + stageQuery = new PipStage(); stageQuery.setParentId(parentId); - stageQuery.setId(null); // 查询同阶段其他二级stage,如果不存在其他stage则删除阶段stage并整理sort值 List otherStageList = getPipStageList(stageQuery); if (CollectionUtils.isEmpty(otherStageList)) { @@ -215,6 +228,7 @@ public class StageServiceImpl extends ServiceImpl impleme stage.setStageSort(stage.getStageSort()-1); } } + updateBatchById(otherStageList); } } else { for (PipTask pipTask : otherTask) { @@ -222,6 +236,7 @@ public class StageServiceImpl extends ServiceImpl impleme pipTask.setTaskSort(pipTask.getTaskSort()-1); } } + taskService.updateBatchById(otherTask); } } @@ -397,6 +412,7 @@ public class StageServiceImpl extends ServiceImpl impleme //获取阶段配置及任务 String otherId = stage.getId(); List allStageTask = stageIdTaskMap.get(otherId); + allStageTask.sort(Comparator.comparing(PipTask::getTaskSort)); stage.setTaskValues(allStageTask); list.add(stage); } diff --git a/ops-server/src/main/java/cd/casic/server/controller/StageController.java b/ops-server/src/main/java/cd/casic/server/controller/StageController.java index 11ffd6c8..52233630 100644 --- a/ops-server/src/main/java/cd/casic/server/controller/StageController.java +++ b/ops-server/src/main/java/cd/casic/server/controller/StageController.java @@ -88,7 +88,7 @@ public class StageController { stageService.copyStage(stageId); return CommonResult.success(); } - @PostMapping("/deleteFirstStage") + @PostMapping("/deleteFirstStage/{stageId}") public CommonResult deleteFirstStage(@PathVariable String stageId){ stageService.deleteFirstStage(stageId); return CommonResult.success();