package com.fastbee.rechargecard.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.fastbee.common.annotation.Excel;
import com.fastbee.common.core.domain.BaseEntity;

/**
 * 用户充值卡账单明细记录对象 user_consumption_details
 *
 * @author kerwincui
 * @date 2024-12-18
 */
@ApiModel(value = "UserConsumptionDetails",description = "用户充值卡账单明细记录 user_consumption_details")
@Data
@EqualsAndHashCode(callSuper = true)
public class UserConsumptionDetails extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long id;

    /** 关联用户 */
    @Excel(name = "关联用户")
    @ApiModelProperty("关联用户")
    private Long userId;

    /** 设备编码 */
    @Excel(name = "设备编码")
    @ApiModelProperty("设备编码")
    private String deviceNumber;

    /** 购水卡卡号 */
    @Excel(name = "购水卡卡号")
    @ApiModelProperty("购水卡卡号")
    private String cardNumber;

    /** 所属项目id */
    @Excel(name = "所属项目id")
    @ApiModelProperty("所属项目id")
    private Long projectId;

    /** 所属机构 */
    @Excel(name = "所属机构")
    @ApiModelProperty("所属机构")
    private Long deptId;

    /** 0充值，1刷卡(灌溉消费:刷卡开泵到刷卡关泵期间产生的消费) */
    @Excel(name = "0充值，1刷卡(灌溉消费:刷卡开泵到刷卡关泵期间产生的消费)")
    @ApiModelProperty("0充值，1刷卡(灌溉消费:刷卡开泵到刷卡关泵期间产生的消费)")
    private Integer billingType;

    /** 开泵时长 */
    @Excel(name = "开泵时长")
    @ApiModelProperty("开泵时长")
    private BigDecimal pumpTime;

    /** 单价 */
    @Excel(name = "单价")
    @ApiModelProperty("单价")
    private BigDecimal unitPrice;

    /** 总价（数量 * 单价） */
    @Excel(name = "总价", readConverterExp = "数=量,*=,单=价")
    @ApiModelProperty("总价")
    private BigDecimal totalPrice;

    /** 折扣金额 */
    @Excel(name = "折扣金额")
    @ApiModelProperty("折扣金额")
    private BigDecimal discount;

    /** 税金 */
    @Excel(name = "税金")
    @ApiModelProperty("税金")
    private BigDecimal taxAmount;

    /** 应付金额（总价-折扣金额-税金） */
    @Excel(name = "应付金额", readConverterExp = "总=价-折扣金额-税金")
    @ApiModelProperty("应付金额")
    private BigDecimal amountDue;

    /** 账单所属的周期单位，0：小时、1：天、2：周、3：月、4：季度、5：年 */
    @Excel(name = "账单所属的周期单位，0：小时、1：天、2：周、3：月、4：季度、5：年")
    @ApiModelProperty("账单所属的周期单位，0：小时、1：天、2：周、3：月、4：季度、5：年")
    private Integer billingPeriodUnit;

    /** 账单周期时长 */
    @Excel(name = "账单周期时长")
    @ApiModelProperty("账单周期时长")
    private BigDecimal billingPeriodDuration;

    /** 账单生成的日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单生成的日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("账单生成的日期")
    private Date billingDate;

    /** 开泵时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开泵时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("开泵时间")
    private Date startTime;

    /** 关泵时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "关泵时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("关泵时间")
    private Date endTime;

    /** 表明账单是否已支付，0：“未支付”、1：“部分支付”、2：“已支付” */
    @Excel(name = "表明账单是否已支付，0：“未支付”、1：“部分支付”、2：“已支付”")
    @ApiModelProperty("表明账单是否已支付，0：“未支付”、1：“部分支付”、2：“已支付”")
    private Integer paymentStatus;

    /** 用户支付账单的方式1微信，2支付宝，3银联 */
    @Excel(name = "用户支付账单的方式1微信，2支付宝，3银联")
    @ApiModelProperty("用户支付账单的方式1微信，2支付宝，3银联")
    private Integer paymentMethod;

    /**  账单支付的时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = " 账单支付的时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(" 账单支付的时间")
    private Date paymentTime;

    /** 账单的当前状态，0：已支付、1：已取消 */
    @Excel(name = "账单的当前状态，0：已支付、1：已取消")
    @ApiModelProperty("账单的当前状态，0：已支付、1：已取消")
    private Integer status;

    /** 关于账单的额外信息或备注 */
    @Excel(name = "关于账单的额外信息或备注")
    @ApiModelProperty("关于账单的额外信息或备注")
    private String remark;

}
