报表使用文档
一、报表项目,是一个待执行的计划。
报表项目执行的实质是,根据配置的类型和脚本script,从对应接口获取数据,填充到excel或者录入到tableman系统中。
包含的配置项有:
- 项目名称
- 报表名称
- 报表类型
- 执行方式
- 输出方式
- 执行周期
- 关注用户
- 关联映射表
- 关联对象
- 报表模板
- Excel脚本
- Tableman脚本
- 项目描述
示例图:
下面逐个说明
项目名称
配置的项目名称。
报表名称
生成的Excel文件的名字是【报表名称_20211009143900783404】格式
报表类型
分为:年报表、月报表、日报表、班次报表、其他报表 这五种类型
执行方式
手动执行:在报表项目配置完成之后,点击项目列表对应的【手动生成】按钮。
自动执行:选择自动执行会出现执行周期选项。
年:每年执行一次。需要选定每年的几月几号几点执行(整点执行)
月:每个月执行一次。需要选定每月的几号几点几分执行
日:每天执行一次。需要选定每天的几点几分执行
时:每小时执行一次。需要选定分钟数
输出方式
Excel输出和Tableman输出,可以多选,且至少选择一项。
Excel输出需要上传模板文件。
Tableman输出需要在tableman中配置好对应的表和字段。
关注用户
生成的excel后通知到的用户。
关联映射表
该项不影响脚本执行。
关联对象
该项不影响脚本执行。
报表模板
如果输出方式选择了excel,则此处需要上传excel模板,用于接收数据写入。Excel中的sheet名称需要和excel脚本一致,并且sheet名不能超过32个字符
Excel脚本
如果输出方式选择了excel,此处需要配置excel脚本,参考脚本解析规则。
Tableman脚本
如果输出方式选择了tableman,此处需要配置excel脚本,参考脚本解析规则。
项目描述
项目说明。
Excel脚本
Excel脚本无非是告诉程序
- 从哪里获取数据(获取到的数据通常是多条记录,每条记录包含多个字段)
- 获取多少条
- 使用获取结果的哪些(哪个)字段
- 填充到哪个sheet(工作簿)
- 填充到哪个cell (单元格)
简单示例
{
"工作簿1":[
{
"block_id":"dbproxy",
"condition":{
"action":"get_terminal_list",
"block_mapping":"terminal",
"where_and":"[[\"uid\",\"=\",\"AM2021050100281\"]]",
"select":[
"uid",
"name"
]
},
"field":"name",
"position":{
"from":"A_1",
"to":""
},
"sequence":"cellData",
"format_function":""
},
{
"block_id":"apim",
"field":"data",
"position":{
"from":"B_1",
"to":"B_10"
},
"condition":{
"items":10,
"action":"get_statistics_list",
"start_time":"2021-01-29 00:00:00",
"end_time":"2021-01-30 00:00:00",
"object_id":"OBJ1684490200006",
"mapping_id":"",
"script_uid":""
},
"sequence":"columnData",
"format_function":""
}
],
"工作簿2":[
{
"field":"data",
"block_id":"apim",
"position":{
"from":"C_1",
"to":"H_1"
},
"sequence":"rowData",
"condition":{
"items":10,
"action":"get_statistics_list",
"start_time":"2021-01-29 00:00:00",
"end_time":"2021-01-30 00:00:00",
"object_id":"OBJ1684490200006",
"mapping_id":"",
"script_uid":""
},
"format_function":""
},
{
"field":"id,data,created",
"block_id":"apim",
"position":{
"from":"B_3,B_4,B_5",
"to":"H_3,H_4,H_5"
},
"sequence":"columnTableData",
"condition":{
"items":10,
"action":"get_statistics_list",
"end_time":"2021-06-30 00:00:00",
"object_id":"OBJ1684490200006",
"mapping_id":"",
"script_uid":"",
"start_time":"2021-03-29 00:00:00"
},
"format_function":""
},
{
"block_id":"apim",
"condition":{
"items":10,
"action":"get_statistics_list",
"end_time":"2021-06-30 00:00:00",
"object_id":"OBJ1684490200006",
"mapping_id":"",
"script_uid":"",
"start_time":"2021-03-29 00:00:00"
},
"field":"id,data,created",
"sequence":"rowTableData",
"position":{
"from":"A_8,B_8,C_8",
"to":"A_17,B_17,C_17"
},
"format_function":""
}
]
}
脚本说明:
上面的脚本告诉程序:
向名称为【工作簿1】工作簿写入以下数据:
- 从dbproxy获取满足条件的数据,将结果中的name字段填充到A1单元格
- 从apim获取满足条件的数据,将结果中的data字段按照列填充(columnData)的方式填入B1~B10单元格
向名称为【工作簿2】工作簿写入以下数据:
- 从apim获取满足条件的数据,将结果中的name字段按照行填充(rowData)的方式填入C1~H1单元格
- 从apim获取满足条件的数据,将结果中的id,data,created字段按照表格填充(columnTableData)的方式填入B3~H5单元格
- 从apim获取满足条件的数据,将结果中的id,data,created字段按照行填充(rowTableData)的方式填入A8~C17单元格
具体说明参考脚本解析规范
报表执行的结果:
三、Tableman脚本
脚本实例:
为了让报表能够在tableman录入数据,需要首先在tableman中创建响应的数据表和字段
这里假设已经创建了两张表【report_table1】和【report_table2】
【report_table1】包含三个字段【data1,data2,data3】
【report_table2】包含三个字段【value1,value2,value3】
我们的期望是从apim获取5条数据,并将结果的 data,start_time,end_time存入report_table1,从apim获取5条数据,并将结果的 data,start_time,end_time存入report_table2
脚本的写法如下:
{
"report_table1":[
{
"field":"data,start_time,end_time",
"block_id":"apim",
"condition":{
"items":5,
"action":"get_statistics_list",
"object_id":"OBJ1684490200006"
},
"table_field":"data1,data2,data3",
"format_function":""
}
],
"report_table2":[
{
"field":"data,start_time,end_time",
"block_id":"apim",
"condition":{
"items":5,
"action":"get_statistics_list",
"object_id":"OBJ1684490200006"
},
"table_field":"value1,value2,value3",
"format_function":""
}
]
}