package com.jsowell.pile.dto.huawei;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

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

/**
 * 下发计费策略DTO
 *
 * @author Lemon
 * @Date 2024/1/14 10:00:04
 */
@Data
public class DeliverEquipBusinessDTO {
    /**
     * 策略下发流水号
     */
    @JsonProperty(value = "EquipBizSeq")
    private String equipBizSeq;

    /**
     * 充电业务策略的数量
     * 大小与需要下发计费策略的充电枪数量一致。
     */
    @JsonProperty(value = "SumChargePolicyInfos")
    private Integer sumChargePolicyInfos;

    /**
     * 充电业务策略信息
     */
    @JsonProperty(value = "ChargePolicyInfos")
    private List<ChargePolicyInfo> chargePolicyInfos;


    /**
     * 充电业务策略信息
     */
    @Data
    public static class ChargePolicyInfo{
        /**
         * 充电设备接口编码
         */
        @JsonProperty(value = "ConnectorID")
        private String connectorID;

        /**
         * 业务策略信息体
         * 数组大小为1，当前一把充电枪只支持一条充电计费策略。
         */
        @JsonProperty(value = "PricePolicyInfos")
        private List<PricePolicyInfo> pricePolicyInfos;



        @Data
        public static class PricePolicyInfo {
            /**
             * 计费策略ID
             */
            @JsonProperty(value = "EquipBizID")
            private String equipBizID;

            /**
             * 执行状态
             * 0：无效
             * 1：有效
             */
            @JsonProperty(value = "ValidStat")
            private Integer validStat;

            /**
             * 生效时间
             * 格式“yyyy-mm-dd HHmmss”。不能超过2100年。
             */
            @JsonProperty(value = "ValidStartTime")
            private String validStartTime;

            /**
             * 失效时间
             * 格式“yyyy-mm-dd HHmmss”。不能超过2100年
             */
            @JsonProperty(value = "ValidEndTime")
            private String validEndTime;

            /**
             * 时段数N
             * 1~48
             */
            @JsonProperty(value = "SumPeriod")
            private Integer sumPeriod;

            /**
             * 计费信息
             * 单项业务策略信息体，数组大小与时段数N数量一致。
             */
            @JsonProperty(value = "PolicyInfos")
            private List<PolicyInfo> policyInfos;


            @Data
            public static class PolicyInfo {

                /**
                 * 时段起始时间点
                 * 格式“HHmmss”，6字符。
                 */
                @JsonProperty(value = "StartTime")
                private String startTime;

                /**
                 * 时段电费
                 * 小数点后4位
                 */
                @JsonProperty(value = "ElecPrice")
                private BigDecimal elecPrice;

                /**
                 * 时段服务费
                 * 小数点后4位
                 */
                @JsonProperty(value = "SevicePrice")
                private BigDecimal sevicePrice;
            }
        }
    }
}
