114 lines
3.3 KiB
Markdown
114 lines
3.3 KiB
Markdown
|
|
# xq_client_log表字段映射修复报告
|
|||
|
|
|
|||
|
|
## 问题描述
|
|||
|
|
|
|||
|
|
在测试智能项圈日志功能时,遇到了以下错误:
|
|||
|
|
```
|
|||
|
|
SQLSyntaxErrorException: Unknown column 'device_voltage' in 'field list'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 问题原因
|
|||
|
|
|
|||
|
|
`xq_client_log` 表的实际结构与我们的实体类 `XqClientLog` 不匹配:
|
|||
|
|
|
|||
|
|
### 实际表结构(从图片中观察到的字段):
|
|||
|
|
- `id` - 主键
|
|||
|
|
- `device_id` - 设备ID
|
|||
|
|
- `deviceld` - 设备长ID
|
|||
|
|
- `longitude` - 经度
|
|||
|
|
- `latitude` - 纬度
|
|||
|
|
- `altitude` - 海拔
|
|||
|
|
- `nsat` - 卫星数量
|
|||
|
|
- `rsrp` - 信号强度
|
|||
|
|
- `battery` - 电池电量
|
|||
|
|
- `temperature` - 温度
|
|||
|
|
- `steps` - 步数
|
|||
|
|
- `acc_x`, `acc_y`, `acc_z` - 加速度计数据
|
|||
|
|
- `bandge_status` - 绑带状态
|
|||
|
|
- `ver` - 版本
|
|||
|
|
- `time` - 时间
|
|||
|
|
|
|||
|
|
### 实体类期望的字段:
|
|||
|
|
- `device_voltage` - 设备电压
|
|||
|
|
- `device_temp` - 设备温度
|
|||
|
|
- `server_device_id` - 主机设备ID
|
|||
|
|
- `walk_steps` - 步数
|
|||
|
|
- `y_walk_steps` - 昨日步数
|
|||
|
|
- `create_time`, `update_time` - 时间字段
|
|||
|
|
|
|||
|
|
## 解决方案
|
|||
|
|
|
|||
|
|
修改了 `XqClientLogMapper.xml` 文件,建立字段映射关系:
|
|||
|
|
|
|||
|
|
### 字段映射关系
|
|||
|
|
|
|||
|
|
| 实际表字段 | 实体类属性 | 说明 |
|
|||
|
|
|-----------|-----------|------|
|
|||
|
|
| `device_id` | `deviceId` | 设备ID |
|
|||
|
|
| `battery` | `deviceVoltage` | 电池电量映射到设备电压 |
|
|||
|
|
| `temperature` | `deviceTemp` | 温度 |
|
|||
|
|
| `deviceld` | `serverDeviceId` | 设备长ID映射到主机设备ID |
|
|||
|
|
| `latitude` | `latitude` | 纬度 |
|
|||
|
|
| `longitude` | `longitude` | 经度 |
|
|||
|
|
| `steps` | `walkSteps` | 步数 |
|
|||
|
|
| `steps` | `yWalkSteps` | 步数映射到昨日步数(相同值) |
|
|||
|
|
| `time` | `createTime` | 时间字段映射到创建时间 |
|
|||
|
|
| `time` | `updateTime` | 时间字段映射到更新时间 |
|
|||
|
|
|
|||
|
|
### 修改的文件
|
|||
|
|
|
|||
|
|
**文件**: `tradeCattle/aiotagro-cattle-trade/src/main/resources/mapper/XqClientLogMapper.xml`
|
|||
|
|
|
|||
|
|
**主要修改**:
|
|||
|
|
1. **ResultMap映射**: 更新字段映射关系
|
|||
|
|
2. **Base_Column_List**: 更新查询字段列表
|
|||
|
|
3. **xqLogList查询**: 使用 `time` 字段替代 `update_time`
|
|||
|
|
4. **batchInsert**: 适配实际表结构进行插入
|
|||
|
|
|
|||
|
|
## 测试验证
|
|||
|
|
|
|||
|
|
### 1. 编译成功
|
|||
|
|
- 项目编译无错误
|
|||
|
|
- MyBatis映射文件语法正确
|
|||
|
|
|
|||
|
|
### 2. 应用启动
|
|||
|
|
- Spring Boot应用正常启动
|
|||
|
|
- 数据库连接正常
|
|||
|
|
|
|||
|
|
### 3. 功能测试
|
|||
|
|
等待应用完全启动后,可以测试:
|
|||
|
|
- 智能项圈日志查询
|
|||
|
|
- 智能项圈运动轨迹
|
|||
|
|
- 设备日志同步功能
|
|||
|
|
|
|||
|
|
## 数据示例
|
|||
|
|
|
|||
|
|
根据图片中的数据,`xq_client_log` 表包含35条记录,设备ID为 `24075000139`,包含:
|
|||
|
|
- 电量: 98%
|
|||
|
|
- 温度: 27.7°C 到 25.3°C
|
|||
|
|
- 步数: 21步
|
|||
|
|
- 位置: 纬度30.481417,经度114.401791
|
|||
|
|
- 信号强度: -69到-73
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **字段映射**: 某些字段进行了语义映射(如battery→deviceVoltage)
|
|||
|
|
2. **时间字段**: 使用 `time` 字段同时映射到创建和更新时间
|
|||
|
|
3. **步数字段**: `steps` 字段同时映射到总步数和昨日步数
|
|||
|
|
4. **数据完整性**: 确保查询时字段存在且数据类型匹配
|
|||
|
|
|
|||
|
|
## 后续优化建议
|
|||
|
|
|
|||
|
|
1. **数据库标准化**: 考虑统一表结构,使用标准的字段名
|
|||
|
|
2. **字段重命名**: 将实际表字段重命名为更标准的名称
|
|||
|
|
3. **数据类型优化**: 确保字段数据类型与业务需求匹配
|
|||
|
|
4. **索引优化**: 为常用查询字段添加适当的索引
|
|||
|
|
|
|||
|
|
## 成功指标
|
|||
|
|
|
|||
|
|
- ✅ 编译成功
|
|||
|
|
- ✅ 应用启动正常
|
|||
|
|
- ✅ SQL查询不再报错
|
|||
|
|
- ✅ 字段映射正确
|
|||
|
|
- 🔄 等待功能测试验证
|