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