图表分类使用数据字典
一般数据关联、计算等都是围绕code进行的,但前端展示需使用更友好的中文名称。
表格中最容易,2列分别显示code和name即可。
查询条件也好办,实际值用code,显示值用name。
但图表比如柱形图,其分类(横坐标)是要展示在页面上的,选择时只有一个选项,要么code要么name。
如果使用name,则无法再与查询条件下钻联动。使用code,很不用户友好。
实际上,分类这也是可以做成数据字典的,非常隐蔽。
- 分类还是选code(后续联动就不需要转换)
- 形态这选择数据字典
- 选择一个数据查询,分别配置实际值code,显示值name
临时性模拟session
BI系统是多租户的,正式使用时会从saas平台对接用户信息。在对接之前为使报表通用,对tenant_id和user_id设置变量,但不能放全局变量,多人开发如果租户、用户不同会互相覆盖。可以快速使用一个jsp页面来设置session变量。脚本如下:
<%
String tenant_id = request.getParameter("tenant_id");
session.setAttribute("tenant", tenant_id);
String user_id = request.getParameter("user_id");
session.setAttribute("user_id", user_id);
%>
<%=session.getAttribute("tenant") %>
<%=session.getAttribute("user_id") %>
将此jsp文件部署在帆软的webroot目录下,然后访问:
http://192.168.200.224:8080/webroot/mysession.jsp?tenant_id=1800000143&user_id=2
图片自适应
单元格使用公式,html显示内容
="<img style='width:200px;height:200px; object-fit: contain;' src='https://path/to/" + "XK20413001001" + ".jpg'/>"
指定了一个200*200的正方形区域显示,等比例缩放填充,其余留白。
(瘦高型则左右留白,矮胖型则上下留白)
转换查询条件
场景是,页面有很多的查询条件,比如门店就可能有十几个,从不同的分类、属性共同筛选出所需要的门店。
此时,如果直接在帆软数据集的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。