package edu.sjtu.infosec.ismp.manager.RAM.service.impl;
import java.net.InetAddress;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.infosec.ismp.manager.rmi.aim.model.AlertInfoBO;
import edu.sjtu.infosec.ismp.manager.RAM.dao.AssetDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.BusinessDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.DicCpKindDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.DynaAsseValueDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.DynaElemResuDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.DynaLeakDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.DynaLeakThreDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.DynaVTARepoDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.LeakScanDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.StatCVEThreDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.StatThreDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.StatVulnPoinDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.ThreAnalDao;
import edu.sjtu.infosec.ismp.manager.RAM.dao.VulnAnalDao;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoAsse;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoBusi;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoLeak;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseInfoProj;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowDynaAsseValue;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowDynaElemResu;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowDynaLeak;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowDynaLeakThre;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowDynaThre;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowDynaVTARepo;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowDynaVuln;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowStatCVEThre;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowStatThre;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseKnowStatVulnPoin;
import edu.sjtu.infosec.ismp.manager.RAM.model.AsseResuHandOn;
import edu.sjtu.infosec.ismp.manager.RAM.service.ReportService;
import edu.sjtu.infosec.ismp.security.Domain;
/**
* 应用层 报表生成Manager实现类.
*/
public class ReportServiceImpl implements ReportService {
private AssetDao assetDao;
private DicCpKindDao dicCpKindDao;
/**
* 业务信息数据访问对象接口
*/
private BusinessDao businessDao;
/**
* 知识库项目总体评估值数据访问对象接口
*/
private DynaAsseValueDao dynaAsseValueDao;
/**
* 知识库资产评估要素结果数据访问对象接口
*/
private DynaElemResuDao dynaElemResuDao;
private LeakScanDao leakScanDao;
/**
* 动态资产漏洞分析数据访问对象接口
*/
private DynaLeakDao dynaLeakDao;
/**
* 动态资产漏洞威胁分析数据访问对象接口
*/
private DynaLeakThreDao dynaLeakThreDao;
/**
* 知识库动态V-T-A-R评估报告数据访问对象接口
*/
private DynaVTARepoDao dynaVTARepoDao;
/**
* 动态脆弱点分析数据访问对象接口
*/
private VulnAnalDao vulnAnalDao;
/**
* 动态威胁分析数据访问对象接口
*/
private ThreAnalDao threAnalDao;
private StatVulnPoinDao statVulnPoinDao;
/**
* 静态威胁数据访问对象接口
*/
private StatThreDao statThreDao;
/**
* 知识库静态漏洞威胁数据访问对象接口
*/
private StatCVEThreDao statCVEThreDao;
public void setAssetDao(AssetDao assetDao) {
this.assetDao = assetDao;
}
public void setDicCpKindDao(DicCpKindDao dicCpKindDao) {
this.dicCpKindDao = dicCpKindDao;
}
public void setBusinessDao(BusinessDao businessDao) {
this.businessDao = businessDao;
}
public void setDynaAsseValueDao(DynaAsseValueDao dynaAsseValueDao) {
this.dynaAsseValueDao = dynaAsseValueDao;
}
public void setDynaElemResuDao(DynaElemResuDao dynaElemResuDao) {
this.dynaElemResuDao = dynaElemResuDao;
}
public void setLeakScanDao(LeakScanDao leakScanDao) {
this.leakScanDao = leakScanDao;
}
public void setDynaLeakDao(DynaLeakDao dynaLeakDao) {
this.dynaLeakDao = dynaLeakDao;
}
public void setDynaLeakThreDao(DynaLeakThreDao dynaLeakThreDao) {
this.dynaLeakThreDao = dynaLeakThreDao;
}
public void setDynaVTARepoDao(DynaVTARepoDao dynaVTARepoDao) {
this.dynaVTARepoDao = dynaVTARepoDao;
}
public void setVulnAnalDao(VulnAnalDao vulnAnalDao) {
this.vulnAnalDao = vulnAnalDao;
}
public void setThreAnalDao(ThreAnalDao threAnalDao) {
this.threAnalDao = threAnalDao;
}
public void setStatVulnPoinDao(StatVulnPoinDao statVulnPoinDao) {
this.statVulnPoinDao = statVulnPoinDao;
}
public void setStatThreDao(StatThreDao statThreDao) {
this.statThreDao = statThreDao;
}
public void setStatCVEThreDao(StatCVEThreDao statCVEThreDao) {
this.statCVEThreDao = statCVEThreDao;
}
/* private ReportSenderWrapper assessmentReportSenderWrapper;
public void setAssessmentReportSenderWrapper(ReportSenderWrapper vassessmentReportSenderWrapper) {
this.assessmentReportSenderWrapper = vassessmentReportSenderWrapper;
}
//private SendAlertDao sendalertDao;
*/
/**
* 风险评估分析报告
* @param asseInfoProj
* 测评机构
* @return
* 不同风险等级的数量统计饼状图所需数据
* 重要资产的不同等级风险统计柱状图所需数据
* 各资产的风险列表
**/
@SuppressWarnings("unchecked")
public Map assessmentAnalysisReport(AsseInfoProj asseInfoProj) {
Map reportMap = new HashMap();
List riskValuList = dynaElemResuDao.statRiskValue(asseInfoProj.getId());
Long HighRiskNum = new Long(0);
Long MiddRiskNum = new Long(0);
Long LowRiskNum = new Long(0);
if(riskValuList!=null && riskValuList.size()>0) {
Object[] object = (Object[]) riskValuList.get(0);
//饼状图所需数据
HighRiskNum = (Long) object[0];
MiddRiskNum = (Long) object[1];
LowRiskNum = (Long) object[2];
System.out.println("高级别风险个数:"+HighRiskNum);
System.out.println("中级别风险个数:"+MiddRiskNum);
System.out.println("低级别风险个数:"+LowRiskNum);
}
List dynaElemResuList = dynaElemResuDao.listDynaElemResu(asseInfoProj.getId());
if(dynaElemResuList!=null && dynaElemResuList.size()>0) {
//柱状图所需数据
double[][] asseData = new double[3][dynaElemResuList.size()];
String[] asseDataRowKeys = {"高风险数目", "中风险数目","低风险数目"};
String[] asseDataColumnKeys = new String[dynaElemResuList.size()];
for(int i=0;i<dynaElemResuList.size();i++) {
AsseKnowDynaElemResu dynaElemResu = (AsseKnowDynaElemResu) dynaElemResuList.get(i);
AsseInfoAsse asseInfo = dynaElemResu.getAsse();
asseDataColumnKeys[i] = asseInfo.getAssetName();
Integer AsseHighRiskNum = dynaElemResuDao.statHighRiskAsse(asseInfoProj.getId(), asseInfo);
Integer AsseMiddRiskNum = dynaElemResuDao.statMiddRiskAsse(asseInfoProj.getId(), asseInfo);
Integer AsseLowRiskNum = dynaElemResuDao.statLowRiskAsse(asseInfoProj.getId(), asseInfo);
asseData[0][i] = AsseHighRiskNum.doubleValue();
asseData[1][i] = AsseMiddRiskNum.doubleValue();
asseData[2][i] = AsseLowRiskNum.doubleValue();
}
reportMap.put("asseData", asseData);
reportMap.put("asseDataRowKeys", asseDataRowKeys);
reportMap.put("asseDataColumnKeys", asseDataColumnKeys);
}
//各资产的风险列表
List repoList = dynaVTARepoDao.listDynaVTARepo(asseInfoProj);
reportMap.put("HighRiskNum", HighRiskNum);
reportMap.put("MiddRiskNum", MiddRiskNum);
reportMap.put("LowRiskNum", LowRiskNum);
reportMap.put("repoList", repoList);
return reportMap;
}
/**
* 各委办局的资产及其重要性报告
* @param inst
* 委办局对象
* @return
* 不同重要等级资产统计饼状图所需数据
* 资产列表
**/
@SuppressWarnings("unchecked")
public Map assetImportanceReport(Domain domain) {
Map reportMap = new HashMap();
List assetList = assetDao.listAsse(domain);
reportMap.put("assetList", assetList);
Long HighAsseImpoNum = assetDao.statHighImpoAsse(domain);
Long MiddAsseImpoNum = assetDao.statMiddImpoAsse(domain);
Long LowAsseImpoNum = assetDao.statLowImpoAsse(domain);
reportMap.put("HighAsseImpoNum", HighAsseImpoNum);
reportMap.put("MiddAsseImpoNum", MiddAsseImpoNum);
reportMap.put("LowAsseImpoNum", LowAsseImpoNum);
reportMap.put("assetList", assetList);
return reportMap;
}
/**
* 保存项目总体评估对象
* @param dynaAsseValue
* 项目总体评估对象
**/
public void saveOrUpdateDynaAsseValue(AsseKnowDynaAsseValue dynaAsseValue) {
dynaAsseValueDao.saveOrUpdate(dynaAsseValue);
}
/**
* 各委办局面临的威胁及其可能性报告
* @param projId
* 测评机构Id
* @return
* 不同可能性等级的威胁数量统计饼状图所需数据
* 不同资产各等级威胁数目统计柱状图所需数据
* 各资产的威胁列表
* 各威胁的详细信息列表
**/
@SuppressWarnings("unchecked")
public Map threatPossibilityReport(AsseInfoProj asseInfoProj) {
Map reportMap = new HashMap();
List dynaThreList = new ArrayList();
List dynaLeakThreList = new ArrayList();
//资产威胁列表
List dynaThres = threAnalDao.listDynaThre(asseInfoProj.getId());
if(dynaThres!=null && dynaThres.size()>0) {
for(int i=0;i<dynaThres.size();i++) {
Object[] object = new Object[2];
AsseKnowDynaThre dynaThre = (AsseKnowDynaThre) dynaThres.get(i);
AsseKnowStatThre statThre = new AsseKnowStatThre();
if(dynaThre.getAsseKnowStatThreId()!=null) {
statThre = statThreDao.find(dynaThre.getAsseKnowStatThreId());
}
object[0] = dynaThre;
object[1] = statThre;
dynaThreList.add(object);
}
}
//漏洞威胁列表
List dynaLeakThres = dynaLeakThreDao.listDynaLeakThre(asseInfoProj);
if(dynaLeakThres!=null && dynaLeakThres.size()>0) {
for(int i=0;i<dynaLeakThres.size();i++) {
Object[] object = new Object[2];
AsseKnowDynaLeakThre dynaLeakThre = (AsseKnowDynaLeakThre) dynaLeakThres.get(i);
AsseKnowStatCVEThre statCVEThre = new AsseKnowStatCVEThre();
if(dynaLeakThre.getAsseKnowStatCveThreId()!=null
&& dynaLeakThre.getAsseKnowStatCveThreId().intValue()!=0) {
statCVEThre = statCVEThreDao.find(dynaLeakThre.getAsseKnowStatCveThreId());
}
object[0] = dynaLeakThre;
object[1] = statCVEThre;
dynaLeakThreList.add(object);
}
}
Long HighPossDynaThreNum = threAnalDao.statHighPossDynaThre(asseInfoProj.getId());
Long MiddPossDynaThreNum = threAnalDao.statMiddPossDynaThre(asseInfoProj.getId());
Long LowPossDynaThreNum = threAnalDao.statLowPossDynaThre(asseInfoProj.getId());
Long HighPossDynaLeakThreNum = dynaLeakThreDao.statHighPossDynaLeakThre(asseInfoProj.getId());
Long MiddPossDynaLeakThreNum = dynaLeakThreDao.statMiddPossDynaLeakThre(asseInfoProj.getId());
Long LowPossDynaLeakThreNum = dynaLeakThreDao.statLowPossDynaLeakThre(asseInfoProj.getId());
//饼图数据
Long HighThreNum = HighPossDynaThreNum+HighPossDynaLeakThreNum;
Long MiddThreNum = MiddPossDynaThreNum+MiddPossDynaLeakThreNum;
Long LowThreNum = LowPossDynaThreNum+LowPossDynaLeakThreNum;
List asseList = assetDao.listAsse(asseInfoProj.getDomain());
if(asseList!=null && asseList.size()>0) {
//柱状图数据
double[][] asseThreData = new double[3][asseList.size()];
String[] asseThreDataRowKeys = {"高可能性威胁数目", "中可能性威胁数目","低可能性威胁数目"};
String[] asseThreDataColumnKeys = new String[asseList.size()];
for(int i=0;i<asseList.size();i++) {
AsseInfoAsse asseInfo = (AsseInfoAsse) asseList.get(i);
asseThreDataColumnKeys[i] = asseInfo.getId()+asseInfo.getAssetName();
Integer AsseHighPossNum = threAnalDao.statAsseDynaThreNum(asseInfoProj, asseInfo, "H");
Integer leakHighPossNum = dynaLeakThreDao.statAsseDynaLeakThreNum(asseInfoProj, asseInfo, "H");
asseThreData[0][i]=AsseHighPossNum.doubleValue()+leakHighPossNum.doubleValue();
Integer AsseMiddPossNum = threAnalDao.statAsseDynaThreNum(asseInfoProj, asseInfo, "M");
Integer leakMiddPossNum = dynaLeakThreDao.statAsseDynaLeakThreNum(asseInfoProj, asseInfo, "M");
asseThreData[1][i]=AsseMiddPossNum.doubleValue()+leakMiddPossNum.doubleValue();
Integer AsseLowPossNum = threAnalDao.statAsseDynaThreNum(asseInfoProj, asseInfo, "L");
Integer leakLowPossNum = dynaLeakThreDao.statAsseDynaLeakThreNum(asseInfoProj, asseInfo, "L");
asseThreData[2][i]=AsseLowPossNum.doubleValue()+leakLowPossNum.doubleValue();
}
reportMap.put("asseThreData", asseThreData);
reportMap.put("asseThreDataRowKeys", asseThreDataRowKeys);
reportMap.put("asseThreDataColumnKeys", asseThreDataColumnKeys);
}
reportMap.put("HighThreNum", HighThreNum);
reportMap.put("MiddThreNum", MiddThreNum);
reportMap.put("LowThreNum", LowThreNum);
reportMap.put("dynaThreList", dynaThreList);
reportMap.put("dynaLeakThreList", dynaLeakThreList);
return reportMap;
}
/**
* 总体报告
* @param projId
* 测评机构Id
* @return
* 总风险点个数、高级别风险个数、中级别风险个数、低级别风险个数
**/
@SuppressWarnings("unchecked")
public Map totalReport(Integer projId) {
Map RiskNumMap = new HashMap();
List riskValuList = dynaElemResuDao.statRiskValue(projId);
Long HighRiskNum = 0L;
Long MiddRiskNum = 0L;
Long LowRiskNum = 0L;
Long TotalRiskNum = 0L;
if(riskValuList!=null && riskValuList.size()>0) {
Object[] object = (Object[]) riskValuList.get(0);
HighRiskNum = (Long) object[0];
MiddRiskNum = (Long) object[1];
LowRiskNum = (Long) object[2];
TotalRiskNum = HighRiskNum+MiddRiskNum+LowRiskNum;
System.out.println("总风险点个数:"+TotalRiskNum);
System.out.println("高级别风险个数:"+HighRiskNum);
System.out.println("中级别风险个数:"+MiddRiskNum);
System.out.println("低级别风险个数:"+LowRiskNum);
}
RiskNumMap.put("TotalRiskNum", TotalRiskNum);
RiskNumMap.put("HighRiskNum", HighRiskNum);
RiskNumMap.put("MiddRiskNum", MiddRiskNum);
RiskNumMap.put("LowRiskNum", LowRiskNum);
return RiskNumMap;
}
/**
* 各委办局关键资产的脆弱点及其严重性报告
* @param inst
* 测评机构
* @param asseInfoProj
* 测评项目
* @return
* 不同严重等级的漏洞数量统计饼状图所需数据
* 不同资产各等级漏洞数目统计柱状图所需数据
* 各资产的漏洞列表
* 各漏洞的详细信息列表
**/
@SuppressWarnings("unchecked")
public Map vulnSeriousReport( AsseInfoProj asseInfoProj) {
Map reportMap = new HashMap();
//各资产的漏洞列表
List dynaLeakList = new ArrayList();
List dynaLeaks = dynaLeakDao.listDynaLeak(asseInfoProj);
//动态脆弱点列表
List dynaVulnList = new ArrayList();
List dynaVulns = vulnAnalDao.listDynaVulnPoint(asseInfoProj.getId());
if(dynaVulns!=null && dynaVulns.size()>0) {
for(int i=0;i<dynaVulns.size();i++) {
Object[] object = new Object[2];
AsseKnowDynaVuln dynaVuln = (AsseKnowDynaVuln) dynaVulns.get(i);
AsseKnowStatVulnPoin statVulnPoin = new AsseKnowStatVulnPoin();
if(dynaVuln.getAsseKnowStatVulnPoinId()!=null) {
statVulnPoin = statVulnPoinDao.find(dynaVuln.getAsseKnowStatVulnPoinId());
}
object[0] = dynaVuln;
object[1] = statVulnPoin;
dynaVulnList.add(object);
}
}
if(dynaLeaks!=null && dynaLeaks.size()>0) {
for(int i=0;i<dynaLeaks.size();i++) {
Object[] object = new Object[2];
AsseKnowDynaLeak dynaLeak = (AsseKnowDynaLeak) dynaLeaks.get(i);
AsseInfoLeak infoLeak = leakScanDao.find(dynaLeak.getInfoLeakId());
object[0] = dynaLeak;
object[1] = infoLeak;
dynaLeakList.add(object);
}
}
Long HighSeriDynaVulnNum = vulnAnalDao.statHighSeriDynaVulnPoint(asseInfoProj.getId());
Long MiddSeriDynaVulnNum = vulnAnalDao.statMiddSeriDynaVulnPoint(asseInfoProj.getId());
Long LowSeriDynaVulnNum = vulnAnalDao.statLowSeriDynaVulnPoint(asseInfoProj.getId());
Long HighRiskDynaLeakNum = dynaLeakDao.statHighRiskLeak(asseInfoProj.getId());
Long MiddRiskDynaLeakNum = dynaLeakDao.statMiddRiskLeak(asseInfoProj.getId());
Long LowRiskDynaLeakNum = dynaLeakDao.statLowRiskLeak(asseInfoProj.getId());
//饼图数据
Long HighVulnNum = HighSeriDynaVulnNum+HighRiskDynaLeakNum;
Long MiddVulnNum = MiddSeriDynaVulnNum+MiddRiskDynaLeakNum;
Long LowVulnNum = LowSeriDynaVulnNum+LowRiskDynaLeakNum;
List asseList = assetDao.listAsse(asseInfoProj.getDomain());
if(asseList!=null && asseList.size()>0) {
//柱状图数据
double[][] asseVulnData = new double[3][asseList.size()];
String[] asseVulnDataRowKeys = {"高严重性漏洞数目", "中严重性漏洞数目","低严重性漏洞数目"};
String[] asseVulnDataColumnKeys = new String[asseList.size()];
// Object[] distinctAssetNameList = asseDao.listDistinctAssetName(inst);
// String[] asseVulnDataColumnKeys = new String[distinctAssetNameList.length];
// for(int i=0; i<asseVulnDataColumnKeys.length; i++) {
// asseVulnDataColumnKeys[i] = (String) distinctAssetNameList[i];
// }
for(int i=0;i<asseList.size();i++) {
AsseInfoAsse asseInfo = (AsseInfoAsse) asseList.get(i);
asseVulnDataColumnKeys[i] = asseInfo.getId()+asseInfo.getAssetName();
Integer AsseHighSeriNum = vulnAnalDao.statAsseDynaVulnPointNum(asseInfoProj, asseInfo, "H");
Integer leakHighSeriNum = dynaLeakDao.statDynaLeakNum(asseInfoProj, asseInfo, "H");
System.out.println(AsseHighSeriNum);
System.out.println(leakHighSeriNum);
asseVulnData[0][i]=AsseHighSeriNum.doubleValue()+leakHighSeriNum.doubleValue();
Integer AsseMiddSeriNum = vulnAnalDao.statAsseDynaVulnPointNum(asseInfoProj, asseInfo, "M");
Integer leakMiddSeriNum = dynaLeakDao.statDynaLeakNum(asseInfoProj, asseInfo, "M");
System.out.println(AsseMiddSeriNum);
System.out.println(leakMiddSeriNum);
asseVulnData[1][i]=AsseMiddSeriNum.doubleValue()+leakMiddSeriNum.doubleValue();
Integer AsseLowSeriNum = vulnAnalDao.statAsseDynaVulnPointNum(asseInfoProj, asseInfo, "L");
Integer leakLowSeriNum = dynaLeakDao.statDynaLeakNum(asseInfoProj, asseInfo, "L");
System.out.println(AsseLowSeriNum);
System.out.println(leakLowSeriNum);
asseVulnData[2][i]=AsseLowSeriNum.doubleValue()+leakLowSeriNum.doubleValue();
}
reportMap.put("asseVulnData", asseVulnData);
reportMap.put("asseVulnDataRowKeys", asseVulnDataRowKeys);
reportMap.put("asseVulnDataColumnKeys", asseVulnDataColumnKeys);
}
reportMap.put("HighVulnNum", HighVulnNum);
reportMap.put("MiddVulnNum", MiddVulnNum);
reportMap.put("LowVulnNum", LowVulnNum);
reportMap.put("dynaVulnList", dynaVulnList);
reportMap.put("dynaLeakList", dynaLeakList);
return reportMap;
}
/**
* 查询项目总体评估对象
* @param projId
* 测评机构Id
* @return 项目总体评估对象
**/
public AsseKnowDynaAsseValue findByProjId(Integer projId) {
return dynaAsseValueDao.find(projId);
}
/**
* 各委办局业务及支撑资产清单
* @param inst
* 委办局对象
* @return 业务名称、业务重要性和对应资产
**/
@SuppressWarnings("unchecked")
public List businessImportanceReport(Domain domain) {
List reportList = new ArrayList();
List businessList = businessDao.find(domain);
List asseList = null;
AsseInfoBusi asseInfoBusi = null;
AsseInfoAsse asseInfoAsse = null;
if(businessList!=null && businessList.size()>0) {
for(int i=0;i<businessList.size();i++) {
Object[] objects = new Object[3];
String assetName = "";
asseInfoBusi = (AsseInfoBusi) businessList.get(i);
objects[0] = asseInfoBusi.getBusinessName();
objects[1] = asseInfoBusi.getImportance();
asseList = assetDao.listAsse(domain);
if(asseList!=null && asseList.size()>0) {
for(int j=0;j<asseList.size();j++) {
asseInfoAsse = (AsseInfoAsse) asseList.get(j);
if(asseInfoAsse.getAsseInfoBusiId()!=null){
if(asseInfoAsse.getAsseInfoBusiId().intValue() == asseInfoBusi.getId().intValue()) {
assetName+=asseInfoAsse.getAssetName()+" ";
}
}
}
}
objects[2] = assetName;
reportList.add(objects);
}
}
return reportList;
}
public void saveAlert(AsseInfoProj asseInfoProj) throws Exception {
List<AsseKnowDynaElemResu> dynaElemResuList = dynaElemResuDao.listDynaElemResu(asseInfoProj.getId());
AsseInfoAsse asseInfoAsse = null;
Integer priority = new Integer(5);
String type = "风险评估";
String subType = "评估报告生成";
String context = "";
String source = InetAddress.getByName("localhost").getHostAddress();
String target = null;
String category = "任务通知";
//boolean check = dynaElemResuDao.checkAlertType(type, subType, category);
//if(check) {
for(AsseKnowDynaElemResu dynaElemResu : dynaElemResuList) {
target = "";
//if("y".equalsIgnoreCase(dynaElemResu.getIsWarn())) {
/*AlertInfoBO alertInfo = new AlertInfoBO();
asseInfoAsse = dynaElemResu.getAsse();
target += "委办局名称:"+asseInfoProj.getDomain().getDomainName()+String.valueOf((char)13)+String.valueOf((char)10);
target += "资产编号:"+asseInfoAsse.getAssetCode()+String.valueOf((char)13)+String.valueOf((char)10);
if(asseInfoAsse.getIp()!=null && !"".equals(asseInfoAsse.getIp())) {
target += "IP地址:"+asseInfoAsse.getIp()+String.valueOf((char)13)+String.valueOf((char)10);
}
context += "测评项目编号:"+asseInfoProj.getId()+String.valueOf((char)13)+String.valueOf((char)10)
+"测评项目名称:"+asseInfoProj.getProjName()+String.valueOf((char)13)+String.valueOf((char)10)
+"资产名称:"+asseInfoAsse.getAssetName()+String.valueOf((char)13)+String.valueOf((char)10)
+"高风险点:"+dynaElemResu.getVulnHighNum()+"个"+String.valueOf((char)13)+String.valueOf((char)10)
+"中风险点:"+dynaElemResu.getVulnMiduNum()+"个"+String.valueOf((char)13)+String.valueOf((char)10)
+"低风险点:"+dynaElemResu.getVulnLowNum()+"个"+String.valueOf((char)13)+String.valueOf((char)10);
alertInfo.setCategory(category);
alertInfo.setContext(context);
alertInfo.setPriority(priority);
alertInfo.setSource(source);
alertInfo.setSubType(subType);
alertInfo.setTarget(target);
alertInfo.setType(type);
alertInfo.setIfnew(1);
alertInfo.setStatus(1);
SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //格式化当前系统日期
String dateTime = dateFm.format(new java.util.Date());
alertInfo.setTime(new Timestamp(dateFm.parse(dateTime).getTime()));
//dynaElemResuDao.sendAlert(alertInfo);
sendalertDao.sendAlertDao(priority, type, subType, null, context, source, target, category, WebConfigContent.mailAddress, WebConfigContent.mailFrom, WebConfigContent.mailPassword, WebConfigContent.mmsIp, WebConfigContent.mmsPort);
target="";context="";*/
//}
}
//}
}
@SuppressWarnings("unchecked")
public void executeSend(AsseInfoProj asseInfoProj) {
HashMap reportMap = new HashMap();
AsseKnowDynaAsseValue dynaAsseValue = dynaAsseValueDao.find(asseInfoProj.getId().toString());
reportMap.put("orgCode", asseInfoProj.getDomain().getId());
reportMap.put("instName", asseInfoProj.getDomain().getDomainName());
reportMap.put("projId", asseInfoProj.getId());
//各资产的评估要素列表
List dynaElemResuList = dynaElemResuDao.listDynaElemResu(asseInfoProj.getId());
//各资产的风险列表
List repoList = dynaVTARepoDao.listDynaVTARepo(asseInfoProj);
AsseInfoAsse asseInfoAsse = null;
AsseResuHandOn handOnResult = new AsseResuHandOn();
handOnResult.setAsseBeginTime(asseInfoProj.getAsseBeginTime());
handOnResult.setAsseComp(asseInfoProj.getAsseComp());
handOnResult.setAsseEndTime(asseInfoProj.getAsseEndTime());
handOnResult.setAssePers(asseInfoProj.getAssePers());
handOnResult.setExpertSuggest(dynaAsseValue.getExpertSuggest());
handOnResult.setDomain(asseInfoProj.getDomain());
handOnResult.setProjId(asseInfoProj.getId());
handOnResult.setProjName(asseInfoProj.getProjName());
handOnResult.setSecuLeve(asseInfoProj.getSecuLeve());
if(dynaElemResuList!=null && dynaElemResuList.size()>0) {
AsseKnowDynaElemResu dynaElemResu = null;
int vulnHighNum = 0;
int vulnMiduNum = 0;
int vulnLowNum = 0;
for(int i=0;i<dynaElemResuList.size();i++) {
dynaElemResu = (AsseKnowDynaElemResu) dynaElemResuList.get(i);
asseInfoAsse = dynaElemResu.getAsse();
vulnHighNum += dynaElemResu.getVulnHighNum().intValue();
vulnMiduNum += dynaElemResu.getVulnMiduNum().intValue();
vulnLowNum += dynaElemResu.getVulnLowNum().intValue();
}
handOnResult.setVulnHighNum(new Integer(vulnHighNum));
handOnResult.setVulnMiduNum(new Integer(vulnMiduNum));
handOnResult.setVulnLowNum(new Integer(vulnLowNum));
}
if(repoList!=null && repoList.size()>0) {
AsseKnowDynaVTARepo dynaVTARepo = null;
int vulnHighIPNum = 0;
int vulnMiduIPNum = 0;
int vulnLowIPNum = 0;
for(int i=0;i<repoList.size();i++) {
dynaVTARepo = (AsseKnowDynaVTARepo) repoList.get(i);
asseInfoAsse = assetDao.find(dynaVTARepo.getAssetId());
if(asseInfoAsse.getIp()!=null) {
if(dynaVTARepo.getRiskValu().equals("H")) {
vulnHighIPNum += 1;
}else if(dynaVTARepo.getRiskValu().equals("M")) {
vulnMiduIPNum += 1;
}else if(dynaVTARepo.getRiskValu().equals("L")) {
vulnLowIPNum += 1;
}
}
}
handOnResult.setVulnHighIPNum(new Integer(vulnHighIPNum));
handOnResult.setVulnMiduIPNum(new Integer(vulnMiduIPNum));
handOnResult.setVulnLowIPNum(new Integer(vulnLowIPNum));
}
reportMap.put("handOnResult", handOnResult);
// assessmentReportSenderWrapper.executeSend(reportMap);
}
public List getDicCpKindList() {
return dicCpKindDao.listDicCpKind(null);
}
}