package com.ard.tianyu.domain.dto.converter.wayline; import com.ard.common.utils.bean.BeanUtils; import com.ard.tianyu.domain.dto.state.PointData; import com.ard.tianyu.domain.dto.wayline.SurroundModel; import com.ard.tianyu.netty.protobuf.TelemetryDataPB; import java.util.List; import java.util.stream.Collectors; public class SurroundModelConverter { public static TelemetryDataPB.SurroundModel convertEntityToProto(SurroundModel surroundModel) { // 使用构建器来创建 Protobuf 对象 TelemetryDataPB.SurroundModel.Builder builder = TelemetryDataPB.SurroundModel.newBuilder(); // 复制基本属性 builder.setServiceId(surroundModel.getServiceId()); builder.setCameraId(surroundModel.getCameraId()); builder.setIsModeling(surroundModel.getIsModeling()); // 处理 repeated fields if (surroundModel.getArea() != null && !surroundModel.getArea().isEmpty()) { List area = surroundModel.getArea().stream() .map(PointDataConverter::convertEntityToProto) .collect(Collectors.toList()); builder.addAllArea(area); } // 构建并返回 Protobuf 对象 return builder.build(); } public static SurroundModel convertProtoToEntity(TelemetryDataPB.SurroundModel proto) { SurroundModel surroundModel = new SurroundModel(); BeanUtils.copyProperties(proto, surroundModel); // 处理 repeated fields if (proto.getAreaCount() > 0) { List area = proto.getAreaList().stream() .map(PointDataConverter::convertProtoToEntity) .collect(Collectors.toList()); surroundModel.setArea(area); } return surroundModel; } }