设计时打印模板管理(PrintDesignTimeController)¶
打印设计器设计时 API:JSON 打印模板(基于 Report.printTemplate)的增删改查与批量删除,以及供打印设计器解析数据源的 SQL/视图/表单 Schema 接口。
- 接口类型: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}、{templateId}均为**明文设计时 ID**(与 designer 其他控制器一致,非 runtime 的 DES 加密密文)。 - 响应:统一
Resource(见 ../index.md「统一响应结构」)。成功errcode=0;异常默认errcode=500,errmsg为异常信息。 - HTTP 方法:受
CommonSecurityFilter限制,仅允许GET/POST/HEAD/OPTIONS。 - HTTP 状态码:新建模板接口返回
201 Created(@ResponseStatus),其余接口200 OK;统一Resource仍以errcode表达业务结果。 - 请求体约定:新建/保存模板接收原始 JSON 字符串(
@RequestBody String content,对应完整printTemplateJSON 文档);批量删除接收 JSON 字符串数组(@RequestBody String[])。 - 模板范围:列表与详情仅覆盖
isPrint=1且templateType=PRINT_JSON的报表模板。
1. 获取打印模板列表¶
分页获取指定应用下的 JSON 打印模板列表,可按模块Id过滤、按关键字搜索。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/{applicationId}/print/templates(完整:{designer-context}/api/designtime/applications/{applicationId}/print/templates) - 鉴权:是(需 designerToken)
- Tag:设计时-打印模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| moduleId | query | string | 否 | 模块Id(按模块过滤) |
| searchword | query | string | 否 | 名称/描述搜索关键字 |
| pageNo | query | int | 否 | 当前页数(缺省 1) |
| linesPerPage | query | int | 否 | 每页行数(缺省 10) |
请求示例¶
GET /api/designtime/applications/{applicationId}/print/templates?moduleId=&searchword=&pageNo=1&linesPerPage=10 HTTP/1.1
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:DataPackage<Report>(含分页字段与 datas)。
成功示例:
{
"errcode": 0,
"errmsg": "ok",
"data": {
"linesPerPage": 10,
"pageNo": 1,
"pageCount": 1,
"rowCount": 2,
"datas": [
{ "id": "...", "name": "打印模板名称", "parentId": "<moduleId>", "templateType": "...", "...": "..." }
]
},
"errors": null
}
2. 获取打印模板详情¶
按模板Id读取打印模板,返回模板元数据与 printTemplate JSON 字符串(由前端设计器解析渲染)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/{applicationId}/print/templates/{templateId} - 鉴权:是(需 designerToken)
- Tag:设计时-打印模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| templateId | path | string | 是 | 打印模板Id |
响应¶
data:JSONObject,结构 {id, name, moduleId, templateType, printTemplate}。其中 moduleId 取自 Report.parentId,printTemplate 为设计器 JSON 字符串。
{
"errcode": 0,
"errmsg": "ok",
"data": {
"id": "...",
"name": "打印模板名称",
"moduleId": "<moduleId>",
"templateType": "PRINT_JSON",
"printTemplate": "{...设计器 JSON 字符串...}"
},
"errors": null
}
3. 新建打印模板¶
在指定应用与模块下新建打印模板,请求体为完整的 printTemplate JSON 文档。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/{applicationId}/modules/{moduleId}/print/templates - 鉴权:是(需 designerToken)
- Tag:设计时-打印模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| moduleId | path | string | 是 | 模块Id |
| content | body | string(JSON) | 是 | 完整 printTemplate JSON |
请求体¶
对应打印设计器导出的完整 JSON 文档(含 name、version、组件树、数据源绑定等)。
响应¶
data:JSONObject,仅含 id(新建模板Id)。HTTP 状态码 201 Created。
4. 保存(更新)打印模板¶
按模板Id将最新 printTemplate JSON 写入 Report.printTemplate。
- 接口类型:REST 资源
- 请求方式:
PUT - 请求路径:
/{applicationId}/print/templates/{templateId} - 鉴权:是(需 designerToken)
- Tag:设计时-打印模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| templateId | path | string | 是 | 打印模板Id |
| content | body | string(JSON) | 是 | 完整 printTemplate JSON |
响应¶
data:JSONObject,含 id 与 version(取自 printTemplate.version,缺省 1)。
5. 删除打印模板(可批量)¶
按模板Id数组批量删除打印模板。
- 接口类型:REST 资源
- 请求方式:
DELETE - 请求路径:
/{applicationId}/print/templates - 鉴权:是(需 designerToken)
- Tag:设计时-打印模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| ids | body | string | 是 | 模板Id数组(JSON 数组反序列化为 String[]) |
请求体¶
响应¶
data:String,固定为 "删除成功"。
6. 解析 SQL Schema¶
按给定 SQL 与数据源名解析出可用的列信息(用于打印设计器数据源字段映射,对应打印设计器内 hostRequestBridge.getSqlSchema)。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/{applicationId}/print/sql-schema - 鉴权:是(需 designerToken)
- Tag:设计时-打印模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| content | body | string(JSON) | 是 | 含 sql 与 dataSourceName 的对象 |
请求体¶
响应¶
data:由 printDesignTimeService.parseSqlSchema 返回的 Schema 结构(列信息集合,结构以服务端实际返回为准)。
7. 解析视图 Schema¶
按模块Id与视图Id解析视图的列信息(对应打印设计器内 hostRequestBridge.getViewSchema)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/{applicationId}/print/view-schema - 鉴权:是(需 designerToken)
- Tag:设计时-打印模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| moduleId | query | string | 是 | 模块Id |
| viewId | query | string | 是 | 视图Id |
说明:两个 query 形参均标注
@RequestParam(默认必填)。
请求示例¶
GET /api/designtime/applications/{applicationId}/print/view-schema?moduleId=<moduleId>&viewId=<viewId> HTTP/1.1
响应¶
data:由 printDesignTimeService.parseViewSchema 返回的视图 Schema 结构(列信息集合,结构以服务端实际返回为准)。
8. 解析表单 Schema¶
按模块Id与表单Id解析表单的字段信息(对应打印设计器内 hostRequestBridge.getFormSchema)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/{applicationId}/print/form-schema - 鉴权:是(需 designerToken)
- Tag:设计时-打印模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| moduleId | query | string | 是 | 模块Id |
| formId | query | string | 是 | 表单Id |
说明:两个 query 形参均标注
@RequestParam(默认必填)。
请求示例¶
GET /api/designtime/applications/{applicationId}/print/form-schema?moduleId=<moduleId>&formId=<formId> HTTP/1.1
响应¶
data:由 printDesignTimeService.parseFormSchema 返回的表单字段 Schema 结构(结构以服务端实际返回为准)。