项目里有不少需要导出的数据,渐渐演化成固定报表,使用了GitHub
上开源项目 EasyReport 基本能满足日常需要,但比较明显的问题是:条件
是靠占位
替换变量的方式,虽有默认值
,但是附加条件时任不够灵活。
为了方便使用,就对项目做了部分改造:
将条件调整为
附加
、替换
两种附加
指找到 主执行SQL的where
部分,如当前参数的值不为空值
则附加到where
后替换
指通过特定的语法格式就行占位,再进行变量替换返回完整的可执行SQL,如为替换代码与原系统功能一致
- 利用 JSQLParser 解析SQL,根据配置附加执行内容,代码参考
com.easytoolsoft.easyreport.domain.report.util.JsqlParserWhereConditionHelper
最终代码:
https://github.com/chamsiin1982/EasyReport-2.0.16.1013_Beta
后续可继续定制
- 分页支持:配置可分页报表
- 改造报表渲染方式:现报表组装都是在服务端,当报表数据量超过一定量之后拼接的表格、样式内容就太多,服务端直接返回JSON和报表配置使用JS客户端进行渲染