怎样在应用中实现通用查询功能

 

通用查询是业务系统中很常见的需求,相较于普通的、固定的查询,它可以让用户自由的增删查询字段,灵活的设置过滤条件,更精细准确的查出自己想要的数据

商用报表工具大部分都提供这个功能,应用中可以通过集成报表工具来获取相应的能力

我们就以润乾报表为例来看一下如何在应用中添加通用查询功能

为什么以润乾报表为例呢,因为润乾报表 3 高! 专业报表 20 年,功能好,手艺高;用的人多,市场占有率高;价格低、性价比高

整体说明

润乾通用查询页面由通用查询模块(上半部分) 和报表模块(下半部分) 两个独立部分组合而成

imagepng
) 通用查询模块(上半部分)的核心包括元数据 JSON 和查询 JSON

如上图中,通用查询模块的左边部分是由 “元数据 Json+ 通用查询标签(commonQuery)”生成,用户拖拽完后生成的右边部分最终会生成“查询 JSON”, 然后报表模块解析后输出报表

imagepng

集成步骤

1 集成应用包并配置授权

把润乾标准的 j2ee 应用包,拷贝到自己的应用目录下

imagepng

注意:web.xml 文件不能拷贝,而是打开润乾的 web.xml 文件,把其中的内容拷贝到您的 web.xml 文件中并按要求的顺序合并

打开 [WEB 应用根目录]/WEB-INF/raqsoftConfig.xml 文件,配置授权和数据源信息

分别在安装目录下找到以下三个 jsp 文件,后续步骤会陆续用到这些文件,

1、通用查询页面 cqIndex.jsp(路径:demo\raqsoft\guide\jsp);

2、查询模块页面 cq.jsp(路径:demo\raqsoft\guide\jsp)

3、报表模块页面 cqReport.jsp(路径:demo\reportJsp)

通用查询页面 (cqIndex.jsp)由查询模块(cq.jsp)和报表模块 (cqReport.jsp) 两部分组成,模块间相互独立,互不影响

2 准备元数据 JSON 并配置标签

元数据 JSON 的生成方式有很多种,本例以使用直接提供 json 字符串为例,初始化通用查询模块

编辑 cq.jsp,使用 json 字符串生成元数据 JSON:

String metadata = “[{name:‘group1’,fields:[{name:‘EID’,title:‘员工编号’},{name:‘GENDER’,title:‘性别’},{name:‘SALARY’,title:‘工资’}]}]”;

imagepng

然后在 jsp 中定义 Tag 标签raqsoft:commonQuery的属性及其值,用 Tag 标签完成通用查询的解析及运算,按用户配置的属性要求将 HTML 文件流输出到客户端

<raqsoft:commonQuery

metadata=“<%=metadata%>”

/>

3 解析查询 JSON

点击查询后会生成一个 json 串,通称查询 JSON,通过集算器脚本(润乾独有的开源计算引擎)解析该 json,然后把结果传递给报表

示例:新建脚本文件 QueryDS.dfx,内容如下:

imagepng

在 cqReport.jsp 中已将查询 json 赋值给了 queryJSON 参数,因此需在集算器脚本中定义名为 queryJSON 的参数,用于接收通用查询返回的查询 json:

imagepng

imagepng

4 制作报表模块展示数据

新建报表 Query.rpx,使用上一步的集算器脚本作为数据集,报表模板如下:

imagepng

数据集定义:

imagepng

参数定义:

imagepng

5 发布报表并查看

在 cqReport.jsp 中定义报表标签

<report:html name=“report1”

srcType=“file”

reportFileName=“<%=report%>”

/>

然后浏览器中访问通用查询的主页面 cqIndex.jsp

http://localhost:6868/demo/raqsoft/guide/jsp/cqIndex.jsp?rpx=commonQuery/Query.rpx

imagepng

到此一个完整的通用查询功能就集成完毕了,可以自由定义查询条件了

拖拽左上角列出的元数据 json 中的指标到右侧,对指标进行查询、汇总、条件过滤等操作,点击查询按钮,结果报表就出来了

imagepng

更多的,数据库数据怎么生成 json,动态元数据 json 怎么做,集算器脚本还能做什么,可以参考: 通用查询控件使用方法