Initial commit

This commit is contained in:
zyp
2026-05-22 16:13:20 +08:00
commit b3089a254e
1444 changed files with 372077 additions and 0 deletions

275
前端集成说明.md Normal file
View File

@@ -0,0 +1,275 @@
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
- 设备序列号输入设备SN1581F5FHC248A00DXGLU
- 载荷类型:选择或输入载荷类型(如:标准载荷)
- 侦察范围输入侦察范围5km
- 续航时间输入续航时间45分钟
- 设备描述:输入设备描述(可选)
3. **提交保存**点击保存按钮系统会调用后端API将数据保存到MySQL数据库
4. **查看结果**添加成功后新装备会出现在设备列表中并且数据会永久保存在MySQL数据库中
#### 数据同步:
- **实时数据**设备的位置、电量、高度等实时数据仍然通过WebSocket获取
- **基础信息**设备的基础信息名称、编号、类型等存储在MySQL中
- **状态更新**设备状态变更时会同时更新MySQL数据库
## 注意事项
1. **设备编号唯一性**:每个设备的编号必须唯一,系统会检查重复
2. **租户隔离**:不同租户的设备数据是隔离的
3. **数据一致性**确保MongoDB和MySQL数据的一致性
4. **错误处理**前端需要处理API调用失败的情况
5. **权限控制**:确保只有有权限的用户才能添加设备
## 测试建议
1. **功能测试**:测试添加、查询、更新、删除功能
2. **数据验证**:验证必填字段的校验
3. **并发测试**:测试同时添加多个设备的情况
4. **异常测试**:测试网络异常、服务器异常等情况
## 联系支持
如有问题或需要技术支持,请联系开发团队。