/**
* @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;
}
安全審計報表-接口實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.