Files
cattleTransportation/tradeCattle/IOT_DEVICE_LOCAL_STORAGE_GUIDE.md
2025-10-23 17:28:06 +08:00

103 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# IoT设备数据本地存储方案
## 概述
本方案实现了将外部API接口返回的IoT设备数据存储到本地数据库表中并提供定时同步和手动同步功能。
## 数据库表结构
### 1. iot_device_data设备数据表
存储所有IoT设备的实时数据包括
- 设备基本信息ID、类型、名称
- 设备状态(电量、温度、步数等)
- 位置信息(经纬度、海拔)
- 信号信息信号强度、GPS状态
- 时间信息(更新时间、创建时间)
### 2. iot_sync_log同步日志表
记录数据同步的详细日志,包括:
- 同步类型(自动/手动)
- 同步状态(成功/失败)
- 同步统计(总数、成功数、失败数)
- 错误信息
## 核心组件
### 1. 数据同步服务IotDeviceSyncService
- 负责从外部API获取数据
- 数据转换和映射
- 批量插入/更新本地数据库
- 同步日志记录
### 2. 定时任务IotDeviceSyncJob
- 每5分钟自动同步一次数据
- 确保数据的实时性
### 3. 手动同步接口IotDeviceSyncController
- 提供手动触发同步的API接口
- 支持立即同步数据
### 4. 数据查询接口IotDeviceProxyController
- 从本地数据库查询设备数据
- 支持分页和条件查询
- 保持与前端接口的兼容性
## 部署步骤
### 1. 执行数据库脚本
```sql
-- 执行 add_iot_device_table.sql 创建表结构
```
### 2. 重启后端服务
确保新的实体类、Mapper、Service等组件被正确加载。
### 3. 验证功能
- 访问手动同步接口:`POST /api/iotSync/sync`
- 检查数据库中的数据
- 验证前端页面数据展示
## API接口
### 手动同步接口
```
POST /api/iotSync/sync
```
手动触发数据同步
### 设备数据查询接口
```
POST /api/iotDevice/queryList
```
从本地数据库查询设备数据(保持原有接口格式)
## 数据流程
1. **定时同步**每5分钟自动从外部API获取最新数据
2. **数据转换**将API返回的JSON数据转换为数据库实体
3. **数据存储**:插入新设备或更新现有设备数据
4. **前端查询**:前端页面从本地数据库查询数据
5. **日志记录**:记录每次同步的详细日志
## 优势
1. **性能提升**:前端查询本地数据库,响应更快
2. **数据稳定**不依赖外部API的可用性
3. **历史数据**:可以保存设备的历史状态数据
4. **离线查询**即使外部API不可用也能查询本地数据
5. **数据统计**:可以基于本地数据进行统计分析
## 注意事项
1. **数据一致性**定时同步可能存在5分钟的数据延迟
2. **存储空间**:需要定期清理历史数据,避免数据库过大
3. **同步监控**:建议监控同步日志,及时发现同步失败的情况
4. **数据备份**:建议定期备份设备数据表
## 扩展功能
1. **数据清理**:可以添加定时清理过期数据的任务
2. **数据统计**:可以基于本地数据生成设备状态统计报表
3. **告警功能**:可以基于设备状态数据实现告警功能
4. **数据导出**:可以添加数据导出功能