evo-BMS/README_INTEGRATION.md
2025-11-09 19:21:01 +08:00

243 lines
5.6 KiB
Markdown
Raw Permalink 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.

# EvoBMS MyBatis-Plus 和 MQTT 集成说明
## 概述
本项目已成功集成了 MyBatis-Plus 和 MQTT 功能,为 EVO 电池管理系统提供了强大的数据持久化和实时通信能力。
## MyBatis-Plus 集成
### 1. 依赖配置
已在 `pom.xml` 中添加以下依赖:
- `mybatis-plus-boot-starter`: MyBatis-Plus 核心依赖
- `mybatis-plus-generator`: 代码生成器
- `freemarker`: 模板引擎
### 2. 配置文件
`application.yml` 中添加了 MyBatis-Plus 配置:
```yaml
mybatis-plus:
mapper-locations: classpath*:mybatis/**/*Mapper.xml
type-aliases-package: com.evobms.project.**.domain
global-config:
db-config:
id-type: AUTO
field-strategy: NOT_NULL
logic-delete-field: delFlag
logic-delete-value: 2
logic-not-delete-value: 0
```
### 3. 核心功能
#### 3.1 实体类注解
- `@TableName`: 指定表名
- `@TableId`: 主键配置
- `@TableLogic`: 逻辑删除
- `@Version`: 乐观锁
#### 3.2 Mapper 接口
继承 `BaseMapper<T>` 获得基础 CRUD 操作:
```java
@Mapper
public interface BmsDeviceMapper extends BaseMapper<BmsDevice> {
// 自定义方法
}
```
#### 3.3 Service 层
继承 `IService<T>``ServiceImpl<M, T>`
```java
public interface IBmsDeviceService extends IService<BmsDevice> {}
@Service
public class BmsDeviceServiceImpl extends ServiceImpl<BmsDeviceMapper, BmsDevice>
implements IBmsDeviceService {}
```
### 4. 示例代码
#### BmsDevice 实体类
位置:`src/main/java/com/evobms/project/bms/domain/BmsDevice.java`
包含完整的 BMS 设备属性,使用了 MyBatis-Plus 注解。
#### 数据库表
执行 `sql/bms_device.sql` 创建示例表和数据。
## MQTT 集成
### 1. 依赖配置
已添加 MQTT 相关依赖:
- `spring-integration-mqtt`: Spring Integration MQTT 支持
- `org.eclipse.paho.client.mqttv3`: Eclipse Paho MQTT 客户端
### 2. 配置文件
`application.yml` 中添加了 MQTT 配置:
```yaml
mqtt:
host: tcp://localhost:1883
clientId: evobms-client
username:
password:
connectionTimeout: 30
keepAliveInterval: 60
subscribeTopic: evobms/+/data
publishTopic: evobms/command
```
### 3. 核心组件
#### 3.1 MqttConfig 配置类
位置:`src/main/java/com/evobms/framework/config/MqttConfig.java`
提供了:
- MQTT 客户端工厂配置
- 消息接收通道
- 消息发送通道
- 消息处理器
#### 3.2 MqttService 服务类
位置:`src/main/java/com/evobms/project/bms/service/MqttService.java`
提供了:
- 发送 MQTT 消息
- 处理设备数据
- 设备控制命令
- 设备状态查询
### 4. 使用示例
#### 发送消息
```java
@Autowired
private MqttService mqttService;
// 发送设备控制命令
mqttService.sendDeviceCommand("BMS001", "STATUS_QUERY");
// 发送自定义消息
mqttService.sendMessage("evobms/test", "Hello MQTT");
```
#### 接收消息
消息会自动通过配置的消息处理器处理,支持设备数据自动更新。
## API 接口
### BmsDeviceController
位置:`src/main/java/com/evobms/project/bms/controller/BmsDeviceController.java`
提供了完整的 RESTful API
- `GET /bms/device/list` - 查询设备列表
- `GET /bms/device/{deviceId}` - 获取设备详情
- `POST /bms/device` - 新增设备
- `PUT /bms/device` - 修改设备
- `DELETE /bms/device/{deviceIds}` - 删除设备
- `PUT /bms/device/status` - 批量更新状态
- `POST /bms/device/queryStatus/{deviceCode}` - 查询设备状态
- `POST /bms/device/restart/{deviceCode}` - 重启设备
- `POST /bms/device/config/{deviceCode}` - 配置设备
- `POST /bms/device/mqtt/send` - 发送 MQTT 消息
- `GET /bms/device/statistics` - 获取统计信息
## 使用建议
### 1. MyBatis-Plus 最佳实践
1. **实体类设计**
- 使用合适的注解标注字段
- 继承 BaseEntity 获得公共字段
- 合理使用逻辑删除和乐观锁
2. **查询优化**
- 使用 QueryWrapper 构建复杂查询
- 合理使用分页插件
- 避免 N+1 查询问题
3. **代码生成**
- 使用 MyBatis-Plus 代码生成器快速生成基础代码
- 自定义模板适应项目需求
### 2. MQTT 最佳实践
1. **主题设计**
- 使用层次化主题结构:`evobms/{deviceCode}/{dataType}`
- 合理使用通配符订阅
2. **消息格式**
- 使用 JSON 格式传输数据
- 包含时间戳和设备标识
3. **错误处理**
- 实现消息重试机制
- 记录通信日志
- 处理连接断开重连
### 3. 安全考虑
1. **数据库安全**
- 使用参数化查询防止 SQL 注入
- 合理设置数据库权限
2. **MQTT 安全**
- 配置用户名密码认证
- 使用 TLS 加密传输
- 限制主题访问权限
## 扩展功能
### 1. 数据监控
- 实时设备状态监控
- 历史数据分析
- 告警机制
### 2. 设备管理
- 设备注册和注销
- 固件升级
- 参数配置
### 3. 数据分析
- 电池性能分析
- 故障预测
- 能耗统计
## 故障排除
### 常见问题
1. **MyBatis-Plus 相关**
- 检查实体类注解配置
- 确认 Mapper 扫描路径
- 验证数据库连接配置
2. **MQTT 相关**
- 检查 MQTT 服务器连接
- 确认主题订阅配置
- 验证消息格式
### 日志配置
`application.yml` 中调整日志级别:
```yaml
logging:
level:
com.evobms: debug
com.baomidou.mybatisplus: debug
org.springframework.integration.mqtt: debug
```
## 总结
通过集成 MyBatis-Plus 和 MQTTEvoBMS 系统具备了:
- 强大的数据持久化能力
- 实时的设备通信功能
- 完整的 RESTful API
- 灵活的扩展机制
这为构建现代化的电池管理系统提供了坚实的技术基础。