package com.ard.work.domain.dto.converter.wayline; import com.ard.common.utils.bean.BeanUtils; import com.ard.work.domain.dto.wayline.NormalModel; import com.ard.work.component.netty.protobuf.TelemetryDataPB; public class NormalModelConverter { public static TelemetryDataPB.NormalModel convertEntityToProto(NormalModel normalModel) { // 使用构建器来创建 Protobuf 对象 TelemetryDataPB.NormalModel.Builder builder = TelemetryDataPB.NormalModel.newBuilder(); // 复制基本属性 builder.setServiceId(normalModel.getServiceId()); builder.setCameraId(normalModel.getCameraId()); builder.setIsModeling(normalModel.getIsModeling()); builder.setMode(normalModel.getMode()); builder.setHOverlap(normalModel.getHOverlap()); builder.setVOverlap(normalModel.getVOverlap()); builder.setMirror(normalModel.getMirror()); // 处理 repeated fields if (normalModel.getArea() != null) { normalModel.getArea().forEach(pointData -> { builder.addArea(PointDataConverter.convertEntityToProto(pointData)); }); } // 构建并返回 Protobuf 对象 return builder.build(); } // 将 Protobuf 对象转换为实体对象 public static NormalModel convertProtoToEntity(TelemetryDataPB.NormalModel proto) { NormalModel normalModel = new NormalModel(); // 复制基本属性 BeanUtils.copyProperties(proto, normalModel); // 处理 repeated fields if (proto.getAreaCount() > 0) { proto.getAreaList().forEach(pointDataProto -> { normalModel.getArea().add(PointDataConverter.convertProtoToEntity(pointDataProto)); }); } return normalModel; } }