package com.zsElectric.boot.charging.vo;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.List;

@Data
@Accessors(chain = true)
@Schema(description = "推送充电状态响应VO")
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE)
public class EquipChargeStatusResponseVO {
    @Schema(description = "充电订单号,27位", example = "123456789201805071630123456", required = true)
    @JsonProperty("StartChargeSeq")
    private String StartChargeSeq;

    @Schema(description = "订单状态(1-启动中,2-启动成功,3-启动失败,4-结束)", example = "2", allowableValues = {"1", "2", "3", "4"}, required = true)
    @JsonProperty("StartChargeSeqStat")
    private Integer StartChargeSeqStat;

    @Schema(description = "充电设备接口编码", example = "3702120244102_1", required = true)
    @JsonProperty("ConnectorID")
    private String ConnectorID;

    @Schema(description = "设备接口状态(0-离网,1-空闲,2-占用(未充电),3-占用(充电中),4-占用(预约锁定),255-故障)", example = "3", allowableValues = {"0", "1", "2", "3", "4", "255"}, required = true)
    @JsonProperty("ConnectorStatus")
    private Integer ConnectorStatus;

    @Schema(description = "A相电流,单位:A", example = "15.5", required = true)
    @JsonProperty("CurrentA")
    private BigDecimal CurrentA;

    @Schema(description = "B相电流,单位:A", example = "15.5")
    @JsonProperty("CurrentB")
    private BigDecimal CurrentB;

    @Schema(description = "C相电流,单位:A", example = "15.5")
    @JsonProperty("CurrentC")
    private BigDecimal CurrentC;

    @Schema(description = "A相电压,单位:V", example = "220.0", required = true)
    @JsonProperty("VoltageA")
    private BigDecimal VoltageA;

    @Schema(description = "B相电压,单位:V", example = "220.0")
    @JsonProperty("VoltageB")
    private BigDecimal VoltageB;

    @Schema(description = "C相电压,单位:V", example = "220.0")
    @JsonProperty("VoltageC")
    private BigDecimal VoltageC;

    @Schema(description = "荷电状态,0-100", example = "80", required = true)
    @JsonProperty("Soc")
    private Integer Soc;

    @Schema(description = "累计充电电量,单位:kWh", example = "25.68", required = true)
    @JsonProperty("TotalPower")
    private BigDecimal TotalPower;

    @Schema(description = "电费,单位:元", example = "15.80", required = true)
    @JsonProperty("ElecMoney")
    private BigDecimal ElecMoney;

    @Schema(description = "服务费,单位:元", example = "3.20", required = true)
    @JsonProperty("SeviceMoney")
    private BigDecimal SeviceMoney;

    @Schema(description = "总金额,单位:元", example = "19.00", required = true)
    @JsonProperty("TotalMoney")
    private BigDecimal TotalMoney;

    @Schema(description = "充电明细信息体列表", required = true)
    @JsonProperty("ChargeDetails")
    private List<ChargeDetail> ChargeDetails;

    @Data
    @Accessors(chain = true)
    @Schema(description = "充电明细信息体")
    @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE)
    public static class ChargeDetail {

        @Schema(description = "开始时间,格式\"yyyy-MM-dd HH:mm:ss\"", example = "2024-01-15 10:30:00", required = true)
        @JsonProperty("DetailStartTime")
        private String DetailStartTime;

        @Schema(description = "结束时间,格式\"yyyy-MM-dd HH:mm:ss\"", example = "2024-01-15 11:30:00", required = true)
        @JsonProperty("DetailEndTime")
        private String DetailEndTime;

        @Schema(description = "时段电价,小数点后2位", example = "0.65")
        @JsonProperty("ElecPrice")
        private BigDecimal ElecPrice;

        @Schema(description = "时段服务费价格,小数点后2位", example = "0.15")
        @JsonProperty("SevicePrice")
        private BigDecimal SevicePrice;

        @Schema(description = "时段充电量,单位：度，小数点后4位", example = "12.3456", required = true)
        @JsonProperty("DetailPower")
        private BigDecimal DetailPower;

        @Schema(description = "时段电费,小数点后2位", example = "8.02")
        @JsonProperty("DetailElecMoney")
        private BigDecimal DetailElecMoney;

        @Schema(description = "时段服务费,小数点后2位", example = "1.85")
        @JsonProperty("DetailSeviceMoney")
        private BigDecimal DetailSeviceMoney;
    }
}
