完善小细节

This commit is contained in:
xuqiuyun
2025-10-24 17:32:42 +08:00
parent ecccd025d1
commit a40ce28318
73 changed files with 7238 additions and 114 deletions

View File

@@ -0,0 +1,132 @@
# xq_client_log表device_id字段缺失问题解决方案
## 问题描述
在测试智能项圈日志和轨迹功能时,遇到了以下错误:
```
SQLSyntaxErrorException: Unknown column 'device_id' in 'field list'
```
## 问题原因
`xq_client_log` 表存在,但缺少 `device_id` 字段导致MyBatis查询失败。
## 解决方案
### 1. 执行SQL脚本添加字段
**文件**: `tradeCattle/add_device_id_to_xq_client_log.sql`
**执行步骤**:
1. 连接到MySQL数据库
2. 执行以下SQL脚本
```sql
-- 为xq_client_log表添加device_id字段
SET @sql = (SELECT IF(
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'xq_client_log'
AND COLUMN_NAME = 'device_id') > 0,
'SELECT "device_id字段已存在" as message',
'ALTER TABLE xq_client_log ADD COLUMN device_id varchar(50) NOT NULL COMMENT "项圈编号" AFTER id'
));
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- 为device_id字段添加索引
SET @sql2 = (SELECT IF(
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'xq_client_log'
AND INDEX_NAME = 'idx_device_id') > 0,
'SELECT "device_id索引已存在" as message',
'ALTER TABLE xq_client_log ADD INDEX idx_device_id (device_id)'
));
PREPARE stmt2 FROM @sql2;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;
-- 显示表结构确认
DESCRIBE xq_client_log;
```
### 2. 验证字段添加
执行SQL后应该看到 `xq_client_log` 表包含以下字段:
- `id` (主键)
- `device_id` (新增字段)
- `device_voltage`
- `device_temp`
- `server_device_id`
- `latitude`
- `longitude`
- `walk_steps`
- `y_walk_steps`
- `create_time`
- `create_by`
- `update_time`
- `update_by`
### 3. 重启应用
1. 停止当前运行的Spring Boot应用
2. 重新启动应用:
```bash
cd C:\cattleTransport\tradeCattle\aiotagro-cattle-trade
mvn spring-boot:run
```
### 4. 测试功能
#### 4.1 测试智能项圈日志查询
```bash
curl -X POST http://localhost:8080/api/deliveryDevice/getCollarLogs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"deviceId": "24075000139",
"deliveryId": 86
}'
```
#### 4.2 测试智能项圈轨迹查询
```bash
curl -X POST http://localhost:8080/api/deliveryDevice/getCollarTrajectory \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"deviceId": "24075000139",
"deliveryId": 86
}'
```
#### 4.3 测试设备日志同步
```bash
curl -X POST http://localhost:8080/api/deliveryDevice/manualSyncDeviceLogs \
-H "Authorization: Bearer YOUR_TOKEN"
```
## 预期结果
1. **SQL执行成功**: 字段和索引添加成功
2. **应用启动正常**: 无SQL语法错误
3. **API调用成功**: 返回正确的日志和轨迹数据
4. **日志同步正常**: 项圈设备数据能正确同步到 `xq_client_log` 表
## 注意事项
1. **数据备份**: 执行ALTER TABLE前建议备份 `xq_client_log` 表
2. **权限检查**: 确保数据库用户有ALTER TABLE权限
3. **字段约束**: `device_id` 字段设置为NOT NULL如果表中已有数据可能需要先更新现有记录
4. **索引性能**: 添加索引后查询性能会提升
## 后续步骤
字段添加成功后,可以:
1. 测试完整的日志和轨迹功能
2. 验证60分钟数据同步功能
3. 在前端页面测试日志和轨迹显示