Java根据word模板生成word文档之后台解析和实现及部分代码(三)E

来源:互联网 发布:seo网络推广公司 编辑:程序博客网 时间:2024/04/28 04:46

下面贴出生成图片的方法类,实际上是通过传入解析过的xml数据到这个工具类进行处理,并调用生成jfreechar的工具类生成。

import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.util.List;import org.jfree.data.category.CategoryDataset;import org.jfree.data.category.DefaultCategoryDataset;import org.jfree.data.general.DefaultPieDataset;import org.jfree.data.general.PieDataset;import org.jfree.data.xy.XYDataset;import org.jfree.data.xy.XYSeries;import org.jfree.data.xy.XYSeriesCollection;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import com.mysql.jdbc.DatabaseMetaData;import com.venustech.a6l3.common.CommonUtils;import com.venustech.a6l3.dao.common.CommonStatisticsCreateImagesDao;/** * 生成报告相关的图片文件 * @author 唐辉 * */@Componentpublic class CreatPieForReport{@Autowiredprivate CommonStatisticsCreateImagesDao commonStatisticsCreateImagesDao;Statement stmt = null;Connection conn = null;ResultSet rs = null;DatabaseMetaData dma;     /**     * 组织生成饼状图的数据结构     * @param sqlStr     * @return     */public PieDataset createDataset(String sqlStr,List<FieldBean> fieldList,Connection conn){DefaultPieDataset defaultpiedataset = new DefaultPieDataset();if(CommonUtils.isNotNull(sqlStr)){try { //通过Query接口查询 //System.out.println("\n 要创建饼状图数据集的SQL语句为:\n" + sqlStr);     stmt = conn.prepareStatement(sqlStr); rs = stmt.executeQuery(sqlStr); while(rs.next()){ if(fieldList != null && fieldList.size() > 0){ for (int i = 0; i < fieldList.size(); i++) { String filedColumn = fieldList.get(i).getColumn(); String filedName =  fieldList.get(i).getName(); //执行查询 String filedValue = rs.getString(filedColumn); defaultpiedataset.setValue(filedName==null?"":filedName, new Double(filedValue)); } } }} catch (Exception e) {e.getStackTrace();System.out.println(e.getMessage());}    }        return defaultpiedataset;    } /**     * 组织柱状图的数据结构     * @param sqlStr     * @return     */public DefaultCategoryDataset creatBarChart(String sqlStr,List<FieldBean> fieldList,Connection conn){DefaultCategoryDataset  defaultCategoryDataset = new DefaultCategoryDataset();if(CommonUtils.isNotNull(sqlStr)){try { //通过Query接口查询 //System.out.println("\n 要创建柱状图数据集的SQL语句为:\n" + sqlStr);     stmt = conn.prepareStatement(sqlStr); rs = stmt.executeQuery(sqlStr); while(rs.next()){ if(fieldList != null && fieldList.size() > 0){ for (int i = 0; i < fieldList.size(); i++) { String filedColumn = fieldList.get(i).getColumn(); String filedName =  fieldList.get(i).getName(); //执行查询 String filedValue = rs.getString(filedColumn); if(CommonUtils.isNotNull(filedValue)){ defaultCategoryDataset.setValue(Integer.parseInt(filedValue),filedValue,filedName==null?"":filedName); } } } }} catch (Exception e) {e.getStackTrace();System.out.println(e.getMessage());}    }        return defaultCategoryDataset;    } /**     * 组织曲线图的数据结构     * @param sqlStr     * @return     */public CategoryDataset createLineChart(String sqlStr,List<FieldBean> fieldList,Connection conn){CategoryDataset categoryDataset = null;        return categoryDataset;    } /**     * 综合差距分析数据结构     * @param sqlStr     * @return     */ private XYDataset createPolarChart(String sqlStr,List<FieldBean> fieldList,Connection conn,String[] pplotArr){        XYSeriesCollection xyseriescollection = new XYSeriesCollection();        XYSeries xyserie1 = new XYSeries(pplotArr[0]);        for(int k = 0; k < 11; k++) {        xyserie1.add((360/11)*k, 10D);}        xyseriescollection.addSeries(xyserie1);        if(CommonUtils.isNotNull(sqlStr)){try { XYSeries xyserie2 = new XYSeries(pplotArr[1]); //通过Query接口查询 //System.out.println("\n 要创建雷达图数据集的SQL语句为:\n" + sqlStr); Statement stmt = conn.prepareStatement(sqlStr); ResultSet rs = stmt.executeQuery(sqlStr); while(rs.next()){ if(fieldList != null && fieldList.size() > 0){ for (int i = 0; i < fieldList.size(); i++) { String filedColumn = fieldList.get(i).getColumn(); if(filedColumn.equals("conformValue")){ //执行查询 String filedValue = rs.getString(filedColumn); if(!CommonUtils.isNotNull(filedValue)){ filedValue = "0"; } if(CommonUtils.isNotNull(filedValue)){ for(int m = 0; m < 11; m++) { xyserie2.add((360/11)*m, Double.parseDouble(XmlPathDef.getStrNum(filedValue))); } } } } } } xyseriescollection.addSeries(xyserie2);} catch (Exception e) {e.getStackTrace();System.out.println(e.getMessage());}    }        return xyseriescollection;    }/** * 报告图片生成方法 * @param sqlStr * @param charName * @param fieldList * @param chartUrl * @param conn * @param type * @param width * @param height * @return */public boolean createChartPic(String sqlStr,String charName,List<FieldBean> fieldList,String chartUrl,Connection conn,String type,int width,int height,String[] pplotArr){boolean boo = true;if(CommonUtils.isNotNull(type) && type.indexOf("CI") != -1){   type = type.substring(type.indexOf("CI")+3, type.length());   if(CommonUtils.isNotNull(type)){   if(type.equals(XmlPathDef.PIECHART)){  //饼状图   boo = commonStatisticsCreateImagesDao.createPiePic(chartUrl, charName,createDataset(sqlStr,fieldList, conn), width, height);   }else if(type.equals(XmlPathDef.BARCHART)){ //柱状图   boo = commonStatisticsCreateImagesDao.creatPic(chartUrl, charName, "", creatBarChart(sqlStr,fieldList, conn), width, height);   }else if(type.equals(XmlPathDef.LINECHART)){ //曲线图   boo = commonStatisticsCreateImagesDao.createLinePic(chartUrl, charName, "", createLineChart(sqlStr,fieldList, conn), width, height);   }else if(type.equals(XmlPathDef.RADARCHART)){ //雷达图   boo = commonStatisticsCreateImagesDao.createPolarChart(chartUrl, charName, createPolarChart(sqlStr,fieldList, conn, pplotArr), width, height,pplotArr);   }   }}        return boo;    }       public static void main(String args[]){    }}

(未完待续

原创粉丝点击