From 3be7e496b4574af8d4699b5d956f2a6b05e51a1c Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Fri, 16 May 2025 09:25:52 +0800 Subject: [PATCH 1/3] =?UTF-8?q?mapstruct=E6=9A=82=E6=97=B6=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=EF=BC=8CtableIgnore=20=E5=AD=97=E6=AE=B5=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cd/casic/ci/process/process/dataObject/task/PipTask.java | 2 ++ .../cd/casic/module/infra/convert/config/ConfigConvert.java | 4 ++-- .../cd/casic/module/infra/convert/file/FileConfigConvert.java | 4 ++-- .../cd/casic/module/system/convert/dict/DictDataConvert.java | 2 +- .../cd/casic/module/system/convert/dict/DictTypeConvert.java | 2 +- 5 files changed, 8 insertions(+), 6 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 b1f440d..24edcf7 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 @@ -1,6 +1,7 @@ package cd.casic.ci.process.process.dataObject.task; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import org.json.JSONObject; @@ -37,6 +38,7 @@ public class PipTask { private JSONObject taskProperties; // 执行实例id + @TableField(exist = false) private String instanceId; private LocalDateTime updateTime; private Long updateUserId; diff --git a/modules/module-infra-biz/src/main/java/cd/casic/module/infra/convert/config/ConfigConvert.java b/modules/module-infra-biz/src/main/java/cd/casic/module/infra/convert/config/ConfigConvert.java index 5721c32..1ea13f9 100644 --- a/modules/module-infra-biz/src/main/java/cd/casic/module/infra/convert/config/ConfigConvert.java +++ b/modules/module-infra-biz/src/main/java/cd/casic/module/infra/convert/config/ConfigConvert.java @@ -19,10 +19,10 @@ public interface ConfigConvert { List convertList(List list); - @Mapping(source = "configKey", target = "key") +// @Mapping(source = "configKey", target = "key") ConfigRespVO convert(ConfigDO bean); - @Mapping(source = "key", target = "configKey") +// @Mapping(source = "key", target = "configKey") ConfigDO convert(ConfigSaveReqVO bean); } diff --git a/modules/module-infra-biz/src/main/java/cd/casic/module/infra/convert/file/FileConfigConvert.java b/modules/module-infra-biz/src/main/java/cd/casic/module/infra/convert/file/FileConfigConvert.java index 12d0fcc..44a995d 100644 --- a/modules/module-infra-biz/src/main/java/cd/casic/module/infra/convert/file/FileConfigConvert.java +++ b/modules/module-infra-biz/src/main/java/cd/casic/module/infra/convert/file/FileConfigConvert.java @@ -11,12 +11,12 @@ import org.mapstruct.factory.Mappers; * * @author mianbin modified from yudao */ -@Mapper +//@Mapper public interface FileConfigConvert { FileConfigConvert INSTANCE = Mappers.getMapper(FileConfigConvert.class); - @Mapping(target = "config", ignore = true) +// @Mapping(target = "config", ignore = true) FileConfigDO convert(FileConfigSaveReqVO bean); } diff --git a/modules/module-system-biz/src/main/java/cd/casic/module/system/convert/dict/DictDataConvert.java b/modules/module-system-biz/src/main/java/cd/casic/module/system/convert/dict/DictDataConvert.java index bf5da56..ada0f2d 100644 --- a/modules/module-system-biz/src/main/java/cd/casic/module/system/convert/dict/DictDataConvert.java +++ b/modules/module-system-biz/src/main/java/cd/casic/module/system/convert/dict/DictDataConvert.java @@ -9,7 +9,7 @@ import org.mapstruct.factory.Mappers; import java.util.List; -@Mapper +//@Mapper public interface DictDataConvert { DictDataConvert INSTANCE = Mappers.getMapper(DictDataConvert.class); diff --git a/modules/module-system-biz/src/main/java/cd/casic/module/system/convert/dict/DictTypeConvert.java b/modules/module-system-biz/src/main/java/cd/casic/module/system/convert/dict/DictTypeConvert.java index 8ca5d14..5ebbc54 100644 --- a/modules/module-system-biz/src/main/java/cd/casic/module/system/convert/dict/DictTypeConvert.java +++ b/modules/module-system-biz/src/main/java/cd/casic/module/system/convert/dict/DictTypeConvert.java @@ -9,7 +9,7 @@ import org.mapstruct.factory.Mappers; import java.util.List; -@Mapper +//@Mapper public interface DictTypeConvert { DictTypeConvert INSTANCE = Mappers.getMapper(DictTypeConvert.class); From 969def7fc3a797c9af0e9cd4e44fd3e6eafb880d Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Fri, 16 May 2025 15:29:11 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=BC=95=E6=93=8E?= =?UTF-8?q?=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81=EF=BC=88=E5=BC=80=E4=BA=86?= =?UTF-8?q?=E4=B8=AA=E5=A4=B4=EF=BC=89=EF=BC=8Cstage=EF=BC=8Ctask=E4=B8=BB?= =?UTF-8?q?=E9=94=AE=E5=AD=97=E6=AE=B5=E6=94=B9=E4=B8=BAid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/GlobalErrorCodeConstants.java | 2 + .../common/pipeline/req/stage/StageReq.java | 55 ----------- .../pipeline/req/stage/StageUpdateReq.java | 2 +- .../ci/common/pipeline/req/task/TasksReq.java | 2 +- .../engine/dispatcher/BaseDispatcher.java | 10 ++ .../dispatcher/impl/ParallelDispatcher.java | 26 +++++ .../dispatcher/impl/SerialDispatcher.java | 17 ++++ .../engine/enums/ContextStateEnum.java | 70 +++++++++++++ .../engine/executor/PipelineExecutor.java | 7 ++ .../impl/DefaultPipelineExecutor.java | 45 +++++++++ .../engine/manager/RunContextManager.java | 31 ++++++ .../process/engine/manager/WorkerManager.java | 4 + .../impl/DefaultRunContextManager.java | 4 + .../engine/runContext/BaseRunContext.java | 97 +++++++++++++++++++ .../engine/runContext/MainStageContext.java | 22 +++++ .../engine/runContext/PipelineRunContext.java | 59 +++++++++++ .../engine/runContext/StageRunContext.java | 36 +++++++ .../engine/runContext/TaskRunContext.java | 29 ++++++ .../dataObject/base/PipBaseElement.java | 21 ++++ .../dataObject/pipeline/PipPipeline.java | 25 +---- .../process/dataObject/stage/PipStage.java | 12 +-- .../process/dataObject/task/PipTask.java | 12 +-- .../process/service/stage/StageService.java | 4 +- .../service/stage/impl/StageServiceImpl.java | 21 +++- .../server/controller/StageController.java | 5 - 25 files changed, 518 insertions(+), 100 deletions(-) delete mode 100644 modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/stage/StageReq.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/BaseDispatcher.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/ParallelDispatcher.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/SerialDispatcher.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/enums/ContextStateEnum.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/executor/PipelineExecutor.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/executor/impl/DefaultPipelineExecutor.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/RunContextManager.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/WorkerManager.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/BaseRunContext.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/MainStageContext.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/PipelineRunContext.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/StageRunContext.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/TaskRunContext.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/base/PipBaseElement.java diff --git a/framework/commons/src/main/java/cd/casic/framework/commons/exception/enums/GlobalErrorCodeConstants.java b/framework/commons/src/main/java/cd/casic/framework/commons/exception/enums/GlobalErrorCodeConstants.java index b375093..5333f9a 100644 --- a/framework/commons/src/main/java/cd/casic/framework/commons/exception/enums/GlobalErrorCodeConstants.java +++ b/framework/commons/src/main/java/cd/casic/framework/commons/exception/enums/GlobalErrorCodeConstants.java @@ -41,4 +41,6 @@ public interface GlobalErrorCodeConstants { ErrorCode ID_DUPLICATION = new ErrorCode(1000, "ID重复"); + ErrorCode PIPELINE_ERROR = new ErrorCode(1001,"流水线执行错误"); + } diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/stage/StageReq.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/stage/StageReq.java deleted file mode 100644 index 73b2c66..0000000 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/stage/StageReq.java +++ /dev/null @@ -1,55 +0,0 @@ -package cd.casic.ci.common.pipeline.req.stage; - -import cd.casic.ci.common.pipeline.req.task.TasksReq; -import lombok.Data; - -import java.time.LocalDateTime; -import java.util.List; - -@Data -public class StageReq { - //@ApiProperty(name = "stageId",desc="id") - private String stageId; - - //@ApiProperty(name = "stageName",desc="名称") - private String stageName; - - //@ApiProperty(name = "createTime",desc="创建时间") - private LocalDateTime createTime; - - //@ApiProperty(name="pipelineId",desc="流水线id") - private String pipelineId; - - //@ApiProperty(name="stageSort",desc="阶段顺序") - private int stageSort; - - //@ApiProperty(name = "parentId",desc="主阶段") - private String parentId; - - //@ApiProperty(name = "code",desc="是否是源码") - private boolean code = false; - - //@ApiProperty(name = "taskValues",desc="阶段任务") - private List taskValues; - - //@ApiProperty(name = "stageList",desc="阶段") - private List stageList; - - //@ApiProperty(name = "taskType",desc="任务类型") - private String taskType; - - //@ApiProperty(name = "taskId",desc="任务id") - private String taskId; - - //@ApiProperty(name = "values",desc="更新内容") - private Object values; - - //@ApiProperty(name = "taskSort",desc="任务顺序") - private int taskSort; - - //@ApiProperty(name = "parallelName",desc="并行阶段名称") - private String parallelName; - - // 执行实例id - private String instanceId; -} diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/stage/StageUpdateReq.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/stage/StageUpdateReq.java index 50fd50e..0f5cea5 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/stage/StageUpdateReq.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/stage/StageUpdateReq.java @@ -8,6 +8,6 @@ public class StageUpdateReq { private String stageName; // 更新sort private Integer stageSort; - private String stageId; + private String id; private String pipelineId; } diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/task/TasksReq.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/task/TasksReq.java index f4d789f..e9bbba2 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/task/TasksReq.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/task/TasksReq.java @@ -8,7 +8,7 @@ import java.time.LocalDateTime; @Data public class TasksReq { //@ApiProperty(name="taskId",desc="配置id") - private String taskId; + private String id; //@ApiProperty(name="createTime",desc="创建时间") private LocalDateTime createTime; diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/BaseDispatcher.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/BaseDispatcher.java new file mode 100644 index 0000000..b032b82 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/BaseDispatcher.java @@ -0,0 +1,10 @@ +package cd.casic.ci.process.engine.dispatcher; + +import cd.casic.ci.process.engine.runContext.BaseRunContext; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; + +import java.util.List; + +public interface BaseDispatcher { + void dispatch(); +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/ParallelDispatcher.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/ParallelDispatcher.java new file mode 100644 index 0000000..316f14e --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/ParallelDispatcher.java @@ -0,0 +1,26 @@ +package cd.casic.ci.process.engine.dispatcher.impl; + +import cd.casic.ci.process.engine.dispatcher.BaseDispatcher; +import cd.casic.ci.process.engine.runContext.PipelineRunContext; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import cd.casic.ci.process.process.dataObject.stage.PipStage; + +import java.util.List; + +public class ParallelDispatcher implements BaseDispatcher { + + private List firstStageList; + private Integer stageIndex; + private PipelineRunContext context; + + public ParallelDispatcher(List firstStageList, PipelineRunContext context) { + this.firstStageList = firstStageList; + this.context = context; + this.stageIndex = 0; + } + + @Override + public void dispatch() { + + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/SerialDispatcher.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/SerialDispatcher.java new file mode 100644 index 0000000..49f2a2d --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/dispatcher/impl/SerialDispatcher.java @@ -0,0 +1,17 @@ +package cd.casic.ci.process.engine.dispatcher.impl; + +import cd.casic.ci.process.engine.dispatcher.BaseDispatcher; +import cd.casic.ci.process.engine.runContext.StageRunContext; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import cd.casic.ci.process.process.dataObject.task.PipTask; + +import java.util.List; + +public class SerialDispatcher implements BaseDispatcher { + private StageRunContext stageRunContext; + private List itemList; + @Override + public void dispatch() { + + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/enums/ContextStateEnum.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/enums/ContextStateEnum.java new file mode 100644 index 0000000..8263f10 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/enums/ContextStateEnum.java @@ -0,0 +1,70 @@ +package cd.casic.ci.process.engine.enums; + +import lombok.Getter; + +import java.util.HashSet; +import java.util.Objects; +import java.util.Set; +@Getter +public enum ContextStateEnum { + INIT(0,"初始化", new HashSet<>(){ + { + add(READY); + add(SUSPEND); + add(STOP); + } + }), + READY(1,"就绪", new HashSet<>(){ + { + add(RUNNING); + add(SUSPEND); + add(STOP); + } + }), + RUNNING(2,"运行", new HashSet<>(){ + { + add(SUSPEND); + add(STOP); + add(HAPPY_ENDING); + add(BAD_ENDING); + } + }), + SUSPEND(3,"挂起", new HashSet<>(){ + { + add(INIT); + add(READY); + add(RUNNING); + } + }), + STOP(-1,"停止", new HashSet<>()), + HAPPY_ENDING(4,"执行成功", new HashSet<>()), + BAD_ENDING(5,"执行失败", new HashSet<>()) + ; + + private Integer code; + private String msg; + /** + * 包含当前所有合法的下一个状态 + * */ + private Set nextStep; + + ContextStateEnum(Integer code, String msg, Set nextStep) { + this.code = code; + this.msg = msg; + this.nextStep = nextStep; + } + public static Boolean canGoto(ContextStateEnum from,ContextStateEnum to){ + if (Objects.isNull(from) || Objects.isNull(to)) { + return false; + } + return from.nextStep.contains(to); + } + public static ContextStateEnum getByCode(Integer code){ + for (ContextStateEnum value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/executor/PipelineExecutor.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/executor/PipelineExecutor.java new file mode 100644 index 0000000..2ca6e10 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/executor/PipelineExecutor.java @@ -0,0 +1,7 @@ +package cd.casic.ci.process.engine.executor; + +import cd.casic.ci.process.engine.runContext.PipelineRunContext; + +public interface PipelineExecutor { + PipelineRunContext execute(String pipelineId); +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/executor/impl/DefaultPipelineExecutor.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/executor/impl/DefaultPipelineExecutor.java new file mode 100644 index 0000000..cc0e919 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/executor/impl/DefaultPipelineExecutor.java @@ -0,0 +1,45 @@ +package cd.casic.ci.process.engine.executor.impl; + +import cd.casic.ci.common.pipeline.resp.stage.StageResp; +import cd.casic.ci.process.engine.dispatcher.impl.ParallelDispatcher; +import cd.casic.ci.process.engine.enums.ContextStateEnum; +import cd.casic.ci.process.engine.executor.PipelineExecutor; +import cd.casic.ci.process.engine.manager.RunContextManager; +import cd.casic.ci.process.engine.runContext.PipelineRunContext; +import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; +import cd.casic.ci.process.process.dataObject.stage.PipStage; +import cd.casic.ci.process.process.service.pipeline.PipelineService; +import cd.casic.ci.process.process.service.stage.StageService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; + +@Component +public class DefaultPipelineExecutor implements PipelineExecutor { + @Resource + private PipelineService pipelineService; + @Resource + private StageService stageService; + @Resource + private RunContextManager runContextManager; + @Override + public PipelineRunContext execute(String pipelineId) { + PipPipeline pipeline = pipelineService.getById(pipelineId); + // TODO 判断状态不能重复运行 + Integer state = pipeline.getState(); + // TODO 判断资源是否申请成功是否处于可运行状态 + String resourceId = pipeline.getResourceId(); + String executeStatus = pipeline.getExecuteStatus(); + // TODO 如果判断成功则查询所有的阶段信息 + List mainStage = stageService.findAllFirstStagesAndChild(pipelineId); + PipelineRunContext pipelineRunContext = new PipelineRunContext(null,pipeline,new ConcurrentHashMap<>(),new ConcurrentHashMap<>()); + runContextManager.contextRegister(pipelineRunContext); +// ParallelDispatcher parallelDispatcher = new ParallelDispatcher(); + + return null; + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/RunContextManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/RunContextManager.java new file mode 100644 index 0000000..f3347c2 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/RunContextManager.java @@ -0,0 +1,31 @@ +package cd.casic.ci.process.engine.manager; + +import cd.casic.ci.process.engine.runContext.BaseRunContext; + +public interface RunContextManager { + /** + * 停止流水线运行-预留 + * */ + Boolean stopPipeline(String pipelineId); + /** + * 恢复流水线运行-预留 + * */ + Boolean notifyPipeline(String pipelineId); + /** + * 挂起流水线-预留 + * */ + Boolean suspendPipeline(String pipelineId); + /** + * 恢复子阶段运行-预留 + * */ + Boolean notifyStage(String pipelineId,String stageId); + /** + * 挂起子阶段-预留 + * */ + Boolean suspendStage(String pipelineId,String stageId); + /** + * 判断相应的context类型,放入注册Map中 + * */ + void contextRegister(BaseRunContext context); + BaseRunContext getContext(String key); +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/WorkerManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/WorkerManager.java new file mode 100644 index 0000000..8b3e3b7 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/WorkerManager.java @@ -0,0 +1,4 @@ +package cd.casic.ci.process.engine.manager; + +public interface WorkerManager { +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java new file mode 100644 index 0000000..7de3b2f --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java @@ -0,0 +1,4 @@ +package cd.casic.ci.process.engine.manager.impl; + +public class DefaultRunContextManager { +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/BaseRunContext.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/BaseRunContext.java new file mode 100644 index 0000000..65fd83e --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/BaseRunContext.java @@ -0,0 +1,97 @@ +package cd.casic.ci.process.engine.runContext; + +import cd.casic.ci.process.engine.enums.ContextStateEnum; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import cd.casic.framework.commons.exception.ServiceException; +import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; +@Data +public abstract class BaseRunContext { + /** + * 当前上下文的定义 + * */ + private PipBaseElement contextDef; + private BaseRunContext parentContext; + /** + * 运行状态 + * */ + private AtomicInteger state; + /** + * 启动时间 + * */ + private LocalDateTime startTime; + /** + * 结束时间 + * */ + private LocalDateTime endTime; + private String resourceId; + private String targetId; + private String targetType; + /** + * 整个流水线全局的变量 + * */ + private Map globalVariables; + /** + * 当前上下文局部变量 + * */ + private Map localVariables; + private Map childContext; + + public BaseRunContext(PipBaseElement contextDef,BaseRunContext parentContext, LocalDateTime startTime, String resourceId, String targetId, String targetType, Map globalVariables, Map localVariables, Map childContext) { + this.contextDef = contextDef; + this.parentContext = parentContext; + this.state = new AtomicInteger(ContextStateEnum.INIT.getCode()); + this.startTime = startTime; + this.resourceId = resourceId; + this.targetId = targetId; + this.targetType = targetType; + this.globalVariables = globalVariables; + this.localVariables = localVariables; + this.childContext = childContext; + } + + /** + * 获取当前或者子上下文 + * */ + public abstract BaseRunContext getChildRunContext(String key); + public abstract void putChildRunContext(String key,BaseRunContext context); + public void callParentChange(ContextStateEnum state){ + if (ContextStateEnum.HAPPY_ENDING.equals(state)||ContextStateEnum.BAD_ENDING.equals(state)) { + checkChildEnd(); + } + } + /** + * 查找子类是否全部完成,如果子类全部完成则父类也全部完成 + * */ + public void checkChildEnd() throws ServiceException{ + int result = ContextStateEnum.HAPPY_ENDING.getCode(); + for (Map.Entry entry : childContext.entrySet()) { + BaseRunContext child = entry.getValue(); + int state = child.getState().get(); + if (!ContextStateEnum.HAPPY_ENDING.getCode().equals(state)&&!ContextStateEnum.BAD_ENDING.getCode().equals(state)) { + return; + } + result&=state; + } + boolean end = false; + if (ContextStateEnum.HAPPY_ENDING.getCode()==result) { + if (ContextStateEnum.canGoto(ContextStateEnum.getByCode(state.get()),ContextStateEnum.HAPPY_ENDING)) { + this.state.compareAndExchange(state.get(),ContextStateEnum.HAPPY_ENDING.getCode()); + end = true; + } + } else { + if (ContextStateEnum.canGoto(ContextStateEnum.getByCode(state.get()),ContextStateEnum.BAD_ENDING)) { + this.state.compareAndExchange(state.get(),ContextStateEnum.BAD_ENDING.getCode()); + end = true; + } + } + if (!end) { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"状态有误"); + } + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/MainStageContext.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/MainStageContext.java new file mode 100644 index 0000000..1486cab --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/MainStageContext.java @@ -0,0 +1,22 @@ +package cd.casic.ci.process.engine.runContext; + +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; + +import java.time.LocalDateTime; +import java.util.Map; + +public class MainStageContext extends BaseRunContext{ + public MainStageContext(PipBaseElement contextDef, BaseRunContext parentContext, LocalDateTime startTime, String resourceId, String targetId, String targetType, Map globalVariables, Map localVariables, Map childContext) { + super(contextDef, parentContext, startTime, resourceId, targetId, targetType, globalVariables, localVariables, childContext); + } + + @Override + public BaseRunContext getChildRunContext(String key) { + return null; + } + + @Override + public void putChildRunContext(String key, BaseRunContext context) { + + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/PipelineRunContext.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/PipelineRunContext.java new file mode 100644 index 0000000..8a4b672 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/PipelineRunContext.java @@ -0,0 +1,59 @@ +package cd.casic.ci.process.engine.runContext; + +import cd.casic.ci.process.api.process.pojo.Pipeline; +import cd.casic.ci.process.engine.enums.ContextStateEnum; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; +import cd.casic.framework.commons.exception.ServiceException; +import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicInteger; + +public class PipelineRunContext extends BaseRunContext{ + + public PipelineRunContext(BaseRunContext parentContext,PipPipeline pipeline,Map globalVariables,Map localVariables) { + this(pipeline,parentContext,LocalDateTime.now(),pipeline.getResourceId(),pipeline.getTargetId(),pipeline.getTargetType(),globalVariables,localVariables,new ConcurrentHashMap<>()); + + } + + private PipelineRunContext(PipBaseElement contextDef, BaseRunContext parentContext, LocalDateTime startTime, String resourceId, String targetId, String targetType, Map globalVariables, Map localVariables, Map childContext) { + super( contextDef + ,parentContext + ,startTime + , resourceId + , targetId + , targetType + , globalVariables + , localVariables + , childContext); + } + + /** + * pipeline 底下有多个阶段,多个阶段包含多个task 不保存第二级context + * */ + @Override + public BaseRunContext getChildRunContext(String stageId) { + Map childContext = getChildContext(); + for (Map.Entry entry : childContext.entrySet()) { + BaseRunContext childRunContext = entry.getValue().getChildRunContext(stageId); + if (childRunContext!=null) { + return childRunContext; + } + } + return null; + } + + @Override + public void putChildRunContext(String key, BaseRunContext context) { + Map childContext = getChildContext(); + if (context instanceof StageRunContext) { + childContext.put(key,context); + } else { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"不支持类型"); + } + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/StageRunContext.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/StageRunContext.java new file mode 100644 index 0000000..f61223e --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/StageRunContext.java @@ -0,0 +1,36 @@ +package cd.casic.ci.process.engine.runContext; + +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import cd.casic.framework.commons.exception.ServiceException; +import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; + +import java.time.LocalDateTime; +import java.util.Map; + +public class StageRunContext extends BaseRunContext{ + public StageRunContext(PipBaseElement contextDef, BaseRunContext parentContext, LocalDateTime startTime, String resourceId, String targetId, String targetType, Map globalVariables, Map localVariables, Map childContext) { + super(contextDef, parentContext, startTime, resourceId, targetId, targetType, globalVariables, localVariables, childContext); + } + + @Override + public BaseRunContext getChildRunContext(String taskId) { + Map childContext = getChildContext(); + for (Map.Entry entry : childContext.entrySet()) { + BaseRunContext childRunContext = entry.getValue().getChildRunContext(taskId); + if (childRunContext!=null) { + return childRunContext; + } + } + return null; + } + + @Override + public void putChildRunContext(String key, BaseRunContext context) { + Map childContext = getChildContext(); + if (context instanceof TaskRunContext) { + childContext.put(key,context); + } else { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"不支持类型"); + } + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/TaskRunContext.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/TaskRunContext.java new file mode 100644 index 0000000..df519e5 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/TaskRunContext.java @@ -0,0 +1,29 @@ +package cd.casic.ci.process.engine.runContext; + +import cd.casic.framework.commons.exception.ServiceException; +import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.apache.commons.lang3.StringUtils; + +@EqualsAndHashCode(callSuper = true) +@Data +public class TaskRunContext extends BaseRunContext{ + private String taskId; + private String taskType; + /** + * task是最后一层没有下一级所以如果id相同直接返回它自己 + * */ + @Override + public BaseRunContext getChildRunContext(String id) { + if (!StringUtils.isEmpty(id)||!id.equals(taskId)) { + return null; + } + return this; + } + + @Override + public void putChildRunContext(String key, BaseRunContext context) { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"task没有子阶段"); + } +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/base/PipBaseElement.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/base/PipBaseElement.java new file mode 100644 index 0000000..f995bb8 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/base/PipBaseElement.java @@ -0,0 +1,21 @@ +package cd.casic.ci.process.process.dataObject.base; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class PipBaseElement { + /** + * 主键id + */ + @TableId(type = IdType.ASSIGN_ID) + private String id; + //@ApiProperty(name = "createTime",desc="创建时间") + private LocalDateTime createTime; + private LocalDateTime updateTime; + private Long createUserId; + private Long updateUserId; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/pipeline/PipPipeline.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/pipeline/PipPipeline.java index f595d53..5fd0c4e 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/pipeline/PipPipeline.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/pipeline/PipPipeline.java @@ -1,38 +1,23 @@ package cd.casic.ci.process.process.dataObject.pipeline; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; +import lombok.EqualsAndHashCode; import java.time.LocalDateTime; +@EqualsAndHashCode(callSuper = true) @Data -public class PipPipeline { - /** - * 主键id - */ - @TableId(type = IdType.ASSIGN_ID) - private String id; +public class PipPipeline extends PipBaseElement { + /** * 流水线名称 */ private String name; - /** - * 创建人用户id - */ - private String createUserId; - - private String updateUserId; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - private LocalDateTime updateTime; - /** * 流水线类型 1.多任务 2.多阶段 */ diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java index 2f8b0ea..74db8e6 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java @@ -1,15 +1,18 @@ package cd.casic.ci.process.process.dataObject.stage; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import cd.casic.ci.process.process.dataObject.task.PipTask; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; +import lombok.EqualsAndHashCode; import java.time.LocalDateTime; import java.util.List; +@EqualsAndHashCode(callSuper = true) @Data -public class PipStage { +public class PipStage extends PipBaseElement { //@ApiProperty(name = "stageId",desc="id") @TableId(type = IdType.ASSIGN_ID) private String stageId; @@ -17,8 +20,7 @@ public class PipStage { //@ApiProperty(name = "stageName",desc="名称") private String stageName; - //@ApiProperty(name = "createTime",desc="创建时间") - private LocalDateTime createTime; + //@ApiProperty(name="pipelineId",desc="流水线id") private String pipelineId; @@ -42,7 +44,5 @@ public class PipStage { // 执行实例id @TableField(exist = false) private String instanceId; - private LocalDateTime updateTime; - private Long createUserId; - private Long updateUserId; + } 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 24edcf7..c107e5b 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 @@ -1,22 +1,22 @@ package cd.casic.ci.process.process.dataObject.task; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; +import lombok.EqualsAndHashCode; import org.json.JSONObject; import java.time.LocalDateTime; +@EqualsAndHashCode(callSuper = true) @Data -public class PipTask { +public class PipTask extends PipBaseElement { //@ApiProperty(name="taskId",desc="配置id") @TableId(type = IdType.ASSIGN_ID) private String taskId; - //@ApiProperty(name="createTime",desc="创建时间") - private LocalDateTime createTime; - //@ApiProperty(name="taskType",desc= "类型1-10:源码,10-20:测试,20-30:构建,30-40:部署,40-50:代码扫描,50-60:推送制品") private String taskType; @@ -40,7 +40,5 @@ public class PipTask { // 执行实例id @TableField(exist = false) private String instanceId; - private LocalDateTime updateTime; - private Long updateUserId; - private Long createUserId; + } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/StageService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/StageService.java index 6997c92..50dc38b 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/StageService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/stage/StageService.java @@ -1,14 +1,11 @@ package cd.casic.ci.process.process.service.stage; import cd.casic.ci.common.pipeline.req.stage.StageCreateReq; -import cd.casic.ci.common.pipeline.req.stage.StageReq; import cd.casic.ci.common.pipeline.req.stage.StageUpdateReq; import cd.casic.ci.common.pipeline.resp.stage.StageResp; import cd.casic.ci.process.process.dataObject.stage.PipStage; import com.baomidou.mybatisplus.extension.service.IService; -import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; import java.util.List; @@ -27,6 +24,7 @@ public interface StageService extends IService { * @return 任务 */ List findAllStagesTask(String pipelineId); + List findAllFirstStagesAndChild(String pipelineId); /** * 删除阶段及任务 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 e344975..0067be7 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 @@ -142,7 +142,7 @@ public class StageServiceImpl extends ServiceImpl impleme for (PipStage stage : stageMainStage) { String stagesId = stage.getStageId(); //获取从节点 - List allStageStage = findOtherStageNoTask(stagesId); + List allStageStage = findSecondStageAndTask(stagesId); List stageRespList = allStageStage.stream().map(it -> { StageResp stageResp = new StageResp(); BeanUtils.copyProperties(it, stageResp); @@ -157,6 +157,23 @@ public class StageServiceImpl extends ServiceImpl impleme return list; } + @Override + public List findAllFirstStagesAndChild(String pipelineId) { + //获取流水线主节点 + List stageMainStage = findAllMainStage(pipelineId); + if (stageMainStage.isEmpty()){ + return Collections.emptyList(); + } + for (PipStage stage : stageMainStage) { + String stagesId = stage.getStageId(); + //获取从节点 + List allStageStage = findSecondStageAndTask(stagesId); + stage.setStageList(allStageStage); + } + stageMainStage.sort(Comparator.comparing(PipStage::getStageSort)); + return stageMainStage; + } + @Override public void deleteStagesOrTask(String taskId) { PipTask taskQuery = new PipTask(); @@ -345,7 +362,7 @@ public class StageServiceImpl extends ServiceImpl impleme } - public List findOtherStageNoTask(String stagesId){ + public List findSecondStageAndTask(String stagesId){ List otherStage = findSecondStage(stagesId); List list = new ArrayList<>(); List stageIdList = otherStage.stream().map(PipStage::getStageId).toList(); 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 c25a649..7f8f90a 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 @@ -1,13 +1,10 @@ package cd.casic.server.controller; import cd.casic.ci.common.pipeline.req.stage.StageCreateReq; -import cd.casic.ci.common.pipeline.req.stage.StageReq; import cd.casic.ci.common.pipeline.req.stage.StageUpdateReq; import cd.casic.ci.common.pipeline.resp.stage.StageResp; import cd.casic.ci.process.process.service.stage.StageService; import cd.casic.framework.commons.pojo.CommonResult; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; import jakarta.annotation.Resource; import jakarta.annotation.security.PermitAll; @@ -18,8 +15,6 @@ import jakarta.validation.constraints.NotNull; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; /** From 7758a6d5ebaea1a2a05bcb0d77df0e7506819fcb Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Fri, 16 May 2025 16:03:37 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=BC=95=E6=93=8E?= =?UTF-8?q?=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81=EF=BC=88=E5=BC=80=E4=BA=86?= =?UTF-8?q?=E4=B8=AA=E5=A4=B4=EF=BC=89=EF=BC=8Cstage=EF=BC=8Ctask=E4=B8=BB?= =?UTF-8?q?=E9=94=AE=E5=AD=97=E6=AE=B5=E6=94=B9=E4=B8=BAid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../casic/ci/common/pipeline/ModelUpdate.java | 2 +- .../req/pipeline/PipelineQueryReq.java | 2 +- .../req/pipeline/PipelineUpdateReq.java | 4 +- .../req/resource/ResourceQueryReq.java | 4 +- .../pipeline/req/resource/ResourceReq.java | 4 +- .../resp/pipeline/PipelineFindResp.java | 4 +- .../pipeline/resp/resource/ResourceResp.java | 4 +- .../impl/DefaultRunContextManager.java | 41 ++++++++++++++++- .../engine/runContext/TaskRunContext.java | 21 ++++++--- .../dataObject/resource/PipResource.java | 4 +- .../process/dataObject/stage/PipStage.java | 3 -- .../process/dataObject/task/PipTask.java | 3 -- .../pipeline/impl/PipelineServiceImpl.java | 43 +++++++++--------- .../service/stage/impl/StageServiceImpl.java | 44 +++++++++---------- .../service/task/impl/TaskServiceImpl.java | 8 ++-- .../project/pojo/ProjectCreateUserInfo.java | 2 +- 16 files changed, 118 insertions(+), 75 deletions(-) diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ModelUpdate.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ModelUpdate.java index c7daec5..b2d4157 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ModelUpdate.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/ModelUpdate.java @@ -26,7 +26,7 @@ public class ModelUpdate { private String name; @Schema(title = "更新人", required = true) - private String updateUserId; + private Long updateUserId; @Schema(title = "更新结果信息", required = false) private String updateResultMessage; diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/pipeline/PipelineQueryReq.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/pipeline/PipelineQueryReq.java index 4624c8b..631bdf3 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/pipeline/PipelineQueryReq.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/pipeline/PipelineQueryReq.java @@ -30,7 +30,7 @@ public class PipelineQueryReq extends PageParam { /** * 创建人用户id */ - private String createUserId; + private Long createUserId; /** diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/pipeline/PipelineUpdateReq.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/pipeline/PipelineUpdateReq.java index e2d44d6..0bef309 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/pipeline/PipelineUpdateReq.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/pipeline/PipelineUpdateReq.java @@ -16,9 +16,9 @@ public class PipelineUpdateReq { private String name; - private String createUserId; + private Long createUserId; - private String updateUserId; + private Long updateUserId; private String envId; diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceQueryReq.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceQueryReq.java index f50285a..1eba89e 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceQueryReq.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceQueryReq.java @@ -114,9 +114,9 @@ public class ResourceQueryReq { /** * 创建人用户id */ - private String createUserId; + private Long createUserId; - private String updateUserId; + private Long updateUserId; /** * 创建时间 diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceReq.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceReq.java index 0889274..2580400 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceReq.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/req/resource/ResourceReq.java @@ -114,9 +114,9 @@ public class ResourceReq { /** * 创建人用户id */ - private String createUserId; + private Long createUserId; - private String updateUserId; + private Long updateUserId; /** * 创建时间 diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/pipeline/PipelineFindResp.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/pipeline/PipelineFindResp.java index 0926044..1deb2b5 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/pipeline/PipelineFindResp.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/pipeline/PipelineFindResp.java @@ -20,13 +20,13 @@ public class PipelineFindResp { private String name; //创建人id - private String createUserId; + private Long createUserId; //创建人姓名 private String createUserName; //最后修改人id - private String updateUserId; + private Long updateUserId; //最后修改人姓名 private String updateUserName; diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/resource/ResourceResp.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/resource/ResourceResp.java index 07abe14..d10cf9c 100644 --- a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/resource/ResourceResp.java +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/resource/ResourceResp.java @@ -114,9 +114,9 @@ public class ResourceResp { /** * 创建人用户id */ - private String createUserId; + private Long createUserId; - private String updateUserId; + private Long updateUserId; /** * 创建时间 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java index 7de3b2f..9d32452 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/DefaultRunContextManager.java @@ -1,4 +1,43 @@ package cd.casic.ci.process.engine.manager.impl; -public class DefaultRunContextManager { +import cd.casic.ci.process.engine.manager.RunContextManager; +import cd.casic.ci.process.engine.runContext.BaseRunContext; +import org.springframework.stereotype.Component; + +@Component +public class DefaultRunContextManager implements RunContextManager { + @Override + public Boolean stopPipeline(String pipelineId) { + return null; + } + + @Override + public Boolean notifyPipeline(String pipelineId) { + return null; + } + + @Override + public Boolean suspendPipeline(String pipelineId) { + return null; + } + + @Override + public Boolean notifyStage(String pipelineId, String stageId) { + return null; + } + + @Override + public Boolean suspendStage(String pipelineId, String stageId) { + return null; + } + + @Override + public void contextRegister(BaseRunContext context) { + + } + + @Override + public BaseRunContext getContext(String key) { + return null; + } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/TaskRunContext.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/TaskRunContext.java index df519e5..89a89f7 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/TaskRunContext.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/runContext/TaskRunContext.java @@ -1,22 +1,33 @@ package cd.casic.ci.process.engine.runContext; +import cd.casic.ci.process.process.dataObject.base.PipBaseElement; +import cd.casic.ci.process.process.dataObject.task.PipTask; import cd.casic.framework.commons.exception.ServiceException; import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import org.apache.commons.lang3.StringUtils; -@EqualsAndHashCode(callSuper = true) -@Data +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + public class TaskRunContext extends BaseRunContext{ - private String taskId; - private String taskType; + public TaskRunContext(PipTask contextDef, StageRunContext parentContext, LocalDateTime startTime, String resourceId, String targetId, String targetType, Map globalVariables, Map localVariables) { + super(contextDef, parentContext, startTime, resourceId, targetId, targetType, globalVariables, localVariables, new HashMap<>()); + } + private TaskRunContext(PipBaseElement contextDef, BaseRunContext parentContext, LocalDateTime startTime, String resourceId, String targetId, String targetType, Map globalVariables, Map localVariables, Map childContext) { + super(contextDef, parentContext, startTime, resourceId, targetId, targetType, globalVariables, localVariables, childContext); + } + /** * task是最后一层没有下一级所以如果id相同直接返回它自己 * */ @Override public BaseRunContext getChildRunContext(String id) { - if (!StringUtils.isEmpty(id)||!id.equals(taskId)) { + if (!StringUtils.isEmpty(id)||!id.equals(this.getContextDef().getId())) { return null; } return this; diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResource.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResource.java index 9c322d7..68ed958 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResource.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/resource/PipResource.java @@ -117,9 +117,9 @@ public class PipResource { /** * 创建人用户id */ - private String createUserId; + private Long createUserId; - private String updateUserId; + private Long updateUserId; /** * 创建时间 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java index 74db8e6..a93b298 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/stage/PipStage.java @@ -14,9 +14,6 @@ import java.util.List; @Data public class PipStage extends PipBaseElement { //@ApiProperty(name = "stageId",desc="id") - @TableId(type = IdType.ASSIGN_ID) - private String stageId; - //@ApiProperty(name = "stageName",desc="名称") private String stageName; 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 c107e5b..e22168c 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 @@ -13,9 +13,6 @@ import java.time.LocalDateTime; @EqualsAndHashCode(callSuper = true) @Data public class PipTask extends PipBaseElement { - //@ApiProperty(name="taskId",desc="配置id") - @TableId(type = IdType.ASSIGN_ID) - private String taskId; //@ApiProperty(name="taskType",desc= "类型1-10:源码,10-20:测试,20-30:构建,30-40:部署,40-50:代码扫描,50-60:推送制品") private String taskType; diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java index 68d1bde..b086cf4 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/impl/PipelineServiceImpl.java @@ -81,8 +81,7 @@ public class PipelineServiceImpl extends ServiceImpl i pipeline.setCreateTime(LocalDateTime.now()); if (Objects.isNull(pipeline.getCreateUserId())){ - String loginUserId = String.valueOf(WebFrameworkUtils.getLoginUserId()); - pipeline.setCreateUserId(loginUserId); + pipeline.setCreateUserId(WebFrameworkUtils.getLoginUserId()); } pipeline.setState(1); @@ -123,7 +122,7 @@ public class PipelineServiceImpl extends ServiceImpl i childStage1.setCreateUserId(WebFrameworkUtils.getLoginUserId()); childStage1.setStageSort(1); childStage1.setCode(false); - childStage1.setParentId(stageReq1.getStageId()); + childStage1.setParentId(stageReq1.getId()); stageService.save(childStage1); //新增第二个阶段,包含串行和并行任务 @@ -145,7 +144,7 @@ public class PipelineServiceImpl extends ServiceImpl i childStage21.setCreateUserId(WebFrameworkUtils.getLoginUserId()); childStage21.setStageSort(1); childStage21.setCode(false); - childStage21.setParentId(stageReq2.getStageId()); + childStage21.setParentId(stageReq2.getId()); stageService.save(childStage21); //新增串行阶段 @@ -156,7 +155,7 @@ public class PipelineServiceImpl extends ServiceImpl i childTask21.setCreateUserId(WebFrameworkUtils.getLoginUserId()); childTask21.setTaskType("test"); childTask21.setTaskSort(1); - childTask21.setStageId(childStage21.getStageId()); + childTask21.setStageId(childStage21.getId()); taskService.save(childTask21); //------------------------------------------------------------------ @@ -167,7 +166,7 @@ public class PipelineServiceImpl extends ServiceImpl i childStage22.setCreateUserId(WebFrameworkUtils.getLoginUserId()); childStage22.setStageSort(2); childStage22.setCode(false); - childStage22.setParentId(stageReq2.getStageId()); + childStage22.setParentId(stageReq2.getId()); stageService.save(childStage22); PipTask childTask22 = new PipTask(); @@ -177,7 +176,7 @@ public class PipelineServiceImpl extends ServiceImpl i childTask22.setPipelineId(pipeline.getId()); childTask22.setTaskType("test"); childTask22.setTaskSort(2); - childTask22.setStageId(childStage22.getStageId()); + childTask22.setStageId(childStage22.getId()); taskService.save(childTask22); //创建第三个阶段 @@ -198,7 +197,7 @@ public class PipelineServiceImpl extends ServiceImpl i childStage31.setCreateUserId(WebFrameworkUtils.getLoginUserId()); childStage31.setStageSort(1); childStage31.setCode(false); - childStage31.setParentId(stageReq3.getStageId()); + childStage31.setParentId(stageReq3.getId()); stageService.save(childStage31); PipTask childTask31 = new PipTask(); @@ -208,7 +207,7 @@ public class PipelineServiceImpl extends ServiceImpl i childTask31.setPipelineId(pipeline.getId()); childTask31.setTaskType("test"); childTask31.setTaskSort(1); - childTask31.setStageId(childStage31.getStageId()); + childTask31.setStageId(childStage31.getId()); taskService.save(childTask31); //创建第四个阶段 @@ -229,7 +228,7 @@ public class PipelineServiceImpl extends ServiceImpl i childStage41.setCreateUserId(WebFrameworkUtils.getLoginUserId()); childStage41.setStageSort(1); childStage41.setCode(false); - childStage41.setParentId(stageReq4.getStageId()); + childStage41.setParentId(stageReq4.getId()); stageService.save(childStage41); PipTask childTask41 = new PipTask(); @@ -239,7 +238,7 @@ public class PipelineServiceImpl extends ServiceImpl i childTask41.setPipelineId(pipeline.getId()); childTask41.setTaskType("test"); childTask41.setTaskSort(1); - childTask41.setStageId(childStage41.getStageId()); + childTask41.setStageId(childStage41.getId()); taskService.save(childTask41); //TODO 创建对应的鉴权关系 @@ -306,7 +305,7 @@ public class PipelineServiceImpl extends ServiceImpl i pipStage.setPipelineId(pipelineId); List pipStageList = stageService.getPipStageList(pipStage); if (!CollectionUtils.isEmpty(pipStageList)){ - List list = pipStageList.stream().map(PipStage::getStageId).toList(); + List list = pipStageList.stream().map(PipStage::getId).toList(); pipStageDao.deleteByIds(list); } @@ -314,7 +313,7 @@ public class PipelineServiceImpl extends ServiceImpl i pipTask.setPipelineId(pipelineId); List task = taskService.getTask(pipTask); if (!CollectionUtils.isEmpty(task)){ - List list = task.stream().map(PipTask::getTaskId).toList(); + List list = task.stream().map(PipTask::getId).toList(); pipTaskDao.deleteByIds(list); } @@ -333,7 +332,7 @@ public class PipelineServiceImpl extends ServiceImpl i PipPipeline pipPipeline = new PipPipeline(); BeanUtils.copyProperties(pipeline,pipPipeline); pipPipeline.setUpdateTime(LocalDateTime.now()); - pipPipeline.setUpdateUserId(String.valueOf(WebFrameworkUtils.getLoginUserId())); + pipPipeline.setUpdateUserId(WebFrameworkUtils.getLoginUserId()); pipelineDao.updateById(pipPipeline); } @@ -386,7 +385,7 @@ public class PipelineServiceImpl extends ServiceImpl i pipeline.setId(null); pipeline.setName(pipelineName); pipeline.setCreateTime(LocalDateTime.now()); - pipeline.setCreateUserId(String.valueOf(WebFrameworkUtils.getLoginUserId())); + pipeline.setCreateUserId(WebFrameworkUtils.getLoginUserId()); this.save(pipeline); //复制stage @@ -402,11 +401,11 @@ public class PipelineServiceImpl extends ServiceImpl i //根据阶段id查询下游并行节点 PipStage childStage = new PipStage(); childStage.setPipelineId(pipelineId); - childStage.setParentId(o.getStageId()); + childStage.setParentId(o.getId()); List pipStageChildList = stageService.getPipStageList(pipStage); //对查询结束的stage进行复制 - o.setStageId(null); + o.setId(null); o.setPipelineId(pipeline.getId()); o.setCreateTime(LocalDateTime.now()); o.setCreateUserId(WebFrameworkUtils.getLoginUserId()); @@ -418,12 +417,12 @@ public class PipelineServiceImpl extends ServiceImpl i //根据stageId查询串行节点 PipTask pipTask = new PipTask(); pipTask.setPipelineId(pipelineId); - pipTask.setStageId(j.getStageId()); + pipTask.setStageId(j.getId()); List taskList = taskService.getTask(pipTask); //对查询结束的并行节点进行复制 - j.setStageId(null); - j.setParentId(o.getStageId()); + j.setId(null); + j.setParentId(o.getId()); j.setPipelineId(pipeline.getId()); j.setCreateTime(LocalDateTime.now()); j.setCreateUserId(WebFrameworkUtils.getLoginUserId()); @@ -431,8 +430,8 @@ public class PipelineServiceImpl extends ServiceImpl i if (!CollectionUtils.isEmpty(taskList)){ taskList.forEach(k->{ - k.setTaskId(null); - k.setStageId(j.getStageId()); + k.setId(null); + k.setStageId(j.getId()); k.setPipelineId(pipeline.getId()); k.setCreateTime(LocalDateTime.now()); k.setCreateUserId(WebFrameworkUtils.getLoginUserId()); 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 0067be7..7e016a1 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 @@ -78,7 +78,7 @@ public class StageServiceImpl extends ServiceImpl impleme save(firstStage); } else { PipStage stageQuery = new PipStage(); - stageQuery.setStageId(firstStageId); + stageQuery.setId(firstStageId); List pipStageList = getPipStageList(stageQuery); if (!CollectionUtils.isEmpty(pipStageList)) { firstStage = pipStageList.get(0); @@ -108,7 +108,7 @@ public class StageServiceImpl extends ServiceImpl impleme secondStage.setUpdateUserId(loginUserId); save(secondStage); taskSort=1; - secondStageId = secondStage.getStageId(); + secondStageId = secondStage.getId(); } else { secondStage = getById(secondStageId); } @@ -128,7 +128,7 @@ public class StageServiceImpl extends ServiceImpl impleme pipTask.setCreateUserId(loginUserId); pipTask.setUpdateUserId(loginUserId); taskService.save(pipTask); - return pipTask.getTaskId(); + return pipTask.getId(); } @Override @@ -140,7 +140,7 @@ public class StageServiceImpl extends ServiceImpl impleme } List list = new ArrayList<>(); for (PipStage stage : stageMainStage) { - String stagesId = stage.getStageId(); + String stagesId = stage.getId(); //获取从节点 List allStageStage = findSecondStageAndTask(stagesId); List stageRespList = allStageStage.stream().map(it -> { @@ -165,7 +165,7 @@ public class StageServiceImpl extends ServiceImpl impleme return Collections.emptyList(); } for (PipStage stage : stageMainStage) { - String stagesId = stage.getStageId(); + String stagesId = stage.getId(); //获取从节点 List allStageStage = findSecondStageAndTask(stagesId); stage.setStageList(allStageStage); @@ -177,7 +177,7 @@ public class StageServiceImpl extends ServiceImpl impleme @Override public void deleteStagesOrTask(String taskId) { PipTask taskQuery = new PipTask(); - taskQuery.setTaskId(taskId); + taskQuery.setId(taskId); List taskList = taskService.getTask(taskQuery); if (CollectionUtils.isEmpty(taskList)) { return; @@ -187,7 +187,7 @@ public class StageServiceImpl extends ServiceImpl impleme // 查询上一级stage下有无其他task 没有则连着stage删除 String stageId = task.getStageId(); String pipelineId = task.getPipelineId(); - taskQuery.setTaskId(""); + taskQuery.setId(""); taskQuery.setStageId(stageId); List otherTask = taskService.getTask(task); if (CollectionUtils.isEmpty(otherTask)) { @@ -203,7 +203,7 @@ public class StageServiceImpl extends ServiceImpl impleme deleteStages(stageId); String parentId = currStage.getParentId(); stageQuery.setParentId(parentId); - stageQuery.setStageId(null); + stageQuery.setId(null); // 查询同阶段其他二级stage,如果不存在其他stage则删除阶段stage并整理sort值 List otherStageList = getPipStageList(stageQuery); if (CollectionUtils.isEmpty(otherStageList)) { @@ -233,7 +233,7 @@ public class StageServiceImpl extends ServiceImpl impleme public List getPipStageList(PipStage pipStage){ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StringUtils.isNotEmpty(pipStage.getStageId()),PipStage::getStageId,pipStage.getStageId()); + wrapper.eq(StringUtils.isNotEmpty(pipStage.getId()),PipStage::getId,pipStage.getId()); wrapper.eq(StringUtils.isNotEmpty(pipStage.getPipelineId()),PipStage::getPipelineId,pipStage.getPipelineId()); wrapper.eq(StringUtils.isNotEmpty(pipStage.getParentId()),PipStage::getParentId,pipStage.getParentId()); return stageDao.selectList(wrapper); @@ -249,11 +249,11 @@ public class StageServiceImpl extends ServiceImpl impleme @Transactional(rollbackFor = Exception.class) @Override public void updateStagesTask(StageUpdateReq stage) { - String stageId = stage.getStageId(); + String id = stage.getId(); String stageName = stage.getStageName(); Integer currStageSort = stage.getStageSort(); Long loginUserId = WebFrameworkUtils.getLoginUserId(); - PipStage updateStage = getById(stageId); + PipStage updateStage = getById(id); if (updateStage==null) { return; } @@ -275,7 +275,7 @@ public class StageServiceImpl extends ServiceImpl impleme if (oldStageSortoldStageSort&&pipStage.getStageSort()<=currStageSort) { pipStage.setStageSort(pipStage.getStageSort()-1); } @@ -284,7 +284,7 @@ public class StageServiceImpl extends ServiceImpl impleme } else { // 往左移动 for (PipStage pipStage : stageList) { - if (!pipStage.getStageId().equals(updateStage.getStageId())) { + if (!pipStage.getId().equals(updateStage.getId())) { if (pipStage.getStageSort()=currStageSort) { pipStage.setStageSort(pipStage.getStageSort()+1); } @@ -328,14 +328,14 @@ public class StageServiceImpl extends ServiceImpl impleme } } // 保存复制后的阶段,除了id和sort其他都一样 - firstStage.setStageId(null); + 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(PipStage::getStageId).toList(); + List stageIdList = secondStageList.stream().map(PipStage::getId).toList(); List taskList = taskService.listByIds(stageIdList); Map> stageIdMap = taskList.stream().collect(Collectors.groupingBy(PipTask::getStageId)); for (PipStage secondStage : secondStageList) { @@ -343,14 +343,14 @@ public class StageServiceImpl extends ServiceImpl impleme secondStage.setCreateTime(LocalDateTime.now()); secondStage.setUpdateTime(LocalDateTime.now()); secondStage.setUpdateUserId(loginUserId); - secondStage.setParentId(firstStage.getStageId()); - String secondStageId = secondStage.getStageId(); + secondStage.setParentId(firstStage.getId()); + String secondStageId = secondStage.getId(); List childTask = stageIdMap.get(secondStageId); - secondStage.setStageId(null); + secondStage.setId(null); save(secondStage); for (PipTask pipTask : childTask) { - pipTask.setStageId(secondStage.getStageId()); - pipTask.setTaskId(null); + pipTask.setStageId(secondStage.getId()); + pipTask.setId(null); pipTask.setCreateUserId(loginUserId); pipTask.setCreateTime(LocalDateTime.now()); pipTask.setUpdateTime(LocalDateTime.now()); @@ -365,11 +365,11 @@ public class StageServiceImpl extends ServiceImpl impleme public List findSecondStageAndTask(String stagesId){ List otherStage = findSecondStage(stagesId); List list = new ArrayList<>(); - List stageIdList = otherStage.stream().map(PipStage::getStageId).toList(); + List stageIdList = otherStage.stream().map(PipStage::getId).toList(); Map> stageIdTaskMap = taskService.listByIds(stageIdList).stream().collect(Collectors.groupingBy(PipTask::getStageId)); for (PipStage stage : otherStage) { //获取阶段配置及任务 - String otherId = stage.getStageId(); + String otherId = stage.getId(); List allStageTask = stageIdTaskMap.get(otherId); stage.setTaskValues(allStageTask); list.add(stage); 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 811d3e6..4c590c9 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 @@ -56,7 +56,7 @@ public class TaskServiceImpl extends ServiceImpl implements @Override public List getTask(PipTask task) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(StringUtils.isNotEmpty(task.getTaskId()),PipTask::getTaskId,task.getTaskId()); + wrapper.eq(StringUtils.isNotEmpty(task.getId()),PipTask::getId,task.getId()); wrapper.eq(StringUtils.isNotEmpty(task.getPipelineId()),PipTask::getPipelineId,task.getPipelineId()); wrapper.eq(StringUtils.isNotEmpty(task.getStageId()),PipTask::getStageId,task.getStageId()); return taskDao.selectList(wrapper); @@ -64,7 +64,7 @@ public class TaskServiceImpl extends ServiceImpl implements @Override public TasksResp getRespById(String taskId){ PipTask pipTask = new PipTask(); - pipTask.setTaskId(taskId); + pipTask.setId(taskId); List taskList = getTask(pipTask); if (!CollectionUtils.isEmpty(taskList)) { return null; @@ -90,7 +90,7 @@ public class TaskServiceImpl extends ServiceImpl implements } List updateList = new ArrayList<>(sameLevelTaskList.size()); for (PipTask pipTask : sameLevelTaskList) { - if (!pipTask.getTaskId().equals(sourceTask.getTaskId())) { + if (!pipTask.getId().equals(sourceTask.getId())) { if (pipTask.getTaskSort()>sourceTask.getTaskSort()) { pipTask.setTaskSort(pipTask.getTaskSort()+1); updateList.add(pipTask); @@ -98,7 +98,7 @@ public class TaskServiceImpl extends ServiceImpl implements } } sourceTask.setTaskSort(sourceTask.getTaskSort()+1); - sourceTask.setTaskId(null); + sourceTask.setId(null); save(sourceTask); if (!CollectionUtils.isEmpty(updateList)) { updateBatchById(updateList); diff --git a/modules/module-ci-project/src/main/java/cd/casic/ci/project/pojo/ProjectCreateUserInfo.java b/modules/module-ci-project/src/main/java/cd/casic/ci/project/pojo/ProjectCreateUserInfo.java index 31be476..7c4b432 100644 --- a/modules/module-ci-project/src/main/java/cd/casic/ci/project/pojo/ProjectCreateUserInfo.java +++ b/modules/module-ci-project/src/main/java/cd/casic/ci/project/pojo/ProjectCreateUserInfo.java @@ -15,7 +15,7 @@ import java.util.List; public class ProjectCreateUserInfo { @Schema(title = "操作人") - private String createUserId; + private Long createUserId; @Schema(title = "待分配的角色名称") private String roleName;