# QB303设备按battle_unit_code统一标识 ## 🎯 **功能概述** 现在QB303设备数据将根据`battle_unit_code`字段作为设备的唯一标识符,而不是使用`sn`字段。这意味着: - ✅ 相同`battle_unit_code`的设备会被识别为同一个设备并更新数据 - ✅ 不同`battle_unit_code`的设备会在列表中显示为不同的装备 - ✅ 设备信息会保留原始的`sn`和`sid`字段供参考 ## 📋 **数据结构变化** ### **设备标识逻辑** ```javascript // 优先使用 battle_unit_code 作为设备ID let battleUnitCode = data.host?.battle_unit_code || data.sn || 'QB303_' + Date.now(); // 设备信息结构 { equipmentId: battleUnitCode, // 主键:battle_unit_code battleUnitCode: battleUnitCode, // 作战单元代码 sn: data.sn || '', // 原始序列号 sid: data.host?.sid || '', // 原始设备ID equipmentType: 'QB303设备', // ... 其他字段 } ``` ### **示例数据** ```json { "version": "1.0", "timestamp": 1757293532423, "data": { "host": { "battle_unit_code": "dy04", ← 作为设备唯一标识 "sid": "2", "latitude": 28.20648476190476, "longitude": 112.8945530952381, "altitude": 200, "health_status": 1, "platform_type": 1 }, "sn": "2" }, "biz_code": "qb303_device_status" } ``` ## 🧪 **测试函数** ### **1. 单个设备测试** ```javascript testQB303Data() ``` - 发送一个`battle_unit_code: "dy04"`的测试设备 ### **2. 多设备测试** ```javascript testMultipleQB303Data() ``` - 依次发送3个不同`battle_unit_code`的设备: - `dy04` (sn: "2") - `dy05` (sn: "3") - `dy06` (sn: "4") ## 🔍 **测试场景** ### **场景1:新设备添加** ``` 发送 battle_unit_code: "dy04" → 添加新设备 [dy04] 发送 battle_unit_code: "dy05" → 添加新设备 [dy05] 结果:列表中有2个不同的设备 ``` ### **场景2:设备数据更新** ``` 发送 battle_unit_code: "dy04", altitude: 200 → 添加设备 [dy04] 发送 battle_unit_code: "dy04", altitude: 250 → 更新设备 [dy04] 结果:列表中只有1个设备,高度更新为250 ``` ### **场景3:混合场景** ``` 发送 battle_unit_code: "dy04", sn: "2" → 添加设备 [dy04] 发送 battle_unit_code: "dy04", sn: "3" → 更新设备 [dy04] (sn改为"3") 发送 battle_unit_code: "dy05", sn: "2" → 添加新设备 [dy05] 结果:列表中有2个设备 [dy04] 和 [dy05] ``` ## 📊 **预期输出** ### **运行 testQB303Data() 后:** ``` 收到QB303设备状态数据: {...} 解析的QB303设备数据: {equipmentId: "dy04", battleUnitCode: "dy04", ...} 使用battle_unit_code作为设备标识: dy04 新的QB303设备 [dy04] 已添加 ``` ### **运行 testMultipleQB303Data() 后:** ``` 发送设备 [dy04] 的测试数据: {...} 新的QB303设备 [dy04] 已添加 发送设备 [dy05] 的测试数据: {...} 新的QB303设备 [dy05] 已添加 发送设备 [dy06] 的测试数据: {...} 新的QB303设备 [dy06] 已添加 所有QB303设备数据发送完成 最终设备列表长度: X (原有数量 + 3) 各设备的battle_unit_code: ["dy04", "dy05", "dy06", ...] ``` ## 🎨 **UI显示** 在其他装备面板中,每个QB303设备会显示: - **设备名称**: `[dy04] QB303设备` - **作战单元**: `dy04` - **原始SN**: `2` - **设备状态**: 基于`health_status` - **位置信息**: 经纬度、高度 - **运动数据**: 速度、姿态角等 ## 🚀 **开始测试** 1. **清理现有数据**(可选): ```javascript localStorage.removeItem("index-otherEquipmentList"); location.reload(); ``` 2. **测试单个设备**: ```javascript testQB303Data() ``` 3. **测试多个设备**: ```javascript testMultipleQB303Data() ``` 4. **检查结果**: - 观察控制台日志 - 查看其他装备选项卡数量变化 - 确认设备列表中显示正确的`battle_unit_code` 现在您的QB303设备将按照`battle_unit_code`进行正确的分组和标识!