统计图执行(ChartController)¶
统计图执行接口:获取统计图的 ECharts option 数据(含查询表单参数注入),以及统计图查询表单的渲染模板。
- 接口类型:REST 资源(
@Component继承AbstractRuntimeController;类级produces = MediaType.APPLICATION_JSON_VALUE,方法返回类型为Resource,由 Spring Jackson 序列化为 JSON,据源码) - 基址:
${myapps.context-path.runtime:}/api/runtime - Tag:runtime
公共说明¶
- 鉴权(据源码):类级基址位于
/api/runtime/**,在RestSecurityHandlerInterceptor覆盖范围内,且不在豁免名单(豁免仅覆盖/api/runtime/login.*、/api/runtime/dingding/authlogin、/api/runtime/synchronization.*、URI 以/showjrxml结尾、含/getCustomColumnsInfos、含/accessToken、含/macro、以/clear结尾、含/pages/等,详见 login.md「公共说明 · 鉴权」)。拦截器走Security.getUserIdFromToken(request),未取到再尝试Security.getDebugUserIdFromToken(request),两者皆无则拒绝。故需 accessToken(或 debugToken),可通过 Cookie / 请求头 / query 参数任一方式传递。控制器内getUser()(继承自AbstractRuntimeController)必须能取到非空WebUser,否则在DesUtil.decryptTextByUserId(applicationId, getUser().getId())时即抛 NPE。 - 路径变量
{applicationId}/{chartId}:必填,经 DES 加密(按当前执行用户密钥),服务端在方法入口处DesUtil.decryptTextByUserId(applicationId, getUser().getId())与DesUtil.decryptTextByUserId(chartId, getUser().getId())解密。 - 响应结构:本控制器响应使用统一
Resource(见 ../index.md「统一响应结构」)。
1. 获取统计图的数据内容¶
按 chartId 加载统计图定义;可选 body JSON 中的键值对全部注入 ParamsTable;若统计图配置了查询表单(searchFormId),用查询表单 + 参数构造 searchDocument,再执行统计图脚本(chart.getScripttext(),包装为 JSON.stringify(<script>))生成 ECharts option。返回中同时附带点击图表跳转的视图对象(若有 viewId)。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/{applicationId}/charts/{chartId}(完整:{runtime-context}/api/runtime/{applicationId}/charts/{chartId}) - 鉴权:是(需 accessToken,据源码)
- Tag:runtime
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 软件id(DES 加密密文) |
| chartId | path | string | 是 | 统计图id(DES 加密密文) |
| content | body | string(JSON) | 否 | 请求体 JSON;其中的键值对会被迭代写入 ParamsTable(覆盖同名 query 参数) |
请求体(可选)¶
JSON 对象,字段透传给 ParamsTable(如 _orderby、_pagelines、自定义查询字段等)。无请求体时按 query 参数构造 ParamsTable。
请求示例¶
POST /api/runtime/__APPID__/charts/__CHARTID__ HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...
{
"domainId": "__DOMAINID__"
}
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:Map,固定字段:
- result (Object):统计图脚本执行结果(ECharts option 字符串或对象);脚本异常时为异常消息;
- view (AbstractView|null):chartId 对应统计图跳转视图对象(统计图未配 viewId 时为 null);
- appId (String):统计图所属应用Id(明文)。
成功示例:
{
"errcode": 0,
"errmsg": "ok",
"data": {
"result": { "title": { "text": "销售统计" }, "series": [{ "type": "bar", "data": [10, 20, 30] }] },
"view": { "id": "__VIEWID__", "name": "销售明细" },
"appId": "__APPID__"
},
"errors": null
}
失败示例:
2. 获取查询表单模板¶
按 chartId 加载统计图定义;若配了 searchFormId 则用查询表单 + 当前参数构造 searchDocument,再生成表单 HTML 模板字符串与各字段属性列表(含 commonFilterCondition 通用过滤条件)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/{applicationId}/charts/{chartId}/searchformtemplate(完整:{runtime-context}/api/runtime/{applicationId}/charts/{chartId}/searchformtemplate) - 鉴权:是(需 accessToken,据源码)
- Tag:runtime
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 软件id(DES 加密密文) |
| chartId | path | string | 是 | 统计图id(DES 加密密文) |
请求示例¶
GET /api/runtime/__APPID__/charts/__CHARTID__/searchformtemplate HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:Map,固定字段:
- fields (List<Map<String,Object>>):查询表单各字段属性列表(含表单编辑器自定义 otherProps 合并);
- document (Document):基于查询表单创建的 searchDocument;
- template (String):表单 HTML 模板字符串(含隐藏字段 dy_refreshObj,封装 formid/docid/userid/mapVal);
- commonFilterCondition (Object):统计图通用过滤条件;
- style (Object,可选):表单样式(仅当 form.style 非空时存在)。
成功示例:
{
"errcode": 0,
"errmsg": "ok",
"data": {
"fields": [{ "name": "startDate", "type": "DATE" }],
"document": { "id": "__DOCID__", "formid": "__FORMID__" },
"template": "<input type=\"hidden\" id=\"dy_refreshObj\" formid=\"__FORMID__\" ... />",
"commonFilterCondition": null
},
"errors": null
}
失败示例: