diff --git a/pom.xml b/pom.xml
index 91ec908..554ebb4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,6 +71,18 @@
ruoyi-common-swagger
+
+
+ org.flywaydb
+ flyway-core
+
+
+
+
+ org.flywaydb
+ flyway-mysql
+
+
diff --git a/src/main/java/com/ruoyi/device/Application.java b/src/main/java/com/ruoyi/device/TuohengDeviceApplication.java
similarity index 83%
rename from src/main/java/com/ruoyi/device/Application.java
rename to src/main/java/com/ruoyi/device/TuohengDeviceApplication.java
index 16d559c..7d293f9 100644
--- a/src/main/java/com/ruoyi/device/Application.java
+++ b/src/main/java/com/ruoyi/device/TuohengDeviceApplication.java
@@ -6,19 +6,19 @@ import com.ruoyi.common.security.annotation.EnableCustomConfig;
import com.ruoyi.common.security.annotation.EnableRyFeignClients;
/**
- * 系统模块
- *
+ * 设备模块
+ *
* @author ruoyi
*/
@EnableCustomConfig
@EnableRyFeignClients
@SpringBootApplication
-public class Application
+public class TuohengDeviceApplication
{
public static void main(String[] args)
{
- SpringApplication.run(Application.class, args);
- System.out.println("(♥◠‿◠)ノ゙ 系统模块启动成功 ლ(´ڡ`ლ)゙ \n" +
+ SpringApplication.run(TuohengDeviceApplication.class, args);
+ System.out.println("(♥◠‿◠)ノ゙ 设备模块启动成功 ლ(´ڡ`ლ)゙ \n" +
" .-------. ____ __ \n" +
" | _ _ \\ \\ \\ / / \n" +
" | ( ' ) | \\ _. / ' \n" +
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceTempController.java b/src/main/java/com/ruoyi/device/controller/DeviceTempController.java
new file mode 100644
index 0000000..f7539de
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/controller/DeviceTempController.java
@@ -0,0 +1,48 @@
+package com.ruoyi.device.controller;
+
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.device.domain.DeviceTemp;
+import com.ruoyi.device.service.IDeviceTempService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 设备临时表Controller
+ *
+ * @author ruoyi
+ * @date 2026-01-15
+ */
+@RestController
+@RequestMapping("/device/temp")
+public class DeviceTempController extends BaseController
+{
+ @Autowired
+ private IDeviceTempService deviceTempService;
+
+ /**
+ * 查询设备临时表列表
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(DeviceTemp deviceTemp)
+ {
+ startPage();
+ List list = deviceTempService.selectDeviceTempList(deviceTemp);
+ return getDataTable(list);
+ }
+
+ /**
+ * 获取设备临时表详细信息
+ */
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") String id)
+ {
+ return success(deviceTempService.selectDeviceTempById(id));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/device/domain/DeviceTemp.java b/src/main/java/com/ruoyi/device/domain/DeviceTemp.java
new file mode 100644
index 0000000..6aebc53
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/domain/DeviceTemp.java
@@ -0,0 +1,35 @@
+package com.ruoyi.device.domain;
+
+import com.ruoyi.common.core.web.domain.BaseEntity;
+
+/**
+ * 设备临时表对象 tuoheng_device_temp
+ *
+ * @author ruoyi
+ * @date 2026-01-15
+ */
+public class DeviceTemp extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private String id;
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "DeviceTemp{" +
+ "id='" + id + '\'' +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/device/mapper/DeviceTempMapper.java b/src/main/java/com/ruoyi/device/mapper/DeviceTempMapper.java
new file mode 100644
index 0000000..c6e72cc
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/mapper/DeviceTempMapper.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.mapper;
+
+import com.ruoyi.device.domain.DeviceTemp;
+import java.util.List;
+
+/**
+ * 设备临时表Mapper接口
+ *
+ * @author ruoyi
+ * @date 2026-01-15
+ */
+public interface DeviceTempMapper
+{
+ /**
+ * 查询设备临时表列表
+ *
+ * @param deviceTemp 设备临时表
+ * @return 设备临时表集合
+ */
+ public List selectDeviceTempList(DeviceTemp deviceTemp);
+
+ /**
+ * 根据ID查询设备临时表
+ *
+ * @param id 主键ID
+ * @return 设备临时表
+ */
+ public DeviceTemp selectDeviceTempById(String id);
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/device/service/IDeviceTempService.java b/src/main/java/com/ruoyi/device/service/IDeviceTempService.java
new file mode 100644
index 0000000..8dc2e29
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/service/IDeviceTempService.java
@@ -0,0 +1,29 @@
+package com.ruoyi.device.service;
+
+import com.ruoyi.device.domain.DeviceTemp;
+import java.util.List;
+
+/**
+ * 设备临时表Service接口
+ *
+ * @author ruoyi
+ * @date 2026-01-15
+ */
+public interface IDeviceTempService
+{
+ /**
+ * 查询设备临时表列表
+ *
+ * @param deviceTemp 设备临时表
+ * @return 设备临时表集合
+ */
+ public List selectDeviceTempList(DeviceTemp deviceTemp);
+
+ /**
+ * 根据ID查询设备临时表
+ *
+ * @param id 主键ID
+ * @return 设备临时表
+ */
+ public DeviceTemp selectDeviceTempById(String id);
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceTempServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceTempServiceImpl.java
new file mode 100644
index 0000000..80e7170
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceTempServiceImpl.java
@@ -0,0 +1,46 @@
+package com.ruoyi.device.service.impl;
+
+import com.ruoyi.device.domain.DeviceTemp;
+import com.ruoyi.device.mapper.DeviceTempMapper;
+import com.ruoyi.device.service.IDeviceTempService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 设备临时表Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2026-01-15
+ */
+@Service
+public class DeviceTempServiceImpl implements IDeviceTempService
+{
+ @Autowired
+ private DeviceTempMapper deviceTempMapper;
+
+ /**
+ * 查询设备临时表列表
+ *
+ * @param deviceTemp 设备临时表
+ * @return 设备临时表
+ */
+ @Override
+ public List selectDeviceTempList(DeviceTemp deviceTemp)
+ {
+ return deviceTempMapper.selectDeviceTempList(deviceTemp);
+ }
+
+ /**
+ * 根据ID查询设备临时表
+ *
+ * @param id 主键ID
+ * @return 设备临时表
+ */
+ @Override
+ public DeviceTemp selectDeviceTempById(String id)
+ {
+ return deviceTempMapper.selectDeviceTempById(id);
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/db/migration/V1__Create_device_temp_table.sql b/src/main/resources/db/migration/V1__Create_device_temp_table.sql
new file mode 100644
index 0000000..52f8cbc
--- /dev/null
+++ b/src/main/resources/db/migration/V1__Create_device_temp_table.sql
@@ -0,0 +1,14 @@
+-- ============================================================
+-- Flyway Migration Script
+-- ============================================================
+-- Version: V1
+-- Description: Create tuoheng_device_temp table
+-- Author: ruoyi
+-- Date: 2026-01-15
+-- ============================================================
+
+-- 创建设备临时表
+CREATE TABLE IF NOT EXISTS tuoheng_device_temp (
+ id VARCHAR(64) NOT NULL COMMENT '主键ID',
+ PRIMARY KEY (id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备临时表';
\ No newline at end of file
diff --git a/src/main/resources/device.md b/src/main/resources/device.md
new file mode 100644
index 0000000..4579eed
--- /dev/null
+++ b/src/main/resources/device.md
@@ -0,0 +1,633 @@
+# Tuoheng Device 模块说明文档
+
+## 目录
+- [1. 模块概述](#1-模块概述)
+- [2. Flyway 数据库迁移工具使用指南](#2-flyway-数据库迁移工具使用指南)
+ - [2.1 什么是 Flyway](#21-什么是-flyway)
+ - [2.2 Flyway 工作原理](#22-flyway-工作原理)
+ - [2.3 目录结构](#23-目录结构)
+ - [2.4 迁移脚本命名规则](#24-迁移脚本命名规则)
+ - [2.5 新增表操作](#25-新增表操作)
+ - [2.6 修改表结构操作](#26-修改表结构操作)
+ - [2.7 常见场景示例](#27-常见场景示例)
+ - [2.8 注意事项](#28-注意事项)
+ - [2.9 常见问题](#29-常见问题)
+
+---
+
+## 1. 模块概述
+
+`tuoheng-device` 是设备管理模块,负责设备相关的业务逻辑处理。
+
+**核心功能:**
+- 设备信息管理
+- 数据库表自动管理(基于 Flyway)
+- RESTful API 接口
+
+**技术栈:**
+- Spring Boot 3.x
+- MyBatis
+- Flyway(数据库版本管理)
+- Nacos(配置中心)
+
+---
+
+## 2. Flyway 数据库迁移工具使用指南
+
+### 2.1 什么是 Flyway
+
+Flyway 是一个开源的数据库版本管理工具,它可以:
+- ✅ 自动管理数据库表的创建和更新
+- ✅ 记录数据库变更历史
+- ✅ 支持多环境部署(开发、测试、生产)
+- ✅ 确保数据库结构的一致性
+- ✅ 支持回滚和版本控制
+
+**为什么使用 Flyway?**
+1. **自动化**:应用启动时自动检查并执行数据库变更
+2. **版本化**:每次变更都有明确的版本号,便于追踪
+3. **安全性**:不会删除表或数据,只会增量更新
+4. **团队协作**:避免手动执行 SQL 导致的环境不一致
+
+---
+
+### 2.2 Flyway 工作原理
+
+#### 启动流程
+
+```
+应用启动
+ ↓
+Flyway 初始化
+ ↓
+检查数据库中是否存在 flyway_schema_history 表
+ ↓
+ ├─ 不存在 → 创建 flyway_schema_history 表
+ └─ 存在 → 读取已执行的迁移记录
+ ↓
+扫描 db/migration 目录下的 SQL 脚本
+ ↓
+对比版本号,找出未执行的脚本
+ ↓
+按版本号顺序执行未执行的脚本
+ ↓
+记录执行结果到 flyway_schema_history 表
+ ↓
+应用启动完成
+```
+
+#### 版本管理表
+
+Flyway 会自动创建 `flyway_schema_history` 表来记录迁移历史:
+
+| 字段 | 说明 |
+|------|------|
+| installed_rank | 执行顺序 |
+| version | 版本号(如 1, 2, 3) |
+| description | 描述信息 |
+| type | 类型(SQL) |
+| script | 脚本文件名 |
+| checksum | 校验和 |
+| installed_by | 执行用户 |
+| installed_on | 执行时间 |
+| execution_time | 执行耗时 |
+| success | 是否成功 |
+
+---
+
+### 2.3 目录结构
+
+```
+tuoheng-device/
+└── src/
+ └── main/
+ └── resources/
+ └── db/
+ └── migration/ # Flyway 迁移脚本目录
+ ├── V1__Create_device_temp_table.sql
+ ├── V2__Add_device_name_column.sql
+ ├── V3__Add_device_status_column.sql
+ └── ...
+```
+
+**重要说明:**
+- 所有迁移脚本必须放在 `db/migration` 目录下
+- Flyway 会自动扫描该目录下的所有 SQL 文件
+- 脚本按版本号顺序执行
+
+---
+
+### 2.4 迁移脚本命名规则
+
+#### 命名格式
+
+```
+V{版本号}__{描述}.sql
+```
+
+**格式说明:**
+- `V` - 固定前缀(大写字母 V)
+- `{版本号}` - 数字版本号,必须递增(如 1, 2, 3 或 1.0, 1.1, 2.0)
+- `__` - 两个下划线分隔符
+- `{描述}` - 英文描述,使用下划线连接单词
+- `.sql` - 文件扩展名
+
+#### 命名示例
+
+✅ **正确示例:**
+```
+V1__Create_device_temp_table.sql
+V2__Add_device_name_column.sql
+V3__Add_device_status_index.sql
+V4__Update_device_type_enum.sql
+V1.0__Initial_schema.sql
+V1.1__Add_user_table.sql
+V2.0__Refactor_device_structure.sql
+```
+
+❌ **错误示例:**
+```
+v1__create_table.sql # V 必须大写
+V1_create_table.sql # 只有一个下划线
+V1__创建表.sql # 不能使用中文
+create_table.sql # 缺少版本号前缀
+V1.sql # 缺少描述
+```
+
+---
+
+### 2.5 新增表操作
+
+#### 场景:创建一个新表
+
+**步骤 1:确定版本号**
+
+查看 `db/migration` 目录下已有的脚本,确定下一个版本号。
+
+```bash
+# 假设已有脚本:
+V1__Create_device_temp_table.sql
+V2__Add_device_name_column.sql
+
+# 新脚本版本号应为:V3
+```
+
+**步骤 2:创建迁移脚本**
+
+在 `db/migration` 目录下创建新文件:`V3__Create_device_info_table.sql`
+
+```sql
+-- ============================================================
+-- Flyway Migration Script
+-- ============================================================
+-- Version: V3
+-- Description: Create device_info table
+-- Author: your_name
+-- Date: 2026-01-15
+-- ============================================================
+
+-- 创建设备信息表
+CREATE TABLE IF NOT EXISTS device_info (
+ id VARCHAR(64) NOT NULL COMMENT '主键ID',
+ device_name VARCHAR(100) NOT NULL COMMENT '设备名称',
+ device_type VARCHAR(50) COMMENT '设备类型',
+ status TINYINT DEFAULT 0 COMMENT '状态:0-离线 1-在线',
+ create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+ PRIMARY KEY (id),
+ INDEX idx_device_name (device_name),
+ INDEX idx_status (status)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备信息表';
+```
+
+**步骤 3:重启应用**
+
+重启应用后,Flyway 会自动:
+1. 检测到新的迁移脚本 V3
+2. 执行 SQL 创建表
+3. 记录执行历史到 `flyway_schema_history` 表
+
+**步骤 4:验证**
+
+查询数据库确认表已创建:
+```sql
+SHOW TABLES LIKE 'device_info';
+SELECT * FROM flyway_schema_history WHERE version = '3';
+```
+
+---
+
+### 2.6 修改表结构操作
+
+#### 场景 1:添加新字段
+
+**步骤 1:创建迁移脚本**
+
+文件名:`V4__Add_device_location_column.sql`
+
+```sql
+-- ============================================================
+-- Flyway Migration Script
+-- ============================================================
+-- Version: V4
+-- Description: Add location column to device_info table
+-- Author: your_name
+-- Date: 2026-01-15
+-- ============================================================
+
+-- 添加位置字段
+ALTER TABLE device_info
+ADD COLUMN location VARCHAR(200) COMMENT '设备位置' AFTER device_type;
+```
+
+**步骤 2:重启应用**
+
+Flyway 会自动执行 ALTER TABLE 语句。
+
+---
+
+#### 场景 2:修改字段类型
+
+**步骤 1:创建迁移脚本**
+
+文件名:`V5__Modify_device_name_length.sql`
+
+```sql
+-- ============================================================
+-- Flyway Migration Script
+-- ============================================================
+-- Version: V5
+-- Description: Modify device_name column length
+-- Author: your_name
+-- Date: 2026-01-15
+-- ============================================================
+
+-- 修改设备名称字段长度
+ALTER TABLE device_info
+MODIFY COLUMN device_name VARCHAR(200) NOT NULL COMMENT '设备名称';
+```
+
+---
+
+#### 场景 3:添加索引
+
+**步骤 1:创建迁移脚本**
+
+文件名:`V6__Add_device_type_index.sql`
+
+```sql
+-- ============================================================
+-- Flyway Migration Script
+-- ============================================================
+-- Version: V6
+-- Description: Add index on device_type column
+-- Author: your_name
+-- Date: 2026-01-15
+-- ============================================================
+
+-- 添加设备类型索引
+CREATE INDEX idx_device_type ON device_info(device_type);
+```
+
+---
+
+#### 场景 4:删除字段(谨慎操作)
+
+**步骤 1:创建迁移脚本**
+
+文件名:`V7__Drop_device_location_column.sql`
+
+```sql
+-- ============================================================
+-- Flyway Migration Script
+-- ============================================================
+-- Version: V7
+-- Description: Drop location column from device_info table
+-- Author: your_name
+-- Date: 2026-01-15
+-- ============================================================
+
+-- 删除位置字段(谨慎操作,确保该字段不再使用)
+ALTER TABLE device_info
+DROP COLUMN location;
+```
+
+⚠️ **警告:** 删除字段会导致数据丢失,操作前务必确认!
+
+---
+
+### 2.7 常见场景示例
+
+#### 示例 1:创建多个表
+
+文件名:`V8__Create_multiple_tables.sql`
+
+```sql
+-- 创建设备类型表
+CREATE TABLE IF NOT EXISTS device_type (
+ id VARCHAR(64) NOT NULL COMMENT '主键ID',
+ type_name VARCHAR(50) NOT NULL COMMENT '类型名称',
+ type_code VARCHAR(20) NOT NULL COMMENT '类型编码',
+ PRIMARY KEY (id),
+ UNIQUE KEY uk_type_code (type_code)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备类型表';
+
+-- 创建设备日志表
+CREATE TABLE IF NOT EXISTS device_log (
+ id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+ device_id VARCHAR(64) NOT NULL COMMENT '设备ID',
+ log_type VARCHAR(20) COMMENT '日志类型',
+ log_content TEXT COMMENT '日志内容',
+ create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ PRIMARY KEY (id),
+ INDEX idx_device_id (device_id),
+ INDEX idx_create_time (create_time)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备日志表';
+```
+
+---
+
+#### 示例 2:插入初始数据
+
+文件名:`V9__Insert_initial_device_types.sql`
+
+```sql
+-- 插入初始设备类型数据
+INSERT INTO device_type (id, type_name, type_code) VALUES
+('1', '无人机', 'DRONE'),
+('2', '地面站', 'GROUND_STATION'),
+('3', '传感器', 'SENSOR')
+ON DUPLICATE KEY UPDATE type_name = VALUES(type_name);
+```
+
+---
+
+#### 示例 3:修改表结构并迁移数据
+
+文件名:`V10__Migrate_device_status_to_enum.sql`
+
+```sql
+-- 步骤1:添加新字段
+ALTER TABLE device_info
+ADD COLUMN status_new ENUM('OFFLINE', 'ONLINE', 'MAINTENANCE')
+DEFAULT 'OFFLINE' COMMENT '设备状态' AFTER status;
+
+-- 步骤2:迁移数据
+UPDATE device_info
+SET status_new = CASE
+ WHEN status = 0 THEN 'OFFLINE'
+ WHEN status = 1 THEN 'ONLINE'
+ ELSE 'OFFLINE'
+END;
+
+-- 步骤3:删除旧字段
+ALTER TABLE device_info DROP COLUMN status;
+
+-- 步骤4:重命名新字段
+ALTER TABLE device_info
+CHANGE COLUMN status_new status ENUM('OFFLINE', 'ONLINE', 'MAINTENANCE')
+DEFAULT 'OFFLINE' COMMENT '设备状态';
+```
+
+---
+
+### 2.8 注意事项
+
+#### ⚠️ 重要规则
+
+1. **版本号必须递增**
+ - ❌ 不能修改已执行的脚本
+ - ❌ 不能删除已执行的脚本
+ - ✅ 只能创建新的版本脚本
+
+2. **脚本只执行一次**
+ - Flyway 会记录已执行的脚本
+ - 相同版本号的脚本不会重复执行
+ - 如果需要修改,必须创建新版本
+
+3. **不要修改已执行的脚本**
+ - 已执行的脚本有 checksum 校验
+ - 修改会导致校验失败,应用启动报错
+ - 如需修改,创建新的迁移脚本
+
+4. **使用事务**
+ - 每个迁移脚本在一个事务中执行
+ - 如果执行失败,会自动回滚
+ - 确保脚本的原子性
+
+5. **测试脚本**
+ - 在开发环境先测试脚本
+ - 确认无误后再部署到生产环境
+
+6. **备份数据**
+ - 执行重要变更前备份数据库
+ - 特别是删除字段或表的操作
+
+---
+
+### 2.9 常见问题
+
+#### Q1: 如何查看 Flyway 执行历史?
+
+```sql
+SELECT * FROM flyway_schema_history ORDER BY installed_rank;
+```
+
+---
+
+#### Q2: 脚本执行失败怎么办?
+
+**情况 1:脚本语法错误**
+
+1. 查看应用启动日志,找到错误信息
+2. 修复 SQL 语法错误
+3. 删除 `flyway_schema_history` 表中失败的记录:
+ ```sql
+ DELETE FROM flyway_schema_history WHERE success = 0;
+ ```
+4. 重启应用
+
+**情况 2:脚本逻辑错误(如字段已存在)**
+
+1. 创建新的修复脚本(版本号递增)
+2. 在新脚本中使用 `IF NOT EXISTS` 或 `IF EXISTS` 语句
+3. 重启应用
+
+---
+
+#### Q3: 如何跳过某个版本的脚本?
+
+**不推荐跳过脚本!** 如果确实需要:
+
+1. 手动在 `flyway_schema_history` 表中插入记录:
+ ```sql
+ INSERT INTO flyway_schema_history
+ (installed_rank, version, description, type, script, checksum, installed_by, installed_on, execution_time, success)
+ VALUES
+ (999, '5', 'Skipped migration', 'SQL', 'V5__Skipped.sql', 0, 'manual', NOW(), 0, 1);
+ ```
+
+2. 重启应用
+
+---
+
+#### Q4: 如何在多环境中使用 Flyway?
+
+Flyway 会自动适配不同环境:
+- **开发环境**:本地数据库,自动创建表
+- **测试环境**:测试数据库,执行相同的迁移脚本
+- **生产环境**:生产数据库,执行相同的迁移脚本
+
+**关键点:**
+- 所有环境使用相同的迁移脚本
+- Flyway 会根据 `flyway_schema_history` 表判断哪些脚本需要执行
+
+---
+
+#### Q5: 如何禁用 Flyway?
+
+在 Nacos 配置中添加:
+
+```yaml
+spring:
+ flyway:
+ enabled: false
+```
+
+---
+
+#### Q6: 迁移脚本可以包含多个 SQL 语句吗?
+
+可以!一个脚本可以包含多个 SQL 语句,用分号分隔:
+
+```sql
+CREATE TABLE table1 (...);
+CREATE TABLE table2 (...);
+INSERT INTO table1 VALUES (...);
+```
+
+---
+
+#### Q7: 如何回滚数据库变更?
+
+Flyway 社区版不支持自动回滚。如需回滚:
+
+1. **方式 1:创建回滚脚本**
+ ```sql
+ -- V11__Rollback_device_status_change.sql
+ ALTER TABLE device_info DROP COLUMN new_column;
+ ```
+
+2. **方式 2:手动回滚**
+ - 备份数据库
+ - 手动执行回滚 SQL
+ - 删除 `flyway_schema_history` 中的记录
+
+---
+
+## 3. 开发工作流程
+
+### 3.1 新增表的完整流程
+
+1. **创建 Flyway 迁移脚本**
+ - 文件:`db/migration/Vx__Create_xxx_table.sql`
+
+2. **创建实体类**
+ - 文件:`domain/XxxEntity.java`
+
+3. **创建 Mapper 接口**
+ - 文件:`mapper/XxxMapper.java`
+
+4. **创建 Mapper XML**
+ - 文件:`resources/mapper/device/XxxMapper.xml`
+
+5. **创建 Service 接口和实现**
+ - 文件:`service/IXxxService.java`
+ - 文件:`service/impl/XxxServiceImpl.java`
+
+6. **创建 Controller**
+ - 文件:`controller/XxxController.java`
+
+7. **重启应用测试**
+
+---
+
+### 3.2 修改表结构的完整流程
+
+1. **创建 Flyway 迁移脚本**
+ - 文件:`db/migration/Vx__Modify_xxx_table.sql`
+
+2. **更新实体类**
+ - 添加或修改字段
+
+3. **更新 Mapper XML**
+ - 更新 resultMap 和 SQL 语句
+
+4. **更新 Service 和 Controller**
+ - 根据需要调整业务逻辑
+
+5. **重启应用测试**
+
+---
+
+## 4. 最佳实践
+
+### 4.1 脚本编写建议
+
+1. **使用 IF NOT EXISTS / IF EXISTS**
+ ```sql
+ CREATE TABLE IF NOT EXISTS table_name (...);
+ ALTER TABLE table_name ADD COLUMN IF NOT EXISTS column_name VARCHAR(100);
+ ```
+
+2. **添加详细注释**
+ ```sql
+ -- 为什么要做这个变更
+ -- 影响范围
+ -- 注意事项
+ ```
+
+3. **一个脚本只做一件事**
+ - ✅ V1__Create_device_table.sql
+ - ✅ V2__Add_device_index.sql
+ - ❌ V1__Create_and_modify_everything.sql
+
+4. **使用事务安全的语句**
+ - DDL 语句在 MySQL 中会自动提交
+ - 谨慎使用 DROP、TRUNCATE 等危险操作
+
+---
+
+### 4.2 团队协作建议
+
+1. **版本号管理**
+ - 团队成员协调版本号,避免冲突
+ - 使用 Git 管理迁移脚本
+
+2. **代码审查**
+ - 迁移脚本必须经过 Code Review
+ - 特别关注 DROP、DELETE 等危险操作
+
+3. **文档记录**
+ - 在脚本中添加详细的变更说明
+ - 更新本文档记录重要变更
+
+---
+
+## 5. 参考资料
+
+- [Flyway 官方文档](https://flywaydb.org/documentation/)
+- [Flyway 命名规范](https://flywaydb.org/documentation/concepts/migrations#naming)
+- [Spring Boot Flyway 集成](https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.data-initialization.migration-tool.flyway)
+
+---
+
+## 6. 联系方式
+
+如有问题,请联系:
+- 技术负责人:xxx
+- 邮箱:xxx@example.com
+
+---
+
+**最后更新时间:** 2026-01-15
\ No newline at end of file
diff --git a/src/main/resources/mapper/device/DeviceTempMapper.xml b/src/main/resources/mapper/device/DeviceTempMapper.xml
new file mode 100644
index 0000000..1e76642
--- /dev/null
+++ b/src/main/resources/mapper/device/DeviceTempMapper.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+ select id from tuoheng_device_temp
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/tuoheng-device-dev.yml b/src/main/resources/tuoheng-device-dev.yml
new file mode 100644
index 0000000..3a35f7b
--- /dev/null
+++ b/src/main/resources/tuoheng-device-dev.yml
@@ -0,0 +1,61 @@
+# spring配置
+spring:
+ data:
+ redis:
+ host: ruoyi-redis
+ port: 6379
+ password:
+ datasource:
+ druid:
+ stat-view-servlet:
+ enabled: true
+ loginUsername: ruoyi
+ loginPassword: 123456
+ dynamic:
+ druid:
+ initial-size: 5
+ min-idle: 5
+ maxActive: 20
+ maxWait: 60000
+ connectTimeout: 30000
+ socketTimeout: 60000
+ timeBetweenEvictionRunsMillis: 60000
+ minEvictableIdleTimeMillis: 300000
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ poolPreparedStatements: true
+ maxPoolPreparedStatementPerConnectionSize: 20
+ filters: stat,slf4j
+ connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
+ datasource:
+ # 主库数据源
+ master:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://ruoyi-mysql:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: password
+
+# mybatis配置
+mybatis:
+ # 搜索指定包别名
+ typeAliasesPackage: com.ruoyi.device
+ # 配置mapper的扫描,找到所有的mapper.xml映射文件
+ mapperLocations: classpath:mapper/device/**/*.xml
+
+# springdoc配置
+springdoc:
+ gatewayUrl: http://ruoyi-gateway:8080/${spring.application.name}
+ api-docs:
+ # 是否开启接口文档
+ enabled: true
+ info:
+ # 标题
+ title: '拓恒设备模块接口文档'
+ # 描述
+ description: '拓恒设备模块接口描述'
+ # 作者信息
+ contact:
+ name: TuoHeng
+ url: https://ruoyi.vip