报表的技术思路和自定义

SmartERP提供了强大的报表功能,实现的记录思路如下:

  • 系统支持的报表,定义在表 e_organization_report 中,用户除了需要具备“机构”、“统计报表”权限,需要另外满足字段 permission_module 和 permission_name(默认为view_resource) 定义的模块权限。
  • 进入系统的“机构和用户” -> “统计报表”,左下角的“添加”,客户选择需要的报表,每个机构的报表细节保存在表 e_organization_report_relation 中。点击“编辑”,自定义报表名称和默认参数值。
  • 在界面配置参数提交后,参数传递给报表的处理存储过程,返回数据,界面显示。

在报表存储过程中,比如 es_report_order_monthly_summary,包含了4个通用参数:

  1. @id smallint,报表编号。
  2. @cross_branches bit,是否统计跨机构的数据(默认否)。
  3. @export bit,当前是否为导出操作(默认否)。
  4. @etsoo_log_detail ntext,日志信息。

每一个存储过程,首先返回列信息,表格定义如下:DECLARE @columns TABLE(id nvarchar(128), kind tinyint, width smallint),字段 id 是数据列的名称,也是列标题(可以是翻译编号,如 name 表示 名称,见 e_translation_item);字段 kind 是数据类型,1 - 居左文本,2 - 居中文本或数字,8 - 居右货币,默认居右数字;字段 width 是数据界面呈现的列宽度单位为像素。

其次是报表数据,在非导出操作时,返回汇总信息,invisibles - 非可见字段,category - 图表标签名,fields - 图标数据字段,date_label - 日期,如:SELECT 'count=0|sum=1,2' AS settings, '0' AS invisibles, 'month' AS category, '1' AS fields, CONVERT(varchar(20), GETDATE(), 111) AS date_label;;还可以返回右键菜单定义,如:SELECT 'view_customer' AS name, NULL AS url, 'id={id}' AS paras, 'customer' AS icon。