圖表分類使用數(shù)據(jù)字典
一般數(shù)據(jù)關(guān)聯(lián)、計算等都是圍繞code進行的,但前端展示需使用更友好的中文名稱。
表格中最容易,2列分別顯示code和name即可。
查詢條件也好辦,實際值用code,顯示值用name。
但圖表比如柱形圖,其分類(橫坐標)是要展示在頁面上的,選擇時只有一個選項,要么code要么name。
如果使用name,則無法再與查詢條件下鉆聯(lián)動。使用code,很不用戶友好。
實際上,分類這也是可以做成數(shù)據(jù)字典的,非常隱蔽。

- 分類還是選code(后續(xù)聯(lián)動就不需要轉(zhuǎn)換)
- 形態(tài)這選擇數(shù)據(jù)字典
- 選擇一個數(shù)據(jù)查詢,分別配置實際值code,顯示值name
臨時性模擬session
BI系統(tǒng)是多租戶的,正式使用時會從saas平臺對接用戶信息。在對接之前為使報表通用,對tenant_id和user_id設(shè)置變量,但不能放全局變量,多人開發(fā)如果租戶、用戶不同會互相覆蓋??梢钥焖偈褂靡粋€jsp頁面來設(shè)置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
圖片自適應(yīng)
單元格使用公式,html顯示內(nèi)容

="<img style='width:200px;height:200px; object-fit: contain;' src='https://path/to/" + "XK20413001001" + ".jpg'/>"
指定了一個200*200的正方形區(qū)域顯示,等比例縮放填充,其余留白。
(瘦高型則左右留白,矮胖型則上下留白)
轉(zhuǎn)換查詢條件
場景是,頁面有很多的查詢條件,比如門店就可能有十幾個,從不同的分類、屬性共同篩選出所需要的門店。
此時,如果直接在帆軟數(shù)據(jù)集的sql里都帶上這些條件,會使sql極為復雜,還需要一堆的判斷(很多條件是可選,但sql種都需要做判斷)。
如果讓前后端在接口中查詢轉(zhuǎn)化成一系列的門店code,一來要增加一個特殊接口,導致接口與查詢項不是簡單的對應(yīng)關(guān)系;更重要的是都轉(zhuǎn)化成code,非常容易就超過了url的8000個字符長度限制。
解決思路:
- 定義模板參數(shù),在此參數(shù)中將頁面的一系列查詢條件轉(zhuǎn)化成stockorg_code
-- 此處以1個sk模擬了前臺的傳參
SQL("洞察數(shù)據(jù)庫","SELECT stockorg_code FROM tenant_1800000143_rst.bi_dim_stockorg where stockorg_sk='"+$sk+"' limit 1",1,1)
- 數(shù)據(jù)集還是簡單的一個code變量in查詢,stockorg_code in ('$stockorg_code')
其他無需改變,報表查詢正常。
此處定義的是模板參數(shù),只適用于當前報表,可以放到全局參數(shù)中,供所有報表調(diào)用。
為區(qū)分全局參數(shù)與模板參數(shù),增加global_前綴,如global_stockorg_code。