finereport使用绝招
图表分类使用数据字典
一般数据关联、计算等都是围绕code进行的,但前端展示需使用更友好的中文名称。
表格中最容易,2列分别显示code和name即可。
查询条件也好办,实际值用code,显示值用name。
但图表比如柱形图,其分类(横坐标)是要展示在页面上的,选择时只有一个选项,要么code要么name。
如果使用name,则无法再与查询条件下钻联动。使用code,很不用户友好。
实际上,分类这也是可以做成数据字典的,非常隐蔽。
文章图片
image.png
- 分类还是选code(后续联动就不需要转换)
- 形态这选择数据字典
- 选择一个数据查询,分别配置实际值code,显示值name
将此jsp文件部署在帆软的webroot目录下,然后访问:
http://192.168.200.224:8080/webroot/mysession.jsp?tenant_id=1800000143&user_id=2
图片自适应 单元格使用公式,html显示内容
文章图片
image.png
=""
指定了一个200*200的正方形区域显示,等比例缩放填充,其余留白。
(瘦高型则左右留白,矮胖型则上下留白)
转换查询条件 【finereport使用绝招】场景是,页面有很多的查询条件,比如门店就可能有十几个,从不同的分类、属性共同筛选出所需要的门店。
此时,如果直接在帆软数据集的sql里都带上这些条件,会使sql极为复杂,还需要一堆的判断(很多条件是可选,但sql种都需要做判断)。
如果让前后端在接口中查询转化成一系列的门店code,一来要增加一个特殊接口,导致接口与查询项不是简单的对应关系;更重要的是都转化成code,非常容易就超过了url的8000个字符长度限制。
解决思路:
- 定义模板参数,在此参数中将页面的一系列查询条件转化成stockorg_code
-- 此处以1个sk模拟了前台的传参
SQL("洞察数据库","SELECT stockorg_code FROM tenant_1800000143_rst.bi_dim_stockorg where stockorg_sk='"+$sk+"' limit 1",1,1)
- 数据集还是简单的一个code变量in查询,stockorg_code in ('$stockorg_code')
其他无需改变,报表查询正常。
此处定义的是模板参数,只适用于当前报表,可以放到全局参数中,供所有报表调用。
为区分全局参数与模板参数,增加global_前缀,如global_stockorg_code。
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小