# 智能巡检模块 - 已创建文件清单

## ✅ 已完成创建的文件

### 1. 模块配置
- ✅ `cmvr-iot-inspection/pom.xml` - 模块Maven配置
- ✅ `pom.xml` - 父POM已添加模块依赖
- ✅ `cmvr-iot-admin/pom.xml` - Admin模块已添加inspection依赖

### 2. 实体类（Domain）- 5个
- ✅ `InspectionRobot.java` - 巡检机器人实体
- ✅ `InspectionMap.java` - 巡检地图实体  
- ✅ `InspectionTask.java` - 巡检任务实体
- ✅ `InspectionWaypoint.java` - 巡检点位实体
- ✅ `InspectionAlarm.java` - 巡检告警实体

---

## 📋 还需要创建的文件（参照 cmvr-iot-device 模块模式）

### 3. Mapper 接口（5个）
位置：`cmvr-iot-inspection/src/main/java/com/cmvr/inspection/mapper/`

需要创建：
- `InspectionRobotMapper.java`
- `InspectionMapMapper.java`
- `InspectionTaskMapper.java`
- `InspectionWaypointMapper.java`
- `InspectionAlarmMapper.java`

参考模板：`DeDeviceRegistrationMapper.java`

### 4. Mapper XML（5个）
位置：`cmvr-iot-inspection/src/main/resources/mapper/inspection/`

需要创建：
- `InspectionRobotMapper.xml`
- `InspectionMapMapper.xml`
- `InspectionTaskMapper.xml`
- `InspectionWaypointMapper.xml`
- `InspectionAlarmMapper.xml`

参考模板：`DeDeviceRegistrationMapper.xml`

### 5. Service 接口（5个）
位置：`cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/`

需要创建：
- `IInspectionRobotService.java`
- `IInspectionMapService.java`
- `IInspectionTaskService.java`
- `IInspectionWaypointService.java`
- `IInspectionAlarmService.java`

参考模板：`IDeDeviceRegistrationService.java`

### 6. Service 实现类（5个）
位置：`cmvr-iot-inspection/src/main/java/com/cmvr/inspection/service/impl/`

需要创建：
- `InspectionRobotServiceImpl.java`
- `InspectionMapServiceImpl.java`
- `InspectionTaskServiceImpl.java`
- `InspectionWaypointServiceImpl.java`
- `InspectionAlarmServiceImpl.java`

参考模板：`DeDeviceRegistrationServiceImpl.java`

### 7. Controller（5个）
位置：`cmvr-iot-admin/src/main/java/com/cmvr/web/controller/inspection/`

需要创建：
- `InspectionRobotController.java`
- `InspectionMapController.java`
- `InspectionTaskController.java`
- `InspectionWaypointController.java`
- `InspectionAlarmController.java`

参考模板：`DeDeviceRegistrationController.java`

### 8. 数据库脚本
位置：项目根目录或 `sql/` 目录

需要创建：
- `inspection_module.sql` - 包含5张表的建表语句

---

## 🗄️ 数据库表结构

