如何从数据自动生成统计报告?
我目前正在使用JSF和PrimeFaces开发中间件应用程序,并且我有一个模块来开发有关统计报告的涉及的模块
我要做的是自动为每个资产生成一个radarchart。例如,如果将资产添加到我的应用程序中,则应出现。问题是我不知道该怎么开始。
首先,我创建了一种返回所需值的方法:
public ArrayList<risk> getGet_all_risk_for_radar_chart2() throws Exception{
ArrayList<risk> rr = new ArrayList<>();
Connection connection = null;
try{
DB_connection1 obj_DB_connection = new DB_connection1();
connection = obj_DB_connection.get_connection();
PreparedStatement ps = connection.prepareStatement("select risks_to_assets.risk_id , asset_id , calculated_risk , mitigation_percent from risks_to_assets INNER JOIN risk_scoring ON risks_to_assets.risk_id=risk_scoring.id INNER JOIN mitigations ON risks_to_assets.risk_id=mitigations.risk_id ");
ResultSet rs = ps.executeQuery();
while(rs.next()){
risk r = new risk();
r.setRisk_id(rs.getInt("risk_id"));
r.setId(rs.getInt("asset_id"));
r.setCalculated_risk(rs.getInt("calculated_risk"));
r.setMitigation_percent(rs.getInt("mitigation_percent"));
rr.add(r);
}
}catch(Exception e){
e.printStackTrace();
}finally {
if (connection != null) {
connection.close();
}
}
return rr;
}
我制作了一个图形,但它包含所有资产:
>
public void createRadarModel0() {
radarModel0 = new RadarChartModel();
ChartData data = new ChartData();
risk rr = new risk();
RadarChartDataSet radarDataSet = new RadarChartDataSet();
radarDataSet.setLabel("My First Dataset");
radarDataSet.setFill(true);
radarDataSet.setBackgroundColor("rgba(255, 99, 132, 0.2)");
radarDataSet.setBorderColor("rgb(255, 99, 132)");
radarDataSet.setPointBackgroundColor("rgb(255, 99, 132)");
radarDataSet.setPointBorderColor("#fff");
radarDataSet.setPointHoverBackgroundColor("#fff");
radarDataSet.setPointHoverBorderColor("rgb(255, 99, 132)");
List<Number> dataVal = new ArrayList<>();
try{
for(int i=0;i<rr.getGet_all_risk_for_radar_chart2().size();i++){
dataVal.add(rr.getGet_all_risk_for_radar_chart2().get(i).getCalculated_risk());
// System.out.println(rr.getGet_all_risk_for_radar_chart2().get(i).getCalculated_risk());
radarDataSet.setData(dataVal);
}
}catch(Exception e){
System.out.println(e);
}
RadarChartDataSet radarDataSet2 = new RadarChartDataSet();
radarDataSet2.setLabel("My Second Dataset");
radarDataSet2.setFill(true);
radarDataSet2.setBackgroundColor("rgba(54, 162, 235, 0.2)");
radarDataSet2.setBorderColor("rgb(54, 162, 235)");
radarDataSet2.setPointBackgroundColor("rgb(54, 162, 235)");
radarDataSet2.setPointBorderColor("#fff");
radarDataSet2.setPointHoverBackgroundColor("#fff");
radarDataSet2.setPointHoverBorderColor("rgb(54, 162, 235)");
List<Number> dataVal2 = new ArrayList<>();
try{
rr.getGet_all_risk_for_radar_chart2();
for(int i=0;i<rr.getGet_all_risk_for_radar_chart2().size();i++){
dataVal2.add(rr.getGet_all_risk_for_radar_chart2().get(i).getMitigation_percent());
radarDataSet2.setData(dataVal2);
}
}catch(Exception e){
System.out.println(e);
}
data.addChartDataSet(radarDataSet);
data.addChartDataSet(radarDataSet2);
List<String> labels = new ArrayList<>();
try{
rr.getGet_all_risk_for_radar_chart2();
for(int i=0;i<rr.getGet_all_risk_for_radar_chart2().size();i++){
System.out.println(rr.getGet_all_risk_for_radar_chart2().get(i).getRisk_id());
labels.add(String.valueOf(rr.getGet_all_risk_for_radar_chart2().get(i).getRisk_id()));
data.setLabels(labels);
}
}catch(Exception e){
System.out.println(e);
}
/* Options */
RadarChartOptions options = new RadarChartOptions();
Elements elements = new Elements();
ElementsLine elementsLine = new ElementsLine();
elementsLine.setTension(0);
elementsLine.setBorderWidth(3);
elements.setLine(elementsLine);
options.setElements(elements);
radarModel0.setOptions(options);
radarModel0.setData(data);
}
” alt =“在此处输入映像 自动适用于每个资产。
I am currently working on a middleware application using JSF and primefaces and I have a module to develop which concerns statistical reports
In fact, I have to automatically generate a graph for each asset which includes some information something like that:
First, I started by creating a view that contains all the information I need:
What I'm trying to do is to generate a RadarChart for each asset automatically. For example, if an asset is added to my application, it should appear. The problem is that I don't know how to start.
First, I created a method that returns the values I need:
public ArrayList<risk> getGet_all_risk_for_radar_chart2() throws Exception{
ArrayList<risk> rr = new ArrayList<>();
Connection connection = null;
try{
DB_connection1 obj_DB_connection = new DB_connection1();
connection = obj_DB_connection.get_connection();
PreparedStatement ps = connection.prepareStatement("select risks_to_assets.risk_id , asset_id , calculated_risk , mitigation_percent from risks_to_assets INNER JOIN risk_scoring ON risks_to_assets.risk_id=risk_scoring.id INNER JOIN mitigations ON risks_to_assets.risk_id=mitigations.risk_id ");
ResultSet rs = ps.executeQuery();
while(rs.next()){
risk r = new risk();
r.setRisk_id(rs.getInt("risk_id"));
r.setId(rs.getInt("asset_id"));
r.setCalculated_risk(rs.getInt("calculated_risk"));
r.setMitigation_percent(rs.getInt("mitigation_percent"));
rr.add(r);
}
}catch(Exception e){
e.printStackTrace();
}finally {
if (connection != null) {
connection.close();
}
}
return rr;
}
I made a graph, but it contains all the assets:
Voila le code du graphe :
public void createRadarModel0() {
radarModel0 = new RadarChartModel();
ChartData data = new ChartData();
risk rr = new risk();
RadarChartDataSet radarDataSet = new RadarChartDataSet();
radarDataSet.setLabel("My First Dataset");
radarDataSet.setFill(true);
radarDataSet.setBackgroundColor("rgba(255, 99, 132, 0.2)");
radarDataSet.setBorderColor("rgb(255, 99, 132)");
radarDataSet.setPointBackgroundColor("rgb(255, 99, 132)");
radarDataSet.setPointBorderColor("#fff");
radarDataSet.setPointHoverBackgroundColor("#fff");
radarDataSet.setPointHoverBorderColor("rgb(255, 99, 132)");
List<Number> dataVal = new ArrayList<>();
try{
for(int i=0;i<rr.getGet_all_risk_for_radar_chart2().size();i++){
dataVal.add(rr.getGet_all_risk_for_radar_chart2().get(i).getCalculated_risk());
// System.out.println(rr.getGet_all_risk_for_radar_chart2().get(i).getCalculated_risk());
radarDataSet.setData(dataVal);
}
}catch(Exception e){
System.out.println(e);
}
RadarChartDataSet radarDataSet2 = new RadarChartDataSet();
radarDataSet2.setLabel("My Second Dataset");
radarDataSet2.setFill(true);
radarDataSet2.setBackgroundColor("rgba(54, 162, 235, 0.2)");
radarDataSet2.setBorderColor("rgb(54, 162, 235)");
radarDataSet2.setPointBackgroundColor("rgb(54, 162, 235)");
radarDataSet2.setPointBorderColor("#fff");
radarDataSet2.setPointHoverBackgroundColor("#fff");
radarDataSet2.setPointHoverBorderColor("rgb(54, 162, 235)");
List<Number> dataVal2 = new ArrayList<>();
try{
rr.getGet_all_risk_for_radar_chart2();
for(int i=0;i<rr.getGet_all_risk_for_radar_chart2().size();i++){
dataVal2.add(rr.getGet_all_risk_for_radar_chart2().get(i).getMitigation_percent());
radarDataSet2.setData(dataVal2);
}
}catch(Exception e){
System.out.println(e);
}
data.addChartDataSet(radarDataSet);
data.addChartDataSet(radarDataSet2);
List<String> labels = new ArrayList<>();
try{
rr.getGet_all_risk_for_radar_chart2();
for(int i=0;i<rr.getGet_all_risk_for_radar_chart2().size();i++){
System.out.println(rr.getGet_all_risk_for_radar_chart2().get(i).getRisk_id());
labels.add(String.valueOf(rr.getGet_all_risk_for_radar_chart2().get(i).getRisk_id()));
data.setLabels(labels);
}
}catch(Exception e){
System.out.println(e);
}
/* Options */
RadarChartOptions options = new RadarChartOptions();
Elements elements = new Elements();
ElementsLine elementsLine = new ElementsLine();
elementsLine.setTension(0);
elementsLine.setBorderWidth(3);
elements.setLine(elementsLine);
options.setElements(elements);
radarModel0.setOptions(options);
radarModel0.setData(data);
}
I hope someone can explain the process to make it appear automatically for every assets.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论