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

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

import java.util.Date;

/**
 * @author zhouhanwei
 * @create 2023/3/20 15:21
 */
@ApiModel()
@EqualsAndHashCode
@Data
public class ParkingAbnormalBillInfoVO {
    /**
     * 园区id
     */
    @ApiModelProperty("园区id")
    private String parkId;
    /**
     * 停车库名称
     */
    @ApiModelProperty("园区名称")
    private String parkName;
    /**
    /**
     *记录时间
     */
    private Date createTime;

    /**
     * 微信openid or 支付宝账号
     */
    @ApiModelProperty("微信openid or 支付宝账号")
    private String payUserId;
    /**
     * 停车库唯一标志
     */
    @ApiModelProperty("停车库唯一标志")
    private Long parkingId;
    /**
     * 停车库名称
     */
    @ApiModelProperty("停车库名称")
    private String parkingName;
    /**
     * 车牌
     */
    @ApiModelProperty("车牌")
    private String plateNo;
    /**
     * 车辆id，无牌车用无牌车id
     */
    @ApiModelProperty("车辆id，无牌车用无牌车id")
    private Long noPlateId;

    /**
     * 车辆类型:0-其他，1-小型车，2-大型车，3-摩托车
     */
    @ApiModelProperty("车辆类型:0-其他，1-小型车，2-大型车，3-摩托车")
    private Integer vehicleType;
    /**
     * 入场时间
     */
    @ApiModelProperty("入场时间")
    private Date enterTime;
    /**
     * 放行的理由
     */
    @ApiModelProperty("放行的理由")
    private String enterMsg;
    /**
     * 收费规则唯一标志，正常收费情况下有此信息
     */
    @ApiModelProperty("收费规则唯一标志，正常收费情况下有此信息")
    private Long chargeRuleId;
    /**
     * 收费规则名称
     */
    @ApiModelProperty("收费规则名称")
    private String chargeRuleName;
    /**
     * 入场免费时间 单位 分钟
     */
    @ApiModelProperty("入场免费时间 单位 分钟")
    private Long enterFreeTime;
    /**
     * 缴费后允许延时出场时间 单位：分钟
     */
    @ApiModelProperty("缴费后允许延时出场时间 单位：分钟")
    private Long delayTime;
    /**
     * 账单状态：0-未结清状态，1-已结算（已出停车场）  ----每一次变动添加一条记录
     */
    @ApiModelProperty("账单状态：0-未结清状态，1-已结算（已出停车场）  ----每一次变动添加一条记录")
    private Integer billStatus;
    /**
     * 账单类型：1-临停 2-月卡 3-无牌车，4-特殊车，5-节假日，6-群组,7-异常,10-团队车,11-车组,12-AB车位,13-团队车位,20-错时车
     */
    @ApiModelProperty("账单类型：1-临停 2-月卡 3-无牌车，4-特殊车，5-节假日，6-群组,7-异常-------放行规则提供")
    private Integer billType;
    /**
     * 缴费时间(统计停车时长)
     */
    @ApiModelProperty("缴费时间(统计停车时长)")
    private Date outTime;
    /**
     * 放行的理由
     */
    @ApiModelProperty("放行的理由")
    private String outMsg;
    /**
     * 停车时长 单位分钟
     */
    @ApiModelProperty("停车时长 单位分钟")
    private Long parkTime;
    /**
     * 应收金额（最大长度8） 单位：分
     */
    @ApiModelProperty("应收金额（最大长度8） 单位：分")
    private Long supposeCost;
    /**
     * 已支付金额（最大长度8） 单位：分
     */
    @ApiModelProperty("已支付金额（最大长度8） 单位：分")
    private Long paidCost;
    /**
     * 优惠减免金额（最大长度8） 单位：分
     */
    @ApiModelProperty("优惠减免金额（最大长度8） 单位：分")
    private Long discountCost;
    /**
     * 账单总金额（最大长度8） 单位：分
     */
    @ApiModelProperty("账单总金额（最大长度8） 单位：分")
    private Long totalCost;
    /**
     * 入场车辆图片uri
     */
    @ApiModelProperty("入场车辆图片uri")
    private String vehiclePicUri;
    /**
     * 入场车牌图片uri
     */
    @ApiModelProperty("入场车牌图片uri")
    private String plateNoPicUri;

    @ApiModelProperty("子账单类型")
    private Integer subBillType;

    @ApiModelProperty(value = "最新一条结算时间")
    private Date settleTime;

    @ApiModelProperty("异常类型(目前只存放了场中场地库异常出场,等)1存在异常出场")
    private Integer exceptionType;

    @ApiModelProperty(value = "异常产生时间(结合exceptionType使用)")
    private Date exceptionTime;

    @ApiModelProperty(value = "异常关联的父停车场id")
    private Long exceptionParentId;


