package cn.ezhizao.project.business.collection.domain;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableName;
import cn.ezhizao.framework.web.domain.BaseEntity;
import lombok.Data;
import io.swagger.annotations.ApiModelProperty;
import cn.ezhizao.framework.aspectj.lang.annotation.Excel;

/**
 * 收款对象 biz_collection
 *
 * @author ruoyi
 * @date 2023-12-29
 */
@Data
@TableName(value = "biz_collection")
public class BizCollection extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 收款流水号 */
    @Excel(name = "收款流水号")
    @ApiModelProperty(value = "收款流水号")
    private String flowNo;

    /** 服务公司id */
    @ApiModelProperty(value = "收款流水号")
    private Long subsidiaryId;

    /** 服务公司 */
    @Excel(name = "服务公司")
    @ApiModelProperty(value = "服务公司")
    private String subsidiary;

    /** 服务公司账户 */
    @Excel(name = "服务公司账户")
    @ApiModelProperty(value = "服务公司账户")
    private String subsidiaryName;

    @ApiModelProperty(value = "从表biz_collection")
    @TableField(exist = false)
    private List<BizCollectionDetail> details = new ArrayList<>();

    /** 服务公司账号 */
    @Excel(name = "服务公司账号")
    @ApiModelProperty(value = "服务公司账号")
    private String subsidiaryBankAccount;

    /** 服务公司开户行 */
    @Excel(name = "服务公司开户行")
    @ApiModelProperty(value = "服务公司开户行")
    private String subsidiaryBankName;

    /** 客户 Id */
    @ApiModelProperty(value = "服务公司开户行")
    private Long companyId;

    /** 合同外键 */
    @ApiModelProperty(value = "服务公司开户行")
    private Long contractId;

    /** 客户 名称 */
    @Excel(name = "客户 名称")
    @ApiModelProperty(value = "客户 名称")
    private String companyName;

    /** 应收金额 */
    @Excel(name = "应收金额")
    @ApiModelProperty(value = "应收金额")
    private BigDecimal amount;

    /** 收款金额 */
    @Excel(name = "收款金额")
    @ApiModelProperty(value = "收款金额")
    private BigDecimal arriveAmount;

    /** 到账日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "到账日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "到账日期")
    private Date arriveDate;

    /** 到账时间 */
    @Excel(name = "到账时间")
    @ApiModelProperty(value = "到账时间")
    private String arriveTime;

    /** 审核状态 */
    @Excel(name = "审核状态")
    @ApiModelProperty(value = "审核状态")
    private Integer status;

    /** 申请人id */
    @ApiModelProperty(value = "审核状态")
    private Long applierId;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "审核时间")
    private Date verifyDate;

    /** 审核描述 */
    @Excel(name = "审核描述")
    @ApiModelProperty(value = "审核描述")
    private String verifyComment;

    /** 到款状态 */
    @Excel(name = "到款状态")
    @ApiModelProperty(value = "到款状态")
    private Integer arriveStatus;

    /** 付款名称 */
    @Excel(name = "付款名称")
    @ApiModelProperty(value = "付款名称")
    private String applyName;

    /** 付款账号 */
    @Excel(name = "付款账号")
    @ApiModelProperty(value = "付款账号")
    private String appyAccount;

    /** 新签/续签 */
    @Excel(name = "新签/续签")
    @ApiModelProperty(value = "新签/续签")
    private Integer isNew;

    /** 项目/非项目 */
    @Excel(name = "项目/非项目")
    @ApiModelProperty(value = "项目/非项目")
    private Integer isProject;

    /** 项目编号 */
    @Excel(name = "项目编号")
    @ApiModelProperty(value = "项目编号")
    private String projectNo;

    /** 项目名称 */
    @Excel(name = "项目名称")
    @ApiModelProperty(value = "项目名称")
    private String projectName;

    /** 项目主体名称 */
    @Excel(name = "项目主体名称")
    @ApiModelProperty(value = "项目主体名称")
    private String projectMainName;

    /** 实际付款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际付款时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "实际付款时间")
    private Date actuallyDate;

    /** 主程序账套外键 */
    @ApiModelProperty(value = "实际付款时间")
    private Long mainAccountSetsId;

    private Long tenantId;

}
