Excel 导入运行时(ExcelImportRuntimeController)¶
Excel 导入运行时接口:当导入配置未提供静态模板文件(templatePath 为空)而仅配置 JSON 模板(jsonTemplate)时,按 JSON 即时生成并下载 .xlsx 导入模板。
- 接口类型:REST 资源(
@Component继承AbstractRuntimeController;类级produces = MediaType.APPLICATION_JSON_VALUE,但本端点直接写回HttpServletResponse.getOutputStream()为 Excel 文件下载,实际响应非 JSON,据源码) - 基址:
${myapps.context-path.runtime:}/api/runtime - Tag:Excel 导入运行时
公共说明¶
- 鉴权(据源码):类级基址位于
/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}/{configId}:必填,经 DES 加密(按当前执行用户密钥),服务端在方法入口处DesUtil.decryptTextByUserId(applicationId, getUser().getId())与DesUtil.decryptTextByUserId(configId, getUser().getId())解密。 - 响应:本控制器端点直接写回
HttpServletResponse输出流为 Excel 文件下载(不返回 JSONResource)。响应头由HttpDownloadHelper.setExcelAttachmentHeaders(response, filename)设置(Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet等,按HttpDownloadHelper实现)。模板不存在或未配置 JSON 模板时抛OBPMValidateException(由全局异常处理转化为错误响应)。
1. 动态导出 Excel 导入模板¶
当 templatePath 为空时,按 jsonTemplate 即时生成 .xlsx 并以附件形式下载。配置不存在或未配置 JSON 模板时抛 OBPMValidateException。
- 接口类型:REST 资源(文件下载,二进制响应)
- 请求方式:
GET - 请求路径:
/{applicationId}/excelimport/{configId}/export-excel(完整:{runtime-context}/api/runtime/{applicationId}/excelimport/{configId}/export-excel) - 鉴权:是(需 accessToken,据源码)
- Tag:Excel 导入运行时
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id(DES 加密密文) |
| configId | path | string | 是 | Excel 导入配置Id(DES 加密密文) |
请求示例¶
GET /api/runtime/__APPID__/excelimport/__CONFIGID__/export-excel HTTP/1.1
Cookie: accessToken=eyJhbGciOiJIUzI1NiJ9...
响应¶
结构:二进制 Excel 文件(.xlsx)附件下载;不返回 JSON Resource。
- 成功:HTTP 200,
Content-Type由HttpDownloadHelper.setExcelAttachmentHeaders设置(Excel 附件相关头),Content-Disposition: attachment; filename="<configName>.xlsx"(<configName>取自IMPMappingConfigVO.getName(),缺名时为excel-template.xlsx)。响应体为ExcelTemplateExportService.exportFromTemplateJson(jsonTemplate, outputStream)写出的.xlsx字节流。 - 失败(配置不存在 / 未配置 JSON 模板):抛
OBPMValidateException("Excel 导入配置不存在")/OBPMValidateException("未配置 JSON 模板,无法动态生成导入模板"),由AbstractRuntimeController全局异常处理转化为错误响应(具体形态视平台统一异常处理实现而定)。