package com.njzscloud.supervisory.money.pojo.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.supervisory.money.contant.BillStatus;
import com.njzscloud.supervisory.money.contant.InvoiceStatus;
import com.njzscloud.supervisory.order.contant.OrderCategory;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 对账单
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("money_bill")
public class MoneyBillEntity {

    /**
     * Id
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 站点 Id
     */
    private Long stationId;

    /**
     * 归属用户 Id
     */
    private Long userId;

    /**
     * 开票状态; 字典代码：invoice_status
     */
    private InvoiceStatus invoiceStatus;

    /**
     * 账单状态; 字典代码：bill_status
     */
    private BillStatus billStatus;

    /**
     * 账单开始时间
     */
    private LocalDate startTime;

    /**
     * 账单结束时间
     */
    private LocalDate endTime;

    /**
     * 账期
     */
    private LocalDate billPeriod;

    /**
     * 产品 Id
     */
    private Long goodsId;

    /**
     * 订单数
     */
    private Integer orderCount;

    /**
     * 总质量; 单位：千克
     */
    private Integer totalWeight;

    private Integer carCount;

    /**
     * 优惠金额
     */
    private BigDecimal discountMoney;

    /**
     * 账单金额
     */
    private BigDecimal totalMoney;

    /**
     * 创建人 Id; sys_user.id
     */
    @TableField(fill = FieldFill.INSERT)
    private Long creatorId;

    /**
     * 修改人 Id; sys_user.id
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long modifierId;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime modifyTime;

    /**
     * 是否删除; 0-->未删除、1-->已删除
     */
    @TableLogic
    private Boolean deleted;

    /**
     * 用户昵称（扩展字段，不存储到数据库）
     */
    @TableField(exist = false)
    private String nickname;

    /**
     * 站点名称（扩展字段，不存储到数据库）
     */
    @TableField(exist = false)
    private String companyName;

    /**
     * 产品名称
     */
    private String goodsName;

    /**
     * 订单类型; 字典代码：order_category
     */
    private String orderCategory;

}
