Merge branch 'temp' of http://1.14.125.6:3000/mianbin/ops-pro into temp
# Conflicts: # modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/impl/StageServiceImpl.java
This commit is contained in:
commit
04d395b9a0
@ -7,6 +7,7 @@ import cd.casic.ci.common.pipeline.resp.stage.StageResp;
|
|||||||
import cd.casic.ci.process.process.dataObject.stage.PipStage;
|
import cd.casic.ci.process.process.dataObject.stage.PipStage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -81,6 +82,6 @@ public interface StageService extends IService<PipStage> {
|
|||||||
void deleteStages(String stageId);
|
void deleteStages(String stageId);
|
||||||
|
|
||||||
|
|
||||||
void createStagesOrTaskList(@Valid @NotNull List<StageCreateReq> stageList);
|
void copyStage(@NotEmpty String stageId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,10 @@ package cd.casic.ci.process.process.service.stage.impl;
|
|||||||
|
|
||||||
|
|
||||||
import cd.casic.ci.common.pipeline.req.stage.StageCreateReq;
|
import cd.casic.ci.common.pipeline.req.stage.StageCreateReq;
|
||||||
import cd.casic.ci.common.pipeline.req.stage.StageUpdateReq;
|
import cd.casic.ci.common.pipeline.req.stage.StageReq;
|
||||||
import cd.casic.ci.common.pipeline.req.task.TaskCreateReq;
|
import cd.casic.ci.common.pipeline.req.task.TaskCreateReq;
|
||||||
import cd.casic.ci.common.pipeline.resp.stage.StageResp;
|
import cd.casic.ci.common.pipeline.resp.stage.StageResp;
|
||||||
|
|
||||||
import cd.casic.ci.process.process.dal.pipeline.PipStageDao;
|
import cd.casic.ci.process.process.dal.pipeline.PipStageDao;
|
||||||
import cd.casic.ci.process.process.dataObject.stage.PipStage;
|
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.task.PipTask;
|
||||||
@ -15,6 +16,7 @@ import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
|
|||||||
import cd.casic.framework.commons.util.object.BeanUtils;
|
import cd.casic.framework.commons.util.object.BeanUtils;
|
||||||
import cd.casic.framework.commons.util.util.WebFrameworkUtils;
|
import cd.casic.framework.commons.util.util.WebFrameworkUtils;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
@ -25,9 +27,14 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static cd.casic.ci.process.constant.PipelineFinalConstant.TASK_TYPE_CODE;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class StageServiceImpl extends ServiceImpl<PipStageDao, PipStage> implements StageService {
|
public class StageServiceImpl extends ServiceImpl<PipStageDao, PipStage> implements StageService {
|
||||||
@Resource
|
@Resource
|
||||||
@ -77,7 +84,6 @@ public class StageServiceImpl extends ServiceImpl<PipStageDao, PipStage> impleme
|
|||||||
updateBatchById(otherStageList);
|
updateBatchById(otherStageList);
|
||||||
}
|
}
|
||||||
save(firstStage);
|
save(firstStage);
|
||||||
// firstStage
|
|
||||||
} else {
|
} else {
|
||||||
PipStage stageQuery = new PipStage();
|
PipStage stageQuery = new PipStage();
|
||||||
stageQuery.setStageId(firstStageId);
|
stageQuery.setStageId(firstStageId);
|
||||||
@ -213,7 +219,7 @@ public class StageServiceImpl extends ServiceImpl<PipStageDao, PipStage> impleme
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteAllStagesOrTask(String pipelineId) {
|
public void deleteAllStagesOrTask(String pipelineId) {
|
||||||
|
// TODO 删除流水线,不知道要不要
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<PipStage> getPipStageList(PipStage pipStage){
|
public List<PipStage> getPipStageList(PipStage pipStage){
|
||||||
@ -298,12 +304,53 @@ public class StageServiceImpl extends ServiceImpl<PipStageDao, PipStage> impleme
|
|||||||
stageDao.deleteById(stageId);
|
stageDao.deleteById(stageId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createStagesOrTaskList(List<StageCreateReq> stageList) {
|
@Transactional
|
||||||
if (!ObjectUtils.isEmpty(stageList)){
|
public void copyStage(String stageId) {
|
||||||
stageList.forEach(this::createStagesOrTask);
|
// 查询当前stage(阶段下所有)
|
||||||
|
PipStage firstStage = getById(stageId);
|
||||||
|
Long loginUserId = WebFrameworkUtils.getLoginUserId();
|
||||||
|
List<PipStage> allMainStage = findAllMainStage(firstStage.getPipelineId());
|
||||||
|
List<PipStage> updateStageList = new ArrayList<>(allMainStage.size());
|
||||||
|
for (PipStage stage : allMainStage) {
|
||||||
|
if (stage.getStageSort()>firstStage.getStageSort()) {
|
||||||
|
stage.setStageSort(stage.getStageSort()+1);
|
||||||
|
updateStageList.add(stage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// 保存复制后的阶段,除了id和sort其他都一样
|
||||||
|
firstStage.setStageId(null);
|
||||||
|
firstStage.setStageSort(firstStage.getStageSort()+1);
|
||||||
|
save(firstStage);
|
||||||
|
updateBatchById(updateStageList);
|
||||||
|
// 查询阶段下所有分支
|
||||||
|
List<PipStage> secondStageList = findSecondStage(stageId);
|
||||||
|
if (!CollectionUtils.isEmpty(secondStageList)) {
|
||||||
|
List<String> stageIdList = secondStageList.stream().map(PipStage::getStageId).toList();
|
||||||
|
List<PipTask> taskList = taskService.listByIds(stageIdList);
|
||||||
|
Map<String, List<PipTask>> stageIdMap = taskList.stream().collect(Collectors.groupingBy(PipTask::getStageId));
|
||||||
|
for (PipStage secondStage : secondStageList) {
|
||||||
|
secondStage.setCreateUserId(loginUserId);
|
||||||
|
secondStage.setCreateTime(LocalDateTime.now());
|
||||||
|
secondStage.setUpdateTime(LocalDateTime.now());
|
||||||
|
secondStage.setUpdateUserId(loginUserId);
|
||||||
|
secondStage.setParentId(firstStage.getStageId());
|
||||||
|
String secondStageId = secondStage.getStageId();
|
||||||
|
List<PipTask> childTask = stageIdMap.get(secondStageId);
|
||||||
|
secondStage.setStageId(null);
|
||||||
|
save(secondStage);
|
||||||
|
for (PipTask pipTask : childTask) {
|
||||||
|
pipTask.setStageId(secondStage.getStageId());
|
||||||
|
pipTask.setTaskId(null);
|
||||||
|
pipTask.setCreateUserId(loginUserId);
|
||||||
|
pipTask.setCreateTime(LocalDateTime.now());
|
||||||
|
pipTask.setUpdateTime(LocalDateTime.now());
|
||||||
|
pipTask.setUpdateUserId(loginUserId);
|
||||||
|
}
|
||||||
|
taskService.saveBatch(childTask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<PipStage> findOtherStageNoTask(String stagesId){
|
public List<PipStage> findOtherStageNoTask(String stagesId){
|
||||||
|
@ -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.req.stage.StageCreateReq;
|
||||||
import cd.casic.ci.common.pipeline.resp.task.TasksResp;
|
import cd.casic.ci.common.pipeline.resp.task.TasksResp;
|
||||||
import cd.casic.ci.process.process.dataObject.task.PipTask;
|
import cd.casic.ci.process.process.dataObject.task.PipTask;
|
||||||
|
import cd.casic.framework.commons.pojo.CommonResult;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -11,8 +12,9 @@ public interface TaskService extends IService<PipTask> {
|
|||||||
/**
|
/**
|
||||||
* 查询taskType是否存在(原项目的各种worker)
|
* 查询taskType是否存在(原项目的各种worker)
|
||||||
* */
|
* */
|
||||||
public void taskTypeExist(String taskType);
|
void taskTypeExist(String taskType);
|
||||||
List<PipTask> getTask(PipTask pipTask);
|
List<PipTask> getTask(PipTask pipTask);
|
||||||
public TasksResp getById(String taskId);
|
TasksResp getRespById(String taskId);
|
||||||
|
|
||||||
|
void copyTask(String taskId);
|
||||||
}
|
}
|
||||||
|
@ -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.PipStageDao;
|
||||||
import cd.casic.ci.process.process.dal.pipeline.PipTaskDao;
|
import cd.casic.ci.process.process.dal.pipeline.PipTaskDao;
|
||||||
import cd.casic.ci.process.process.dataObject.task.PipTask;
|
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 cd.casic.ci.process.process.service.task.TaskService;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
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.context.annotation.ClassPathScanningCandidateComponentProvider;
|
||||||
import org.springframework.core.type.filter.AnnotationTypeFilter;
|
import org.springframework.core.type.filter.AnnotationTypeFilter;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -33,12 +36,6 @@ public class TaskServiceImpl extends ServiceImpl<PipTaskDao, PipTask> implements
|
|||||||
private Set<BeanDefinition> candidates;
|
private Set<BeanDefinition> candidates;
|
||||||
@Resource
|
@Resource
|
||||||
private PipTaskDao taskDao;
|
private PipTaskDao taskDao;
|
||||||
@Resource
|
|
||||||
private PipStageDao stageDao;
|
|
||||||
|
|
||||||
public TaskServiceImpl() {
|
|
||||||
System.out.println("");
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init(){
|
public void init(){
|
||||||
@ -65,7 +62,7 @@ public class TaskServiceImpl extends ServiceImpl<PipTaskDao, PipTask> implements
|
|||||||
return taskDao.selectList(wrapper);
|
return taskDao.selectList(wrapper);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public TasksResp getById(String taskId){
|
public TasksResp getRespById(String taskId){
|
||||||
PipTask pipTask = new PipTask();
|
PipTask pipTask = new PipTask();
|
||||||
pipTask.setTaskId(taskId);
|
pipTask.setTaskId(taskId);
|
||||||
List<PipTask> taskList = getTask(pipTask);
|
List<PipTask> taskList = getTask(pipTask);
|
||||||
@ -76,4 +73,35 @@ public class TaskServiceImpl extends ServiceImpl<PipTaskDao, PipTask> implements
|
|||||||
BeanUtils.copyProperties(taskList.get(0),tasksResp);
|
BeanUtils.copyProperties(taskList.get(0),tasksResp);
|
||||||
return 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<PipTask> sameLevelTaskList = getTask(query);
|
||||||
|
if (CollectionUtils.isEmpty(sameLevelTaskList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<PipTask> 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import com.alibaba.fastjson.JSONArray;
|
|||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.annotation.security.PermitAll;
|
import jakarta.annotation.security.PermitAll;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
@ -84,7 +85,14 @@ public class StageController {
|
|||||||
stageService.deleteStagesOrTask(taskId);
|
stageService.deleteStagesOrTask(taskId);
|
||||||
return CommonResult.success();
|
return CommonResult.success();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 复制stage节点
|
||||||
|
* */
|
||||||
|
@PostMapping(path="/copyStage")
|
||||||
|
public CommonResult<Void> copyStage(@NotEmpty String stageId){
|
||||||
|
stageService.copyStage(stageId);
|
||||||
|
return CommonResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,9 @@ import cd.casic.ci.process.process.service.task.TaskService;
|
|||||||
import cd.casic.framework.commons.pojo.CommonResult;
|
import cd.casic.framework.commons.pojo.CommonResult;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
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.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
@ -25,8 +27,13 @@ public class TasksController {
|
|||||||
* @pi.request-type: formdata
|
* @pi.request-type: formdata
|
||||||
* @pi.param: name=taskId;dataType=string;value=taskId;
|
* @pi.param: name=taskId;dataType=string;value=taskId;
|
||||||
*/
|
*/
|
||||||
@RequestMapping(path="/findOneTasksOrTask",method = RequestMethod.POST)
|
@PostMapping(path="/findOneTasksOrTask")
|
||||||
public CommonResult<TasksResp> findOneTasksOrTask(@NotNull String taskId){
|
public CommonResult<TasksResp> findOneTasksOrTask(@NotNull String taskId){
|
||||||
return CommonResult.success(taskService.getById(taskId));
|
return CommonResult.success(taskService.getRespById(taskId));
|
||||||
|
}
|
||||||
|
@PostMapping(path="/copyTask")
|
||||||
|
public CommonResult<Void> copyTask(@NotEmpty String taskId){
|
||||||
|
taskService.copyTask(taskId);
|
||||||
|
return CommonResult.success();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user