package com.yuchen.saas.parking.charge.api.vo.charge;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;

/**
 * @Author 蔡文强
 * @Date 2023/4/13 15:56
 * @Description 充电占位费规则
 */
@Data
@ApiModel
public class SpcStationOccupyFeeRuleVO {

    /**
     * 充电站ID
     */
    @ApiModelProperty(name = "stationId", value = "充电站ID")
    private Long stationId;
    /**
     * 园区ID
     */
    @ApiModelProperty(name = "parkId", value = "园区ID")
    private Long parkId;
    /**
     * 园区名称
     */
    @ApiModelProperty(name = "parkName", value = "园区名称")
    private String parkName;

    /**
     * 收费类型(1:限时免费 2:充电前后限免 3:充电固定限免 4:占位限免)
     */
    @ApiModelProperty(name = "feeType", value = "收费类型(1.充电前后限免2充电期间免费3充电限免占位费时长)")
    @Min(value = 1, message = "feeType值要大于等于1")
    @Max(value = 4, message = "feeType值要小于等于4")
    private Integer feeType;
    /**
     * 免费时间段,json字符串
     */
    @ApiModelProperty(name = "freeTimePeriod", value = "免费时间段,json字符串;(暂时不用)")
    private String freeTimePeriod;


    /**
     * 充电前后分别免费时长类型(1:分钟 2:小时),充电前后限免特有字段
     */
    @ApiModelProperty(name = "freeTimeType", value = "充电前后分别免费时长类型(1:分钟 2:小时),充电前后限免特有字段")
    private Integer freeTimeType;

    /**
     * 充电前后分别免费时长,充电前后限免特有字段
     */
    @ApiModelProperty(name = "freeTime", value = "充电前后分别免费时长,充电前后限免特有字段")
    private Integer freeTime;

    /**
     * 计算方式(1:单次免费时长 2：累计免费时长),充电前后限免特有字段
     */
    @ApiModelProperty(name = "calType", value = "计算方式(1:单次免费时长 2：累计免费时长),充电前后限免特有字段")
    @Min(value = 1, message = "calType值要大于等于1")
    @Max(value = 2, message = "calType值要小于等于2")
    private Integer calType;
    /**
     * 固定免费时长,充电固定限免特有字段
     */
    @ApiModelProperty(name = "fixedFreeMinute", value = "固定免费时长,充电固定限免特有字段")
    private Integer fixedFreeMinute;

    /**
     * 收费标准(1:统一收费 21:统一收费2按电桩类型收费)
     */
    @ApiModelProperty(name = "chargeType", value = "收费标准(0.不收费 1 收费)")
    private Integer chargeType;

    @ApiModelProperty(name = "chargeFeeType", value = "收费标准(1:统一收费 2按电桩类型收费)")
    private Integer chargeFeeType;

    /**
     * 收费时间段及对应占位费(按时段收费方式),json字符串
     */
    @ApiModelProperty(name = "chargeTimePeriod", value = "收费时间段及对应占位费(按时段收费方式),json字符串(暂时不用)")
    private String chargeTimePeriod;
    /**
     * 占位费(统一收费收费方式)--单位分
     */
    @ApiModelProperty(name = "occupyFee", value = "占位费(统一收费收费方式)--单位分")
    private Integer occupyFee;
    /**
     * 停车费类型
     */
    @ApiModelProperty(name = "parkingFeeSetType", value = "1停车收费 2停车免费3限时免费 4充电限免")
    private Integer parkingFeeSetType;

    @ApiModelProperty(name = "chargeSouce", value = "1电站直收2所在停车场代收")
    private Integer chargeSouce;

    @ApiModelProperty(name = "freeTimeAdded", value = "0.多次充电不累计1多次充电累计")
    private Integer freeTimeAdded;

    /**
     * 充电前后分别免费时长,充电前后限免特有字段
     */
    @ApiModelProperty(name = "maxFeeDay", value = "每日最大充电金额")
    private Integer maxFeeDay;

    @ApiModelProperty(name = "fastChargeConfig", value = "快充充电配置")
    private Integer fastChargeConfig;

    @ApiModelProperty(name = "slowChargeConfig", value = "慢充充电配置")
    private Integer slowChargeConfig;
    /**
     * 收费类型(1:限时免费 2:充电前后限免 3:充电固定限免 4:占位限免)
     */
    @ApiModelProperty(name = "fastFeeType", value = "快充收费类型(1.充电前后限免)")
    @Min(value = 1, message = "feeType值要大于等于1")
    @Max(value = 4, message = "feeType值要小于等于4")
    private Integer fastFeeType;
    @ApiModelProperty(name = "fastFreeTimeType", value = "快充充电前后分别免费时长类型(1:分钟 2:小时),充电前后限免特有字段")
    private Integer fastFreeTimeType;
    @ApiModelProperty(name = "fastFreeTime", value = "快充充电前后分别免费时长,充电前后限免特有字段")
    private Integer fastFreeTime;
    @ApiModelProperty(name = "fastFreeTimeAdded", value = "0.多次充电不累计1多次充电累计")
    private Integer fastFreeTimeAdded;
    @ApiModelProperty(name = "fastMaxFeeDay", value = "快充每日最大充电金额")
    private Integer fastMaxFeeDay;
    @ApiModelProperty(name = "fastOccupyFee", value = "快充收费单位")
    private Integer fastOccupyFee;
    @ApiModelProperty(name = "slowFeeType", value = "慢充收费类型(1.充电前后限免)")
    @Min(value = 1, message = "feeType值要大于等于1")
    @Max(value = 4, message = "feeType值要小于等于4")
    private Integer slowFeeType;
    @ApiModelProperty(name = "slowFreeTimeType", value = "慢充充电前后分别免费时长类型(1:分钟 2:小时),充电前后限免特有字段")
    private Integer slowFreeTimeType;
    @ApiModelProperty(name = "slowFreeTime", value = "慢充充电前后分别免费时长,充电前后限免特有字段")
    private Integer slowFreeTime;
    @ApiModelProperty(name = "slowFreeTimeAdded", value = "0.多次充电不累计1多次充电累计")
    private Integer slowFreeTimeAdded;
    @ApiModelProperty(name = "slowMaxFeeDay", value = "慢充每日最大充电金额")
    private Integer slowMaxFeeDay;
    @ApiModelProperty(name = "slowOccupyFee", value = "慢充收费单位")
    private Integer slowOccupyFee;
    /**
     * 停车收费说明
     */
    @ApiModelProperty(name = "instruction", value = "停车收费说明")
    private String instruction;

    @ApiModelProperty(name = "freeShowTime", value = "多长时间后显示占位状态")
    private Integer freeShowTime;
    @ApiModelProperty(name = "fastFreeShowTime", value = "快充多长时间后显示占位状态")
    private Integer fastFreeShowTime;
    @ApiModelProperty(name = "slowFreeShowTime", value = "慢充多长时间后显示占位状态")
    private Integer slowFreeShowTime;
}
