<%
/**
* 这个页面主要用于显示某个气站某个日期内的温度曲线图
* time:2005-04-18
* @author:伊扬
* @version 1.0
*/
%>
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import = "java.awt.Color,
java.awt.Font,
java.io.*,
java.sql.*,
java.sql.ResultSet,
java.sql.ResultSetMetaData,
java.util.ArrayList,
java.util.*,
org.jfree.chart.ChartFactory,
org.jfree.chart.ChartPanel,
org.jfree.chart.JFreeChart,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.chart.*,
org.jfree.chart.axis.AxisSpace,
org.jfree.chart.StandardLegend,
org.jfree.chart.axis.DateAxis,
org.jfree.chart.plot.XYPlot,
org.jfree.chart.renderer.StandardXYItemRenderer,
org.jfree.chart.renderer.XYItemRenderer,
org.jfree.data.XYDataset,
org.jfree.data.time.Hour,
org.jfree.data.time.Minute,
org.jfree.data.time.Day,
org.jfree.data.time.TimeSeries,
org.jfree.data.time.TimeSeriesCollection"
%>
<%
String WellId=request.getParameter("WellID");//取需要查询的井号
String Transtime=request.getParameter("Transtime");//取需要查询的日期
String Para=request.getParameter("Para");//取需要查询的参数
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mis";//mis是数据库名称
String user="sa";//用户名
String password="";//用户密码
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
int i=0;
int j=0;
double[] row=new double[144];
Day days=new Day();//生成一个日子以产生当日的24个小时
TimeSeries s1 = new TimeSeries("输气站"+WellId+" "+Transtime+""+Para, Minute.class);
for (j=0;j<24;j++){//分别对每个小时进行数据取值,每小时取6个
int m=0;
String sql="SELECT "+Para+" , Transtime FROM Trans_Gas WHERE (CONVERT(varchar(10), Transtime, 20) = '"+Transtime+"') AND (WellId = '"+WellId+"')"+
" and ({ fn HOUR(Transtime) } ="+j+")";
ResultSet rs=stmt.executeQuery(sql);
while (rs.next()&& m<6){
row[6*j+m]=rs.getDouble(1);
rs.next();
i++;
m++;
}
if (m<6){//如果这个小时内没有6个值,则填0
for (int k=m;k<6;k++){
row[6*j+k]=0;
}
}
Hour hour=new Hour(j,days);
s1.add(new Minute(0, hour), row[6*j]);
s1.add(new Minute(10, hour), row[6*j+1]);
s1.add(new Minute(20, hour), row[6*j+2]);
s1.add(new Minute(30, hour), row[6*j+3]);
s1.add(new Minute(40, hour), row[6*j+4]);
s1.add(new Minute(50, hour), row[6*j+5]);
} TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.setDomainIsPointsInTime(true);
JFreeChart chart = ChartFactory.createTimeSeriesChart(
"输气站"+WellId+" "+Transtime+""+Para+"走势图",
"时间",Para+"值",
dataset,
true,
true,
false
);
//chart.setBackgroundPaint(Color.white);
StandardLegend sl = (StandardLegend) chart.getLegend();
sl.setDisplaySeriesShapes(true);
XYPlot plot = chart.getXYPlot();
plot.setBackgroundPaint(new Color(136,189,193));//设置背景颜色
plot.setDomainGridlinePaint(Color.white);//设置网格竖线颜色
plot.setRangeGridlinePaint(Color.white);//设置网格横线颜色
//plot.setDomainTickBandPaint(new Color(33,66,99));//设置隔段块颜色
//plot.setFixedDomainAxisSpace(new AxisSpace());//填充固定轴空白
XYItemRenderer renderer = plot.getRenderer();
if (renderer instanceof StandardXYItemRenderer) {
StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
rr.setPlotShapes(true);//true为每一个值画一个小方块
rr.setShapesFilled(true);//true表示填充每个小方块
}
DateAxis axis = (DateAxis) plot.getDomainAxis();
String filename = ServletUtilities.saveChartAsPNG(chart,1024, 600, null, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" width=1024 height=600 border=0 usemap="#<%= filename %>">