package com.yuchen.saas.parking.api.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.nest.springwrap.core.tenant.mp.TenantEntity;

import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 停车场计费规则单位时长模式
 *
 * @author 黄辉
 * @version 1.0
 * @date 2021-05-06 19:59:16
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "停车场计费规则单位时长模式", description = "停车场计费规则单位时长模式")
@TableName("pmg_bat_car_rule_unit_time")
public class PmgBatCarRuleUnittime extends TenantEntity {
	private static final long serialVersionUID = 1L;
	/**
	 * 项目Id
	 */
	@ApiModelProperty(name = "projectId", value = "项目Id")
	@NotNull(message = "请选择项目")
	private Long projectId;
	/**
	 * 规则名称
	 */
	@ApiModelProperty(name = "ruleName", value = "规则名称")
	private String ruleName;
	/**
	 * 车辆群组
	 */
	@ApiModelProperty(name = "carGroup", value = "车辆群组")
	private String carGroup;
	/**
	 * 车辆群组
	 */
	@ApiModelProperty(name = "carType", value = "车辆类型")
	private String carType;
	/**
	 * 单日计费时长 (0:全天  1:连续24小时  2:连续计费)
	 */
	@ApiModelProperty(name = "periodOption", value = "单日计费时长 (0:全天  1:连续24小时  2:连续计费)")
	private Long periodOption;
	/**
	 * 免费停车时长
	 */
	@ApiModelProperty(name = "freeTime", value = "免费停车时长")
	private Long freeTime;
	/**
	 * 免费出场时长
	 */
	@ApiModelProperty(name = "freeOutTime", value = "免费出场时长")
	private Long freeOutTime;
	/**
	 * 免费时长标识位（0：单次，1：多次）
	 */
	@ApiModelProperty(name = "isFreeMore", value = "免费时长标识位（0：单次，1：多次）")
	private Long isFreeMore;
	/**
	 * 收费总时长是否包含免费时长 （0是 1否）
	 */
	@ApiModelProperty(name = "containsFreeFlag", value = "收费总时长是否包含免费时长 （0是 1否）")
	private Long containsFreeFlag;
	/**
	 * 收费时段标识位（0：全天，1：自定义）
	 */
	@ApiModelProperty(name = "periodFlag", value = "收费时段标识位（0：全天，1：自定义）")
	private Long periodFlag;
	/**
	 * 最大封顶标识（0：无封顶，1：金额封顶，2：时间封顶）
	 */
	@ApiModelProperty(name = "maxFlag", value = "最大封顶标识（0：无封顶，1：金额封顶，2：时间封顶）")
	private Long maxFlag;

	/**
	 * 封顶时长  单位 分钟
	 */
	@ApiModelProperty(name = "maxTime", value = "封顶时长  单位 分钟")
	private Long maxTime;
	/**
	 * 每日多次封顶 （0 不封顶   1按金额）
	 */
	@ApiModelProperty(name = "periodLimitOption", value = "每日多次封顶 （0 不封顶   1按金额）")
	private Long periodLimitOption;

	/**
	 * 规则类型 （0 临停  1 群组）
	 */
	@ApiModelProperty(name = "ruleType", value = "规则类型 （0 临停  1 群组）")
	private Long ruleType;

	/**
	 * 停车场id
	 */
	@ApiModelProperty(name = "parkingId", value = "停车场id")
	private String parkingId;


	/**
	 * 首段收费时长 单位 分钟
	 */
	@ApiModelProperty(name = "firstTime", value = "首段收费时长 单位 分钟")
	private Long firstTime;


	/**
	 * 循环收费时长 单位 分钟
	 */
	@ApiModelProperty(name = "circulationTime", value = "循环收费时长 单位 分钟")
	private Long circulationTime;

	@ApiModelProperty(name = "rate", value = "总时长  1按次数  2停车时段  3单位时长  4日夜组合")
	private Long rate;


	/**
	 * 循环收费金额 单位分
	 */
	@ApiModelProperty(name = "circulationFee", value = "循环收费金额 单位分")
	private Long circulationFee;
	/**
	 * 首段收费金额 单位分
	 */
	@ApiModelProperty(name = "firstFee", value = "首段收费金额 单位分")
	private Long firstFee;
	/**
	 * 每日多次封顶金额 单位分
	 */
	@ApiModelProperty(name = "periodLimitPrice", value = "每日多次封顶金额 单位分")
	private Long periodLimitPrice;
	/**
	 * 封顶金额  单位分
	 */
	@ApiModelProperty(name = "maxFee", value = "封顶金额  单位分")
	private Long maxFee;
	/**
	 * 0-未产生账单，1-产生账单
	 */
	@TableField(exist = false)
	@ApiModelProperty(value = "0-未产生账单，1-产生账单")
	private Integer hasBill;
	/**
	 * 循环收费金额（元）
	 */
	@TableField(exist = false)
	private Double circulationFeeDouble;
	/**
	 * 首段收费金额（元）
	 */
	@TableField(exist = false)
	private Double firstFeeDouble;
	/**
	 * 每日多次封顶金额（元）
	 */
	@TableField(exist = false)
	private Double periodLimitPriceDouble;
	/**
	 * 封顶金额（元）
	 */
	@TableField(exist = false)
	private Double maxFeeDouble;

	@TableField(exist = false)
	@ApiModelProperty(value = "时间段")
	private List<PmgConfigPeriodDto> list;

	@ApiModelProperty(value = "生效开始时间")
	@TableField(value = "begin_time", fill = FieldFill.INSERT)
	private LocalDateTime beginTime;

	@ApiModelProperty(value = "生效结束时间")
	@TableField(value = "end_time", fill = FieldFill.INSERT)
	private LocalDateTime endTime;
	/**
	 * 是否默认
	 */
	@ApiModelProperty(name = "isDefault", value = "是否默认")
	private Integer isDefault;
}
