Files
cattleTransportation/tradeCattle/XQ_CLIENT_LOG_FIELD_MAPPING_FIX_REPORT.md

114 lines
3.3 KiB
Markdown
Raw Normal View History

2025-10-24 17:32:42 +08:00
# 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查询不再报错
- ✅ 字段映射正确
- 🔄 等待功能测试验证