diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryLogManager.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryLogManager.java index d2ab5801..f2d52adf 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryLogManager.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/manager/impl/MemoryLogManager.java @@ -10,6 +10,7 @@ import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import java.io.IOException; @@ -121,6 +122,11 @@ public class MemoryLogManager implements LoggerManager { pipTaskLog.setContent(pipTaskLog.getContent()+logCache.toString()); updateList.add(pipTaskLog); taskIdDbMap.remove(taskId); + taskIdMemoryLogMap.remove(taskId); + List sseEmitters = taskIdSSEMap.get(taskId); + if (!CollectionUtils.isEmpty(sseEmitters)) { + sseEmitters.forEach(ResponseBodyEmitter::complete); + } // logDao.updateById(pipTaskLog); } else { // 不存在就新增 @@ -130,6 +136,12 @@ public class MemoryLogManager implements LoggerManager { // logDao.insert(pipTaskLog); // taskIdDbMap.put(taskId,pipTaskLog.getId()); insertList.add(pipTaskLog); + taskIdDbMap.remove(taskId); + taskIdMemoryLogMap.remove(taskId); + List sseEmitters = taskIdSSEMap.get(taskId); + if (!CollectionUtils.isEmpty(sseEmitters)) { + sseEmitters.forEach(ResponseBodyEmitter::complete); + } } } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/PipelineConverter.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/PipelineConverter.java index 8b571e6c..6bb5f202 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/PipelineConverter.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/PipelineConverter.java @@ -1,5 +1,7 @@ package cd.casic.ci.process.process.converter; +import cd.casic.ci.process.dal.req.pipeline.PipelineCreateReq; +import cd.casic.ci.process.dal.req.pipeline.PipelineUpdateReq; import cd.casic.ci.process.dal.resp.pipeline.PipelineFindResp; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; import org.mapstruct.Mapper; @@ -18,6 +20,8 @@ import java.util.List; public interface PipelineConverter { PipelineConverter INSTANCE = Mappers.getMapper(PipelineConverter.class); PipelineFindResp toResp(PipPipeline pipPipeline); + PipPipeline reqToDO(PipelineCreateReq req); + PipPipeline reqToDO(PipelineUpdateReq req); List toRespList(List pipPipelines); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/StageConverter.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/StageConverter.java new file mode 100644 index 00000000..71722ee4 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/StageConverter.java @@ -0,0 +1,16 @@ +package cd.casic.ci.process.process.converter; + +import cd.casic.ci.process.dal.resp.stage.StageResp; +import cd.casic.ci.process.process.dataObject.stage.PipStage; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper(componentModel = "spring") +public interface StageConverter { + StageConverter INSTANCE = Mappers.getMapper(StageConverter.class); + public StageResp converter(PipStage stage); + public List converter(List stage); + +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TargetConverter.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TargetConverter.java index 2be4c05d..f348dcf2 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TargetConverter.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TargetConverter.java @@ -1,5 +1,7 @@ package cd.casic.ci.process.process.converter; +import cd.casic.ci.process.dal.req.target.TargetManagerCreateReq; +import cd.casic.ci.process.dal.req.target.TargetManagerUpdateReq; import cd.casic.ci.process.dal.resp.pipeline.PipelineFindResp; import cd.casic.ci.process.dal.resp.target.TargetManagerResp; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; @@ -22,5 +24,7 @@ public interface TargetConverter { PipelineFindResp toResp(PipPipeline pipPipeline); List toRespList(List pipPipelines); + TargetManager reqToDo(TargetManagerCreateReq req); + TargetManager reqToDo(TargetManagerUpdateReq req); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TaskConverter.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TaskConverter.java new file mode 100644 index 00000000..471b61f4 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TaskConverter.java @@ -0,0 +1,12 @@ +package cd.casic.ci.process.process.converter; + +import cd.casic.ci.process.dal.resp.task.TasksResp; +import cd.casic.ci.process.process.dataObject.task.PipTask; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper(componentModel = "spring") +public interface TaskConverter { + TaskConverter INSTANCE = Mappers.getMapper(TaskConverter.class); + TasksResp doToResp(PipTask task); +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TemplateConverter.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TemplateConverter.java index 7d8f1fc0..a77ca940 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TemplateConverter.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/converter/TemplateConverter.java @@ -1,7 +1,12 @@ package cd.casic.ci.process.process.converter; import cd.casic.ci.process.dal.resp.template.TemplateFindResp; +import cd.casic.ci.process.dal.resp.template.TemplateStageResp; +import cd.casic.ci.process.dal.resp.template.TemplateTasksResp; +import cd.casic.ci.process.process.dataObject.stage.PipStage; +import cd.casic.ci.process.process.dataObject.task.PipTask; import cd.casic.ci.process.process.dataObject.template.TemplateManager; +import cd.casic.ci.process.process.dataObject.template.TemplateStage; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -19,5 +24,8 @@ public interface TemplateConverter { TemplateConverter INSTANCE = Mappers.getMapper(TemplateConverter.class); TemplateFindResp toResp(TemplateManager templateManager); List toRespList(List templateManagers); + PipStage respToStage(TemplateStageResp resp); + TemplateStageResp stageTemplateToResp(TemplateStage stage); + PipTask templateTaskToTask(TemplateTasksResp resp); } 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 2e6bb342..1d58715e 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 @@ -14,6 +14,7 @@ import cd.casic.ci.process.engine.manager.RunContextManager; import cd.casic.ci.process.engine.runContext.BaseRunContext; import cd.casic.ci.process.engine.runContext.PipelineRunContext; import cd.casic.ci.process.process.converter.PipelineConverter; +import cd.casic.ci.process.process.converter.TemplateConverter; 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.PipelineDao; @@ -82,6 +83,10 @@ public class PipelineServiceImpl extends ServiceImpl i @Resource private TemplateManagerServiceImpl templateService; + @Resource + private PipelineConverter pipelineConverter; + @Resource + private TemplateConverter templateConverter; @Override @Transactional(rollbackFor = Exception.class) @@ -90,9 +95,8 @@ public class PipelineServiceImpl extends ServiceImpl i List pipTaskList = new ArrayList<>(0); Map>> templateCopyPipelineMap = new HashMap<>(); + PipPipeline pipeline = pipelineConverter.reqToDO(pipelineReq); - PipPipeline pipeline = new PipPipeline(); - BeanUtils.copyProperties(pipelineReq, pipeline); // 随机颜色 int randomNumber = (int)(Math.random() * 5) + 1; pipeline.setColor(randomNumber); @@ -111,9 +115,7 @@ public class PipelineServiceImpl extends ServiceImpl i //新增阶段数据 List stageList = template.getStageList(); stageList.forEach(o->{ - PipStage pipStage = new PipStage(); - BeanUtils.copyProperties(o,pipStage); - + PipStage pipStage = templateConverter.respToStage(o); pipStage.setId(null); pipStage.setPipelineId(pipeline.getId()); pipStage.setCreateTime(LocalDateTime.now()); @@ -129,8 +131,7 @@ public class PipelineServiceImpl extends ServiceImpl i if (!CollectionUtils.isEmpty(childStageList)){ //则代表大阶段下存在阶段子节点 childStageList.forEach(j->{ - PipStage childStage = new PipStage(); - BeanUtils.copyProperties(j,childStage); + PipStage childStage = templateConverter.respToStage(j); Map> stageTaskMap = new HashMap<>(); childStage.setId(null); @@ -148,8 +149,7 @@ public class PipelineServiceImpl extends ServiceImpl i if (!CollectionUtils.isEmpty(j.getTaskValues())){ List taskList = new ArrayList<>(0); j.getTaskValues().forEach(k->{ - PipTask pipTask = new PipTask(); - BeanUtils.copyProperties(k,pipTask); + PipTask pipTask = templateConverter.templateTaskToTask(k); pipTask.setId(null); pipTask.setPipelineId(pipeline.getId()); pipTask.setCreateTime(LocalDateTime.now()); @@ -280,8 +280,7 @@ public class PipelineServiceImpl extends ServiceImpl i @Override public void updatePipeline(PipelineUpdateReq pipeline) { - PipPipeline pipPipeline = new PipPipeline(); - BeanUtils.copyProperties(pipeline,pipPipeline); + PipPipeline pipPipeline = pipelineConverter.reqToDO(pipeline); pipPipeline.setUpdateTime(LocalDateTime.now()); pipPipeline.setUpdater(String.valueOf(WebFrameworkUtils.getLoginUserId())); pipelineDao.updateById(pipPipeline); 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 24a7afcb..754ce1f9 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 @@ -8,6 +8,7 @@ import cd.casic.ci.process.dal.resp.context.SingletonRunContextResp; import cd.casic.ci.process.dal.resp.stage.StageResp; import cd.casic.ci.process.engine.manager.RunContextManager; import cd.casic.ci.process.engine.runContext.BaseRunContext; +import cd.casic.ci.process.process.converter.StageConverter; 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.task.PipTask; @@ -15,7 +16,6 @@ import cd.casic.ci.process.process.service.stage.StageService; import cd.casic.ci.process.process.service.task.TaskService; import cd.casic.framework.commons.exception.ServiceException; import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; -import cd.casic.framework.commons.util.object.BeanUtils; import cd.casic.framework.commons.util.util.WebFrameworkUtils; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -38,6 +38,8 @@ public class StageServiceImpl extends ServiceImpl impleme private PipStageDao stageDao; @Resource private RunContextManager contextManager; + @Resource + private StageConverter stageConverter; @Transactional(rollbackFor = Exception.class) @Override public String createStagesOrTask(StageCreateReq stageReq) { @@ -159,13 +161,9 @@ public class StageServiceImpl extends ServiceImpl impleme for (PipStage stage : stageMainStage) { String stagesId = stage.getId(); //获取从节点 - List allStageStage = findSecondStageAndTask(stagesId); - List stageRespList = allStageStage.stream().map(it -> { -// BeanUtils.copyProperties(it, stageResp); - return JSON.parseObject(JSON.toJSONString(it), StageResp.class); - }).toList(); - StageResp stageResp = new StageResp(); - BeanUtils.copyProperties(stage,stageResp); + List allSecondStage = findSecondStageAndTask(stagesId); + List stageRespList = stageConverter.converter(allSecondStage); + StageResp stageResp = stageConverter.converter(stage); stageResp.setStageList(stageRespList); list.add(stageResp); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java index b6138f50..24a43c66 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/target/impl/TargetManagerServiceImpl.java @@ -58,12 +58,13 @@ public class TargetManagerServiceImpl extends ServiceImpl implements private RunContextManager contextManager; @Resource private LoggerManager loggerManager; + @Resource + private TaskConverter taskConverter; @Override @@ -63,9 +66,7 @@ public class TaskServiceImpl extends ServiceImpl implements if (CollectionUtils.isEmpty(taskList)) { return null; } - TasksResp tasksResp = new TasksResp(); - BeanUtils.copyProperties(taskList.get(0),tasksResp); - return tasksResp; + return taskConverter.doToResp(taskList.get(0)); } @Override diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateManagerServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateManagerServiceImpl.java index fd889e89..0e9842c4 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateManagerServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/template/impl/TemplateManagerServiceImpl.java @@ -4,6 +4,7 @@ package cd.casic.ci.process.process.service.template.impl; import cd.casic.ci.process.dal.req.template.TemplateQueryReq; import cd.casic.ci.process.dal.resp.template.TemplateFindResp; import cd.casic.ci.process.dal.resp.template.TemplateStageResp; +import cd.casic.ci.process.process.converter.StageConverter; import cd.casic.ci.process.process.converter.TemplateConverter; import cd.casic.ci.process.process.dal.template.TemplateManagerDao; import cd.casic.ci.process.process.dal.template.TemplateStageDao; @@ -57,6 +58,8 @@ public class TemplateManagerServiceImpl extends ServiceImpl