跳转至

设计时打印模板管理(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,对应完整 printTemplate JSON 文档);批量删除接收 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
}
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "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
}
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "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。

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


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)。

{ "errcode": 0, "errmsg": "ok", "data": { "id": "<templateId>", "version": 3 }, "errors": null }
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


5. 删除打印模板(可批量)

按模板Id数组批量删除打印模板。

  • 接口类型:REST 资源
  • 请求方式:DELETE
  • 请求路径:/{applicationId}/print/templates
  • 鉴权:是(需 designerToken)
  • Tag:设计时-打印模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 是 应用Id
ids body string 是 模板Id数组(JSON 数组反序列化为 String[])

请求体

["<templateId1>", "<templateId2>"]

响应

data:String,固定为 "删除成功"。

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


6. 解析 SQL Schema

按给定 SQL 与数据源名解析出可用的列信息(用于打印设计器数据源字段映射,对应打印设计器内 hostRequestBridge.getSqlSchema)。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/{applicationId}/print/sql-schema
  • 鉴权:是(需 designerToken)
  • Tag:设计时-打印模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 是 应用Id
content body string(JSON) 是 含 sql 与 dataSourceName 的对象

请求体

{ "sql": "SELECT id, name FROM tlk_xxx", "dataSourceName": "<数据源名>" }

响应

data:由 printDesignTimeService.parseSqlSchema 返回的 Schema 结构(列信息集合,结构以服务端实际返回为准)。

{ "errcode": 0, "errmsg": "ok", "data": "<Schema 结构>", "errors": null }
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


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 结构(列信息集合,结构以服务端实际返回为准)。

{ "errcode": 0, "errmsg": "ok", "data": "<Schema 结构>", "errors": null }
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


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 结构(结构以服务端实际返回为准)。

{ "errcode": 0, "errmsg": "ok", "data": "<Schema 结构>", "errors": null }
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }