From 59b6be83d059757671de9a1653efcb9f5f8a16c8 Mon Sep 17 00:00:00 2001
From: shicf <shi_chongfu@163.com>
Date: 星期四, 30 十月 2025 15:55:34 +0800
Subject: [PATCH] 关键字加引号
---
src/main/java/com/product/server/report/service/CommonReportService.java | 1144 ++++++++++++++++++++++++++++++--------------------------
1 files changed, 617 insertions(+), 527 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 c9c6a7e..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,7 @@
package com.product.server.report.service;
import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -11,6 +12,7 @@
import com.product.core.service.support.AbstractBaseService;
import com.product.core.spring.context.SpringMVCContextHolder;
import com.product.server.report.config.CmnConst;
+import com.product.server.report.entity.ReportColumn;
import com.product.util.BaseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -26,556 +28,644 @@
*/
@Component
public class CommonReportService extends AbstractBaseService {
- @Autowired
- private DataListReportService dataListReportService;
+ @Autowired
+ private DataListReportService dataListReportService;
- /**
- * 鎶ヨ〃-瑙f瀽
- *
- * @param recordDte 涓氬姟鏁版嵁dte
- * @param totalStatisticsFlag 鏄惁鍚堣鏍囪瘑
- * @param reportConfigMap 鎶ヨ〃閰嶇疆缂撳瓨map
- * @param tableStyle
- * @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();
+ /**
+ * 鎶ヨ〃-瑙f瀽
+ *
+ * @param recordDte 涓氬姟鏁版嵁dte
+ * @param totalName 鎬昏鍚嶇О
+ * @param reportConfigMap 鎶ヨ〃閰嶇疆缂撳瓨map
+ * @param unpivotInfoContainer 琛屽垪杞崲淇℃伅
+ * @return
+ */
+ 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);
+ // 鏁版嵁鍖�
+ Map<String, Set<String>> headAndTailTitleDataMap = Maps.newHashMap();
+ List<List<ReportColumn>> reportRows = getDataArea(reportConfigMap, headAndTailTitleDataMap, recordDte, totalName, unpivotInfoContainer);
+ int totalColCount = reportConfigMap.get(0).size() + unpivotInfoContainer.size() - 1;
+ // 澶撮儴鏍囬鍖�
+ if (!reportConfigMap.get(1).isEmpty()) {
+ 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;
+ // 搴曢儴鏍囬鍖�
+ if (!reportConfigMap.get(3).isEmpty()) {
+ reportColumnList[2] = (dataListReportService.getTitleRows(reportConfigMap.get(3), totalColCount, headAndTailTitleDataMap, "tail"));
+ }
- int totalColCount = reportConfigMap.get(0).size();
- // 澶撮儴鏍囬鍖�
- StringBuilder headTitleHtml = null;
- if (!reportConfigMap.get(1).isEmpty()) {
- headTitleHtml = dataListReportService.getTitleHtml(reportConfigMap.get(1), totalColCount, headAndTailTitleDataMap, "head");
- }
+// 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;
+ }
- // 搴曢儴鏍囬鍖�
- StringBuilder tailTitleHtml = null;
- if (!reportConfigMap.get(3).isEmpty()) {
- tailTitleHtml = dataListReportService.getTitleHtml(reportConfigMap.get(3), totalColCount, headAndTailTitleDataMap, "tail");
- }
+ /**
+ * 鑾峰彇鎶ヨ〃鏁版嵁鍖篽tml
+ *
+ * @param reportConfigMap 鎶ヨ〃缂撳瓨map
+ * @param headAndTailTitleDataMap 澶撮儴銆佸熬閮ㄦ爣棰樺尯鏁版嵁瀛楁map
+ * @param recordDte 涓氬姟鏁版嵁闆嗗悎
+ * @param totalName 鎬昏鍚嶇О锛岄潪绌�-闇�瑕佹�昏
+ * @return
+ */
+ 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));
+ // 鑾峰彇鎸囧畾鏁版嵁闆嗕腑鍖呭惈鐨勬暟鎹尯瀛楁闆嗗悎
+ 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();
- 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>");
+ // 灏嗚鍒楄浆鎹㈢殑淇℃伅娣诲姞鍒版暟鎹尯瀛楁缂撳瓨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;
+ }
- 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;
- }
+ // 鏍囬
+ reportColumnList.add(getDataAreaTitle(newDataAreaFieldConfigMap));
+ // 鍐呭
+ List<List<ReportColumn>> dataAreaData = getDataAreaData(newDataAreaFieldConfigMap, recordDte, headAndTailTitleDataMap, headAndTailFieldSet, statisticsMap, totalName);
+ reportColumnList.addAll(dataAreaData);
+ return reportColumnList;
+ }
- /**
- * 鑾峰彇鎶ヨ〃鏁版嵁鍖篽tml
- *
- * @param reportConfigMap 鎶ヨ〃缂撳瓨map
- * @param headAndTailTitleDataMap 澶撮儴銆佸熬閮ㄦ爣棰樺尯鏁版嵁瀛楁map
- * @param recordDte 涓氬姟鏁版嵁闆嗗悎
- * @param totalName 鎬昏鍚嶇О锛岄潪绌�-闇�瑕佹�昏
- * @return
- */
- private String getDataAreaHtml(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();
+ /**
+ * 鑾峰彇鏍囬
+ *
+ * @param dataAreaFieldConfigMap 鏁版嵁鍖哄瓧娈电紦瀛榤ap
+ * @return
+ */
+ private List<ReportColumn> getDataAreaTitle(Map<String, JSONObject> dataAreaFieldConfigMap) {
+ List<ReportColumn> columnRow = new ArrayList<>();
+ dataAreaFieldConfigMap.forEach((dataAreaFieldName, dataAreaFieldConfigObj) -> {
+ 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);
+ });
+ return columnRow;
+ }
- StringBuilder dataAreaHtml = new StringBuilder(1024);
- // 鏍囬
- dataAreaHtml.append(getDataAreaTitleHtml(dataAreaFieldConfigMap));
- // 鍐呭
- dataAreaHtml.append(getDataAreaDataHtml(dataAreaFieldConfigMap, recordDte, headAndTailTitleDataMap, headAndTailFieldSet, statisticsMap, totalName));
- return dataAreaHtml.toString();
- }
+ /**
+ * 鑾峰彇鍐呭锛屽寘鍚粺璁�
+ *
+ * @param dataAreaFieldConfigMap 鏁版嵁鍖哄瓧娈电紦瀛榤ap
+ * @param recordDte 涓氬姟鏁版嵁闆嗗悎
+ * @param headAndTailFieldSet 澶撮儴銆佸熬閮ㄦ爣棰樺尯瀛楁set
+ * @param statisticsMap 缁熻map
+ * @param totalName 鎬昏鍚嶇О
+ * @return
+ */
+ 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
+ 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);
+ }
+ }
+ });
- /**
- * 鑾峰彇鏍囬
- *
- * @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("\">");
- dataAreaFieldConfigMap.forEach((dataAreaFieldName, dataAreaFieldConfigObj) -> {
- html.append("<td>").append(dataListReportService.dealTdWidth(dataAreaFieldConfigObj, dataAreaFieldConfigObj.getString(CmnConst.ATTR_SHOW_NAME))).append("</td>");
- });
- html.append("</tr>");
- return html;
- }
+// StringBuilder dataAreaDataHtml = new StringBuilder(1024);
+// StringBuilder curRowHtml = new StringBuilder(256);
+ List<ReportColumn> curRowColumn = new ArrayList<>();
+ 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;
+ 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);
- /**
- * 鑾峰彇鍐呭锛屽寘鍚粺璁�
- *
- * @param dataAreaFieldConfigMap 鏁版嵁鍖哄瓧娈电紦瀛榤ap
- * @param recordDte 涓氬姟鏁版嵁闆嗗悎
- * @param headAndTailFieldSet 澶撮儴銆佸熬閮ㄦ爣棰樺尯瀛楁set
- * @param statisticsMap 缁熻map
- * @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) {
- // 鏁版嵁鍖哄垎缁勭粺璁″瓧娈靛悕绉發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);
- }
- }
- });
+// curRowHtml.setLength(0);
+ curRowColumn = new ArrayList<>();
- StringBuilder dataAreaDataHtml = new StringBuilder(1024);
- StringBuilder curRowHtml = new StringBuilder(256);
- 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);
+ String rowUuid = IdUtil.simpleUUID();
+// 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();
+ 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);
- curRowHtml.setLength(0);
- String rowUuid = IdUtil.simpleUUID();
- 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();
- 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) {
+ reportColumnList.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);
+// curRowHtml.append("<td rowspan=\"").append(paramKey).append("\"");
+ currentColumn.setRowspan(paramKey);
+ replaceMap.put(paramKey, "1");
+ }
+// else {
+// curRowHtml.append("<td");
+// }
+ // class
+ if (!StringUtils.isEmpty(dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL))) {
+ 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);
+ }
+ 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>");
+ currentColumn.setContent(value);
+ curRowColumn.add(currentColumn);
+ currentColumn = new ReportColumn();
+ }
+// curRowHtml.append("\n</tr>");
+// dataAreaDataHtml.append(curRowHtml);
+ reportColumnList.add(curRowColumn);
+ preFse = 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) {
- dataAreaDataHtml.append(getDataAreaGroupStatisticsFieldStatisticsRowHtml(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);
- curRowHtml.append("<td rowspan=\"").append(paramKey).append("\"");
- replaceMap.put(paramKey, "1");
- } 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("\"");
- }
- 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(">");
- // 鏍煎紡
- value = dataListReportService.formatValue(dataAreaFieldConfigObj, value);
- curRowHtml.append(value == null ? "" : value);
- curRowHtml.append("</td>");
- }
- curRowHtml.append("\n</tr>");
- dataAreaDataHtml.append(curRowHtml);
- 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) {
+ reportColumnList.add(getDataAreaGroupStatisticsFieldStatisticsRow(dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName), statisticsMap, dataAreaFieldConfigMap, tempFieldName, preFse, dataAreaGroupFieldNameList, replaceMap, dataAreaGroupFieldRecordObj));
+ }
+ }
+ }
- // 琛ュ叏鏈熬缁熻
- 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) {
- dataAreaDataHtml.append(getDataAreaGroupStatisticsFieldStatisticsRowHtml(dataAreaClosestGroupStatisticsFieldValueMap.get(tempFieldName), statisticsMap, dataAreaFieldConfigMap, tempFieldName, preFse, dataAreaGroupFieldNameList, replaceMap, dataAreaGroupFieldRecordObj));
- }
- }
- }
+ // 鎬昏
+ if (!StringUtils.isEmpty(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) {
- // 鎬昏
- if (!StringUtils.isEmpty(totalName)) {
- dataAreaDataHtml.append(getDataAreaTotalStatisticsHtml(statisticsMap, dataAreaFieldConfigMap, dataAreaGroupFieldNameList, preFse, dataAreaGroupFieldRecordObj, totalName));
- }
+ 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;
+ }
- /**
- * 娣诲姞鍒嗙粍缁熻淇℃伅
- * @param statisticsMap 缁熻map
- * @param dataAreaGroupStatisticsFieldNameList 鏁版嵁鍖哄垎缁勭粺璁″瓧娈靛悕绉發ist
- * @param recordFse 涓氬姟鏁版嵁fse
- * @param dataAreaFieldConfigObj 鏁版嵁鍖哄瓧娈祇bj
- * @param dataAreaFieldName 鏁版嵁鍖哄瓧娈靛悕绉�
- * @param value 鍊�
- * @param formulaMap 鍏紡map锛屽瓧娈礽nfo鍜岀粺璁$被鍨嬬殑鏄犲皠
- */
- private void addStatisticsRowInfo(Map<JSONObject, JSONObject> statisticsMap, List<String> dataAreaGroupStatisticsFieldNameList, FieldSetEntity recordFse, JSONObject dataAreaFieldConfigObj, String dataAreaFieldName, String value, Map<String, String> formulaMap) {
- JSONObject keyObj = new JSONObject();
- keyObj.put(CmnConst.ATTR_FIELD_INFO, dataListReportService.fieldName2FieldInfo(dataAreaFieldName));
- String statisticsType = dataAreaFieldConfigObj.getString(CmnConst.ATTR_STATISTICS);
- if (StringUtils.isEmpty(statisticsType) && "1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_STATISTICS))) {
- statisticsType = CmnConst.ATTR_STATISTICS_DEFAULT;
- }
- String statisticsValue;
- String formula = dataAreaFieldConfigObj.getString(CmnConst.ATTR_FORMULA);
- JSONObject formulaFieldKeyObj = new JSONObject();
- // 鎬昏
- JSONObject cloneKeyObj = (JSONObject) keyObj.clone();
- JSONObject valueObj = statisticsMap.computeIfAbsent(cloneKeyObj, k -> new JSONObject());
- statisticsValue = getStatisticsValue(statisticsMap, formulaMap, formulaFieldKeyObj, formula, value);
- statisticsMap.put(keyObj, dataListReportService.getStatisticsValueObj(valueObj, dataAreaFieldConfigObj, statisticsValue, statisticsType, true));
- // 鍒嗙粍缁熻
- for (String dataAreaGroupStatisticsFieldName : dataAreaGroupStatisticsFieldNameList) {
- keyObj.put(dataAreaGroupStatisticsFieldName, recordFse.getString(dataAreaGroupStatisticsFieldName));
- formulaFieldKeyObj.put(dataAreaGroupStatisticsFieldName, recordFse.getString(dataAreaGroupStatisticsFieldName));
- cloneKeyObj = (JSONObject) keyObj.clone();
- valueObj = statisticsMap.computeIfAbsent(cloneKeyObj, k -> new JSONObject());
- statisticsValue = getStatisticsValue(statisticsMap, formulaMap, formulaFieldKeyObj, formula, value);
- statisticsMap.put(keyObj, dataListReportService.getStatisticsValueObj(valueObj, dataAreaFieldConfigObj, statisticsValue, statisticsType, true));
- }
- }
- private void addStatisticsRowInfo(Map<JSONObject, JSONObject> statisticsMap, List<String> dataAreaGroupStatisticsFieldNameList, FieldSetEntity recordFse, JSONObject dataAreaFieldConfigObj, String dataAreaFieldName, String value) {
- addStatisticsRowInfo(statisticsMap, dataAreaGroupStatisticsFieldNameList, recordFse, dataAreaFieldConfigObj, dataAreaFieldName, value, null);
- }
+ /**
+ * 娣诲姞鍒嗙粍缁熻淇℃伅
+ *
+ * @param statisticsMap 缁熻map
+ * @param dataAreaGroupStatisticsFieldNameList 鏁版嵁鍖哄垎缁勭粺璁″瓧娈靛悕绉發ist
+ * @param recordFse 涓氬姟鏁版嵁fse
+ * @param dataAreaFieldConfigObj 鏁版嵁鍖哄瓧娈祇bj
+ * @param dataAreaFieldName 鏁版嵁鍖哄瓧娈靛悕绉�
+ * @param value 鍊�
+ * @param formulaMap 鍏紡map锛屽瓧娈礽nfo鍜岀粺璁$被鍨嬬殑鏄犲皠
+ */
+ private void addStatisticsRowInfo(Map<JSONObject, JSONObject> statisticsMap, List<String> dataAreaGroupStatisticsFieldNameList, FieldSetEntity recordFse, JSONObject dataAreaFieldConfigObj, String dataAreaFieldName, String value, Map<String, String> formulaMap) {
+ JSONObject keyObj = new JSONObject();
+ keyObj.put(CmnConst.ATTR_FIELD_INFO, dataListReportService.fieldName2FieldInfo(dataAreaFieldName));
+ String statisticsType = dataAreaFieldConfigObj.getString(CmnConst.ATTR_STATISTICS);
+ if (StringUtils.isEmpty(statisticsType) && "1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_IS_STATISTICS))) {
+ statisticsType = CmnConst.ATTR_STATISTICS_DEFAULT;
+ }
+ String statisticsValue;
+ String formula = dataAreaFieldConfigObj.getString(CmnConst.ATTR_FORMULA);
+ JSONObject formulaFieldKeyObj = new JSONObject();
+ // 鎬昏
+ JSONObject cloneKeyObj = (JSONObject) keyObj.clone();
+ JSONObject valueObj = statisticsMap.computeIfAbsent(cloneKeyObj, k -> new JSONObject());
+ statisticsValue = getStatisticsValue(statisticsMap, formulaMap, formulaFieldKeyObj, formula, value);
+ statisticsMap.put(keyObj, dataListReportService.getStatisticsValueObj(valueObj, dataAreaFieldConfigObj, statisticsValue, statisticsType, true));
+ // 鍒嗙粍缁熻
+ for (String dataAreaGroupStatisticsFieldName : dataAreaGroupStatisticsFieldNameList) {
+ keyObj.put(dataAreaGroupStatisticsFieldName, recordFse.getString(dataAreaGroupStatisticsFieldName));
+ formulaFieldKeyObj.put(dataAreaGroupStatisticsFieldName, recordFse.getString(dataAreaGroupStatisticsFieldName));
+ cloneKeyObj = (JSONObject) keyObj.clone();
+ valueObj = statisticsMap.computeIfAbsent(cloneKeyObj, k -> new JSONObject());
+ statisticsValue = getStatisticsValue(statisticsMap, formulaMap, formulaFieldKeyObj, formula, value);
+ statisticsMap.put(keyObj, dataListReportService.getStatisticsValueObj(valueObj, dataAreaFieldConfigObj, statisticsValue, statisticsType, true));
+ }
+ }
- /**
- * 鑾峰彇缁熻琛岀殑鍏紡璁$畻鍊�
- * @param statisticsMap 缁熻map
- * @param formulaMap 鍏紡map
- * @param formulaFieldKeyObj 鍏紡瀛楁keyobj
- * @param formula 鍏紡
- * @param value 鍘熸湰鐨勫��
- * @return
- */
- private String getStatisticsValue(Map<JSONObject, JSONObject> statisticsMap, Map<String, String> formulaMap, JSONObject formulaFieldKeyObj, String formula, String value) {
- String statisticsValue = "";
- String formulaFieldValue;
- if (formulaMap != null && !formulaMap.isEmpty()) {
- for (Map.Entry<String, String> entry : formulaMap.entrySet()) {
- formulaFieldKeyObj.put(CmnConst.ATTR_FIELD_INFO, entry.getKey());
- formulaFieldValue = statisticsMap.get(formulaFieldKeyObj).getString(entry.getValue());
- if (formulaFieldValue != null && formulaFieldValue.matches(CmnConst.REGEXP_NUMBER)) {
- formulaFieldValue += "d";
- }
- formula = formula.replace(entry.getKey(), StringUtils.isEmpty(formulaFieldValue) ? "" : formulaFieldValue);
- }
- try {
- statisticsValue = BaseUtil.executeExpression(formula, Maps.newHashMap()).toString();
- } catch (Exception e) {
- SpringMVCContextHolder.getSystemLogger().error(e);
- statisticsValue = "";
- }
- }
- return StringUtils.isEmpty(statisticsValue) ? value : statisticsValue;
- }
+ private void addStatisticsRowInfo(Map<JSONObject, JSONObject> statisticsMap, List<String> dataAreaGroupStatisticsFieldNameList, FieldSetEntity recordFse, JSONObject dataAreaFieldConfigObj, String dataAreaFieldName, String value) {
+ addStatisticsRowInfo(statisticsMap, dataAreaGroupStatisticsFieldNameList, recordFse, dataAreaFieldConfigObj, dataAreaFieldName, value, null);
+ }
- /**
- * 鑾峰彇鏁版嵁鍖哄垎缁勭粺璁″瓧娈电粺璁¤html
- *
- * @param waitStatisticsValue 寰呯粺璁$殑鍊�
- * @param statisticsMap 缁熻map
- * @param dataAreaFieldConfigMap 鏁版嵁鍖哄瓧娈电紦瀛榤ap
- * @param tempFieldName 鏈鎿嶄綔鐨勫瓧娈靛悕绉�
- * @param recordFse 涓氬姟鏁版嵁璁板綍
- * @param dataAreaGroupFieldNameList 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
- * @param replaceMap 鏇挎崲map
- * @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 ");
- 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()) {
- index++;
- dataAreaFieldName = entry.getKey();
- if (!flag) {
- 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>");
- flag = true;
- }
- 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);
- html.append("<td>").append(value == null ? "" : value).append("</td>");
- }
- }
- }
- html.append("\n</tr>");
- dealReplaceMapAddRowspan(replaceMap, needAddRowspanDataAreaGroupFieldNameList, recordFse, false);
- return html;
- }
+ /**
+ * 鑾峰彇缁熻琛岀殑鍏紡璁$畻鍊�
+ *
+ * @param statisticsMap 缁熻map
+ * @param formulaMap 鍏紡map
+ * @param formulaFieldKeyObj 鍏紡瀛楁keyobj
+ * @param formula 鍏紡
+ * @param value 鍘熸湰鐨勫��
+ * @return
+ */
+ private String getStatisticsValue(Map<JSONObject, JSONObject> statisticsMap, Map<String, String> formulaMap, JSONObject formulaFieldKeyObj, String formula, String value) {
+ String statisticsValue = "";
+ String formulaFieldValue;
+ if (formulaMap != null && !formulaMap.isEmpty()) {
+ for (Map.Entry<String, String> entry : formulaMap.entrySet()) {
+ formulaFieldKeyObj.put(CmnConst.ATTR_FIELD_INFO, entry.getKey());
+ formulaFieldValue = statisticsMap.get(formulaFieldKeyObj).getString(entry.getValue());
+ if (formulaFieldValue != null && formulaFieldValue.matches(CmnConst.REGEXP_NUMBER)) {
+ formulaFieldValue += "d";
+ }
+ formula = formula.replace(entry.getKey(), StringUtils.isEmpty(formulaFieldValue) ? "" : formulaFieldValue);
+ }
+ try {
+ statisticsValue = BaseUtil.executeExpression(formula, Maps.newHashMap()).toString();
+ } catch (Exception e) {
+ SpringMVCContextHolder.getSystemLogger().error(e);
+ statisticsValue = "";
+ }
+ }
+ return StringUtils.isEmpty(statisticsValue) ? value : statisticsValue;
+ }
- /**
- * 鑾峰彇鎬昏html
- *
- * @param statisticsMap 缁熻map
- * @param dataAreaFieldConfigMap 鏁版嵁鍖哄瓧娈电紦瀛榤ap
- * @param dataAreaGroupFieldNameList 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
- * @param preFse 鏈�杩戞搷浣滅殑鏁版嵁fse
- * @param dataAreaGroupFieldRecordObj 鏁版嵁鍖哄垎缁勫瓧娈佃褰昽bj
- * @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);
- 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 html.toString();
- }
- int index = 0;
- for (Map.Entry<String, JSONObject> entry : dataAreaFieldConfigMap.entrySet()) {
- 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);
- html.append("<td>").append(value == null ? "" : value).append("</td>");
- } else {
- if (index == 1) {
- html.append("<td colspan=\"").append(dataAreaGroupFieldNameList.size()).append("\">").append(totalName).append("</td>");
- }
- }
- }
- html.append("\n</tr>");
- return html.toString();
- }
+ /**
+ * 鑾峰彇鏁版嵁鍖哄垎缁勭粺璁″瓧娈电粺璁¤html
+ *
+ * @param waitStatisticsValue 寰呯粺璁$殑鍊�
+ * @param statisticsMap 缁熻map
+ * @param dataAreaFieldConfigMap 鏁版嵁鍖哄瓧娈电紦瀛榤ap
+ * @param tempFieldName 鏈鎿嶄綔鐨勫瓧娈靛悕绉�
+ * @param recordFse 涓氬姟鏁版嵁璁板綍
+ * @param dataAreaGroupFieldNameList 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
+ * @param replaceMap 鏇挎崲map
+ * @param dataAreaGroupFieldRecordObj 鏁版嵁鍖哄垎缁勫瓧娈佃褰昽bj
+ * @return
+ */
+ 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;
+ JSONObject keyObj = new JSONObject();
+ String value;
+ String statisticsType;
+ int index = 0;
+ List<String> needAddRowspanDataAreaGroupFieldNameList = Lists.newArrayList();
+ for (Map.Entry<String, JSONObject> entry : dataAreaFieldConfigMap.entrySet()) {
+ index++;
+ dataAreaFieldName = entry.getKey();
+ if (!flag) {
+ if (dataAreaGroupFieldNameList.contains(dataAreaFieldName)) {
+ keyObj.put(dataAreaFieldName, recordFse.getString(dataAreaFieldName));
+ if (dataAreaFieldName.equals(tempFieldName)) {
+ 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);
+ }
+ }
+ } 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>");
+ columnRow.add(new ReportColumn());
+ }
+ } 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);
+// html.append("<td>").append(value == null ? "" : value).append("</td>");
+ columnRow.add(new ReportColumn(value == null ? "" : value));
+ }
+ }
+ }
+ dealReplaceMapAddRowspan(replaceMap, needAddRowspanDataAreaGroupFieldNameList, recordFse, false);
+ return columnRow;
+ }
- /**
- * 澶勭悊鍙傛暟鏇挎崲map-娣诲姞鏁版嵁鍖哄垎缁勫瓧娈电殑鍗犺
- *
- * @param replaceMap 鏇挎崲map
- * @param needAddRowspanDataAreaGroupFieldNames 闇�瑕佹坊鍔犲崰琛岀殑鏁版嵁鍖哄垎缁勫瓧娈靛悕绉伴泦鍚�
- * @param recordFse 涓氬姟鏁版嵁璁板綍
- */
- private void dealReplaceMapAddRowspan(Map<String, String> replaceMap, Collection<String> needAddRowspanDataAreaGroupFieldNames, FieldSetEntity recordFse, boolean commonFieldFlag) {
- JSONObject keyObj = new JSONObject();
- String value;
- int rowspan;
- String paramKey;
- int index = 0;
- for (String fieldName : needAddRowspanDataAreaGroupFieldNames) {
- index++;
- keyObj.put(fieldName, recordFse.getString(fieldName));
- if (commonFieldFlag && index != needAddRowspanDataAreaGroupFieldNames.size()) {
- continue;
- }
- keyObj.put(CmnConst.ATTR_FIELD_INFO, dataListReportService.fieldName2FieldInfo(fieldName));
- paramKey = dataListReportService.concat(keyObj, CmnConst.ATTR_ROWSPAN);
- value = replaceMap.get(paramKey);
- rowspan = StringUtils.isEmpty(value) ? 1 : Integer.parseInt(value) + 1;
- replaceMap.put(paramKey, String.valueOf(rowspan));
- }
- }
+ /**
+ * 鑾峰彇鎬昏html
+ *
+ * @param statisticsMap 缁熻map
+ * @param dataAreaFieldConfigMap 鏁版嵁鍖哄瓧娈电紦瀛榤ap
+ * @param dataAreaGroupFieldNameList 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
+ * @param preFse 鏈�杩戞搷浣滅殑鏁版嵁fse
+ * @param dataAreaGroupFieldRecordObj 鏁版嵁鍖哄垎缁勫瓧娈佃褰昽bj
+ * @param totalName 鎬昏鍚嶇О
+ * @return
+ */
+ 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 ");
+ if (preFse == null) {
+ return null;
+ }
+ int index = 0;
+ for (Map.Entry<String, JSONObject> entry : dataAreaFieldConfigMap.entrySet()) {
+ 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);
+ reportColumns.add(new ReportColumn(value == null ? "" : value));
+ } else {
+ if (index == 1) {
+ ReportColumn column = new ReportColumn();
+ column.setColspan(dataAreaGroupFieldNameList.size());
+ column.setContent(totalName);
+ reportColumns.add(column);
+ }
+ }
+ }
+ return reportColumns;
+ }
- /**
- * 璁板綍鍒嗙粍瀛楁
- *
- * @param dataAreaGroupFieldRecordObj 鏁版嵁鍖哄垎缁勫瓧娈佃褰昽bj
- * @param dataAreaGroupFieldNameList 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
- * @param curFieldIndex 褰撳墠瀛楁涓嬫爣
- * @param recordFse 涓氬姟鏁版嵁璁板綍
- */
- private void recordDataAreaGroupField(JSONObject dataAreaGroupFieldRecordObj, List<String> dataAreaGroupFieldNameList, int curFieldIndex, FieldSetEntity recordFse) {
- String tempFieldName;
- JSONObject parentObj = dataAreaGroupFieldRecordObj;
- JSONObject subObj;
- String value;
- for (int j = 0; j <= curFieldIndex; j++) {
- tempFieldName = dataAreaGroupFieldNameList.get(j);
- value = recordFse.getString(tempFieldName);
- subObj = parentObj.getJSONObject(value);
- if (subObj == null) {
- subObj = new JSONObject();
- parentObj.put(value, subObj);
- }
- parentObj = subObj;
- }
- }
+ /**
+ * 澶勭悊鍙傛暟鏇挎崲map-娣诲姞鏁版嵁鍖哄垎缁勫瓧娈电殑鍗犺
+ *
+ * @param replaceMap 鏇挎崲map
+ * @param needAddRowspanDataAreaGroupFieldNames 闇�瑕佹坊鍔犲崰琛岀殑鏁版嵁鍖哄垎缁勫瓧娈靛悕绉伴泦鍚�
+ * @param recordFse 涓氬姟鏁版嵁璁板綍
+ */
+ private void dealReplaceMapAddRowspan(Map<String, String> replaceMap, Collection<String> needAddRowspanDataAreaGroupFieldNames, FieldSetEntity recordFse, boolean commonFieldFlag) {
+ JSONObject keyObj = new JSONObject();
+ String value;
+ int rowspan;
+ String paramKey;
+ int index = 0;
+ for (String fieldName : needAddRowspanDataAreaGroupFieldNames) {
+ index++;
+ keyObj.put(fieldName, recordFse.getString(fieldName));
+ if (commonFieldFlag && index != needAddRowspanDataAreaGroupFieldNames.size()) {
+ continue;
+ }
+ keyObj.put(CmnConst.ATTR_FIELD_INFO, dataListReportService.fieldName2FieldInfo(fieldName));
+ paramKey = dataListReportService.concat(keyObj, CmnConst.ATTR_ROWSPAN);
+ value = replaceMap.get(paramKey);
+ rowspan = StringUtils.isEmpty(value) ? 1 : Integer.parseInt(value) + 1;
+ replaceMap.put(paramKey, String.valueOf(rowspan));
+ }
+ }
- /**
- * 鑾峰彇鎸囧畾鐨勪笅绾у垎缁勯」
- *
- * @param keyObj 鎸囧畾鐨刱ey
- * @param dataAreaGroupFieldNameList 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
- * @param dataAreaGroupFieldRecordObj 鏁版嵁鍖哄垎缁勫瓧娈佃褰昽bj
- * @return
- */
- private int getAimSubCnt(JSONObject keyObj, List<String> dataAreaGroupFieldNameList, JSONObject dataAreaGroupFieldRecordObj) {
- String value;
- JSONObject parentObj = dataAreaGroupFieldRecordObj;
- JSONObject subObj = null;
- for (String fieldName : dataAreaGroupFieldNameList) {
- value = keyObj.getString(fieldName);
- if (value != null) {
- subObj = parentObj.getJSONObject(value);
- } else {
- break;
- }
- parentObj = subObj;
- }
- return subObj == null ? 0 : subObj.size();
- }
+ /**
+ * 璁板綍鍒嗙粍瀛楁
+ *
+ * @param dataAreaGroupFieldRecordObj 鏁版嵁鍖哄垎缁勫瓧娈佃褰昽bj
+ * @param dataAreaGroupFieldNameList 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
+ * @param curFieldIndex 褰撳墠瀛楁涓嬫爣
+ * @param recordFse 涓氬姟鏁版嵁璁板綍
+ */
+ private void recordDataAreaGroupField(JSONObject dataAreaGroupFieldRecordObj, List<String> dataAreaGroupFieldNameList, int curFieldIndex, FieldSetEntity recordFse) {
+ String tempFieldName;
+ JSONObject parentObj = dataAreaGroupFieldRecordObj;
+ JSONObject subObj;
+ String value;
+ for (int j = 0; j <= curFieldIndex; j++) {
+ tempFieldName = dataAreaGroupFieldNameList.get(j);
+ value = recordFse.getString(tempFieldName);
+ subObj = parentObj.getJSONObject(value);
+ if (subObj == null) {
+ subObj = new JSONObject();
+ parentObj.put(value, subObj);
+ }
+ parentObj = subObj;
+ }
+ }
+
+ /**
+ * 鑾峰彇鎸囧畾鐨勪笅绾у垎缁勯」
+ *
+ * @param keyObj 鎸囧畾鐨刱ey
+ * @param dataAreaGroupFieldNameList 鏁版嵁鍖哄垎缁勫瓧娈靛悕绉發ist
+ * @param dataAreaGroupFieldRecordObj 鏁版嵁鍖哄垎缁勫瓧娈佃褰昽bj
+ * @return
+ */
+ private int getAimSubCnt(JSONObject keyObj, List<String> dataAreaGroupFieldNameList, JSONObject dataAreaGroupFieldRecordObj) {
+ String value;
+ JSONObject parentObj = dataAreaGroupFieldRecordObj;
+ JSONObject subObj = null;
+ for (String fieldName : dataAreaGroupFieldNameList) {
+ value = keyObj.getString(fieldName);
+ if (value != null) {
+ subObj = parentObj.getJSONObject(value);
+ } else {
+ break;
+ }
+ parentObj = subObj;
+ }
+ return subObj == null ? 0 : subObj.size();
+ }
}
--
Gitblit v1.9.2