zoukankan      html  css  js  c++  java
  • 程序员的自我救赎---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。或者扫描左侧二维码加群。

  • 相关阅读:
    PHP引用传值
    PHP快速排序
    PHP冒泡排序法
    Jquery EasyUI datagrid后台数据表格生成及分页详解
    polymer 测试
    imooc movie
    test markdown
    MEAN 27
    MEAN 26
    nodejs 负载均衡
  • 原文地址:https://www.cnblogs.com/demon28/p/7986177.html
Copyright © 2011-2022 走看看