主题
指标分析
资源说明
看板的定义
看板为新的resource, 展现形式与Dashboard一样,权限与App一样。在看板列表中可以看到我自己创建的和别人授权给我的。展示模式分卡片样式和列表样式。有搜索、排序、分类功能。
看板结构说明
Kanban
字段 | 类型 | 描述 |
---|---|---|
id | LONG | 看板id |
folderId | LONG | 看板所在文件夹的id |
area | STRING | 看板所在区域,默认为SELF_SERVICE |
title | STRING | 看板的标题 |
createdBy | LONG | 看板创建者的userId |
createdAt | DATE | 看板创建时间 |
updatedBy | LONG | 看板更新者的userId |
updatedAt | DATE | 看板更新时间 |
hsVersion | LONG | 可选,本次编辑的版本号,从0开始,修改前先GET待修改资源获取当前版本号,修改时带上刚刚获取的版本号,服务端会检查并发冲突。不带版本号不检查并发冲突 |
tenantId | LONG | 租户Id |
options | OBJECT | 看板配置信息 |
options.config | OBJECT | 看板配置信息 |
options.config.version | LONG | 看板创建版本,与系统版本一致 |
options.layouts | MAP | 看板里的图表布局信息 |
KanbanDto
字段 | 类型 | 描述 |
---|---|---|
creator | OBJECT | 看板创建者信息 |
updater | OBJECT | 看板更新者信息 |
action | STRING | 权限描述, admin-read-write是管理者权限,read-write是编辑者权限,read是查看者权限 |
isCollaborated | BOOLEAN | 是否协作 |
parents | OBJECT 数组 | 看板所在的文件夹列表 |
menus | LIST<MAP<STRING, STRING>> | 看板的三点菜单列表 |
接口说明
1、新增看板
请求URL
http
POST /api/kanbans HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 看板的共同结构见看板结构说明 |
接口示例
http
POST /api/kanbans HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
// Request Body:
{
"title": "新建看板",
"options": {
"config": {
"version": 4300
},
"layouts": {
}
}
}
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success",
"data": {
"id": 57,
"folderId": 0,
"area": "SELF_SERVICE",
"title": "新建看板",
"options": {
"config": {
"version": 4300
},
"layouts": {
}
},
"createdBy": 28130,
"createdAt": "2023-02-08 18:00:55",
"updatedBy": 28130,
"updatedAt": "2023-02-08 18:00:55"
}
}
2、复制看板
请求URL
http
POST /api/kanbans/{kanbanId}/duplicate HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
无
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 看板的共同结构见看板结构说明 |
接口示例
http
POST /api/kanbans/57/duplicate HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success",
"data": {
"id": 58,
"folderId": 0,
"area": "SELF_SERVICE",
"title": "新建看板 (1)",
"options": {
"config": {
"version": 4300
},
"layouts": {
}
},
"createdBy": 28130,
"createdAt": "2023-02-08 18:06:07",
"updatedBy": 28130,
"updatedAt": "2023-02-08 18:06:07",
"isDelete": false
}
}
3、获取看板中所有的图表数据
请求URL
http
POST /api/kanbans/{kanbanId}/data HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
timeout | Integer | 否 | 查询超时时间 |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 图表数据,每种图表的共同结构见ChartDto结构说明 |
接口示例
http
POST /api/kanbans/25/data?timeout=3000 HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
// Request Body:
[
{
"cacheKey": "01GNXZK96N910XVNFSHPBAAB18",
"appId": 125783,
"options": {
"axes": [
{
"uid": "u125783_3_c10",
"label": "caseWhen",
"kind": "function",
"dataset": 3,
"op": "group",
"args": [
{
"dataset": 3,
"kind": "field",
"op": "c10"
}
],
"datasetId": 3
},
{
"appId": 125783,
"uid": "u125783_3_c22",
"label": "jn1",
"kind": "measure",
"op": "c22",
"datasetId": 3
}
],
"where": [
],
"having": [
],
"sort": [
{
"kind": "reference",
"op": "u125783_3_c22",
"direction": "desc",
"baseUid": "u125783_3_c10"
}
],
"timebar": {
"current": "dateExp",
"dateExp": "All Avaliable Date",
"dateRange": [
],
"show": false
},
"limit": 1000,
"outerWhere": [
]
},
"queryString": {
"refresh": false,
"offset": 0
}
}
]
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success",
"data": [
{
"cacheKey": "01GNXZK96N910XVNFSHPBAAB18",
"data": {
"data": [
[
"华东",
47014195
],
[
"中南",
41179330
],
[
"华北",
21889090
],
[
"西北",
7516840
],
[
"西南",
null
],
[
"东北",
null
]
],
"mapData": [
],
"schema": [
{
"fieldName": "u125783_3_c10",
"tags": {
},
"type": "string",
"originType": "string",
"config": {
},
"visible": true,
"nativeType": "text",
"suggestedTypes": [
"string"
],
"detectedType": "string",
"basicType": "string",
"hideValue": false,
"defaultAggrType": "count"
},
{
"fieldName": "u125783_3_c22",
"tags": {
},
"type": "number",
"originType": "number",
"config": {
"dialectName": "EngineDialect"
},
"visible": true,
"nativeType": "numeric",
"suggestedTypes": [
"number",
"string"
],
"detectedType": "number",
"basicType": "number",
"hideValue": false,
"defaultAggrType": "sum"
}
],
"pagable": true,
"importSwitchable": true,
"validFilterUids": [
]
}
}
]
}
4、获取看板中单个图表数据
请求URL
http
POST /api/kanbans/{kanbanId}/chart-data HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
refresh | STRING | 否 | 是否强制刷新,取图表数据时,true表示不会用缓存,false表示可以使用缓存 |
enableSample | STRING | 否 | enableSample为true的话,后端计算时对基础数据进行采样,每次运算只取前10000行 |
返回对象的格式说明
接口示例
http
POST /api/apps/125783/chart-data HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
// Request Body:
{
"cacheKey": "01GRRANRV0Z8VA84MY52D3WB7F",
"options": {
"where": [
],
"having": [
],
"outerWhere": [
],
"axes": [
{
"uid": "u_1697bb6ffb9592e7_v",
"kind": "field",
"op": "省/自治区",
"dataset": 3
}
],
"sort": [
{
"baseUid": "u_1697bb6ffb9592e7_v",
"kind": "reference",
"op": "u_1697bb6ffb9592e7_v",
"direction": "asc"
}
]
},
"queryString": {
"limit": 100000
}
}
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success",
"data": {
"data": [
[
"上海"
],
[
"云南"
],
[
"内蒙古"
],
[
"北京"
],
[
"吉林"
],
[
"四川"
],
[
"天津"
],
[
"宁夏"
],
[
"安徽"
],
[
"山东"
],
[
"山西"
],
[
"广东"
],
[
"广西"
],
[
"新疆"
],
[
"江苏"
],
[
"江西"
],
[
"河北"
],
[
"河南"
],
[
"浙江"
],
[
"海南"
],
[
"湖北"
],
[
"湖南"
],
[
"甘肃"
],
[
"福建"
],
[
"西藏自治区"
],
[
"贵州"
],
[
"辽宁"
],
[
"重庆"
],
[
"陕西"
],
[
"青海"
],
[
"黑龙江"
]
],
"mapData": [
],
"schema": [
{
"fieldName": "u_1697bb6ffb9592e7_v",
"tags": {
},
"hideValue": false,
"defaultAggrType": "count",
"visible": true,
"type": "string",
"originType": "string",
"config": {
},
"nativeType": "text",
"basicType": "string",
"suggestedTypes": [
"string"
],
"detectedType": "string"
}
],
"pagable": true,
"importSwitchable": true,
"validFilterUids": [
]
}
}
5、获取看板中的图表数据计数
请求URL
http
POST /api/kanbans/{kanbanId}/chart-data/count HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
refresh | STRING | 否 | 是否强制刷新,取图表数据时,true表示不会用缓存,false表示可以使用缓存 |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data.totalHits | INTEGER | 图表数据的总行数 |
接口示例
http
POST /api/kanbans/125783/chart-data/count HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
// Request Body:
{
"cacheKey": "01GRRANRV0Z8VA84MY52D3WB7F",
"options": {
"where": [
],
"having": [
],
"outerWhere": [
],
"axes": [
{
"uid": "u_1697bb6ffb9592e7_v",
"kind": "field",
"op": "省/自治区",
"dataset": 3
}
],
"sort": [
{
"baseUid": "u_1697bb6ffb9592e7_v",
"kind": "reference",
"op": "u_1697bb6ffb9592e7_v",
"direction": "asc"
}
]
},
"queryString": {
"limit": 100000
}
}
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success",
"data": {
"data": [
],
"totalHits": 10
}
}
6、轮询获取看板中的图表数据
请求URL
http
POST /api/kanbans/{kanbanId}/poll-data HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
originRequestId | STRING | 是 | 源请求Id |
timeout | Integer | 否 | 查询超时时间 |
返回对象的格式说明
接口示例
http
POST /api/kanbans/25/poll-data HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
// Request Body:
[
{
"cacheKey": "01GNXZK96N910XVNFSHPBAAB18",
"appId": 125783,
"options": {
"axes": [
{
"uid": "u125783_3_c10",
"label": "caseWhen",
"kind": "function",
"dataset": 3,
"op": "group",
"args": [
{
"dataset": 3,
"kind": "field",
"op": "c10"
}
],
"datasetId": 3
},
{
"appId": 125783,
"uid": "u125783_3_c22",
"label": "jn1",
"kind": "measure",
"op": "c22",
"datasetId": 3
}
],
"where": [
],
"having": [
],
"sort": [
{
"kind": "reference",
"op": "u125783_3_c22",
"direction": "desc",
"baseUid": "u125783_3_c10"
}
],
"timebar": {
"current": "dateExp",
"dateExp": "All Avaliable Date",
"dateRange": [
],
"show": false
},
"limit": 1000,
"outerWhere": [
]
},
"queryString": {
"refresh": false,
"offset": 0
}
}
]
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success",
"data": [
{
"cacheKey": "01GNXZK96N910XVNFSHPBAAB18",
"data": {
"data": [
[
"华东",
47014195
],
[
"中南",
41179330
],
[
"华北",
21889090
],
[
"西北",
7516840
],
[
"西南",
null
],
[
"东北",
null
]
],
"mapData": [
],
"schema": [
{
"fieldName": "u125783_3_c10",
"tags": {
},
"type": "string",
"originType": "string",
"config": {
},
"visible": true,
"nativeType": "text",
"suggestedTypes": [
"string"
],
"detectedType": "string",
"basicType": "string",
"hideValue": false,
"defaultAggrType": "count"
},
{
"fieldName": "u125783_3_c22",
"tags": {
},
"type": "number",
"originType": "number",
"config": {
"dialectName": "EngineDialect"
},
"visible": true,
"nativeType": "numeric",
"suggestedTypes": [
"number",
"string"
],
"detectedType": "number",
"basicType": "number",
"hideValue": false,
"defaultAggrType": "sum"
}
],
"pagable": true,
"importSwitchable": true,
"validFilterUids": [
]
}
}
]
}
7、更新看板
请求URL
http
PUT /api/kanbans/{kanbanId} HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 看板的共同结构见看板结构说明 |
接口示例
http
PUT /api/kanbans/59 HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
// Request Body:
{
"id": 59,
"folderId": 0,
"area": "SELF_SERVICE",
"title": "新建看板",
"options": {
"config": {
"version": 4300
},
"layouts": {
"01GRT32MSJF75XDVYAZVDNJYMQ": {
"i": "01GRT32MSJF75XDVYAZVDNJYMQ",
"x": 0,
"y": 0,
"w": 6,
"h": 6,
"moved": false,
"static": false,
"zIndex": 901,
"type": "chart",
"version": 4300,
"createdAt": "2023/2/9 11:21:33",
"updatedAt": "2023/2/9 11:21:33",
"measures": [
{
"enable": true,
"appId": 126243,
"datasetId": 32,
"fieldName": "c1",
"labelPlaceholder": "日期"
}
],
"dimensions": [
],
"filters": [
]
}
}
},
"createdBy": 11549,
"createdAt": "2023-02-08 18:33:26",
"updatedBy": 11549,
"updatedAt": "2023-02-08 18:33:26",
"isDelete": false
}
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success",
"data": {
"id": 59,
"folderId": 0,
"area": "SELF_SERVICE",
"title": "新建看板",
"options": {
"config": {
"version": 4300
},
"layouts": {
"01GRT32MSJF75XDVYAZVDNJYMQ": {
"static": false,
"moved": false,
"h": 6,
"i": "01GRT32MSJF75XDVYAZVDNJYMQ",
"filters": [
],
"type": "chart",
"version": 4300,
"createdAt": "2023/2/9 11:21:33",
"measures": [
{
"fieldName": "c1",
"enable": true,
"labelPlaceholder": "日期",
"appId": 126243,
"datasetId": 32
}
],
"w": 6,
"x": 0,
"y": 0,
"zIndex": 901,
"updatedAt": "2023/2/9 11:21:33",
"dimensions": [
]
}
}
},
"createdBy": 11549,
"createdAt": "2023-02-08 18:33:26",
"updatedBy": 11549,
"updatedAt": "2023-02-09 11:21:41",
"isDelete": false
}
}
8、分页查询看板
请求URL
http
GET /api/kanbans HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
无
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
limit | INTEGER | 否 | 分页获取个数,默认是1000 |
offset | INTEGER | 否 | 分页偏移量,默认是0 |
orderBy | STRING | 否 | 排序字段 |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 看板的共同结构见看板结构说明 |
totalHits | INTEGER | 看板总数量 |
offset | INTEGER | 当前分页偏移量 |
接口示例
http
GET /api/kanbans HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success",
"data": [
{
"id": 1,
"folderId": 0,
"area": "SELF_SERVICE",
"title": "新建看板",
"options": {
"config": {
"version": 4300
},
"layouts": {
}
},
"createdBy": 28125,
"createdAt": "2022-12-27 10:27:47",
"updatedBy": 28125,
"updatedAt": "2022-12-27 10:27:47",
"isDelete": false
}
],
"totalHits": 44,
"offset": 0
}
9、根据Id查询看板
请求URL
http
GET /api/kanbans/{kanbanId} HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
无
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 看板的共同结构见看板结构说明 |
接口示例
http
GET /api/kanbans/59 HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success",
"data": {
"id": 59,
"folderId": 0,
"area": "SELF_SERVICE",
"title": "新建看板",
"options": {
"config": {
"version": 4300
},
"layouts": {
"01GRT32MSJF75XDVYAZVDNJYMQ": {
"static": false,
"moved": false,
"h": 6,
"i": "01GRT32MSJF75XDVYAZVDNJYMQ",
"filters": [
],
"type": "chart",
"version": 4300,
"createdAt": "2023/2/9 11:21:33",
"measures": [
{
"fieldName": "c1",
"enable": true,
"labelPlaceholder": "日期",
"appId": 126243,
"datasetId": 32
}
],
"w": 6,
"x": 0,
"y": 0,
"zIndex": 901,
"updatedAt": "2023/2/9 11:21:33",
"dimensions": [
]
}
}
},
"createdBy": 11549,
"createdAt": "2023-02-08 18:33:26",
"updatedBy": 11549,
"updatedAt": "2023-02-09 11:21:41",
"isDelete": false,
"creator": {
"id": 11549,
"name": "陈静",
"email": "1057998108@qq.com",
"loginName": "chenjing"
},
"updater": {
"id": 11549,
"name": "陈静",
"email": "1057998108@qq.com",
"loginName": "chenjing"
},
"action": "||admin|read|write",
"parents": [
{
"id": 0,
"title": "personal_area_root_folder",
"options": {
"rootType": "PERSONAL_ROOT_FOLDER"
},
"isDelete": false,
"area": "SELF_SERVICE"
}
]
}
}
10、根据Id删除看板
请求URL
http
DELETE /api/kanbans/{kanbanId} HTTP/1.1
请求参数
request body 请求体
无
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
msg | STRING | 成功返回 success |
接口示例
http
DELETE /api/kanbans/59 HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success"
}
11、导出看板数据
请求URL
http
POST /api/kanbans/{kanbanId}/async-download HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
chartOptions | OBJECT | 否 | 图表配置 |
chartNames | OBJECT | 否 | 图表名称 |
chartOuterWheres | OBJECT | 否 | 图表过滤条件 |
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
timeout | Integer | 否 | 导出超时时间 |
返回对象的格式说明
返回一个zip文件,文件名是看板的名称,解压后的excel文件中每个sheet对应一个图表的聚合数据
12、轮询导出看板数据
请求URL
http
GET /api/kanbans/{kanbanId}/poll-download HTTP/1.1
Accept: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
请求参数
request body 请求体
无
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
originRequestId | STRING | 是 | 源请求Id |
返回对象的格式说明
如果导出任务没有完成,返回PENDING状态;若任务已完成,返回一个zip文件,文件名是看板的名称,解压后的excel文件中每个sheet对应一个图表的聚合数据
13、解除协作
请求URL
http
DELETE /api/kanbans/{kanbanId}/collaborate/cancel HTTP/1.1
请求参数
request body 请求体
无
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
msg | STRING | 成功返回 success |
接口示例
http
DELETE /api/kanbans/59/collaborate/cancel HTTP/1.1
Content-Type: application/json
Cookie: csrf=183f1c4...; sid=26ee552d...; _USER_SESSION_ID=f2a01083...
http
HTTP/1.1 200 Ok
Content-Type: application/json
{
"version": "version@9a5e106#6730f0d",
"code": 0,
"msg": "success"
}