安全审计报表-接口实现

/** * @description:安全审计报表 * @return: safetyAuditReportObj * @author: msJava * @time: 2019/11/27 */
	@ResponseBody
	@GetMapping(value = "auditReportPresentation.do")
	//@ResourcePermissions(name = "安全审计报表", value = "auditReportPresentation")
	@ResourceAuthentication
    public SafetyAuditReportObj auditReportPresentation(Integer databaseId){
        /** 今日审计总数*/
        Integer todatAuditCount=batchSQLInfoService.queryTypeTotalById(databaseId);
        /** 涉敏数据总数*/
        Integer sensitiveCount=batchSQLInfoService.querySensitiveDataById(databaseId);

        /** 安全审计报表展示对象*/
		SafetyAuditReportObj safetyAuditReportObj=new SafetyAuditReportObj();
		/** 今日审计*/
		TodayAudit todayAudit=new TodayAudit();
		/** 涉敏数据*/
		todayAudit.setSensitiveDataTotal(sensitiveCount);
		/** 今日审计总数*/
		todayAudit.setTodayAuditTotal(todatAuditCount);
		List<TodayAuditResult> operationTypeResults=batchSQLInfoService.queryTodayAuditById(databaseId);
		/** 今日审计*/
		for(TodayAuditResult todayAuditResult :operationTypeResults){
            if(todayAuditResult.getType()==1){
            	/** 查询数据*/
            	todayAudit.setSelectAuditTotal(todayAuditResult.getCount());
			}else if(todayAuditResult.getType()==2){
				/** 插入数据*/
				todayAudit.setInsertDataTotal(todayAuditResult.getCount());
			}else if(todayAuditResult.getType()==3){
				/** 更新数据*/
				todayAudit.setUpdateDataTotal(todayAuditResult.getCount());
			}else if(todayAuditResult.getType()==4){
				/** 删除数据*/
				todayAudit.setDeleteDataTotal(todayAuditResult.getCount());
			}

		}
		safetyAuditReportObj.setTodayAudit(todayAudit);
		/** 操作热度*/
		//表名称统计 top5
		List<OperationHeatTableResult> operationHeatResultList=batchSQLInfoService.queryOperationHeatById(databaseId);
		List<OperationHeatResult> operationHeatResults=new ArrayList<>();
		 for(OperationHeatTableResult operationHeatTableResult:operationHeatResultList){
			OperationHeatResult operationHeatResult=new OperationHeatResult();   //操作热度实体
			operationHeatResult.setTableName(operationHeatTableResult.getTableName());   //表名称
			operationHeatResult.setHeatCount(operationHeatTableResult.getCount());     //热度
			 /** UNKNOWN的表过滤掉 */
			 if(!operationHeatTableResult.getTableName().equals("UNKNOWN")) {
				 //热度分布
				 List<HeatDistributionResult> list = batchSQLInfoService.queryOperationHeatSpreadById(databaseId, operationHeatTableResult.getTableName());
				 for (HeatDistributionResult heatDistributionResult : list) {
					 if (heatDistributionResult.getType() == 1) {   //查询
						 operationHeatResult.setSelectCount(heatDistributionResult.getCount());
					 } else if (heatDistributionResult.getType() == 2) {   //插入
						 operationHeatResult.setInsertCount(heatDistributionResult.getCount());
					 } else if (heatDistributionResult.getType() == 3) { //修改
						 operationHeatResult.setUpdateCount(heatDistributionResult.getCount());
					 } else if (heatDistributionResult.getType() == 4) {  //删除
						 operationHeatResult.setDeleteCount(heatDistributionResult.getCount());
					 }
				 }
			 }
			operationHeatResults.add(operationHeatResult);
		 }
		safetyAuditReportObj.setOperatingHeatResults(operationHeatResults);
		/** 性能指标*/
        List<PerformanceIndexResult> performanceIndexResults=batchSQLInfoService.queryPerformanceIndexById(databaseId);
        List<PerformanceIndexResult> perList=new ArrayList<>();
        /** UNKNOWN的表过滤掉 */
		for (PerformanceIndexResult per: performanceIndexResults) {
			if(!per.getTableName().equals("UNKNOWN")) {
			     perList.add(per);
			}
		}
        safetyAuditReportObj.setPerformanceIndexResults(perList);
		/** 风险级别*/
		Integer total=batchSQLInfoService.queryRiskLevelTotalById(databaseId); //风险总数
		RiskLevelResult riskLevelResult=new RiskLevelResult();    //风险级别
		List<SensitiveTypeResult> results=batchSQLInfoService.queryRiskLevelResult(databaseId);
		// 创建一个数值格式化对象
        NumberFormat numberFormat = NumberFormat.getInstance();
        // 设置精确到小数点后2位
        numberFormat.setMaximumFractionDigits(2);
		for (SensitiveTypeResult SensitiveTypeResult : results) {
			if(SensitiveTypeResult.getSensitiveType()==2){   //低
				riskLevelResult.setLow(SensitiveTypeResult.getCount());
				String result = numberFormat.format((float) SensitiveTypeResult.getCount() / (float) total * 100);
				riskLevelResult.setLowProportion(result);
			}else if (SensitiveTypeResult.getSensitiveType()==3){  //中
				riskLevelResult.setMiddle(SensitiveTypeResult.getCount());
				String result = numberFormat.format((float) SensitiveTypeResult.getCount() / (float) total * 100);
				riskLevelResult.setMiddleProportion(result);
			}else if(SensitiveTypeResult.getSensitiveType()==4){  //高
				riskLevelResult.setHigh(SensitiveTypeResult.getCount());
				String result = numberFormat.format((float) SensitiveTypeResult.getCount() / (float) total * 100);
				riskLevelResult.setHigProportion(result);
			}else if(SensitiveTypeResult.getSensitiveType()==5){   //较高
				riskLevelResult.setVeryHigh(SensitiveTypeResult.getCount());
				String result = numberFormat.format((float) SensitiveTypeResult.getCount() / (float) total * 100);
				riskLevelResult.setVeryHighProportion(result);
			}
		}
		safetyAuditReportObj.setRiskLevelResult(riskLevelResult);
		/** 风险类型*/
		Integer typeTotal=batchSQLInfoService.queryTypeTotalById(databaseId);
		RiskTypesResult riskTypesResult=new RiskTypesResult();  //风险类型
		List<OperationTypeResult>  operationTypeResults3=batchSQLInfoService.queryRiskTypeResult(databaseId);
		for (OperationTypeResult operationTypeResult:operationTypeResults3) {
			if(operationTypeResult.getType()==1){  //查询
				riskTypesResult.setSelectData(operationTypeResult.getCount());
			}else if(operationTypeResult.getType()==2){   //插入
				riskTypesResult.setInsertData(operationTypeResult.getCount());
            }else if(operationTypeResult.getType()==3){  //修改
				riskTypesResult.setUpdateData(operationTypeResult.getCount());
			}else if(operationTypeResult.getType()==4){   //删除
				riskTypesResult.setDeleteData(operationTypeResult.getCount());
			}
		}
		safetyAuditReportObj.setRiskTypesResult(riskTypesResult);

      return safetyAuditReportObj;
	}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务