Mixiot报表

Mixiot报表的机制很简单,将需要的报表设计一个excel模板,然后填充数据生成实际报表。其中,如何填充数据是脚本配置的。

报表示意图

1. 脚本示例

{
    "工作簿1名称":[
        {
            "field":"data",
            "block_id":"apim",
            "position":{
                "to":"",
                "from":"A_1"
            },
            "sequence":"cellData",
            "condition":{
                "action":"get_last_statistics",
                "script_uid":"STATISTICS1410094400003"
            },
            "format_function":""
        },
        {
            "field":"data",
            "block_id":"apim",
            "position":{
                "to":"B_10",
                "from":"B_1"
            },
            "sequence":"columnData",
            "condition":{
                "items":10000,
                "action":"get_statistics_list",
                "end_time":"2021-06-30 00:00:00",
                "object_id":"OBJ1343477200007",
                "mapping_id":"",
                "script_uid":"",
                "start_time":"2021-03-29 00:00:00"
            },
            "format_function":""
        },
         {
            "field":"data",
            "block_id":"apim",
            "position":{
                "to":"H_1",
                "from":"C_1"
            },
            "sequence":"rowData",
            "condition":{
                "items":10000,
                "action":"get_statistics_list",
                "end_time":"2021-06-30 00:00:00",
                "object_id":"OBJ1343477200007",
                "mapping_id":"",
                "script_uid":"",
                "start_time":"2021-03-29 00:00:00"
            },
            "format_function":""
        },
        {
            "field":"id,data,created",
            "block_id":"apim",
            "position":{
                "to":"H_3,H_4,H_5",
                "from":"B_3,B_4,B_5"
            },
            "sequence":"columnTableData",
            "condition":{
                "items":10000,
                "action":"get_statistics_list",
                "end_time":"2021-06-30 00:00:00",
                "object_id":"OBJ1343477200007",
                "mapping_id":"",
                "script_uid":"",
                "start_time":"2021-03-29 00:00:00"
            },
            "format_function":""
        },
        {
            "field":"id,data,created",
            "block_id":"apim",
            "position":{
                "to":"A_18,B_18,C_18",
                "from":"A_8,B_8,C_8"
            },
            "sequence":"rowTableData",
            "condition":{
                "items":10000,
                "action":"get_statistics_list",
                "end_time":"2021-06-30 00:00:00",
                "object_id":"OBJ1343477200007",
                "mapping_id":"",
                "script_uid":"",
                "start_time":"2021-03-29 00:00:00"
            },
            "format_function":""
        }
    ]
}

2. 脚本说明

由上述脚本示例可知,json中的第一层主体格式为key-value格式;其中,key为每一个excel的工作簿(sheet)的名称,value则为需要在此工作簿中渲染的数据对象。

注:value是很多object类型数据的列表,其中,每一个object都填充自己内部声明指定的单元格,具体规则在字段解释章节进行说明

综上,如果一个模板包含多个工作簿(sheet),则数据源脚本格式应如下设置:

{
    "工作簿1名称":[
       {
            "field":"data",
            "block_id":"apim",
            "position":{
                "to":"",
                "from":"A_1"
            },
            "sequence":"cellData",
            "condition":{
                "action":"get_last_statistics",
                "script_uid":"STATISTICS1410094400003"
            },
            "format_function":""
        }
    ],
    "工作簿2名称":[
         {
            "field":"data",
            "block_id":"apim",
            "position":{
                "to":"",
                "from":"A_1"
            },
            "sequence":"cellData",
            "condition":{
                "action":"get_last_statistics",
                "script_uid":"STATISTICS1410094400003"
            },
            "format_function":""
        }
    ]
}

3.字段解释

我们只拿一个工作簿的字段进行具体讲解(多工作簿的脚本同理)。

3.1 字段概要

每个工作簿中,每个对象的主要属性如下:

属性 说明
sequence 需要渲染的单元格的格式
position 配合sequence属性,规范起始单元格到终止单元格
format_function 格式化函数,在自定义接口时使用,不用则可置空
condition 请求api需要传递的参数集合
field 需要从api返回结果解析到单元格的字段
block 需要获取数据源的block

3.2 具体解释

  • sequence
可选值 说明
cellData 只渲染一个单元格的数据
columnData 渲染一列单元格的数据
rowData 渲染一行单元格的数据
columnTableData 以列为单位,渲染一块区域单元格的数据
rowTableData 以行为单位,渲染一块区域单元格的数据
  • position

position是一个对象,只有from和to属性

  • from:从哪个单元格开始
  • to:到哪个单元格结束

"position":{"from":"A_2","to":"A_11"}

注:这个参数是配合sequence属性选择数据范围的

可选值 说明 position举例
sequence是cellData情况下 只渲染一个单元格的数据 {"from":"A_1","to":""}
sequence是columnData 渲染一列单元格的数据 {"from":"A_2","to":"A_11"}
sequence是rowData 渲染一行单元格的数据 {"from":"B_2","to":"H_2"}
sequence是columnTableData 以列为单位,渲染一块区域单元格的数据 {"from":"B_3,B_4,B_5","to":"H_3,H_4,H_5"}
sequence是rowTableData 以行为单位,渲染一块区域单元格的数据 {"from":"A_8,B_8,C_8","to":"A_18,B_18,C_18"}
  • format_function

如果需要对请求block的返回结果进行二次处理,则需要在此填写函数名,相当于一个定制化接口函数,默认为空。

在block_id:apim,且action为grid类接口的时候,format_function设置为formatGridData
  • condition

condition是一个key-value的一维对象,里边的key是根据接口要求设置的,具体详见block接口文档。

时间类型的参数

目前,统计计算接口中已经支持时间属性有4个,分别是 "start"、"end"、"id"、"created";他们均支持写php的date函数来定义接口传参所需的时间,比如:

start:"date('Y-m-d 07:00:00',time())", // start为每天 07:00:00
end:"date('Y-m-d 08:00:00',time())", // end为每天 08:00:00
where_and:"[[\"created\",\"=\",\"date('Y-m-d H:i:s', strtotime(date('Y-m', time()) . '-01 00:00:00'))\"]]", // created为每个月1号

具体写法可参考 php 取时间

  • field

field参数是需要解析的api接口返回的字段,如果是一个字段,则直接输入对应字段名称即可,比如:

field:"data"

如果多列|行单元格的时候,可以以英文逗号分隔字段设置,比如:

field:"id,created,data"

但有时统计计算返回的data属性(或者任意一个名字都可以)并不是一个字符串,而是一个数组,而我们想取数组下某一个元素时,此时可如下设置:

// data的值 ["360.00","198.99"]
// data|0 则取data的第一个元素=》"360.00" ,data|1 则取data的第二个元素=》"198.99",以此类推
field:"id,created,data|0
  • block

    block参数代表需要被访问的数据源的block标识,具体参考mixiot的block_id的枚举。

© Mixlinker all right reserved,powered by Gitbook文件修订时间: 2021-11-10 14:21:42

results matching ""

    No results matching ""

    results matching ""

      No results matching ""