From 5e1670170c18cf31b8491e0609bf0178c29227f2 Mon Sep 17 00:00:00 2001
From: 6c <420680616@qq.com>
Date: 星期五, 31 十月 2025 09:32:00 +0800
Subject: [PATCH] Merge branch 'dev' of http://nonxin.cn:8090/r/product/product-server-report/V2.0.0 into dev
---
src/main/java/com/product/server/report/service/CommonReportService.java | 629 +++++++++++++++------------------------------------------
1 files changed, 165 insertions(+), 464 deletions(-)
diff --git a/src/main/java/com/product/server/report/service/CommonReportService.java b/src/main/java/com/product/server/report/service/CommonReportService.java
index f239244..9415869 100644
--- a/src/main/java/com/product/server/report/service/CommonReportService.java
+++ b/src/main/java/com/product/server/report/service/CommonReportService.java
@@ -1,6 +1,5 @@
package com.product.server.report.service;
-import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson.JSONObject;
@@ -14,9 +13,7 @@
import com.product.core.spring.context.SpringMVCContextHolder;
import com.product.server.report.config.CmnConst;
import com.product.server.report.entity.ReportColumn;
-import com.product.server.report.entity.ReportEntity;
import com.product.util.BaseUtil;
-import com.product.util.SystemParamReplace;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -34,91 +31,49 @@
@Autowired
private DataListReportService dataListReportService;
- /**
- * 鎶ヨ〃-瑙f瀽
- *
- * @param recordDte 涓氬姟鏁版嵁dte
- * @param totalStatisticsFlag 鏄惁鍚堣鏍囪瘑
- * @param reportConfigMap 鎶ヨ〃閰嶇疆缂撳瓨map
- * @param tableStyle
- * @return
- */
- public ReportEntity getReportEntity(DataTableEntity recordDte, String totalName, Map<Integer, List<JSONObject>> reportConfigMap) {
- ReportEntity report = null;
- Map<String, Set<String>> headAndTailTitleDataMap = Maps.newHashMap();
- // 鏁版嵁鍖�
- report = getDataArea(reportConfigMap, headAndTailTitleDataMap, recordDte, totalName);
-
- int totalColCount = reportConfigMap.get(0).size();
-
- // 澶撮儴鏍囬鍖�
- List<List<ReportColumn>> headTitleRows = null;
- if (!reportConfigMap.get(1).isEmpty()) {
- headTitleRows = dataListReportService.getTitle(reportConfigMap.get(1), totalColCount, headAndTailTitleDataMap, "head");
- }
- // 搴曢儴鏍囬鍖�
- List<List<ReportColumn>> tailTitleRows = null;
- if (!reportConfigMap.get(3).isEmpty()) {
- tailTitleRows = dataListReportService.getTitle(reportConfigMap.get(3), totalColCount, headAndTailTitleDataMap, "tail");
- }
-
- if (!CollectionUtil.isEmpty(headTitleRows)) {
- List<List<ReportColumn>> reportHeader = report.getReportHeader();
- headTitleRows.addAll(reportHeader);
- report.setReportHeader(headTitleRows);
- }
- if (!CollectionUtil.isEmpty(tailTitleRows)) {
- report.setReportTail(tailTitleRows);
- }
-
-
- return report;
- }
/**
* 鎶ヨ〃-瑙f瀽
*
- * @param recordDte 涓氬姟鏁版嵁dte
- * @param totalStatisticsFlag 鏄惁鍚堣鏍囪瘑
- * @param reportConfigMap 鎶ヨ〃閰嶇疆缂撳瓨map
- * @param tableStyle
+ * @param recordDte 涓氬姟鏁版嵁dte
+ * @param totalName 鎬昏鍚嶇О
+ * @param reportConfigMap 鎶ヨ〃閰嶇疆缂撳瓨map
+ * @param unpivotInfoContainer 琛屽垪杞崲淇℃伅
* @return
*/
- public JSONObject getReport(DataTableEntity recordDte, String totalName, Map<Integer, List<JSONObject>> reportConfigMap, StringBuilder tableStyle) {
- StringBuilder reportHtml = new StringBuilder(4096);
-
- // css
- StringBuilder cssHtml = dataListReportService.getCssHtml();
+ public List<List<ReportColumn>>[] getReport(DataTableEntity recordDte, String totalName, Map<Integer, List<JSONObject>> reportConfigMap, Collection<String> unpivotInfoContainer) {
+ List<List<ReportColumn>>[] reportColumnList = new List[]{new ArrayList(), new ArrayList(), new ArrayList()};
// 鏁版嵁鍖�
Map<String, Set<String>> headAndTailTitleDataMap = Maps.newHashMap();
- String dataAreaHtml = getDataAreaHtml(reportConfigMap, headAndTailTitleDataMap, recordDte, totalName);
-
- int totalColCount = reportConfigMap.get(0).size();
+ List<List<ReportColumn>> reportRows = getDataArea(reportConfigMap, headAndTailTitleDataMap, recordDte, totalName, unpivotInfoContainer);
+ int totalColCount = reportConfigMap.get(0).size() + unpivotInfoContainer.size() - 1;
// 澶撮儴鏍囬鍖�
- StringBuilder headTitleHtml = null;
if (!reportConfigMap.get(1).isEmpty()) {
- headTitleHtml = dataListReportService.getTitleHtml(reportConfigMap.get(1), totalColCount, headAndTailTitleDataMap, "head");
+ reportColumnList[0] = (dataListReportService.getTitleRows(reportConfigMap.get(1), totalColCount, headAndTailTitleDataMap, "head"));
}
-
+ //濡傛灉reportRows 琛屾暟澶т簬0灏嗙涓�琛岀殑鏁版嵁鏀惧叆澶撮儴鏍囬鍖�
+ if (reportRows.size() >= 0) {
+ reportColumnList[0].add(reportRows.get(0));
+ reportRows.remove(0);
+ }
+ reportColumnList[1] = reportRows;
// 搴曢儴鏍囬鍖�
- StringBuilder tailTitleHtml = null;
if (!reportConfigMap.get(3).isEmpty()) {
- tailTitleHtml = dataListReportService.getTitleHtml(reportConfigMap.get(3), totalColCount, headAndTailTitleDataMap, "tail");
+ reportColumnList[2] = (dataListReportService.getTitleRows(reportConfigMap.get(3), totalColCount, headAndTailTitleDataMap, "tail"));
}
- reportHtml.append("\n<body>\n<table class=\"report_main\"").append(tableStyle).append(">")
- .append(cssHtml)
- .append(headTitleHtml == null ? "" : headTitleHtml)
- .append(dataAreaHtml)
- .append(tailTitleHtml == null ? "" : tailTitleHtml)
- .append("\n</table>\n</body>");
-
- JSONObject resultObj = new JSONObject();
- resultObj.put(CmnConst.RETURN_ATTR_RESULT, true);
- resultObj.put(CmnConst.RETURN_ATTR_MESSAGE, "鑾峰彇鎶ヨ〃鎴愬姛锛�");
- resultObj.put(CmnConst.RETURN_ATTR_HTML, reportHtml);
- return resultObj;
+// reportHtml.append("\n<body>\n<table class=\"report_main\"").append(tableStyle).append(">")
+// .append(headTitleHtml == null ? "" : headTitleHtml)
+// .append(dataAreaHtml)
+// .append(tailTitleHtml == null ? "" : tailTitleHtml)
+// .append("\n</table>\n</body>");
+//
+// JSONObject resultObj = new JSONObject();
+// resultObj.put(CmnConst.RETURN_ATTR_RESULT, true);
+// resultObj.put(CmnConst.RETURN_ATTR_MESSAGE, "鑾峰彇鎶ヨ〃鎴愬姛锛�");
+// resultObj.put(CmnConst.RETURN_ATTR_HTML, reportHtml);
+ return reportColumnList;
}
/**
@@ -130,7 +85,8 @@
* @param totalName 鎬昏鍚嶇О锛岄潪绌�-闇�瑕佹�昏
* @return
*/
- private String getDataAreaHtml(Map<Integer, List<JSONObject>> reportConfigMap, Map<String, Set<String>> headAndTailTitleDataMap, DataTableEntity recordDte, String totalName) {
+ private List<List<ReportColumn>> getDataArea(Map<Integer, List<JSONObject>> reportConfigMap, Map<String, Set<String>> headAndTailTitleDataMap, DataTableEntity recordDte, String totalName, Collection<String> unpivotInfoContainer) {
+ List<List<ReportColumn>> reportColumnList = Lists.newArrayList();
// 鏁版嵁鍖哄瓧娈电紦瀛榤ap
Map<String, JSONObject> dataAreaFieldConfigMap = dataListReportService.groupAndDataJSONObject2Map(reportConfigMap.get(0));
// 鑾峰彇鎸囧畾鏁版嵁闆嗕腑鍖呭惈鐨勬暟鎹尯瀛楁闆嗗悎
@@ -140,353 +96,42 @@
// 缁熻map
Map<JSONObject, JSONObject> statisticsMap = Maps.newLinkedHashMap();
- StringBuilder dataAreaHtml = new StringBuilder(1024);
- // 鏍囬
- dataAreaHtml.append(getDataAreaTitleHtml(dataAreaFieldConfigMap));
- // 鍐呭
- dataAreaHtml.append(getDataAreaDataHtml(dataAreaFieldConfigMap, recordDte, headAndTailTitleDataMap, headAndTailFieldSet, statisticsMap, totalName));
- return dataAreaHtml.toString();
- }
-
- private ReportEntity getDataArea(Map<Integer, List<JSONObject>> reportConfigMap, Map<String, Set<String>> headAndTailTitleDataMap, DataTableEntity recordDte, String totalName) {
- // 鏁版嵁鍖哄瓧娈电紦瀛榤ap
- Map<String, JSONObject> dataAreaFieldConfigMap = dataListReportService.groupAndDataJSONObject2Map(reportConfigMap.get(0));
- // 鑾峰彇鎸囧畾鏁版嵁闆嗕腑鍖呭惈鐨勬暟鎹尯瀛楁闆嗗悎
- Set<String> headAndTailFieldSet = Sets.newHashSet();
- headAndTailFieldSet.addAll(dataListReportService.getDataFields(reportConfigMap.get(1)));
- headAndTailFieldSet.addAll(dataListReportService.getDataFields(reportConfigMap.get(3)));
- // 缁熻map
- Map<JSONObject, JSONObject> statisticsMap = Maps.newLinkedHashMap();
- List<ReportColumn> reportHeader = getReportHeader(dataAreaFieldConfigMap);
- List<List<ReportColumn>> reportData = getReportData(dataAreaFieldConfigMap, recordDte, headAndTailTitleDataMap, headAndTailFieldSet, statisticsMap, totalName);
- ReportEntity report = new ReportEntity();
- report.addReportHeader(reportHeader);
- report.setReportData(reportData);
- return report;
- }
-
- private List<ReportColumn> getReportHeader(Map<String, JSONObject> dataAreaFieldConfigMap) {
- if (CollectionUtil.isEmpty(dataAreaFieldConfigMap)) {
- return null;
+ // 灏嗚鍒楄浆鎹㈢殑淇℃伅娣诲姞鍒版暟鎹尯瀛楁缂撳瓨map閲岄潰
+ Map<String, JSONObject> newDataAreaFieldConfigMap = Maps.newLinkedHashMap();
+ int x = 0;
+ if (!unpivotInfoContainer.isEmpty()) {
+ for (Map.Entry<String, JSONObject> entry : dataAreaFieldConfigMap.entrySet()) {
+ String fieldName = entry.getKey();
+ JSONObject fieldConfigObj = entry.getValue();
+ if (fieldConfigObj.getIntValue(CmnConst.IS_UNPIVOT) == 1) {
+ x = fieldConfigObj.getIntValue(CmnConst.ATTR_X);
+ fieldConfigObj.put(CmnConst.IS_UNPIVOT, 0);
+ fieldConfigObj.put(CmnConst.ATTR_IS_CUSTOM_FIELD, 0);
+ for (String unpivotField : unpivotInfoContainer) {
+ JSONObject newFieldConfigObj = new JSONObject();
+ newFieldConfigObj.putAll(fieldConfigObj);
+ newFieldConfigObj.put(CmnConst.ATTR_X, ++x);
+ newFieldConfigObj.put(CmnConst.ATTR_SHOW_NAME, newFieldConfigObj.getString(CmnConst.ATTR_SHOW_NAME).replace("{#unpivot_name#}", unpivotField));
+ newDataAreaFieldConfigMap.put(unpivotField, newFieldConfigObj);
+ }
+ } else {
+ if (x > fieldConfigObj.getIntValue(CmnConst.ATTR_X)) {
+ fieldConfigObj.put(CmnConst.ATTR_X, ++x);
+ }
+ newDataAreaFieldConfigMap.put(fieldName, fieldConfigObj);
+ }
+ }
+ } else {
+ newDataAreaFieldConfigMap = dataAreaFieldConfigMap;
}
- List<ReportColumn> reportColumnList = new ArrayList<>();
- dataAreaFieldConfigMap.forEach((k, v) -> {
- ReportColumn column = new ReportColumn();
- column.setContent(v.getString(CmnConst.ATTR_SHOW_NAME));
- column.setColumnWidth(NumberUtil.isNumber(v.getString(CmnConst.ATTR_WIDTH)) ? NumberUtil.parseInt(v.getString(CmnConst.ATTR_WIDTH)) : 0);
- reportColumnList.add(column);
- });
+
+ // 鏍囬
+ reportColumnList.add(getDataAreaTitle(newDataAreaFieldConfigMap));
+ // 鍐呭
+ List<List<ReportColumn>> dataAreaData = getDataAreaData(newDataAreaFieldConfigMap, recordDte, headAndTailTitleDataMap, headAndTailFieldSet, statisticsMap, totalName);
+ reportColumnList.addAll(dataAreaData);
return reportColumnList;
}
-
- private List<List<ReportColumn>> getReportData(Map<String, JSONObject> dataAreaFieldConfigMap, DataTableEntity recordDte, Map<String, Set<String>> headAndTailTitleDataMap, Set<String> headAndTailFieldSet, Map<JSONObject, JSONObject> statisticsMap, String totalName) {
- List<List<ReportColumn>> reportData = new ArrayList<>();
- // 鏁版嵁鍖哄垎缁勭粺璁″瓧娈靛悕绉發ist
- List<String> dataAreaGroupStatisticsFieldNameList = Lists.newArrayList();
- // 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
- List<String> dataAreaGroupFieldNameList = Lists.newArrayList();
- dataAreaFieldConfigMap.forEach((dataAreaFieldName, dataAreaFieldConfigObj) -> {
- if ("1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_GROUP))) {
- dataAreaGroupFieldNameList.add(dataAreaFieldName);
- if ("1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_STATISTICS))) {
- dataAreaGroupStatisticsFieldNameList.add(dataAreaFieldName);
- }
- }
- });
-
- FieldSetEntity recordFse;
- FieldSetEntity preFse = null;
- String dataAreaFieldName;
- JSONObject dataAreaFieldConfigObj;
- String value;
- JSONObject keyObj;
- Map<String, String> replaceMap = Maps.newHashMap();
- Map<String, String> dataAreaClosestGroupStatisticsFieldValueMap = Maps.newHashMap();
- Map<String, String> dataAreaClosestGroupFieldValueMap = Maps.newHashMap();
- String closestGroupStatisticsFieldName = null;
- String closestGroupFieldName = null;
- String tempFieldName;
- String paramKey;
- boolean combineFlag;
- JSONObject dataAreaGroupFieldRecordObj = new JSONObject();
- for (int i = 0; i < recordDte.getRows(); i++) {
- recordFse = recordDte.getFieldSetEntity(i);
- // 鑾峰彇澶撮儴銆佸熬閮ㄦ爣棰樺尯鏁版嵁瀛楁
- dataListReportService.getHeadAndTailTitleDataMap(headAndTailTitleDataMap, headAndTailFieldSet, recordFse);
-
- combineFlag = true;
-
- List<ReportColumn> columns = new ArrayList<>();
- for (Map.Entry<String, JSONObject> entry : dataAreaFieldConfigMap.entrySet()) {
- ReportColumn column = new ReportColumn();
- dataAreaFieldName = entry.getKey();
- dataAreaFieldConfigObj = entry.getValue();
- value = dataListReportService.getValue(dataAreaFieldConfigObj, recordFse, dataAreaFieldName);
- // 鑻ユ槸鑷畾涔夊瓧娈碉紝鍒欐斁鍏ヤ笟鍔℃暟鎹褰曚腑
- if ("1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_CUSTOM_FIELD))) {
- recordFse.setValue(dataAreaFieldName, value);
- }
- if (dataAreaGroupFieldNameList.contains(dataAreaFieldName)) {
- int curFieldIndex = dataAreaGroupFieldNameList.indexOf(dataAreaFieldName);
- // 璁板綍鍒嗙粍瀛楁
- recordDataAreaGroupField(dataAreaGroupFieldRecordObj, dataAreaGroupFieldNameList, curFieldIndex, recordFse);
-
- // 鍒嗙粍鍚堝瓧娈靛苟
- closestGroupFieldName = dataAreaFieldName;
- if (preFse != null && combineFlag) {
- if (value.equals(dataAreaClosestGroupFieldValueMap.get(closestGroupFieldName))) {
- dealReplaceMapAddRowspan(replaceMap, dataAreaGroupFieldNameList.subList(0, curFieldIndex + 1), preFse, true);
- continue;
- } else {
- combineFlag = false;
- }
- }
- dataAreaClosestGroupFieldValueMap.put(dataAreaFieldName, value);
- }
- // 鍒嗙粍缁熻
- if (dataAreaGroupStatisticsFieldNameList.contains(dataAreaFieldName)) {
- int minK = dataAreaGroupStatisticsFieldNameList.size();
- for (int j = 0; j < dataAreaGroupStatisticsFieldNameList.size(); j++) {
- tempFieldName = dataAreaGroupStatisticsFieldNameList.get(j);
- if (!StringUtils.isEmpty(dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName)) && !recordFse.getString(tempFieldName).equals(dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName))) {
- minK = j;
- break;
- }
- }
- for (int k = dataAreaGroupStatisticsFieldNameList.size() - 1; k >= minK; k--) {
- tempFieldName = dataAreaGroupStatisticsFieldNameList.get(k);
- if (preFse != null && dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName) != null) {
- reportData.add(getDataAreaGroupStatisticsFieldStatisticsRow(dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName), statisticsMap, dataAreaFieldConfigMap, tempFieldName, preFse, dataAreaGroupFieldNameList, replaceMap, dataAreaGroupFieldRecordObj));
- dataAreaClosestGroupStatisticsFieldValueMap.remove(tempFieldName);
- }
- }
- closestGroupStatisticsFieldName = dataAreaFieldName;
- dataAreaClosestGroupStatisticsFieldValueMap.put(dataAreaFieldName, value);
- }
- // 闈炲垎缁勭粺璁″瓧娈碉紙鏅��+鑷畾涔夛級
- if (!"1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_GROUP)) && !StringUtils.isEmpty(dataAreaFieldConfigObj.getString(CmnConst.ATTR_STATISTICS))) {
- addStatisticsRowInfo(statisticsMap, dataAreaGroupStatisticsFieldNameList, recordFse, dataAreaFieldConfigObj, dataAreaFieldName, value);
- }
- // 鑷畾涔夌粺璁″瓧娈碉紙鏈寚瀹氱粺璁$被鍨嬶紝浣跨敤鍩虹瀛楁鍏紡杩涜璁$畻锛�
- if ("1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_CUSTOM_FIELD))
- && StringUtils.isEmpty(dataAreaFieldConfigObj.getString(CmnConst.ATTR_STATISTICS))
- && !StringUtils.isEmpty(dataAreaFieldConfigObj.getString(CmnConst.ATTR_FORMULA))) {
- String formula = dataAreaFieldConfigObj.getString(CmnConst.ATTR_FORMULA);
- List<String> formFieldList = dataListReportService.getSuitContent(formula, CmnConst.REGEXP_FORM_FIELD);
- Map<String, String> formulaMap = Maps.newHashMap();
- boolean statisticsFlag = true;
- JSONObject tempObj;
- for (String formFieldInfo : formFieldList) {
- tempObj = dataAreaFieldConfigMap.get(dataListReportService.fieldInfo2FieldName(formFieldInfo));
- if (tempObj == null || StringUtils.isEmpty(tempObj.getString(CmnConst.ATTR_STATISTICS))) {
- statisticsFlag = false;
- break;
- }
- formulaMap.put(formFieldInfo, tempObj.getString(CmnConst.ATTR_STATISTICS));
- }
- if (statisticsFlag) {
- addStatisticsRowInfo(statisticsMap, dataAreaGroupStatisticsFieldNameList, recordFse, dataAreaFieldConfigObj, dataAreaFieldName, value, formulaMap);
- }
- }
- if ("1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_GROUP))) {
- keyObj = new JSONObject();
- for (String dataAreaGroupFieldName : dataAreaGroupFieldNameList) {
- keyObj.put(dataAreaGroupFieldName, recordFse.getString(dataAreaGroupFieldName));
- if (dataAreaGroupFieldName.equals(dataAreaFieldName)) {
- keyObj.put(CmnConst.ATTR_FIELD_INFO, dataListReportService.fieldName2FieldInfo(dataAreaGroupFieldName));
- break;
- }
- }
- paramKey = dataListReportService.concat(keyObj, CmnConst.ATTR_ROWSPAN);
- column.setRowspan(NumberUtil.parseInt(paramKey));
- replaceMap.put(paramKey, "1");
- }
- // class
- if (!StringUtils.isEmpty(dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL))) {
- //瀛愭姤琛�
- String url = dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL);
- url = SystemParamReplace.replaceParams(url, recordFse);
- column.setSubReport("true".equals(dataAreaFieldConfigObj.getString("~isSubReport~")));
- if (!column.isSubReport()) {
- column.setPenetrate(true);
- column.setPenetrateProperty(url);
- } else {
- column.setSubReportProperty(url);
- }
- }
- String attrValue = recordFse.getString(dataAreaFieldName + CmnConst.PROMPT_REAL_VALUE_TAIL);
- if (StringUtils.isEmpty(attrValue)) {
- attrValue = recordFse.getString(dataAreaFieldName);
- }
- column.addProperty(dataAreaFieldName, attrValue);
- // 鏍煎紡
- value = dataListReportService.formatValue(dataAreaFieldConfigObj, value);
- column.setContent(value);
- columns.add(column);
- }
- reportData.add(columns);
- preFse = recordFse;
- }
-
- // 琛ュ叏鏈熬缁熻
- if (!StringUtils.isEmpty(closestGroupStatisticsFieldName)) {
- int maxK = -1;
- for (int j = 0; j < dataAreaGroupStatisticsFieldNameList.size(); j++) {
- tempFieldName = dataAreaGroupStatisticsFieldNameList.get(j);
- if (closestGroupStatisticsFieldName.equals(tempFieldName)) {
- maxK = j;
- }
- }
- for (int k = maxK; k >= 0; k--) {
- tempFieldName = dataAreaGroupStatisticsFieldNameList.get(k);
- if (preFse != null) {
- reportData.add(getDataAreaGroupStatisticsFieldStatisticsRow(dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName), statisticsMap, dataAreaFieldConfigMap, tempFieldName, preFse, dataAreaGroupFieldNameList, replaceMap, dataAreaGroupFieldRecordObj));
- }
- }
- }
-
- // 鎬昏
- if (!StringUtils.isEmpty(totalName)) {
- reportData.add(getDataAreaTotalStatistics(statisticsMap, dataAreaFieldConfigMap, dataAreaGroupFieldNameList, preFse, dataAreaGroupFieldRecordObj, totalName));
- }
- for (Map.Entry<String, String> entry : replaceMap.entrySet()) {
- reportData.stream().forEach(item -> {
- item.stream().forEach(column -> {
- column.replace(entry.getKey(), entry.getValue());
- });
- });
- }
-
- return reportData;
- }
-
- /**
- * 鑾峰彇鎬昏琛�
- *
- * @param statisticsMap 缁熻map
- * @param dataAreaFieldConfigMap 鏁版嵁鍖哄瓧娈电紦瀛榤ap
- * @param dataAreaGroupFieldNameList 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
- * @param preFse 鏈�杩戞搷浣滅殑鏁版嵁fse
- * @param dataAreaGroupFieldRecordObj 鏁版嵁鍖哄垎缁勫瓧娈佃褰昽bj
- * @param totalName 鎬昏鍚嶇О
- * @return
- */
- private List<ReportColumn> getDataAreaTotalStatistics(Map<JSONObject, JSONObject> statisticsMap, Map<String, JSONObject> dataAreaFieldConfigMap, List<String> dataAreaGroupFieldNameList, FieldSetEntity preFse, JSONObject dataAreaGroupFieldRecordObj, String totalName) {
- List<ReportColumn> columns = new ArrayList<>();
-// StringBuilder html = new StringBuilder(512);
- String dataAreaFieldName;
- JSONObject dataAreaFieldConfigObj;
- String value;
- JSONObject keyObj = new JSONObject();
- String statisticsType;
-// html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_STATISTICS).append("\">\n ");
- if (preFse == null) {
- return null;
- }
- int index = 0;
- for (Map.Entry<String, JSONObject> entry : dataAreaFieldConfigMap.entrySet()) {
- ReportColumn column = new ReportColumn();
- index++;
- dataAreaFieldName = entry.getKey();
- if (!dataAreaGroupFieldNameList.contains(dataAreaFieldName)) {
- dataAreaFieldConfigObj = entry.getValue();
- statisticsType = dataAreaFieldConfigObj.getString(CmnConst.ATTR_STATISTICS);
- keyObj.put(CmnConst.ATTR_FIELD_INFO, dataAreaFieldConfigObj.getString(CmnConst.ATTR_FIELD_INFO));
- if ((!"1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_CUSTOM_FIELD)) && StringUtils.isEmpty(statisticsType)) || statisticsMap.get(keyObj) == null) {
- value = "";
- } else {
- JSONObject valueObj = statisticsMap.get(keyObj);
- if (StringUtils.isEmpty(statisticsType)) {
- statisticsType = CmnConst.ATTR_STATISTICS_DEFAULT;
- }
- if (CmnConst.ATTR_STATISTICS_AVG.equals(statisticsType) && "1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_AVG_TYPE))) {
- int subCnt = dataAreaGroupFieldRecordObj.size();
- valueObj.put(CmnConst.ATTR_STATISTICS_SUB_CNT, subCnt);
- dataListReportService.getAvgValue(valueObj, dataAreaFieldConfigObj, false);
- }
- value = valueObj.getString(statisticsType);
- }
- // 鏍煎紡
- value = dataListReportService.formatValue(dataAreaFieldConfigObj, value);
- column.setContent(value);
-// html.append("<td>").append(value == null ? "" : value).append("</td>");
- } else {
- if (index == 1) {
- column.setColspan(dataAreaGroupFieldNameList.size());
- column.setContent(totalName);
-// html.append("<td colspan=\"").append(dataAreaGroupFieldNameList.size()).append("\">").append(totalName).append("</td>");
- }
- }
- columns.add(column);
- }
-// html.append("\n</tr>");
- return columns;
- }
-
- private List<ReportColumn> getDataAreaGroupStatisticsFieldStatisticsRow(String waitStatisticsValue, Map<JSONObject, JSONObject> statisticsMap, Map<String, JSONObject> dataAreaFieldConfigMap,
- String tempFieldName, FieldSetEntity recordFse, List<String> dataAreaGroupFieldNameList, Map<String, String> replaceMap, JSONObject dataAreaGroupFieldRecordObj) {
- List<ReportColumn> columns = new ArrayList<>();
-// StringBuilder html = new StringBuilder();
-// html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_STATISTICS).append("\">\n ");
- String dataAreaFieldName;
- JSONObject dataAreaFieldConfigObj;
- boolean flag = false;
- JSONObject keyObj = new JSONObject();
- String value;
- String statisticsType;
- int index = 0;
- List<String> needAddRowspanDataAreaGroupFieldNameList = Lists.newArrayList();
- for (Map.Entry<String, JSONObject> entry : dataAreaFieldConfigMap.entrySet()) {
- ReportColumn column = new ReportColumn();
- index++;
- dataAreaFieldName = entry.getKey();
- if (!flag) {
- if (dataAreaGroupFieldNameList.contains(dataAreaFieldName)) {
- keyObj.put(dataAreaFieldName, recordFse.getString(dataAreaFieldName));
- if (dataAreaFieldName.equals(tempFieldName)) {
- column.setColspan(dataAreaGroupFieldNameList.size() - index + 1);
- column.setContent(waitStatisticsValue + CmnConst.STATISTICS_NAME);
- }
- if (!flag) {
- needAddRowspanDataAreaGroupFieldNameList.add(dataAreaFieldName);
- }
- }
- } else {
- dataAreaFieldConfigObj = entry.getValue();
- statisticsType = dataAreaFieldConfigObj.getString(CmnConst.ATTR_STATISTICS);
- if (!"1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_CUSTOM_FIELD)) && StringUtils.isEmpty(statisticsType)) {
- if (!"1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_GROUP))) {
-// html.append("<td></td>");
- }
- } else {
- keyObj.put(CmnConst.ATTR_FIELD_INFO, dataListReportService.fieldName2FieldInfo(dataAreaFieldName));
- if (statisticsMap.get(keyObj) == null) {
- value = "";
- } else {
- JSONObject valueObj = statisticsMap.get(keyObj);
- if (StringUtils.isEmpty(statisticsType)) {
- statisticsType = CmnConst.ATTR_STATISTICS_DEFAULT;
- }
- if (CmnConst.ATTR_STATISTICS_AVG.equals(statisticsType) && "1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_AVG_TYPE))) {
- int subCnt = getAimSubCnt(keyObj, dataAreaGroupFieldNameList, dataAreaGroupFieldRecordObj);
- valueObj.put(CmnConst.ATTR_STATISTICS_SUB_CNT, subCnt);
- dataListReportService.getAvgValue(valueObj, dataAreaFieldConfigObj, false);
- }
- value = valueObj.getString(statisticsType);
- }
- // 鏍煎紡
- value = dataListReportService.formatValue(dataAreaFieldConfigObj, value);
- column.setContent(value);
-// html.append("<td>").append(value == null ? "" : value).append("</td>");
- }
- }
- columns.add(column);
- }
-// html.append("\n</tr>");
- dealReplaceMapAddRowspan(replaceMap, needAddRowspanDataAreaGroupFieldNameList, recordFse, false);
- return null;
- }
-
/**
* 鑾峰彇鏍囬
@@ -494,14 +139,20 @@
* @param dataAreaFieldConfigMap 鏁版嵁鍖哄瓧娈电紦瀛榤ap
* @return
*/
- private StringBuilder getDataAreaTitleHtml(Map<String, JSONObject> dataAreaFieldConfigMap) {
- StringBuilder html = new StringBuilder(256);
- html.append("<tr class=\"").append(CmnConst.CLASS_TR_DATA_TITLE).append("\">");
+ private List<ReportColumn> getDataAreaTitle(Map<String, JSONObject> dataAreaFieldConfigMap) {
+ List<ReportColumn> columnRow = new ArrayList<>();
dataAreaFieldConfigMap.forEach((dataAreaFieldName, dataAreaFieldConfigObj) -> {
- html.append("<td>").append(dataListReportService.dealTdWidth(dataAreaFieldConfigObj, dataAreaFieldConfigObj.getString(CmnConst.ATTR_SHOW_NAME))).append("</td>");
+ ReportColumn column = new ReportColumn();
+ column.setContent(dataAreaFieldConfigObj.getString(CmnConst.ATTR_SHOW_NAME));
+ String width = dataAreaFieldConfigObj.getString(CmnConst.ATTR_WIDTH);
+ //鍒ゆ柇瀹藉害鏄惁涓虹┖骞朵笖鏄暟瀛楋紙姝f暣鏁板拰灏忔暟閮藉彲浠ワ級
+ if (StringUtils.isNotBlank(width) && width.matches("^[0-9]+(.[0-9]+)?$")) {
+ //灏嗗搴﹁浆鎹负double绫诲瀷
+ column.setColumnWidth(NumberUtil.parseInt(width));
+ }
+ columnRow.add(column);
});
- html.append("</tr>");
- return html;
+ return columnRow;
}
/**
@@ -514,7 +165,8 @@
* @param totalName 鎬昏鍚嶇О
* @return
*/
- private String getDataAreaDataHtml(Map<String, JSONObject> dataAreaFieldConfigMap, DataTableEntity recordDte, Map<String, Set<String>> headAndTailTitleDataMap, Set<String> headAndTailFieldSet, Map<JSONObject, JSONObject> statisticsMap, String totalName) {
+ private List<List<ReportColumn>> getDataAreaData(Map<String, JSONObject> dataAreaFieldConfigMap, DataTableEntity recordDte, Map<String, Set<String>> headAndTailTitleDataMap, Set<String> headAndTailFieldSet, Map<JSONObject, JSONObject> statisticsMap, String totalName) {
+ List<List<ReportColumn>> reportColumnList = Lists.newArrayList();
// 鏁版嵁鍖哄垎缁勭粺璁″瓧娈靛悕绉發ist
List<String> dataAreaGroupStatisticsFieldNameList = Lists.newArrayList();
// 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
@@ -528,8 +180,9 @@
}
});
- StringBuilder dataAreaDataHtml = new StringBuilder(1024);
- StringBuilder curRowHtml = new StringBuilder(256);
+// StringBuilder dataAreaDataHtml = new StringBuilder(1024);
+// StringBuilder curRowHtml = new StringBuilder(256);
+ List<ReportColumn> curRowColumn = new ArrayList<>();
FieldSetEntity recordFse;
FieldSetEntity preFse = null;
String dataAreaFieldName;
@@ -544,15 +197,18 @@
String tempFieldName;
String paramKey;
boolean combineFlag;
+ ReportColumn currentColumn = new ReportColumn();
JSONObject dataAreaGroupFieldRecordObj = new JSONObject();
for (int i = 0; i < recordDte.getRows(); i++) {
recordFse = recordDte.getFieldSetEntity(i);
// 鑾峰彇澶撮儴銆佸熬閮ㄦ爣棰樺尯鏁版嵁瀛楁
dataListReportService.getHeadAndTailTitleDataMap(headAndTailTitleDataMap, headAndTailFieldSet, recordFse);
- curRowHtml.setLength(0);
+// curRowHtml.setLength(0);
+ curRowColumn = new ArrayList<>();
+
String rowUuid = IdUtil.simpleUUID();
- curRowHtml.append("\n<tr rowIndex=\"" + (i + 1) + "\" id=\"" + rowUuid + "\" class=\"").append(CmnConst.CLASS_TR_DATA_COMMON).append("\">\n ");
+// curRowHtml.append("\n<tr rowIndex=\"" + (i + 1) + "\" id=\"" + rowUuid + "\" class=\"").append(CmnConst.CLASS_TR_DATA_COMMON).append("\">\n ");
combineFlag = true;
for (Map.Entry<String, JSONObject> entry : dataAreaFieldConfigMap.entrySet()) {
dataAreaFieldName = entry.getKey();
@@ -592,7 +248,7 @@
for (int k = dataAreaGroupStatisticsFieldNameList.size() - 1; k >= minK; k--) {
tempFieldName = dataAreaGroupStatisticsFieldNameList.get(k);
if (preFse != null && dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName) != null) {
- dataAreaDataHtml.append(getDataAreaGroupStatisticsFieldStatisticsRowHtml(dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName), statisticsMap, dataAreaFieldConfigMap, tempFieldName, preFse, dataAreaGroupFieldNameList, replaceMap, dataAreaGroupFieldRecordObj));
+ reportColumnList.add(getDataAreaGroupStatisticsFieldStatisticsRow(dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName), statisticsMap, dataAreaFieldConfigMap, tempFieldName, preFse, dataAreaGroupFieldNameList, replaceMap, dataAreaGroupFieldRecordObj));
dataAreaClosestGroupStatisticsFieldValueMap.remove(tempFieldName);
}
}
@@ -634,28 +290,55 @@
}
}
paramKey = dataListReportService.concat(keyObj, CmnConst.ATTR_ROWSPAN);
- curRowHtml.append("<td rowspan=\"").append(paramKey).append("\"");
+// curRowHtml.append("<td rowspan=\"").append(paramKey).append("\"");
+ currentColumn.setRowspan(paramKey);
replaceMap.put(paramKey, "1");
- } else {
- curRowHtml.append("<td");
}
+// else {
+// curRowHtml.append("<td");
+// }
// class
if (!StringUtils.isEmpty(dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL))) {
- curRowHtml.append(" class=\"").append(CmnConst.CLASS_TD_CAN_TURN).append("true".equals(dataAreaFieldConfigObj.getString("~isSubReport~")) ? "\"skipSubReport=true" : "\"").append(" router=\"").append(dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL)).append("\"");
+ currentColumn.setSubReport("true".equals(dataAreaFieldConfigObj.getString("~isSubReport~")));
+ if (!currentColumn.isSubReport()) {
+ currentColumn.setPenetrate(true);
+ currentColumn.setPenetrateProperty(dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL));
+ } else {
+ currentColumn.setSubReportProperty(dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL));
+ }
+// curRowHtml.append(" class=\"").append(CmnConst.CLASS_TD_CAN_TURN).append("true".equals(dataAreaFieldConfigObj.getString("~isSubReport~")) ? "\"skipSubReport=true" : "\"").append(" router=\"").append(dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL)).append("\"");
}
String attrValue = recordFse.getString(dataAreaFieldName + CmnConst.PROMPT_REAL_VALUE_TAIL);
if (StringUtils.isEmpty(attrValue)) {
attrValue = recordFse.getString(dataAreaFieldName);
}
- curRowHtml.append(" ").append(dataAreaFieldName).append("=\"").append(attrValue).append("\"");
- curRowHtml.append(">");
+ if (!dataAreaFieldName.matches("\\d+")) {
+ currentColumn.addProperty(dataAreaFieldName, attrValue);
+// curRowHtml.append(" ").append(dataAreaFieldName).append("=\"").append(attrValue).append("\"");
+ }
+ // 瑙f瀽绌块�忓弬鏁�
+ String urlParam = dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL_PARAM);
+ String attrParam;
+ if (!StringUtils.isEmpty(urlParam)) {
+ List<String> suitFieldList = BaseUtil.getSuitContent(urlParam, "\\{#\\w+#\\}");
+ for (String singleSuitFieldName : suitFieldList) {
+ attrParam = singleSuitFieldName.substring(2, singleSuitFieldName.length() - 2);
+ currentColumn.addProperty(attrParam, recordFse.getString(attrParam));
+// curRowHtml.append(" ").append(attrParam).append("=\"").append(recordFse.getString(attrParam)).append("\"");
+ }
+ }
+// curRowHtml.append(">");
// 鏍煎紡
value = dataListReportService.formatValue(dataAreaFieldConfigObj, value);
- curRowHtml.append(value == null ? "" : value);
- curRowHtml.append("</td>");
+// curRowHtml.append(value == null ? "" : value);
+// curRowHtml.append("</td>");
+ currentColumn.setContent(value);
+ curRowColumn.add(currentColumn);
+ currentColumn = new ReportColumn();
}
- curRowHtml.append("\n</tr>");
- dataAreaDataHtml.append(curRowHtml);
+// curRowHtml.append("\n</tr>");
+// dataAreaDataHtml.append(curRowHtml);
+ reportColumnList.add(curRowColumn);
preFse = recordFse;
}
@@ -671,22 +354,34 @@
for (int k = maxK; k >= 0; k--) {
tempFieldName = dataAreaGroupStatisticsFieldNameList.get(k);
if (preFse != null) {
- dataAreaDataHtml.append(getDataAreaGroupStatisticsFieldStatisticsRowHtml(dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName), statisticsMap, dataAreaFieldConfigMap, tempFieldName, preFse, dataAreaGroupFieldNameList, replaceMap, dataAreaGroupFieldRecordObj));
+ reportColumnList.add(getDataAreaGroupStatisticsFieldStatisticsRow(dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName), statisticsMap, dataAreaFieldConfigMap, tempFieldName, preFse, dataAreaGroupFieldNameList, replaceMap, dataAreaGroupFieldRecordObj));
}
}
}
// 鎬昏
if (!StringUtils.isEmpty(totalName)) {
- dataAreaDataHtml.append(getDataAreaTotalStatisticsHtml(statisticsMap, dataAreaFieldConfigMap, dataAreaGroupFieldNameList, preFse, dataAreaGroupFieldRecordObj, totalName));
+ List<ReportColumn> reportColumns = getDataAreaTotalStatisticsRow(statisticsMap, dataAreaFieldConfigMap, dataAreaGroupFieldNameList, preFse, dataAreaGroupFieldRecordObj, totalName);
+ if (reportColumns != null && reportColumns.size() > 0) {
+ reportColumnList.add(reportColumns);
+ }
+ }
+ //寰幆鎵�鏈夌殑column杩涜鍙傛暟鏇挎崲
+ for (List<ReportColumn> reportColumns : reportColumnList) {
+ if (reportColumns != null) {
+ for (ReportColumn reportColumn : reportColumns) {
+ if (reportColumn != null) {
+
+ for (Map.Entry<String, String> entry : replaceMap.entrySet()) {
+ reportColumn.replace(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+
+ }
}
- String str = dataAreaDataHtml.toString();
- for (Map.Entry<String, String> entry : replaceMap.entrySet()) {
- str = str.replace(entry.getKey(), entry.getValue());
- }
-
- return str;
+ return reportColumnList;
}
/**
@@ -775,10 +470,9 @@
* @param dataAreaGroupFieldRecordObj 鏁版嵁鍖哄垎缁勫瓧娈佃褰昽bj
* @return
*/
- private StringBuilder getDataAreaGroupStatisticsFieldStatisticsRowHtml(String waitStatisticsValue, Map<JSONObject, JSONObject> statisticsMap, Map<String, JSONObject> dataAreaFieldConfigMap,
- String tempFieldName, FieldSetEntity recordFse, List<String> dataAreaGroupFieldNameList, Map<String, String> replaceMap, JSONObject dataAreaGroupFieldRecordObj) {
- StringBuilder html = new StringBuilder();
- html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_STATISTICS).append("\">\n ");
+ private List<ReportColumn> getDataAreaGroupStatisticsFieldStatisticsRow(String waitStatisticsValue, Map<JSONObject, JSONObject> statisticsMap, Map<String, JSONObject> dataAreaFieldConfigMap,
+ String tempFieldName, FieldSetEntity recordFse, List<String> dataAreaGroupFieldNameList, Map<String, String> replaceMap, JSONObject dataAreaGroupFieldRecordObj) {
+ List<ReportColumn> columnRow = new ArrayList<>();
String dataAreaFieldName;
JSONObject dataAreaFieldConfigObj;
boolean flag = false;
@@ -794,8 +488,12 @@
if (dataAreaGroupFieldNameList.contains(dataAreaFieldName)) {
keyObj.put(dataAreaFieldName, recordFse.getString(dataAreaFieldName));
if (dataAreaFieldName.equals(tempFieldName)) {
- html.append("<td colspan=\"").append(dataAreaGroupFieldNameList.size() - index + 1).append("\">").append(waitStatisticsValue).append(CmnConst.STATISTICS_NAME).append("</td>");
+ ReportColumn column = new ReportColumn();
+ column.setColspan(dataAreaGroupFieldNameList.size() - index + 1);
+ column.setContent(waitStatisticsValue);
+// html.append("<td colspan=\"").append(dataAreaGroupFieldNameList.size() - index + 1).append("\">").append(waitStatisticsValue).append(CmnConst.STATISTICS_NAME).append("</td>");
flag = true;
+ columnRow.add(column);
}
if (!flag) {
needAddRowspanDataAreaGroupFieldNameList.add(dataAreaFieldName);
@@ -806,7 +504,8 @@
statisticsType = dataAreaFieldConfigObj.getString(CmnConst.ATTR_STATISTICS);
if (!"1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_CUSTOM_FIELD)) && StringUtils.isEmpty(statisticsType)) {
if (!"1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_GROUP))) {
- html.append("<td></td>");
+// html.append("<td></td>");
+ columnRow.add(new ReportColumn());
}
} else {
keyObj.put(CmnConst.ATTR_FIELD_INFO, dataListReportService.fieldName2FieldInfo(dataAreaFieldName));
@@ -826,13 +525,13 @@
}
// 鏍煎紡
value = dataListReportService.formatValue(dataAreaFieldConfigObj, value);
- html.append("<td>").append(value == null ? "" : value).append("</td>");
+// html.append("<td>").append(value == null ? "" : value).append("</td>");
+ columnRow.add(new ReportColumn(value == null ? "" : value));
}
}
}
- html.append("\n</tr>");
dealReplaceMapAddRowspan(replaceMap, needAddRowspanDataAreaGroupFieldNameList, recordFse, false);
- return html;
+ return columnRow;
}
/**
@@ -846,16 +545,16 @@
* @param totalName 鎬昏鍚嶇О
* @return
*/
- private String getDataAreaTotalStatisticsHtml(Map<JSONObject, JSONObject> statisticsMap, Map<String, JSONObject> dataAreaFieldConfigMap, List<String> dataAreaGroupFieldNameList, FieldSetEntity preFse, JSONObject dataAreaGroupFieldRecordObj, String totalName) {
- StringBuilder html = new StringBuilder(512);
+ private List<ReportColumn> getDataAreaTotalStatisticsRow(Map<JSONObject, JSONObject> statisticsMap, Map<String, JSONObject> dataAreaFieldConfigMap, List<String> dataAreaGroupFieldNameList, FieldSetEntity preFse, JSONObject dataAreaGroupFieldRecordObj, String totalName) {
+ List<ReportColumn> reportColumns = new ArrayList<>();
String dataAreaFieldName;
JSONObject dataAreaFieldConfigObj;
String value;
JSONObject keyObj = new JSONObject();
String statisticsType;
- html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_STATISTICS).append("\">\n ");
+// html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_STATISTICS).append("\">\n ");
if (preFse == null) {
- return html.toString();
+ return null;
}
int index = 0;
for (Map.Entry<String, JSONObject> entry : dataAreaFieldConfigMap.entrySet()) {
@@ -881,15 +580,17 @@
}
// 鏍煎紡
value = dataListReportService.formatValue(dataAreaFieldConfigObj, value);
- html.append("<td>").append(value == null ? "" : value).append("</td>");
+ reportColumns.add(new ReportColumn(value == null ? "" : value));
} else {
if (index == 1) {
- html.append("<td colspan=\"").append(dataAreaGroupFieldNameList.size()).append("\">").append(totalName).append("</td>");
+ ReportColumn column = new ReportColumn();
+ column.setColspan(dataAreaGroupFieldNameList.size());
+ column.setContent(totalName);
+ reportColumns.add(column);
}
}
}
- html.append("\n</tr>");
- return html.toString();
+ return reportColumns;
}
/**
--
Gitblit v1.9.2