feat: ready to reply
This commit is contained in:
@@ -4,7 +4,7 @@ spring.servlet.multipart.location: /ruoyi/server/temp
|
||||
--- # 监控中心配置
|
||||
spring.boot.admin.client:
|
||||
# 增加客户端开关
|
||||
enabled: true
|
||||
enabled: false
|
||||
url: http://localhost:9090/admin
|
||||
instance:
|
||||
service-host-type: IP
|
||||
@@ -16,7 +16,7 @@ spring.boot.admin.client:
|
||||
|
||||
--- # snail-job 配置
|
||||
snail-job:
|
||||
enabled: true
|
||||
enabled: false
|
||||
# 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
|
||||
group: "ruoyi_group"
|
||||
# SnailJob 接入验证令牌 详见 script/sql/ry_job.sql `sj_group_config`表
|
||||
@@ -50,9 +50,9 @@ spring:
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
|
||||
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
|
||||
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: root
|
||||
password: root
|
||||
url: jdbc:mysql://1Panel-mysql-TAXz:3306/ari?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: ari
|
||||
password: fhWpsBYNxZfdAEph
|
||||
# # 从库数据源
|
||||
# slave:
|
||||
# lazy: true
|
||||
@@ -99,13 +99,13 @@ spring:
|
||||
spring.data:
|
||||
redis:
|
||||
# 地址
|
||||
host: localhost
|
||||
host: 1Panel-redis-HCyW
|
||||
# 端口,默认为6379
|
||||
port: 6379
|
||||
# 数据库索引
|
||||
database: 0
|
||||
database: 1
|
||||
# redis 密码必须配置
|
||||
password: ruoyi123
|
||||
password: redis_X7Ehme
|
||||
# 连接超时时间
|
||||
timeout: 10s
|
||||
# 是否开启ssl
|
||||
|
||||
366
script/sql/DATABASE-INSTALL-GUIDE.md
Normal file
366
script/sql/DATABASE-INSTALL-GUIDE.md
Normal file
@@ -0,0 +1,366 @@
|
||||
# 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: 命令行导入
|
||||
|
||||
```bash
|
||||
# 进入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: 直接执行命令
|
||||
|
||||
```bash
|
||||
# 一条命令完成导入
|
||||
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. 验证表是否创建成功
|
||||
|
||||
### 第二步: 导入菜单权限数据
|
||||
|
||||
```bash
|
||||
# 方式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. 点击"确定"保存设置
|
||||
|
||||
### 第四步: 验证安装
|
||||
|
||||
```bash
|
||||
# 验证所有表是否创建成功
|
||||
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;"
|
||||
```
|
||||
|
||||
## 回滚操作
|
||||
|
||||
如果需要删除所有巡检模块的表和菜单权限,按以下顺序执行:
|
||||
|
||||
### 删除菜单权限
|
||||
|
||||
```bash
|
||||
mysql -u root -p -D ry-vue < /path/to/ar-inspection/script/sql/ar-inspection-menu-rollback.sql
|
||||
```
|
||||
|
||||
### 删除数据库表
|
||||
|
||||
```bash
|
||||
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`,如果你的数据库名称不同,请在执行前修改:
|
||||
```bash
|
||||
# 使用你的实际数据库名
|
||||
use your_database_name;
|
||||
```
|
||||
|
||||
### 4. 权限要求
|
||||
执行SQL的数据库用户需要以下权限:
|
||||
- CREATE - 创建表
|
||||
- DROP - 删除表
|
||||
- INSERT - 插入数据(菜单权限)
|
||||
- ALTER - 修改表结构
|
||||
|
||||
### 5. 备份建议
|
||||
在生产环境执行前,强烈建议:
|
||||
1. 完整备份现有数据库
|
||||
2. 先在测试环境验证
|
||||
3. 选择低峰期执行
|
||||
|
||||
备份命令:
|
||||
```bash
|
||||
# 备份整个数据库
|
||||
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. 索引维护
|
||||
大数据量情况下建议定期优化索引:
|
||||
```sql
|
||||
-- 分析表
|
||||
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文件中已包含示例数据(默认注释),如需使用可取消注释:
|
||||
|
||||
```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.md` 和 `AR-INSPECTION-SETUP.md`
|
||||
2. 提交 Issue 到项目仓库
|
||||
3. 联系开发团队
|
||||
|
||||
## 更新日志
|
||||
|
||||
- **2025-01-13**: 初始版本,创建8个业务表和49条权限配置
|
||||
43
script/sql/ar-inspection-tables-rollback.sql
Normal file
43
script/sql/ar-inspection-tables-rollback.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
-- ----------------------------
|
||||
-- AR智能巡检平台 - 数据库表回滚SQL
|
||||
-- 用于删除所有巡检模块相关表
|
||||
-- 创建日期: 2025-01-13
|
||||
-- ----------------------------
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- 删除所有AR巡检模块表
|
||||
-- 注意: 此操作会永久删除表及其数据,请谨慎执行!
|
||||
-- ----------------------------
|
||||
|
||||
DROP TABLE IF EXISTS `ar_step_media`;
|
||||
DROP TABLE IF EXISTS `ar_step_record`;
|
||||
DROP TABLE IF EXISTS `ar_execution`;
|
||||
DROP TABLE IF EXISTS `ar_step`;
|
||||
DROP TABLE IF EXISTS `ar_task`;
|
||||
DROP TABLE IF EXISTS `ar_point`;
|
||||
DROP TABLE IF EXISTS `ar_region`;
|
||||
DROP TABLE IF EXISTS `ar_device`;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ----------------------------
|
||||
-- 回滚完成
|
||||
-- ----------------------------
|
||||
-- 已删除以下8个表:
|
||||
-- 1. ar_device - AR设备管理表
|
||||
-- 2. ar_region - 巡检区域管理表
|
||||
-- 3. ar_point - 巡检点位管理表
|
||||
-- 4. ar_task - 巡检任务模板表
|
||||
-- 5. ar_step - 巡检步骤表
|
||||
-- 6. ar_step_media - 步骤媒体文件表
|
||||
-- 7. ar_execution - 任务执行记录表
|
||||
-- 8. ar_step_record - 步骤执行记录表
|
||||
-- ----------------------------
|
||||
|
||||
-- 执行方式:
|
||||
-- mysql -u root -p -D ry-vue < /path/to/ar-inspection-tables-rollback.sql
|
||||
-- 或
|
||||
-- mysql> use ry-vue;
|
||||
-- mysql> source /path/to/ar-inspection-tables-rollback.sql;
|
||||
334
script/sql/ar-inspection-tables.sql
Normal file
334
script/sql/ar-inspection-tables.sql
Normal file
@@ -0,0 +1,334 @@
|
||||
-- ----------------------------
|
||||
-- AR智能巡检平台 - 数据库表结构SQL
|
||||
-- 适用于 MySQL 8.0+
|
||||
-- 创建日期: 2025-01-13
|
||||
-- ----------------------------
|
||||
|
||||
-- 设置字符集和排序规则
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- 表1: AR设备管理表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ar_device`;
|
||||
CREATE TABLE `ar_device` (
|
||||
`id` bigint(20) NOT NULL COMMENT '设备ID',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`device_name` varchar(100) NOT NULL COMMENT '设备名称',
|
||||
`device_no` varchar(50) NOT NULL COMMENT '设备编号',
|
||||
`device_model` varchar(100) DEFAULT NULL COMMENT '设备型号',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0启用 1停用)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_device_no` (`device_no`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='AR设备管理表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 表2: 巡检区域管理表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ar_region`;
|
||||
CREATE TABLE `ar_region` (
|
||||
`id` bigint(20) NOT NULL COMMENT '区域ID',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`region_name` varchar(100) NOT NULL COMMENT '区域名称',
|
||||
`region_code` varchar(50) NOT NULL COMMENT '区域编码',
|
||||
`region_data` text DEFAULT NULL COMMENT '区域业务数据(JSON格式,预留)',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_region_code` (`region_code`, `tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检区域管理表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 表3: 巡检点位管理表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ar_point`;
|
||||
CREATE TABLE `ar_point` (
|
||||
`id` bigint(20) NOT NULL COMMENT '点位ID',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`region_id` bigint(20) NOT NULL COMMENT '所属区域ID',
|
||||
`point_name` varchar(100) NOT NULL COMMENT '点位名称',
|
||||
`point_code` varchar(50) NOT NULL COMMENT '点位编码',
|
||||
`position_data` text DEFAULT NULL COMMENT '点位业务数据(JSON格式,包含坐标、预设等)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_point_code` (`point_code`, `tenant_id`),
|
||||
KEY `idx_region_id` (`region_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检点位管理表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 表4: 巡检任务模板表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ar_task`;
|
||||
CREATE TABLE `ar_task` (
|
||||
`id` bigint(20) NOT NULL COMMENT '任务ID',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`task_name` varchar(100) NOT NULL COMMENT '任务名称',
|
||||
`task_code` varchar(50) NOT NULL COMMENT '任务编码',
|
||||
`region_id` bigint(20) DEFAULT NULL COMMENT '关联区域ID',
|
||||
`task_type` varchar(50) DEFAULT NULL COMMENT '任务类型',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_task_code` (`task_code`, `tenant_id`),
|
||||
KEY `idx_region_id` (`region_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_task_type` (`task_type`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检任务模板表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 表5: 巡检步骤表(支持树形结构)
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ar_step`;
|
||||
CREATE TABLE `ar_step` (
|
||||
`id` bigint(20) NOT NULL COMMENT '步骤ID',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`task_id` bigint(20) NOT NULL COMMENT '所属任务ID',
|
||||
`parent_id` bigint(20) DEFAULT 0 COMMENT '父步骤ID(0为顶级)',
|
||||
`ancestors` varchar(500) DEFAULT '' COMMENT '祖级列表',
|
||||
`step_name` varchar(100) NOT NULL COMMENT '步骤名称',
|
||||
`step_content` text DEFAULT NULL COMMENT '步骤内容描述',
|
||||
`content_voice` varchar(500) DEFAULT NULL COMMENT '步骤语音文本',
|
||||
`order_num` int(11) DEFAULT 0 COMMENT '排序号',
|
||||
`point_id` bigint(20) DEFAULT NULL COMMENT '关联点位ID',
|
||||
`need_voice_read` char(1) DEFAULT '0' COMMENT '需要语音朗读(0否 1是)',
|
||||
`need_voice_rephrase` char(1) DEFAULT '0' COMMENT '需要用户复述(0否 1是)',
|
||||
`rephrase_content` text DEFAULT NULL COMMENT '复述提示文本',
|
||||
`rephrase_voice` varchar(500) DEFAULT NULL COMMENT '复述语音文本',
|
||||
`need_voice_confirm` char(1) DEFAULT '0' COMMENT '需要确认(0否 1是)',
|
||||
`confirm_content` text DEFAULT NULL COMMENT '确认提示文本',
|
||||
`confirm_voice` varchar(500) DEFAULT NULL COMMENT '确认语音文本',
|
||||
`confirm_word` varchar(100) DEFAULT NULL COMMENT '确认词',
|
||||
`need_ai` char(1) DEFAULT '0' COMMENT '需要AI识别(0否 1是)',
|
||||
`ai_target_name` varchar(100) DEFAULT NULL COMMENT 'AI目标名称',
|
||||
`ai_data` text DEFAULT NULL COMMENT 'AI配置数据(JSON格式,预留)',
|
||||
`is_operation` char(1) DEFAULT '0' COMMENT '是否操作步骤(0否 1是)',
|
||||
`is_leaf` char(1) DEFAULT '1' COMMENT '是否叶子节点(0否 1是)',
|
||||
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_task_id` (`task_id`),
|
||||
KEY `idx_parent_id` (`parent_id`),
|
||||
KEY `idx_point_id` (`point_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_order_num` (`order_num`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='巡检步骤表(支持树形结构)';
|
||||
|
||||
-- ----------------------------
|
||||
-- 表6: 步骤媒体文件表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ar_step_media`;
|
||||
CREATE TABLE `ar_step_media` (
|
||||
`id` bigint(20) NOT NULL COMMENT '媒体ID',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`step_record_id` bigint(20) NOT NULL COMMENT '步骤记录ID',
|
||||
`media_type` varchar(50) NOT NULL COMMENT '媒体类型(image/video/audio)',
|
||||
`file_url` varchar(500) NOT NULL COMMENT '文件URL',
|
||||
`file_name` varchar(200) DEFAULT NULL COMMENT '文件名称',
|
||||
`file_size` bigint(20) DEFAULT NULL COMMENT '文件大小(字节)',
|
||||
`upload_time` datetime DEFAULT NULL COMMENT '上传时间',
|
||||
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_step_record_id` (`step_record_id`),
|
||||
KEY `idx_media_type` (`media_type`),
|
||||
KEY `idx_tenant_id` (`tenant_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='步骤媒体文件表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 表7: 任务执行记录表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ar_execution`;
|
||||
CREATE TABLE `ar_execution` (
|
||||
`id` bigint(20) NOT NULL COMMENT '执行ID',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`task_id` bigint(20) NOT NULL COMMENT '任务模板ID',
|
||||
`execution_code` varchar(50) NOT NULL COMMENT '执行编号',
|
||||
`region_id` bigint(20) DEFAULT NULL COMMENT '区域ID',
|
||||
`device_id` bigint(20) DEFAULT NULL COMMENT '使用设备ID',
|
||||
`operator_id` bigint(20) DEFAULT NULL COMMENT '操作人ID',
|
||||
`operator_name` varchar(50) DEFAULT NULL COMMENT '操作人姓名',
|
||||
`custodian_id` bigint(20) DEFAULT NULL COMMENT '监护人ID',
|
||||
`custodian_name` varchar(50) DEFAULT NULL COMMENT '监护人姓名',
|
||||
`sender_id` bigint(20) DEFAULT NULL COMMENT '发令人ID',
|
||||
`sender_name` varchar(50) DEFAULT NULL COMMENT '发令人姓名',
|
||||
`recipient_id` bigint(20) DEFAULT NULL COMMENT '收令人ID',
|
||||
`recipient_name` varchar(50) DEFAULT NULL COMMENT '收令人姓名',
|
||||
`commander_id` bigint(20) DEFAULT NULL COMMENT '值长ID',
|
||||
`commander_name` varchar(50) DEFAULT NULL COMMENT '值长姓名',
|
||||
`status` varchar(20) DEFAULT 'pending' COMMENT '状态(pending待执行/in_progress执行中/completed已完成/cancelled已取消)',
|
||||
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
|
||||
`end_time` datetime DEFAULT NULL COMMENT '结束时间',
|
||||
`total_steps` int(11) DEFAULT 0 COMMENT '总步骤数',
|
||||
`completed_steps` int(11) DEFAULT 0 COMMENT '已完成步骤数',
|
||||
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_execution_code` (`execution_code`, `tenant_id`),
|
||||
KEY `idx_task_id` (`task_id`),
|
||||
KEY `idx_region_id` (`region_id`),
|
||||
KEY `idx_device_id` (`device_id`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_create_time` (`create_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务执行记录表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 表8: 步骤执行记录表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `ar_step_record`;
|
||||
CREATE TABLE `ar_step_record` (
|
||||
`id` bigint(20) NOT NULL COMMENT '记录ID',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户编号',
|
||||
`execution_id` bigint(20) NOT NULL COMMENT '任务执行ID',
|
||||
`step_id` bigint(20) NOT NULL COMMENT '步骤ID',
|
||||
`status` varchar(20) DEFAULT 'pending' COMMENT '状态(pending待执行/completed已完成/skipped已跳过)',
|
||||
`is_done` char(1) DEFAULT '0' COMMENT '是否完成(0否 1是)',
|
||||
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
|
||||
`completion_time` datetime DEFAULT NULL COMMENT '完成时间',
|
||||
`duration` int(11) DEFAULT 0 COMMENT '耗时(秒)',
|
||||
`text_feedback` text DEFAULT NULL COMMENT '文本反馈',
|
||||
`voice_text` text DEFAULT NULL COMMENT '语音识别文本',
|
||||
`ai_result` text DEFAULT NULL COMMENT 'AI识别结果(JSON格式)',
|
||||
`executor_id` bigint(20) DEFAULT NULL COMMENT '执行人ID',
|
||||
`executor_name` varchar(50) DEFAULT NULL COMMENT '执行人姓名',
|
||||
`del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0存在 1删除)',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_execution_id` (`execution_id`),
|
||||
KEY `idx_step_id` (`step_id`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_tenant_id` (`tenant_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='步骤执行记录表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 插入示例数据(可选)
|
||||
-- ----------------------------
|
||||
|
||||
-- 示例设备数据
|
||||
-- INSERT INTO ar_device VALUES(1, '000000', 'AR眼镜-001', 'DEV001', 'HoloLens 2', '0', 'AR智能眼镜设备', '0', 103, 1, sysdate(), null, null);
|
||||
-- INSERT INTO ar_device VALUES(2, '000000', 'AR眼镜-002', 'DEV002', '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_region VALUES(2, '000000', '设备间', 'REGION002', 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_point VALUES(2, '000000', 1, '监控屏', 'POINT002', null, '监控屏点位', '0', 103, 1, sysdate(), null, null);
|
||||
|
||||
-- 示例任务模板数据
|
||||
-- INSERT INTO ar_task VALUES(1, '000000', '日常巡检任务', 'TASK001', 1, 'daily', '0', '每日例行巡检任务', '0', 103, 1, sysdate(), null, null);
|
||||
-- INSERT INTO ar_task VALUES(2, '000000', '设备检修任务', 'TASK002', 2, 'maintenance', '0', '设备定期检修任务', '0', 103, 1, sysdate(), null, null);
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
-- ----------------------------
|
||||
-- 说明
|
||||
-- ----------------------------
|
||||
-- 1. 本SQL文件适用于 MySQL 8.0+ 版本
|
||||
-- 2. 所有表均支持多租户功能,通过 tenant_id 字段隔离
|
||||
-- 3. 所有表均支持逻辑删除,通过 del_flag 字段标识
|
||||
-- 4. 主键采用雪花ID算法,由应用程序生成,不使用数据库自增
|
||||
-- 5. 所有表包含标准审计字段: create_dept, create_by, create_time, update_by, update_time
|
||||
-- 6. ar_step 表支持树形结构,通过 parent_id 和 ancestors 字段实现
|
||||
-- 7. JSON字段使用 text 类型存储,由 MyBatis-Plus 的 JacksonTypeHandler 处理
|
||||
-- 8. 索引已根据业务查询场景优化配置
|
||||
-- 9. 字符集使用 utf8mb4,支持emoji等特殊字符
|
||||
-- 10. 排序规则使用 utf8mb4_unicode_ci,确保多语言支持
|
||||
|
||||
-- ----------------------------
|
||||
-- 导入说明
|
||||
-- ----------------------------
|
||||
-- 执行方式1: 命令行导入
|
||||
-- mysql -u root -p -D ry-vue < /path/to/ar-inspection-tables.sql
|
||||
--
|
||||
-- 执行方式2: MySQL客户端执行
|
||||
-- mysql> use ry-vue;
|
||||
-- mysql> source /path/to/ar-inspection-tables.sql;
|
||||
--
|
||||
-- 执行方式3: Navicat等GUI工具
|
||||
-- 打开SQL文件后点击"运行"按钮执行
|
||||
--
|
||||
-- 注意事项:
|
||||
-- - 请确保已创建数据库 ry-vue (或根据实际情况修改数据库名)
|
||||
-- - 建议先在测试环境验证后再在生产环境执行
|
||||
-- - 执行前请备份现有数据库
|
||||
-- - 示例数据默认已注释,如需使用请取消注释
|
||||
|
||||
-- ----------------------------
|
||||
-- 表关系说明
|
||||
-- ----------------------------
|
||||
-- ar_device (设备)
|
||||
-- └── ar_execution (执行记录) - 通过 device_id 关联
|
||||
--
|
||||
-- ar_region (区域)
|
||||
-- ├── ar_point (点位) - 通过 region_id 关联
|
||||
-- ├── ar_task (任务模板) - 通过 region_id 关联
|
||||
-- └── ar_execution (执行记录) - 通过 region_id 关联
|
||||
--
|
||||
-- ar_point (点位)
|
||||
-- └── ar_step (巡检步骤) - 通过 point_id 关联
|
||||
--
|
||||
-- ar_task (任务模板)
|
||||
-- ├── ar_step (巡检步骤) - 通过 task_id 关联
|
||||
-- └── ar_execution (执行记录) - 通过 task_id 关联
|
||||
--
|
||||
-- ar_step (巡检步骤)
|
||||
-- ├── ar_step (父子关系) - 通过 parent_id 关联(树形结构)
|
||||
-- └── ar_step_record (步骤记录) - 通过 step_id 关联
|
||||
--
|
||||
-- ar_execution (执行记录)
|
||||
-- └── ar_step_record (步骤记录) - 通过 execution_id 关联
|
||||
--
|
||||
-- ar_step_record (步骤记录)
|
||||
-- └── ar_step_media (步骤媒体) - 通过 step_record_id 关联
|
||||
|
||||
-- 创建完成!
|
||||
Reference in New Issue
Block a user