diff --git a/modules/module-ci-commons/src/main/java/cd/casic/ci/commons/bean/process/definition/PipelineOpen.java b/modules/module-ci-commons/src/main/java/cd/casic/ci/commons/bean/process/definition/PipelineOpen.java index c43fe99..8a8a38d 100644 --- a/modules/module-ci-commons/src/main/java/cd/casic/ci/commons/bean/process/definition/PipelineOpen.java +++ b/modules/module-ci-commons/src/main/java/cd/casic/ci/commons/bean/process/definition/PipelineOpen.java @@ -35,4 +35,7 @@ public class PipelineOpen { //流水线执行统计信息 private PipelineOverview pipelineOverview; + public void setPipelineExecState(PipelineOverview pipelineOverview) { + this.pipelineOverview = pipelineOverview; + } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/pipeline/definition/entity/PipelineEntity.java b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/pipeline/definition/entity/PipelineEntity.java new file mode 100644 index 0000000..d294e47 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/pipeline/definition/entity/PipelineEntity.java @@ -0,0 +1,46 @@ +package cd.casic.module.process.pipeline.definition.entity; + +import lombok.Data; + +@Data +public class PipelineEntity { + //流水线id +// @Id +// @GeneratorValue(length = 12) +// @Column(name = "id") + private String id; + + //流水线名称 +// @Column(name = "name") + private String name; + + //流水线创建人 +// @Column(name = "user_id") + private String userId; + + //流水线创建时间 +// @Column(name = "create_time") + private String createTime; + + //流水线类型 1.多任务 2.多阶段 +// @Column(name = "type") + private int type; + + //运行状态 1.运行中 2.停止中 +// @Column(name = "state") + private int state; + + //项目作用域 1.全局 2.项目 +// @Column(name = "power") + private int power; + + //颜色 1~5随机生成 +// @Column(name="color") + private int color; + +// @Column(name="env_id") + private String envId; + +// @Column(name="group_id") + private String groupId; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/pipeline/definition/entity/PipelineOpenEntity.java b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/pipeline/definition/entity/PipelineOpenEntity.java new file mode 100644 index 0000000..3994f3d --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/pipeline/definition/entity/PipelineOpenEntity.java @@ -0,0 +1,28 @@ +package cd.casic.module.process.pipeline.definition.entity; + +import lombok.Data; + +//@Entity +//@Table(name="pip_other_open") +@Data +public class PipelineOpenEntity { + +// @Id +// @GeneratorValue(length = 12) +// @Column(name = "open_id") + private String openId; + +// @Column(name = "pipeline_id") + private String pipelineId; + + //打开次数 +// @Column(name = "number") + private int number ; + +// @Column(name = "user_id") + private String userId ; + +// @Column(name = "create_time") + private String createTime; + +} \ No newline at end of file diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/pipeline/definition/impl/PipelineOpenServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/pipeline/definition/impl/PipelineOpenServiceImpl.java new file mode 100644 index 0000000..d030fe1 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/pipeline/definition/impl/PipelineOpenServiceImpl.java @@ -0,0 +1,197 @@ +package cd.casic.module.process.pipeline.definition.impl; + +import cd.casic.ci.commons.bean.process.definition.Pipeline; +import cd.casic.ci.commons.bean.process.definition.PipelineOpen; +import cd.casic.ci.commons.bean.support.count.PipelineOverview; +import cd.casic.ci.commons.bean.utils.PipelineUtil; +import cd.casic.module.process.pipeline.definition.PipelineOpenService; + +import cd.casic.module.process.pipeline.definition.entity.PipelineEntity; +import cd.casic.module.process.pipeline.definition.entity.PipelineOpenEntity; +import cd.casic.module.process.pipeline.overview.service.PipelineOverviewService; +import cd.casic.module.process.process.definition.dao.PipelineDao; +import cd.casic.module.process.process.definition.dao.PipelineOpenDao; +import cd.casic.module.process.support.authority.service.PipelineAuthorityService; +import cd.casic.module.process.toolkit.beans.BeanMapper; +import cd.casic.module.process.toolkit.join.JoinTemplate; +import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +@Service +//@Exporter +public class PipelineOpenServiceImpl implements PipelineOpenService { + + @Resource + PipelineOpenDao pipelineOpenDao; + + @Resource + PipelineAuthorityService authorityService; + + @Resource + PipelineOverviewService overviewService; + + @Resource + JoinTemplate joinTemplate; + + @Resource + PipelineDao pipelineDao; + + + @Override + public void deleteAllOpen(String pipelineId){ + List allOpen = findAllOpenNoQuery(); + if (allOpen.isEmpty()){ + return; + } + for (PipelineOpen pipelineOpen : allOpen) { + Pipeline pipeline = pipelineOpen.getPipeline(); + if (!pipeline.getId().equals(pipelineId)){ + continue; + } + deleteOpen(pipelineOpen.getOpenId()); + } + } + + @Override + public void updatePipelineOpen(String pipelineId) { + if (pipelineId.equals("undefined")){ + return; + } +// TODO +// String userId = LoginContext.getLoginId(); + String userId = ""; + PipelineOpen pipelineOpen = new PipelineOpen(); + pipelineOpen.setPipeline(new Pipeline(pipelineId)); + pipelineOpen.setCreateTime(PipelineUtil.date(1)); + pipelineOpen.setUserId(userId); + createOpen(pipelineOpen); + } + + @Override + public PipelineOpen findOneOpen(String openId) { + PipelineOpenEntity openEntity = pipelineOpenDao.findOneOpen(openId); + PipelineOpen pipelineOpen = BeanMapper.map(openEntity, PipelineOpen.class); + joinTemplate.joinQuery(pipelineOpen); + return pipelineOpen; + } + + public PipelineOpen findOneOpenNoQuery(String openId) { + PipelineOpenEntity openEntity = pipelineOpenDao.findOneOpen(openId); + return BeanMapper.map(openEntity, PipelineOpen.class); + } + + @Override + public List findAllOpen() { + List allOpen = pipelineOpenDao.findAllOpen(); + if (Objects.isNull(allOpen)){ + return Collections.emptyList(); + } + List list = BeanMapper.mapList(allOpen, PipelineOpen.class); + joinTemplate.joinQuery(list); + return list; + } + + public List findAllOpenNoQuery() { + List allOpen = pipelineOpenDao.findAllOpen(); + if (Objects.isNull(allOpen)){ + return Collections.emptyList(); + } + return BeanMapper.mapList(allOpen, PipelineOpen.class); + } + + @Override + public List findAllOpenList(List idList) { + List openList = pipelineOpenDao.findAllOpenList(idList); + return BeanMapper.mapList(openList, PipelineOpen.class); + } + + //更新最近打开 + private void updateOpen(PipelineOpen pipelineOpen) { + pipelineOpenDao.updateOpen(BeanMapper.map(pipelineOpen, PipelineOpenEntity.class)); + } + + //删除最近打开 + private void deleteOpen(String openId) { + pipelineOpenDao.deleteOpen(openId); + } + + //创建最近打开 + private void createOpen(PipelineOpen pipelineOpen) { + pipelineOpenDao.createOpen(BeanMapper.map(pipelineOpen, PipelineOpenEntity.class)); + } + + public List findUserOpen(int number){ + // 获取用户流水线 +// TODO +// String userId = LoginContext.getLoginId(); + String userId = ""; + String[] userPipeline = authorityService.findUserPipelineIdString(userId); + if (userPipeline.length == 0){ + return Collections.emptyList(); + } + + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < userPipeline.length; i++) { + builder.append("'").append(userPipeline[i]).append("'"); + if (i != userPipeline.length-1){ + builder.append(","); + } + } + + List pipelineIds = pipelineOpenDao.findUserOpen(userId, number,builder.toString()); + if (pipelineIds.isEmpty()){ + return Collections.emptyList(); + } + return pipelineIds; + } + + /** + * 查询流水线最近打开 + * @param number 查询数量 + * @return 最近打开的流水线 + */ + @Override + public List findUserAllOpen(int number) { + + // 获取用户流水线 +// String userId = LoginContext.getLoginId(); + String userId = ""; + + List pipelineIds = findUserOpen(number); + if (pipelineIds.isEmpty()){ + return Collections.emptyList(); + } + + List openList = new ArrayList<>(); + + for (String pipelineId : pipelineIds) { + PipelineOpen pipelineOpen = new PipelineOpen(); + + PipelineEntity pipelineEntity = pipelineDao.findPipelineById(pipelineId); + Pipeline pipeline = BeanMapper.map(pipelineEntity, Pipeline.class); + pipelineOpen.setPipeline(pipeline); + + Integer openNumber = pipelineOpenDao.findUserOpenNumber(userId, pipelineId); + pipelineOpen.setNumber(openNumber); + + PipelineOverview pipelineOverview = overviewService.pipelineOverview(pipelineId); + pipelineOpen.setPipelineExecState(pipelineOverview); + + if (Objects.isNull(pipeline) || Objects.isNull(pipeline.getName())){ + deleteOpen(pipelineOpen.getOpenId()); + continue; + } + + openList.add(pipelineOpen); + } + return openList; + } + + +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/process/definition/dao/PipelineDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/process/definition/dao/PipelineDao.java index 234f896..cfefa12 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/process/definition/dao/PipelineDao.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/process/definition/dao/PipelineDao.java @@ -1,8 +1,19 @@ package cd.casic.module.process.process.definition.dao; +import cd.casic.ci.commons.bean.process.definition.PipelineQuery; +import cd.casic.framework.commons.pojo.PageResult; import cd.casic.framework.mybatis.core.mapper.BaseMapperX; +import cd.casic.module.process.pipeline.definition.entity.PipelineEntity; import cd.casic.module.process.process.definition.dataobject.PipelineDo; +import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Mapper; +import org.springframework.jdbc.core.BeanPropertyRowMapper; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * @author by mianbin @@ -12,4 +23,88 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface PipelineDao extends BaseMapperX { + /** + * 创建流水线 + * @param pipelineEntity 流水线实体 + * @return 流水线id + */ + public String createPipeline(PipelineEntity pipelineEntity); + + /** + * 删除流水线 + * @param id 流水线id + */ + public void deletePipeline(String id); + + /** + * 更新流水线 + * @param pipelineEntity 流水线实体 + */ + public void updatePipeline(PipelineEntity pipelineEntity); + + /** + * 查询单个流水线 + * @param id 流水线id + * @return 流水线信息 + */ + public PipelineEntity findPipelineById(String id); + + /** + * 查询所有流水线 + * @return 流水线列表 + */ + public List findAllPipeline(); + + + public List findAllPipelineList(List idList); + + // 关联查询,查询出收藏的 + public PageResult findPipelineListQuery(PipelineQuery query); + + + // 第一个方法:将字符串中的所有字母都转换为小写 +// public static String toLowerCase(String input) { +// if (input == null) { +// return null; +// } +// StringBuilder result = new StringBuilder(); +// for (char c : input.toCharArray()) { +// // 如果是大写字母,转换为小写 +// if (Character.isUpperCase(c)) { +// result.append(Character.toLowerCase(c)); +// } else { +// result.append(c); +// } +// } +// return result.toString(); +// } + + // 第二个方法:将字符串中的所有字母都转换为大写 +// public static String toUpperCase(String input) { +// if (input == null) { +// return null; +// } +// StringBuilder result = new StringBuilder(); +// for (char c : input.toCharArray()) { +// // 如果是小写字母,转换为大写 +// if (Character.isLowerCase(c)) { +// result.append(Character.toUpperCase(c)); +// } else { +// result.append(c); +// } +// } +// return result.toString(); +// } + + + public List findPipelineList(PipelineQuery query); + + public PageResult findPipelinePage(PipelineQuery query); + +// default String getLowerCase(String pipelineName) { +// return toLowerCase(pipelineName); +// } + + public List findRecentlyPipeline(Object[] pipelineIds, Integer number); + } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/process/definition/dao/PipelineOpenDao.java b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/process/definition/dao/PipelineOpenDao.java index 7315408..e5159dc 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/process/definition/dao/PipelineOpenDao.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/process/definition/dao/PipelineOpenDao.java @@ -1,8 +1,17 @@ package cd.casic.module.process.process.definition.dao; +import cd.casic.ci.commons.bean.process.definition.PipelineOpenQuery; +import cd.casic.framework.commons.pojo.PageResult; import cd.casic.framework.mybatis.core.mapper.BaseMapperX; +import cd.casic.module.process.pipeline.definition.entity.PipelineOpenEntity; import cd.casic.module.process.process.definition.dataobject.PipelineOpenDo; import org.apache.ibatis.annotations.Mapper; +import org.springframework.jdbc.core.BeanPropertyRowMapper; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; /** * @author by mianbin @@ -12,4 +21,67 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface PipelineOpenDao extends BaseMapperX { + /** + * 创建次数 + * @param pipelineOpenEntity 次数 + * @return 次数id + */ + public String createOpen(PipelineOpenEntity pipelineOpenEntity); + + /** + * 删除次数 + * @param openId 次数id + */ + public void deleteOpen(String openId); + + /** + * 更新次数 + * @param pipelineOpenEntity 更新信息 + */ + public void updateOpen(PipelineOpenEntity pipelineOpenEntity); + + /** + * 查询单个次数信息 + * @param openId 次数id + * @return 次数信息 + */ + public PipelineOpenEntity findOneOpen(String openId); + + /** + * 查询用户最近打开的流水线 + * @param userId 用户id + * @return 最近打开信息 + */ + public List findUserAllOpen(String userId); + + public Integer findUserOpenNumberByTime(String userId,String pipelineId,String time); + + + public Integer findUserOpenNumber(String userId,String pipelineId); + + public List findUserPipelineOpen(String userId,Integer number); + + public List findUserOpen(String userId,Integer number,String pipelineIds); + + + public List findExpirePipelineOpen(String time); + + + + public String findUserLastOpenPipeline(String userId,String pipelineId); + + + public List findPipelineOpenList(PipelineOpenQuery query); + + + public PageResult findPipelineOpenPage(PipelineOpenQuery query); + + + /** + * 查询所有次数 + * @return 次数集合 + */ + public List findAllOpen(); + + public List findAllOpenList(List idList); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/support/count/PipelineOverviewService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/support/count/PipelineOverviewService.java deleted file mode 100644 index 1221aea..0000000 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/module/process/support/count/PipelineOverviewService.java +++ /dev/null @@ -1,21 +0,0 @@ -package cd.casic.module.process.service.support.count; - -import cd.casic.ci.commons.bean.support.count.PipelineOverview; - -/** - * 流水线统计服务接口 - */ - -public interface PipelineOverviewService { - - - /** - * 流水线执行信息统计 - * @param pipelineId 流水线id - * @return 统计信息 - */ - PipelineOverview pipelineOverview(String pipelineId); - - - -}