package com.sunxung.factoring.entity.creditresolution;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableId;
import com.sunxung.factoring.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.sunxung.factoring.entity.entprise.Enterprise;
import com.sunxung.factoring.entity.project.Project;
import com.sunxung.factoring.entity.project.ProjectInformation;

/**
 * <p>
 * 授信决议
 * </p>
 *
 * @author liutao
 * @since 2023-12-21
 */
@TableName("credit_resolution")
public class CreditResolution extends Project {

    private static final long serialVersionUID = 1L;

    /**
     * 项目信息id
     */
    @TableField("c_project_information_id")
    private Long cProjectInformationId;

    /**
     * 授信类型
     */
    @TableField("credit_type")
    private String creditType;

    /**
     * 合作业务版块:国内保理
     */
    @TableField("domestic_factoring")
    private String domesticFactoring;

    /**
     *  国内-实施保理产品:
     */
    @TableField("implementing_factoring_products")
    private String implementingFactoringProducts;

    /**
     *  国内-实施保理产品:
     */
    @TableField("implementing_factoring_type")
    private String implementingFactoringType;

    /**
     * 授信金额
     */
    @TableField("proposed_credit_line")
    private BigDecimal proposedCreditLine;

    /**
     * 授信金额币种
     */
    @TableField("currency")
    private String currency;

    /**
     * 授信生效日
     */
    @TableField("credit_start_date")
    private Date creditStartDate;

    /**
     * 授信期限
     */
    @TableField("proposed_credit_term")
    private Integer proposedCreditTerm;

    /**
     * 授信到期日
     */
    @TableField("credit_end_date")
    private Date creditEndDate;

    /**
     * 融资比例（占用）低点
     */
    @TableField("financing_ratio_low")
    private Float financingRatioLow;

    /**
     * 融资比例（占用）高点
     */
    @TableField("financing_ratio_high")
    private Float financingRatioHigh;

    /**
     * 预期IRR（占用）
     */
    @TableField("plan_irr")
    private Float planIrr;

    /**
     * 融资比例（不占用）低点
     */
    @TableField("proposed_financing_ratio_two_low")
    private Float proposedFinancingRatioTwoLow;

    /**
     * 融资比例（不占用）高点
     */
    @TableField("proposed_financing_ratio_two_high")
    private Float proposedFinancingRatioTwoHigh;

    /**
     * 预期IRR（不占用）
     */
    @TableField("plan_irr_two")
    private Float planIrrTwo;

    /**
     * 融资利率低点
     */
    @TableField("financing_rate_low")
    private Float financingRateLow;

    /**
     * 融资利率高点
     */
    @TableField("financing_rate_high")
    private Float financingRateHigh;

    /**
     * 管理费率低点
     */
    @TableField("management_rate_low")
    private Float managementRateLow;

    /**
     * 管理费率高点
     */
    @TableField("management_rate_high")
    private Float managementRateHigh;

    /**
     * 保证金比例低点
     */
    @TableField("margin_ratio_low")
    private Float marginRatioLow;

    /**
     * 保证金比例高点
     */
    @TableField("margin_ratio_high")
    private Float marginRatioHigh;

    /**
     * 对外综合报价
     */
    @TableField("comprehensive_quotation")
    private Float comprehensiveQuotation;

    /**
     * 本金支付方式
     */
    @TableField("principal_payment_method")
    private String principalPaymentMethod;

    /**
     * 利息管理费支付方式
     */
    @TableField("payment_method_for_interest_management_fee")
    private String paymentMethodForInterestManagementFee;

    /**
     * 利息管理费支付方式为其他时 填写
     */
    @TableField("payment_method_for_interest_management_fee_detail")
    private String paymentMethodForInterestManagementFeeDetail;

    /**
     * 保证金支付方式
     */
    @TableField("margin_payment_method")
    private String marginPaymentMethod;

    /**
     * 其他费用支付方式
     */
    @TableField("other_fee_payment_method")
    private String otherFeePaymentMethod;

    /**
     * 上游账期
     */
    @TableField("upstream_accounting_period")
    private Long upstreamAccountingPeriod;

    /**
     * 上游账期变更原因
     */
    @TableField("upstream_accounting_period_chang_reason")
    private String upstreamAccountingPeriodChangReason;

