package com.sunxung.factoring.entity.financing.review;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.sunxung.factoring.entity.BaseEntity;

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

/**
 * @Description : 额度支用-融资信息历史表
 * @Author : L.Jia
 * @Date: 2023-12-12 20:27
 */
public class ReviewFinancingInfoHis extends BaseEntity {

    /**
     * 对应额度支用信息历史Id
     */
    private Long reviewQuotaDisburseHisId;

    /**
     * 融资金额
     **/
    private BigDecimal financingAmount;
    /**
     * 融资利率(年化)
     **/
    private BigDecimal financingRate;

    /**
     * 融资比例
     **/
    private BigDecimal financingRatio;

    /**
     * 融资期限
     **/
    private Integer financingPeriod;
    /**
     * 起算日类别:自保理融资款实际投放之日(plan_day),明确日期(clear_day) 。详情查看ConstantConversionUtil定义的常量
     **/
    private String startingDateType;
    /**
     * 起算日
     **/
    @JSONField(format = "yyyy-MM-dd")
    private Date startingDate;
    /**
     * 对外综合报价
     **/
    private BigDecimal comprehensiveQuotation;
    /**
     * 逾期利率
     **/
    private BigDecimal overdueInterestRate;
    /**
     * 管理费率(年化):手动输入0%到100%
     **/
    private BigDecimal managementFeeRatio;
    /**
     * 保证金比例
     **/
    private BigDecimal marginRatio;
    /**
     * 回款方式
     **/
    private String repaymentMethod;
    /**
     * 融资利息
     **/
    private BigDecimal financingInterest;
    /**
     * 管理费金额
     **/
    private BigDecimal managementFeeAmount;
    /**
     * 保证金金额
     **/
    private BigDecimal marginAmount;
    /**
     * 其他费用金额
     **/
    private BigDecimal otherFeeAmount;
    /** 转让通知方式:字典项 TransferNoticeMethodDict.java **/
    /** 服务范围:字典项 FactoringServiceScope.java **/
    /**
     * 转让通知方式,多选
     **/
    private String transferNoticeMethod;

    /**
     * 转让通知方式集合
     */
    @TableField(exist = false)
    private List<String> transferNoticeMethodList;

    /**
     * 服务范围,多选
     **/
    private String serviceScope;

    /**
     * 服务范围集合
     */
    @TableField(exist = false)
    private List<String> serviceScopeList;

    /**
     * 是否占用公司金额 1:是，0:否
     */
    @TableField("is_occupation")
    private Integer occupation;

    /**
     * 是否公司承险 1:是，0:否
     */
    @TableField("is_risk")
    private Integer risk;

    /**
     * 还款期限调整方式
     */
    private String repaymentAdjustment;

    /**
     * 还款方式
     */
    private String payBackMethod;

    /**
     * 出资方名称
     */
    private String institutionName;

    /**
     * 提前回款利息计算方式
     */
    private String prepaymentInterestCalculate;

    /**
     * 利息是否计算投放日，1:是,0:否
     */
    @TableField("is_interest_calculate")
    private Integer interestCalculate;
    /**
     * 币种
     */
    private String currencyCode;
    /**
     * 汇率
     */
    private BigDecimal exchangeRate;
    /**
     * 坏账担保比例
     */
    private BigDecimal badDebtGuaranteeRate;

    /**
     * 坏账担保比例字符串（不保存数据库）
     */
    @TableField(exist = false)
    private String badDebtGuaranteeRateStr;

    /**
     * 业务类型
     */
    private Integer businessType;

    /**
     * 账号名称
     */
    private String accountName;

    /**
     * 支用到期日
     */
    @JSONField(format = "yyyy-MM-dd")
    private Date disburseExpiryDate;

    public Long getReviewQuotaDisburseHisId() {
        return reviewQuotaDisburseHisId;
    }

    public void setReviewQuotaDisburseHisId(Long reviewQuotaDisburseHisId) {
        this.reviewQuotaDisburseHisId = reviewQuotaDisburseHisId;
    }

    public BigDecimal getFinancingAmount() {
        return financingAmount;
    }

    public void setFinancingAmount(BigDecimal financingAmount) {
        this.financingAmount = financingAmount;
    }

    public BigDecimal getFinancingRate() {
        return financingRate;
    }

    public void setFinancingRate(BigDecimal financingRate) {
        this.financingRate = financingRate;
    }

    public BigDecimal getFinancingRatio() {
        return financingRatio;
    }

    public void setFinancingRatio(BigDecimal financingRatio) {
        this.financingRatio = financingRatio;
    }

    public Integer getFinancingPeriod() {
        return financingPeriod;
    }

    public void setFinancingPeriod(Integer financingPeriod) {
        this.financingPeriod = financingPeriod;
    }

    public String getStartingDateType() {
        return startingDateType;
    }

    public void setStartingDateType(String startingDateType) {
        this.startingDateType = startingDateType;
    }

    public Date getStartingDate() {
        return startingDate;
    }

    public void setStartingDate(Date startingDate) {
        this.startingDate = startingDate;
    }

    public BigDecimal getComprehensiveQuotation() {
        return comprehensiveQuotation;
    }

    public void setComprehensiveQuotation(BigDecimal comprehensiveQuotation) {
        this.comprehensiveQuotation = comprehensiveQuotation;
    }

