📄 reportconfigaction.java
字号:
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 + -