    /**
     * 保理融资期限
     */
    @TableField("factoring_financing_period")
    private Long factoringFinancingPeriod;

    /**
     * 保理融资期限变更原因
     */
    @TableField("factoring_financing_period_chang_reason")
    private String factoringFinancingPeriodChangReason;

    /**
     * 是否上报 1:是，0:否
     */
    @TableField("credit_report")
    private Integer creditReport;

    /**
     * 上报方式 1:A类，0:B类
     */
    @TableField("report_method")
    private Integer reportMethod;

    /**
     * 增信措施 保证 1是 0 否
     */
    @TableField("credit_enhancement_measures_one")
    private Integer creditEnhancementMeasuresOne;

    /**
     * 增信措施 抵押 1是 0 否
     */
    @TableField("credit_enhancement_measures_two")
    private Integer creditEnhancementMeasuresTwo;

    /**
     * 增信措施 质押 1是 0 否
     */
    @TableField("credit_enhancement_measures_three")
    private Integer creditEnhancementMeasuresThree;

    /**
     * 增信措施 其他 1是 0 否
     */
    @TableField("credit_enhancement_measures_fore")
    private Integer creditEnhancementMeasuresFore;

    /**
     * 增信说明
     */
    @TableField("credit_enhancement_measures_illustrate")
    private String creditEnhancementMeasuresIllustrate;

    /**
     *  指导性单笔业务满足条件 1是 0 否
     */
    @TableField("has_condition")
    private Integer hasCondition;

    /**
     *  状态
     */
    @TableField("status")
    private String statusStr;

    /**
     *  暂存 0暂存 1提交
     */
    @TableField("visible")
    private Integer visible;

    /**
     * 主企业
     */
    @TableField(exist = false)
    private Enterprise ownerEnterprise;

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

    /**
     * 供应商
     */
    @TableField(exist = false)
    private Enterprise supplierEnterprise;

    /**
     * 供应商担保企业信息
     */
    @TableField(exist = false)
    private Enterprise guaranteeEnterprise;

    /**
     * 项目信息
     */
    @TableField(exist = false)
    private ProjectInformation projectInformation;

    /**
     * 指导性单笔业务满足条件
     */
    @TableField(exist = false)
    private List<BusinessMeetsConditions> businessMeetsConditionsList;

    /**
     * 放款条件
     */
    @TableField(exist = false)
    private List<LoanConditions> loanConditionsList;

    /**
     * 授信结论
     */
    @TableField(exist = false)
    private List<CreditConclusion> creditConclusionList;

    @TableField(exist = false)
    private String taskId;

    @TableField(exist = false)
    private CreditResolutionApproval creditResolutionApproval;

    public Enterprise getGuaranteeEnterprise() {
        return guaranteeEnterprise;
    }

    public void setGuaranteeEnterprise(Enterprise guaranteeEnterprise) {
        this.guaranteeEnterprise = guaranteeEnterprise;
    }

    public String getPaymentMethodForInterestManagementFeeDetail() {
        return paymentMethodForInterestManagementFeeDetail;
    }

    public void setPaymentMethodForInterestManagementFeeDetail(String paymentMethodForInterestManagementFeeDetail) {
        this.paymentMethodForInterestManagementFeeDetail = paymentMethodForInterestManagementFeeDetail;
    }

    public String getStatusStr() {
        return statusStr;
    }

    public void setStatusStr(String statusStr) {
        this.statusStr = statusStr;
    }

    public CreditResolutionApproval getCreditResolutionApproval() {
        return creditResolutionApproval;
    }

    public void setCreditResolutionApproval(CreditResolutionApproval creditResolutionApproval) {
        this.creditResolutionApproval = creditResolutionApproval;
    }

    public String getTaskId() {
        return taskId;
    }

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

    public List<BusinessMeetsConditions> getBusinessMeetsConditionsList() {
        return businessMeetsConditionsList;
    }

    public void setBusinessMeetsConditionsList(List<BusinessMeetsConditions> businessMeetsConditionsList) {
        this.businessMeetsConditionsList = businessMeetsConditionsList;
    }

    public List<LoanConditions> getLoanConditionsList() {
        return loanConditionsList;
    }

