2995840376 6e3f3ea661 fix(E): 修复 iot-device 启动失败 + V22 迁移脚本重写为可执行版本
【生产故障与修复】
iot-device 部署后反复重启失败(status=1/FAILURE, restart counter 3+):
  UnsatisfiedDependencyException: No qualifying bean of type
  'com.iot.device.mapper.ProductActionMapper' available
根因: iot-device 模块【没有 @MapperScan】(仅 iot-rule 有), Mapper 靠
      @Mapper 注解被 mybatis-spring-boot-starter 自动扫描;
      新建的 ProductEventMapper / ProductActionMapper 漏写 @Mapper 注解,
      导致扫描不到 -> ControlSchemaServiceImpl 注入失败 -> 启动失败。
修复: 两个 Mapper 补 @Mapper 注解; 已全量核查 iot-device 31 个 Mapper 均有该注解。

【V22 迁移脚本重写】(实测发现原写法在本环境根本执行不了)
- 原写法使用存储过程 + DELIMITER, 实测三种执行方式(管道/文件重定向/source)
  全部失败: MySQL 客户端在 batch 模式会把 DELIMITER 当普通 SQL 发给服务器。
  生产库现存存储过程数为 0, 佐证历史 V19/V21 等含 DELIMITER 的脚本
  其存储过程部分从未生效(仅 ADD COLUMN 等语句生效)。
- 重写为零存储过程、零 DELIMITER 的普通语句序列:
  加列幂等 -> PREPARE + information_schema 判定(ADD COLUMN 走 PREPARE 实测可用)
  索引     -> 直接 DDL(ADD INDEX 走 PREPARE 实测报 1064, 直接执行可用)
- 库名统一用 DATABASE() 判定, 测试库克隆无需改写脚本
- 清理顺序调整: 唯一索引统一放在软删重复行清理之后, 避免索引创建失败

【生产验证】(R730 192.168.3.3)
- 全库备份: /opt/iotsaas/backup/iot_platform_before_v22.sql
- 克隆库演练: 建克隆库 -> 跑 V22 -> 校验 -> DROP, 生产数据零风险
- 正式执行: platform_type 8行 / product.protocol / product_property.grp,
  is_primary, enum_label / product_action.completion_mode 全部就位
- 唯一索引: uk_platform_product / uk_product_code(x3) / idx_product_id 全部就位
- 数据完整性: product=11 device=13, 与迁移前一致
- 数据清洗: 脏 model/manufacturer=0, 空串 platform_product_id=0, device.miot=0
- tracking 表已标记 V22, 避免 deploy 脚本重复执行

【部署脚本加固】
deploy-all.bat 迁移步骤加 --force: 迁移脚本中'已存在'的 DDL(重复列/索引)
属正常情况, 不应中断整体部署

验证: 4 服务全部 active; 后台首页/SPA路由/9081文档/9083文档 均 200;
产品列表 API 返回 401 未认证(路由与过滤器正常)
2026-10-27 13:49:15 +08:00

物联网系统平台

项目简介

企业级物联网系统平台,支持万级设备接入,兼容涂鸦、小度、小米等第三方平台,预留Matter协议扩展接口。

技术栈

后端

  • Java 17
  • Spring Boot 3.2.x
  • Spring Security (认证鉴权)
  • MyBatis Plus (持久层)
  • MySQL 8.0 (关系数据库)
  • InfluxDB 2.x (时序数据库)
  • Redis 7.x (缓存)
  • RabbitMQ (消息队列)
  • EMQX (MQTT Broker)
  • XXL-Job (任务调度)

前端

  • Vue 3 + TypeScript
  • Vite 5.x
  • Element Plus (UI组件库)
  • Pinia (状态管理)
  • Axios (HTTP客户端)
  • ECharts (数据可视化)
  • UniApp (移动端)

项目结构

iotsaas/
├── backend/                 # 后端项目
│   ├── iot-common/         # 公共模块
│   ├── iot-auth/           # 认证服务
│   ├── iot-gateway/        # API网关
│   ├── iot-device/         # 设备管理服务
│   ├── iot-data/           # 数据采集服务
│   ├── iot-rule/           # 规则引擎服务
│   ├── iot-alarm/          # 告警服务
│   └── iot-adapter/        # 设备适配器模块
│       ├── tuya/          # 涂鸦适配器
│       ├── dueros/        # 小度适配器
│       ├── miot/          # 小米适配器
│       └── matter/        # Matter适配器
├── frontend/               # 前端项目
│   ├── admin/             # Web管理后台
│   └── mobile/            # 移动端APP
├── docs/                  # 文档
├── docker/                # Docker配置
├── scripts/               # 脚本工具
└── deploy/                # 部署配置

快速开始

环境要求

  • JDK 17+
  • Node.js 18+
  • MySQL 8.0+
  • Redis 7.x
  • Docker & Docker Compose

后端启动

cd backend
mvn clean install
mvn spring-boot:run

前端启动

cd frontend/admin
npm install
npm run dev

Docker一键启动

docker-compose up -d

核心功能

  • 设备管理与监控
  • 实时数据采集
  • 规则引擎与联动
  • 告警服务
  • 多平台设备适配
  • 数据可视化看板
  • 用户权限管理

开发文档

详细开发文档请参考 docs/ 目录。

许可证

Copyright © 2026 IoT Platform

Description
No description provided
Readme 27 MiB
Languages
Java 75.4%
Vue 18.9%
TypeScript 4.3%
Batchfile 0.9%
JavaScript 0.3%
Other 0.1%