Files
ar-inspection/script/sql/DATABASE-INSTALL-GUIDE.md
2025-12-02 14:09:31 +08:00

9.7 KiB

AR智能巡检平台 - 数据库安装指南

文件说明

本目录包含以下 SQL 文件:

数据库表结构文件

  • ar-inspection-tables.sql - AR巡检模块数据库表结构(8个业务表)
  • ar-inspection-tables-rollback.sql - 数据库表回滚脚本(删除所有巡检表)

菜单权限文件

  • ar-inspection-menu.sql - 菜单和权限初始化SQL(49条权限配置)
  • ar-inspection-menu-rollback.sql - 菜单权限回滚SQL

数据库表清单

序号 表名 说明 用途
1 ar_device AR设备管理表 管理AR眼镜等设备信息
2 ar_region 巡检区域管理表 管理巡检区域划分
3 ar_point 巡检点位管理表 管理具体巡检点位
4 ar_task 巡检任务模板表 定义巡检任务模板
5 ar_step 巡检步骤表 定义任务的执行步骤(支持树形结构)
6 ar_step_media 步骤媒体文件表 存储步骤相关的图片/视频/音频
7 ar_execution 任务执行记录表 记录任务的执行情况
8 ar_step_record 步骤执行记录表 记录每个步骤的执行详情

表关系图

ar_device (设备)
  └─> ar_execution (执行记录)

ar_region (区域)
  ├─> ar_point (点位)
  ├─> ar_task (任务模板)
  └─> ar_execution (执行记录)

ar_point (点位)
  └─> ar_step (巡检步骤)

ar_task (任务模板)
  ├─> ar_step (巡检步骤)
  └─> ar_execution (执行记录)

ar_step (巡检步骤)
  ├─> ar_step (父子关系-树形结构)
  └─> ar_step_record (步骤记录)

ar_execution (执行记录)
  └─> ar_step_record (步骤记录)

ar_step_record (步骤记录)
  └─> ar_step_media (步骤媒体)

安装步骤

第一步: 创建数据库表

根据你的环境选择以下任一方式执行:

方式1: 命令行导入

# 进入MySQL
mysql -u root -p

# 选择数据库(请根据实际情况修改数据库名)
use ry-vue;

# 导入表结构
source /path/to/ar-inspection/script/sql/ar-inspection-tables.sql;

# 验证表是否创建成功
show tables like 'ar_%';

# 查看表结构(以ar_device为例)
desc ar_device;

# 退出MySQL
exit;

方式2: 直接执行命令

# 一条命令完成导入
mysql -u root -p -D ry-vue < /path/to/ar-inspection/script/sql/ar-inspection-tables.sql

方式3: 使用 Navicat/DBeaver/DataGrip 等 GUI 工具

  1. 打开工具并连接到数据库
  2. 选择数据库 ry-vue
  3. 打开 SQL 文件: ar-inspection-tables.sql
  4. 点击"运行"或"执行"按钮
  5. 验证表是否创建成功

第二步: 导入菜单权限数据

# 方式1: 命令行
mysql -u root -p -D ry-vue < /path/to/ar-inspection/script/sql/ar-inspection-menu.sql

# 方式2: MySQL客户端
mysql -u root -p
use ry-vue;
source /path/to/ar-inspection/script/sql/ar-inspection-menu.sql;

# 验证菜单是否导入成功
SELECT menu_id, menu_name, parent_id, menu_type, perms
FROM sys_menu
WHERE menu_id >= 2000 AND menu_id < 2200
ORDER BY menu_id;

第三步: 分配权限给角色

  1. 登录系统管理后台 (http://localhost:8080 或你的实际地址)
  2. 进入 系统管理 > 角色管理
  3. 选择需要授权的角色(如"管理员"),点击"修改"
  4. 在菜单权限中勾选 "AR巡检" 及其子菜单
  5. 点击"确定"保存设置

第四步: 验证安装

# 验证所有表是否创建成功
mysql -u root -p -D ry-vue -e "SHOW TABLES LIKE 'ar_%';"

# 验证菜单权限是否导入成功
mysql -u root -p -D ry-vue -e "SELECT COUNT(*) as menu_count FROM sys_menu WHERE menu_id >= 2000 AND menu_id < 2200;"
# 应该返回 49 条记录

# 验证表结构(查看ar_device表为例)
mysql -u root -p -D ry-vue -e "DESC ar_device;"

回滚操作

如果需要删除所有巡检模块的表和菜单权限,按以下顺序执行:

删除菜单权限

mysql -u root -p -D ry-vue < /path/to/ar-inspection/script/sql/ar-inspection-menu-rollback.sql

删除数据库表

mysql -u root -p -D ry-vue < /path/to/ar-inspection/script/sql/ar-inspection-tables-rollback.sql

警告: 回滚操作会永久删除所有表及其数据,请在执行前确保已备份重要数据!

技术特性

1. 多租户支持

  • 所有表包含 tenant_id 字段
  • 默认租户ID为 000000
  • 支持数据隔离,不同租户数据互不干扰

2. 逻辑删除

  • 所有表包含 del_flag 字段
  • 0 = 存在, 1 = 已删除
  • 删除操作不会物理删除数据,仅标记为已删除

3. 审计字段

所有表包含以下审计字段:

  • create_dept - 创建部门
  • create_by - 创建者
  • create_time - 创建时间
  • update_by - 更新者
  • update_time - 更新时间

4. 主键策略

  • 使用雪花ID算法(ASSIGN_ID)
  • 由应用程序生成,不使用数据库自增
  • 64位长整型,分布式友好

5. JSON字段支持

以下表包含JSON格式字段:

  • ar_region.region_data - 区域业务数据
  • ar_point.position_data - 点位坐标等数据
  • ar_step.ai_data - AI配置数据
  • ar_step_record.ai_result - AI识别结果

JSON字段由 MyBatis-Plus 的 JacksonTypeHandler 自动处理。

6. 树形结构支持

ar_step 表支持树形结构:

  • parent_id - 父步骤ID(0为顶级)
  • ancestors - 祖级列表(如: 0,1,2)
  • is_leaf - 是否叶子节点

7. 索引优化

已根据常见查询场景配置索引:

  • 主键索引 (PRIMARY KEY)
  • 唯一索引 (UNIQUE KEY) - 防止重复数据
  • 普通索引 (KEY) - 加速查询

数据字典

设备状态 (ar_device.status)

  • 0 - 启用
  • 1 - 停用

区域状态 (ar_region.status)

  • 0 - 正常
  • 1 - 停用

任务状态 (ar_task.status)

  • 0 - 正常
  • 1 - 停用

执行状态 (ar_execution.status)

  • pending - 待执行
  • in_progress - 执行中
  • completed - 已完成
  • cancelled - 已取消

步骤记录状态 (ar_step_record.status)

  • pending - 待执行
  • completed - 已完成
  • skipped - 已跳过

媒体类型 (ar_step_media.media_type)

  • image - 图片
  • video - 视频
  • audio - 音频

Yes/No 标志

  • 0 - 否/No
  • 1 - 是/Yes

适用于以下字段:

  • need_voice_read - 需要语音朗读
  • need_voice_rephrase - 需要用户复述
  • need_voice_confirm - 需要确认
  • need_ai - 需要AI识别
  • is_operation - 是否操作步骤
  • is_leaf - 是否叶子节点
  • is_done - 是否完成

注意事项

1. 数据库版本要求

  • MySQL 8.0+ (推荐 8.0.28 或更高版本)
  • 字符集: utf8mb4
  • 排序规则: utf8mb4_unicode_ci

2. 执行顺序

必须按以下顺序执行:

  1. 先创建表结构 (ar-inspection-tables.sql)
  2. 再导入菜单权限 (ar-inspection-menu.sql)

回滚时按相反顺序:

  1. 先删除菜单权限 (ar-inspection-menu-rollback.sql)
  2. 再删除表结构 (ar-inspection-tables-rollback.sql)

3. 数据库名称

默认数据库名为 ry-vue,如果你的数据库名称不同,请在执行前修改:

# 使用你的实际数据库名
use your_database_name;

4. 权限要求

执行SQL的数据库用户需要以下权限:

  • CREATE - 创建表
  • DROP - 删除表
  • INSERT - 插入数据(菜单权限)
  • ALTER - 修改表结构

5. 备份建议

在生产环境执行前,强烈建议:

  1. 完整备份现有数据库
  2. 先在测试环境验证
  3. 选择低峰期执行

备份命令:

# 备份整个数据库
mysqldump -u root -p ry-vue > backup_$(date +%Y%m%d_%H%M%S).sql

# 仅备份巡检模块表
mysqldump -u root -p ry-vue ar_device ar_region ar_point ar_task ar_step ar_step_media ar_execution ar_step_record > ar_inspection_backup_$(date +%Y%m%d_%H%M%S).sql

6. 索引维护

大数据量情况下建议定期优化索引:

-- 分析表
ANALYZE TABLE ar_device, ar_region, ar_point, ar_task, ar_step, ar_step_media, ar_execution, ar_step_record;

-- 优化表
OPTIMIZE TABLE ar_device, ar_region, ar_point, ar_task, ar_step, ar_step_media, ar_execution, ar_step_record;

示例数据

SQL文件中已包含示例数据(默认注释),如需使用可取消注释:

-- 设备示例数据
INSERT INTO ar_device VALUES(1, '000000', 'AR眼镜-001', 'DEV001', 'HoloLens 2', '0', 'AR智能眼镜设备', '0', 103, 1, sysdate(), null, null);

-- 区域示例数据
INSERT INTO ar_region VALUES(1, '000000', '主控室', 'REGION001', null, '0', '电厂主控室区域', '0', 103, 1, sysdate(), null, null);

-- 点位示例数据
INSERT INTO ar_point VALUES(1, '000000', 1, '主控台', 'POINT001', null, '主控台点位', '0', 103, 1, sysdate(), null, null);

-- 任务模板示例数据
INSERT INTO ar_task VALUES(1, '000000', '日常巡检任务', 'TASK001', 1, 'daily', '0', '每日例行巡检任务', '0', 103, 1, sysdate(), null, null);

故障排查

问题1: 表已存在错误

ERROR 1050 (42S01): Table 'ar_device' already exists

解决方案:

  1. 先执行回滚脚本删除旧表
  2. 或手动删除冲突的表
  3. 再重新执行创建脚本

问题2: 权限不足错误

ERROR 1142 (42000): CREATE command denied to user

解决方案: 使用具有足够权限的用户(如root)执行,或联系数据库管理员授予权限。

问题3: 菜单ID冲突

ERROR 1062 (23000): Duplicate entry '2000' for key 'PRIMARY'

解决方案:

  1. 先执行菜单回滚脚本
  2. 或手动删除冲突的菜单
  3. 再重新执行菜单导入脚本

问题4: 字符集不匹配

ERROR 1115 (42000): Unknown character set: 'utf8mb4'

解决方案: 升级MySQL到5.5.3或更高版本,或修改SQL文件中的字符集为utf8。

技术支持

如有问题,请通过以下方式获取帮助:

  1. 查看项目文档: CLAUDE.mdAR-INSPECTION-SETUP.md
  2. 提交 Issue 到项目仓库
  3. 联系开发团队

更新日志

  • 2025-01-13: 初始版本,创建8个业务表和49条权限配置