📄 reportconfigaction.java
字号:
return map;
}
public Map getColumnAndDataType(DataPackage pack, Map columnInfo) { // 取得Column的数据类型且排序(用于用户自定义的报表)
if (pack == null || pack.datas == null || pack.datas.size() == 0
|| columnInfo == null)
return null;
Collection coll = pack.datas;
Map map = new LinkedHashMap();
Object[] columns = coll.toArray();
Object temp = null;
int k = 0;
for (int i = 0; i < columns.length; i++) {
k = i;
TableColumn em = (TableColumn) columns[i];
for (int j = i + 1; j < columns.length; j++) {
TableColumn cm = (TableColumn) columns[j];
if (em.getOrderno() < cm.getOrderno()) {
em = cm;
k = j;
}
}
if (k != i) {
temp = columns[i];
columns[i] = columns[k];
columns[k] = temp;
}
}
for (int i = 0; i < columns.length; i++) {
TableColumn em = (TableColumn) columns[i];
if (columnInfo.containsKey(em.getName()) && !map.containsKey(em)) {
map.put(em, columnInfo.get(em.getName()));
}
}
return map;
}
public String creatCrossTable(DataPackage rows, DataPackage columns,
ReportConfig vo) { // 创建交叉报表
if (rows == null || rows.datas == null || rows.datas.size() == 0
|| columns == null || columns.datas == null
|| columns.datas.size() == 0)
return "";
StringBuffer sb = new StringBuffer();
sb.append("<summary>");
sb.append("<band height=\"60\" isSplitAllowed=\"true\" >");
sb.append("<crosstab>");
sb
.append("<reportElement x=\"0\" y=\"0\" width=\"750\" height=\"60\" key=\"crosstab\"/>");
sb.append("<crosstabDataset><dataset ></dataset></crosstabDataset>");
sb.append("<crosstabHeaderCell>");
sb.append("<cellContents mode=\"Transparent\">");
sb
.append("<box topBorder=\"Thin\" topBorderColor=\"#000000\" leftBorder=\"Thin\" leftBorderColor=\"#000000\" rightBorder=\"Thin\" rightBorderColor=\"#000000\" bottomBorder=\"Thin\" bottomBorderColor=\"#000000\"/>");
sb.append("</cellContents>");
sb.append("</crosstabHeaderCell>");
for (Iterator iter = rows.datas.iterator(); iter.hasNext();) {
TableColumn em = (TableColumn) iter.next();
sb.append("<rowGroup name=\"").append(em.getName()).append(
"\" width=\"76\" totalPosition=\"End\">");// //
sb.append("<bucket>");
sb
.append(
"<bucketExpression class=\"java.lang.String\"><![CDATA[$F{")
.append(em.getName()).append("}]]></bucketExpression>"); // //
sb.append("</bucket>");
sb.append("<crosstabRowHeader>");
sb.append("<cellContents mode=\"Opaque\" style=\"CellStyle\">");
sb
.append("<box topBorder=\"1Point\" topBorderColor=\"#000000\" leftBorder=\"1Point\" leftBorderColor=\"#000000\" rightBorder=\"1Point\" rightBorderColor=\"#000000\" bottomBorder=\"1Point\" bottomBorderColor=\"#000000\"/>");
sb
.append("<textField isStretchWithOverflow=\"false\" isBlankWhenNull=\"false\" evaluationTime=\"Now\" hyperlinkType=\"None\" hyperlinkTarget=\"Self\" >");
sb
.append("<reportElement style=\"Arial_Bold\" x=\"7\" y=\"3\" width=\"67\" height=\"15\" key=\"textField\"/>");
sb
.append("<box topBorder=\"None\" topBorderColor=\"#000000\" leftBorder=\"None\" leftBorderColor=\"#000000\" rightBorder=\"None\" rightBorderColor=\"#000000\" bottomBorder=\"None\" bottomBorderColor=\"#000000\"/>");
sb.append("<textElement verticalAlignment=\"Middle\">");
sb.append("<font size=\"12\"/>");
sb.append("</textElement>");
sb
.append(
"<textFieldExpression class=\"java.lang.String\"><![CDATA[$V{")
.append(em.getName()).append("}]]></textFieldExpression>"); // //
sb.append("</textField>");
sb.append("</cellContents>");
sb.append("</crosstabRowHeader>");
sb.append("<crosstabTotalRowHeader>");
sb.append("<cellContents mode=\"Transparent\">");
sb
.append("<box topBorder=\"1Point\" topBorderColor=\"#000000\" leftBorder=\"1Point\" leftBorderColor=\"#000000\" rightBorder=\"1Point\" rightBorderColor=\"#000000\" bottomBorder=\"1Point\" bottomBorderColor=\"#000000\"/>");
sb.append("<staticText>");
sb
.append("<reportElement style=\"Arial_Bold\" x=\"6\" y=\"3\" width=\"64\" height=\"15\" key=\"staticText\"/>");
sb
.append("<box topBorder=\"None\" topBorderColor=\"#000000\" leftBorder=\"None\" leftBorderColor=\"#000000\" rightBorder=\"None\" rightBorderColor=\"#000000\" bottomBorder=\"None\" bottomBorderColor=\"#000000\"/>");
sb.append("<textElement verticalAlignment=\"Middle\">");
sb.append("<font size=\"12\"/>");
sb.append("</textElement>");
sb.append("<text><![CDATA[TOTAL]]></text>"); // /
sb.append("</staticText>");
sb.append("</cellContents>");
sb.append("</crosstabTotalRowHeader>");
sb.append("</rowGroup>");
}
// //////////////////////////////////////////////////////////////////////////
for (Iterator iter = columns.datas.iterator(); iter.hasNext();) {
TableColumn em = (TableColumn) iter.next();
sb.append("<columnGroup name=\"").append(em.getName()).append(
"\" height=\"30\" totalPosition=\"End\">"); // ///
sb.append("<bucket order=\"Descending\">");
sb
.append(
"<bucketExpression class=\"java.lang.String\"><![CDATA[$F{")
.append(em.getName()).append("}]]></bucketExpression>"); //
sb.append("</bucket>");
sb.append("<crosstabColumnHeader>");
sb.append("<cellContents mode=\"Transparent\">");
sb
.append("<box topBorder=\"Thin\" topBorderColor=\"#000000\" leftBorder=\"Thin\" leftBorderColor=\"#000000\" rightBorder=\"Thin\" rightBorderColor=\"#000000\" bottomBorder=\"Thin\" bottomBorderColor=\"#000000\"/>");
sb
.append("<textField isStretchWithOverflow=\"false\" isBlankWhenNull=\"false\" evaluationTime=\"Now\" hyperlinkType=\"None\" hyperlinkTarget=\"Self\" >");
sb
.append("<reportElement style=\"Arial_Normal\" x=\"2\" y=\"8\" width=\"60\" height=\"15\" key=\"textField-1\"/>");
sb
.append("<box topBorder=\"None\" topBorderColor=\"#000000\" leftBorder=\"None\" leftBorderColor=\"#000000\" rightBorder=\"None\" rightBorderColor=\"#000000\" bottomBorder=\"None\" bottomBorderColor=\"#000000\"/>");
sb
.append("<textElement textAlignment=\"Center\"><font size=\"12\"/></textElement>");
sb
.append(
"<textFieldExpression class=\"java.lang.String\"><![CDATA[$V{")
.append(em.getName()).append("}]]></textFieldExpression>");
sb.append("</textField>");
sb.append("</cellContents>");
sb.append("</crosstabColumnHeader>");
sb.append("<crosstabTotalColumnHeader>");
sb.append("<cellContents mode=\"Transparent\">");
sb
.append("<box topBorder=\"Thin\" topBorderColor=\"#000000\" leftBorder=\"Thin\" leftBorderColor=\"#000000\" rightBorder=\"Thin\" rightBorderColor=\"#000000\" bottomBorder=\"Thin\" bottomBorderColor=\"#000000\"/>");
sb.append("<staticText>");
sb
.append("<reportElement style=\"Arial_Normal\" x=\"4\" y=\"8\" width=\"60\" height=\"15\" key=\"staticText-1\"/>");
sb
.append("<box topBorder=\"None\" topBorderColor=\"#000000\" leftBorder=\"None\" leftBorderColor=\"#000000\" rightBorder=\"None\" rightBorderColor=\"#000000\" bottomBorder=\"None\" bottomBorderColor=\"#000000\"/>");
sb
.append("<textElement textAlignment=\"Center\"><font size=\"12\"/></textElement>");
sb.append("<text><![CDATA[TOTAL]]></text>");
sb.append("</staticText>");
sb.append("</cellContents>");
sb.append("</crosstabTotalColumnHeader>");
sb.append("</columnGroup>");
}
sb
.append(
"<measure name=\"amount\" class=\"java.lang.Double\" calculation=\"")
.append(vo.getCrossTable_CalculateType()).append("\">"); // /
sb.append("<measureExpression><![CDATA[$F{").append(
vo.getCrossTable_CalculateField()).append("}!=null?$F{")
.append(vo.getCrossTable_CalculateField()).append(
"}:Double.valueOf(0.0)]]></measureExpression>"); // /
sb.append("</measure>");
sb.append("<crosstabCell width=\"78\" height=\"21\">");
sb.append("<cellContents mode=\"Opaque\" style=\"CellStyle\">");
sb
.append("<box topBorder=\"Thin\" topBorderColor=\"#000000\" leftBorder=\"Thin\" leftBorderColor=\"#000000\" rightBorder=\"Thin\" rightBorderColor=\"#000000\" bottomBorder=\"Thin\" bottomBorderColor=\"#000000\"/>");
sb
.append("<textField isStretchWithOverflow=\"false\" isBlankWhenNull=\"false\" evaluationTime=\"Now\" hyperlinkType=\"None\" hyperlinkTarget=\"Self\" >");
sb
.append("<reportElement style=\"Arial_Normal\" x=\"3\" y=\"3\" width=\"60\" height=\"15\" key=\"textField-1\"/>");
sb
.append("<box topBorder=\"None\" topBorderColor=\"#000000\" leftBorder=\"None\" leftBorderColor=\"#000000\" rightBorder=\"None\" rightBorderColor=\"#000000\" bottomBorder=\"None\" bottomBorderColor=\"#000000\"/>");
sb.append("<textElement><font size=\"12\"/></textElement>");
sb
.append("<textFieldExpression class=\"java.lang.Double\"><![CDATA[$V{amount}]]></textFieldExpression>"); // /
sb.append("</textField>");
sb.append("</cellContents>");
sb.append("</crosstabCell>");
sb.append("<whenNoDataCell>");
sb.append("<cellContents mode=\"Transparent\">");
sb
.append("<box topBorder=\"None\" topBorderColor=\"#000000\" leftBorder=\"None\" leftBorderColor=\"#000000\" rightBorder=\"Thin\" rightBorderColor=\"#000000\" bottomBorder=\"Thin\" bottomBorderColor=\"#000000\"/>");
sb.append("</cellContents>");
sb.append("</whenNoDataCell>");
sb.append("</crosstab>");
sb.append("</band>");
sb.append("</summary>");
return sb.toString();
}
public String get_query() {
ReportConfig rc = (ReportConfig) getContent();
return (rc != null && rc.getQuery() != null) ? rc.getQuery().getId()
: null;
}
public void set_query(String _query) {
this._query = _query;
}
public String get_reportType() {
ReportConfig rc = ((ReportConfig) this.getContent());
if (rc != null && rc.getReportType() != null) {
_reportType = rc.getReportType();
}
return _reportType;
}
public void set_reportType(String reportType) {
this._reportType = reportType;
}
public String get_creatReportType() {
return _creatReportType;
}
public void set_creatReportType(String reportType) {
_creatReportType = reportType;
}
public String get_module() {
ReportConfig vo = (ReportConfig) getContent();
return vo.getForm_module() != null ? vo.getForm_module().getId() : null;
}
public String get_path() {
return _path;
}
public void set_path(String _path) {
this._path = _path;
}
public void set_module(String _module) {
this._module = _module;
}
public String get_searchForm() {
ReportConfig vo = (ReportConfig) getContent();
return vo.getSearchForm() != null ? vo.getSearchForm().getId() : null;
}
public void set_searchForm(String form) {
_searchForm = form;
}
public String get_dts() {
ReportConfig vo = (ReportConfig) getContent();
return (vo != null && vo.getDataSource() != null) ? vo.getDataSource()
.getId() : null;
}
public void set_dts(String _dts) {
this._dts = _dts;
}
public Collection get_mappingconfigs() {
ReportConfig vo = (ReportConfig) getContent();
return vo != null ? vo.getMappingconfigs() : null;
}
public void set_mappingconfigs(Collection _mappingconfigs) throws Exception {
Collection maps = new HashSet();
MappingConfigProcess dp = (MappingConfigProcess) ProcessFactory
.createProcess((MappingConfigProcess.class));
for (Iterator iter = _mappingconfigs.iterator(); iter.hasNext();) {
String id = (String) iter.next();
MappingConfig mc = (MappingConfig) dp.doView(id);
maps.add(mc);
}
((ReportConfig) getContent()).setMappingconfigs(maps);
}
public Map getCreatReportParams(Map params, ParamsTable paramstable,
JRParameter[] p) {// paramstable里参数类型转化成符合JRParameter的类型,返回创建报表所需的参数Map(用于直接上传Jrxml产生的报表)
Map creatReportParams = new HashMap();
if (p == null || params == null || params.size() == 0 || p.length == 0)
return creatReportParams;
for (int i = 0; i < p.length; i++) {
if (params.containsKey(p[i].getName())) {
Class clazz = p[i].getValueClass();
if (paramstable.getParameter(p[i].getName()) != null
&& paramstable.getParameter(p[i].getName()).equals("")) {
continue;
}
if (clazz.equals(Double.class)) {
Double value = paramstable.getParameterAsDouble(p[i]
.getName());
creatReportParams.put(p[i].getName(), value);
} else if (clazz.equals(Integer.class)) {
Integer value = Integer.valueOf(paramstable
.getParameterAsString(p[i].getName()));
creatReportParams.put(p[i].getName(), value);
} else if (clazz.equals(String.class)) {
String value = paramstable.getParameterAsString(p[i]
.getName());
creatReportParams.put(p[i].getName(), value);
} else if (clazz.equals(java.util.Date.class)) {
java.util.Date value = paramstable.getParameterAsDate(p[i]
.getName());
creatReportParams.put(p[i].getName(), value);
} else if (clazz.equals(Timestamp.class)) {
java.util.Date date = paramstable.getParameterAsDate(p[i]
.getName());
Timestamp value = new Timestamp(date.getTime());
creatReportParams.put(p[i].getName(), value);
} else if (clazz.equals(java.sql.Date.class)) {
java.util.Date date = paramstable.getParameterAsDate(p[i]
.getName());
java.sql.Date value = new java.sql.Date(date.getTime());
creatReportParams.put(p[i].getName(), value);
}
}
}
return creatReportParams;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -