QDAirPortBackend0122/接口文档1.md
2026-01-22 13:19:47 +08:00

416 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 车辆信息接口文档
## 1. 概述
* **连接方式**WebSocket
* **数据格式**JSON
* **交互逻辑**:客户端建立 WebSocket 连接成功后,服务端会自动推送数据。
---
## 2. 接口详情
### 2.1 VehicleOrderInfo - 任务信息
* **接口地址**`ws://ip:port/ws/at_manager`
* **用途**GUI 根据该消息刷新页面任务信息
* **推送频率**:数据变化推送
* **Message Name**`VehicleOrderInfo`
#### 输出参数
| 参数名 | 参数说明 | 是否必填 | 字段类型 | 备注说明 |
| :--- | :--- | :--- | :--- | :--- |
| messageName | 消息名称 | 是 | str | 固定值 `VehicleOrderInfo` |
| businessKey | 任务id | 是 | str | 任务的唯一标识 |
| vehicleId | 车号 | 是 | str | 车号 |
| jobStatus | 任务状态 | 是 | int | 0:未开始, 1:执行中, 4:终止, 9:完成 |
| abortBy | 取消来源 | 否 | str | 描述任务是被谁终止的 |
| cancelReason | 取消原因 | 否 | str | 描述任务取消的原因 |
| jobStage | 任务进度 | 是 | str | |
| jobStageTag | 任务进度标签 | 是 | str | |
| origin | 任务来源 | 是 | str | GUI客户端发送的任务 |
| jobType | 收送类型 | 是 | str | 作业类型 |
| passingLocation | 任务必经点 | 否 | str | |
| isNeedToTs | 是否经过锁站 | 否 | int | |
| movementType | 作业类型 | 否 | str | |
| offset | 引导值 | 否 | str | |
| vesselVisitID | 船id | 否 | str | |
| uniqueOrderIDOrigin | 原始任务ID | 否 | str | 重派的任务该字段为原始任务ID |
| **destination** | **目的位置** | **是** | **dict** | |
| └ logicalLocation | 目的位置 | 是 | dict | |
|   ├ area | 目标区域类型 | 是 | str | 固定值 YARD |
|   ├ block | 目标区域 | 是 | str | |
|   ├ lane | 车道 | 是 | str | |
|   ├ stack | 贝位 | 是 | str | |
| **points** | **指定点位** | **否** | **dict** | 该值不为空时系统使用该坐标导航(如GUI选点) |
| └ x | x坐标 | 否 | float | |
| └ y | y坐标 | 否 | float | |
| └ heading | 航向角 | 否 | float | |
| jobContent | 任务内容 | 否 | dict | 结构同 destination |
| **workflowNodes** | **流程节点记录** | **是** | **list** | |
| └ node | 节点名字 | 是 | str | |
| └ time | 记录时间戳 | 是 | float | |
| └ origin | 来源 | 是 | str | AUTO:系统, GUI:人工 |
| └ state | 节点状态 | 是 | bool | open:当前节点打开, close:已完成 |
#### 代码示例
```json
{
"data": {
"messageName": "VehicleOrderInfo",
"businessKey": "1767666776611",
"tenantId": "UpHang",
"processDefKey": "UpHang",
"vehicleId": "AET01",
"jobStatus": 1,
"abortBy": null,
"orderStatus": "",
"cancelReason": null,
"jobStage": "HANG_UP",
"jobStageTag": "WORKING",
"jobStageVehicle": 0,
"origin": "FMS",
"jobType": "UpHang",
"qctpCranId": "",
"craneID": null,
"passingLocation": "",
"isNeedToTs": -1,
"isNeedReshuffGate": 0,
"movementType": "ProcessTask",
"vesselVisitID": null,
"loadable": false,
"executeTogether": false,
"doubleYardSpecialStack": null,
"uniqueOrderIDOrigin": "",
"firstJobId": "",
"destination": {
"logicalLocation": {
"area": "BackUp",
"block": "BU01",
"lane": "01",
"stack": "001",
"tier": ""
},
"portLocation": {
"fmsX": null,
"fmsY": null,
"fmsZ": null,
"orientation": null
}
},
"points": {},
"isSecondBox": false,
"boxBelongsJob": null,
"trainId": "",
"mainId": 1134,
"createOn": "2026-01-06T02:32:56.685437+00:00",
"updateOn": "2026-01-06T02:32:56.685437+00:00",
"plannedContainerDestinationList": [],
"jobExtra": {
"hangType": "large",
"hangNum": "4",
"uploadNum": "0"
},
"jobAdd": [
{
"destPointType": "gateDestination",
"destination": {
"area": "GateCheck",
"block": "GC01",
"lane": "01",
"stack": "001"
}
}
]
}
}
```
---
### 2.2 VehicleDetails - 车辆列表/类型
* **接口地址**`ws://ip:port/ws/at_manager`
* **用途**GUI 根据该数据展示车辆模型
* **推送频率**:数据发生变化推送
* **Message Name**`VehicleDetails`
#### 输出参数
| 参数名 | 参数说明 | 是否必填 | 字段类型 | 备注说明 |
| :--- | :--- | :--- | :--- | :--- |
| messageName | 消息名称 | 是 | str | 固定值 `VehicleDetails` |
| vehicleId | 车号 | 是 | str | |
| vehicleType | 车辆类型 | 是 | str | 例如QTRUCK |
#### 代码示例
```json
{
"messageName": "VehicleDetails",
"vehicleId": "AET01",
"vin": null,
"manufacturer": null,
"vehicleType": "QTRUCK",
"createAt": "2025-08-05T07:54:09.721537+00:00",
"updateAt": "2025-11-06T07:40:30.789366+00:00",
"color": null,
"engineType": null
}
```
---
### 2.3 VehicleLoginStatus - 车辆上线/下线消息
* **接口地址**`ws://ip:port/ws/at_manager`
* **用途**GUI 根据该数据展示上线/下线的车
* **推送频率**:数据发生变化推送
* **Message Name**`VehicleLoginStatus`
#### 输出参数
| 参数名 | 参数说明 | 是否必填 | 字段类型 | 备注说明 |
| :--- | :--- | :--- | :--- | :--- |
| messageName | 消息名称 | 是 | str | 固定值 `VehicleLoginStatus` |
| vehicleId | 车号 | 是 | str | |
| loginStatus | 上线下线状态 | 是 | str | `login`:在线, `logout`:离线 |
#### 代码示例
```json
{
"messageName": "VehicleLoginStatus",
"vehicleId": "AET01",
"loginStatus": "login"
}
```
---
### 2.4 VehicleChassisInfo - 单车底盘信息
* **接口地址**`ws://ip:port/ws/at_manager`
* **用途**GUI 显示速度、电量、里程、底盘模式、胎压等
* **推送频率**:数据发生变化推送
* **Message Name**`VehicleChassisInfo`
#### 输出参数
| 参数名 | 参数说明 | 是否必填 | 字段类型 | 备注说明 |
| :--- | :--- | :--- | :--- | :--- |
| messageName | 消息名称 | 是 | str | 固定值 `VehicleChassisInfo` |
| vehicleId | 车号 | 是 | str | |
| **sys_info** | **系统信息** | **否** | **dict** | |
| └ i_driving_mode | 驾驶模式 | 否 | str | |
| └ **state_info** | **状态信息** | **否** | **dict** | |
|   ├ d_speed_kmph | 速度 | 是 | Float | 单位: KM/小时 |
|   ├ i_vehicle_miles_traveled | 里程表 | 否 | str | 底盘记录总路程,单位 m |
|   ├ d_battery_available | 电量 | 否 | str | 剩余电量百分比 |
|   ├ i_gear_position | 档位 | 否 | int | 1:N, 2:D, 3:P, 4:R, 5:未知 |
#### 代码示例
```json
{
"messageName": "VehicleChassisInfo",
"vehicleId": "AET01",
"reportAt": 1767667344.8743727,
"sys_info": {
"i_at_id": "AET01",
"i_driving_mode": "1",
"overweight_speed_limit": 0,
"state_info": {
"d_speed_kmph": 0,
"d_battery_available": "0.0",
"d_battery_soh": "0.0"
}
}
}
```
---
### 2.5 VehicleSuspendReport - 车辆紧停状态
* **接口地址**`ws://ip:port/ws/at_manager`
* **用途**GUI 操作紧停/恢复按钮状态,或展示当前车辆是否紧停
* **推送频率**:数据发生变化推送
* **Message Name**`VehicleSuspendReport`
#### 输出参数
| 参数名 | 参数说明 | 是否必填 | 字段类型 | 备注说明 |
| :--- | :--- | :--- | :--- | :--- |
| messageName | 消息名称 | 是 | str | 固定值 `VehicleSuspendReport` |
| vehicleId | 车号 | 是 | str | |
| suspendStatus | 当前车辆状态 | 是 | int | 0:恢复行驶, 1:紧急急停, 2:缓停 |
#### 代码示例
```json
{
"messageName": "VehicleSuspendReport",
"vehicleId": "AET01",
"suspendStatus": 0,
"origin": "device"
}
```
---
### 2.6 VehicleTailerNum - 拖挂数量
* **接口地址**`ws://ip:port/ws/at_manager`
* **用途**:推送单车拖挂数量
* **推送频率**N/A (通常为变化推送)
* **Message Name**`VehicleTailerNum`
#### 输出参数
| 参数名 | 参数说明 | 是否必填 | 字段类型 | 备注说明 |
| :--- | :--- | :--- | :--- | :--- |
| messageName | 消息名称 | 是 | str | 固定值 `VehicleTailerNum` |
| vehicleId | 车号 | 是 | str | |
| tailerNum | 拖挂数量 | 是 | str | 0或空表示无挂其他数字表示有挂 |
#### 代码示例
```json
{
"messageName": "VehicleTailerNum",
"vehicleId": "AET01",
"tailerNum": "0"
}
```
---
### 2.7 VehiclePositionInfo - 车辆位置信息
* **接口地址**`ws://ip:port/ws/at_manager_bsm`
* **用途**GUI 根据该数据展示车辆位置信息
* **推送频率**:数据发生变化推送
* **Message Name**`VehiclePositionInfo`
#### 输出参数
| 参数名 | 参数说明 | 是否必填 | 字段类型 | 备注说明 |
| :--- | :--- | :--- | :--- | :--- |
| messageName | 消息名称 | 是 | str | 固定值 `VehiclePositionInfo` |
| vehicleId | 车号 | 是 | str | |
| x | 车辆X坐标 | 是 | float | |
| y | 车辆Y坐标 | 是 | float | |
| theta | 车辆航向角 | 是 | float | 弧度正东0, 正北1.57, 正西3.14, 正南-1.57 |
| direction | 行驶方向 | 是 | int | 1:正向行驶, 2:反向行驶 |
| **trailer** | **拖挂信息** | **是** | **dict** | |
| └ x | 拖挂x坐标 | 是 | float | 不准,是车头坐标 |
| └ y | 拖挂Y坐标 | 是 | float | 不准,是车头坐标 |
| └ theta | 拖挂角度 | 是 | float | 弧度定义同上 |
#### 代码示例
```json
{
"messageName": "VehiclePositionInfo",
"vehicleId": "AET01",
"updateAt": "20260106T024227963Z",
"update_at": "20260106T024227963Z",
"reportAt": 1767667348.1297243,
"report_at": 1767667348.1297243,
"action": 0,
"z": 0,
"x": 6.12613,
"y": 101.70456,
"direction": 0,
"v": 0,
"theta": -1.5224342,
"trailer": {
"x": 3.555143,
"y": 111.36841,
"theta": 100000
}
}
```
---
### 2.8 NaviShortPathReport - 车辆短路径信息
* **接口地址**`ws://ip:port/ws/at_manager_path`
* **用途**GUI 根据该数据展示车辆路径规划
* **推送频率**:数据发生变化推送
* **Message Name**`NaviShortPathReport`
#### 输出参数
| 参数名 | 参数说明 | 是否必填 | 字段类型 | 备注说明 |
| :--- | :--- | :--- | :--- | :--- |
| messageName | 消息名称 | 是 | str | 固定值 `NaviShortPathReport` |
| vehicleId | 车号 | 是 | str | |
| vehicleMissionId | 任务ID | 是 | str | (注原文此处类型标注为float有误示例为str) |
| destinationType | 目的地类型 | 是 | int | |
| **path** | **路径信息** | **是** | **list** | |
| └ x | 路径点x坐标 | 是 | float | UTM坐标 |
| └ y | 路径点y坐标 | 是 | float | UTM坐标 |
| └ theta | 路径点角度 | 是 | float | 弧度定义同上 |
#### 代码示例
```json
{
"vehicleId": "AET01",
"vehicleMissionId": "04078d1e-eaa8-11f0-8723-fa30eca52200",
"destinationType": "",
"shortNavi": false,
"path": [
{
"x": 6.126130111981183,
"y": 101.70455933734775,
"theta": -1.5224548170138026
},
{
"x": 6.138059945020359,
"y": 101.45796921849251,
"theta": -1.5224956618374788
},
{
"x": 6.650000399346166,
"y": 50.25839266739786,
"theta": -1.570796333683315
}
],
"messageName": "NaviShortPathReport"
}
```
---
### 2.9 GetFmsMessage - 系统和单车告警信息
* **接口地址**`ws://ip:port/ws/at_manager`
* **用途**:推送系统和单车的告警信息
* **推送频率**:数据发生变化推送
* **Message Name**`GetFmsMessage`
#### 输出参数
| 参数名 | 参数说明 | 是否必填 | 字段类型 | 备注说明 |
| :--- | :--- | :--- | :--- | :--- |
| messageName | 消息名称 | 是 | str | 固定值 `GetFmsMessage` |
| vehicleID | 车号 | 是 | str | |
| description | 描述 | 否 | str | |
| code | 告警码 | 否 | str | |
| level | 告警等级 | 是 | int | |
| type | 来源 | 是 | int | 1:单车, 2:系统告警 |
| ts | 告警时间 | 是 | str | 时间戳 |
#### 代码示例
```json
{
"vehicleID": "AET01",
"code": "4119010",
"type": 1,
"level": 4,
"isActive": 1,
"longTermDisplayMessage": false,
"description": "里程计信息超时",
"ts": "2026-01-06T03:36:09.637195+00:00",
"messageName": "GetFmsMessage"
}
```