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;
|
}
|
}
|