跳转至

报表(ReportController)

提供 KMS 知识管理模块「报表域」的能力:按关键字、操作类型、部门、用户、时间范围查询/导出操作日志报表(含按分类名+用户列表导出分类报表)。本控制器共 3 个端点;#2#3 为二进制响应(直接写 HttpServletResponse 输出流,返回 Excel 文件),不返回 JSON Resource

  • 接口类型:REST 资源(@Controller,非 @RestController#1 方法级 produces = MediaType.APPLICATION_JSON_VALUE 并加 @ResponseBody 返回 JSON,#2/#3 返回 void、直接写响应流)
  • 基址${myapps.context-path.kms:}/api/kms(类级 @RequestMapping 仅声明单一前缀)
  • Tag:kms报表模块

公共说明

  • 鉴权(据源码 KmsMvcConfig + KmsSecurityFilterKmsMvcConfig 注册全局 Servlet 过滤器 KmsSecurityFilter(URL 模式 /*,context-path 为 / 时为 /kms/*)。本控制器路径 /api/kms/reports/**/api/kms/category/report/export 不在 KmsSecurityFilter.isExcludeURI 的豁免名单内(豁免仅覆盖 /login.*/admin/domain.*/tray/service/authtimeservice/OfficeServer.*outsideshare/.*/preview、静态资源后缀、actuator/health 等)。过滤器调用 Security.getUserIdFromToken(request),取不到用户则返回 HTTP 401因此所有端点均需 accessToken,可通过以下任一方式传递(据 Security.getUserIdFromToken):query 参数 accessToken、query 参数 access_token(移动端)、请求头 accessToken、Cookie accessToken、请求头 Authorization: Bearer <token>。完整鉴权机制见 index.md「鉴权说明」。
  • 执行用户:本控制器不调用 getUser(),按入参 userId/deptId/region 过滤。
  • 响应结构#1 为统一 Resource(见 ../index.md「统一响应结构」);#2#3 为 Excel 二进制流,非 JSON
  • 时间参数解析startDate/endDate/beginTime/endTime 为字符串型毫秒时间戳。#1 中服务端会按当天 0 点 / 23:59:59 截断(/1000*3600*24*... 并按本机时区偏移修正);#2#3 则**直接按原始毫秒值**构造 Date,不做截断。
  • 路径变量:本控制器无路径变量。

1. 查询报告

按关键字、区域、操作类型、部门、用户、时间范围分页查询操作日志(据 @Operation(summary = "查询报告"))。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/reports/query(完整:{kms-context}/api/kms/reports/query
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms报表模块

请求参数

参数名 位置 类型 必填 说明
keyWord query string 关键字(模糊匹配)
region query int 区域
operationType query int 操作类型(默认 0
deptId query string 部门Id
userId query string 用户Id
startDate query string(long) 起始时间(毫秒时间戳字符串;服务端按当天 0 点截断)
endDate query string(long) 截止时间(毫秒时间戳字符串;服务端按当天 23:59:59 截断)
pageNo query int 页码(默认 1
linesPerPage query int 每页条数(默认 10

请求示例

GET /api/kms/reports/query?keyWord=下载&operationType=1&pageNo=1&linesPerPage=20&accessToken=__TOKEN__ HTTP/1.1

响应

结构:统一 ResourcedataDataPackage<Logs>,日志分页数据。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "pageNo": 1,
    "linesPerPage": 20,
    "rowCount": 88,
    "datas": [ { "id": "__LOGID__", "operationType": 1, "content": "下载文件 方案.docx" } ]
  },
  "errors": null
}


2. 导出报告

按区域、操作类型、部门、用户、时间范围将操作日志导出为 Excel 文件(据 @Operation(summary = "导出报告"))。响应体为二进制 Excel 流,非 JSON

  • 接口类型:REST 资源(直接写 HttpServletResponse 输出流)
  • 请求方式GET
  • 请求路径/reports/export(完整:{kms-context}/api/kms/reports/export
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms报表模块

请求参数

参数名 位置 类型 必填 说明
region query int 区域
operationType query int 操作类型
deptId query string 部门Id
userId query string 用户Id
startDate query string(long) 起始时间(毫秒时间戳字符串,直接解析为 Date,不做截断
endDate query string(long) 截止时间(毫秒时间戳字符串,直接解析为 Date,不做截断

请求示例

GET /api/kms/reports/export?operationType=1&startDate=1722729600000&endDate=1722816000000&accessToken=__TOKEN__ HTTP/1.1

响应

结构:二进制 Excel 文件流,非 JSON Resource

响应头
Content-Type appliction/excel注意:源码原文如此拼写,非标准 application/vnd.ms-excel;客户端按二进制下载即可)
Content-Disposition attachment;fileName=报表.xls(文件名按 UTF-8 → ISO-8859-1 编码)
状态码 200

说明:Excel 内容由 ReportService.exportToExcel(...) 直接写入响应输出流;服务端不返回 JSON。客户端按 Content-Disposition 中的文件名保存即可。


3. 导出分类报告

按分类名、用户列表、时间范围导出分类报表为 Excel 文件(据 @Operation(summary = "导出分类报告"))。响应体为二进制 Excel 流,非 JSON

  • 接口类型:REST 资源(直接写 HttpServletResponse 输出流)
  • 请求方式GET
  • 请求路径/category/report/export(完整:{kms-context}/api/kms/category/report/export
  • 鉴权:是(需 accessToken,据源码)
  • Tag:kms报表模块

请求参数

参数名 位置 类型 必填 说明
categoryName query string 分类名称
userIds query string[] 用户Id列表(Spring 自动按形参名 userIds 绑定多个 query 参数)
beginTime query string(long) 起始时间(毫秒时间戳字符串;仅当 beginTimeendTime 均非空时才生效,直接解析为 Date)
endTime query string(long) 截止时间(毫秒时间戳字符串;仅当 beginTimeendTime 均非空时才生效)

请求示例

GET /api/kms/category/report/export?categoryName=报告&userIds=__UID1__&userIds=__UID2__&beginTime=1722729600000&endTime=1722816000000&accessToken=__TOKEN__ HTTP/1.1

响应

结构:二进制 Excel 文件流,非 JSON Resource

响应头
Content-Type appliction/excel注意:源码原文如此拼写,同 #2)
Content-Disposition attachment;fileName=报表.xls(文件名按 UTF-8 → ISO-8859-1 编码)
状态码 200

说明:Excel 内容由 ReportService.exportToListFile(...) 直接写入响应输出流;服务端不返回 JSON。