跳转至

统计图执行(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

{
  "_orderby": "createDate",
  "_pagelines": "20",
  "domainId": "__DOMAINID__"
}

请求示例

POST /api/runtime/__APPID__/charts/__CHARTID__ HTTP/1.1
Content-Type: application/json
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...

{
  "domainId": "__DOMAINID__"
}

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 dataMap,固定字段: - 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
}

失败示例

{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "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「统一响应结构」)。 dataMap,固定字段: - 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
}

失败示例

{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }