finereport使用绝招

图表分类使用数据字典 一般数据关联、计算等都是围绕code进行的,但前端展示需使用更友好的中文名称。
表格中最容易,2列分别显示code和name即可。
查询条件也好办,实际值用code,显示值用name。
但图表比如柱形图,其分类(横坐标)是要展示在页面上的,选择时只有一个选项,要么code要么name。
如果使用name,则无法再与查询条件下钻联动。使用code,很不用户友好。
实际上,分类这也是可以做成数据字典的,非常隐蔽。

finereport使用绝招
文章图片
image.png

  1. 分类还是选code(后续联动就不需要转换)
  2. 形态这选择数据字典
  3. 选择一个数据查询,分别配置实际值code,显示值name
临时性模拟session BI系统是多租户的,正式使用时会从saas平台对接用户信息。在对接之前为使报表通用,对tenant_id和user_id设置变量,但不能放全局变量,多人开发如果租户、用户不同会互相覆盖。可以快速使用一个jsp页面来设置session变量。脚本如下:

将此jsp文件部署在帆软的webroot目录下,然后访问:
http://192.168.200.224:8080/webroot/mysession.jsp?tenant_id=1800000143&user_id=2
图片自适应 单元格使用公式,html显示内容

finereport使用绝招
文章图片
image.png
="finereport使用绝招"

指定了一个200*200的正方形区域显示,等比例缩放填充,其余留白。
(瘦高型则左右留白,矮胖型则上下留白)
转换查询条件 【finereport使用绝招】场景是,页面有很多的查询条件,比如门店就可能有十几个,从不同的分类、属性共同筛选出所需要的门店。
此时,如果直接在帆软数据集的sql里都带上这些条件,会使sql极为复杂,还需要一堆的判断(很多条件是可选,但sql种都需要做判断)。
如果让前后端在接口中查询转化成一系列的门店code,一来要增加一个特殊接口,导致接口与查询项不是简单的对应关系;更重要的是都转化成code,非常容易就超过了url的8000个字符长度限制。
解决思路:
  1. 定义模板参数,在此参数中将页面的一系列查询条件转化成stockorg_code
-- 此处以1个sk模拟了前台的传参 SQL("洞察数据库","SELECT stockorg_code FROM tenant_1800000143_rst.bi_dim_stockorg where stockorg_sk='"+$sk+"' limit 1",1,1)

  1. 数据集还是简单的一个code变量in查询,stockorg_code in ('$stockorg_code')
    其他无需改变,报表查询正常。
    此处定义的是模板参数,只适用于当前报表,可以放到全局参数中,供所有报表调用。
    为区分全局参数与模板参数,增加global_前缀,如global_stockorg_code。

    推荐阅读