package com.sunxung.factoring.entity.acceptance;


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sunxung.factoring.entity.customerinformation.Customer;
import com.sunxung.factoring.entity.entprise.Enterprise;
import com.sunxung.factoring.entity.project.Project;
import com.sunxung.factoring.entity.project.ProjectInformation;
import com.sunxung.factoring.entity.settlement.SettlementGoodsInfo;
import com.sunxung.factoring.entity.sys.Dictionary;
import com.sunxung.factoring.entity.sys.FileStorage;
import com.sunxung.factoring.entity.sys.FileStorageDO;
import com.sunxung.factoring.entity.tradingPlatform.Platform;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 验收单基本信息
 *
 * @author liutao
 * @date 2021.9.10
 */
@TableName("c_acceptance_basic_info")
public class AcceptanceBasicInfo extends Project {

    /**
     * 验收单号
     */
    @TableField("acceptance_number")
    private String acceptanceNumber;
    /**
     * 供应商Id
     */
    @NotNull(message = "请选择供应商")
    @TableField("c_supplier_info_id")
    private Long cSupplierInfoId;
    /**
     * 核心企业Id
     */
    @NotNull(message = "请选择核心企业")
    @TableField("c_project_core_enterprise_id")
    private Long cProjectCoreEnterpriseId;
    /**
     * 贸易平台Id
     */
    @NotNull(message = "请选择贸易平台")
    @TableField("trading_platform_id")
    private Long tradingPlatformId;
    /**
     * 预计结算日期
     */
    @NotNull(message = "请输入预估结算日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField("expected_settlement_date")
    private Date expectedSettlementDate;
    /**
     * 验收经办人（供应商）
     */
    @TableField("check_operator_supplier")
    private String checkOperatorSupplier;
    /**
     * 验收经办人（核心企业）
     */
    @TableField("check_operator_enterprise")
    private String checkOperatorEnterprise;
    /**
     * 状态:
     */
    @TableField("acceptance_status")
    private String acceptanceStatus;
    /**
     * 是否已结算，0:未结算 1:已结算  （注：结算未审核完成统一视为未结算）
     */
    @TableField("is_settlement")
    private Boolean settlement;
    /**
     * 是否做底层，0:未做底层 1:已做底层
     */
    @TableField("is_receivables")
    private Boolean receivables;
    /**
     * 补充说明信息
     */
    @TableField("additional_remarks")
    private String additionalRemarks;

    @TableField("specification")
    private String  specification;
//    /**
//     * 业务名称
//     */
//    @TableField("business_name")
//    private String businessName;
    /**
     * 核心企业经办人是否变更 0 否 1 是
     */
//    @TableField("change_person")
//    private Integer changePerson;
    /**
     * 是否签署确认 0否 1是
     */
    @TableField("sign_confirm")
    private Integer signConfirm;


    /**
     * 申请审核-融资，0:不申请 1:申请
     */
    @TableField("is_approval")
    private Integer approval;

    /**
     * 验收单签署人Id
     */
    @TableField("signer")
    private Long signer;
    /**
     * 1是 0否  是否为刚小二
     */
    @TableField("steel_waiter")
    private Integer steelWaiter;

    /**
     * 业务审核状态（0/null未通过   1审核已通过）
     */
    @TableField("business_approval_status")
    private Integer businessApprovalStatus;

    /**
     * 钢小二销售单号
     */
    @TableField(exist = false)
    private List<String> sellBillNumber;
    /**
     * 业务相关货物信息
     */
    @TableField(exist = false)
    private List<AcceptanceGoodsInfo> acceptanceGoodInfos;
    /**
     * 业务结算单货物信息
     */
    @TableField(exist = false)
    private List<SettlementGoodsInfo> settlementGoodInfos;
    /**
     * 生成的上游验收单文件
     */
    @TableField(exist = false)
    private List<FileStorageDO> acceptanceUpstreamFiles;
    /**
     * 验收单附件 C
     */
    @TableField(exist = false)
    private List<FileStorageDO> fileStorageDOList;
    /**
     * 补充说明附件
     */
    @TableField(exist = false)
    private List<FileStorageDO> supplementFiles;

    /**
     *  销售合同
     */
    @TableField(exist = false)
    private List<FileStorage>  saleContractFiles;

    /**
     *  采购合同
     */
    @TableField(exist = false)
    private List<FileStorage> procureContractFile;


    /**
     * 签署的
     */
    @TableField(exist = false)
    private List<FileStorage> signConfirmFiles;
    /**
     * 补充说明
     */
    @TableField(exist = false)
    private String supplement;
    /**
     * taskId
     */
    @TableField(exist = false)
    private String taskId;

    /**
     * 核心企业名称
     **/
    @TableField(exist = false)
    private Enterprise coreEnterprise;

    /**
     * 主企业（供应商）名称
     **/
    @TableField(exist = false)
    private Enterprise mainEnterprise;

    /**
     * 贸易平台名字
     */
    @TableField(exist = false)
    private String platformName;
    /**
     * 贸易平台
     */
    @TableField(exist = false)
    private Platform platform;

    /**
     * 项目名称
     */
    @TableField(exist = false)
    private String projectName;

    /**
     * 删除的附件
     */
    @TableField(exist = false)
    private List<Long> deleteFileIds;
    /**
     * 删除的说明附件
     */
    @TableField(exist = false)
    private List<Long> deleteSupplementIds;

    @TableField(exist = false)
    private List<AcceptancePersonInfo> acceptancePersonInfos;

    public String getAcceptanceNumber() {
        return acceptanceNumber;
    }

    public void setAcceptanceNumber(String acceptanceNumber) {
        this.acceptanceNumber = acceptanceNumber;
    }

    public Long getcSupplierInfoId() {
        return cSupplierInfoId;
    }

    public void setcSupplierInfoId(Long cSupplierInfoId) {
        this.cSupplierInfoId = cSupplierInfoId;
    }

    public Long getcProjectCoreEnterpriseId() {
        return cProjectCoreEnterpriseId;
    }

    public void setcProjectCoreEnterpriseId(Long cProjectCoreEnterpriseId) {
        this.cProjectCoreEnterpriseId = cProjectCoreEnterpriseId;
    }

    public Long getTradingPlatformId() {
        return tradingPlatformId;
    }

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

    public Date getExpectedSettlementDate() {
        return expectedSettlementDate;
    }

    public void setExpectedSettlementDate(Date expectedSettlementDate) {
        this.expectedSettlementDate = expectedSettlementDate;
    }

    public String getCheckOperatorSupplier() {
        return checkOperatorSupplier;
    }

    public void setCheckOperatorSupplier(String checkOperatorSupplier) {
        this.checkOperatorSupplier = checkOperatorSupplier;
    }

    public String getCheckOperatorEnterprise() {
        return checkOperatorEnterprise;
    }

    public void setCheckOperatorEnterprise(String checkOperatorEnterprise) {
        this.checkOperatorEnterprise = checkOperatorEnterprise;
    }

    public String getAcceptanceStatus() {
        return acceptanceStatus;
    }

    public void setAcceptanceStatus(String acceptanceStatus) {
        this.acceptanceStatus = acceptanceStatus;
    }

    public Boolean getSettlement() {
        return settlement;
    }

    public void setSettlement(Boolean settlement) {
        this.settlement = settlement;
    }

    public Boolean getReceivables() {
        return receivables;
    }

    public void setReceivables(Boolean receivables) {
        this.receivables = receivables;
    }

    public String getAdditionalRemarks() {
        return additionalRemarks;
    }

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

//    @Override
//    public String getBusinessName() {
//        return businessName;
//    }
//
//    @Override
//    public void setBusinessName(String businessName) {
//        this.businessName = businessName;
//    }

    public Integer getSignConfirm() {
        return signConfirm;
    }

    public void setSignConfirm(Integer signConfirm) {
        this.signConfirm = signConfirm;
    }

    public Long getSigner() {
        return signer;
    }

    public void setSigner(Long signer) {
        this.signer = signer;
    }

    public String getPlatformName() {
        return platformName;
    }

    public void setPlatformName(String platformName) {
        this.platformName = platformName;
    }

    public Integer getSteelWaiter() {
        return steelWaiter;
    }

    public void setSteelWaiter(Integer steelWaiter) {
        this.steelWaiter = steelWaiter;
    }

    public List<String> getSellBillNumber() {
        return sellBillNumber;
    }

    public void setSellBillNumber(List<String> sellBillNumber) {
        this.sellBillNumber = sellBillNumber;
    }

    public List<AcceptanceGoodsInfo> getAcceptanceGoodInfos() {
        return acceptanceGoodInfos;
    }

    public void setAcceptanceGoodInfos(
        List<AcceptanceGoodsInfo> acceptanceGoodInfos) {
        this.acceptanceGoodInfos = acceptanceGoodInfos;
    }

    public List<SettlementGoodsInfo> getSettlementGoodInfos() {
        return settlementGoodInfos;
    }

    public void setSettlementGoodInfos(
        List<SettlementGoodsInfo> settlementGoodInfos) {
        this.settlementGoodInfos = settlementGoodInfos;
    }

    public List<FileStorageDO> getAcceptanceUpstreamFiles() {
        return acceptanceUpstreamFiles;
    }

    public void setAcceptanceUpstreamFiles(
        List<FileStorageDO> acceptanceUpstreamFiles) {
        this.acceptanceUpstreamFiles = acceptanceUpstreamFiles;
    }

    public List<FileStorageDO> getFileStorageDOList() {
        return fileStorageDOList;
    }

    public void setFileStorageDOList(
        List<FileStorageDO> fileStorageDOList) {
        this.fileStorageDOList = fileStorageDOList;
    }

    public List<FileStorageDO> getSupplementFiles() {
        return supplementFiles;
    }

    public void setSupplementFiles(
        List<FileStorageDO> supplementFiles) {
        this.supplementFiles = supplementFiles;
    }

    public String getSupplement() {
        return supplement;
    }

    public void setSupplement(String supplement) {
        this.supplement = supplement;
    }

    public String getTaskId() {
        return taskId;
    }

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

    public Enterprise getCoreEnterprise() {
        return coreEnterprise;
    }

    public void setCoreEnterprise(Enterprise coreEnterprise) {
        this.coreEnterprise = coreEnterprise;
    }

    public Enterprise getMainEnterprise() {
        return mainEnterprise;
    }

    public void setMainEnterprise(Enterprise mainEnterprise) {
        this.mainEnterprise = mainEnterprise;
    }

    public Platform getPlatform() {
        return platform;
    }

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

    @Override
    public String getProjectName() {
        return projectName;
    }

    @Override
    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

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

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

    public List<Long> getDeleteSupplementIds() {
        return deleteSupplementIds;
    }

    public void setDeleteSupplementIds(List<Long> deleteSupplementIds) {
        this.deleteSupplementIds = deleteSupplementIds;
    }

    public List<AcceptancePersonInfo> getAcceptancePersonInfos() {
        return acceptancePersonInfos;
    }

    public void setAcceptancePersonInfos(
        List<AcceptancePersonInfo> acceptancePersonInfos) {
        this.acceptancePersonInfos = acceptancePersonInfos;
    }

    public String getSpecification() {
        return specification;
    }

    public void setSpecification(String specification) {
        this.specification = specification;
    }

    public List<FileStorage> getSignConfirmFiles() {
        return signConfirmFiles;
    }

    public void setSignConfirmFiles(
        List<FileStorage> signConfirmFiles) {
        this.signConfirmFiles = signConfirmFiles;
    }

    public List<FileStorage> getSaleContractFiles() {
        return saleContractFiles;
    }

    public void setSaleContractFiles(
        List<FileStorage> saleContractFiles) {
        this.saleContractFiles = saleContractFiles;
    }

    public List<FileStorage> getProcureContractFile() {
        return procureContractFile;
    }

    public void setProcureContractFile(
        List<FileStorage> procureContractFile) {
        this.procureContractFile = procureContractFile;
    }

    public Integer getApproval() {
        return approval;
    }

    public void setApproval(Integer approval) {
        this.approval = approval;
    }

    public Integer getBusinessApprovalStatus() {
        return businessApprovalStatus;
    }

    public void setBusinessApprovalStatus(Integer businessApprovalStatus) {
        this.businessApprovalStatus = businessApprovalStatus;
    }
}
