package com.usky.vpp.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * vpp_settlement_bill
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("vpp_settlement_bill")
public class VppSettlementBill implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    @TableField("bill_no")
    private String billNo;
    @TableField("customer_id")
    private Long customerId;

    @TableField(exist = false)
    private String customerName;

    @TableField("site_id")
    private Long siteId;

    @TableField(exist = false)
    private String siteName;

    @TableField("settle_year")
    private String settleYear;
    @TableField("settle_month")
    private Integer settleMonth;
    @TableField("total_energy_kwh")
    private BigDecimal totalEnergyKwh;
    @TableField(exist = false)
    private BigDecimal contractPrice;

    @TableField("total_amount")
    private BigDecimal totalAmount;

    /**
     * 已付金额，默认0
     */
    @TableField("paid_amount")
    private BigDecimal paidAmount;
    /**
     * 0未缴 1部分 2已缴 3逾期
     */
    @TableField("payment_status")
    private Integer paymentStatus;
    @TableField("due_date")
    private LocalDate dueDate;
    @TableField("bill_file_url")
    private String billFileUrl;
    @TableField("generated_at")
    private LocalDateTime generatedAt;
    @TableField("tenant_id")
    private Integer tenantId;
    @TableField("create_time")
    private LocalDateTime createTime;
    @TableField("update_time")
    private LocalDateTime updateTime;
    @TableField("created_by")
    private String createdBy;
    @TableField("updated_by")
    private String updatedBy;
    @TableField("delete_flag")
    private Integer deleteFlag;
    @TableField("deleted_at")
    private LocalDateTime deletedAt;
}
