程序員的自我救贖---2.1:報表系統項目分析


《前言》

(一) Winner2.0 框架基礎分析

(二)PLSQL報表系統

(三)SSO單點登錄

(四) 短信中心與消息中心

(五)錢包系統

(六)GPU支付中心

(七)權限系統

(八)監控系統

(九)會員中心

(十) APP版本控制系統

(十一)Winner前端框架與RPC接口規范講解

(十二)上層應用案例

(十三)總結

 

《報表系統項目分析》

“報表系統”顧名思義是用來做報表用的,但是在Winner當中報表系統經常被我們用來當作網頁版的PL/SQL來使用。

不用Oralce的可能不知道PL/SQL,其實就是SQL客戶端。

往往我們有的項目來不及寫后台,或者各個部門需求的后台列表不一致有“查詢”需求的時候 "PLSQL報表系統"就能幫助我們

解決這類問題。常規意義上報表系統需要具備以下三點功能:

1,提供數據查詢生成報表(高級的需要生成圖表)

2,提供報表下載(高級的可以直接轉發郵件)

3,方便技術免除繁雜的后台開發(特別是僅有查詢的后台列表)

這三點中我最喜歡的也就是第三點,我們來看看Winner框架中PLSQL報表系統的截圖:

 

 

 之前在《事務的使用》中,我有提到一句說我把鎖表偵探放到PLSQL項目中,這樣通過Spotlight監控到數據庫異常

就立馬上PLSQL查詢看是否有鎖表,所以這里PLSQL還起到了一個保存常用sql的功能。 (當然如果是高級管理員可以直接寫成

存儲過程,這里前面有講我們基本很少用存儲過程.)

 

我們看看PLSQL是如何使用的:

 

拿查詢系統內所有VIP用戶舉例,這是銷售部門、客服部門經常要用的一個報表,如果給他們單獨開發一個后台費時又費力,有了PLSQL

就不一樣了,只需要在PLSQL中添加一條SQL即可

 

首先我們寫一條查詢VIP用戶的sql

select t.user_id, 
     t.user_code, 
     t.user_name,
     decode(t.user_level,'0','普通用戶','1','VIP用戶'), 
     t.auth_time
  from tnet_user t
 where t.user_level = 1

Oracle中有decode函數非常方便,Sqlserver中就需要用Case When 來實現。

然后將這條sql添加到報表系統

 

 可以先驗證一下SQL的正確性,這里系統會有很多關鍵字過濾,比如Update,Delete等等都是添加不了的。這樣添加完之后會有兩個問題:

 

1,如果要給這張表單做關鍵字搜索,比如用戶姓名搜索,或者是注冊時間搜索就做不了?

2,這樣添加之后,查詢出來表頭是數據庫字段,給市場人員使用,他們是否能看懂?

 

我們先看看表單呈現出來的效果:

 

 根據以上兩個個問題,我們一個個來講解,其實第一個問題非常簡單,取別名就可以了(decode不識別也是因為沒有加別名)。

select t.user_id "用戶編號", 
     t.user_code "用戶賬戶", 
     t.user_name "用戶姓名",
     decode(t.user_level,'0','普通用戶','1','VIP用戶') "級別", 
     t.auth_time "注冊時間"
  from tnet_user t
 where t.user_level = 1

 

 再來第二個問題,沒有條件搜索怎么解決? Winner的PLSQL優點也是這一塊,支持各種條件搜索,關鍵字、時間 都沒問題,只需要把SQL再改一下

select t.user_id "用戶編號", 
     t.user_code "用戶賬戶", 
     t.user_name "用戶姓名",
     decode(t.user_level,'0','普通用戶','1','VIP用戶') "級別", 
     t.auth_time "注冊時間"
  from tnet_user t
 where  t.user_level = 1 and #t.user_name=:user_name#

 

這里以用戶名查詢為例,添加用戶名查詢,#t.user_name=:user_name# 這種寫法是報表系統自身解析了這種語法,自動識別

有成對“#”的話就判斷為條件搜索,並且會自動在界面上生成查詢框。

 

再看看效果:

 

 

 最后就是,這張報表給誰有權限使用,誰沒有權限使用。說白了就是授權:

 

 

授權界面:

 

 

 大概功能就介紹到這里了,PLSQL報表系統最大的不足就是在圖表這一塊。 如果公司對圖形化報表有要求的話,目前Winner

的PLSQL報表系統還不支持,這一塊最需要升級的。 另外就是我說的,下載 和 郵件發送,目前下載也只支持Excel后續有時間還要擴展

PDF,現在要PDF也只能通過excel去轉,也不有點缺陷,郵件也是要下載之后再轉發。

 

 PLSQL報表系統,我們公開源碼,GitHub下載地址:https://github.com/demon28/PLSQL

 

有興趣一起探討Winner框架的可以加我們QQ群:261083244。或者掃描左側二維碼加群。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM