From 95fb56170435e4ea0829982679a79597fdea5d17 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Sat, 22 Nov 2025 16:18:19 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1560207430221827]报表代码优化 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1560207430221827 --- .../module/report/api/GetReportTableApi.java | 74 +----- .../report/api/ShowReportDetailApi.java | 81 +------ .../module/report/service/ReportService.java | 13 + .../report/service/ReportServiceImpl.java | 224 +++++++++++++----- 4 files changed, 187 insertions(+), 205 deletions(-) diff --git a/src/main/java/neatlogic/module/report/api/GetReportTableApi.java b/src/main/java/neatlogic/module/report/api/GetReportTableApi.java index da2b4fc..4deda53 100644 --- a/src/main/java/neatlogic/module/report/api/GetReportTableApi.java +++ b/src/main/java/neatlogic/module/report/api/GetReportTableApi.java @@ -21,11 +21,13 @@ import neatlogic.framework.restful.annotation.OperationType; import neatlogic.framework.restful.annotation.Param; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateBinaryStreamApiComponentBase; +import neatlogic.framework.sqlrunner.SqlInfo; import neatlogic.module.report.auth.label.REPORT_BASE; import neatlogic.module.report.dao.mapper.ReportMapper; import neatlogic.module.report.dto.ReportVo; import neatlogic.module.report.service.ReportService; import neatlogic.module.report.util.ReportFreemarkerUtil; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -33,21 +35,12 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.regex.Matcher; -import java.util.regex.Pattern; +import java.util.*; @AuthAction(action = REPORT_BASE.class) @OperationType(type = OperationTypeEnum.SEARCH) @Service public class GetReportTableApi extends PrivateBinaryStreamApiComponentBase { - /** - * 匹配表格 - */ - private final Pattern pattern = Pattern.compile("\\$\\{drawTable\\(.*\\)\\}"); @Resource private ReportMapper reportMapper; @@ -94,20 +87,14 @@ public class GetReportTableApi extends PrivateBinaryStreamApiComponentBase { } String tableContent = null; String tableId = paramObj.getString("tableId"); - Matcher matcher = pattern.matcher(content); - while(matcher.find()) { - String e = matcher.group(); - String data = getFieldValue(e, "data"); - if (Objects.equals(tableId, data)) { - tableContent = e; - String pageSize = getFieldValue(e, "pageSize"); - if (StringUtils.isBlank(pageSize)) { - pageSize = getFieldValue(e, "\"pageSize\""); + SqlInfo currentTableSqlInfo = null; + List tableList = reportService.getTableList(reportVo.getContent()); + if (CollectionUtils.isNotEmpty(tableList)) { + for (SqlInfo sqlInfo : tableList) { + if (Objects.equals(sqlInfo.getId(), tableId)) { + currentTableSqlInfo = sqlInfo; + tableContent = sqlInfo.getTableContent(); } - if (StringUtils.isNotBlank(pageSize)) { - paramObj.put("pageSize", Integer.parseInt(pageSize)); - } - break; } } if (StringUtils.isBlank(tableContent)) { @@ -119,8 +106,9 @@ public class GetReportTableApi extends PrivateBinaryStreamApiComponentBase { PrintWriter out = response.getWriter(); try { - boolean isFirst = request.getHeader("referer") == null || !request.getHeader("referer").contains("report-show/" + reportId); - Map returnMap = reportService.getQuerySqlResultById(tableId, reportVo, paramObj, showColumnsMap); +// boolean isFirst = request.getHeader("referer") == null || !request.getHeader("referer").contains("report-show/" + reportId); +// Map returnMap = reportService.getQuerySqlResultById(tableId, reportVo, paramObj, showColumnsMap); + Map returnMap = reportService.getQuerySqlResult(reportVo, paramObj, showColumnsMap, List.of(tableId), List.of(currentTableSqlInfo)); Map tmpMap = new HashMap<>(); Map commonMap = new HashMap<>(); tmpMap.put("report", returnMap); @@ -141,40 +129,4 @@ public class GetReportTableApi extends PrivateBinaryStreamApiComponentBase { public String getConfig() { return null; } - - private String getFieldValue(String str, String field) { - int beginIndex = str.indexOf(field); - if (beginIndex != -1) { - beginIndex += field.length(); - int index1 = str.indexOf(",", beginIndex); - int index2 = str.indexOf("}", beginIndex); - int endIndex = -1; - if (index1 == -1) { - endIndex = index2; - } else if (index2 == -1) { - endIndex = index1; - } else { - endIndex = Math.min(index1, index2); - } - if (endIndex == -1) { - return null; - } - String value = str.substring(beginIndex, endIndex); - value = value.trim(); - if (!value.startsWith(":")) { - return null; - } - value = value.substring(1); - value = value.trim(); - if (value.startsWith("\"")) { - value = value.substring(1); - } - if (value.endsWith("\"")) { - value = value.substring(0, value.length() - 1); - } - value = value.trim(); - return value; - } - return null; - } } diff --git a/src/main/java/neatlogic/module/report/api/ShowReportDetailApi.java b/src/main/java/neatlogic/module/report/api/ShowReportDetailApi.java index 49572b6..8a6ed3d 100644 --- a/src/main/java/neatlogic/module/report/api/ShowReportDetailApi.java +++ b/src/main/java/neatlogic/module/report/api/ShowReportDetailApi.java @@ -28,7 +28,6 @@ import neatlogic.module.report.dao.mapper.ReportMapper; import neatlogic.module.report.dto.ReportVo; import neatlogic.module.report.service.ReportService; import neatlogic.module.report.util.ReportFreemarkerUtil; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -39,17 +38,11 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; @AuthAction(action = REPORT_BASE.class) @OperationType(type = OperationTypeEnum.SEARCH) @Service public class ShowReportDetailApi extends PrivateBinaryStreamApiComponentBase { - /** - * 匹配表格 - */ - private final Pattern pattern = Pattern.compile("\\$\\{drawTable\\(.*\\)\\}"); @Resource private ReportMapper reportMapper; @@ -96,7 +89,7 @@ public class ShowReportDetailApi extends PrivateBinaryStreamApiComponentBase { if (reportVo == null) { throw new ReportNotFoundException(reportId); } - List tableList = getTableList(reportVo.getContent()); + List tableList = reportService.getTableList(reportVo.getContent()); //out.write(""); //out.write(""); //out.write(""); @@ -124,76 +117,4 @@ public class ShowReportDetailApi extends PrivateBinaryStreamApiComponentBase { out.close(); return null; } - - private List getTableList(String content) { - List sqlInfoList = new ArrayList<>(); - if (StringUtils.isBlank(content)) { - return sqlInfoList; - } - Matcher matcher = pattern.matcher(content); - while(matcher.find()) { - String e = matcher.group(); - String tableId = getFieldValue(e, "data"); - if (StringUtils.isBlank(tableId)) { - tableId = getFieldValue(e, "\"data\""); - if (StringUtils.isBlank(tableId)) { - continue; - } - } - SqlInfo sqlInfo = new SqlInfo(); - sqlInfo.setId(tableId); - sqlInfoList.add(sqlInfo); - String needPage = getFieldValue(e, "needPage"); - if (StringUtils.isBlank(needPage)) { - needPage = getFieldValue(e, "\"needPage\""); - } - if ("true".equalsIgnoreCase(needPage)) { - sqlInfo.setNeedPage(true); - } - String pageSize = getFieldValue(e, "pageSize"); - if (StringUtils.isBlank(pageSize)) { - pageSize = getFieldValue(e, "\"pageSize\""); - } - if (StringUtils.isNotBlank(pageSize)) { - sqlInfo.setPageSize(Integer.parseInt(pageSize)); - } - } - return sqlInfoList; - } - - private String getFieldValue(String str, String field) { - int beginIndex = str.indexOf(field); - if (beginIndex != -1) { - beginIndex += field.length(); - int index1 = str.indexOf(",", beginIndex); - int index2 = str.indexOf("}", beginIndex); - int endIndex = -1; - if (index1 == -1) { - endIndex = index2; - } else if (index2 == -1) { - endIndex = index1; - } else { - endIndex = Math.min(index1, index2); - } - if (endIndex == -1) { - return null; - } - String value = str.substring(beginIndex, endIndex); - value = value.trim(); - if (!value.startsWith(":")) { - return null; - } - value = value.substring(1); - value = value.trim(); - if (value.startsWith("\"")) { - value = value.substring(1); - } - if (value.endsWith("\"")) { - value = value.substring(0, value.length() - 1); - } - value = value.trim(); - return value; - } - return null; - } } diff --git a/src/main/java/neatlogic/module/report/service/ReportService.java b/src/main/java/neatlogic/module/report/service/ReportService.java index c31d1f6..8819e15 100644 --- a/src/main/java/neatlogic/module/report/service/ReportService.java +++ b/src/main/java/neatlogic/module/report/service/ReportService.java @@ -19,10 +19,23 @@ public interface ReportService { @Transactional int deleteReportById(Long reportId); + List getTableList(String content); + Map getQuerySqlResult(ReportVo reportVo, JSONObject paramMap, Map> showColumnsMap); Map getQuerySqlResult(ReportVo reportVo, JSONObject paramMap, Map> showColumnsMap, List tableList); + /** + * + * @param reportVo 报表配置信息 + * @param paramMap 参数数据 + * @param showColumnsMap 显示列信息 + * @param needExecuteSqlIdList 需要执行的sqlId列表,如果为空,代表全部执行 + * @param tableList 表格sql信息列表 + * @return + */ + Map getQuerySqlResult(ReportVo reportVo, JSONObject paramMap, Map> showColumnsMap, List needExecuteSqlIdList, List tableList); + Map getQuerySqlResultById(String id, ReportVo reportVo, JSONObject paramMap, Map> showColumnsMap); void validateReportParamList(List paramList); diff --git a/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java b/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java index 6cbbbf6..1541738 100644 --- a/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java +++ b/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java @@ -40,11 +40,17 @@ import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; @Service public class ReportServiceImpl implements ReportService { Logger logger = LoggerFactory.getLogger(ReportServiceImpl.class); + /** + * 匹配表格 + */ + private final Pattern pattern = Pattern.compile("\\$\\{drawTable\\(.*\\)\\}"); @Resource private ReportMapper reportMapper; @@ -286,13 +292,92 @@ public class ReportServiceImpl implements ReportService { return 1; } + @Override + public List getTableList(String content) { + List sqlInfoList = new ArrayList<>(); + if (StringUtils.isBlank(content)) { + return sqlInfoList; + } + Matcher matcher = pattern.matcher(content); + while(matcher.find()) { + String e = matcher.group(); + String tableId = getFieldValue(e, "data"); + if (StringUtils.isBlank(tableId)) { + tableId = getFieldValue(e, "\"data\""); + if (StringUtils.isBlank(tableId)) { + continue; + } + } + SqlInfo sqlInfo = new SqlInfo(); + sqlInfo.setId(tableId); + sqlInfo.setTableContent(e); + sqlInfoList.add(sqlInfo); + String needPage = getFieldValue(e, "needPage"); + if (StringUtils.isBlank(needPage)) { + needPage = getFieldValue(e, "\"needPage\""); + } + if ("true".equalsIgnoreCase(needPage)) { + sqlInfo.setNeedPage(true); + } + String pageSize = getFieldValue(e, "pageSize"); + if (StringUtils.isBlank(pageSize)) { + pageSize = getFieldValue(e, "\"pageSize\""); + } + if (StringUtils.isNotBlank(pageSize)) { + sqlInfo.setPageSize(Integer.parseInt(pageSize)); + } + } + return sqlInfoList; + } + + private String getFieldValue(String str, String field) { + int beginIndex = str.indexOf(field); + if (beginIndex != -1) { + beginIndex += field.length(); + int index1 = str.indexOf(",", beginIndex); + int index2 = str.indexOf("}", beginIndex); + int endIndex = -1; + if (index1 == -1) { + endIndex = index2; + } else if (index2 == -1) { + endIndex = index1; + } else { + endIndex = Math.min(index1, index2); + } + if (endIndex == -1) { + return null; + } + String value = str.substring(beginIndex, endIndex); + value = value.trim(); + if (!value.startsWith(":")) { + return null; + } + value = value.substring(1); + value = value.trim(); + if (value.startsWith("\"")) { + value = value.substring(1); + } + if (value.endsWith("\"")) { + value = value.substring(0, value.length() - 1); + } + value = value.trim(); + return value; + } + return null; + } + @Override public Map getQuerySqlResult(ReportVo reportVo, JSONObject paramMap, Map> showColumnsMap) { - return getQuerySqlResult(reportVo, paramMap, showColumnsMap, new ArrayList<>()); + return getQuerySqlResult(reportVo, paramMap, showColumnsMap, new ArrayList<>(), new ArrayList<>()); } @Override public Map getQuerySqlResult(ReportVo reportVo, JSONObject paramMap, Map> showColumnsMap, List tableList) { + return getQuerySqlResult(reportVo, paramMap, showColumnsMap, new ArrayList<>(), tableList); + } + + @Override + public Map getQuerySqlResult(ReportVo reportVo, JSONObject paramMap, Map> showColumnsMap, List needExecuteSqlIdList, List tableList) { Map resultMap = new HashMap<>(); if (StringUtils.isBlank(reportVo.getSql())) { return resultMap; @@ -309,84 +394,95 @@ public class ReportServiceImpl implements ReportService { } Map pageMap = new HashMap<>(); Map timeMap = new HashMap<>(); - BasePageVo basePageVo = new BasePageVo(); for (SqlInfo sqlInfo : sqlInfoList) { // 如果SQL设置了延迟加载,第一次访问时不主动获取数据 // if (isFirst) { // continue; // } - long sqlTimeStart = System.currentTimeMillis(); - if (sqlInfo.getNeedPage()) { - basePageVo.setPageSize(sqlInfo.getPageSize()); - PageRowBounds rowBounds = new PageRowBounds(basePageVo.getStartNum(), basePageVo.getPageSize()); - List list = sqlRunner.runSqlById(sqlInfo, paramMap, rowBounds); - if (CollectionUtils.isNotEmpty(list)) { - resultMap.put(sqlInfo.getId(), list); - timeMap.put("SQL_" + sqlInfo.getId() + "_SIZE", (long) list.size()); - } - basePageVo.setRowNum(rowBounds.getRowNum()); - JSONObject pageObj = new JSONObject(); - pageObj.put("rowNum", basePageVo.getRowNum()); - pageObj.put("currentPage", basePageVo.getCurrentPage()); - pageObj.put("pageSize", basePageVo.getPageSize()); - pageObj.put("pageCount", basePageVo.getPageCount()); - pageObj.put("tableId", sqlInfo.getId()); - pageMap.put(sqlInfo.getId(), pageObj); - } else { - List list = sqlRunner.runSqlById(sqlInfo, paramMap); - if (CollectionUtils.isNotEmpty(list)) { - resultMap.put(sqlInfo.getId(), list); - timeMap.put("SQL_" + sqlInfo.getId() + "_SIZE", (long) list.size()); + if (CollectionUtils.isEmpty(needExecuteSqlIdList) || needExecuteSqlIdList.contains(sqlInfo.getId())) { + long sqlTimeStart = System.currentTimeMillis(); + if (sqlInfo.getNeedPage()) { + BasePageVo basePageVo = new BasePageVo(); + Integer currentPage = paramMap.getInteger("currentPage"); + if (currentPage != null) { + basePageVo.setCurrentPage(currentPage); + } + basePageVo.setPageSize(sqlInfo.getPageSize()); + PageRowBounds rowBounds = new PageRowBounds(basePageVo.getStartNum(), basePageVo.getPageSize()); +// List list = sqlRunner.runSqlById(sqlInfo, paramMap, rowBounds); + List list = runSql(sqlRunner, sqlInfo, paramMap, rowBounds, showColumnsMap); + if (CollectionUtils.isNotEmpty(list)) { + resultMap.put(sqlInfo.getId(), list); + timeMap.put("SQL_" + sqlInfo.getId() + "_SIZE", (long) list.size()); + } + basePageVo.setRowNum(rowBounds.getRowNum()); + JSONObject pageObj = new JSONObject(); + pageObj.put("rowNum", basePageVo.getRowNum()); + pageObj.put("currentPage", basePageVo.getCurrentPage()); + pageObj.put("pageSize", basePageVo.getPageSize()); + pageObj.put("pageCount", basePageVo.getPageCount()); + pageObj.put("tableId", sqlInfo.getId()); + pageMap.put(sqlInfo.getId(), pageObj); + } else { +// List list = sqlRunner.runSqlById(sqlInfo, paramMap); + List list = runSql(sqlRunner, sqlInfo, paramMap, null, showColumnsMap); + if (CollectionUtils.isNotEmpty(list)) { + resultMap.put(sqlInfo.getId(), list); + timeMap.put("SQL_" + sqlInfo.getId() + "_SIZE", (long) list.size()); + } } + timeMap.put("SQL_" + sqlInfo.getId(), System.currentTimeMillis() - sqlTimeStart); } - timeMap.put("SQL_" + sqlInfo.getId(), System.currentTimeMillis() - sqlTimeStart); } resultMap.put(ReportConfig.REPORT_PAGE_MAP_KEY, pageMap); - for (SqlInfo sqlInfo : sqlInfoList) { - Object object = resultMap.get(sqlInfo.getId()); - if (object == null) { - continue; - } - List propertyList = sqlInfo.getPropertyList(); - if (object instanceof List) { - List> resultList = new ArrayList<>(); - List list = (List) object; - for (Object obj : list) { - if (obj instanceof Map) { - Map map = (Map) obj; - Map hashMap = new LinkedHashMap<>(); - if (CollectionUtils.isNotEmpty(propertyList)) { - for (String property : propertyList) { - Object value = map.get(property); - if (value == null) { - value = "null"; - } - hashMap.put(property, value); - } - } else { - for (Map.Entry entity : map.entrySet()) { - hashMap.put((String) entity.getKey(), entity.getValue()); - } + resultMap.put(ReportConfig.REPORT_TIME_MAP_KEY, timeMap); + return resultMap; + } + + private List> runSql(SqlRunner sqlRunner, SqlInfo sqlInfo, JSONObject paramMap, PageRowBounds rowBounds, Map> showColumnsMap) { + List list = null; + if (rowBounds != null) { + list = sqlRunner.runSqlById(sqlInfo, paramMap, rowBounds); + } else { + list = sqlRunner.runSqlById(sqlInfo, paramMap); + } + System.out.println("list = " + JSONObject.toJSONString(list)); + List propertyList = sqlInfo.getPropertyList(); + List> resultList = new ArrayList<>(); + for (Object obj : list) { + if (obj instanceof Map) { + Map map = (Map) obj; + Map hashMap = new LinkedHashMap<>(); + if (CollectionUtils.isNotEmpty(propertyList)) { + for (String property : propertyList) { + if (!map.containsKey(property)) { + System.out.println("property = " + property); + } + Object value = map.get(property); + if (value == null) { + value = "null"; } - resultList.add(hashMap); + hashMap.put(property, value); } - } - /* 如果存在表格且存在表格显示列的配置,则筛选显示列并排序 - showColumnMap:key->表格ID;value->配置的表格显示列 - */ - if (MapUtils.isNotEmpty(showColumnsMap)) { - List showColumnList = showColumnsMap.get(sqlInfo.getId()); - if (showColumnList != null) { - List> sqList = selectTableColumns(showColumnList, resultList); - resultList = sqList; + } else { + for (Map.Entry entity : map.entrySet()) { + hashMap.put((String) entity.getKey(), entity.getValue()); } } - resultMap.put(sqlInfo.getId(), resultList); - timeMap.put("SQL_" + sqlInfo.getId() + "_SIZE", (long) resultList.size()); + resultList.add(hashMap); } } - resultMap.put(ReportConfig.REPORT_TIME_MAP_KEY, timeMap); - return resultMap; + /* 如果存在表格且存在表格显示列的配置,则筛选显示列并排序 + showColumnMap:key->表格ID;value->配置的表格显示列 + */ + if (MapUtils.isNotEmpty(showColumnsMap)) { + List showColumnList = showColumnsMap.get(sqlInfo.getId()); + if (showColumnList != null) { + List> sqList = selectTableColumns(showColumnList, resultList); + resultList = sqList; + } + } + return resultList; } @Override -- Gitee From a781b0fd21f4389777224b76f602951d94f6640d Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Sat, 22 Nov 2025 16:25:14 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1560207430221827]报表代码优化 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1560207430221827 --- .../neatlogic/module/report/service/ReportServiceImpl.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java b/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java index 1541738..bb56a75 100644 --- a/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java +++ b/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java @@ -446,7 +446,6 @@ public class ReportServiceImpl implements ReportService { } else { list = sqlRunner.runSqlById(sqlInfo, paramMap); } - System.out.println("list = " + JSONObject.toJSONString(list)); List propertyList = sqlInfo.getPropertyList(); List> resultList = new ArrayList<>(); for (Object obj : list) { @@ -455,9 +454,6 @@ public class ReportServiceImpl implements ReportService { Map hashMap = new LinkedHashMap<>(); if (CollectionUtils.isNotEmpty(propertyList)) { for (String property : propertyList) { - if (!map.containsKey(property)) { - System.out.println("property = " + property); - } Object value = map.get(property); if (value == null) { value = "null"; -- Gitee From 56e31e9eaff160fb008aa2f70363c4ff7754461c Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Sat, 22 Nov 2025 16:57:33 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1560207430221827]报表代码优化 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1560207430221827 --- .../report/service/ReportServiceImpl.java | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java b/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java index bb56a75..2d79f22 100644 --- a/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java +++ b/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java @@ -446,24 +446,12 @@ public class ReportServiceImpl implements ReportService { } else { list = sqlRunner.runSqlById(sqlInfo, paramMap); } - List propertyList = sqlInfo.getPropertyList(); List> resultList = new ArrayList<>(); for (Object obj : list) { - if (obj instanceof Map) { - Map map = (Map) obj; + if (obj instanceof Map map) { Map hashMap = new LinkedHashMap<>(); - if (CollectionUtils.isNotEmpty(propertyList)) { - for (String property : propertyList) { - Object value = map.get(property); - if (value == null) { - value = "null"; - } - hashMap.put(property, value); - } - } else { - for (Map.Entry entity : map.entrySet()) { - hashMap.put((String) entity.getKey(), entity.getValue()); - } + for (Map.Entry entity : map.entrySet()) { + hashMap.put((String) entity.getKey(), entity.getValue()); } resultList.add(hashMap); } -- Gitee From 5d68885bc4398c25209f8d68200ed485c24c39eb Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Sat, 22 Nov 2025 17:04:21 +0800 Subject: [PATCH 4/4] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1560207430221827]报表代码优化 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1560207430221827 --- .../module/report/service/ReportServiceImpl.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java b/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java index 2d79f22..b889d2b 100644 --- a/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java +++ b/src/main/java/neatlogic/module/report/service/ReportServiceImpl.java @@ -446,12 +446,19 @@ public class ReportServiceImpl implements ReportService { } else { list = sqlRunner.runSqlById(sqlInfo, paramMap); } + List propertyList = sqlInfo.getPropertyList(); List> resultList = new ArrayList<>(); for (Object obj : list) { if (obj instanceof Map map) { Map hashMap = new LinkedHashMap<>(); - for (Map.Entry entity : map.entrySet()) { - hashMap.put((String) entity.getKey(), entity.getValue()); + if (CollectionUtils.isNotEmpty(propertyList)) { + for (String property : propertyList) { + hashMap.put(property, map.get(property)); + } + } else { + for (Map.Entry entity : map.entrySet()) { + hashMap.put((String) entity.getKey(), entity.getValue()); + } } resultList.add(hashMap); } -- Gitee