    public void setLoanConditionsList(List<LoanConditions> loanConditionsList) {
        this.loanConditionsList = loanConditionsList;
    }

    public List<CreditConclusion> getCreditConclusionList() {
        return creditConclusionList;
    }

    public void setCreditConclusionList(List<CreditConclusion> creditConclusionList) {
        this.creditConclusionList = creditConclusionList;
    }

    public ProjectInformation getProjectInformation() {
        return projectInformation;
    }

    public void setProjectInformation(ProjectInformation projectInformation) {
        this.projectInformation = projectInformation;
    }

    public Enterprise getOwnerEnterprise() {
        return ownerEnterprise;
    }

    public void setOwnerEnterprise(Enterprise ownerEnterprise) {
        this.ownerEnterprise = ownerEnterprise;
    }

    public Enterprise getCoreEnterprise() {
        return coreEnterprise;
    }

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

    public Enterprise getSupplierEnterprise() {
        return supplierEnterprise;
    }

    public void setSupplierEnterprise(Enterprise supplierEnterprise) {
        this.supplierEnterprise = supplierEnterprise;
    }

    public Long getcProjectInformationId() {
        return cProjectInformationId;
    }

    public void setcProjectInformationId(Long cProjectInformationId) {
        this.cProjectInformationId = cProjectInformationId;
    }
    public String getCreditType() {
        return creditType;
    }

    public void setCreditType(String creditType) {
        this.creditType = creditType;
    }
    public String getDomesticFactoring() {
        return domesticFactoring;
    }

    public void setDomesticFactoring(String domesticFactoring) {
        this.domesticFactoring = domesticFactoring;
    }
    public String getImplementingFactoringProducts() {
        return implementingFactoringProducts;
    }

    public void setImplementingFactoringProducts(String implementingFactoringProducts) {
        this.implementingFactoringProducts = implementingFactoringProducts;
    }
    public String getImplementingFactoringType() {
        return implementingFactoringType;
    }

    public void setImplementingFactoringType(String implementingFactoringType) {
        this.implementingFactoringType = implementingFactoringType;
    }
    public BigDecimal getProposedCreditLine() {
        return proposedCreditLine;
    }

