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

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 org.nest.springwrap.core.tenant.mp.TenantEntity;

import java.util.Date;

/**
 * @ClassName PmgBatParkBill
 * @Description 停车场账单表
 * @Author 张逸飞
 * @Date 2022年11月9日 17:38:13
 */
@Data
@TableName("pmg_bat_park_bill")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "停车场账单表", description = "停车场账单表")
public class PmgBatParkBill extends TenantEntity {


    private Date createTime;

    /**
     * 微信openid or 支付宝账号
     */
    @ApiModelProperty(value = "微信openid or 支付宝账号")
    private String payUserId;
    /**
     * 停车库唯一标志
     */
    @ApiModelProperty(value = "停车库唯一标志")
    private Long parkingId;
    /**
     * 停车库名称
     */
    @ApiModelProperty(value = "停车库名称")
    private String parkingName;
    /**
     * 车牌
     */
    @ApiModelProperty(value = "车牌")
    private String plateNo;
    /**
     * 车辆id，无牌车用无牌车id
     */
    @ApiModelProperty(value = "车辆id，无牌车用无牌车id")
    private Long noPlateId;
    /**
     * 开票状态 | 0 开票中 1 开票成功 2 开票失败 3 红冲 4 被红冲 9 未开票
     */
    @ApiModelProperty(value = "开票状态 | 0 开票中 1 开票成功 2 开票失败 3 红冲 4 被红冲 9 未开票")
    private Integer invoicingStatus;
    /**
     * 车辆类型:0-其他，1-小型车，2-大型车，3-摩托车 ,4新能源
     */
    @ApiModelProperty(value = "车辆类型:0-其他，1-小型车，2-大型车，3-摩托车 ,4新能源")
    private Integer vehicleType;
    /**
     * 入场时间
     */
    @ApiModelProperty(value = "入场时间")
    private Date enterTime;
    /**
     * 放行的理由
     */
    @ApiModelProperty(value = "放行的理由")
    private String enterMsg;
    /**
     * 收费规则唯一标志，正常收费情况下有此信息
     */
    @ApiModelProperty(value = "收费规则唯一标志，正常收费情况下有此信息")
    private Long chargeRuleId;
    /**
     * 收费规则名称
     */
    @ApiModelProperty(value = "收费规则名称")
    private String chargeRuleName;
    /**
     * 入场免费时间 单位 分钟
     */
    @ApiModelProperty(value = "入场免费时间 单位 分钟")
    private Long enterFreeTime;
    /**
     * 缴费后允许延时出场时间 单位：分钟
     */
    @ApiModelProperty(value = "缴费后允许延时出场时间 单位：分钟")
    private Long delayTime;
    /**
     * 账单状态：0-未结清状态，1-已结算（已出停车场）  ----每一次变动添加一条记录
     */
    @ApiModelProperty(value = "账单状态：0-未结清状态，1-已结算（已出停车场）  ----每一次变动添加一条记录")
    private Integer billStatus;

    /**
     * 账单类型：1-临停 2-月卡 3-无牌车，4-特殊车，5-节假日，6-群组,7-异常,10-团队车,11-车组,12-AB车位,13-团队车位,20-错时车
     */
    @ApiModelProperty(value = "账单类型：1-临停 2-月卡 3-无牌车，4-特殊车，5-节假日，6-群组,7-异常，8--------放行规则提供")
    private Integer billType;
    /**
     * 实时账单类型：1-月卡车场内失效 2-固定车场内失效
     */
    @ApiModelProperty(value = "实时账单类型：1-月卡车场内失效 2-固定车场内失效")
    @TableField(exist = false)
    private Integer realTimeBillType = 0;
    /**
     * 缴费时间(统计停车时长)
     */
    @ApiModelProperty(value = "缴费时间(统计停车时长)")
    private Date outTime;
    /**
     * 放行的理由
     */
    @ApiModelProperty(value = "放行的理由")
    private String outMsg;
    /**
     * 停车时长 单位分钟
     */
    @ApiModelProperty(value = "停车时长 单位分钟")
    private Long parkTime;
    /**
     * 应收金额（最大长度8） 单位：分
     */
    @ApiModelProperty(value = "应收金额（最大长度8） 单位：分")
    private Long supposeCost;
    /**
     * 已支付金额（最大长度8） 单位：分
     */
    @ApiModelProperty(value = "已支付金额（最大长度8） 单位：分")
    private Long paidCost;
    /**
     * 优惠减免金额（最大长度8） 单位：分
     */
    @ApiModelProperty(value = "优惠减免金额（最大长度8） 单位：分")
    private Long discountCost;
    /**
     * 账单总金额（最大长度8） 单位：分
     */
    @ApiModelProperty(value = "账单总金额（最大长度8） 单位：分")
    private Long totalCost;
    /**
     * 入场车辆图片uri
     */
    @ApiModelProperty(value = "入场车辆图片uri")
    private String vehiclePicUri;
    /**
     * 入场车牌图片uri
     */
    @ApiModelProperty(value = "入场车牌图片uri")
    private String plateNoPicUri;

    @TableField(exist = false)
    @ApiModelProperty(value = "支付ID")
    private String paymentId;

    /**
     * 目前只有团队车使用该字段，其他场景时该字段均为null
     */
    @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;

    /**
     * 车牌颜色
     */
    @ApiModelProperty(value = "车牌颜色 [black#黑色,blue#蓝色,golden#金色,orange#橙色,red#红色,yellow#黄色,white#白色,unknown#未知,other#其他颜\n" +
            "色,newEnergyYellowGreen#新能源黄绿色,civilAviationBlack#民航黑色,civilAviationGreen#民航绿色,green#绿色,mixedColor#花底,newEnergyGreen#新能源绿色,brown#棕\n" +
            "色]")
    private String plateColor;

    /**
     * 被访问者电话
     */
    @ApiModelProperty(value = "被访问者电话")
    private String intervieweePhone;



    ////////////////////////////////////////////////  modify by qianjiang 支持占位费需求

   /* *//**
     * 时间段内车辆在充电车位闲置占用所需支付的费用
     *//*
    @ApiModelProperty(value = "充电车位占用费用, 人民币单位：分")
    private Long placeIdleCost;

    *//**
     * 时间段内车辆在充电车位上停放的总时长，根据多次入、离车位的时间计算所得
     *//*
    @ApiModelProperty(value = "充电车位占用总时长, 时间单位：分钟")
    private Long placeParkingTime;

    *//**
     * 时间段内车辆在充电车位上未充电的总时长，根据多次入、离车位的时间计算所得
     *//*
    @ApiModelProperty(value = "充电车位占用收费总时长, 时间单位：分钟")
    private Long placeIdleTime;

    *//**
     * 时间段内车辆在充电车位上处于充电状态的总时长，根据多次充电记录的时间计算所得
     *//*
    @ApiModelProperty(value = "充电车位充电时长, 时间单位：分钟")
    private Long placeChargeTime;
    @ApiModelProperty(value = "应收占位费金额")
    private long supposePlaceIdleCost;*/
}
