安全審計報表-接口實現

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章