package com.ard.tianyu.model.dto.converter.wayline;
|
|
import com.ard.common.utils.bean.BeanUtils;
|
import com.ard.tianyu.model.dto.state.PointData;
|
import com.ard.tianyu.model.dto.wayline.PointAction;
|
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
|
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
public class PointDataConverter {
|
public static TelemetryDataPB.PointData convertEntityToProto(PointData pointData) {
|
// 使用构建器来创建 Protobuf 对象
|
TelemetryDataPB.PointData.Builder builder = TelemetryDataPB.PointData.newBuilder();
|
|
// 复制基本属性
|
builder.setLng(pointData.getLng());
|
builder.setLat(pointData.getLat());
|
builder.setHeight(pointData.getHeight());
|
builder.setSpeed(pointData.getSpeed());
|
builder.setFlightPathMode(pointData.getFlightPathMode());
|
builder.setDampingDistance(pointData.getDampingDistance());
|
builder.setSafeGohomeFlag(pointData.getSafeGohomeFlag());
|
builder.setHeadingMode(pointData.getHeadingMode());
|
builder.setHeading(pointData.getHeading());
|
builder.setInterestIndex(pointData.getInterestIndex());
|
builder.setGroupIndex(pointData.getGroupIndex());
|
|
// 处理动作数组
|
if (pointData.getActions() != null && !pointData.getActions().isEmpty()) {
|
List<TelemetryDataPB.PointAction> actions = pointData.getActions().stream()
|
.map(PointActionConverter::convertEntityToProto)
|
.collect(Collectors.toList());
|
builder.addAllActions(actions);
|
}
|
|
// 构建并返回 Protobuf 对象
|
return builder.build();
|
}
|
|
public static PointData convertProtoToEntity(TelemetryDataPB.PointData proto) {
|
PointData pointData = new PointData();
|
BeanUtils.copyProperties(proto, pointData);
|
// 处理 repeated fields
|
if (proto.getActionsCount() > 0) {
|
List<PointAction> actions = proto.getActionsList().stream()
|
.map(PointActionConverter::convertProtoToEntity)
|
.collect(Collectors.toList());
|
pointData.setActions(actions);
|
}
|
return pointData;
|
}
|
}
|