package com.ho.business.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.data.annotation.Transient;

import javax.validation.constraints.Digits;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
public class IndustrialElecPrice  implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "id")
    private Long id;
    // 1:单一电价 2：两部制电价【字典表】.....
    @ApiModelProperty(value = "用电部制/分类：字典表类型electricity_type")
    private Integer electricityType;

    @ApiModelProperty(value = "用电部制/分类：字典表类型electricity_type")
    @Transient
    private String electricityTypeLabel;

    // 用户类型 1.一般工业用户 2.大工业用电....
    @ApiModelProperty(value = "用户类型：字典表类型customer_type")
    private Integer customerType;

    @ApiModelProperty(value = "用户类型：字典表类型customer_type")
    @Transient
    private String customerTypeLabel;
    // 电压等级【字典表】
    @ApiModelProperty(value = "电压等级：字典表类型voltage_level")
    private Integer voltageLevel;

    @ApiModelProperty(value = "用户类型：字典表类型customer_type")
    @Transient
    private String voltageLevelLabel;
    // 非分时电价
    @ApiModelProperty(value = "非分时电价")
    @Digits(integer = 5, fraction = 10, message = "validation.nonTimePrice.digit.message")
    private BigDecimal nonTimePrice;

    // 代理购电价格
    @ApiModelProperty(value = "代理购电价格")
    @Digits(integer = 5, fraction = 10, message = "validation.proxyPrice.digit.message")
    private BigDecimal proxyPrice;

    @ApiModelProperty(value = "上网电价高峰时段")
    @Digits(integer = 5, fraction = 10, message = "validation.feedPeakPrice.digit.message")
    private BigDecimal feedPeakPrice;

    @ApiModelProperty(value = "上网电价平时段")
    @Digits(integer = 5, fraction = 10, message = "validation.feedRegularPrice.digit.message")
    private BigDecimal feedRegularPrice;

    @ApiModelProperty(value = "上网电价低谷时段")
    @Digits(integer = 5, fraction = 10, message = "validation.feedLowValleyPrice.digit.message")
    private BigDecimal feedLowValleyPrice;

    @ApiModelProperty(value = "线损电价高峰时段")
    @Digits(integer = 5, fraction = 10, message = "validation.linePeakPrice.digit.message")
    private BigDecimal linePeakPrice;

    @ApiModelProperty(value = "线损电价平时段")
    @Digits(integer = 5, fraction = 10, message = "validation.lineRegularPrice.digit.message")
    private BigDecimal lineRegularPrice;

    @ApiModelProperty(value = "线损电价低谷时段")
    @Digits(integer = 5, fraction = 10, message = "validation.lineLowValleyPrice.digit.message")
    private BigDecimal lineLowValleyPrice;

    // 线损电价
    @ApiModelProperty(value = "线损电价")
    @Digits(integer = 5, fraction = 10, message = "validation.lineLossPrice.digit.message")
    private BigDecimal lineLossPrice;

    // 输电电价
    @ApiModelProperty(value = "输电电价")
    @Digits(integer = 5, fraction = 10, message = "validation.transmissionPrice.digit.message")
    private BigDecimal transmissionPrice;

    // 运行电价
    @ApiModelProperty(value = "运行电价")
    @Digits(integer = 5, fraction = 10, message = "validation.runningPrice.digit.message")
    private BigDecimal runningPrice;

    // 政府性基金及附加电价
    @ApiModelProperty(value = "政府性基金及附加电价")
    @Digits(integer = 5, fraction = 10, message = "validation.addPrice.digit.message")
    private BigDecimal addPrice;

    // 分时电价高峰电价
    @ApiModelProperty(value = "分时电价高峰电价")
    @Digits(integer = 5, fraction = 10, message = "validation.peakPrice.digit.message")
    private BigDecimal peakPrice;

    // 分时电价高峰电价区间
    @ApiModelProperty(value = "分时电价高峰电价区间")
    @Length(max = 200, message = "validation.peakPriceInterval.length.message")
    private String peakPriceInterval;

    // 分时尖峰电价
    @ApiModelProperty(value = "分时尖峰电价")
    @Digits(integer = 5, fraction = 10, message = "validation.spikePrice.digit.message")
    private BigDecimal spikePrice;

    // 分时尖峰电价区间
    @ApiModelProperty(value = "分时尖峰电价区间")
    @Length(max = 200, message = "validation.spikePriceInterval.length.message")
    private String spikePriceInterval;

    // 分时平时电价
    @ApiModelProperty(value = "分时平时电价")
    @Digits(integer = 5, fraction = 10, message = "validation.regularPrice.digit.message")
    private BigDecimal regularPrice;

    // 分时平时电价区间
    @ApiModelProperty(value = "分时平时电价区间")
    @Length(max = 200, message = "validation.regularPriceInterval.length.message")
    private String regularPriceInterval;

    // 分时低谷电价
    @ApiModelProperty(value = "分时低谷电价")
    @Digits(integer = 5, fraction = 10, message = "validation.lowValleyPrice.digit.message")
    private BigDecimal lowValleyPrice;

    // 分时低谷电价区间
    @ApiModelProperty(value = "分时低谷电价区间")
    @Length(max = 200, message = "validation.lowValleyPriceInterval.length.message")
    private String lowValleyPriceInterval;

    // 分时深谷电价
    @ApiModelProperty(value = "分时深谷电价")
    @Digits(integer = 5, fraction = 10, message = "validation.deepValleyPrice.digit.message")
    private BigDecimal deepValleyPrice;

    // 分时深谷电价区间
    @ApiModelProperty(value = "分时深谷电价区间")
    @Length(max = 200, message = "validation.deepValleyPriceInterval.length.message")
    private String deepValleyPriceInterval;

    // 需量电价
    @ApiModelProperty(value = "需量电价")
    @Digits(integer = 5, fraction = 10, message = "validation.demandPrice.digit.message")
    private BigDecimal demandPrice;

    // 容量电价
    @ApiModelProperty(value = "容量电价")
    @Digits(integer = 5, fraction = 10, message = "validation.capacityPrice.digit.message")
    private BigDecimal capacityPrice;

    // 执行开始时间
    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
    @ApiModelProperty(value = "执行日期")
    private String executionTime;

    // 地区id
    @ApiModelProperty(value = "地区id")
    private Integer regionId;

    @Transient
    private String regionName;

    @ApiModelProperty(value = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
}
