ai-coding
2026-07-01 ab488021bc18fe01f7190f662753ce565f1562e8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
export type MonitorGroup = 'CRUISING' | 'HAS_ORDER' | 'OCCUPIED' | 'ABNORMAL'
 
export type VehicleMonitorStateCode
  = | 'CRUISING'
    | 'PICK_UP'
    | 'DROP_OFF'
    | 'CHARGING'
    | 'PREPARING'
    | 'RETURNING'
    | 'ABNORMAL'
    | 'ODD_OUT'
 
export interface VehicleMonitorVo {
  vehicleId: number
  vin: string
  plateNumber: string
  monitorGroup: MonitorGroup
  monitorStatus: string
  stateCode: VehicleMonitorStateCode
  lon: number
  lat: number
  course: number
  currentElectricity: number
  speed: number
  orderId: number | null
  charging: boolean
  positionUpdateTime: number
}
 
export interface CommandCenterVehicleDetailVo {
  vehicleId: number
  vin: string
  plateNumber: string
  monitorGroup: MonitorGroup
  monitorStatus: string
  stateCode: VehicleMonitorStateCode
  currentElectricity: number
  todayCompletedOrders: number
  routeInfo: CommandCenterRouteInfoVo | null
  currentLon: number
  currentLat: number
}
 
export interface CommandCenterKpiVo {
  cruisingCount: number
  hasOrderCount: number
  pickUpCount: number
  dropOffCount: number
  occupiedCount: number
  chargingCount: number
  preparingCount: number
  returningCount: number
  totalAbnormalCount: number
  oddOutCount: number
  abnormalCount: number
  todayCompletedOrders: number
  avgOrdersPerVehicle: number
}
 
export interface PassengerCallVo {
  orderId: number
  orderNumber: string
  appUserId: string
  startLon: number
  startLat: number
  startAddress: string
  endLon: number
  endLat: number
  endAddress: string
  createTime: string
  waitingSeconds: number
}
 
export interface XpElectronicFenceArea {
  id: number
  electronicId: number
  areaName: string
  areaType: number // 1=运营区 2=禁行区
  areaStatus: number // 1=启用 2=禁用
  fencePoints: string // "经度*纬度,经度*纬度"
}
 
export interface FenceVo {
  electronicId: number
  electronicName: string
  cityCode: string
  status: number
  areas: XpElectronicFenceArea[]
}
 
export interface StationVo {
  id: number
  stationName: string
  stationNumber: string
  status: number
  cityCode: string
  cityName: string
  electronicId: number
  centerLon: number
  centerLat: number
  fencePoints: string
  stationArea: number
  sortNo: number
}
 
export interface XpOpenCity {
  id: number
  provinceName: string
  provinceCode: string
  cityName: string
  cityCode: string
  districtName: string
  districtCode: string
  status: number
}
 
export interface LonLatDto {
  longitude: number
  latitude: number
}
 
export interface CommandCenterRouteInfoVo {
  startLon: number
  startLat: number
  endLon: number
  endLat: number
  startAddress: string
  endAddress: string
  eta: number // seconds
  distance: number // meters
  polyline: LonLatDto[] // 剩余导航轨迹
}
 
export interface VehicleDetailVo {
  vehicleId: number
  vin: string
  plateNumber: string
  monitorGroup: MonitorGroup
  monitorStatus: string
  stateCode: VehicleMonitorStateCode
  currentElectricity: number
  todayCompletedOrders: number
  routeInfo: CommandCenterRouteInfoVo | null
  currentLon: number
  currentLat: number
}
 
export interface XpPointVo {
  id: string
  electronicAreaId: number | null
  fpElectronicAreaId: number | null
  pointName: string
  pointPoi: string
  pointNumber: string
  operationStatus: number
  pointType: number
  verificationStatus: number
  parkingTimeLimit: number | null
  operationType: number
  effectivePeriod: number
  effectiveTimePeriod: string | null
  pointAddress: string
  remarks: string | null
  pointPictures: string | null
  pointLon: number
  pointLat: number
  chargePoint: number
  parkingPoint: number
  provinceName: string
  provinceCode: string
  cityName: string
  cityCode: string
  districtName: string
  districtCode: string
  stationId: number | null
  stationSortNo: number | null
  pointOnOff: number
  pointOnOffName: string | null
  electronicName: string | null
  stationName: string | null
  createBy: string | null
  updateBy: string | null
  createTime: string | null
  updateTime: string | null
}
 
export interface LayerVisibility {
  vehicle: boolean
  passengerCall: boolean
  fence: boolean
  point: boolean
}
 
export interface SocketStatus {
  connected: boolean
  lastPushAt: number
}
 
export interface WeatherVo {
  province: string
  city: string
  adcode: string
  weather: string
  temperature: string
  winddirection: string
  windpower: string
  humidity: string
  reporttime: string
  currentTime: string
}