diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/AiPipelineController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/AiPipelineController.java index c0236f70..ca428015 100644 --- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/AiPipelineController.java +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/AiPipelineController.java @@ -7,6 +7,7 @@ import cd.casic.ci.process.dto.req.pipeline.PipelineReq; import cd.casic.ci.process.dto.req.pipeline.PipelineUpdateReq; import cd.casic.ci.process.dto.resp.context.TreeRunContextResp; import cd.casic.ci.process.dto.resp.pipeline.PipelineFindResp; +import cd.casic.ci.process.dto.resp.pipeline.PipelineUseCountResp; import cd.casic.ci.process.engine.executor.PipelineExecutor; import cd.casic.ci.process.engine.runContext.PipelineRunContext; import cd.casic.ci.process.enums.PiplineTriggerModeEnum; @@ -126,4 +127,10 @@ public class AiPipelineController { return CommonResult.success(); } + + @GetMapping(path="/countPipelineByUserId") + public CommonResult countPipelineByUserId(@RequestParam("userId") @Valid Long userId){ + return CommonResult.success(pipelineService.countPipelineByUserId(userId)); + } + } diff --git a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DataAnalysisController.java b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DataAnalysisController.java index fb93ae18..3e7ee941 100644 --- a/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DataAnalysisController.java +++ b/modules/module-ci-process-api/src/main/java/cd/casic/ci/api/DataAnalysisController.java @@ -10,8 +10,12 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; + /** * 数据分析 NUDT数据安全态势 + * * @author: Paul * @create: 2025-07-29 13:52 */ @@ -25,28 +29,41 @@ public class DataAnalysisController { @Operation(summary = "人数,任务次数,漏洞总数,高危漏洞 统计") @GetMapping("/userAndTaskCount") - public CommonResult userAndTaskDataCount(@RequestParam(required = false,value = "city") String city){ + public CommonResult userAndTaskDataCount(@RequestParam(required = false, value = "city") String city) { + if (city != null) { + city = URLDecoder.decode(city, StandardCharsets.UTF_8); + } return CommonResult.success(dataAnalysisService.getUserAndTaskDataCount(city)); } @Operation(summary = "漏洞监测分布概览") @GetMapping("/HoopVulCount") - public CommonResult HoopVulDataCount(@RequestParam(required = false,value = "city") String city){ + public CommonResult HoopVulDataCount(@RequestParam(required = false, value = "city") String city) { return CommonResult.success(dataAnalysisService.getHoopVulCountList()); } @Operation(summary = "资源分配数据概览") @GetMapping("/ResourceDistList") - public CommonResult ResourceDistList(@RequestParam(required = false,value = "city") String city){ + public CommonResult ResourceDistList(@RequestParam(required = false, value = "city") String city) { + if (city != null) { + city = URLDecoder.decode(city, StandardCharsets.UTF_8); + } return CommonResult.success(dataAnalysisService.getResourceDistCountList(city)); } @Operation(summary = "漏洞监测数据概览") @GetMapping("/VulMonitorDataList") - public CommonResult VulMonitorDataList(@RequestParam(required = false,value = "city") String city){ + public CommonResult VulMonitorDataList(@RequestParam(required = false, value = "city") String city) { + if (city != null) { + city = URLDecoder.decode(city, StandardCharsets.UTF_8); + } return CommonResult.success(dataAnalysisService.getVulMonitorCountList(city)); } + @Operation(summary = "人数,任务次数,漏洞总数,高危漏洞 统计 列表") + @GetMapping("/userAndTaskCountList") + public CommonResult userAndTaskCountList(@RequestParam(required = false, value = "city") String city) { + return CommonResult.success(dataAnalysisService.userAndTaskCountList(city)); - + } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/pipeline/PipelineUseCountResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/pipeline/PipelineUseCountResp.java new file mode 100644 index 00000000..ca10d0fe --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/pipeline/PipelineUseCountResp.java @@ -0,0 +1,28 @@ +package cd.casic.ci.process.dto.resp.pipeline; + +import lombok.Builder; +import lombok.Data; + +/** + * @author: Paul + * @create: 2025-07-30 15:44 + */ +@Data +@Builder +public class PipelineUseCountResp { + + /** + * 我的作业 + */ + private Integer work; + + /** + * 我的参与 + */ + private Integer involved; + + /** + * 我的收藏 + */ + private Integer collect; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/DataAnalysisService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/DataAnalysisService.java index 779a11b3..7ceca794 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/DataAnalysisService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/DataAnalysisService.java @@ -4,6 +4,7 @@ import cd.casic.ci.process.dto.resp.dataAnalysis.DataAnalysisResp; import cd.casic.ci.process.process.dataObject.volumnInfo.VulInfo; import java.util.List; +import java.util.Map; public interface DataAnalysisService { @@ -22,8 +23,5 @@ public interface DataAnalysisService { List getVulMonitorCountList(String city); - - - - + List> userAndTaskCountList(String city); } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/Impl/DataAnalysisServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/Impl/DataAnalysisServiceImpl.java index 7ea3c693..aa9c2d1a 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/Impl/DataAnalysisServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/dataAnalysis/Impl/DataAnalysisServiceImpl.java @@ -101,4 +101,24 @@ public class DataAnalysisServiceImpl implements DataAnalysisService { public List getVulMonitorCountList(String city) { return vulInfoDao.selectList(new QueryWrapper().lambda().eq(Objects.nonNull(city),VulInfo::getCity,city).orderByDesc(VulInfo::getCreateTime)); } + + @Override + public List> userAndTaskCountList(String city) { + DataAnalysisResp dataAnalysisResp = getUserAndTaskDataCount(city); + List> res = new ArrayList<>(); + Map respMap = new HashMap<>(); + List list = vulInfoDao.selectList(); + Map map = list.stream().collect(Collectors.groupingBy(VulInfo::getCity, Collectors.counting())); + Map perilous = list.stream().filter(obj -> obj.getSeverity().equals(2)).collect(Collectors.groupingBy(VulInfo::getCity, Collectors.counting())); + + map.entrySet().forEach(p->{ + String key = p.getKey(); + Long perilousVulSUM = perilous.get(key); + dataAnalysisResp.setVulSUM(p.getValue().toString()); + dataAnalysisResp.setPerilousVulSUM(perilousVulSUM==null?"0":perilousVulSUM.toString()); + respMap.put(key, dataAnalysisResp); + }); + res.add(respMap); + return res; + } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/PipelineService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/PipelineService.java index 13872340..1020019f 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/PipelineService.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/pipeline/PipelineService.java @@ -4,6 +4,7 @@ package cd.casic.ci.process.process.service.pipeline; import cd.casic.ci.process.dto.req.pipeline.*; import cd.casic.ci.process.dto.resp.context.TreeRunContextResp; import cd.casic.ci.process.dto.resp.pipeline.PipelineFindResp; +import cd.casic.ci.process.dto.resp.pipeline.PipelineUseCountResp; import cd.casic.ci.process.process.dataObject.base.BaseIdReq; import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; import cd.casic.framework.commons.pojo.PageResult; @@ -41,4 +42,6 @@ public interface PipelineService extends IService { Boolean targetVersionInUse(List targetVersionId); String aiCreatePipeline(@Valid AiPipelineCreateReq req); + + PipelineUseCountResp countPipelineByUserId(Long userId); } 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 b96c9568..b75d817b 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 @@ -7,6 +7,7 @@ import cd.casic.ci.process.dto.req.template.TemplateStageCreateByDataReq; import cd.casic.ci.process.dto.req.template.TemplateTaskCreateByDataReq; import cd.casic.ci.process.dto.resp.context.TreeRunContextResp; import cd.casic.ci.process.dto.resp.pipeline.PipelineFindResp; +import cd.casic.ci.process.dto.resp.pipeline.PipelineUseCountResp; import cd.casic.ci.process.dto.resp.stage.StageResp; import cd.casic.ci.process.dto.resp.template.TemplateFindResp; import cd.casic.ci.process.dto.resp.template.TemplateStageResp; @@ -24,6 +25,7 @@ import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; import cd.casic.ci.process.process.dataObject.stage.PipStage; import cd.casic.ci.process.process.dataObject.target.TargetVersion; import cd.casic.ci.process.process.dataObject.task.PipTask; +import cd.casic.ci.process.process.dataObject.volumnInfo.VulInfo; import cd.casic.ci.process.process.service.pipeline.PipelineService; import cd.casic.ci.process.process.service.stage.impl.StageServiceImpl; import cd.casic.ci.process.process.service.task.impl.TaskServiceImpl; @@ -49,13 +51,7 @@ import org.springframework.util.ObjectUtils; import java.time.Duration; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -729,4 +725,12 @@ public class PipelineServiceImpl extends ServiceImpl i stringBuilder.append(seconds).append("秒"); return stringBuilder.toString(); } + + @Override + public PipelineUseCountResp countPipelineByUserId(Long userId) { + Integer count = pipelineDao.selectCount(new QueryWrapper().lambda().eq(Objects.nonNull(userId), PipPipeline::getCreator, userId)).intValue(); + Integer collect = pipelineDao.selectCount(new LambdaQueryWrapper().eq(Objects.nonNull(userId), PipPipeline::getCreator, userId) + .eq(PipPipeline::getCollect, 1)).intValue(); + return PipelineUseCountResp.builder().work(count).involved(count).collect(collect).build(); + } }