终端用户如何自由自主地组合查询条件 (通用查询)
如上图,这种带有查询表单的报表是常见或常用报表,可提供客户二次筛选数据的功能,但是这种可查询的项目(或字段)都是固定下来的,像上图报表就只能选择“地区”、“城市”、“开始日期”及“结束日期”等四个已设置的条件,再需要的时候,无法增加第五个查询条件(只能要求后台开发修改报表)了,查询条件不够灵活。
为了满足灵活查询,报表工具一般还会提供通用查询的功能,可以由业务人员在查询页面上进行拖拽选出字段,用日历、下拉树、选择按钮等自行选择并设置查询条件,甚至还可以设置字段聚合方式进行分组查询。
下面以润乾报表产品为例,我们看下通用查询的控件组成、原理及基本的使用方法。
组成
通用查询页面由通用查询模块 (上半部分) 和报表模块 (下半部分) 两个独立部分组合而成。
通用查询模块部分提供终端用户拖拽选择查询条件,设置比较符及条件值等功能。
报表模块除了提供通用的报表展现页面,还提供灵活的打印方式,以及多种格式文件的报表导出功能。
注:设计器自带 demo 已提供一套通用的页面,具体可参考如下
1、通用查询入口页面可参考 cqIndex.jsp(路径:demo\raqsoft\guide\jsp);
2、通用查询模块页面参考 cq.jsp(路径:demo\raqsoft\guide\jsp)
3、报表模块页面参考 cqReport.jsp(路径:demo\reportJsp)
基本原理
通用查询的核心包括元数据 JSON 和查询 JSON。
如上图中,通用查询模块的左边部分是由 “元数据 Json+ 通用查询标签(commonQuery)”生成,用户拖拽完后生成的右边部分最终会生成“查询 JSON”,查询 JSON 传入报表模块后,在报表模块内解析就可以进行组合使用了(比如可以拼 sql 条件、拼调用接口 Url 的一部分参数“&p1=v1&p2=v2”等)。
下面稍微认识下元数据 JSON 和查询 JSON:
元数据 JSON包含可选条件字段相关的一些信息,如:
String metadata="\[{name:'group1',fields:\[{name:'EID',title:'员工编号'},{name:'GENDER',title:'性别',referData : \[{name:'男',v:'M'},{name:'女',v:'F'}\]},{name:'SALARY',title:'工资',dataType : 1}\]}\]"
以上元数据 JSON 即包括 3 个可选查询条件(或字段),页面显示的名字(title),数据类型(dataType:这里建议非字符串类型的一定要指定,后面拖拽字段后可选的比较符和数据类型有关)等,另外像“性别”还可以选择控件便于用户选择条件值。
详细的格式及参数说明参考:
http://d.raqsoft.com.cn:6999/report/commonquery/tycxysjjson.html
查询 JSON则是由用户拖拽的查询字段及设置的比较符、条件值等组成,传入报表模块(通过固定参数名 queryJSON 接收),在报表模块的数据集内解析后进行组合使用就可以了(比如可以拼 sql 条件、拼调用接口 Url 的一部分参数等)。
基本使用方法
以实例演示使用方法及过程。
1、 准备元数据 JSON
通用查询最核心的或首要做的就是准备元数据 JSON,有了它,终端用户才能在页面看到可拖拽的项目,从而实现自主组合条件查询。
如上面举例的 JSON 串:
String metadata="\[{name:'group1',fields:\[{name:'EID',title:'员工编号'},{name:'GENDER',title:'性别',referData : \[{name:'男',v:'M'},{name:'女',v:'F'}\]},{name:'SALARY',title:'工资',dataType : 1}\]}\]"
这里我们从通用查询模块的入口 Jsp(cqIndex.jsp)内定义
2、 通用查询发布
通过 Tag 标签 raqsoft:commonQuery发布元数据 JSON(可以是 JSON 字符串、也可以是 JSON 文件所在路径)
同 1,使用 demo 自带的 jsp 文件,可见 cq.jsp
注意:这里除了能发布元数据 JSON 外,在点“查询”的时候,还可以通过 params 这个属性把其他的参数一同传到报表模块,比如传入一些用户信息用于控制权限等。
3、 准备报表模板
报表模块里,主要就是通过脚本数据集(或集算器数据集)处理接收来的“查询 JSON”及 params 传来的其他参数。
比如这个脚本内容(内含详细注释),通过报表的两个固定参数“queryJSON”及“params”接收,通过解析拆分各查询条件及其他参数,用于 httpfile 访问的外部接口 Url 中,动态的从外部接口获取数据。
4、 查看效果
这里我们结合后台输出,看下脚本数据集里对接收到的 queryJSON 及 params 的使用。
点“查询”后,后台输出
从查询 JSON(queryJSON)及 params 中获取到的条件拼到 接口 Url 中。
再切换下 params 里的“lauguage”参数值,看下报表的变化
把 cn 改成 en 传入:
像这种即是实现了报表表头国际化的功能,根据传入的语言编码,可以动态生成对应语言的标题。
另外,通用查询模块还可以方便程序员做其他个性化的功能定制。如控制用户浏览字段及数据范围的权限、字段分类管理、设置下拉树中的数据范围、自定义报表(或统计图)显示样式、重新设计页面跳转逻辑、保存查询状态等。更详细的说明,建议大家前往通用查询教程进行通篇系统的学习:http://d.raqsoft.com.cn:6999/report/commonquery/wdzl1.html
附件:上面的例子可以从这里获取源文件:
通用查询.zip
对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅
嗯,还不太了解好多乾?