📄 chartstat.java
字号:
package com.jlobo.common;
import java.awt.Color;
import java.awt.GradientPaint;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
public class ChartStat extends HttpServlet {
private static final long serialVersionUID = 1L;
class StatDepartment {
private String name;
private int total;
private int upProbity;
private int downProbity;
public StatDepartment(){
}
public StatDepartment(String name,int total,int upProbity,int downProbity){
this.name = name;
this.total = total;
this.upProbity = upProbity;
this.downProbity = downProbity;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getUpProbity() {
return upProbity;
}
public void setUpProbity(int upProbity) {
this.upProbity = upProbity;
}
public int getDownProbity() {
return downProbity;
}
public void setDownProbity(int downProbity) {
this.downProbity = downProbity;
}
}
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
String type = req.getParameter("type");
DefaultCategoryDataset data=null;
String title="";
if(type.equals("01"))
{
title = "廉政档案信息统计";
String catalog = req.getParameter("catalog");
StatDepartment[] stat = new StatDepartment[6];
stat[0] = new StatDepartment();
stat[0].setName("白银市国税局");
stat[0].setTotal(Integer.parseInt(req.getParameter("zjtotal")));
stat[0].setUpProbity(Integer.parseInt(req.getParameter("zjup")));
stat[0].setDownProbity(Integer.parseInt(req.getParameter("zjdown")));
stat[1] = new StatDepartment();
stat[1].setName("白银区国税局");
stat[1].setTotal(Integer.parseInt(req.getParameter("baiytotal")));
stat[1].setUpProbity(Integer.parseInt(req.getParameter("baiyup")));
stat[1].setDownProbity(Integer.parseInt(req.getParameter("baiydown")));
stat[2] = new StatDepartment();
stat[2].setName("平川区国税局");
stat[2].setTotal(Integer.parseInt(req.getParameter("pingchtotal")));
stat[2].setUpProbity(Integer.parseInt(req.getParameter("pingchup")));
stat[2].setDownProbity(Integer.parseInt(req.getParameter("pingchdown")));
stat[3] = new StatDepartment();
stat[3].setName("靖远县国税局");
stat[3].setTotal(Integer.parseInt(req.getParameter("jinytotal")));
stat[3].setUpProbity(Integer.parseInt(req.getParameter("jinyup")));
stat[3].setDownProbity(Integer.parseInt(req.getParameter("jinydown")));
stat[4] = new StatDepartment();
stat[4].setName("景泰县国税局");
stat[4].setTotal(Integer.parseInt(req.getParameter("jinttotal")));
stat[4].setUpProbity(Integer.parseInt(req.getParameter("jintup")));
stat[4].setDownProbity(Integer.parseInt(req.getParameter("jintdown")));
stat[5] = new StatDepartment();
stat[5].setName("会宁县国税局");
stat[5].setTotal(Integer.parseInt(req.getParameter("huintotal")));
stat[5].setUpProbity(Integer.parseInt(req.getParameter("huinup")));
stat[5].setDownProbity(Integer.parseInt(req.getParameter("huindown")));
data = getDataSet01(catalog,stat);
}else if(type.equals("02"))
{
title = "按信息类型统计";
String startDate = req.getParameter("startDate");
String endDate = req.getParameter("endDate");
//data = getDataSet02(startDate,endDate);
}else if(type.equals("03"))
{
}else
{
data = getDataSet00();
}
res.setContentType("image/jpeg");
JFreeChart chart = ChartFactory.createBarChart3D(title, // 图表标题
"",
"数量",
data, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
true, // 是否生成工具
false // 是否生成URL链接
);
chart.setBackgroundPaint(Color.white);
// get a reference to the plot for further customisation...
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.white);
// set the range axis to display integers only...
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
// disable bar outlines...
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setDrawBarOutline(false);
// set up gradient paints for series...
GradientPaint gp0 = new GradientPaint(
0.0f, 0.0f, new Color(136,72,62),
0.0f, 0.0f, new Color(0, 0, 64)
);
GradientPaint gp1 = new GradientPaint(
0.0f, 0.0f, new Color(64,252,13),
0.0f, 0.0f, new Color(0, 32, 0)
);
GradientPaint gp2 = new GradientPaint(
0.0f, 0.0f, Color.blue,
0.0f, 0.0f, new Color(64, 0, 0)
);
GradientPaint gp3 = new GradientPaint(
0.0f, 0.0f, Color.yellow,
0.0f, 0.0f, new Color(64, 0, 0)
);
GradientPaint gp4 = new GradientPaint(
0.0f, 0.0f, Color.red,
0.0f, 0.0f, new Color(64, 0, 0)
);
renderer.setSeriesPaint(0, gp0);
renderer.setSeriesPaint(1, gp1);
renderer.setSeriesPaint(2, gp2);
renderer.setSeriesPaint(3, gp3);
renderer.setSeriesPaint(4, gp4);
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(
CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)
);
ChartUtilities.writeChartAsJPEG(res.getOutputStream(), 1, chart, 800,
300, null);
}
/**
* 获取一个演示用的简单数据集对象
*
* @return
*/
private DefaultCategoryDataset getDataSet00() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
return dataset;
}
private DefaultCategoryDataset getDataSet01(String catalog,StatDepartment[] stat) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset ();
//BusinessDaoImpl listImp = new BusinessDaoImpl();
//listImp.setSession(HibernateSessionFactory.getSession());
//List listData = listImp.getCatalogStat(catalogId);
for(int i=0;i<stat.length;i++){
dataset.addValue(stat[i].total, "总人数", stat[i].getName());
dataset.addValue(stat[i].getUpProbity(), "上半年", stat[i].getName());
dataset.addValue(stat[i].getDownProbity(), "下半年", stat[i].getName());
}
// if(listData == null)
// {
// dataset.addValue(100, "北京", "苹果");
// dataset.addValue(100, "上海", "苹果");
// dataset.addValue(100, "广州", "苹果");
// dataset.addValue(200, "北京", "梨子");
// dataset.addValue(200, "上海", "梨子");
// dataset.addValue(200, "广州", "梨子");
// dataset.addValue(300, "北京", "葡萄");
// dataset.addValue(300, "上海", "葡萄");
// dataset.addValue(300, "广州", "葡萄");
// dataset.addValue(400, "北京", "香蕉");
// dataset.addValue(400, "上海", "香蕉");
// dataset.addValue(400, "广州", "香蕉");
// dataset.addValue(500, "北京", "荔枝");
// dataset.addValue(500, "上海", "荔枝");
// dataset.addValue(500, "广州", "荔枝");
//
// }else
// {
// for(int i=0;i<listData.size();i++)
// {
// Stat st = (Stat)listData.get(i);
//// dataset.setValue(Double.parseDouble(st.getCol2()),"应办信息",st.getCol1());
//// dataset.setValue(Double.parseDouble(st.getCol3()),"按时完成",st.getCol1());
//// dataset.setValue(Double.parseDouble(st.getCol4()),"过期完成",st.getCol1());
//// dataset.setValue(Double.parseDouble(st.getCol5()),"未完成",st.getCol1());
//// dataset.setValue(Double.parseDouble(st.getCol6()),"过期未完成",st.getCol1());
// }
//
//
// }
return dataset;
}
// private DefaultCategoryDataset getDataSet02(String startDate,String endDate) {
// DefaultCategoryDataset dataset = new DefaultCategoryDataset ();
//
//
//
// BusinessDaoImpl listImp = new BusinessDaoImpl();
// listImp.setSession(HibernateSessionFactory.getSession());
// List listData = listImp.getStatTypes(startDate,endDate);
// if(listData.size()==0)
// {
// dataset.addValue(100, "北京", "苹果");
// dataset.addValue(100, "上海", "苹果");
// dataset.addValue(100, "广州", "苹果");
// dataset.addValue(200, "北京", "梨子");
// dataset.addValue(200, "上海", "梨子");
// dataset.addValue(200, "广州", "梨子");
// dataset.addValue(300, "北京", "葡萄");
// dataset.addValue(300, "上海", "葡萄");
// dataset.addValue(300, "广州", "葡萄");
// dataset.addValue(400, "北京", "香蕉");
// dataset.addValue(400, "上海", "香蕉");
// dataset.addValue(400, "广州", "香蕉");
// dataset.addValue(500, "北京", "荔枝");
// dataset.addValue(500, "上海", "荔枝");
// dataset.addValue(500, "广州", "荔枝");
//
// }else
// {
// for(int i=0;i<listData.size();i++)
// {
// Stat st = (Stat)listData.get(i);
//// dataset.setValue(Double.parseDouble(st.getCol2()),"应办信息",st.getCol1());
//// dataset.setValue(Double.parseDouble(st.getCol3()),"按时完成",st.getCol1());
//// dataset.setValue(Double.parseDouble(st.getCol4()),"过期完成",st.getCol1());
//// dataset.setValue(Double.parseDouble(st.getCol5()),"未完成",st.getCol1());
//// dataset.setValue(Double.parseDouble(st.getCol6()),"过期未完成",st.getCol1());
// }
//
//
// }
//
// return dataset;
// }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -