diff --git a/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/taskTemplate/TaskTemplateResp.java b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/taskTemplate/TaskTemplateResp.java new file mode 100644 index 00000000..abd3dce7 --- /dev/null +++ b/modules/module-ci-common-pipeline/src/main/java/cd/casic/ci/common/pipeline/resp/taskTemplate/TaskTemplateResp.java @@ -0,0 +1,48 @@ +package cd.casic.ci.common.pipeline.resp.taskTemplate; + +import lombok.Data; + +import java.util.List; + +@Data +public class TaskTemplateResp { + /** + * 主键 + */ + private String id; + + /** + * 唯一标示做关联 + */ + private String parentId; + + /** + * name + */ + private String name; + + /** + * 标签 + */ + private String label; + + /** + * 描述 + */ + private String nodDescription; + + /** + * 图标 + */ + private String icon; + /** + * 是否有执行结果数据 + */ + private int view; + + /** + * 节点类型:目录-0or 节点-1 + */ + private Integer type; + private List children; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java index dcf46b73..4d85222b 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/DIYImageExecuteCommandWorker.java @@ -25,8 +25,8 @@ import java.util.concurrent.atomic.AtomicInteger; * @date 2022-11-08 9:59 */ @Slf4j -//@Plugin(taskType = "CUSTOM_IMAGE_EXECUTION_COMMAND") -@Plugin(taskType = "testSSH") +@Plugin(taskType = "CUSTOM_IMAGE_EXECUTION_COMMAND") +//@Plugin(taskType = "testSSH") public class DIYImageExecuteCommandWorker extends SshWorker { @Override diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaSbomWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaSbomWorker.java index eec7037c..bf0959b7 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaSbomWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/ScaSbomWorker.java @@ -39,7 +39,7 @@ import java.util.*; * @Description: */ @Slf4j -@Plugin(taskType = "test") +@Plugin(taskType = "SCA_S_BOM") public class ScaSbomWorker extends HttpWorker{ private static final int POLLING_INTERVAL = 5000; // 轮询间隔,单位:毫秒 diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipTaskTemplateDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipTaskTemplateDao.java new file mode 100644 index 00000000..ba73a4ca --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dal/pipeline/PipTaskTemplateDao.java @@ -0,0 +1,14 @@ +package cd.casic.ci.process.process.dal.pipeline; + +import cd.casic.ci.process.process.dataObject.node.PipTaskTemplate; +import cd.casic.framework.mybatis.core.mapper.BaseMapperX; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author herenbin + * @description pipeline_node_templateMapper + * @date 2022-09-16 + */ +@Mapper +public interface PipTaskTemplateDao extends BaseMapperX { +} \ No newline at end of file diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/node/PipTaskTemplate.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/node/PipTaskTemplate.java new file mode 100644 index 00000000..2048b9b6 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/dataObject/node/PipTaskTemplate.java @@ -0,0 +1,64 @@ +package cd.casic.ci.process.process.dataObject.node; + + +import cd.casic.framework.commons.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author herenbin + * @description pipeline_node_template + * @date 2022-09-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("pip_task_template") +public class PipTaskTemplate extends BaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + /** + * 唯一标示做关联 + */ + private String parentId; + + /** + * name + */ + private String name; + + /** + * 标签 + */ + private String label; + + /** + * 描述 + */ + private String nodDescription; + + /** + * 图标 + */ + private String icon; + /** + * 是否有执行结果数据 + */ + private int view; + + /** + * 节点类型:目录-0or 节点-1 + */ + private Integer type; + + public PipTaskTemplate() { + } + +} \ No newline at end of file diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/taskTemplate/TaskTemplateService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/taskTemplate/TaskTemplateService.java new file mode 100644 index 00000000..ed8555be --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/taskTemplate/TaskTemplateService.java @@ -0,0 +1,25 @@ +package cd.casic.ci.process.process.service.taskTemplate; + +import cd.casic.ci.common.pipeline.resp.taskTemplate.TaskTemplateResp; +import cd.casic.ci.process.process.dataObject.node.PipTaskTemplate; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * 流水线节点类型服务 + * + * @author cww + * @date 2022/6/17 + */ +public interface TaskTemplateService extends IService { +// void add(PipelineNodeTemplateParam pipelineNodeTemplateRequest); +// +// void update(PipelineNodeTemplateParam pipelineNodeTemplateRequest); + + void delete(Long[] ids); + + List getList(); + +// PageResult page(PipelineNodeTemplateParam request); +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/taskTemplate/impl/TaskTemplateServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/taskTemplate/impl/TaskTemplateServiceImpl.java new file mode 100644 index 00000000..3e9d220f --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/taskTemplate/impl/TaskTemplateServiceImpl.java @@ -0,0 +1,127 @@ +package cd.casic.ci.process.process.service.taskTemplate.impl; + +import cd.casic.ci.common.pipeline.resp.taskTemplate.TaskTemplateResp; +import cd.casic.ci.process.process.dal.pipeline.PipTaskTemplateDao; +import cd.casic.ci.process.process.dataObject.node.PipTaskTemplate; +import cd.casic.ci.process.process.service.taskTemplate.TaskTemplateService; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class TaskTemplateServiceImpl extends ServiceImpl implements TaskTemplateService { + + + /** + * 新建模板 + * @param pipelineNodeTemplateRequest 模板信息 + */ +// @Override +// public void add(PipelineNodeTemplateParam pipelineNodeTemplateRequest) { +// PipelineNodeTemplate pipelineNodeTemplateDTO = new PipelineNodeTemplate(); +// BeanUtil.copyProperties(pipelineNodeTemplateRequest, pipelineNodeTemplateDTO); +// pipelineNodeTemplateDTO.init(); +// this.save(pipelineNodeTemplateDTO); +// } +// +// /** +// * 编辑模板 +// * @param pipelineNodeTemplateRequest 模板信息 +// */ +// @Override +// public void update(PipelineNodeTemplateParam pipelineNodeTemplateRequest) { +// PipelineNodeTemplate pipelineNodeTemplateDTO = new PipelineNodeTemplate(); +// BeanUtil.copyProperties(pipelineNodeTemplateRequest, pipelineNodeTemplateDTO); +// this.updateById(pipelineNodeTemplateDTO); +// } + + /** + * 删除模板 + * @param ids 模板ID集合 + */ + @Override + public void delete(Long[] ids) { + /* + * 逻辑删除,0为已删,1为未删,由mybatis-plus配置处理,这里直接调用remove删除 + */ + for (Long id : ids) { + PipTaskTemplate pipelineNodeTemplateDO = this.getById(id); + if (pipelineNodeTemplateDO != null) { + this.removeById(id); + } + } + } + + /** + * 获取模板列表 + * @return 列表 + */ + @Override + public List getList() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PipTaskTemplate::getDeleted,"0"); + List pipelineNodeTemplateDOList = this.list(wrapper); +// int size = pipelineNodeTemplateDOList.size(); + + /** + * 构建递归树 + */ + List rootNode = getRootNode(pipelineNodeTemplateDOList); + rootNode.forEach(v -> setChildren(v, pipelineNodeTemplateDOList)); + return rootNode; + } + +// /** +// * 模板分页查询 +// * @param request 请求数据 +// * @return 分页 +// */ +// @Override +// public PageResult page(PipelineNodeTemplateParam request) { +// QueryWrapper qw = new QueryWrapper<>(); +// qw.lambda().orderByDesc(PipelineNodeTemplate::getCreateTime); +// /* +// * 获取一个Page数据,并保存返回 +// */ +// return new PageResult<>(this.page(PageFactory.defaultPage(request.getPageNo(), request.getPageSize()), qw)); +// } + + /** + * 获取根节点 + * @param pipelineNodeDTOList 节点集合 + * @return 根节点 + */ + private List getRootNode(List pipelineNodeDTOList) { + List ret = new ArrayList<>(); + for (PipTaskTemplate node : pipelineNodeDTOList) { + if (node.getType() == 0) { + TaskTemplateResp nodeParam = new TaskTemplateResp(); + BeanUtil.copyProperties(node, nodeParam); + ret.add(nodeParam); + } + } + return ret; + } + + /** + * 设置叶子节点 + * @param node 上级节点 + * @param pipelineNodeDTOList 节点列表 + */ + private void setChildren(TaskTemplateResp node, List pipelineNodeDTOList) { + List childList = new ArrayList<>(); + pipelineNodeDTOList.forEach(v -> { + if (node.getId().equals(v.getParentId())) { + TaskTemplateResp nodeParam = new TaskTemplateResp(); + BeanUtil.copyProperties(v, nodeParam); + childList.add(nodeParam); + } + }); + node.setChildren(childList); + } +} diff --git a/ops-server/src/main/java/cd/casic/server/controller/TaskTemplateController.java b/ops-server/src/main/java/cd/casic/server/controller/TaskTemplateController.java new file mode 100644 index 00000000..6111d8f1 --- /dev/null +++ b/ops-server/src/main/java/cd/casic/server/controller/TaskTemplateController.java @@ -0,0 +1,21 @@ +package cd.casic.server.controller; + +import cd.casic.ci.common.pipeline.resp.taskTemplate.TaskTemplateResp; +import cd.casic.ci.process.process.service.taskTemplate.TaskTemplateService; +import cd.casic.framework.commons.pojo.CommonResult; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/taskTemplate") +public class TaskTemplateController { + @Resource + private TaskTemplateService nodeTemplateService; + @PostMapping("/list") + public CommonResult> list(){ + List list = nodeTemplateService.getList(); + return CommonResult.success(list); + } +}