### 1. inspection_robot (巡检机器人表)
```sql
CREATE TABLE `inspection_robot` (
  `id` varchar(64) NOT NULL,
  `robot_code` varchar(64) NOT NULL COMMENT '机器人编码',
  `robot_name` varchar(100) NOT NULL COMMENT '机器人名称',
  `robot_model` varchar(100) DEFAULT NULL COMMENT '机器人型号',
  `robot_type` varchar(50) DEFAULT NULL COMMENT '机器人类型',
  `ip_address` varchar(50) DEFAULT NULL COMMENT 'IP地址',
  `port` int(11) DEFAULT NULL COMMENT '端口号',
  `map_id` varchar(64) DEFAULT NULL COMMENT '关联地图ID',
  `status` char(1) DEFAULT '0' COMMENT '状态(0在线 1离线 2充电中 3巡检中)',
  `battery_level` int(3) DEFAULT NULL COMMENT '电量百分比',
  `current_position` varchar(200) DEFAULT NULL COMMENT '当前位置',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_by` varchar(64) DEFAULT '',
  `create_time` datetime DEFAULT NULL,
  `update_by` varchar(64) DEFAULT '',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_robot_code` (`robot_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```

### 2. inspection_map (巡检地图表)
```sql
CREATE TABLE `inspection_map` (
  `id` varchar(64) NOT NULL,
  `map_code` varchar(64) NOT NULL COMMENT '地图编码',
  `map_name` varchar(100) NOT NULL COMMENT '地图名称',
  `map_type` char(1) DEFAULT '1' COMMENT '地图类型(1室内 2室外)',
  `map_file_path` varchar(500) DEFAULT NULL COMMENT '地图文件路径',
  `map_image_path` varchar(500) DEFAULT NULL COMMENT '地图图片路径',
  `resolution` decimal(10,4) DEFAULT NULL COMMENT '分辨率(米/像素)',
  `width` int(11) DEFAULT NULL COMMENT '地图宽度(像素)',
  `height` int(11) DEFAULT NULL COMMENT '地图高度(像素)',
  `origin_x` decimal(10,2) DEFAULT NULL COMMENT '原点X坐标',
  `origin_y` decimal(10,2) DEFAULT NULL COMMENT '原点Y坐标',
  `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_by` varchar(64) DEFAULT '',
  `create_time` datetime DEFAULT NULL,
  `update_by` varchar(64) DEFAULT '',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_map_code` (`map_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```

### 3. inspection_task (巡检任务表)
```sql
CREATE TABLE `inspection_task` (
  `id` varchar(64) NOT NULL,
  `task_code` varchar(64) NOT NULL COMMENT '任务编码',
  `task_name` varchar(100) NOT NULL COMMENT '任务名称',
  `robot_id` varchar(64) DEFAULT NULL COMMENT '机器人ID',
  `robot_name` varchar(100) DEFAULT NULL COMMENT '机器人名称',
  `map_id` varchar(64) DEFAULT NULL COMMENT '地图ID',
  `map_name` varchar(100) DEFAULT NULL COMMENT '地图名称',
  `task_type` char(1) DEFAULT '1' COMMENT '任务类型(1立即执行 2定时执行 3周期执行)',
  `priority` char(1) DEFAULT '2' COMMENT '优先级(1低 2中 3高)',
  `waypoints` text COMMENT '巡检点位列表(JSON格式)',
  `scheduled_start_time` datetime DEFAULT NULL COMMENT '计划开始时间',
  `scheduled_end_time` datetime DEFAULT NULL COMMENT '计划结束时间',
  `actual_start_time` datetime DEFAULT NULL COMMENT '实际开始时间',
  `actual_end_time` datetime DEFAULT NULL COMMENT '实际结束时间',
  `status` char(1) DEFAULT '0' COMMENT '任务状态(0待执行 1执行中 2已完成 3已取消 4失败)',
  `progress` int(3) DEFAULT '0' COMMENT '进度百分比',
  `cron_expression` varchar(100) DEFAULT NULL COMMENT 'Cron表达式',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_by` varchar(64) DEFAULT '',
  `create_time` datetime DEFAULT NULL,
  `update_by` varchar(64) DEFAULT '',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_task_code` (`task_code`),
  KEY `idx_robot_id` (`robot_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```

### 4. inspection_waypoint (巡检点位表)
```sql
CREATE TABLE `inspection_waypoint` (
  `id` varchar(64) NOT NULL,
  `waypoint_code` varchar(64) NOT NULL COMMENT '点位编码',
  `waypoint_name` varchar(100) NOT NULL COMMENT '点位名称',
  `map_id` varchar(64) NOT NULL COMMENT '所属地图ID',
  `map_name` varchar(100) DEFAULT NULL COMMENT '所属地图名称',
  `x_coordinate` decimal(10,2) DEFAULT NULL COMMENT 'X坐标',
  `y_coordinate` decimal(10,2) DEFAULT NULL COMMENT 'Y坐标',
  `z_coordinate` decimal(10,2) DEFAULT NULL COMMENT 'Z坐标',
  `orientation` decimal(5,2) DEFAULT NULL COMMENT '朝向角度',
  `waypoint_type` char(1) DEFAULT '1' COMMENT '点位类型(1普通点位 2充电点 3必经点)',
  `dwell_time` int(11) DEFAULT '0' COMMENT '停留时长(秒)',
  `enabled` char(1) DEFAULT '0' COMMENT '是否启用(0启用 1禁用)',
  `sort_order` int(11) DEFAULT '0' COMMENT '排序号',
  `remark` varchar(500) DEFAULT NULL COMMENT '备注',
  `create_by` varchar(64) DEFAULT '',
  `create_time` datetime DEFAULT NULL,
  `update_by` varchar(64) DEFAULT '',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_waypoint_code` (`waypoint_code`),
  KEY `idx_map_id` (`map_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```

### 5. inspection_alarm (巡检告警表)
```sql
CREATE TABLE `inspection_alarm` (
  `id` varchar(64) NOT NULL,
  `alarm_code` varchar(64) NOT NULL COMMENT '告警编码',
  `task_id` varchar(64) DEFAULT NULL COMMENT '任务ID',
  `task_name` varchar(100) DEFAULT NULL COMMENT '任务名称',
  `robot_id` varchar(64) DEFAULT NULL COMMENT '机器人ID',
  `robot_name` varchar(100) DEFAULT NULL COMMENT '机器人名称',
  `alarm_level` char(1) DEFAULT '2' COMMENT '告警级别(1提示 2警告 3严重)',
  `alarm_type` char(1) DEFAULT NULL COMMENT '告警类型(1设备异常 2环境异常 3任务异常 4通信异常)',
  `alarm_title` varchar(200) DEFAULT NULL COMMENT '告警标题',
  `alarm_content` text COMMENT '告警内容',
  `alarm_location` varchar(200) DEFAULT NULL COMMENT '告警位置',
  `alarm_time` datetime DEFAULT NULL COMMENT '告警时间',
  `handle_status` char(1) DEFAULT '0' COMMENT '处理状态(0未处理 1处理中 2已处理 3已忽略)',
  `handler` varchar(64) DEFAULT NULL COMMENT '处理人',
  `handle_time` datetime DEFAULT NULL COMMENT '处理时间',
  `handle_remark` varchar(500) DEFAULT NULL COMMENT '处理说明',
  `evidence_image` varchar(500) DEFAULT NULL COMMENT '图片证据',
  `create_by` varchar(64) DEFAULT '',
  `create_time` datetime DEFAULT NULL,
  `update_by` varchar(64) DEFAULT '',
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_alarm_code` (`alarm_code`),
  KEY `idx_task_id` (`task_id`),
  KEY `idx_robot_id` (`robot_id`),
  KEY `idx_alarm_time` (`alarm_time`),
  KEY `idx_handle_status` (`handle_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```

---

## 🚀 后续步骤

1. **创建 Mapper 层**：参照 `DeDeviceRegistrationMapper` 创建5个Mapper接口和XML
2. **创建 Service 层**：参照 `IDeDeviceRegistrationService` 和实现类创建5个Service
3. **创建 Controller 层**：参照 `DeDeviceRegistrationController` 创建5个Controller
4. **执行数据库脚本**：在MySQL中执行上述5张表的建表SQL
5. **配置菜单权限**：在系统管理中添加智能巡检相关菜单
6. **开发前端页面**：创建对应的Vue页面

---

## 📁 完整目录结构

```
cmvr-iot-inspection/
├── pom.xml
└── src/main/
    ├── java/com/cmvr/inspection/
    │   ├── domain/
    │   │   ├── InspectionRobot.java ✅
    │   │   ├── InspectionMap.java ✅
    │   │   ├── InspectionTask.java ✅
    │   │   ├── InspectionWaypoint.java ✅
    │   │   └── InspectionAlarm.java ✅
    │   ├── mapper/ (待创建)
    │   ├── service/ (待创建)
    │   │   └── impl/ (待创建)
    └── resources/
        └── mapper/inspection/ (待创建)

cmvr-iot-admin/src/main/java/com/cmvr/web/controller/
└── inspection/ (待创建)
```

---

## 💡 关键注意事项

1. **不使用 @TableName 注解**：项目通过 MyBatis XML 映射表名
2. **继承 BaseEntity**：包含 create_by, create_time, update_by, update_time 等公共字段
3. **使用 UUID 主键**：`@TableId(value = "id", type = IdType.ASSIGN_UUID)`
4. **遵循命名规范**：表名使用下划线，类名使用驼峰
5. **权限标识**：如 `inspection:robot:list`、`inspection:robot:add` 等
