现在的位置: 首页 > 综合 > 正文

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

2018年01月27日 ⁄ 综合 ⁄ 共 5055字 ⁄ 字号 评论关闭

下面贴出生成图片的方法类,实际上是通过传入解析过的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 唐辉
 *
 */
@Component
public class CreatPieForReport{
	@Autowired
	private 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[]){
    }

}

(未完待续

抱歉!评论已关闭.