    public String getParkId() {
        return parkId;
    }

    public void setParkId(String parkId) {
        this.parkId = parkId;
    }

    public String getParkName() {
        return parkName;
    }

    public void setParkName(String parkName) {
        this.parkName = parkName;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getPayUserId() {
        return payUserId;
    }

    public void setPayUserId(String payUserId) {
        this.payUserId = payUserId;
    }

    public Long getParkingId() {
        return parkingId;
    }

    public void setParkingId(Long parkingId) {
        this.parkingId = parkingId;
    }

    public String getParkingName() {
        return parkingName;
    }

    public void setParkingName(String parkingName) {
        this.parkingName = parkingName;
    }

    public String getPlateNo() {
        return plateNo;
    }

    public void setPlateNo(String plateNo) {
        this.plateNo = plateNo;
    }

    public Long getNoPlateId() {
        return noPlateId;
    }

    public void setNoPlateId(Long noPlateId) {
        this.noPlateId = noPlateId;
    }

    public Integer getVehicleType() {
        return vehicleType;
    }

    public void setVehicleType(Integer vehicleType) {
        this.vehicleType = vehicleType;
    }

    public Date getEnterTime() {
        return enterTime;
    }

    public void setEnterTime(Date enterTime) {
        this.enterTime = enterTime;
    }

    public String getEnterMsg() {
        return enterMsg;
    }

    public void setEnterMsg(String enterMsg) {
        this.enterMsg = enterMsg;
    }

    public Long getChargeRuleId() {
        return chargeRuleId;
    }

    public void setChargeRuleId(Long chargeRuleId) {
        this.chargeRuleId = chargeRuleId;
    }

    public String getChargeRuleName() {
        return chargeRuleName;
    }

    public void setChargeRuleName(String chargeRuleName) {
        this.chargeRuleName = chargeRuleName;
    }

    public Long getEnterFreeTime() {
        return enterFreeTime;
    }

    public void setEnterFreeTime(Long enterFreeTime) {
        this.enterFreeTime = enterFreeTime;
    }

    public Long getDelayTime() {
        return delayTime;
    }

    public void setDelayTime(Long delayTime) {
        this.delayTime = delayTime;
    }

    public Integer getBillStatus() {
        return billStatus;
    }

    public void setBillStatus(Integer billStatus) {
        this.billStatus = billStatus;
    }

    public Integer getBillType() {
        return billType;
    }

    public void setBillType(Integer billType) {
        this.billType = billType;
    }

    public Date getOutTime() {
        return outTime;
    }

    public void setOutTime(Date outTime) {
        this.outTime = outTime;
    }

    public String getOutMsg() {
        return outMsg;
    }

    public void setOutMsg(String outMsg) {
        this.outMsg = outMsg;
    }

    public Long getParkTime() {
        return parkTime;
    }

    public void setParkTime(Long parkTime) {
        this.parkTime = parkTime;
    }

    public Long getSupposeCost() {
        return supposeCost;
    }

    public void setSupposeCost(Long supposeCost) {
        this.supposeCost = supposeCost;
    }

    public Long getPaidCost() {
        return paidCost;
    }

    public void setPaidCost(Long paidCost) {
        this.paidCost = paidCost;
    }

    public Long getDiscountCost() {
        return discountCost;
    }

    public void setDiscountCost(Long discountCost) {
        this.discountCost = discountCost;
    }

    public Long getTotalCost() {
        return totalCost;
    }

    public void setTotalCost(Long totalCost) {
        this.totalCost = totalCost;
    }

    public String getVehiclePicUri() {
        return vehiclePicUri;
    }

    public void setVehiclePicUri(String vehiclePicUri) {
        this.vehiclePicUri = vehiclePicUri;
    }

    public String getPlateNoPicUri() {
        return plateNoPicUri;
    }

    public void setPlateNoPicUri(String plateNoPicUri) {
        this.plateNoPicUri = plateNoPicUri;
    }

    public Integer getSubBillType() {
        return subBillType;
    }

    public void setSubBillType(Integer subBillType) {
        this.subBillType = subBillType;
    }

    public Date getSettleTime() {
        return settleTime;
    }

    public void setSettleTime(Date settleTime) {
        this.settleTime = settleTime;
    }

    public Integer getExceptionType() {
        return exceptionType;
    }

    public void setExceptionType(Integer exceptionType) {
        this.exceptionType = exceptionType;
    }

    public Date getExceptionTime() {
        return exceptionTime;
    }

    public void setExceptionTime(Date exceptionTime) {
        this.exceptionTime = exceptionTime;
    }

    public Long getExceptionParentId() {
        return exceptionParentId;
    }

    public void setExceptionParentId(Long exceptionParentId) {
        this.exceptionParentId = exceptionParentId;
    }
}
