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

3.1 KiB
Raw Blame History

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. 执行数据库脚本

-- 执行 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. 数据导出:可以添加数据导出功能