常用数据 资源分配数据统计 根据城市过滤

This commit is contained in:
蒲先生 2025-07-30 18:42:55 +08:00
parent 95a05883d4
commit 7eee4e2258
7 changed files with 93 additions and 16 deletions

View File

@ -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<PipelineUseCountResp> countPipelineByUserId(@RequestParam("userId") @Valid Long userId){
return CommonResult.success(pipelineService.countPipelineByUserId(userId));
}
}

View File

@ -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));
}
}

View File

@ -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;
}

View File

@ -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<VulInfo> getVulMonitorCountList(String city);
List<Map<String,DataAnalysisResp>> userAndTaskCountList(String city);
}

View File

@ -101,4 +101,24 @@ public class DataAnalysisServiceImpl implements DataAnalysisService {
public List<VulInfo> getVulMonitorCountList(String city) {
return vulInfoDao.selectList(new QueryWrapper<VulInfo>().lambda().eq(Objects.nonNull(city),VulInfo::getCity,city).orderByDesc(VulInfo::getCreateTime));
}
@Override
public List<Map<String,DataAnalysisResp>> userAndTaskCountList(String city) {
DataAnalysisResp dataAnalysisResp = getUserAndTaskDataCount(city);
List<Map<String, DataAnalysisResp>> res = new ArrayList<>();
Map<String, DataAnalysisResp> respMap = new HashMap<>();
List<VulInfo> list = vulInfoDao.selectList();
Map<String, Long> map = list.stream().collect(Collectors.groupingBy(VulInfo::getCity, Collectors.counting()));
Map<String, Long> 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;
}
}

View File

@ -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<PipPipeline> {
Boolean targetVersionInUse(List<String> targetVersionId);
String aiCreatePipeline(@Valid AiPipelineCreateReq req);
PipelineUseCountResp countPipelineByUserId(Long userId);
}

View File

@ -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<PipelineDao, PipPipeline> i
stringBuilder.append(seconds).append("");
return stringBuilder.toString();
}
@Override
public PipelineUseCountResp countPipelineByUserId(Long userId) {
Integer count = pipelineDao.selectCount(new QueryWrapper<PipPipeline>().lambda().eq(Objects.nonNull(userId), PipPipeline::getCreator, userId)).intValue();
Integer collect = pipelineDao.selectCount(new LambdaQueryWrapper<PipPipeline>().eq(Objects.nonNull(userId), PipPipeline::getCreator, userId)
.eq(PipPipeline::getCollect, 1)).intValue();
return PipelineUseCountResp.builder().work(count).involved(count).collect(collect).build();
}
}