From 1156a6e9619864201de922f4cfa93f6db989ff2e Mon Sep 17 00:00:00 2001
From: 1821349743@qq.com <1821349743@qq.com>
Date: 星期一, 17 四月 2023 12:09:07 +0800
Subject: [PATCH] report update
---
src/main/java/com/product/server/report/entity/ReportEntity.java | 35 ++
src/main/java/com/product/server/report/controller/DataListReportController.java | 176 +++++++++-----
src/main/java/com/product/server/report/service/ListReportConfigServiceImple.java | 14
src/main/java/com/product/server/report/service/GroupReportService.java | 186 ++++++++++++---
pom.xml | 4
src/main/java/com/product/server/report/service/CommonReportService.java | 22 +
src/main/java/com/product/server/report/service/DataListReportService.java | 204 ++++++++++++++--
src/main/java/com/product/server/report/entity/ReportColumn.java | 26 +
8 files changed, 498 insertions(+), 169 deletions(-)
diff --git a/pom.xml b/pom.xml
index 00a4e3f..263bc90 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,5 +38,9 @@
<groupId>com.lx</groupId>
<artifactId>product-server-admin</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.lx</groupId>
+ <artifactId>product-server-data-export-import</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/src/main/java/com/product/server/report/controller/DataListReportController.java b/src/main/java/com/product/server/report/controller/DataListReportController.java
index 863f3eb..50fab3c 100644
--- a/src/main/java/com/product/server/report/controller/DataListReportController.java
+++ b/src/main/java/com/product/server/report/controller/DataListReportController.java
@@ -1,22 +1,35 @@
package com.product.server.report.controller;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
import com.product.core.config.CoreConst;
import com.product.core.controller.support.AbstractBaseController;
import com.product.core.entity.FieldSetEntity;
import com.product.core.entity.RequestParameterEntity;
import com.product.core.exception.BaseException;
import com.product.core.spring.context.SpringMVCContextHolder;
+import com.product.module.data.config.CmnCode;
+import com.product.module.data.config.CmnConst;
+import com.product.module.data.service.SystemDataExportService;
import com.product.module.sys.version.ApiVersion;
import com.product.server.report.config.ReportCode;
import com.product.server.report.config.SystemCode;
+import com.product.server.report.entity.ReportColumn;
+import com.product.server.report.entity.ReportEntity;
import com.product.server.report.service.DataListReportService;
import com.product.util.BaseUtil;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.TimeZone;
+import java.util.stream.Collectors;
/**
* Copyright 漏 6c
@@ -28,75 +41,104 @@
@RestController
@RequestMapping("/api/report/data-list")
public class DataListReportController extends AbstractBaseController {
- @Autowired
- private DataListReportService dataListReportService;
+ @Autowired
+ private DataListReportService dataListReportService;
+ /**
+ * 6c-test-璁剧疆鎶ヨ〃缂撳瓨
+ *
+ * @param request
+ * @return
+ */
+ @RequestMapping(value = "/set-report-cache/{version}", method = RequestMethod.POST)
+ @ApiVersion(1)
+ public String setReportCache(HttpServletRequest request) {
+ try {
+ FieldSetEntity fse = null;
+ Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
+ if (bean != null) {
+ RequestParameterEntity reqp = (RequestParameterEntity) bean;
+ fse = reqp.getFormData();
+ }
+ if (bean == null || fse == null) {
+ SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
+ return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
+ }
+ if (!"1".equals(fse.getString("is_all"))) {
+ dataListReportService.setConfig(fse.getUUID());
+ } else {
+ dataListReportService.setAllConfig();
+ }
+ return OK();
+ } catch (BaseException e) {
+ SpringMVCContextHolder.getSystemLogger().error(e);
+ return this.error(e.getCode(), e.getMessageInfo());
+ } catch (Exception e) {
+ SpringMVCContextHolder.getSystemLogger().error(e);
+ e.printStackTrace();
+ return error(ReportCode.GET_REPORT_FAIL.getValue(), ReportCode.GET_REPORT_FAIL.getText());
+ }
+ }
- /**
- * 6c-test-璁剧疆鎶ヨ〃缂撳瓨
- *
- * @param request
- * @return
- */
- @RequestMapping(value = "/set-report-cache/{version}", method = RequestMethod.POST)
- @ApiVersion(1)
- public String setReportCache(HttpServletRequest request) {
- try {
- FieldSetEntity fse = null;
- Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
- if (bean != null) {
- RequestParameterEntity reqp = (RequestParameterEntity) bean;
- fse = reqp.getFormData();
- }
- if (bean == null || fse == null) {
- SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
- return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
- }
- if (!"1".equals(fse.getString("is_all"))) {
- dataListReportService.setConfig(fse.getUUID());
- } else {
- dataListReportService.setAllConfig();
- }
- return OK();
- } catch (BaseException e) {
- SpringMVCContextHolder.getSystemLogger().error(e);
- return this.error(e.getCode(), e.getMessageInfo());
- } catch (Exception e) {
- SpringMVCContextHolder.getSystemLogger().error(e);
- e.printStackTrace();
- return error(ReportCode.GET_REPORT_FAIL.getValue(), ReportCode.GET_REPORT_FAIL.getText());
- }
- }
+ /**
+ * 鑾峰彇鎶ヨ〃
+ *
+ * @param request
+ * @return
+ */
+ @RequestMapping(value = "/get-report/{version}", method = RequestMethod.POST)
+ @ApiVersion(1)
+ public String getReport(HttpServletRequest request) {
+ try {
+ FieldSetEntity fse = null;
+ Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
+ if (bean != null) {
+ RequestParameterEntity reqp = (RequestParameterEntity) bean;
+ fse = reqp.getFormData();
+ }
+ if (bean == null || fse == null) {
+ SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
+ return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
+ }
+ return BaseUtil.success(dataListReportService.getReportEntity(fse));
+ } catch (BaseException e) {
+ SpringMVCContextHolder.getSystemLogger().error(e);
+ return this.error(e.getCode(), e.getMessageInfo());
+ } catch (Exception e) {
+ SpringMVCContextHolder.getSystemLogger().error(e);
+ e.printStackTrace();
+ return error(ReportCode.GET_REPORT_FAIL.getValue(), ReportCode.GET_REPORT_FAIL.getText());
+ }
+ }
- /**
- * 鑾峰彇鎶ヨ〃
- *
- * @param request
- * @return
- */
- @RequestMapping(value = "/get-report/{version}", method = RequestMethod.POST)
- @ApiVersion(1)
- public String getTableInfo(HttpServletRequest request) {
- try {
- FieldSetEntity fse = null;
- Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
- if (bean != null) {
- RequestParameterEntity reqp = (RequestParameterEntity) bean;
- fse = reqp.getFormData();
- }
- if (bean == null || fse == null) {
- SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
- return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
- }
- return BaseUtil.success(dataListReportService.getReportEntity(fse));
- } catch (BaseException e) {
- SpringMVCContextHolder.getSystemLogger().error(e);
- return this.error(e.getCode(), e.getMessageInfo());
- } catch (Exception e) {
- SpringMVCContextHolder.getSystemLogger().error(e);
- e.printStackTrace();
- return error(ReportCode.GET_REPORT_FAIL.getValue(), ReportCode.GET_REPORT_FAIL.getText());
- }
- }
+ @PostMapping("report-export/{version}")
+ @ApiVersion(1)
+ public String reportDataExport(HttpServletRequest request, HttpServletResponse response) {
+ try {
+ FieldSetEntity fse = BaseUtil.getFieldSetEntity(request);
+
+ //鏄惁褰撳墠椤�
+ boolean exportCurrentPage = fse.getBoolean("exportCurrentPage");
+ if (!exportCurrentPage) {
+ //褰撳墠椤靛彿
+ int pageIndex = fse.getInteger(CmnConst.CPAGE);
+ fse.setValue(CmnConst.CPAGE, pageIndex);
+ } else {
+ fse.setValue(CmnConst.CPAGE, 1);
+ fse.setValue(CmnConst.PAGESIZE, Integer.MAX_VALUE);
+ }
+ dataListReportService.outReportExcel(response,fse);
+ return OK();
+ } catch (BaseException e) {
+ e.printStackTrace();
+ SpringMVCContextHolder.getSystemLogger().error(e);
+ return error(e);
+ } catch (Exception e) {
+ e.printStackTrace();
+ SpringMVCContextHolder.getSystemLogger().error(e);
+ return error(CmnCode.EXPORT_GENERAL_LIST_DATA_IMPORT_FIAL.getValue(), CmnCode.EXPORT_GENERAL_LIST_DATA_IMPORT_FIAL.getText() + e.getMessage());
+ }
+ }
+
}
diff --git a/src/main/java/com/product/server/report/entity/ReportColumn.java b/src/main/java/com/product/server/report/entity/ReportColumn.java
index 8af08fc..94e1471 100644
--- a/src/main/java/com/product/server/report/entity/ReportColumn.java
+++ b/src/main/java/com/product/server/report/entity/ReportColumn.java
@@ -1,10 +1,10 @@
package com.product.server.report.entity;
+import cn.hutool.core.util.NumberUtil;
import com.product.common.lang.StringUtils;
import java.util.HashMap;
import java.util.Map;
-import java.util.Set;
/**
* @Author cheng
@@ -36,17 +36,20 @@
Map<String, String> otherParams = this.otherParams;
this.otherParams = new HashMap<>();
otherParams.forEach((k, v) -> {
+ if ("rowspan".equals(v) && NumberUtil.isNumber(value) && k.equals(key)) {
+ this.rowspan = NumberUtil.parseInt(value);
+ }
this.otherParams.put(k.replace(key, value), v.replace(key, value));
});
}
- if(!StringUtils.isEmpty(subReportProperty)){
- subReportProperty=subReportProperty.replace(key,value);
+ if (!StringUtils.isEmpty(subReportProperty)) {
+ subReportProperty = subReportProperty.replace(key, value);
}
- if(!StringUtils.isEmpty(penetrateProperty)){
- penetrateProperty=penetrateProperty.replace(key,value);
+ if (!StringUtils.isEmpty(penetrateProperty)) {
+ penetrateProperty = penetrateProperty.replace(key, value);
}
- if(!StringUtils.isEmpty(content)){
- content=content.replace(key,value);
+ if (!StringUtils.isEmpty(content)) {
+ content = content.replace(key, value);
}
}
@@ -71,7 +74,14 @@
}
public String getContent() {
- return content;
+ return getContent(false);
+ }
+
+ public String getContent(boolean emptyChar) {
+ if (emptyChar) {
+ return this.content == null ? "" : this.content;
+ }
+ return this.content;
}
public void setContent(String content) {
diff --git a/src/main/java/com/product/server/report/entity/ReportEntity.java b/src/main/java/com/product/server/report/entity/ReportEntity.java
index 23eeec5..7f7d080 100644
--- a/src/main/java/com/product/server/report/entity/ReportEntity.java
+++ b/src/main/java/com/product/server/report/entity/ReportEntity.java
@@ -27,6 +27,11 @@
private Map<String, Map<String, String>> filterInfo;
//瀛楁淇℃伅
private JSONArray systemFieldMeta;
+ //鎶ヨ〃閰嶇疆uuid
+ private String reportConfigUid;
+ //鎶ヨ〃鍚嶇О
+ private String reportName;
+
/************鍒嗛〉鍙傛暟*************/
@@ -37,7 +42,7 @@
private int pageIndex;
- private int totalPage;
+ private int totalCount;
/************鍒嗛〉鍙傛暟************
@@ -126,6 +131,26 @@
this.systemFieldMeta = systemFieldMeta;
}
+ public void setEntityType(String entityType) {
+ this.entityType = entityType;
+ }
+
+ public String getReportConfigUid() {
+ return reportConfigUid;
+ }
+
+ public void setReportConfigUid(String reportConfigUid) {
+ this.reportConfigUid = reportConfigUid;
+ }
+
+ public String getReportName() {
+ return reportName;
+ }
+
+ public void setReportName(String reportName) {
+ this.reportName = reportName;
+ }
+
public boolean isPage() {
return isPage;
}
@@ -150,11 +175,11 @@
this.pageIndex = pageIndex;
}
- public int getTotalPage() {
- return totalPage;
+ public int getTotalCount() {
+ return totalCount;
}
- public void setTotalPage(int totalPage) {
- this.totalPage = totalPage;
+ public void setTotalCount(int totalCount) {
+ this.totalCount = totalCount;
}
}
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..d5a3ac0 100644
--- a/src/main/java/com/product/server/report/service/CommonReportService.java
+++ b/src/main/java/com/product/server/report/service/CommonReportService.java
@@ -40,7 +40,6 @@
* @param recordDte 涓氬姟鏁版嵁dte
* @param totalStatisticsFlag 鏄惁鍚堣鏍囪瘑
* @param reportConfigMap 鎶ヨ〃閰嶇疆缂撳瓨map
- * @param tableStyle
* @return
*/
public ReportEntity getReportEntity(DataTableEntity recordDte, String totalName, Map<Integer, List<JSONObject>> reportConfigMap) {
@@ -64,7 +63,9 @@
if (!CollectionUtil.isEmpty(headTitleRows)) {
List<List<ReportColumn>> reportHeader = report.getReportHeader();
- headTitleRows.addAll(reportHeader);
+ if (reportHeader != null) {
+ headTitleRows.addAll(reportHeader);
+ }
report.setReportHeader(headTitleRows);
}
if (!CollectionUtil.isEmpty(tailTitleRows)) {
@@ -298,7 +299,11 @@
}
}
paramKey = dataListReportService.concat(keyObj, CmnConst.ATTR_ROWSPAN);
- column.setRowspan(NumberUtil.parseInt(paramKey));
+ if (NumberUtil.isNumber(paramKey)) {
+ column.setRowspan(NumberUtil.parseInt(paramKey));
+ } else {
+ column.addProperty(paramKey, "rowspan");
+ }
replaceMap.put(paramKey, "1");
}
// class
@@ -349,13 +354,14 @@
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 -> {
+ reportData.stream().forEach(item -> {
+ item.stream().forEach(column -> {
+ for (Map.Entry<String, String> entry : replaceMap.entrySet()) {
column.replace(entry.getKey(), entry.getValue());
- });
+ }
});
- }
+ });
+
return reportData;
}
diff --git a/src/main/java/com/product/server/report/service/DataListReportService.java b/src/main/java/com/product/server/report/service/DataListReportService.java
index ef59fc0..99f5050 100644
--- a/src/main/java/com/product/server/report/service/DataListReportService.java
+++ b/src/main/java/com/product/server/report/service/DataListReportService.java
@@ -1,5 +1,8 @@
package com.product.server.report.service;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
@@ -18,6 +21,7 @@
import com.product.core.service.support.AbstractBaseService;
import com.product.core.service.support.QueryFilterService;
import com.product.core.spring.context.SpringMVCContextHolder;
+import com.product.module.data.service.SystemDataExportService;
import com.product.server.report.config.CmnConst;
import com.product.server.report.config.ReportCode;
import com.product.server.report.entity.ReportColumn;
@@ -27,6 +31,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
@@ -34,6 +41,7 @@
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
/**
* Copyright 漏 6c
@@ -54,6 +62,107 @@
private QueryFilterService queryFilterService;
@Autowired
private RouterService routerService;
+ @Resource
+ private SystemDataExportService exportService;
+
+ public void outReportExcel(HttpServletResponse response, FieldSetEntity fse) throws BaseException, IOException {
+ ReportEntity reportEntity = getReportEntity(fse);
+ List<List<ReportColumn>> reportHeader = reportEntity.getReportHeader();
+
+ List<List<String>> headerTemp = processingMergeData(reportHeader);
+ List<List<String>> header = headerTemp.get(0).stream().map(item -> new ArrayList<String>()).collect(Collectors.toList());
+ int size = headerTemp.get(0).size();
+ for (int i = 0; i < size; i++) {
+ for (int k = 0; k < headerTemp.size(); k++) {
+ header.get(i).add(headerTemp.get(k).get(i));
+ }
+ }
+
+ List<List<ReportColumn>> reportData = reportEntity.getReportData();
+ if (!CollectionUtil.isEmpty(reportEntity.getReportTail())) {
+ reportData.addAll(reportEntity.getReportTail());
+ }
+
+ List<List<String>> data = processingMergeData(reportData);
+ exportService.writeExcel(header, data, "娴嬭瘯", response);
+ }
+
+
+ private static List<List<String>> processingMergeData(List<List<ReportColumn>> data) {
+ if (CollectionUtil.isEmpty(data)) {
+ return null;
+ }
+ List<List<String>> resultData = data.stream().map(item -> new ArrayList<String>()).collect(Collectors.toList());
+ for (int i = 0; i < data.size(); i++) {
+ List<ReportColumn> columns = data.get(i);
+ for (ReportColumn column : columns) {
+ //璺ㄨ
+ int rowspan = column.getRowspan() < 1 ? 1 : column.getRowspan();
+ //璺ㄥ垪
+ int colspan = column.getColspan() < 1 ? 1 : column.getColspan();
+ List<String> currentCell = new ArrayList<>();
+ for (int k = 0; k < colspan; k++) {
+ currentCell.add(column.getContent(true));
+ }
+ for (int j = 0; j < rowspan; j++) {
+ resultData.get(j + i).addAll(currentCell);
+ }
+ System.out.println(resultData);
+ }
+ }
+ return resultData;
+ }
+
+ public static void main(String[] args) {
+ List<List<ReportColumn>> data = new ArrayList<>();
+ List<ReportColumn> columns = new ArrayList<>();
+ ReportColumn column = new ReportColumn();
+ column.setRowspan(2);
+ column.setColspan(4);
+ column.setContent("璺ㄨ鏁帮細2锛岃法鍒楁暟锛�4");
+ columns.add(column);
+ data.add(columns);
+ columns = new ArrayList<>();
+ data.add(columns);
+ for (int i = 0; i < 3; i++) {
+ column = new ReportColumn();
+ column.setContent("璺ㄨ鏁帮細1锛岃法鍒楁暟锛�1,涓嬫爣:" + i);
+ columns.add(column);
+ }
+ processingMergeData(data);
+ }
+
+
+ /**
+ * @param target
+ * @param content
+ * @param colspan
+ * @param rowspan
+ * @param currentColspan
+ * @param currentRowsSpan
+ */
+ private void rowspanAndColspan(String[][] target, String content, int colspan, int rowspan, int currentColspan, int currentRowsSpan) {
+ int k = currentColspan;
+ int i = currentRowsSpan;
+ if (colspan > 1) {
+ for (int j = 1; j < colspan; j++) {
+ int index = j + k;
+ while (target[i][index] != null) {
+ index++;
+ }
+ target[i][index] = content;
+ }
+ }
+ if (rowspan > 1) {
+ for (int j = 1; j < rowspan; j++) {
+ int index = i + k;
+ while (target[index][k] != null) {
+ index++;
+ }
+ target[index][k] = content;
+ }
+ }
+ }
/**
* 鍔犺浇鎵�鏈夌紦瀛�
@@ -262,6 +371,7 @@
ReportEntity report = null;
String reportConfigUUID = fse.getUUID();
if (!StringUtils.isEmpty(fse.getString("~report_config_uuid~"))) {
+ //瀛愭姤琛ㄤ細浼犲叆姝ey浣滀负鎶ヨ〃鐨剈uid 瑙勯伩鍙傛暟涓湁uuid鐨刱ey
reportConfigUUID = fse.getString("~report_config_uuid~");
}
DataTableEntity reportConfigDte = DataPoolCacheImpl.getInstance().getCacheData(CmnConst.CACHE_REPORT_CONFIG, new String[]{reportConfigUUID});
@@ -387,15 +497,15 @@
if (CmnConst.REPORT_TYPE_COMMON.equals(reportType)) {
report = commonReportService.getReportEntity(recordDte, totalName, reportConfigMap);
- //TODO
report.setFilterInfo(outerMap);
} else if (CmnConst.REPORT_TYPE_GROUP.equals(reportType)) {
// 鐗规畩澶勭悊棰濆鏌ヨ鍐呭
recordDte.addFieldSetEntity(getRecordDte(sort, curPage, reportSourceFse, fse, reportConfigFse, reportConfigMap));
+ report = groupReportService.getReportEntity(recordDte, totalName, reportConfigMap);
// resultObj.putAll(groupReportService.getReport(recordDte, totalName, reportConfigMap, tableStyle));
}
- //TODO
-
+ report.setReportConfigUid(reportConfigFse.getUUID());
+ report.setReportName(reportConfigFse.getString(CmnConst.REPORT_NAME));
// report.setFilterInfo(outerMap);
if (CmnConst.FALSE.equals(resultObj.getString(CmnConst.RETURN_ATTR_RESULT))) {
resultObj.put(CmnConst.RETURN_ATTR_RESULT, true);
@@ -405,7 +515,7 @@
SQLEntity sqlEntity = recordDte.getSqle();
if ("1".equals(reportConfigFse.getString(CmnConst.IS_PAGE)) && sqlEntity != null) {
report.setPage(true);
- report.setTotalPage(sqlEntity.getTotalpage());
+ report.setTotalCount(sqlEntity.getTotalCount());
report.setPageSize(StringUtils.isEmpty(reportConfigFse.getString(CmnConst.PAGE_SIZE)) ? 0 : reportConfigFse.getInteger(CmnConst.PAGE_SIZE));
report.setPageIndex(curPage);
// resultObj.put(CmnConst.IS_PAGE, 1);
@@ -421,7 +531,7 @@
report.setSystemFieldMeta(getSearchInfo(reportSourceFse.getUUID()));
report.setReportType(reportConfigFse.getString("type_uuid"));
// resultObj.put("systemFieldMeta", );
- resultObj.put("report_type", reportConfigFse.getString("type_uuid"));
+// resultObj.put("report_type", reportConfigFse.getString("type_uuid"));
// System.out.println(resultObj.getString("html"));
return report;
@@ -628,7 +738,9 @@
* @param reportConfigFse
* @return
*/
- private DataTableEntity getRecordDte(StringBuilder sort, int curPage, FieldSetEntity reportSourceFse, FieldSetEntity fse, FieldSetEntity reportConfigFse, Map<Integer, List<JSONObject>> reportConfigMap) {
+ private DataTableEntity getRecordDte(StringBuilder sort, int curPage, FieldSetEntity
+ reportSourceFse, FieldSetEntity fse, FieldSetEntity
+ reportConfigFse, Map<Integer, List<JSONObject>> reportConfigMap) {
boolean spTimeFlag = reportConfigMap != null;
String sql;
String sqlText = reportSourceFse.getString(CmnConst.SQL_TEXT);
@@ -766,7 +878,8 @@
* @param sort
* @return
*/
- private String replaceSqlContent(String sqlText, FieldSetEntity fse, StringBuilder sort, FieldSetEntity reportConfigFse, int curPage, String selectedFields, Map<String, List<String>> queryFilterMap) {
+ private String replaceSqlContent(String sqlText, FieldSetEntity fse, StringBuilder sort, FieldSetEntity
+ reportConfigFse, int curPage, String selectedFields, Map<String, List<String>> queryFilterMap) {
queryFilterMap = queryFilterMap == null ? queryFilterService.getQueryFilterMore(fse) : queryFilterMap;
selectedFields = StringUtils.isEmpty(selectedFields) ? "*" : selectedFields;
// 鏇挎崲sql涓殑绯荤粺鍙傛暟
@@ -841,7 +954,8 @@
return sql.toString();
}
- private String replaceSqlContent(String sqlText, FieldSetEntity fse, StringBuilder sort, FieldSetEntity reportConfigFse, int curPage) {
+ private String replaceSqlContent(String sqlText, FieldSetEntity fse, StringBuilder sort, FieldSetEntity
+ reportConfigFse, int curPage) {
return replaceSqlContent(sqlText, fse, sort, reportConfigFse, curPage, null, null);
}
@@ -854,7 +968,8 @@
* @param queryFilterMap
* @return
*/
- private String spReplaceSqlContent(String suitContent, String regexp, int num, Map<String, List<String>> queryFilterMap, Map<String, List<String>> residueQueryFilterMap) {
+ private String spReplaceSqlContent(String suitContent, String regexp, int num, Map<
+ String, List<String>> queryFilterMap, Map<String, List<String>> residueQueryFilterMap) {
List<String> innerSuitList = getSuitContent(suitContent, regexp);
String curField;
String filter;
@@ -933,7 +1048,9 @@
* @param queryFilterMap
* @param curFieldName
*/
- private void spDealFilterForLastYear(Map<String, List<String>> tempQueryFilterMap, Map<String, List<String>> queryFilterMap, String curFieldName) {
+ private void spDealFilterForLastYear
+ (Map<String, List<String>> tempQueryFilterMap, Map<String, List<String>> queryFilterMap, String
+ curFieldName) {
List<String> paramList = tempQueryFilterMap.get(curFieldName);
for (int i = 0; i < paramList.size(); i++) {
paramList.set(i, paramList.get(i).replace("str_to_date(", "date_add(str_to_date(")
@@ -954,7 +1071,9 @@
* @param queryFilterMap
* @param curFieldName
*/
- private void spDealFilterForPrePeriod(Map<String, List<String>> tempQueryFilterMap, Map<String, List<String>> queryFilterMap, String curFieldName) {
+ private void spDealFilterForPrePeriod
+ (Map<String, List<String>> tempQueryFilterMap, Map<String, List<String>> queryFilterMap, String
+ curFieldName) {
List<String> paramList = tempQueryFilterMap.get(curFieldName);
String[] timeArr = paramList.get(0).split("~");
try {
@@ -987,7 +1106,8 @@
* @param dataList
* @return
*/
- private Set<String> getFieldAndSpTimeStatisticsTypeSet(Set<String> baseFieldSet, Map<String, Map<String, JSONObject>> spTimeStatisticsFieldMap, List<JSONObject> dataList) {
+ private Set<String> getFieldAndSpTimeStatisticsTypeSet
+ (Set<String> baseFieldSet, Map<String, Map<String, JSONObject>> spTimeStatisticsFieldMap, List<JSONObject> dataList) {
Set<String> spTimeStatisticsTypeSet = Sets.newHashSet();
JSONObject curFieldObj;
String fieldName;
@@ -1133,7 +1253,8 @@
* @param locationType 浣嶇疆绫诲瀷锛宧ead-澶撮儴锛宼ail-灏鹃儴
* @return
*/
- public StringBuilder getTitleHtml(List<JSONObject> list, int totalColCount, Map<String, Set<String>> headAndTailTitleDataMap, String locationType) {
+ public StringBuilder getTitleHtml(List<JSONObject> list, int totalColCount, Map<
+ String, Set<String>> headAndTailTitleDataMap, String locationType) {
StringBuilder html = new StringBuilder(1024);
int colspan;
int preRow = 0;
@@ -1201,16 +1322,17 @@
* @param locationType 浣嶇疆绫诲瀷锛宧ead-澶撮儴锛宼ail-灏鹃儴
* @return
*/
- public List<List<ReportColumn>> getTitle(List<JSONObject> list, int totalColCount, Map<String, Set<String>> headAndTailTitleDataMap, String locationType) {
+ public List<List<ReportColumn>> getTitle(List<JSONObject> list, int totalColCount, Map<
+ String, Set<String>> headAndTailTitleDataMap, String locationType) {
List<List<ReportColumn>> row = new ArrayList<>();
- StringBuilder html = new StringBuilder(1024);
+// StringBuilder html = new StringBuilder(1024);
int colspan;
int preRow = 0;
int preCol = 0;
int curRow;
int curCol;
String value;
- String style;
+// String style;
List<ReportColumn> reportColumns = new ArrayList<>();
for (JSONObject singleObj : list) {
@@ -1220,22 +1342,26 @@
colspan = colspan < 0 ? totalColCount : Math.max(1, colspan);
value = replaceFormDataAndSysData(singleObj.getString(CmnConst.ATTR_SHOW_NAME), headAndTailTitleDataMap, singleObj);
value = value == null ? "" : value;
- if ("1".equals(singleObj.getString(CmnConst.ATTR_IS_TITLE))) {
- style = " class=\"" + CmnConst.CLASS_TR_REPORT_TITLE + "\"";
- } else {
- if ("head".equals(locationType)) {
- style = " class=\"" + CmnConst.CLASS_TR_HEAD + "\"";
- } else {
- style = " class=\"" + CmnConst.CLASS_TR_TAIL + "\"";
- }
- }
+// if ("1".equals(singleObj.getString(CmnConst.ATTR_IS_TITLE))) {
+// style = " class=\"" + CmnConst.CLASS_TR_REPORT_TITLE + "\"";
+// } else {
+// if ("head".equals(locationType)) {
+// style = " class=\"" + CmnConst.CLASS_TR_HEAD + "\"";
+// } else {
+// style = " class=\"" + CmnConst.CLASS_TR_TAIL + "\"";
+// }
+// }
if (preRow < curRow) {
- if (preRow != 0) {
- row.add(getAimNumTdPlaceholderColumn(totalColCount - preCol, 1));
+ if(!reportColumns.isEmpty()){
+ row.add(reportColumns);
+ reportColumns=new ArrayList<>();
}
- if (preRow == 0 && preCol == 0 && preCol < curCol - 1) {
- row.add(getAimNumTdPlaceholderColumn(curCol - preCol - 1, 1));
- }
+// if (preRow != 0) {
+// row.add(getAimNumTdPlaceholderColumn(totalColCount - preCol, 1));
+// }
+// if (preRow == 0 && preCol == 0 && preCol < curCol - 1) {
+// row.add(getAimNumTdPlaceholderColumn(curCol - preCol - 1, 1));
+// }
preCol = curCol;
}
if (preCol < curCol - 1) {
@@ -1255,7 +1381,7 @@
}
}
row.add(reportColumns);
- reportColumns.addAll(getAimNumTdPlaceholderColumn(totalColCount - preCol, 1));
+// reportColumns.addAll(getAimNumTdPlaceholderColumn(totalColCount - preCol, 1));
// row.add();
return row;
}
@@ -1295,7 +1421,8 @@
* @param lastStageFlag 鏄惁鏈骇锛堟暟鎹尯鍒嗙粍瀛楁鏈骇鍜屽垎缁勮〃澶村尯瀛楁閮芥槸鏈骇鎵嶄负鏈骇锛�
* @return
*/
- public JSONObject getStatisticsValueObj(JSONObject valueJsonObject, JSONObject dataAreaFieldConfigObj, String actualValue, String type, boolean lastStageFlag) {
+ public JSONObject getStatisticsValueObj(JSONObject valueJsonObject, JSONObject dataAreaFieldConfigObj, String
+ actualValue, String type, boolean lastStageFlag) {
if (valueJsonObject == null) {
valueJsonObject = new JSONObject();
}
@@ -1356,7 +1483,8 @@
* @param set
* @param recordFse
*/
- public void getHeadAndTailTitleDataMap(Map<String, Set<String>> headAndTailTitleDataMap, Set<String> set, FieldSetEntity recordFse) {
+ public void getHeadAndTailTitleDataMap
+ (Map<String, Set<String>> headAndTailTitleDataMap, Set<String> set, FieldSetEntity recordFse) {
for (String fieldName : set) {
headAndTailTitleDataMap.computeIfAbsent(fieldName, k -> Sets.newLinkedHashSet()).add(recordFse.getString(fieldName));
}
@@ -1498,6 +1626,10 @@
return dealedValueSb.toString();
}
+ public int dealColumnWidth(JSONObject dataAreaFieldConfigObj) {
+ return NumberUtil.isNumber(dataAreaFieldConfigObj.getString(CmnConst.ATTR_WIDTH)) ? NumberUtil.parseInt(dataAreaFieldConfigObj.getString(CmnConst.ATTR_WIDTH)) : 0;
+ }
+
/**
* 鑾峰彇td鐨勫睘鎬�
*
@@ -1577,7 +1709,8 @@
* @param singleObj
* @return
*/
- public String replaceFormDataAndSysData(String str, Map<String, Set<String>> headAndTailTitleDataMap, JSONObject singleObj) {
+ public String replaceFormDataAndSysData(String
+ str, Map<String, Set<String>> headAndTailTitleDataMap, JSONObject singleObj) {
if (StringUtils.isEmpty(str)) {
return "";
}
@@ -1825,7 +1958,8 @@
* @param type 绫诲瀷锛�1-鑾峰彇鐩爣灞炴�э紝鍏朵粬-鎺掗櫎鐩爣灞炴��
* @return
*/
- public JSONObject extendJSONObject(JSONObject aimObj, JSONObject sourceObj, Collection<String> aimAttr, int type) {
+ public JSONObject extendJSONObject(JSONObject aimObj, JSONObject sourceObj, Collection<String> aimAttr,
+ int type) {
if (aimObj == null) {
aimObj = new JSONObject();
}
diff --git a/src/main/java/com/product/server/report/service/GroupReportService.java b/src/main/java/com/product/server/report/service/GroupReportService.java
index 59fa0b1..6caf017 100644
--- a/src/main/java/com/product/server/report/service/GroupReportService.java
+++ b/src/main/java/com/product/server/report/service/GroupReportService.java
@@ -11,6 +11,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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -35,32 +36,33 @@
* @param recordDte 涓氬姟鏁版嵁dte
* @param totalName 鎬昏鍚嶇О
* @param reportConfigMap 鎶ヨ〃閰嶇疆缂撳瓨map
- * @param tableStyle
* @return 鑾峰彇鍒嗙粍鎶ヨ〃鐨勮鎯�
*/
- public JSONObject getReportEntity(DataTableEntity recordDte, String totalName, Map<Integer, List<JSONObject>> reportConfigMap, StringBuilder tableStyle) {
- StringBuilder reportHtml = new StringBuilder(4096);
-
+ public ReportEntity getReportEntity(DataTableEntity recordDte, String totalName, Map<Integer, List<JSONObject>> reportConfigMap) {
+// StringBuilder reportHtml = new StringBuilder(4096);
+ ReportEntity report = new ReportEntity();
// css
// StringBuilder cssHtml = dataListReportService.getCssHtml();
// 鍒嗙粍琛ㄥご鍖哄拰鏁版嵁鍖�
- StringBuilder groupAndDataAreaHtml = new StringBuilder(1024);
+// StringBuilder groupAndDataAreaHtml = new StringBuilder(1024);
+ List<List<ReportColumn>>[] rows = new List[2];
Map<String, Set<String>> headAndTailTitleDataMap = Maps.newHashMap();
int totalColCount = reportConfigMap.get(0).size();
- int dataAreaColCount = getGroupAndDataAreaHtmlAndReturnDataAreaColCount(groupAndDataAreaHtml, reportConfigMap, headAndTailTitleDataMap, recordDte, totalName);
+ int dataAreaColCount = getGroupAndDataAreaAndReturnDataAreaColCount(rows, reportConfigMap, headAndTailTitleDataMap, recordDte, totalName);
totalColCount = Math.max(totalColCount, dataAreaColCount);
// 澶撮儴鏍囬鍖�
- StringBuilder headTitleHtml = null;
+
+ List<List<ReportColumn>> headTitle = null;
if (!reportConfigMap.get(1).isEmpty()) {
- headTitleHtml = dataListReportService.getTitleHtml(reportConfigMap.get(1), totalColCount, headAndTailTitleDataMap, "head");
+ headTitle = dataListReportService.getTitle(reportConfigMap.get(1), totalColCount, headAndTailTitleDataMap, "head");
}
// 搴曢儴鏍囬鍖�
- StringBuilder tailTitleHtml = null;
+ List<List<ReportColumn>> tailTitle = null;
if (!reportConfigMap.get(3).isEmpty()) {
- tailTitleHtml = dataListReportService.getTitleHtml(reportConfigMap.get(3), totalColCount, headAndTailTitleDataMap, "tail");
+ tailTitle = dataListReportService.getTitle(reportConfigMap.get(3), totalColCount, headAndTailTitleDataMap, "tail");
}
// reportHtml.append("\n<body>\n<table").append(tableStyle).append(">")
@@ -70,11 +72,17 @@
// .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;
+ if (rows[0] != null) {
+ if (headTitle == null) {
+ headTitle = new ArrayList<>();
+ }
+ headTitle.addAll(rows[0]);
+ }
+ report.setReportHeader(headTitle);
+
+ report.setReportData(rows[1]);
+ report.setReportTail(tailTitle);
+ return report;
}
/**
@@ -244,7 +252,7 @@
* @param totalName 鎬昏鍚嶇О
* @return 鏁版嵁鍖烘�诲垪鏁�
*/
- private int getGroupAndDataAreaAndReturnDataAreaColCount(List<List<ReportColumn>> groupAndDataArea, Map<Integer, List<JSONObject>> reportConfigMap, Map<String, Set<String>> headAndTailTitleDataMap, DataTableEntity recordDte, String totalName) {
+ private int getGroupAndDataAreaAndReturnDataAreaColCount(List<List<ReportColumn>>[] groupAndDataArea, Map<Integer, List<JSONObject>> reportConfigMap, Map<String, Set<String>> headAndTailTitleDataMap, DataTableEntity recordDte, String totalName) {
// 鍒嗙粍琛ㄥご鍖哄瓧娈电紦瀛榤ap
Map<String, JSONObject> groupAreaFieldConfigMap = dataListReportService.groupAndDataJSONObject2Map(reportConfigMap.get(2));
// 鏁版嵁鍖哄瓧娈电紦瀛榤ap
@@ -336,9 +344,9 @@
// 鏁版嵁鏍囬list
List<JSONObject> dataTitleList = Lists.newArrayList();
// 鑾峰彇鏍囬html
- groupAndDataArea.addAll(getDataAreaTitle(dataTitleList, groupAreaFieldRecordObj, dataAreaFieldConfigMap, groupAreaRangeObj, dataAreaCommonStatisticsFieldNameList));
+ groupAndDataArea[0] = (getDataAreaTitle(dataTitleList, groupAreaFieldRecordObj, dataAreaFieldConfigMap, groupAreaRangeObj, dataAreaCommonStatisticsFieldNameList));
// 鑾峰彇鍐呭html
-// groupAndDataAreaHtml.append(getDataAreaDataHtml(dataTitleList, dataAreaFieldRecordObj, statisticsMap, totalName, dataAreaGroupFieldNameList, dataAreaFieldConfigMap));
+ groupAndDataArea[1] = (getDataAreaData(dataTitleList, dataAreaFieldRecordObj, statisticsMap, totalName, dataAreaGroupFieldNameList, dataAreaFieldConfigMap));
return totalColCount;
}
@@ -723,14 +731,15 @@
List<ReportColumn> columns = new ArrayList<>();
// html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_TITLE).append("\">\n ");
for (JSONObject dataTitleObj : rowList) {
+ ReportColumn column = new ReportColumn();
rowspan = Math.max(1, dataTitleObj.getIntValue(CmnConst.ATTR_ROWSPAN));
colspan = Math.max(1, dataTitleObj.getIntValue(CmnConst.ATTR_COLSPAN));
value = dataTitleObj.getString(CmnConst.ATTR_SHOW_NAME);
if (!StringUtils.isEmpty(dataTitleObj.getString(CmnConst.ATTR_FIELD_INFO))) {
dataAreaFieldName = dataListReportService.fieldInfo2FieldName(dataTitleObj.getString(CmnConst.ATTR_FIELD_INFO));
- value = dataListReportService.dealTdWidth(dataAreaFieldConfigMap.get(dataAreaFieldName), value);
+ column.setColumnWidth(dataListReportService.dealColumnWidth(dataAreaFieldConfigMap.get(dataAreaFieldName)));
+// value = dataListReportService.dealTdWidth(dataAreaFieldConfigMap.get(dataAreaFieldName), value);
}
- ReportColumn column = new ReportColumn();
column.setRowspan(rowspan);
column.setColspan(colspan);
column.setContent(value);
@@ -1046,7 +1055,7 @@
private List<List<ReportColumn>> getDataAreaData(List<JSONObject> dataTitleList, JSONObject dataAreaFieldRecordObj, Map<JSONObject, JSONObject> statisticsMap, String totalName, List<String> dataAreaGroupFieldNameList, Map<String, JSONObject> dataAreaFieldConfigMap) {
List<List<JSONObject>> dataAreaGroupFieldDataList = Lists.newArrayList();
getDataAreaGroupFieldDataList(dataAreaFieldRecordObj, dataAreaGroupFieldDataList, new JSONObject(), 1, 1, dataAreaGroupFieldNameList.size(), null);
-
+ List<List<ReportColumn>> dataRows = new ArrayList<>();
List<JSONObject> groupTitleList = Lists.newArrayList();
JSONObject obj;
for (List<JSONObject> rowList : dataAreaGroupFieldDataList) {
@@ -1054,7 +1063,7 @@
groupTitleList.add(obj);
}
- StringBuilder html = new StringBuilder(1024);
+// StringBuilder html = new StringBuilder(1024);
JSONObject dataAreaGroupFieldObj;
int rowspan;
int colspan;
@@ -1069,6 +1078,7 @@
List<JSONObject> curRowList;
int index;
for (int i = 0; i < dataAreaGroupFieldDataList.size(); i++) {
+ List<ReportColumn> columns = new ArrayList<>();
index = 0;
curRowList = dataAreaGroupFieldDataList.get(i);
if (!curRowList.isEmpty()) {
@@ -1077,22 +1087,28 @@
if (dataAreaGroupFieldObj.isEmpty()) {
continue;
}
- if (index == 0) {
- if ("1".equals(dataAreaGroupFieldObj.getString(CmnConst.ATTR_IS_STATISTICS_FIELD))) {
- html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_STATISTICS).append("\">\n ");
- } else {
- html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_COMMON).append("\">\n ");
- }
- }
+// if (index == 0) {
+// if ("1".equals(dataAreaGroupFieldObj.getString(CmnConst.ATTR_IS_STATISTICS_FIELD))) {
+// html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_STATISTICS).append("\">\n ");
+// } else {
+// html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_COMMON).append("\">\n ");
+// }
+// }
rowspan = Math.max(1, dataAreaGroupFieldObj.getIntValue(CmnConst.ATTR_ROWSPAN));
colspan = Math.max(1, dataAreaGroupFieldObj.getIntValue(CmnConst.ATTR_COLSPAN));
value = dataAreaGroupFieldObj.getString(CmnConst.ATTR_SHOW_NAME);
- html.append("<td rowspan=\"").append(rowspan).append("\" colspan=\"").append(colspan).append("\">").append(value == null ? "" : value).append("</td>");
+ ReportColumn column = new ReportColumn();
+ column.setRowspan(rowspan);
+ column.setColspan(colspan);
+ column.setContent(value);
+ columns.add(column);
+// html.append("<td rowspan=\"").append(rowspan).append("\" colspan=\"").append(colspan).append("\">").append(value == null ? "" : value).append("</td>");
index++;
}
- } else {
- html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_COMMON).append("\">\n ");
}
+// else {
+// html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_COMMON).append("\">\n ");
+// }
groupTitleObj = groupTitleList.get(i);
for (JSONObject dataTitleObj : dataTitleList) {
keyObj = dataListReportService.extendJSONObject((JSONObject) groupTitleObj.clone(), dataTitleObj, Arrays.asList(CmnConst.ATTR_ROWSPAN, CmnConst.ATTR_COLSPAN, CmnConst.ATTR_SHOW_NAME, CmnConst.ATTR_IS_STATISTICS_FIELD, CmnConst.ATTR_REAL_VALUE), -1);
@@ -1122,31 +1138,43 @@
} else {
value = "";
}
- html.append("<td");
+// html.append("<td");
+ ReportColumn column = new ReportColumn();
if (!StringUtils.isEmpty(value)) {
// class
if (!StringUtils.isEmpty(dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL))) {
dataListReportService.extendJSONObject(keyObj, dataAreaFieldConfigObj, Collections.singletonList(CmnConst.ATTR_URL));
- html.append(" class=\"").append(CmnConst.CLASS_TD_CAN_TURN).append("\"");
+// html.append(" class=\"").append(CmnConst.CLASS_TD_CAN_TURN).append("\"");
}
// 瀛楁灞炴��
dataListReportService.getTdAttrObj(keyObj, groupTitleObj);
dataListReportService.getTdAttrObj(keyObj, dataTitleObj);
- html.append(dataListReportService.getTdAttrByObj(keyObj));
+ String attrUrL = keyObj.getString(CmnConst.ATTR_URL);
+ if (!StringUtils.isEmpty(attrUrL)) {
+ column.setPenetrateProperty(attrUrL.toString());
+ column.setPenetrate(true);
+ }
+ for (String key : keyObj.keySet()) {
+ column.addProperty(key, keyObj.getString(key));
+ }
+// html.append(dataListReportService.getTdAttrByObj(keyObj));
// 鏍煎紡
value = dataListReportService.formatValue(dataAreaFieldConfigObj, value);
}
- html.append(">").append(value == null ? "" : value).append("</td>");
+// html.append(">").append(value == null ? "" : value).append("</td>");
+ column.setContent(value);
+ columns.add(column);
}
- html.append("\n</tr>");
+// html.append("\n</tr>");
+ dataRows.add(columns);
}
// 鎬昏
if (!StringUtils.isEmpty(totalName)) {
- html.append(getTotalStatisticsHtml(statisticsMap, dataTitleList, dataAreaFieldConfigMap, dataAreaGroupFieldNameList.size(), getSubCnt(dataAreaFieldRecordObj), totalName));
+ dataRows.add(getTotalStatistics(statisticsMap, dataTitleList, dataAreaFieldConfigMap, dataAreaGroupFieldNameList.size(), getSubCnt(dataAreaFieldRecordObj), totalName));
}
- return null;
+ return dataRows;
}
/**
@@ -1260,6 +1288,86 @@
* @param totalName 鎬昏鍚嶇О
* @return
*/
+ private List<ReportColumn> getTotalStatistics(Map<JSONObject, JSONObject> statisticsMap, List<JSONObject> dataTitleList, Map<String, JSONObject> dataAreaFieldConfigMap, int dataAreaGroupFieldCount, int dataAreaSubCnt, String totalName) {
+ List<ReportColumn> columns = new ArrayList<>();
+// StringBuilder html = new StringBuilder(256);
+// html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_STATISTICS).append("\">\n ");
+// html.append("<td colspan=\"").append(dataAreaGroupFieldCount).append("\">").append(totalName).append("</td>");
+ ReportColumn column = new ReportColumn();
+ columns.add(column);
+ column.setColspan(dataAreaGroupFieldCount);
+ column.setContent(totalName);
+ JSONObject dataTitleObj;
+ JSONObject keyObj;
+ JSONObject dataAreaFieldConfigObj;
+ String statisticsType;
+ JSONObject valueObj;
+ String value;
+ int groupAreaSubCnt;
+ for (int i = 0; i < dataTitleList.size(); i++) {
+ column = new ReportColumn();
+ columns.add(column);
+ dataTitleObj = dataTitleList.get(i);
+ keyObj = dataListReportService.extendJSONObject(null, dataTitleObj, Arrays.asList(CmnConst.ATTR_ROWSPAN, CmnConst.ATTR_COLSPAN, CmnConst.ATTR_SHOW_NAME, CmnConst.ATTR_IS_STATISTICS_FIELD, CmnConst.ATTR_REAL_VALUE), -1);
+ dataAreaFieldConfigObj = dataAreaFieldConfigMap.get(dataListReportService.fieldInfo2FieldName(dataTitleObj.getString(CmnConst.ATTR_FIELD_INFO)));
+ if (dataAreaFieldConfigObj != null) {
+ groupAreaSubCnt = keyObj.getIntValue(CmnConst.ATTR_GROUP_AREA_SUB_CNT);
+ keyObj.remove(CmnConst.ATTR_GROUP_AREA_SUB_CNT);
+ statisticsType = dataAreaFieldConfigObj.getString(CmnConst.ATTR_STATISTICS);
+ valueObj = statisticsMap.get(keyObj);
+ if (valueObj == null || valueObj.isEmpty()) {
+ value = getFinalValue(keyObj, dataAreaFieldConfigObj, statisticsMap);
+ } else {
+ if (CmnConst.ATTR_STATISTICS_AVG.equals(statisticsType) && "1".equals(dataAreaFieldConfigObj.getString(CmnConst.ATTR_AVG_TYPE))) {
+ value = getTwoTypesGroupAvgStatisticsValue(dataAreaSubCnt, groupAreaSubCnt, valueObj, dataAreaFieldConfigObj, statisticsType);
+ } else {
+ value = valueObj.getString(statisticsType);
+ }
+ valueObj.put(CmnConst.ATTR_FINAL_VALUE, value);
+ }
+ } else {
+ value = "";
+ }
+// html.append("<td");
+ if (!StringUtils.isEmpty(value)) {
+ // class
+ if (!StringUtils.isEmpty(dataAreaFieldConfigObj.getString(CmnConst.ATTR_URL))) {
+ dataListReportService.extendJSONObject(keyObj, dataAreaFieldConfigObj, Collections.singletonList(CmnConst.ATTR_URL));
+// html.append(" class=\"").append(CmnConst.CLASS_TD_CAN_TURN).append("\"");
+ }
+ // 瀛楁灞炴��
+ dataListReportService.getTdAttrObj(keyObj, dataTitleObj);
+ String attrUrL = keyObj.getString(CmnConst.ATTR_URL);
+ if (!StringUtils.isEmpty(attrUrL)) {
+ column.setPenetrateProperty(attrUrL.toString());
+ column.setPenetrate(true);
+ }
+ for (String key : keyObj.keySet()) {
+ column.addProperty(key, keyObj.getString(key));
+ }
+// html.append(dataListReportService.getTdAttrByObj(keyObj));
+ // 鏍煎紡
+ value = dataListReportService.formatValue(dataAreaFieldConfigObj, value);
+
+ }
+ column.setContent(value);
+// html.append(">").append(value == null ? "" : value).append("</td>");
+ }
+// html.append("\n</tr>");
+ return columns;
+ }
+
+ /**
+ * 鑾峰彇鎬昏html
+ *
+ * @param statisticsMap 缁熻map
+ * @param dataTitleList 鏁版嵁鏍囬list
+ * @param dataAreaFieldConfigMap 鏁版嵁鍖哄瓧娈电紦瀛榤ap
+ * @param dataAreaGroupFieldCount 鏁版嵁鍖哄垎缁勫瓧娈典釜鏁�
+ * @param dataAreaSubCnt 鏁版嵁鍖轰笅绾у垎缁勯」鏁�
+ * @param totalName 鎬昏鍚嶇О
+ * @return
+ */
private StringBuilder getTotalStatisticsHtml(Map<JSONObject, JSONObject> statisticsMap, List<JSONObject> dataTitleList, Map<String, JSONObject> dataAreaFieldConfigMap, int dataAreaGroupFieldCount, int dataAreaSubCnt, String totalName) {
StringBuilder html = new StringBuilder(256);
html.append("\n<tr class=\"").append(CmnConst.CLASS_TR_DATA_STATISTICS).append("\">\n ");
diff --git a/src/main/java/com/product/server/report/service/ListReportConfigServiceImple.java b/src/main/java/com/product/server/report/service/ListReportConfigServiceImple.java
index c65054e..c7d3c5c 100644
--- a/src/main/java/com/product/server/report/service/ListReportConfigServiceImple.java
+++ b/src/main/java/com/product/server/report/service/ListReportConfigServiceImple.java
@@ -15,7 +15,7 @@
@Service
public class ListReportConfigServiceImple implements ListReportConfigService {
-
+
@Autowired
public BaseDao baseDao;
public BaseDao getBaseDao() {
@@ -25,7 +25,7 @@
this.baseDao = baseDao;
}
public ListReportServer reportServerNew;
-
+
public ListReportServer getReportServerNew() {
return reportServerNew;
}
@@ -81,7 +81,7 @@
}else{
showGroupField[i] = false;//鏄惁鍒嗙粍
}
- }
+ }
//鏄惁鍥哄畾琛ㄥご
if(felset.getString("fix_header").equals("1")){
rc.setFixHeader(true);
@@ -101,7 +101,7 @@
// }else{
// rc.setPage(false);
// }
- DataTableEntity headerData = baseDao.listTable("product_sys_report_header_properties", "report_uuid = '"+tableUuid+"'");
+ DataTableEntity headerData = baseDao.listTable("product_sys_report_header_properties", "report_uuid = '"+tableUuid+"'");
if(headerData.getRows() > 0){
int headerY = headerData.getRows() / fieldData.getRows();//浜岀淮鏁扮粍y
int[][] headerColspan = new int[headerY][fieldData.getRows()];//璺ㄥ垪
@@ -114,7 +114,7 @@
//鍒楀彂鐢熸敼鍙�
if(y != Integer.parseInt(header.getString("header_index").split("-")[1])){
y = Integer.parseInt(header.getString("header_index").split("-")[1]);
-
+
}
headerTitle[y][x] = header.getString("header_name");
headerColspan[y][x] = Integer.parseInt(header.getString("header_colspan"));
@@ -138,10 +138,10 @@
rc.setFormat(showFormat);//瀛楁鏍煎紡
rc.setGroupField(showGroupField);//鏄惁鍒嗙粍
}
-
+
System.out.println(data.getRows());
// rc.setCurrentPage(1);//褰撳墠椤�
-// rc.setTotalPage(data.getRows() / felset.getInteger("page_size"));//鎬婚〉鏁�
+// rc.setTotalCount(data.getRows() / felset.getInteger("page_size"));//鎬婚〉鏁�
// rc.setTotalRow(data.getRows());//鎬绘潯鏁�
rc.setDt(data);
System.out.println(rc.getDt().getRows());
--
Gitblit v1.9.2