package com.evobms.project.vehicledata.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
import com.evobms.project.vehicledata.domain.VehicleData;
import com.evobms.project.vehicledata.domain.VehicleLocation;
import com.evobms.project.battery.domain.ExtremeValues;
import com.evobms.project.battery.domain.SubsystemTemperature;
import com.evobms.project.battery.domain.SubsystemVoltage;
import com.evobms.project.bms.domain.*;

@Data
@ApiModel(value = "DeviceRealtimeAggregateDTO", description = "设备实时聚合：原始实体 + dashboard 扁平视图（含24h趋势）")
public class DeviceRealtimeAggregateDTO {
    @ApiModelProperty(value = "设备ID", example = "EVO0001")
    private String deviceId;

    @ApiModelProperty(value = "基础：最新整车数据")
    private VehicleData vehicleData;
    @ApiModelProperty(value = "基础：最新位置数据")
    private VehicleLocation latestLocation;

    @ApiModelProperty(value = "极值：单体电压/温度极值")
    private ExtremeValues extremeValues;

    @ApiModelProperty(value = "BMS：系统状态")
    private BmsSystemStatus systemStatus;
    @ApiModelProperty(value = "BMS：实时运行")
    private BmsRuntimeData runtimeData;
    @ApiModelProperty(value = "BMS：充电详情")
    private BmsChargeDetail chargeDetail;
    @ApiModelProperty(value = "BMS：SOP功率能力")
    private BmsSopData sopData;
    @ApiModelProperty(value = "BMS：充电座温度最新")
    private List<BmsChargeTemperature> chargeTemperatures;
    @ApiModelProperty(value = "BMS：电压通道最新")
    private List<BmsVoltageChannelData> voltageChannels;

    @ApiModelProperty(value = "可充电储能子系统电压：入库时间最新的一条（任意子系统号，便于单独展示）")
    private SubsystemVoltage subsystemVoltage;
    @ApiModelProperty(value = "可充电储能子系统温度：入库时间最新的一条（任意子系统号，便于单独展示）")
    private SubsystemTemperature subsystemTemperature;

    @ApiModelProperty(value = "可充电储能子系统电压：各子系统号各保留入库最新一条")
    private List<SubsystemVoltage> subsystemVoltages;
    @ApiModelProperty(value = "可充电储能子系统温度：各子系统号各保留入库最新一条")
    private List<SubsystemTemperature> subsystemTemperatures;

    @ApiModelProperty(value = "前端扁平视图：系统状态分块、通道/探头列表、24h 趋势等（与上方原始实体互补，避免重复组装）")
    private DeviceRealtimeDTO dashboard;
}
