liusuyi
2024-10-25 fddccbf217223e7287d6861c3020d9ba5cc15e55
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
package com.ard.tianyu.model.dto.converter;
 
import com.ard.tianyu.model.dto.state.*;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import org.springframework.beans.BeanUtils;
 
import java.util.List;
import java.util.stream.Collectors;
 
public class UavStateConverter {
 
    // 将 Protobuf UavState 转换为 Java 实体类 UavState
    public static UavState convertProtoToEntity(TelemetryDataPB.UavState protobufUavState) {
        UavState uavState = new UavState();
 
        // 复制简单字段
        uavState.setBoxSn(protobufUavState.getBoxSn());
 
        // 处理嵌套的 FlightControllerState
        if (protobufUavState.hasFlightControllerState()) {
            uavState.setFlightControllerState(convertFlightControllerState(protobufUavState.getFlightControllerState()));
        }
 
        // 处理嵌套的 BatteryState
        if (protobufUavState.hasBatteryState()) {
            uavState.setBatteryState(convertBatteryState(protobufUavState.getBatteryState()));
        }
 
        // 处理嵌套的 PtzState
        if (protobufUavState.hasPtzState()) {
            uavState.setPtzState(convertPtzState(protobufUavState.getPtzState()));
        }
 
        // 处理嵌套的 CameraState
        if (protobufUavState.hasCameraState()) {
            uavState.setCameraState(convertCameraState(protobufUavState.getCameraState()));
        }
 
        // 处理嵌套的 MissionState
        if (protobufUavState.hasMissionState()) {
            uavState.setMissionState(convertMissionState(protobufUavState.getMissionState()));
        }
 
        // 处理 AvoidanceData
        if (protobufUavState.hasAvoidanceData()) {
            uavState.setAvoidanceData(convertAvoidanceData(protobufUavState.getAvoidanceData()));
        }
 
        // 处理 List<HmsAlarmData>
        List<HmsAlarmData> hmsAlarmDataList = protobufUavState.getHmsAlarmDataList().stream()
                .map(UavStateConverter::convertHmsAlarmData)
                .collect(Collectors.toList());
        uavState.setHmsAlarmData(hmsAlarmDataList);
 
        return uavState;
    }
 
    // 其他转换方法如下:
    // 处理 BatteryState 逻辑
    public static BatteryState convertBatteryState(TelemetryDataPB.BatteryState protobufBatteryState) {
        BatteryState batteryState = new BatteryState();
 
        // 复制简单字段
        batteryState.setBatteryNum(protobufBatteryState.getBatteryNum());
        batteryState.setBatteryPower(protobufBatteryState.getBatteryPower());
        batteryState.setBatteryVoltage(protobufBatteryState.getBatteryVoltage());
 
        // 处理嵌套的 BatteryStateInfo
        if (protobufBatteryState.hasFirstBatteryInfo()) {
            batteryState.setFirstBatteryInfo(convertBatteryStateInfo(protobufBatteryState.getFirstBatteryInfo()));
        }
 
        if (protobufBatteryState.hasSecondBatteryInfo()) {
            batteryState.setSecondBatteryInfo(convertBatteryStateInfo(protobufBatteryState.getSecondBatteryInfo()));
        }
 
        return batteryState;
    }
 
    // 处理 BatteryStateInfo 逻辑
    public static BatteryStateInfo convertBatteryStateInfo(TelemetryDataPB.BatteryStateInfo protobufBatteryStateInfo) {
        BatteryStateInfo batteryStateInfo = new BatteryStateInfo();
        BeanUtils.copyProperties(protobufBatteryStateInfo, batteryStateInfo);
        return batteryStateInfo;
    }
 
    // 处理 FlightControllerState 逻辑
    public static FlightControllerState convertFlightControllerState(TelemetryDataPB.FlightControllerState proto) {
        FlightControllerState flightControllerState = new FlightControllerState();
 
        // 处理 PointData(起飞点和返航点)
        if (proto.hasStartPoint()) {
            flightControllerState.setStartPoint(convertPointData(proto.getStartPoint()));
        }
        if (proto.hasHomePoint()) {
            flightControllerState.setHomePoint(convertPointData(proto.getHomePoint()));
        }
        BeanUtils.copyProperties(proto, flightControllerState);
        return flightControllerState;
    }
 
    // 处理 PointData 逻辑
    public static PointData convertPointData(TelemetryDataPB.PointData protoPoint) {
        PointData pointData = new PointData();
        pointData.setLat(protoPoint.getLat());
        pointData.setLng(protoPoint.getLng());
        return pointData;
    }
 
    public static PtzState convertPtzState(TelemetryDataPB.PtzState proto) {
        PtzState ptzState = new PtzState();
        BeanUtils.copyProperties(proto, ptzState);
        return ptzState;
    }
 
    public static CameraState convertCameraState(TelemetryDataPB.CameraState proto) {
        CameraState cameraState = new CameraState();
        BeanUtils.copyProperties(proto, cameraState);
        return cameraState;
    }
 
    public static MissionState convertMissionState(TelemetryDataPB.MissionState proto) {
        MissionState missionState = new MissionState();
        BeanUtils.copyProperties(proto, missionState);
        return missionState;
    }
 
    public static AvoidanceData convertAvoidanceData(TelemetryDataPB.AvoidanceData proto) {
        AvoidanceData avoidanceData = new AvoidanceData();
        BeanUtils.copyProperties(proto, avoidanceData);
        return avoidanceData;
    }
 
    public static HmsAlarmData convertHmsAlarmData(TelemetryDataPB.HmsAlarmData proto) {
        HmsAlarmData hmsAlarmData = new HmsAlarmData();
        BeanUtils.copyProperties(proto, hmsAlarmData);
        return hmsAlarmData;
    }
}