From 80a310f54039fabd20aecc2677fe6bbc191f4a5c Mon Sep 17 00:00:00 2001 From: 6c <420680616@qq.com> Date: 星期一, 11 八月 2025 14:40:37 +0800 Subject: [PATCH] 报表数据源解析,报表解析-添加{@@}内可以写bean方法 --- src/main/java/com/product/server/report/service/DataListReportService.java | 20 +++++++++++++++++--- 1 files changed, 17 insertions(+), 3 deletions(-) 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 adc1c2b..2ddefa8 100644 --- a/src/main/java/com/product/server/report/service/DataListReportService.java +++ b/src/main/java/com/product/server/report/service/DataListReportService.java @@ -19,6 +19,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.core.util.ReflectUtil; import com.product.module.data.service.SystemDataExportService; import com.product.server.report.config.CmnConst; import com.product.server.report.config.ReportCode; @@ -992,11 +993,24 @@ Object result; String value; try { - result = BaseUtil.executeExpression(executeContent); + String reg = "\\w+\\.\\w+\\((\\w+)?((,\\w+)*)?\\)"; + if (executeContent.matches(reg)) { + int split1 = executeContent.indexOf("."); + int split2 = executeContent.indexOf("("); + String beanName = executeContent.substring(0, split1); + String methodName = executeContent.substring(split1 + 1, split2); + String paramStr = executeContent.substring(split2 + 1, executeContent.length() - 1); + if (StringUtils.isEmpty(paramStr)) { + result = ReflectUtil.invoke(beanName, methodName, new Object[]{}); + } else { + result = ReflectUtil.invoke(beanName, methodName, Arrays.asList(paramStr.split(",")).toArray()); + } + } else { + result = BaseUtil.executeExpression(executeContent); + } value = result.toString(); } catch (Exception e) { - SpringMVCContextHolder.getSystemLogger().error(e); - value = ""; + throw new BaseException(ReportCode.APPLY_SQL_FAIL.getValue(), ReportCode.APPLY_SQL_FAIL.getText() + e.getMessage()); } sqlText = sqlText.replace(suitContent, value); } -- Gitblit v1.9.2