程序员的自我救赎---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。或者扫描左侧二维码加群。

posted @ 2017-12-05 16:29  Near_wen  阅读(1404)  评论(3编辑  收藏  举报