# 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. 在前端页面测试日志和轨迹显示
