diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateManagerController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateManagerController.java index 2570fcab..9a965e70 100644 --- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateManagerController.java +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateManagerController.java @@ -3,6 +3,7 @@ package cd.casic.ci.api; 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.process.dataObject.base.BaseIdReq; import cd.casic.ci.process.process.service.template.TemplateManagerService; @@ -37,6 +38,11 @@ public class TemplateManagerController { String templateId = templateManagerService.createTemplateManager(req); return CommonResult.success(templateId); } + @PostMapping(path="/updateTemplateManager") + public CommonResult updateTemplateManager(@RequestBody TemplateUpdateReq req){ + String templateId = templateManagerService.updateTemplateManager(req); + return CommonResult.success(templateId); + } @PostMapping(path="/findTemplatePage") public CommonResult> findTemplatePage(@RequestBody @NotNull @Valid TemplateQueryReq query){ diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateStageController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateStageController.java index b4797356..9f5e5669 100644 --- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateStageController.java +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateStageController.java @@ -85,14 +85,14 @@ public class TemplateStageController { stageService.deleteStagesAndTask(taskId); return CommonResult.success(); } -// /** -// * 复制stage节点 -// * */ -// @PostMapping(path="/copyStage/{stageId}") -// public CommonResult copyStage(@NotEmpty@PathVariable String stageId){ -// stageService.copyStage(stageId); -// return CommonResult.success(); -// } + /** + * 复制stage节点 + * */ + @PostMapping(path="/copyStage/{stageId}") + public CommonResult copyStage(@NotEmpty@PathVariable String stageId){ + stageService.copyStage(stageId); + return CommonResult.success(); + } @PostMapping("/deleteFirstStage/{stageId}") public CommonResult deleteFirstStage(@PathVariable String stageId){ stageService.deleteFirstStage(stageId); diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateTasksController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateTasksController.java index 5b99c508..87769114 100644 --- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateTasksController.java +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/TemplateTasksController.java @@ -29,14 +29,14 @@ public class TemplateTasksController { public CommonResult findOneTasksOrTask(@NotNull @PathVariable String taskId){ return CommonResult.success(taskService.getRespById(taskId)); } -// /** -// * 复制task节点 -// * */ -// @PostMapping(path="/copyTask/{taskId}") -// public CommonResult copyTask(@NotEmpty @PathVariable String taskId){ -// taskService.copyTask(taskId); -// return CommonResult.success(); -// } + /** + * 复制task节点 + * */ + @PostMapping(path="/copyTask/{taskId}") + public CommonResult copyTask(@NotEmpty @PathVariable String taskId){ + taskService.copyTask(taskId); + return CommonResult.success(); + } @PostMapping(path="/updateTask") public CommonResult updateTask(@RequestBody TemplateTaskUpdateReq req){ Boolean b = taskService.updateTask(req); diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/template/TemplateUpdateReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/template/TemplateUpdateReq.java new file mode 100644 index 00000000..51bed154 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/template/TemplateUpdateReq.java @@ -0,0 +1,31 @@ +package cd.casic.ci.process.dto.req.template; + +import lombok.Data; + +/** + * @author HopeLi + * @version v1.0 + * @ClassName TemplateCreateReq + * @Date: 2025/5/29 10:41 + * @Description: + */ + +@Data +public class TemplateUpdateReq { + /** + * 模板名称 + */ + private String templateName; + + /** + * 模板分类 + */ + private String templateType; + + /** + * 描述 + */ + private String remark; + + private String id; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TemplateConverter.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TemplateConverter.java index 1621a1a8..f4fdb35e 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TemplateConverter.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TemplateConverter.java @@ -1,6 +1,7 @@ package cd.casic.ci.process.process.converter; 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; import cd.casic.ci.process.dto.resp.template.TemplateStageResp; import cd.casic.ci.process.dto.resp.template.TemplateTasksResp; @@ -29,4 +30,5 @@ public interface TemplateConverter { TemplateStageResp stageTemplateToResp(TemplateStage stage); PipTask templateTaskToTask(TemplateTasksResp resp); TemplateManager managerCreateReqToManager(TemplateCreateReq req); + TemplateManager managerUpdateReqToManager(TemplateUpdateReq req); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateManagerService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateManagerService.java index 1159118a..35a19bc3 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateManagerService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateManagerService.java @@ -3,6 +3,7 @@ package cd.casic.ci.process.process.service.template; 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.process.dataObject.template.TemplateManager; import cd.casic.framework.commons.pojo.PageResult; @@ -20,6 +21,7 @@ import java.util.List; */ public interface TemplateManagerService extends IService { String createTemplateManager(TemplateCreateReq req); + String updateTemplateManager(TemplateUpdateReq req); PageResult findTemplatePage(@Valid TemplateQueryReq query); diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateStageService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateStageService.java index 91fba9ef..78b5316e 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateStageService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateStageService.java @@ -40,4 +40,6 @@ public interface TemplateStageService extends IService { void deleteStagesAndTask(String taskId); public void updateStagesTask(TemplateStageUpdateReq stage); + + public void copyStage(String stageId); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateTaskService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateTaskService.java index 2a4ee024..0be3fd23 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateTaskService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/TemplateTaskService.java @@ -21,4 +21,5 @@ public interface TemplateTaskService extends IService { List getTaskByStageIdList(List stageIdList); TemplateTasksResp getRespById(String taskId); public Boolean updateTask(TemplateTaskUpdateReq req); + void copyTask(String taskId); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateManagerServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateManagerServiceImpl.java index 9ae476b2..e71edc45 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateManagerServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateManagerServiceImpl.java @@ -3,6 +3,7 @@ package cd.casic.ci.process.process.service.template.impl; 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; @@ -91,6 +92,12 @@ public class TemplateManagerServiceImpl extends ServiceImpl findTemplatePage(TemplateQueryReq query) { diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateStageServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateStageServiceImpl.java index d901b66d..cfd2019a 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateStageServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateStageServiceImpl.java @@ -8,6 +8,8 @@ import cd.casic.ci.process.dto.resp.template.TemplateStageResp; import cd.casic.ci.process.process.converter.TemplateStageConverter; import cd.casic.ci.process.process.dao.template.TemplateStageDao; +import cd.casic.ci.process.process.dataObject.stage.PipStage; +import cd.casic.ci.process.process.dataObject.task.PipTask; 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.TemplateStageService; @@ -365,4 +367,52 @@ public class TemplateStageServiceImpl extends ServiceImpl allMainStage = findAllMainStage(firstStage.getTemplateId()); + List updateStageList = new ArrayList<>(allMainStage.size()); + for (TemplateStage stage : allMainStage) { + if (stage.getStageSort()>firstStage.getStageSort()) { + stage.setStageSort(stage.getStageSort()+1); + updateStageList.add(stage); + } + } + // 保存复制后的阶段,除了id和sort其他都一样 + firstStage.setId(null); + firstStage.setStageSort(firstStage.getStageSort()+1); + save(firstStage); + updateBatchById(updateStageList); + // 查询阶段下所有分支 + List secondStageList = findSecondStage(stageId); + if (!CollectionUtils.isEmpty(secondStageList)) { + List stageIdList = secondStageList.stream().map(TemplateStage::getId).toList(); + List taskList = templateTaskService.getTaskByStageIdList(stageIdList); + Map> stageIdMap = taskList.stream().collect(Collectors.groupingBy(TemplateTask::getStageId)); + for (TemplateStage secondStage : secondStageList) { + secondStage.setCreator(String.valueOf(loginUserId)); + secondStage.setCreateTime(LocalDateTime.now()); + secondStage.setUpdateTime(LocalDateTime.now()); + secondStage.setUpdater(String.valueOf(loginUserId)); + secondStage.setParentId(firstStage.getId()); + String secondStageId = secondStage.getId(); + List childTask = stageIdMap.get(secondStageId); + secondStage.setId(null); + save(secondStage); + for (TemplateTask pipTask : childTask) { + pipTask.setStageId(secondStage.getId()); + pipTask.setId(null); + pipTask.setCreator(String.valueOf(loginUserId)); + pipTask.setCreateTime(LocalDateTime.now()); + pipTask.setUpdateTime(LocalDateTime.now()); + pipTask.setUpdater(String.valueOf(loginUserId)); + } + templateTaskService.saveBatch(childTask); + } + } + + } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateTaskServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateTaskServiceImpl.java index 43b20c69..de887b59 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateTaskServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateTaskServiceImpl.java @@ -17,9 +17,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -73,4 +75,34 @@ public class TemplateTaskServiceImpl extends ServiceImpl sameLevelTaskList = getTask(query); + if (CollectionUtils.isEmpty(sameLevelTaskList)) { + return; + } + List updateList = new ArrayList<>(sameLevelTaskList.size()); + for (TemplateTask pipTask : sameLevelTaskList) { + if (!pipTask.getId().equals(sourceTask.getId())) { + if (pipTask.getTaskSort()>sourceTask.getTaskSort()) { + pipTask.setTaskSort(pipTask.getTaskSort()+1); + updateList.add(pipTask); + } + } + } + sourceTask.setTaskSort(sourceTask.getTaskSort()+1); + sourceTask.setId(null); + save(sourceTask); + if (!CollectionUtils.isEmpty(updateList)) { + updateBatchById(updateList); + } + } }