276 lines
7.8 KiB
Markdown
276 lines
7.8 KiB
Markdown
s# 无人装备前端集成说明
|
||
|
||
## 概述
|
||
|
||
本文档说明如何在前端界面中集成无人装备的添加功能,实现装备数据的永久化存储。
|
||
|
||
## 后端API接口
|
||
|
||
### 1. 添加无人装备
|
||
|
||
**接口地址:** `POST /manage/api/v1/devices/{workspace_id}/ue-device/create`
|
||
|
||
**请求参数:**
|
||
```json
|
||
{
|
||
"deviceCode": "DEV001",
|
||
"deviceName": "Mavic 3E",
|
||
"deviceType": 0,
|
||
"serialNumber": "1581F5FHC248A00DXGLU",
|
||
"parentCode": "",
|
||
"domain": 0,
|
||
"height": 100.0,
|
||
"payloadType": "标准载荷",
|
||
"flightSpeed": 65.0,
|
||
"longitude": 116.397128,
|
||
"latitude": 39.916527,
|
||
"batteryLevel": 85,
|
||
"strikeRange": 5.0,
|
||
"enduranceTime": 45,
|
||
"deviceStatus": 0,
|
||
"description": "高性能无人机",
|
||
"tenantId": 1
|
||
}
|
||
```
|
||
|
||
**参数说明:**
|
||
- `deviceCode`: 设备编号(必填,唯一)
|
||
- `deviceName`: 设备名称(必填)
|
||
- `deviceType`: 设备类型(必填,0: 无人机 1: 无人车 2: 巡飞弹)
|
||
- `serialNumber`: 设备序列号(必填)
|
||
- `parentCode`: 父设备编号(可选)
|
||
- `domain`: 设备域(可选,0: 设备本身 1: 遥控类 2: 架内设备 3: 架外设备)
|
||
- `height`: 高度(米,可选)
|
||
- `payloadType`: 载荷类型(可选)
|
||
- `flightSpeed`: 飞行速度(km/h,可选)
|
||
- `longitude`: 经度(可选)
|
||
- `latitude`: 纬度(可选)
|
||
- `batteryLevel`: 电量百分比(可选)
|
||
- `strikeRange`: 侦察范围(km,可选)
|
||
- `enduranceTime`: 续航时间(分钟,可选)
|
||
- `deviceStatus`: 设备状态(可选,0: 离线 1: 在线 2: 故障 3: 维护中)
|
||
- `description`: 设备描述(可选)
|
||
- `tenantId`: 租户ID(必填)
|
||
|
||
**响应示例:**
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": {
|
||
"id": 1,
|
||
"deviceCode": "DEV001",
|
||
"deviceName": "Mavic 3E",
|
||
"deviceType": 0,
|
||
"deviceTypeName": "无人机",
|
||
"serialNumber": "1581F5FHC248A00DXGLU",
|
||
"parentCode": "",
|
||
"onlineStatus": 0,
|
||
"domain": 0,
|
||
"height": 100.0,
|
||
"payloadType": "标准载荷",
|
||
"flightSpeed": 65.0,
|
||
"longitude": 116.397128,
|
||
"latitude": 39.916527,
|
||
"batteryLevel": 85,
|
||
"strikeRange": 5.0,
|
||
"enduranceTime": 45,
|
||
"deviceStatus": 0,
|
||
"deviceStatusName": "离线",
|
||
"lastOnlineTime": null,
|
||
"lastLocationTime": null,
|
||
"description": "高性能无人机",
|
||
"tenantId": 1,
|
||
"createTime": "2025-01-20T10:30:00",
|
||
"updateTime": "2025-01-20T10:30:00"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 2. 获取无人装备列表
|
||
|
||
**接口地址:** `GET /manage/api/v1/devices/{workspace_id}/ue-devices`
|
||
|
||
**请求参数:**
|
||
- `domain`: 设备域(可选,0: 无人机 1: 无人车 2: 巡飞弹)
|
||
- `page`: 页码(可选,默认1)
|
||
- `pageSize`: 页大小(可选,默认1000)
|
||
|
||
**响应示例:**
|
||
```json
|
||
{
|
||
"code": 0,
|
||
"message": "success",
|
||
"data": [
|
||
{
|
||
"id": 1,
|
||
"deviceCode": "DEV001",
|
||
"deviceName": "Mavic 3E",
|
||
"deviceType": 0,
|
||
"deviceTypeName": "无人机",
|
||
"serialNumber": "1581F5FHC248A00DXGLU",
|
||
"parentCode": "",
|
||
"onlineStatus": 0,
|
||
"domain": 0,
|
||
"height": 100.0,
|
||
"payloadType": "标准载荷",
|
||
"flightSpeed": 65.0,
|
||
"longitude": 116.397128,
|
||
"latitude": 39.916527,
|
||
"batteryLevel": 85,
|
||
"strikeRange": 5.0,
|
||
"enduranceTime": 45,
|
||
"deviceStatus": 0,
|
||
"deviceStatusName": "离线",
|
||
"lastOnlineTime": null,
|
||
"lastLocationTime": null,
|
||
"description": "高性能无人机",
|
||
"tenantId": 1,
|
||
"createTime": "2025-01-20T10:30:00",
|
||
"updateTime": "2025-01-20T10:30:00"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
## 前端集成示例
|
||
|
||
### 1. 修改现有的getDeviceList函数
|
||
|
||
在您的前端代码中,修改 `getDeviceList` 函数以支持无人装备:
|
||
|
||
```typescript
|
||
// 获取无人机列表
|
||
export const getDeviceList = async (domain) => {
|
||
let res = await req.get(`/manage/api/v1/devices/${workspace_id}/devices/bound`, {
|
||
params: {
|
||
page: 1,
|
||
page_size: 1000,
|
||
domain
|
||
}
|
||
});
|
||
return res.data;
|
||
};
|
||
|
||
// 新增:获取无人装备列表(MySQL存储)
|
||
export const getUeDeviceList = async (domain) => {
|
||
let res = await req.get(`/manage/api/v1/devices/${workspace_id}/ue-devices`, {
|
||
params: {
|
||
domain,
|
||
page: 1,
|
||
page_size: 1000
|
||
}
|
||
});
|
||
return res.data;
|
||
};
|
||
```
|
||
|
||
### 2. 添加装备创建函数
|
||
|
||
```typescript
|
||
// 创建无人装备
|
||
export const createUeDevice = async (deviceData) => {
|
||
let res = await req.post(`/manage/api/v1/devices/${workspace_id}/ue-device/create`, deviceData);
|
||
return res.data;
|
||
};
|
||
```
|
||
|
||
### 3. 修改前端界面逻辑
|
||
|
||
在您的前端界面中,修改装备添加逻辑:
|
||
|
||
```typescript
|
||
// 无人机数据初始化(修改版)
|
||
const flyDeviceInit = async () => {
|
||
try {
|
||
// 获取原有设备列表
|
||
let resFly = await getDeviceList(0); // 获取无人机列表
|
||
let resRc = await getDeviceList(2); // 获取遥控器列表
|
||
|
||
// 获取MySQL存储的无人装备列表
|
||
let resUeDevices = await getUeDeviceList(0); // 获取无人机装备
|
||
|
||
// 合并数据
|
||
let allDevices = [...resFly.data, ...resUeDevices];
|
||
|
||
// 处理数据...
|
||
console.log('设备列表:', allDevices);
|
||
} catch (error) {
|
||
console.error('设备初始化失败:', error);
|
||
}
|
||
};
|
||
|
||
// 添加新装备
|
||
const addNewDevice = async (deviceInfo) => {
|
||
try {
|
||
const deviceData = {
|
||
deviceCode: deviceInfo.deviceCode,
|
||
deviceName: deviceInfo.deviceName,
|
||
deviceType: 0, // 0: 无人机
|
||
serialNumber: deviceInfo.serialNumber,
|
||
payloadType: deviceInfo.payloadType || "标准载荷",
|
||
strikeRange: deviceInfo.strikeRange || 5.0,
|
||
enduranceTime: deviceInfo.enduranceTime || 45,
|
||
deviceStatus: 0, // 默认离线
|
||
description: deviceInfo.description || "",
|
||
tenantId: 1 // 根据实际情况设置
|
||
};
|
||
|
||
const result = await createUeDevice(deviceData);
|
||
|
||
if (result.code === 0) {
|
||
// 添加成功,刷新列表
|
||
await flyDeviceInit();
|
||
console.log('装备添加成功:', result.data);
|
||
} else {
|
||
console.error('装备添加失败:', result.message);
|
||
}
|
||
} catch (error) {
|
||
console.error('添加装备时发生错误:', error);
|
||
}
|
||
};
|
||
```
|
||
|
||
### 4. 界面操作说明
|
||
|
||
#### 添加装备的步骤:
|
||
|
||
1. **点击"+"按钮**:在无人装备界面点击右上角的"+"按钮
|
||
2. **填写装备信息**:
|
||
- 设备编号:输入唯一的设备编号(如:DEV001)
|
||
- 设备名称:输入设备名称(如:Mavic 3E)
|
||
- 设备序列号:输入设备SN(如:1581F5FHC248A00DXGLU)
|
||
- 载荷类型:选择或输入载荷类型(如:标准载荷)
|
||
- 侦察范围:输入侦察范围(如:5km)
|
||
- 续航时间:输入续航时间(如:45分钟)
|
||
- 设备描述:输入设备描述(可选)
|
||
|
||
3. **提交保存**:点击保存按钮,系统会调用后端API将数据保存到MySQL数据库
|
||
|
||
4. **查看结果**:添加成功后,新装备会出现在设备列表中,并且数据会永久保存在MySQL数据库中
|
||
|
||
#### 数据同步:
|
||
|
||
- **实时数据**:设备的位置、电量、高度等实时数据仍然通过WebSocket获取
|
||
- **基础信息**:设备的基础信息(名称、编号、类型等)存储在MySQL中
|
||
- **状态更新**:设备状态变更时会同时更新MySQL数据库
|
||
|
||
## 注意事项
|
||
|
||
1. **设备编号唯一性**:每个设备的编号必须唯一,系统会检查重复
|
||
2. **租户隔离**:不同租户的设备数据是隔离的
|
||
3. **数据一致性**:确保MongoDB和MySQL数据的一致性
|
||
4. **错误处理**:前端需要处理API调用失败的情况
|
||
5. **权限控制**:确保只有有权限的用户才能添加设备
|
||
|
||
## 测试建议
|
||
|
||
1. **功能测试**:测试添加、查询、更新、删除功能
|
||
2. **数据验证**:验证必填字段的校验
|
||
3. **并发测试**:测试同时添加多个设备的情况
|
||
4. **异常测试**:测试网络异常、服务器异常等情况
|
||
|
||
## 联系支持
|
||
|
||
如有问题或需要技术支持,请联系开发团队。
|