• 报表系统应该如何设计?--开源软件诞生15


    报表系统的设计与探讨--第15篇

    用日志记录“开源软件”的诞生

    【点亮星标】----祈盼着一个鼓励

    博主开源地址:

    码云:https://gitee.com/redragon/redragon-erp

    GitHub:https://github.com/redragon1985/redragon-erp

    什么是报表系统

    报表对于ERP系统是十分重要且与所有功能息息相关的,在信息系统的日常应用中简直可以说是无处不在。报表往往是通过汇总、统计的方式,通过不同的逻辑以及不同的展现形式,最终输出我们在信息系统中输入的数据。

    传统的方式,我们实现一个报表,往往需要代码层面去实现。有一个报表逻辑我们就要根据当前逻辑,编写一套代码来输出显示一个报表。但这种方式无疑是需要消耗高昂的开发成本以实现目的,所以报表系统应运而生。报表系统,简单说就是可以通过配置或最少的开发方式来让用户自己实现自己想要的报表,以更便捷的方式降低了报表的实现成本。

    报表系统解决了哪些问题

    要看报销系统解决了哪些问题,先要看原始的实现方式存在哪些问题,我们一条一条来分析。

    (1) 快速开发报表,除了报表的核心逻辑外,开发多个报表往往需要很多重复的工作量。所以降低开发成本是报表系统最直接的好处。

    (2)离线功能,传统方式在报表生成时,往往是同步的,我们必须等待系统执行完成后,再查看报表或做其他操作。如果在报表的数据量较大的情况下,中间的等待时间往往是无法接受的。而报表系统就可以实现离线的生成报表,异步的查看报表。

    (3)历史报表,传统方式我们并不会存储报表的历史记录,比如你在月初生成了一个报表,如果你不在自己的硬盘里保存它,我们就很难在月底时找到月初生成的报表数据。而报表系统的历史查询功能就更突显了它的优势。

    (4)定时报表、批量报表等更加灵活的报表生成方式,报表系统一般会提供更多更灵活的报表生成方式,而不仅仅局限于点击生成、点击查看,这是原始实现方式不具备的。

    (5)统一的查看路径和查看方式,如果没有报表系统,我们要同时查看多个报表,往往必须多次点击打开不同的模块,找到不同报表,查看的路径和方式复杂多样。而统一的方式更利于我们的日常管理和操作。

    (6)统一的权限控制,报表系统便于我们设置统一的权限逻辑,并进行统一的权限配置,实现报表和数据的严格管控。

    ERP对于报表系统的依赖

    大家都知道ERP系统管理的是企业内部的业务和财务,管理的是企业内一切的资源。这里面涉及的报表不计其数,需要汇总、加工、统计、计算、分析等各种步骤。这让本身就复杂的ERP系统,更为杂乱无章,十分需要一个一体化的解决方案来解决报表操作和处理的各种问题。

    报表系统如何实现

    既然报表系统对于ERP如此重要,下面我们来研究一下如何设计一个报表系统。现在常见的两种报表系统的设计方式如下:

    (1)全配置实现方式(极少代码):用友采用的是此方式。基本实现流程是,通过已经映射好的表结构关系和字段关联,将常用的字段放置于页面,通过可排版的编辑器,让用户自己制作出一个报表模板,并把设置好的字段放置于模板中,最终生成用户想要的报表。但这个过程中不是完全没有编码的工作,有时可能需要一些SQL或逻辑判断来辅助完成。

    此种方式多数只能生成一些不是特别复杂的报表,如果存在复杂的加工、分析逻辑,是很难通过配置方式简单实现的。而对于简单的报表,这种方式的实现门槛就极低了。

    (2)部分代码、部分配置的实现方式:Oracle采用的是此方式。基本实现流程是,通过视图或存储过程生成报表的数据,然后用Excel画出报表的模板,并根据固定的格式填入数据,最终将视图和报表模板配置于报表系统中,从而生成用户想要的报表。这个过程中需要用户熟悉数据库的基本操作,比如SQL、视图、存储过程等。

    此种方式的优势是基本可以用比较少的代码(只涉及报表的核心逻辑)实现所有的复杂报表的需求,而难点也是用户必须具备一定的数据库常用功能的编写和处理能力。而即使是简单的报表也采取了相同的实现流程,所以也需要上述的技术要求。

    总结一下,不管你采用哪种方式实现报表系统,最终的目的一定是方便用户生成报表,所以一定要分析你业务系统使用的场景,以及你产品受众的关注点,去决定如何去设计报表系统。当然除了核心的流程外,一定要兼具离线处理、历史记录、批量报表、定时报表、权限管控等各种功能。

    后记

    如果您对我们正在做的开源软件感兴趣,欢迎各种形式的合作,作为贡献者或直接加入我们!让我们一起打造一套开源的企业级信息化解决方案。

    带你了解不一样的【赤龙ERP】:https://www.redragon-erp.com(赤龙官网查看企业数字化解决方案)

  • 相关阅读:
    Python如何爬取淘宝MM呢?教你一招
    Python爬虫实战之如何爬取百度贴吧帖子?案例详解
    SpringBoot定时任务如何正确运用?案例详解
    JS数组之重排序方法
    JS数组之栈和队列
    JS数组之转换方法
    计算机相关推荐教程
    多维数组
    重新认识变量和数组
    数组
  • 原文地址:https://www.cnblogs.com/redragon/p/13732169.html
Copyright © 2020-2023  润新知