    public BigDecimal getOverdueInterestRate() {
        return overdueInterestRate;
    }

    public void setOverdueInterestRate(BigDecimal overdueInterestRate) {
        this.overdueInterestRate = overdueInterestRate;
    }

    public BigDecimal getManagementFeeRatio() {
        return managementFeeRatio;
    }

    public void setManagementFeeRatio(BigDecimal managementFeeRatio) {
        this.managementFeeRatio = managementFeeRatio;
    }

    public BigDecimal getMarginRatio() {
        return marginRatio;
    }

    public void setMarginRatio(BigDecimal marginRatio) {
        this.marginRatio = marginRatio;
    }

    public String getRepaymentMethod() {
        return repaymentMethod;
    }

    public void setRepaymentMethod(String repaymentMethod) {
        this.repaymentMethod = repaymentMethod;
    }

    public BigDecimal getFinancingInterest() {
        return financingInterest;
    }

    public void setFinancingInterest(BigDecimal financingInterest) {
        this.financingInterest = financingInterest;
    }

    public BigDecimal getManagementFeeAmount() {
        return managementFeeAmount;
    }

    public void setManagementFeeAmount(BigDecimal managementFeeAmount) {
        this.managementFeeAmount = managementFeeAmount;
    }

    public BigDecimal getMarginAmount() {
        return marginAmount;
    }

    public void setMarginAmount(BigDecimal marginAmount) {
        this.marginAmount = marginAmount;
    }

    public BigDecimal getOtherFeeAmount() {
        return otherFeeAmount;
    }

    public void setOtherFeeAmount(BigDecimal otherFeeAmount) {
        this.otherFeeAmount = otherFeeAmount;
    }

    public String getTransferNoticeMethod() {
        return transferNoticeMethod;
    }

    public void setTransferNoticeMethod(String transferNoticeMethod) {
        this.transferNoticeMethod = transferNoticeMethod;
    }

    public List<String> getTransferNoticeMethodList() {
        return transferNoticeMethodList;
    }

    public void setTransferNoticeMethodList(List<String> transferNoticeMethodList) {
        this.transferNoticeMethodList = transferNoticeMethodList;
    }

    public String getServiceScope() {
        return serviceScope;
    }

    public void setServiceScope(String serviceScope) {
        this.serviceScope = serviceScope;
    }

    public List<String> getServiceScopeList() {
        return serviceScopeList;
    }

    public void setServiceScopeList(List<String> serviceScopeList) {
        this.serviceScopeList = serviceScopeList;
    }

    public Integer getOccupation() {
        return occupation;
    }

    public void setOccupation(Integer occupation) {
        this.occupation = occupation;
    }

    public Integer getRisk() {
        return risk;
    }

    public void setRisk(Integer risk) {
        this.risk = risk;
    }

    public String getRepaymentAdjustment() {
        return repaymentAdjustment;
    }

    public void setRepaymentAdjustment(String repaymentAdjustment) {
        this.repaymentAdjustment = repaymentAdjustment;
    }

    public String getPayBackMethod() {
        return payBackMethod;
    }

    public void setPayBackMethod(String payBackMethod) {
        this.payBackMethod = payBackMethod;
    }

    public String getInstitutionName() {
        return institutionName;
    }

    public void setInstitutionName(String institutionName) {
        this.institutionName = institutionName;
    }

    public String getPrepaymentInterestCalculate() {
        return prepaymentInterestCalculate;
    }

    public void setPrepaymentInterestCalculate(String prepaymentInterestCalculate) {
        this.prepaymentInterestCalculate = prepaymentInterestCalculate;
    }

    public Integer getInterestCalculate() {
        return interestCalculate;
    }

    public void setInterestCalculate(Integer interestCalculate) {
        this.interestCalculate = interestCalculate;
    }

    public String getCurrencyCode() {
        return currencyCode;
    }

    public void setCurrencyCode(String currencyCode) {
        this.currencyCode = currencyCode;
    }

    public BigDecimal getExchangeRate() {
        return exchangeRate;
    }

    public void setExchangeRate(BigDecimal exchangeRate) {
        this.exchangeRate = exchangeRate;
    }

    public BigDecimal getBadDebtGuaranteeRate() {
        return badDebtGuaranteeRate;
    }

    public void setBadDebtGuaranteeRate(BigDecimal badDebtGuaranteeRate) {
        this.badDebtGuaranteeRate = badDebtGuaranteeRate;
    }

    public String getBadDebtGuaranteeRateStr() {
        return badDebtGuaranteeRateStr;
    }

    public void setBadDebtGuaranteeRateStr(String badDebtGuaranteeRateStr) {
        this.badDebtGuaranteeRateStr = badDebtGuaranteeRateStr;
    }

    public Integer getBusinessType() {
        return businessType;
    }

    public void setBusinessType(Integer businessType) {
        this.businessType = businessType;
    }

    public String getAccountName() {
        return accountName;
    }

    public void setAccountName(String accountName) {
        this.accountName = accountName;
    }

    public Date getDisburseExpiryDate() {
        return disburseExpiryDate;
    }

    public void setDisburseExpiryDate(Date disburseExpiryDate) {
        this.disburseExpiryDate = disburseExpiryDate;
    }
}
