页面树结构
转至元数据结尾
转至元数据起始

 汇总的审核流程

  1.       本实例演示一个带汇总的审核流程,具体场景如下:每年年初,各个部门都要填写自己的年度管理费用预算,因此海口、深圳、厦门这三个部门的助理填写了预算表,并送各自的部门经理审批;各个部门的经理审批通过之后,在华南区经理这里进行汇总,再提交到总部的财务经理审核、最后送总经理审核,完成整个预算流程。如图

具体步骤如下:

2.2.1             准备用户

在用户管理中需要准备海口用户、海口经理、深圳用户、深圳经理、厦门用户、厦门经理、华南区经理、财务经理、总经理九个用户,其中财务经理、总经理已经在上一个例子中建立,无需重复建立。相应的,需要建立填报角色、办事处经理、区域经理三个角色。其中海口用户、深圳用户、厦门用户属于填报角色,海口经理、深圳经理、厦门经理属于办事处经理角色。对于这三个角色,都赋予电子表格的操作权限和所有资源的引用权限。

2.2.2             准备回写表

使用mysql客户端或者其它第三方工具,连接Smartbi内置的mysql回写库(writedb),在其中新建t_budget表,用于存储预算表的数据。

字段名称

字段类型

字段说明

YEAR

char(4)

填报的年份

deptid

Varchar(20)

填报的部门ID

metricid

Varchar(20)

填报的科目

val

Double

填报的数值

SQL: CREATE TABLE t_budget (YEAR CHAR(4), deptid VARCHAR(20), metricid VARCHAR(20), val DOUBLE) ENGINE=InnoDB DEFAULT CHARSET=gbk

在数据库中创建好表后,在Smartbi系统中,找到“回写”数据源,通过右键的“数据库管理”功能,将t_budget表引入到系统中。

2.2.3             准备参数

年度管理费用预算是按年按部门填报的,因此需要准备一个填报年月的参数和一个部门参数。基于“SYSTEM知识库”这个数据源新建“填报年份”参数,控件类型下拉列表,为了方便起见,备选值和默认值都是静态值。

基于“SYSTEM知识库”这个数据源新建“填报机构”参数,控件类型下拉树。备选值的SQL为:select g.c_orgid as orgid,g.c_groupalias as groupname from t_group g,t_group pg where pg.c_orgid=? And g.c_pgroupid=pg.c_groupid

默认值去当前用户所在的用户组,SQL为:select c_orgid as orgid,c_groupalias as groupname from t_group where c_orgid=%CurrentUserDefaultDepartmentID()%。其中CurrentUserDefaultDepartmentID是系统的内置函数,从左侧资源树上拖入。

根节点的SQL和默认值SQL相同。

自定义父子关系选择orgid字段。


2.2.4             准备查询

新建一个SQL查询,选择“回写”数据源,输入SQL语句:SELECT YEAR,deptid,metricid,val from t_budget where YEAR=%填报年份% and deptid= %填报机构% order by metricid asc,其中填报年月和填报机构是上一步准备的参数,从左侧节点拖入。点击工具栏上的“高级设置”按钮,在弹出的窗口中,设置缓存策略为“禁止缓存”。


2.2.5             制作可回写的电子表格

在Excel中,使用Smartbi插件登录,制作一张电子表格。表样中,B列为费用明细,C列为编码,D列为预算金额。操作步骤如下:

1)      从右侧的数据集面板中找到上一步创建的查询,将val字段拖动到D6、D7、D8、D9、D10、D11、D12、D13单元格, 并分别设置单元格的过滤条件,metricid与当前行的C列的值对应。

2)      设置D6、D7、D8、D9、D10、D11、D12、D13单元格的填报属性为允许修改,类型是数字。

3)      将C2、D2单元格合并,并设置为引用参数填报机构的值来显示,将B3、C3单元格合并,并设置为引用参数填报年份的值来显示

4)      点击工具栏上的回写规则按钮,在弹出窗口中设置回写规则。数据库选回写,表选择前面导入的t_budget,在列出的字段中,YEAR对应填报年月参数,deptid对应填报机构参数,metricid对应B5单元格,val对应C5单元格。通过复制按钮,复制多条回写规则,分别对应D6、D7、D8、D9、D10、D11、D12、D13单元格。

之后发布报表,命名为“管理费用预算表”。


2.2.6             制作流程

通过定制主界面的“定制流程”进入流程制作窗口。电子表格选择上一步建立的电子表格“管理费用预算表”,汇总相关机构参赛选择“填报机构”,流程参数选择 “填报年份”。

点击下一步,进入下一个界面,设置流程节点。节点1是基层填报,操作选择“填报”角色,节点类型是填报(第一个节点一定都是填报),操作按钮选择“填报”(必选)、 “上报”(必选)。

点击“+”新增一个流程节点,流程名称输入“办事处经理审核”,操作者选择“办事处经理”角色,节点类型是“审核”,操作按钮选择“校验”、“审核”(必选)、“回退”

点击“+”新增一个流程节点,流程名称输入“区域经理汇总”,操作者选择“区域经理”角色,节点类型是“汇总”,操作按钮选择“汇总”(必选)、“上报”(必选)、“回退”

点击“+”新增一个流程节点,流程名称输入“财务经理审核”,操作者选择“财务经理”角色,节点类型是“审核”,操作按钮选择“审核”(必选)、“回退”

点击“+”新增一个流程节点,流程名称输入“总经理审核”,操作者选择“总经理”角色,节点类型是“审核”,操作按钮选择“审核”(必选)、“回退”

点击保存按钮保存流程定义。


2.2.7             设置汇总逻辑

由于流程中存在汇总,需要对业务数据做汇总处理逻辑,因此需要通过编写宏来实现。在流程定义上右键,编辑宏,在宏界面中,新建客户端模块,选择对象是WORKFLOW,事件是“beforeSummary(在汇总之前)”。输入以下脚本

function main(spreadsheetReport, currentNode) {
    var p1 = spreadsheetReport.paramPanelObj.findParamByName('填报机构');
    var p2 = spreadsheetReport.paramPanelObj.findParamByName('填报年份');
    var util = jsloader.resolve("freequery.common.util");
    //删除已有的汇总
    var sql = "delete from t_budget where YEAR='" + p2.value + "' and deptid='" + p1.value + "'";
    var ret = util.remoteInvoke("DataSourceService", "executeUpdate", ["DS.回写", sql]);
    if (ret && ret.succeeded) {
        //计算汇总
        var sql = "insert into t_budget(YEAR,deptid,metricid,val) " +
            "select '" + p2.value + "','" + p1.value + "',metricid,sum(val) " +
            " from t_budget where YEAR='" + p2.value + "' and deptid<>'" +p1.value
            + "'  group by metricid ";
        var ret = util.remoteInvoke("DataSourceService", "executeUpdate", ["DS.回写", sql]);
        if (ret && ret.succeeded) {
            spreadsheetReport.doRefresh();
            return true;
        }
    }
}


2.2.8             开始流程流转

1)      深圳用户进行基层填报

使用深圳用户登录系统,打开“管理费用预算表”这个电子表格,填报年份选择“2017”,填报机构使用默认值,并填写D6、D7、D8、D9、D10、D11、D12、D13各个回写单元格的值。填写完成后,点击“保存”按钮,启动流程。启动流程后,会出现流程相关按钮,并显示当前的流程状态“基层填报”。

点击“上报”按钮,完成当前填报工作,提交到下一个节点。

2)      深圳经理进行办事处经理审核

使用深圳经理用户登录系统,可以看到主界面右上角已经存在待办任务。点击待办任务,进入待办列表。

双击打开管理费用预算表,并显示相关的流程按钮。点击“审核”按钮可以完成审核;点击回退按钮,将流程回退到上一步去修改填报,点击“查看流程日志”按钮查看日志,点击“备注”按钮修改备注信息,点击“办事处经理审核”流程状态,进入图形化的流程状态列表。

点击“审核”按钮,完成审核,流转到下一步。

3)      区域经理汇总

使用华南区经理用户登录系统,可以看到主界面右上角已经存在待办任务。点击待办任务,进入待办列表。

双击打开管理费用预算表,并显示相关的流程按钮。点击“汇总”按钮可以进行汇总处理;点击回退按钮,将流程回退到上一步去。

这时候华南区的数据还没有汇总上来。点击“汇总”按钮,可以看到当前只有深圳完成了填报,海口和厦门的用户还没有提交,因此完成不了汇总。

4)      使用海口用户和厦门用户进行基层填报

分别使用海口用户和厦门用户进行填报,同1)的操作,不再赘述

5)      使用海口经理和厦门经理进行办事处经理审核

分别使用海口经理和厦门经理进行办事处审核,同2)的操作,不再赘述

6)      区域经理汇总

再次使用华南区经理登录,进入待办任务,双击打开“管理费用预算表”。点击“汇总”按钮,这个时候可以发现所有的子机构已经填写完成,点确定完成汇总工作。

执行后,可以看见华南区的汇总数据了。点击“上报”按钮,提交到下一个节点。

7)      财务经理审核

使用财务帐号登录系统,进入待办任务,双击打开“管理费用预算表”。点击“审核”按钮审核数据。

8)      总经理审核

使用总经理登录系统,进入待办任务,双击打开“管理费用预算表”。点击“审核”按钮审核数据。审核后完成这个2017年的管理费用预算审核流程结束

  • 无标签