Java根據word模板生成word文檔之後臺解析和實現及部分代碼(三)E

下面貼出生成圖片的方法類,實際上是通過傳入解析過的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[]){
    }

}

(未完待續
發佈了36 篇原創文章 · 獲贊 18 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章