跳转至

设计时交叉报表管理(CrossReportDesignTimeController)

交叉报表(CrossReportVO)设计时资源管理:交叉报表的增删改查、批量删除,以及执行 SQL 获取结果集列元信息(供交叉报表设计时配置列字段)。

  • 接口类型:REST 资源
  • 基址${myapps.context-path.designer:}/api/designtime/applications(类级 @RequestMappingproduces = APPLICATION_JSON_VALUE
  • Tag:设计时-交叉报表模块

公共说明

  • 鉴权:是(需 designerToken)。控制器继承自 AbstractDesignTimeController(基类为 @RestController),通过 Security.getDesignerIdFromToken(request) 从 designerToken JWT 中解析设计器用户。鉴权机制详见 index.md「鉴权说明」。
  • 路径变量{applicationId}{moduleId}{id} 均为**明文设计时 ID**(与 designer 其他控制器一致,非 runtime 的 DES 加密密文)。
  • 响应:统一 Resource(见 ../index.md「统一响应结构」)。成功 errcode=0;异常默认 errcode=500errmsg 为异常信息;保存前重名校验捕获 OBPMValidateException 返回 errcode=40001
  • HTTP 方法:受 CommonSecurityFilter 限制,仅允许 GET/POST/HEAD/OPTIONS
  • 请求体约定:POST/PUT 接收原始 JSON 字符串(@RequestBody String content),由服务端用 JSONObject.fromObject 解析;DELETE 接收 JSON 数组字符串(@RequestBody String content),由 JsonPath 解析为 List<String>
  • 路径形态:列表/新建带 {moduleId} 段(/modules/{moduleId}/crossreports);详情/更新/删除仅带 {applicationId} 段(/modules/crossreports/{id}),请留意路径差异。

1. 执行 SQL 获取列信息

按指定数据源执行入参 SQL,返回结果集的列元信息列表(列标签、列名、列类型、列类型名)。源码 @Operation(summary) 误标为「获取交叉报表列表」,实际功能见本节描述与 Javadoc「执行SQL获取Column信息」。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/{applicationId}/modules/{moduleId}/crossreports/execsql(完整:{designer-context}/api/designtime/applications/{applicationId}/modules/{moduleId}/crossreports/execsql
  • 鉴权:是(需 designerToken)
  • Tag:设计时-交叉报表模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
moduleId path string 模块Id
sqlContent body string(JSON) dataSourceIdsql 的对象 JSON

请求体

{ "dataSourceId": "<数据源Id>", "sql": "<待执行的查询 SQL>" }

说明:服务端通过 DataSourceEnv.getDataBaseDataSourceById 取数据源,以 Statement.executeQuery(sql) 直接执行入参 SQL,仅读取结果集列元信息。

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 dataList<Map>,每项 {columnLabel, columnName, columnType, columnTypeName}

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": [
    { "columnLabel": "id", "columnName": "id", "columnType": -5, "columnTypeName": "BIGINT" }
  ],
  "errors": null
}
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


2. 获取交叉报表列表

分页获取指定模块下的交叉报表列表,可按名称或描述关键字查询。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/{applicationId}/modules/{moduleId}/crossreports
  • 鉴权:是(需 designerToken)
  • Tag:设计时-交叉报表模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
moduleId path string 模块Id
searchword query string 按名称或描述查询关键字
pageNo query int 页码(缺省 1
linesPerPage query int 每页条数(缺省 10

请求示例

GET /api/designtime/applications/{applicationId}/modules/{moduleId}/crossreports?searchword=&pageNo=1&linesPerPage=10 HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 dataDataPackage<CrossReportVO>(含分页字段与 datas)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "linesPerPage": 10,
    "pageNo": 1,
    "pageCount": 1,
    "rowCount": 2,
    "datas": [
      { "id": "...", "name": "...", "dataSourceId": "...", "applicationid": "...", "...": "..." }
    ]
  },
  "errors": null
}
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


3. 获取交叉报表详情

按交叉报表Id获取完整交叉报表对象。返回前额外查询数据源名并回填 dataSourceName

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/{applicationId}/modules/crossreports/{id}
  • 鉴权:是(需 designerToken)
  • Tag:设计时-交叉报表模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
id path string 交叉报表Id

响应

dataCrossReportVO 完整对象(含回填的 dataSourceName)。

{ "errcode": 0, "errmsg": "ok", "data": { "id": "...", "name": "...", "dataSourceId": "...", "dataSourceName": "...", "...": "..." }, "errors": null }
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


4. 新建交叉报表

在指定模块下新建交叉报表。parentId 取自路径 {moduleId},保存前做同级重名校验。

  • 接口类型:REST 资源
  • 请求方式POST
  • 请求路径/{applicationId}/modules/{moduleId}/crossreports
  • 鉴权:是(需 designerToken)
  • Tag:设计时-交叉报表模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
moduleId path string 模块Id
content body string(JSON) 交叉报表对象 JSON

请求体

对应 CrossReportVO 对象 JSON(namedataSourceId、SQL 配置、行列字段定义等)。

响应

dataJSONObject,仅含 id(新建交叉报表Id)。

{ "errcode": 0, "errmsg": "ok", "data": { "id": "<交叉报表Id>" }, "errors": null }
失败示例(重名等校验失败,errcode=40001):
{ "errcode": 40001, "errmsg": "名称已经存在!", "data": null, "errors": null }
失败示例(其他异常):
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


5. 更新交叉报表

按交叉报表Id更新交叉报表对象。注意路径变量不含 {moduleId};服务端以请求体对象为准,保存前做同级重名校验。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/{applicationId}/modules/crossreports/{id}
  • 鉴权:是(需 designerToken)
  • Tag:设计时-交叉报表模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
id path string 交叉报表Id
content body string(JSON) 交叉报表对象 JSON

响应

dataCrossReportVO 更新后的对象。

{ "errcode": 0, "errmsg": "ok", "data": { "id": "...", "name": "...", "...": "..." }, "errors": null }
失败示例(校验失败,errcode=40001):
{ "errcode": 40001, "errmsg": "<校验信息>", "data": null, "errors": null }
失败示例(其他异常):
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


6. 删除交叉报表(可批量)

按 id 集合批量删除交叉报表。请求体为 JSON 数组字符串,由 JsonPath 解析为 List<String>(含逐条路径信息收集)。

  • 接口类型:REST 资源
  • 请求方式DELETE
  • 请求路径/{applicationId}/modules/crossreports
  • 鉴权:是(需 designerToken)
  • Tag:设计时-交叉报表模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
content body string(JSON) id 集合(JSON 数组字符串,由 JsonPath 解析为 List<String>

请求体

["<id1>", "<id2>"]

响应

dataString,固定为 "删除成功"

{ "errcode": 0, "errmsg": "ok", "data": "删除成功", "errors": null }
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }