页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

使用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表引入到系统中。

...

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

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

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

...


Image Added

Image Removed

2.2.4             准备查询

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

...


2.2.5             制作可回写的电子表格

...

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

Image RemovedImage Added

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

Image RemovedImage Added

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

Image RemovedImage Added

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

Image RemovedImage Added

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

...


2.2.6             制作流程

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

...

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

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

 


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)      深圳用户进行基层填报

...