程序员的自我救赎---2.1:报表系统项目分析

《前言》

《目录》

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

(二)PLSQL报表系统

(三)SSO单点登录

(四) 短信中心

(五)钱包系统

(六)GPU支付中心

(七)权限系统

(八)监控系统

(九)会员中心

(十)消息中心

(十一)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。或者扫描左侧二维码加群。

时间: 2024-10-08 13:47:52

程序员的自我救赎---2.1:报表系统项目分析的相关文章

一个程序员的自我救赎

为了找一个能清晰表达我在2017年的状态词语,我搜索了不下百个词语还是未能找到一个贴切的形容,可想我这一年的状态该有多么的糟糕.既然无法汇总,只好通过文字来聚焦我的思绪把这混乱一层一层地剥离.观察和思考. 疲惫的身躯 我细数了一下2017到底有多少可以让我"精神抖擞"的日子,算下来可能也就只有那可怕的10天左右,如果用"智能手环"来表达的话,2017我可能只有10天左右的睡眠质量勉强能达到良好.这是一个往我焦虑感火上加油的数字,我觉得这个数字恰恰应该是一个"

程序员的自我救赎---1.2:代码生成器的使用

<前言> <目录> (一) Winner2.0 框架基础分析 (二) 短信中心 (三)SSO单点登录 (四)PLSQL报表系统 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十)消息中心 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)番外篇 <代码生成器的使用> 今天中午阿杰聊了会,阿杰说看了我写的博客后.发现一个问题,把Winner框架整理成文档,要把Winner框架的核心思想 给写出来,比如

程序员的自我救赎---1.4.2: 核心框架讲解(BLL&amp;Tool)

<前言> <目录> (一) Winner2.0 框架基础分析 (二) 短信中心 (三)SSO单点登录 (四)PLSQL报表系统 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十)消息中心 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)番外篇 <核心框架讲解> 之前想用一篇文章讲完核心框架的三四个程序集,后来写着写着就发现一篇文章写不完,这才想了一下用最少要用三篇. 上一篇讲了一下DAL,其实也没

程序员的自我救赎---11.3:WinService服务

<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十) APP版本控制系统 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)总结 <WinService服务> 说道Windows服务基本每个以.net为主要开发语言的技术团队都会用到这个,Winner2.0中对于WinServices也有

程序员的自我救赎---11.4:FileSystem文件服务

<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十) APP版本控制系统 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)总结 <FileSystem文件服务> 前面写了很多Winner2.0的文章,基本我都是以"首先,开始,最后" 这样的格式体去写,今天换种写法从

程序员的自我救赎---1.4.1: 核心框架讲解(DAL)

<前言> <目录> (一) Winner2.0 框架基础分析 (二) 短信中心 (三)SSO单点登录 (四)PLSQL报表系统 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十)消息中心 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)番外篇 <核心框架讲解> 之前在<Winner2.0框架解决方案命分层规范> 有讲到过Winner框架最重要的三个程序集分别是: Winner.Fram

程序员的自我救赎---2.1:短信中心项目分析

<前言> <目录> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十)消息中心 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)番外篇 <短信中心项目分析> 从本章开始,包括后面的SSO单点登录,钱包系统,GPU支付中心,权限系统,会员中心 都是Jason开发的大作.

程序员的自我救赎---3.1:理解Oauth2.0

<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十) APP版本控制系统 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)总结 <理解Oauth2.0> 关于SSO分两个篇章来讲,先讲讲Oauth2.0,之前还特地百度了一下Oauth怎么读,我们每次交流的时候都直接读字母O·A·U·T

程序员的自我救赎---12.2.1: 虚拟币交易平台(区块链) 上【发行区块链代币】

<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十) APP版本控制系统 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)总结 <虚拟币交易平台(区块链)> --上 [发行区块链代币] 关于对于区块链 或者 比特币还没有一个基础概念的就自行百度吧,什么"去中心化",