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 81a3666e..d644acf3 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 @@ -3,6 +3,7 @@ package cd.casic.ci.process.process.service.task; import cd.casic.ci.common.pipeline.req.stage.StageCreateReq; import cd.casic.ci.common.pipeline.resp.task.TasksResp; import cd.casic.ci.process.process.dataObject.task.PipTask; +import cd.casic.framework.commons.pojo.CommonResult; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -11,8 +12,9 @@ public interface TaskService extends IService { /** * 查询taskType是否存在(原项目的各种worker) * */ - public void taskTypeExist(String taskType); + void taskTypeExist(String taskType); List getTask(PipTask pipTask); - public TasksResp getById(String taskId); + TasksResp getRespById(String taskId); + void copyTask(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 16acc75b..811d3e63 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 @@ -5,6 +5,7 @@ import cd.casic.ci.common.pipeline.resp.task.TasksResp; import cd.casic.ci.process.process.dal.pipeline.PipStageDao; import cd.casic.ci.process.process.dal.pipeline.PipTaskDao; import cd.casic.ci.process.process.dataObject.task.PipTask; +import cd.casic.ci.process.process.service.stage.StageService; import cd.casic.ci.process.process.service.task.TaskService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -18,10 +19,12 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import org.springframework.core.type.filter.AnnotationTypeFilter; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; - +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Set; @@ -33,12 +36,6 @@ public class TaskServiceImpl extends ServiceImpl implements private Set candidates; @Resource private PipTaskDao taskDao; - @Resource - private PipStageDao stageDao; - - public TaskServiceImpl() { - System.out.println(""); - } @PostConstruct public void init(){ @@ -65,7 +62,7 @@ public class TaskServiceImpl extends ServiceImpl implements return taskDao.selectList(wrapper); } @Override - public TasksResp getById(String taskId){ + public TasksResp getRespById(String taskId){ PipTask pipTask = new PipTask(); pipTask.setTaskId(taskId); List taskList = getTask(pipTask); @@ -76,4 +73,35 @@ public class TaskServiceImpl extends ServiceImpl implements BeanUtils.copyProperties(taskList.get(0),tasksResp); return tasksResp; } + + @Override + @Transactional(rollbackFor = Exception.class) + public void copyTask(String taskId) { + PipTask sourceTask = getById(taskId); + if (sourceTask == null) { + return; + } + String stageId = sourceTask.getStageId(); + PipTask query = new PipTask(); + query.setStageId(stageId); + List sameLevelTaskList = getTask(query); + if (CollectionUtils.isEmpty(sameLevelTaskList)) { + return; + } + List updateList = new ArrayList<>(sameLevelTaskList.size()); + for (PipTask pipTask : sameLevelTaskList) { + if (!pipTask.getTaskId().equals(sourceTask.getTaskId())) { + if (pipTask.getTaskSort()>sourceTask.getTaskSort()) { + pipTask.setTaskSort(pipTask.getTaskSort()+1); + updateList.add(pipTask); + } + } + } + sourceTask.setTaskSort(sourceTask.getTaskSort()+1); + sourceTask.setTaskId(null); + save(sourceTask); + if (!CollectionUtils.isEmpty(updateList)) { + updateBatchById(updateList); + } + } } diff --git a/ops-server/src/main/java/cd/casic/server/controller/TasksController.java b/ops-server/src/main/java/cd/casic/server/controller/TasksController.java index 2bb6512c..60be8318 100644 --- a/ops-server/src/main/java/cd/casic/server/controller/TasksController.java +++ b/ops-server/src/main/java/cd/casic/server/controller/TasksController.java @@ -6,7 +6,9 @@ import cd.casic.ci.process.process.service.task.TaskService; import cd.casic.framework.commons.pojo.CommonResult; import com.alibaba.fastjson.JSON; import jakarta.annotation.Resource; +import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @@ -25,8 +27,13 @@ public class TasksController { * @pi.request-type: formdata * @pi.param: name=taskId;dataType=string;value=taskId; */ - @RequestMapping(path="/findOneTasksOrTask",method = RequestMethod.POST) + @PostMapping(path="/findOneTasksOrTask") public CommonResult findOneTasksOrTask(@NotNull String taskId){ - return CommonResult.success(taskService.getById(taskId)); + return CommonResult.success(taskService.getRespById(taskId)); + } + @PostMapping(path="/copyTask") + public CommonResult copyTask(@NotEmpty String taskId){ + taskService.copyTask(taskId); + return CommonResult.success(); } }