第三阶段核心业务开发完成
This commit is contained in:
62
LogBook.md
62
LogBook.md
@@ -46,4 +46,64 @@
|
||||
- 更正了 `springboot-init-main/src/main/java/com/yupi/project/service/impl/MqttServiceImpl.java` 的实现,确保 `sendCommand` 方法的逻辑完整和正确。
|
||||
- 实现 `TaskTimeoutHandler.java`,使用 `@Scheduled` 定时调用 `RobotTaskService.findAndMarkTimedOutTasks` 处理任务超时。
|
||||
- 在 `MyApplication.java` 中添加 `@EnableScheduling` 以启用定时任务。
|
||||
- 在 `application.yml` 中添加了 `mqtt.task.timeoutSeconds` 和 `mqtt.task.timeoutCheckRateMs` 配置项。
|
||||
- 在 `application.yml` 中添加了 `mqtt.task.timeoutSeconds` 和 `mqtt.task.timeoutCheckRateMs` 配置项。
|
||||
|
||||
---
|
||||
|
||||
**第二阶段 (MQTT 集成) 已于 YYYY-MM-DD 完成。**
|
||||
|
||||
所有核心功能点,包括MQTT连接、消息发布/订阅、RobotTask状态跟踪和基础超时处理已实现。
|
||||
依赖于 ChargingSession 的超时后联动处理已明确推至第三阶段。
|
||||
|
||||
---
|
||||
|
||||
## YYYY-MM-DD (请替换为当前日期) - 第三阶段后端开发
|
||||
|
||||
- **核心业务实体与服务实现**:
|
||||
- 创建了枚举类: `RobotStatusEnum`, `ParkingSpotStatusEnum`, `ChargingSessionStatusEnum`, `PaymentStatusEnum`.
|
||||
- 创建了数据库实体: `ChargingRobot`, `ParkingSpot`, `ChargingSession`.
|
||||
- 创建了对应的Mapper接口: `ChargingRobotMapper`, `ParkingSpotMapper`, `ChargingSessionMapper`.
|
||||
- 创建了Service接口: `ChargingRobotService`, `ParkingSpotService`, `ChargingSessionService`.
|
||||
- 创建了Service实现类: `ChargingRobotServiceImpl`, `ParkingSpotServiceImpl`, `ChargingSessionServiceImpl`.
|
||||
- `ChargingSessionServiceImpl` 中实现了充电请求、机器人分配、状态流转 (到达、开始/结束充电)、费用计算、支付、取消、超时处理等核心逻辑。
|
||||
- **API 控制器实现**:
|
||||
- 创建了 `ChargingRobotAdminController` 用于管理员管理充电机器人 (CRUD, 列表查询, 状态类型)。
|
||||
- 创建了 `ParkingSpotAdminController` 用于管理员管理车位 (CRUD, 列表查询, 状态类型)。
|
||||
- 创建了 `ChargingSessionController` 用于用户发起充电请求、查询历史会话、支付、取消会话。
|
||||
- 创建了相关的DTOs (如 `ChargingRobotAddRequest`, `ParkingSpotQueryRequest`, `ChargingRequest`, `PaymentRequest`) 和 VO (`ChargingSessionVO`).
|
||||
- **MQTT与任务处理联动**:
|
||||
- 更新了 `MqttMessageHandlerImpl`,使其在收到机器人状态ACK后,能调用 `ChargingSessionService` 更新相关充电会话的状态。
|
||||
- 更新了 `TaskTimeoutHandler`,使其在检测到与会话关联的任务超时后,能调用 `ChargingSessionService` 处理会话超时逻辑。
|
||||
- 在 `ChargingSessionService` 中补充了 `getQueryWrapper` 方法用于支持分页和条件查询。
|
||||
|
||||
- **主要实现功能点**:
|
||||
- 管理员可以增删改查充电机器人和车位。
|
||||
- 用户可以请求在特定车位充电。
|
||||
- 系统能够尝试分配空闲机器人,并向其发送移动指令 (通过MQTT,并记录RobotTask)。
|
||||
- 系统能够根据机器人通过MQTT反馈的状态(到达、开始充电、结束充电)更新充电会话的生命周期。
|
||||
- 充电结束后,系统能计算费用,并允许用户支付。
|
||||
- 用户可以在特定阶段取消充电会话。
|
||||
- 机器人任务超时会影响关联的充电会话状态。
|
||||
|
||||
- **补充后端功能 (根据阶段计划调整)**:
|
||||
- 在 `ChargingSessionAdminController.java` 中添加了管理员分页查询所有充电会话的接口 (`POST /admin/session/list/page`)。
|
||||
- 在 `ChargingSessionController.java` 中添加了用户"优雅停止充电"的接口 (`POST /session/stop`)。
|
||||
- 此接口会向机器人发送 `STOP_CHARGE` 指令,并通过 `ChargingSessionServiceImpl.stopChargingByUser` 方法创建相应的 `RobotTask`。
|
||||
- 会话的最终完成和计费依赖 `MqttMessageHandlerImpl` 收到机器人对 `STOP_CHARGE` 指令的成功ACK后,调用 `chargingSessionService.handleChargingEnd` 处理。
|
||||
|
||||
- **下一步**:
|
||||
- 进行详细的单元测试和集成测试。
|
||||
- 完善错误处理、日志记录和边界条件。
|
||||
- 更新API文档。
|
||||
- **开始第三阶段前端开发**。
|
||||
- 根据 `stage_3_core_charging_logic.md` 检查业务流程覆盖情况。
|
||||
|
||||
## 后端开发 - 第三阶段核心充电逻辑完成
|
||||
|
||||
* **状态**: 后端核心业务逻辑、服务实现、MQTT集成及主要API Controller已完成开发并通过多轮编译错误修复。
|
||||
* 充电全流程 (请求、分配、移动、到达、开始、结束、计费、支付、取消、超时) 已实现。
|
||||
* 机器人和车位的状态管理服务已实现并集成到主流程。
|
||||
* 用户余额扣减实现原子性操作。
|
||||
* MQTT消息处理机制已建立,可处理任务ACK和常规状态上报。
|
||||
* **决策**: 经过讨论,充电过程中的实时时长更新 (`currentChargingDurationSeconds`) 功能在本阶段不实现,最终计费依赖充电结束时上报的 `totalDurationSeconds`。
|
||||
* **后续**: 后端已为前端开发提供基础。建议在前端大规模开发前,后端进行核心API的冒烟测试,并完善API文档(如使用Swagger)。
|
||||
Reference in New Issue
Block a user