第三阶段核心业务开发完成
This commit is contained in:
@@ -11,14 +11,73 @@
|
||||
## 2. 后端开发详解
|
||||
|
||||
1. **数据库初始化**:
|
||||
* **创建 `charging_robot`, `parking_spot`, `charging_session` 表**: 执行 `development_plan.md` 中定义的相应 DDL 语句。
|
||||
* **创建 `charging_robot`, `parking_spot`, `charging_session` 表**: 执行以下 DDL 语句。
|
||||
```sql
|
||||
-- (DDL for charging_robot)
|
||||
CREATE TABLE `charging_robot` (...) COMMENT='充电机器人表';
|
||||
-- (DDL for parking_spot)
|
||||
CREATE TABLE `parking_spot` (...) COMMENT='车位表';
|
||||
-- (DDL for charging_session)
|
||||
CREATE TABLE `charging_session` (...) COMMENT='充电记录表';
|
||||
-- DDL for charging_robot
|
||||
CREATE TABLE `charging_robot` (
|
||||
`id` BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||
`robot_uid` VARCHAR(100) NOT NULL UNIQUE COMMENT '机器人唯一标识符 (例如,硬件序列号)',
|
||||
`status` VARCHAR(50) NOT NULL DEFAULT 'IDLE' COMMENT '机器人状态 (IDLE, MOVING, CHARGING, ERROR, MAINTENANCE, OFFLINE)',
|
||||
`current_location` VARCHAR(255) COMMENT '当前位置描述 (例如,坐标或区域ID)',
|
||||
`battery_level` TINYINT UNSIGNED COMMENT '电池电量百分比 (0-100)',
|
||||
`current_task_id` BIGINT COMMENT '当前执行的任务ID (关联 robot_task.id)',
|
||||
`last_heartbeat_time` DATETIME COMMENT '最后心跳时间',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
|
||||
`is_deleted` TINYINT(1) DEFAULT 0 COMMENT '逻辑删除标志 (0:未删, 1:已删)'
|
||||
) COMMENT='充电机器人表';
|
||||
|
||||
-- (索引建议,可根据实际查询需求调整)
|
||||
-- CREATE INDEX `idx_robot_uid` ON `charging_robot` (`robot_uid`);
|
||||
-- CREATE INDEX `idx_robot_status` ON `charging_robot` (`status`);
|
||||
|
||||
-- DDL for parking_spot
|
||||
CREATE TABLE `parking_spot` (
|
||||
`id` BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
|
||||
`spot_uid` VARCHAR(100) NOT NULL UNIQUE COMMENT '车位唯一标识符 (例如,车位号)',
|
||||
`status` VARCHAR(50) NOT NULL DEFAULT 'AVAILABLE' COMMENT '车位状态 (AVAILABLE, OCCUPIED_BY_CAR, RESERVED, CHARGING, MAINTENANCE, UNAVAILABLE)',
|
||||
`location_description` VARCHAR(255) COMMENT '位置描述 (例如,楼层、区域)',
|
||||
`robot_assignable` BOOLEAN DEFAULT TRUE COMMENT '此车位是否可指派机器人前往',
|
||||
`current_session_id` BIGINT COMMENT '当前占用此车位的充电会话ID (关联 charging_session.id)',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
|
||||
`is_deleted` TINYINT(1) DEFAULT 0 COMMENT '逻辑删除标志 (0:未删, 1:已删)'
|
||||
) COMMENT='车位表';
|
||||
|
||||
-- (索引建议)
|
||||
-- CREATE INDEX `idx_spot_uid` ON `parking_spot` (`spot_uid`);
|
||||
-- CREATE INDEX `idx_spot_status` ON `parking_spot` (`status`);
|
||||
|
||||
-- DDL for charging_session
|
||||
CREATE TABLE `charging_session` (
|
||||
`id` BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID,充电会话唯一标识',
|
||||
`user_id` BIGINT NOT NULL COMMENT '用户ID (关联 user.id)',
|
||||
`robot_id` BIGINT COMMENT '服务的机器人ID (关联 charging_robot.id)',
|
||||
`robot_uid_snapshot` VARCHAR(100) COMMENT '服务机器人的UID快照 (冗余字段,方便查询历史)',
|
||||
`spot_id` BIGINT NOT NULL COMMENT '车位ID (关联 parking_spot.id)',
|
||||
`spot_uid_snapshot` VARCHAR(100) NOT NULL COMMENT '车位UID快照 (冗余字段)',
|
||||
`status` VARCHAR(50) NOT NULL DEFAULT 'REQUESTED' COMMENT '充电会话状态 (REQUESTED, ROBOT_ASSIGNED, ROBOT_MOVING, CHARGING_STARTED, CHARGING_IN_PROGRESS, COMPLETED, CANCELLED_BY_USER, CANCELLED_BY_SYSTEM, ERROR, ROBOT_TASK_TIMEOUT)',
|
||||
`request_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '用户请求充电时间',
|
||||
`robot_assigned_time` DATETIME COMMENT '机器人分配时间',
|
||||
`robot_arrival_time` DATETIME COMMENT '机器人到达车位时间',
|
||||
`charge_start_time` DATETIME COMMENT '充电开始时间',
|
||||
`charge_end_time` DATETIME COMMENT '充电结束时间',
|
||||
`total_duration_seconds` INT COMMENT '总充电时长 (秒)',
|
||||
`energy_consumed_kwh` DECIMAL(10, 3) COMMENT '消耗电量 (kWh)',
|
||||
`cost` DECIMAL(10, 2) COMMENT '本次充电费用 (元)',
|
||||
`payment_status` VARCHAR(50) DEFAULT 'PENDING' COMMENT '支付状态 (PENDING, PAID, FAILED)',
|
||||
`error_code` VARCHAR(100) COMMENT '错误码 (如果会话出错)',
|
||||
`error_message` TEXT COMMENT '错误信息',
|
||||
`related_robot_task_id` BIGINT COMMENT '启动本次会话或关键步骤的 RobotTask ID',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',
|
||||
`is_deleted` TINYINT(1) DEFAULT 0 COMMENT '逻辑删除标志 (0:未删, 1:已删)'
|
||||
) COMMENT='充电记录表';
|
||||
|
||||
-- (外键约束和索引建议)
|
||||
-- ALTER TABLE `charging_session` ADD CONSTRAINT `fk_session_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);
|
||||
-- CREATE INDEX `idx_session_user` ON `charging_session` (`user_id`);
|
||||
-- ... (其他索引)
|
||||
```
|
||||
2. **机器人与车位管理 (可选,主要面向管理员)**:
|
||||
* **Entity**: 创建 `ChargingRobot.java`, `ParkingSpot.java`。
|
||||
|
||||
Reference in New Issue
Block a user