⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reportconfigaction.java

📁 OBPM是一个开源
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
				ExecuteDataPrepare.execute(dataprepare);  //产生临时表数据
				}
				
				JasperPrint jasperPrint = JasperFillManager.fillReport(
						jasperFile, parameters, conn);
				Map session = ctx.getSession();
				session.put("jasperPrint", jasperPrint);

				exportReportToExcel(jasperPrint, fileExcelPath);
				exportReportToPdf(jasperPrint, filePdflPath);
				request.setAttribute("excelPath", DefaultProperty
						.getProperty("REPORT_PATH")
						+ fileExcelPath.substring(reportpath.length(),
								fileExcelPath.length()));
				request.setAttribute("pdfPath", DefaultProperty
						.getProperty("REPORT_PATH")
						+ filePdflPath.substring(reportpath.length(),
								filePdflPath.length()));
			}
		} catch (Exception e) {
			e.printStackTrace();
			return ERROR;
		} finally {
			if (conn != null)
				conn.close();
		}

		return SUCCESS;
	}

	// 生成Excel报表文件
	public String exportReportToExcel(JasperPrint jasperPrint, String filePath)
			throws Exception {
		JRXlsExporter exporter = new JRXlsExporter();
		File destFile = new File(filePath);
		exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
		exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile
				.toString());
		exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
				Boolean.TRUE);

		exporter.exportReport();
		return SUCCESS;
	}

	// 生成Pdf报表文件
	public String exportReportToPdf(JasperPrint jasperPrint, String filePath)
			throws Exception {
		JasperExportManager.exportReportToPdfFile(jasperPrint, filePath);
		return SUCCESS;
	}

	public Map getCreatReportParams(ParamsTable params, ReportConfig vo)
			throws Exception { // 根据queryString 取得参数列表,并从params中取得参数对应该的值
		Map map = new HashMap();
		if (params == null || vo == null || vo.getQuery() == null)
			return map;
		String queryString = vo.getQuery().getQueryString();
		Collection list = getParametersBySQL(queryString); // //
		for (Iterator iter = list.iterator(); iter.hasNext();) {
			String paramName = (String) iter.next();
			String value = params.getParameterAsString(paramName);
			if (value != null && value.length() > 0)
				map.put(paramName, value);
		}
		return map;
	}

	public String creatJasperTemplate(String path, ReportConfig rc, Map params,
			String application) throws Exception { // 根据配置生成Jrxml
		TableColumnProcess tp = (TableColumnProcess) (ProcessFactory
				.createProcess(TableColumnProcess.class));
		DataPackage data_group1 = tp.getFieldsByReportConfigAndType(rc.getId(),
				ReportConfig.Column_Type_Group1, application);
		DataPackage data_group2 = tp.getFieldsByReportConfigAndType(rc.getId(),
				ReportConfig.Column_Type_Group2, application);
		DataPackage data_group3 = tp.getFieldsByReportConfigAndType(rc.getId(),
				ReportConfig.Column_Type_Group3, application);
		DataPackage data_group4 = tp.getFieldsByReportConfigAndType(rc.getId(),
				ReportConfig.Column_Type_Group4, application);
		DataPackage data_detail = tp.getFieldsByReportConfigAndType(rc.getId(),
				ReportConfig.Column_Type_Detail, application);
		DataPackage data_summary = tp.getFieldsByReportConfigAndType(
				rc.getId(), ReportConfig.Column_Type_summary, application);

		DataPackage data_rowGroup = tp.getFieldsByReportConfigAndType(rc
				.getId(), ReportConfig.CrossTable_Type_RowGroup, application);
		DataPackage data_columnGroup = tp
				.getFieldsByReportConfigAndType(rc.getId(),
						ReportConfig.CrossTable_Type_ColumnGroup, application);

		int pageWidth = getPageWidth(data_detail);
		if (pageWidth == 0)
			pageWidth = 800;
		StringBuffer sb = new StringBuffer();
		sb
				.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?> <!DOCTYPE jasperReport PUBLIC \"-//JasperReports//DTD Report Design//EN\" \"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd\">");
		sb
				.append("<jasperReport name=\"ShapesReport\" pageWidth=\"")
				.append(pageWidth)
				.append(
						"\"  whenNoDataType=\"AllSectionsNoDetail\" columnWidth=\"50\" leftMargin=\"20\" rightMargin=\"20\" topMargin=\"30\" bottomMargin=\"30\" isIgnorePagination=\"true\" >");
		sb
				.append("<style name=\"Arial_Bold\" isDefault=\"false\" fontName=\"Arial\" fontSize=\"12\" isBold=\"true\" isItalic=\"false\" isUnderline=\"false\" isStrikeThrough=\"false\" pdfFontName=\"STSong-Light\" pdfEncoding=\"UniGB-UCS2-H\" isPdfEmbedded=\"true\"/>");
		sb
				.append("<style name=\"Arial_Normal\" isDefault=\"true\" fontName=\"Arial\" fontSize=\"12\" isBold=\"false\" isItalic=\"false\" isUnderline=\"false\" isStrikeThrough=\"false\" pdfFontName=\"STSong-Light\" pdfEncoding=\"UniGB-UCS2-H\" isPdfEmbedded=\"true\"/>");
		sb
				.append("	<style name=\"CellStyle\" isDefault=\"false\" mode=\"Opaque\" />");

		String jasperSQL = rc.getQuery().getQueryString();
		DataSource dts = rc.getQuery().getDataSource();
		sb.append(creatParamters(rc));

		jasperSQL += QueryStringAppendOrderBy(data_group1, data_group2,
				data_group3, data_group4); //
		sb.append(creatQueryString(jasperSQL));

		String sql = parseJaperSQL(params, rc.getQuery());
		sb.append(ceartField(get_tableColumnFromDateBase(sql, dts)));

		sb.append(creatVariableByGroup(data_group1));
		sb.append(creatVariableByGroup(data_group2));
		sb.append(creatVariableByGroup(data_group3));
		sb.append(creatVariableByGroup(data_group4));
		sb.append(creatVariableBySummary(data_summary));

		sb.append(creatGroup(data_group1, pageWidth));
		sb.append(creatGroup(data_group2, pageWidth));
		sb.append(creatGroup(data_group3, pageWidth));
		sb.append(creatGroup(data_group4, pageWidth));

		sb.append(creatTitel(rc.getName()));
		sb.append(creatPageHeader());

		Map detail = getColumnAndDataType(data_detail,
				get_tableColumnFromDateBase(sql, dts));

		sb.append(creatColumnHeader(detail));
		sb.append(creatDetial(detail));
		sb.append(creatColumnFooter());

		sb.append(creatPageFooter());

		sb.append(creatSummary(data_summary, pageWidth));
		sb.append(creatCrossTable(data_rowGroup, data_columnGroup, rc));
		sb.append("</jasperReport>");
		FileOperate.writeFileUTF(path, sb.toString(), true);
		return null;
	}

	private String parseJaperSQL(Map params, Query query) {
		String jasperSql = query.getQueryString();
		if (jasperSql == null || jasperSql.length() == 0)
			return null;
		while (jasperSql.indexOf("$P") >= 0) {
			int i = jasperSql.indexOf("$P");
			int j = jasperSql.indexOf("{", i);
			int k = jasperSql.indexOf("}", j + 1);
			String paramName = jasperSql.substring(j + 1, k);
			String tmpStr = jasperSql.substring(0, i);
			String tmpStr1 = jasperSql.substring(k + 1, jasperSql.length());
			String value = (String) params.get(paramName);
			if (value == null || value.trim().length() == 0) {
				Collection coll = query.getParamters();
				for (Iterator iter = coll.iterator(); iter.hasNext();) {
					Parameter em = (Parameter) iter.next();
					if (em.getName().equals(paramName))
						value = em.getDefaultValue();
				}
			}
			jasperSql = tmpStr + "'" + value + "'" + tmpStr1;
		}
		return jasperSql;
	}

	private Collection getParametersBySQL(String sql) throws Exception {

		QueryHelper helper = new QueryHelper();
		Collection params = helper.getParametersBySQL(sql);
		return params;
	}

	private int getPageWidth(DataPackage detail) {
		int width = 0;
		if (detail == null || detail.datas == null || detail.datas.size() == 0)
			return width;
		for (Iterator iter = detail.datas.iterator(); iter.hasNext();) {
			TableColumn em = (TableColumn) iter.next();
			if (em.getWidth() != null && em.getWidth().trim().length() > 0)
				width += Integer.valueOf(em.getWidth()).intValue();
			else
				width += 50;
		}

		return width;
	}

	public String creatParamters(ReportConfig vo) {
		StringBuffer sb = new StringBuffer();
		if (vo != null && vo.getQuery() != null) {
			Query query = vo.getQuery();
			Collection params = query.getParamters();
			for (Iterator iter = params.iterator(); iter.hasNext();) {
				Parameter em = (Parameter) iter.next();
				sb
						.append("<parameter name=\"")
						.append(em.getName())
						.append("\"")
						.append(
								" isForPrompting=\"false\" class=\"java.lang.String\">");
				sb.append("\n");
				sb.append("<defaultValueExpression ><![CDATA[\"");
				if (em.getDefaultValue() != null
						&& em.getDefaultValue().trim().length() > 0)
					sb.append(em.getDefaultValue());
				else
					sb.append("%");
				sb.append("\"]]></defaultValueExpression>");
				sb.append("</parameter>");
			}
		}
		return sb.toString();
	}

	public String ceartField(Map map) throws Exception {
		StringBuffer sb = new StringBuffer();
		for (Iterator iter = map.keySet().iterator(); iter.hasNext();) {
			String name = (String) iter.next();
			String type = (String) map.get(name);
			sb.append("<field name=\"").append(name).append("\" class=\"")
					.append(type).append("\"/>");
			sb.append("\n");
		}
		return sb.toString();
	}

	public String creatVariableByGroup(DataPackage data) {

		if (data == null || data.datas == null || data.datas.size() == 0)
			return "";

		StringBuffer sb = new StringBuffer();
		Collection coll = data.datas;
		for (Iterator iter = coll.iterator(); iter.hasNext();) {
			TableColumn em = (TableColumn) iter.next();
			if (!em.isSort()) {
				sb
						.append("<variable name=\"")
						.append(em.getType() + "_" + em.getName())
						.append(
								"\" class=\"java.lang.Double\" resetType=\"Group\" resetGroup=\"");
				sb.append(em.getType()).append("\" calculation=\"");
				if (em.getCalculateMode() == null
						|| em.getCalculateMode().length() == 0)
					sb.append("Nothing");
				sb.append(em.getCalculateMode());
				sb.append("\">");
				sb.append("<variableExpression><![CDATA[$F{").append(
						em.getName()).append("}]]></variableExpression>");
				sb.append("</variable>");
				sb.append("\n");
			}
		}
		return sb.toString();
	}

	public String creatVariableBySummary(DataPackage data) {

		if (data == null || data.datas == null || data.datas.size() == 0)
			return "";

		StringBuffer sb = new StringBuffer();
		Collection coll = data.datas;
		for (Iterator iter = coll.iterator(); iter.hasNext();) {
			TableColumn em = (TableColumn) iter.next();
			if (!em.isSort()) {
				sb.append("<variable name=\"").append(
						em.getType() + "_" + em.getName()).append(
						"\" class=\"java.lang.Double\" resetType=\"Report\" ")
						.append(" calculation=\"");
				;
				if (em.getCalculateMode() == null
						|| em.getCalculateMode().length() == 0)
					sb.append("Nothing");
				sb.append(em.getCalculateMode());
				sb.append("\">");
				sb.append("<variableExpression><![CDATA[$F{").append(
						em.getName()).append("}]]></variableExpression>");
				sb.append("</variable>");
				sb.append("\n");
			}
		}
		return sb.toString();
	}

	public String creatGroup(DataPackage data, int pageWidth) {

		if (data == null || data.datas == null || data.datas.size() == 0)
			return "";
		Collection coll = data.datas;
		String sortField = "";
		String groupName = "";
		for (Iterator iter = coll.iterator(); iter.hasNext();) {
			TableColumn em = (TableColumn) iter.next();
			if (em.isSort()) {
				sortField = em.getName();
				groupName = em.getType();
			}
		}
		StringBuffer sb = new StringBuffer();
		sb.append("<group name=\"").append(groupName).append("\">");
		sb.append("<groupExpression>").append("$F{").append(sortField).append(
				"}").append("</groupExpression>");
		sb.append("<groupHeader>");
		sb.append("<band height=\"25\"  isSplitAllowed=\"true\" >");
		sb
				.append(
						"<rectangle radius=\"0\" ><reportElement x=\"0\" y=\"0\" width=\"")
				.append(pageWidth)
				.append(
						"\" height=\"25\" forecolor=\"#FFFFFF\" backcolor=\"#BFC9DC\"");
		sb.append(" key=\"rectangle\"/>");
		sb.append("<graphicElement stretchType=\"NoStretch\"/>");
		sb.append("</rectangle>");

		sb.append("<staticText>");
		sb
				.append("<reportElement x=\"3\" y=\"2\" width=\"96\" height=\"23\" forecolor=\"#ff0000\" key=\"staticText\"/>");
		sb
				.append("<box topBorder=\"None\" topBorderColor=\"#000000\" leftBorder=\"None\" leftBorderColor=\"#000000\" rightBorder=\"None\" rightBorderColor=\"#000000\" bottomBorder=\"None\" bottomBorderColor=\"#000000\"/>");
		sb.append("<textElement textAlignment=\"Left\">");
		sb.append("<font size=\"12\" />");
		sb.append("</textElement>");
		sb.append("<text><![CDATA[").append(sortField).append("]]></text>");
		sb.append("</staticText>");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -