设计时交叉报表管理(CrossReportDesignTimeController)¶
交叉报表(CrossReportVO)设计时资源管理:交叉报表的增删改查、批量删除,以及执行 SQL 获取结果集列元信息(供交叉报表设计时配置列字段)。
- 接口类型:REST 资源
- 基址:
${myapps.context-path.designer:}/api/designtime/applications(类级@RequestMapping,produces = 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=500,errmsg为异常信息;保存前重名校验捕获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) | 是 | 含 dataSourceId、sql 的对象 JSON |
请求体¶
说明:服务端通过
DataSourceEnv.getDataBaseDataSourceById取数据源,以Statement.executeQuery(sql)直接执行入参 SQL,仅读取结果集列元信息。
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:List<Map>,每项 {columnLabel, columnName, columnType, columnTypeName}。
成功示例:
{
"errcode": 0,
"errmsg": "ok",
"data": [
{ "columnLabel": "id", "columnName": "id", "columnType": -5, "columnTypeName": "BIGINT" }
],
"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「统一响应结构」)。
data:DataPackage<CrossReportVO>(含分页字段与 datas)。
成功示例:
{
"errcode": 0,
"errmsg": "ok",
"data": {
"linesPerPage": 10,
"pageNo": 1,
"pageCount": 1,
"rowCount": 2,
"datas": [
{ "id": "...", "name": "...", "dataSourceId": "...", "applicationid": "...", "...": "..." }
]
},
"errors": null
}
3. 获取交叉报表详情¶
按交叉报表Id获取完整交叉报表对象。返回前额外查询数据源名并回填 dataSourceName。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/{applicationId}/modules/crossreports/{id} - 鉴权:是(需 designerToken)
- Tag:设计时-交叉报表模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| id | path | string | 是 | 交叉报表Id |
响应¶
data:CrossReportVO 完整对象(含回填的 dataSourceName)。
{ "errcode": 0, "errmsg": "ok", "data": { "id": "...", "name": "...", "dataSourceId": "...", "dataSourceName": "...", "...": "..." }, "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(name、dataSourceId、SQL 配置、行列字段定义等)。
响应¶
data:JSONObject,仅含 id(新建交叉报表Id)。
errcode=40001):
失败示例(其他异常):
5. 更新交叉报表¶
按交叉报表Id更新交叉报表对象。注意路径变量不含 {moduleId};服务端以请求体对象为准,保存前做同级重名校验。
- 接口类型:REST 资源
- 请求方式:
PUT - 请求路径:
/{applicationId}/modules/crossreports/{id} - 鉴权:是(需 designerToken)
- Tag:设计时-交叉报表模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| id | path | string | 是 | 交叉报表Id |
| content | body | string(JSON) | 是 | 交叉报表对象 JSON |
响应¶
data:CrossReportVO 更新后的对象。
{ "errcode": 0, "errmsg": "ok", "data": { "id": "...", "name": "...", "...": "..." }, "errors": null }
errcode=40001):
失败示例(其他异常):
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>) |
请求体¶
响应¶
data:String,固定为 "删除成功"。