Initial commit
This commit is contained in:
151
QB303_BATTLE_UNIT_CODE.md
Normal file
151
QB303_BATTLE_UNIT_CODE.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# 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`进行正确的分组和标识!
|
||||
Reference in New Issue
Block a user