报表(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+KmsSecurityFilter):KmsMvcConfig注册全局 Servlet 过滤器KmsSecurityFilter(URL 模式/*,context-path 为/时为/kms/*)。本控制器路径/api/kms/reports/**、/api/kms/category/report/export不在KmsSecurityFilter.isExcludeURI的豁免名单内(豁免仅覆盖/login.*、/admin、/domain.*、/tray/service、/authtime、service/OfficeServer、.*outsideshare/.*/preview、静态资源后缀、actuator/health等)。过滤器调用Security.getUserIdFromToken(request),取不到用户则返回 HTTP401。因此所有端点均需 accessToken,可通过以下任一方式传递(据Security.getUserIdFromToken):query 参数accessToken、query 参数access_token(移动端)、请求头accessToken、CookieaccessToken、请求头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
响应¶
结构:统一 Resource。
data:DataPackage<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) | 否 | 起始时间(毫秒时间戳字符串;仅当 beginTime、endTime 均非空时才生效,直接解析为 Date) |
| endTime | query | string(long) | 否 | 截止时间(毫秒时间戳字符串;仅当 beginTime、endTime 均非空时才生效) |
请求示例¶
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。