    public void setProposedCreditLine(BigDecimal proposedCreditLine) {
        this.proposedCreditLine = proposedCreditLine;
    }
    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency;
    }
    public Date getCreditStartDate() {
        return creditStartDate;
    }

    public void setCreditStartDate(Date creditStartDate) {
        this.creditStartDate = creditStartDate;
    }
    public Integer getProposedCreditTerm() {
        return proposedCreditTerm;
    }

    public void setProposedCreditTerm(Integer proposedCreditTerm) {
        this.proposedCreditTerm = proposedCreditTerm;
    }
    public Date getCreditEndDate() {
        return creditEndDate;
    }

    public void setCreditEndDate(Date creditEndDate) {
        this.creditEndDate = creditEndDate;
    }
    public Float getFinancingRatioLow() {
        return financingRatioLow;
    }

    public void setFinancingRatioLow(Float financingRatioLow) {
        this.financingRatioLow = financingRatioLow;
    }
    public Float getFinancingRatioHigh() {
        return financingRatioHigh;
    }

    public void setFinancingRatioHigh(Float financingRatioHigh) {
        this.financingRatioHigh = financingRatioHigh;
    }
    public Float getPlanIrr() {
        return planIrr;
    }

    public void setPlanIrr(Float planIrr) {
        this.planIrr = planIrr;
    }
    public Float getProposedFinancingRatioTwoLow() {
        return proposedFinancingRatioTwoLow;
    }

    public void setProposedFinancingRatioTwoLow(Float proposedFinancingRatioTwoLow) {
        this.proposedFinancingRatioTwoLow = proposedFinancingRatioTwoLow;
    }
    public Float getProposedFinancingRatioTwoHigh() {
        return proposedFinancingRatioTwoHigh;
    }

    public void setProposedFinancingRatioTwoHigh(Float proposedFinancingRatioTwoHigh) {
        this.proposedFinancingRatioTwoHigh = proposedFinancingRatioTwoHigh;
    }
    public Float getPlanIrrTwo() {
        return planIrrTwo;
    }

    public void setPlanIrrTwo(Float planIrrTwo) {
        this.planIrrTwo = planIrrTwo;
    }
    public Float getFinancingRateLow() {
        return financingRateLow;
    }

    public void setFinancingRateLow(Float financingRateLow) {
        this.financingRateLow = financingRateLow;
    }
    public Float getFinancingRateHigh() {
        return financingRateHigh;
    }

    public void setFinancingRateHigh(Float financingRateHigh) {
        this.financingRateHigh = financingRateHigh;
    }
    public Float getManagementRateLow() {
        return managementRateLow;
    }

    public void setManagementRateLow(Float managementRateLow) {
        this.managementRateLow = managementRateLow;
    }
    public Float getManagementRateHigh() {
        return managementRateHigh;
    }

    public void setManagementRateHigh(Float managementRateHigh) {
        this.managementRateHigh = managementRateHigh;
    }
    public Float getMarginRatioLow() {
        return marginRatioLow;
    }

    public void setMarginRatioLow(Float marginRatioLow) {
        this.marginRatioLow = marginRatioLow;
    }
    public Float getMarginRatioHigh() {
        return marginRatioHigh;
    }

    public void setMarginRatioHigh(Float marginRatioHigh) {
        this.marginRatioHigh = marginRatioHigh;
    }
    public Float getComprehensiveQuotation() {
        return comprehensiveQuotation;
    }

    public void setComprehensiveQuotation(Float comprehensiveQuotation) {
        this.comprehensiveQuotation = comprehensiveQuotation;
    }
    public String getPrincipalPaymentMethod() {
        return principalPaymentMethod;
    }

    public void setPrincipalPaymentMethod(String principalPaymentMethod) {
        this.principalPaymentMethod = principalPaymentMethod;
    }

    public String getPaymentMethodForInterestManagementFee() {
        return paymentMethodForInterestManagementFee;
    }

    public void setPaymentMethodForInterestManagementFee(String paymentMethodForInterestManagementFee) {
        this.paymentMethodForInterestManagementFee = paymentMethodForInterestManagementFee;
    }

    public String getMarginPaymentMethod() {
        return marginPaymentMethod;
    }

    public void setMarginPaymentMethod(String marginPaymentMethod) {
        this.marginPaymentMethod = marginPaymentMethod;
    }
    public String getOtherFeePaymentMethod() {
        return otherFeePaymentMethod;
    }

    public void setOtherFeePaymentMethod(String otherFeePaymentMethod) {
        this.otherFeePaymentMethod = otherFeePaymentMethod;
    }
    public Long getUpstreamAccountingPeriod() {
        return upstreamAccountingPeriod;
    }

    public void setUpstreamAccountingPeriod(Long upstreamAccountingPeriod) {
        this.upstreamAccountingPeriod = upstreamAccountingPeriod;
    }
    public String getUpstreamAccountingPeriodChangReason() {
        return upstreamAccountingPeriodChangReason;
    }

    public void setUpstreamAccountingPeriodChangReason(String upstreamAccountingPeriodChangReason) {
        this.upstreamAccountingPeriodChangReason = upstreamAccountingPeriodChangReason;
    }
    public Long getFactoringFinancingPeriod() {
        return factoringFinancingPeriod;
    }

    public void setFactoringFinancingPeriod(Long factoringFinancingPeriod) {
        this.factoringFinancingPeriod = factoringFinancingPeriod;
    }
    public String getFactoringFinancingPeriodChangReason() {
        return factoringFinancingPeriodChangReason;
    }

    public void setFactoringFinancingPeriodChangReason(String factoringFinancingPeriodChangReason) {
        this.factoringFinancingPeriodChangReason = factoringFinancingPeriodChangReason;
    }
    public String getCreditEnhancementMeasuresIllustrate() {
        return creditEnhancementMeasuresIllustrate;
    }

    public void setCreditEnhancementMeasuresIllustrate(String creditEnhancementMeasuresIllustrate) {
        this.creditEnhancementMeasuresIllustrate = creditEnhancementMeasuresIllustrate;
    }

    public Integer getCreditReport() {
        return creditReport;
    }

    public void setCreditReport(Integer creditReport) {
        this.creditReport = creditReport;
    }

    public Integer getReportMethod() {
        return reportMethod;
    }

    public void setReportMethod(Integer reportMethod) {
        this.reportMethod = reportMethod;
    }

    public Integer getCreditEnhancementMeasuresOne() {
        return creditEnhancementMeasuresOne;
    }

    public void setCreditEnhancementMeasuresOne(Integer creditEnhancementMeasuresOne) {
        this.creditEnhancementMeasuresOne = creditEnhancementMeasuresOne;
    }

    public Integer getCreditEnhancementMeasuresTwo() {
        return creditEnhancementMeasuresTwo;
    }

    public void setCreditEnhancementMeasuresTwo(Integer creditEnhancementMeasuresTwo) {
        this.creditEnhancementMeasuresTwo = creditEnhancementMeasuresTwo;
    }

    public Integer getCreditEnhancementMeasuresThree() {
        return creditEnhancementMeasuresThree;
    }

    public void setCreditEnhancementMeasuresThree(Integer creditEnhancementMeasuresThree) {
        this.creditEnhancementMeasuresThree = creditEnhancementMeasuresThree;
    }

    public Integer getCreditEnhancementMeasuresFore() {
        return creditEnhancementMeasuresFore;
    }

    public void setCreditEnhancementMeasuresFore(Integer creditEnhancementMeasuresFore) {
        this.creditEnhancementMeasuresFore = creditEnhancementMeasuresFore;
    }

    public Integer getHasCondition() {
        return hasCondition;
    }

    public void setHasCondition(Integer hasCondition) {
        this.hasCondition = hasCondition;
    }

    public Integer getVisible() {
        return visible;
    }

    public void setVisible(Integer visible) {
        this.visible = visible;
    }

    @Override
    public String toString() {
        return "CreditResolution{" +
            "cProjectInformationId=" + cProjectInformationId +
            ", creditType=" + creditType +
            ", domesticFactoring=" + domesticFactoring +
            ", implementingFactoringProducts=" + implementingFactoringProducts +
            ", implementingFactoringType=" + implementingFactoringType +
            ", proposedCreditLine=" + proposedCreditLine +
            ", currency=" + currency +
            ", creditStartDate=" + creditStartDate +
            ", proposedCreditTerm=" + proposedCreditTerm +
            ", creditEndDate=" + creditEndDate +
            ", financingRatioLow=" + financingRatioLow +
            ", financingRatioHigh=" + financingRatioHigh +
            ", planIrr=" + planIrr +
            ", proposedFinancingRatioTwoLow=" + proposedFinancingRatioTwoLow +
            ", proposedFinancingRatioTwoHigh=" + proposedFinancingRatioTwoHigh +
            ", planIrrTwo=" + planIrrTwo +
            ", financingRateLow=" + financingRateLow +
            ", financingRateHigh=" + financingRateHigh +
            ", managementRateLow=" + managementRateLow +
            ", managementRateHigh=" + managementRateHigh +
            ", marginRatioLow=" + marginRatioLow +
            ", marginRatioHigh=" + marginRatioHigh +
            ", comprehensiveQuotation=" + comprehensiveQuotation +
            ", principalPaymentMethod=" + principalPaymentMethod +
            ", paymentMethodForInterestManagementFee=" + paymentMethodForInterestManagementFee +
            ", marginPaymentMethod=" + marginPaymentMethod +
            ", otherFeePaymentMethod=" + otherFeePaymentMethod +
            ", upstreamAccountingPeriod=" + upstreamAccountingPeriod +
            ", upstreamAccountingPeriodChangReason=" + upstreamAccountingPeriodChangReason +
            ", factoringFinancingPeriod=" + factoringFinancingPeriod +
            ", factoringFinancingPeriodChangReason=" + factoringFinancingPeriodChangReason +
            ", creditReport=" + creditReport +
            ", reportMethod=" + reportMethod +
            ", creditEnhancementMeasuresOne=" + creditEnhancementMeasuresOne +
            ", creditEnhancementMeasuresTwo=" + creditEnhancementMeasuresTwo +
            ", creditEnhancementMeasuresThree=" + creditEnhancementMeasuresThree +
            ", creditEnhancementMeasuresFore=" + creditEnhancementMeasuresFore +
            ", creditEnhancementMeasuresIllustrate=" + creditEnhancementMeasuresIllustrate +
            ", hasCondition=" + hasCondition +
        "}";
    }
}
