package com.sunxung.factoring.entity.settlement;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sunxung.factoring.entity.BaseEntity;
import com.sunxung.factoring.entity.customerinformation.Customer;
import com.sunxung.factoring.entity.entprise.Enterprise;
import com.sunxung.factoring.entity.sys.Dictionary;
import com.sunxung.factoring.entity.sys.FileStorage;
import com.sunxung.factoring.entity.tradingPlatform.Platform;

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

/**
 * 结算单-历史信息表
 *
 * @author liutao
 * @date 2021.09.22
 */
@TableName("settlement_his_info")
public class SettlementHisInfo extends BaseEntity {
    /**
     * 结算单基础信息表ID
     */
    @TableField(value = "settlement_basic_info_id")
    private Long settlementBasicInfoId;
    /**
     * 结算单号
     */
    @TableField("settlement_number")
    private String settlementNumber;
    /**
     * 业务编号
     */
    @TableField("business_number")
    private String businessNumber;

    /**
     * 业务名称
     */
    @TableField("business_name")
    private String businessName;

    /**
     * 供应商Id
     */
    @TableField(value = "supplier_id")
    private Long supplierId;
    /**
     * 核心企业Id
     */
    @TableField(value = "enterprise_customer_info_id")
    private Long enterpriseCustomerInfoId;
    /**
     * 单位名称
     */
    @TableField(value = "trading_platform_id")
    private Long tradingPlatformId;
    /**
     * 结算日期
     */
    @TableField("settlement_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date settlementDate;
    /**
     * 结算金额
     */
    @TableField("settlement_amount")
    private BigDecimal settlementAmount;
    /**
     * 对账开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("settlement_start_date")
    private Date settlementStartDate;
    /**
     * 对账结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("settlement_end_date")
    private Date settlementEndDate;

    /**
     * 经办人（供应商）
     */
    @TableField("operator_supplier")
    private String operatorSupplier;
    /**
     * 经办人（核心企业）
     */
    @TableField("operator_enterprise")
    private String operatorEnterprise;
    /**
     * 补充说明
     */
    @TableField("additional_remarks")
    private String additionalRemarks;
    /**
     * 业务信息
     */
//    @TableField(exist = false)
//    private BusinessBasicInfo businessBasicInfo;
    /**
     * 结算单状态字典项
     **/
    @TableField(exist = false)
    private Dictionary acceptanceSheetDict;
    /**
     * 核心企业
     **/
    @TableField(exist = false)
    private Enterprise customer;
    /**
     * 供应商
     **/
    @TableField(exist = false)
    private Enterprise supplier;
    /**
     * 相关货物信息
     */
    @TableField(exist = false)
    private List<SettlementHisGoodsInfo> settlementGoodsInfos;

    /**
     * 回款计划
     */
    @TableField(exist = false)
    private List<SettlementHisRepaymentPlan> settlementRepaymentPlans;

    /**
     * 删除的附件Id
     */
    @TableField(exist = false)
    private List<Long> deleteFileIds;
    /**
     * taskId
     */
    @TableField(exist = false)
    private String taskId;

    /**
     * 平台
     */
    @TableField(exist = false)
    private Platform platform;

    /**
     * 普通附件
     */
    @TableField(exist = false)
    private List<FileStorage> files;

    /**
     * 网价附件
     */
    @TableField(exist = false)
    private List<FileStorage> netPriceFiles;

    /**
     * \
     * 补充说明附件
     */
    @TableField(exist = false)
    private List<FileStorage> additionalFiles;

    /**
     * \
     * 补充附件
     */
    @TableField(exist = false)
    private List<FileStorage> upstreamUnsignedFiles;


    public SettlementHisInfo() {
    }

//    public BusinessBasicInfo getBusinessBasicInfo() {
//        return businessBasicInfo;
//    }
//
//    public void setBusinessBasicInfo(BusinessBasicInfo businessBasicInfo) {
//        this.businessBasicInfo = businessBasicInfo;
//    }

    public Enterprise getCustomer() {
        return customer;
    }

    public void setCustomer(Enterprise customer) {
        this.customer = customer;
    }

    public Enterprise getSupplier() {
        return supplier;
    }

    public void setSupplier(Enterprise supplier) {
        this.supplier = supplier;
    }

    public Long getSettlementBasicInfoId() {
        return settlementBasicInfoId;
    }

    public void setSettlementBasicInfoId(Long settlementBasicInfoId) {
        this.settlementBasicInfoId = settlementBasicInfoId;
    }

    public String getSettlementNumber() {
        return settlementNumber;
    }

    public void setSettlementNumber(String settlementNumber) {
        this.settlementNumber = settlementNumber;
    }

    public String getBusinessNumber() {
        return businessNumber;
    }

    public void setBusinessNumber(String businessNumber) {
        this.businessNumber = businessNumber;
    }

    public Long getSupplierId() {
        return supplierId;
    }

    public void setSupplierId(Long supplierId) {
        this.supplierId = supplierId;
    }

    public Long getEnterpriseCustomerInfoId() {
        return enterpriseCustomerInfoId;
    }

    public void setEnterpriseCustomerInfoId(Long enterpriseCustomerInfoId) {
        this.enterpriseCustomerInfoId = enterpriseCustomerInfoId;
    }

    public Long getTradingPlatformId() {
        return tradingPlatformId;
    }

    public void setTradingPlatformId(Long tradingPlatformId) {
        this.tradingPlatformId = tradingPlatformId;
    }

    public Date getSettlementDate() {
        return settlementDate;
    }

    public void setSettlementDate(Date settlementDate) {
        this.settlementDate = settlementDate;
    }

    public BigDecimal getSettlementAmount() {
        return settlementAmount;
    }

    public void setSettlementAmount(BigDecimal settlementAmount) {
        this.settlementAmount = settlementAmount;
    }

    public Date getSettlementStartDate() {
        return settlementStartDate;
    }

    public void setSettlementStartDate(Date settlementStartDate) {
        this.settlementStartDate = settlementStartDate;
    }

    public Date getSettlementEndDate() {
        return settlementEndDate;
    }

    public void setSettlementEndDate(Date settlementEndDate) {
        this.settlementEndDate = settlementEndDate;
    }

    public String getOperatorSupplier() {
        return operatorSupplier;
    }

    public void setOperatorSupplier(String operatorSupplier) {
        this.operatorSupplier = operatorSupplier;
    }

    public String getOperatorEnterprise() {
        return operatorEnterprise;
    }

    public void setOperatorEnterprise(String operatorEnterprise) {
        this.operatorEnterprise = operatorEnterprise;
    }

    public String getAdditionalRemarks() {
        return additionalRemarks;
    }

    public void setAdditionalRemarks(String additionalRemarks) {
        this.additionalRemarks = additionalRemarks;
    }

    public Dictionary getAcceptanceSheetDict() {
        return acceptanceSheetDict;
    }

    public void setAcceptanceSheetDict(Dictionary acceptanceSheetDict) {
        this.acceptanceSheetDict = acceptanceSheetDict;
    }

    public List<SettlementHisGoodsInfo> getSettlementGoodsInfos() {
        return settlementGoodsInfos;
    }

    public void setSettlementGoodsInfos(List<SettlementHisGoodsInfo> settlementGoodsInfos) {
        this.settlementGoodsInfos = settlementGoodsInfos;
    }

    public List<SettlementHisRepaymentPlan> getSettlementRepaymentPlans() {
        return settlementRepaymentPlans;
    }

    public void setSettlementRepaymentPlans(List<SettlementHisRepaymentPlan> settlementRepaymentPlans) {
        this.settlementRepaymentPlans = settlementRepaymentPlans;
    }

    public List<Long> getDeleteFileIds() {
        return deleteFileIds;
    }

    public void setDeleteFileIds(List<Long> deleteFileIds) {
        this.deleteFileIds = deleteFileIds;
    }

    public String getTaskId() {
        return taskId;
    }

    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }

    public Platform getPlatform() {
        return platform;
    }

    public void setPlatform(Platform platform) {
        this.platform = platform;
    }

    public List<FileStorage> getFiles() {
        return files;
    }

    public void setFiles(List<FileStorage> files) {
        this.files = files;
    }

    public List<FileStorage> getNetPriceFiles() {
        return netPriceFiles;
    }

    public void setNetPriceFiles(List<FileStorage> netPriceFiles) {
        this.netPriceFiles = netPriceFiles;
    }

    public List<FileStorage> getAdditionalFiles() {
        return additionalFiles;
    }

    public void setAdditionalFiles(List<FileStorage> additionalFiles) {
        this.additionalFiles = additionalFiles;
    }

    public List<FileStorage> getUpstreamUnsignedFiles() {
        return upstreamUnsignedFiles;
    }

    public void setUpstreamUnsignedFiles(List<FileStorage> upstreamUnsignedFiles) {
        this.upstreamUnsignedFiles = upstreamUnsignedFiles;
    }

    public String getBusinessName() {
        return businessName;
    }

    public void setBusinessName(String businessName) {
        this.businessName = businessName;
    }
}
