# event-list API 调试文档 ## 1. 基础信息 - 模块:`event/event-list` - 控制器:`EventListController` - 接口前缀:`/event/list` - 本地默认地址:`http://localhost:18192` - Content-Type:`application/json` - 认证:除 `/admin/login`、`/admin/getPublicKey`、Swagger 资源外,请求需要携带登录后的 `Authorization` 头。 ```text Authorization: Bearer ``` 说明: - `event-list` 当前提供暂态事件分页查询、详情查询和导出能力。 - 事件数据来自 `r_mp_event_detail`。 - 工程、项目、设备、监测点名称由 `tools/add-ledger` 内部服务按监测点 ID 批量补齐。 - 本文示例中的业务数据为调试示例,实际值以数据库为准。 ## 2. 通用响应 分页和详情接口统一返回 `HttpResult` 包装结果。外层字段由公共组件序列化,常见结构如下: ```json { "code": "000000", "message": "成功", "data": {} } ``` 调试时重点查看: - `code`:业务响应码。 - `message`:业务响应消息。 - `data`:接口返回数据。 导出接口直接返回 Excel 文件流,不返回 `HttpResult` JSON。 ## 3. 分页查询暂态事件列表 ### 3.1 接口信息 - 路径:`POST /event/list/transient/page` - 完整地址:`http://localhost:18192/event/list/transient/page` - 控制器方法:`EventListController#pageTransientEvents` - 服务方法:`EventListService#pageTransientEvents` - 返回:`HttpResult>` - 默认排序:`start_time DESC, event_id DESC` ### 3.2 请求示例 ```json { "pageNum": 1, "pageSize": 10, "startTimeStart": "2026-05-01 00:00:00", "startTimeEnd": "2026-05-09 23:59:59", "eventType": "VOLTAGE_SAG", "phase": "A", "eventDescribe": "暂降", "durationMin": 0.02, "durationMax": 10, "featureAmplitudeMin": 10, "featureAmplitudeMax": 90, "fileFlag": 1, "dealFlag": 0, "lineIds": [ "line-001" ], "engineeringName": "示例工程", "projectName": "示例项目", "equipmentName": "示例设备", "lineName": "示例测点" } ``` 分页字段继承公共 `BaseParam`,调试时按项目现有分页参数约定传入。示例使用 `pageNum`、`pageSize`。 ### 3.3 请求字段 | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `pageNum` | Number | 否 | 页码,来自公共分页参数 | | `pageSize` | Number | 否 | 每页条数,来自公共分页参数 | | `startTimeStart` | String | 否 | 发生时刻开始,格式 `yyyy-MM-dd HH:mm:ss` | | `startTimeEnd` | String | 否 | 发生时刻结束,格式 `yyyy-MM-dd HH:mm:ss` | | `eventType` | String | 否 | 事件类型,对应 `r_mp_event_detail.event_type` | | `phase` | String | 否 | 相别,对应 `r_mp_event_detail.phase` | | `eventDescribe` | String | 否 | 事件描述关键字,按 `LIKE` 查询 | | `durationMin` | Number | 否 | 持续时间下限,单位秒 | | `durationMax` | Number | 否 | 持续时间上限,单位秒 | | `featureAmplitudeMin` | Number | 否 | 暂降/暂升幅值下限 | | `featureAmplitudeMax` | Number | 否 | 暂降/暂升幅值上限 | | `fileFlag` | Number | 否 | 波形文件状态:`0` 未招,`1` 已招 | | `dealFlag` | Number | 否 | 处理状态:`0` 未处理,`1` 已处理,`2` 已处理无结果,`3` 计算失败 | | `lineIds` | Array | 否 | 监测点 ID 列表,最多 1000 个 | | `engineeringName` | String | 否 | 工程名称关键字,通过 `add-ledger` 反查监测点 | | `projectName` | String | 否 | 项目名称关键字,通过 `add-ledger` 反查监测点 | | `equipmentName` | String | 否 | 设备名称关键字,通过 `add-ledger` 反查监测点 | | `lineName` | String | 否 | 监测点名称关键字,通过 `add-ledger` 反查监测点 | 时间字段支持以下输入格式: - `yyyy-MM-dd HH:mm:ss` - `yyyy-MM-dd HH:mm:ss.SSS` - `yyyy-MM-dd'T'HH:mm:ss` - `yyyy-MM-dd'T'HH:mm:ss.SSS` 如果不传 `startTimeStart`,后端默认取当前月 1 日 `00:00:00`。如果不传 `startTimeEnd`,后端默认取当前时间。 ### 3.4 响应示例 ```json { "code": "000000", "message": "成功", "data": { "records": [ { "eventId": "event-001", "measurementPointId": "line-001", "eventType": "VOLTAGE_SAG", "equipmentName": "示例设备", "engineeringName": "示例工程", "projectName": "示例项目", "startTime": "2026-05-09 10:20:30", "lineName": "示例测点", "eventDescribe": "电压暂降", "sagsource": "上游", "phase": "A", "duration": 0.12, "featureAmplitude": 65.5, "wavePath": "D:/wave/event-001.cfg", "fileFlag": 1, "dealFlag": 0, "createTime": "2026-05-09 10:21:00" } ], "total": 1, "size": 10, "current": 1, "pages": 1 } } ``` `Page` 对象可能包含 MyBatis-Plus 的其他分页字段,调试时主要关注 `records`、`total`、`size`、`current`、`pages`。 ### 3.5 curl 示例 ```powershell curl.exe -X POST "http://localhost:18192/event/list/transient/page" ` -H "Content-Type: application/json" ` -H "Authorization: Bearer " ` -d "{\"pageNum\":1,\"pageSize\":10,\"startTimeStart\":\"2026-05-01 00:00:00\",\"startTimeEnd\":\"2026-05-09 23:59:59\",\"eventDescribe\":\"暂降\"}" ``` ## 4. 查询暂态事件详情 ### 4.1 接口信息 - 路径:`GET /event/list/transient/{eventId}` - 完整地址:`http://localhost:18192/event/list/transient/{eventId}` - 控制器方法:`EventListController#getTransientEventDetail` - 服务方法:`EventListService#getTransientEventDetail` - 返回:`HttpResult` ### 4.2 请求参数 | 参数 | 位置 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | --- | | `eventId` | Path | String | 是 | 暂态事件 ID,对应 `r_mp_event_detail.event_id` | ### 4.3 响应示例 ```json { "code": "000000", "message": "成功", "data": { "eventId": "event-001", "measurementPointId": "line-001", "eventType": "VOLTAGE_SAG", "equipmentName": "示例设备", "engineeringName": "示例工程", "projectName": "示例项目", "startTime": "2026-05-09 10:20:30", "lineName": "示例测点", "eventDescribe": "电压暂降", "sagsource": "上游", "phase": "A", "duration": 0.12, "featureAmplitude": 65.5, "wavePath": "D:/wave/event-001.cfg", "fileFlag": 1, "dealFlag": 0, "createTime": "2026-05-09 10:21:00" } } ``` ### 4.4 curl 示例 ```powershell curl.exe -X GET "http://localhost:18192/event/list/transient/event-001" ` -H "Authorization: Bearer " ``` ## 5. 导出暂态事件列表 ### 5.1 接口信息 - 路径:`POST /event/list/transient/export` - 完整地址:`http://localhost:18192/event/list/transient/export` - 控制器方法:`EventListController#exportTransientEvents` - 服务方法:`EventListService#exportTransientEvents` - 返回:Excel 文件流 - 文件名:`暂态事件列表.xlsx` - Sheet 名称:`暂态事件列表` 导出复用分页查询的筛选条件,但不使用分页结果。当前同步导出最多允许 5000 条,超过时返回业务错误。 ### 5.2 请求示例 ```json { "startTimeStart": "2026-05-01 00:00:00", "startTimeEnd": "2026-05-09 23:59:59", "eventDescribe": "暂降", "fileFlag": 1 } ``` ### 5.3 导出字段 | Excel 列名 | 响应字段 | 说明 | | --- | --- | --- | | 设备名称 | `equipmentName` | 由 `add-ledger` 按监测点补齐 | | 工程名称 | `engineeringName` | 由 `add-ledger` 按监测点补齐 | | 项目名称 | `projectName` | 由 `add-ledger` 按监测点补齐 | | 发生时刻 | `startTime` | 格式 `yyyy-MM-dd HH:mm:ss` | | 监测点名称 | `lineName` | 由 `add-ledger` 按监测点补齐 | | 事件描述 | `eventDescribe` | 为空时使用 `eventType` | | 事件发生位置 | `sagsource` | 为空时返回 `-` | | 相别 | `phase` | 为空时返回 `-` | | 持续时间(s) | `duration` | 单位秒 | | 暂降/暂升幅值(%) | `featureAmplitude` | 原值导出 | ### 5.4 curl 示例 ```powershell curl.exe -X POST "http://localhost:18192/event/list/transient/export" ` -H "Content-Type: application/json" ` -H "Authorization: Bearer " ` -d "{\"startTimeStart\":\"2026-05-01 00:00:00\",\"startTimeEnd\":\"2026-05-09 23:59:59\",\"eventDescribe\":\"暂降\"}" ` -o "D:/temp/暂态事件列表.xlsx" ``` ## 6. 返回字段说明 | 字段 | 类型 | 说明 | | --- | --- | --- | | `eventId` | String | 事件 ID | | `measurementPointId` | String | 监测点 ID | | `eventType` | String | 事件类型 | | `equipmentName` | String | 设备名称,台账缺失时为 `-` | | `engineeringName` | String | 工程名称,台账缺失时为 `-` | | `projectName` | String | 项目名称,台账缺失时为 `-` | | `startTime` | String | 发生时刻,格式 `yyyy-MM-dd HH:mm:ss` | | `lineName` | String | 监测点名称,台账缺失时为 `-` | | `eventDescribe` | String | 事件描述,空值时返回 `eventType` | | `sagsource` | String | 事件发生位置,空值时为 `-` | | `phase` | String | 相别,空值时为 `-` | | `duration` | Number | 持续时间,单位秒 | | `featureAmplitude` | Number | 暂降/暂升幅值 | | `wavePath` | String | 波形文件路径 | | `fileFlag` | Number | 波形文件状态:`0` 未招,`1` 已招 | | `dealFlag` | Number | 处理状态:`0` 未处理,`1` 已处理,`2` 已处理无结果,`3` 计算失败 | | `createTime` | String | 创建时间,格式 `yyyy-MM-dd HH:mm:ss` | ## 7. 常见错误场景 | 场景 | 后端提示 | | --- | --- | | 详情接口 `eventId` 为空 | `事件 ID 不能为空` | | 详情数据不存在 | `暂态事件不存在` | | 开始时间大于结束时间 | `开始时间不能大于结束时间` | | 时间格式无法解析 | `时间格式不正确,仅支持 yyyy-MM-dd HH:mm:ss` | | 持续时间下限大于上限 | `持续时间下限不能大于上限` | | 幅值下限大于上限 | `幅值下限不能大于上限` | | `fileFlag` 不为 `0` 或 `1` | `波形文件状态只能是 0 或 1` | | `dealFlag` 不在 `0-3` 范围内 | `处理状态只能是 0、1、2、3` | | `lineIds` 超过 1000 个 | `监测点 ID 查询数量不能超过 1000 个` | | 台账关键字匹配监测点超过 1000 个 | `台账检索匹配监测点过多,请缩小查询条件` | | 导出超过 5000 条 | `导出数据超过 5000 条,请缩小查询条件` | 未携带有效 `Authorization` 时,全局认证过滤器会返回 token 解析相关错误。 ## 8. 调试注意事项 - 先登录获取 `accessToken`,再调试 `event-list` 接口。 - 分页查询不传时间范围时,后端默认查当前月 1 日到当前时间。 - 台账关键字筛选会先通过 `add-ledger` 查询匹配监测点,再查询事件表。 - 如果台账关键字命中范围过大,需要缩小工程、项目、设备或测点关键字。 - 导出接口建议始终传入明确时间范围,避免超过 5000 条限制。 - 如查询性能不稳定,可先检查是否已按需执行 `event/event-list/src/main/resources/sql/event-list/event-list-index.sql` 中的建议索引。 ## 9. 当前限制 - 本文档只补充 API 调试说明,未改动业务代码。 - 当前未执行 `mvn` 编译、打包、测试或真实接口联调。 - 响应外层 `HttpResult` 字段以公共组件实际序列化结果为准。 - 分页参数字段以公共 `BaseParam` 实际定义和前端现有调用约定为准。