CMVR-IOT/智能巡检模块-创建说明.md
lixiaolong 8e4c122f9a feat(inspection): 添加巡检模块功能并更新项目配置
- 添加巡检告警、地图、机器人、任务、点位等实体类和服务接口
- 创建巡检模块数据库表结构,包含机器人、地图、任务等核心表
- 实现巡检告警控制器,提供增删改查和导出功能
- 配置巡检告警数据映射和查询视图
- 更新全局应用配置中的MinIO服务地址
- 在启动类中添加MyBatis扫描配置
- 重构设备配置实体类,移除冗余字段并优化注解配置
2026-06-02 15:01:23 +08:00

11 KiB
Raw Blame History

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

已完成创建的文件

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 XML5个

位置: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. Controller5个

位置: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 (巡检机器人表)

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 (巡检地图表)

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 (巡检任务表)

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 (巡检点位表)

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 (巡检告警表)

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:listinspection:robot:add