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

This commit is contained in:
蒲先生 2025-07-30 14:52:33 +08:00
parent 960125fd25
commit 29dc3d76b1
4 changed files with 56 additions and 33 deletions

View File

@ -25,26 +25,26 @@ public class DataAnalysisController {
@Operation(summary = "人数,任务次数,漏洞总数,高危漏洞 统计") @Operation(summary = "人数,任务次数,漏洞总数,高危漏洞 统计")
@GetMapping("/userAndTaskCount") @GetMapping("/userAndTaskCount")
public CommonResult userAndTaskDataCount(@RequestParam(required = false,value = "country") String country){ public CommonResult userAndTaskDataCount(@RequestParam(required = false,value = "city") String city){
return CommonResult.success(dataAnalysisService.getUserAndTaskDataCount()); return CommonResult.success(dataAnalysisService.getUserAndTaskDataCount(city));
} }
@Operation(summary = "漏洞监测分布概览") @Operation(summary = "漏洞监测分布概览")
@GetMapping("/HoopVulCount") @GetMapping("/HoopVulCount")
public CommonResult HoopVulDataCount(@RequestParam(required = false,value = "country") String country){ public CommonResult HoopVulDataCount(@RequestParam(required = false,value = "city") String city){
return CommonResult.success(dataAnalysisService.getHoopVulCountList()); return CommonResult.success(dataAnalysisService.getHoopVulCountList());
} }
@Operation(summary = "资源分配数据概览") @Operation(summary = "资源分配数据概览")
@GetMapping("/ResourceDistList") @GetMapping("/ResourceDistList")
public CommonResult ResourceDistList(@RequestParam(required = false,value = "country") String country){ public CommonResult ResourceDistList(@RequestParam(required = false,value = "city") String city){
return CommonResult.success(dataAnalysisService.getResourceDistCountList()); return CommonResult.success(dataAnalysisService.getResourceDistCountList(city));
} }
@Operation(summary = "漏洞监测数据概览") @Operation(summary = "漏洞监测数据概览")
@GetMapping("/VulMonitorDataList") @GetMapping("/VulMonitorDataList")
public CommonResult VulMonitorDataList(@RequestParam(required = false,value = "country") String country){ public CommonResult VulMonitorDataList(@RequestParam(required = false,value = "city") String city){
return CommonResult.success(dataAnalysisService.getVulMonitorCountList()); return CommonResult.success(dataAnalysisService.getVulMonitorCountList(city));
} }

View File

@ -61,15 +61,18 @@ public class DataAnalysisResp {
* 漏洞监测分布概览 * 漏洞监测分布概览
*/ */
@Data @Data
@Builder
public static class HoopVulCount{ public static class HoopVulCount{
/** /**
* 城市 * 城市
*/ */
private String country; private String city;
/** /**
* 百分比 两位小数 * 百分比 两位小数
*/ */
private BigDecimal value; private BigDecimal value;
private String count;
} }
/** /**
@ -78,8 +81,8 @@ public class DataAnalysisResp {
@Data @Data
public static class ResourceDistCount{ public static class ResourceDistCount{
private static final List<String> CITIES = List.of( private static final List<String> CITIES = List.of(
"北京", "上海", "广州", "深圳", "杭州", "北京", "上海", "天津", "重庆",
"成都", "武汉", "西安", "长沙", "厦门" "成都", "长沙"
); );
/** /**
* 机器id * 机器id

View File

@ -7,19 +7,19 @@ import java.util.List;
public interface DataAnalysisService { public interface DataAnalysisService {
String getUseUserSUM(); String getUseUserSUM(String city);
String getTaskSUM(); String getTaskSUM(String city);
String getVulSUM(); String getVulSUM(String city);
DataAnalysisResp getUserAndTaskDataCount(); DataAnalysisResp getUserAndTaskDataCount(String city);
List<DataAnalysisResp.HoopVulCount> getHoopVulCountList(); List<DataAnalysisResp.HoopVulCount> getHoopVulCountList();
List<DataAnalysisResp.ResourceDistCount> getResourceDistCountList(); List<DataAnalysisResp.ResourceDistCount> getResourceDistCountList(String city);
List<VulInfo> getVulMonitorCountList(); List<VulInfo> getVulMonitorCountList(String city);

View File

@ -9,10 +9,14 @@ import cd.casic.framework.datapermission.core.dal.AdminUserMapper;
import cd.casic.module.machine.dal.dataobject.MachineInfoDO; import cd.casic.module.machine.dal.dataobject.MachineInfoDO;
import cd.casic.module.machine.dal.mysql.MachineInfoMapper; import cd.casic.module.machine.dal.mysql.MachineInfoMapper;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List; import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -35,50 +39,66 @@ public class DataAnalysisServiceImpl implements DataAnalysisService {
private MachineInfoMapper machineInfoMapper; private MachineInfoMapper machineInfoMapper;
@Override @Override
public String getUseUserSUM() { public String getUseUserSUM(String city) {
return userMapper.selectCount().toString(); return userMapper.selectCount().toString();
} }
@Override @Override
public String getTaskSUM() { public String getTaskSUM(String city) {
return pipelineHisInstanceDao.selectCount().toString(); return pipelineHisInstanceDao.selectCount().toString();
} }
@Override @Override
public String getVulSUM() { public String getVulSUM(String city) {
return vulInfoDao.selectCount().toString(); return vulInfoDao.selectCount(new QueryWrapper<VulInfo>().lambda().eq(Objects.nonNull(city),VulInfo::getCity,city)).toString();
} }
public String getPerilousVulSUM(){ public String getPerilousVulSUM(String city){
return vulInfoDao.selectCount("severity", 2).toString(); return vulInfoDao.selectCount(new LambdaQueryWrapper<VulInfo>().eq(Objects.nonNull(city),VulInfo::getCity,city).eq(VulInfo::getSeverity,2)).toString();
} }
@Override @Override
public DataAnalysisResp getUserAndTaskDataCount() { public DataAnalysisResp getUserAndTaskDataCount(String city) {
return DataAnalysisResp.builder().scanVulSUM("101125698234").useUserSUM(getUseUserSUM()) return DataAnalysisResp.builder().scanVulSUM("101125698234").useUserSUM(getUseUserSUM(city))
.taskSUM(getTaskSUM()).vulSUM(getVulSUM()).perilousVulSUM(getPerilousVulSUM()).build(); .taskSUM(getTaskSUM(city)).vulSUM(getVulSUM(city)).perilousVulSUM(getPerilousVulSUM(city)).build();
} }
@Override @Override
public List<DataAnalysisResp.HoopVulCount> getHoopVulCountList() { public List<DataAnalysisResp.HoopVulCount> getHoopVulCountList() {
Integer integer = Integer.decode(getVulSUM(null));
return null; if (integer == 0) {
return null;
}
QueryWrapper<VulInfo> wrapper = new QueryWrapper<>();
wrapper.select("city", "COUNT(*) as value")
.groupBy("city");
List<Map<String, Object>> listMaps = vulInfoDao.selectMaps(wrapper);
List<DataAnalysisResp.HoopVulCount> rest = new ArrayList<>();
listMaps.forEach(map -> {
DataAnalysisResp.HoopVulCount hoopVulCount = BeanUtil.mapToBean(map, DataAnalysisResp.HoopVulCount.class, false);
String format = new DecimalFormat("0.00%").format(hoopVulCount.getValue().divide(new BigDecimal(integer), 4, RoundingMode.HALF_UP));
hoopVulCount.setCount(format);
rest.add(hoopVulCount);
});
return rest;
} }
@Override @Override
public List<DataAnalysisResp.ResourceDistCount> getResourceDistCountList() { public List<DataAnalysisResp.ResourceDistCount> getResourceDistCountList(String city) {
List<MachineInfoDO> machineInfoDOS = machineInfoMapper.selectList(); List<MachineInfoDO> machineInfoDOS = machineInfoMapper.selectList();
List<DataAnalysisResp.ResourceDistCount> distCountList = machineInfoDOS.stream().map(obj -> { List<DataAnalysisResp.ResourceDistCount> distCountList = machineInfoDOS.stream().map(obj -> {
DataAnalysisResp.ResourceDistCount distCount = new DataAnalysisResp.ResourceDistCount(); DataAnalysisResp.ResourceDistCount distCount = new DataAnalysisResp.ResourceDistCount();
BeanUtil.copyProperties(obj, distCount); BeanUtil.copyProperties(obj, distCount);
return distCount; return distCount;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (Objects.nonNull(city)) {
return distCountList.stream().filter(a -> city.equals(a.getCountry())).toList();
}
return distCountList; return distCountList;
} }
@Override @Override
public List<VulInfo> getVulMonitorCountList() { public List<VulInfo> getVulMonitorCountList(String city) {
return vulInfoDao.selectList(); return vulInfoDao.selectList(new QueryWrapper<VulInfo>().lambda().eq(Objects.nonNull(city),VulInfo::getCity,city).orderByDesc(VulInfo::getCreateTime));
} }
} }