package com.ruoyi.credit.domain.dto;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 通过验证的贷款数据传输对象
 * 
 * @author ruoyi
 * @date 2025-01-04
 */
public class ValidatedLoanDTO 
{
    /** 贷款ID */
    private Long loanId;

    /** 债权凭证ID */
    private Long creditId;

    /** 债权编号 */
    private String creditNumber;

    /** 合同编号 */
    private String contractNumber;

    /** 安保公司 */
    private String securityCompany;

    /** 债权金额 */
    private BigDecimal creditAmount;

    /** 贷款编号 */
    private String loanNumber;

    /** 贷款金额 */
    private BigDecimal loanAmount;

    /** 利率 */
    private Double interestRate;

    /** 贷款期限(月) */
    private Integer loanTermMonths;

    /** 月还款额 */
    private BigDecimal monthlyPayment;

    /** 贷款用途 */
    private String loanPurpose;

    /** 贷款状态 */
    private String loanStatus;

    /** 贷款开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date loanStartDate;

    /** 贷款结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date loanEndDate;

    /** 银行机构ID */
    private Long bankInstitutionId;

    /** 银行机构名称 */
    private String bankInstitutionName;

    /** 审批状态 */
    private String approvalStatus;

    /** 审批时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date approvalTime;

    /** 审批人 */
    private String approvedBy;

    /** 申请时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date applicationDate;

    /** 验证状态 */
    private String validationStatus;

    /** 验证时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date validationTime;

    /** 验证结果 */
    private String validationResult;

    /** 失败原因 */
    private String failureReason;

    /** 验证得分 */
    private Integer validationScore;

    /** 规则版本 */
    private String ruleVersion;

    /** 债权状态 */
    private String creditStatus;

    /** 服务周期ID */
    private Long servicePeriodId;

    public Long getLoanId() {
        return loanId;
    }

    public void setLoanId(Long loanId) {
        this.loanId = loanId;
    }

    public Long getCreditId() {
        return creditId;
    }

    public void setCreditId(Long creditId) {
        this.creditId = creditId;
    }

    public String getCreditNumber() {
        return creditNumber;
    }

    public void setCreditNumber(String creditNumber) {
        this.creditNumber = creditNumber;
    }

    public String getContractNumber() {
        return contractNumber;
    }

    public void setContractNumber(String contractNumber) {
        this.contractNumber = contractNumber;
    }

    public String getSecurityCompany() {
        return securityCompany;
    }

    public void setSecurityCompany(String securityCompany) {
        this.securityCompany = securityCompany;
    }

    public BigDecimal getCreditAmount() {
        return creditAmount;
    }

    public void setCreditAmount(BigDecimal creditAmount) {
        this.creditAmount = creditAmount;
    }

    public String getLoanNumber() {
        return loanNumber;
    }

    public void setLoanNumber(String loanNumber) {
        this.loanNumber = loanNumber;
    }

    public BigDecimal getLoanAmount() {
        return loanAmount;
    }

    public void setLoanAmount(BigDecimal loanAmount) {
        this.loanAmount = loanAmount;
    }

    public Double getInterestRate() {
        return interestRate;
    }

    public void setInterestRate(Double interestRate) {
        this.interestRate = interestRate;
    }

    public Integer getLoanTermMonths() {
        return loanTermMonths;
    }

    public void setLoanTermMonths(Integer loanTermMonths) {
        this.loanTermMonths = loanTermMonths;
    }

    public BigDecimal getMonthlyPayment() {
        return monthlyPayment;
    }

    public void setMonthlyPayment(BigDecimal monthlyPayment) {
        this.monthlyPayment = monthlyPayment;
    }

    public String getLoanPurpose() {
        return loanPurpose;
    }

    public void setLoanPurpose(String loanPurpose) {
        this.loanPurpose = loanPurpose;
    }

    public String getLoanStatus() {
        return loanStatus;
    }

    public void setLoanStatus(String loanStatus) {
        this.loanStatus = loanStatus;
    }

    public Date getLoanStartDate() {
        return loanStartDate;
    }

    public void setLoanStartDate(Date loanStartDate) {
        this.loanStartDate = loanStartDate;
    }

    public Date getLoanEndDate() {
        return loanEndDate;
    }

    public void setLoanEndDate(Date loanEndDate) {
        this.loanEndDate = loanEndDate;
    }

    public Long getBankInstitutionId() {
        return bankInstitutionId;
    }

    public void setBankInstitutionId(Long bankInstitutionId) {
        this.bankInstitutionId = bankInstitutionId;
    }

    public String getBankInstitutionName() {
        return bankInstitutionName;
    }

    public void setBankInstitutionName(String bankInstitutionName) {
        this.bankInstitutionName = bankInstitutionName;
    }

    public String getApprovalStatus() {
        return approvalStatus;
    }

    public void setApprovalStatus(String approvalStatus) {
        this.approvalStatus = approvalStatus;
    }

    public Date getApprovalTime() {
        return approvalTime;
    }

    public void setApprovalTime(Date approvalTime) {
        this.approvalTime = approvalTime;
    }

    public String getApprovedBy() {
        return approvedBy;
    }

    public void setApprovedBy(String approvedBy) {
        this.approvedBy = approvedBy;
    }

    public Date getApplicationDate() {
        return applicationDate;
    }

    public void setApplicationDate(Date applicationDate) {
        this.applicationDate = applicationDate;
    }

    public String getValidationStatus() {
        return validationStatus;
    }

    public void setValidationStatus(String validationStatus) {
        this.validationStatus = validationStatus;
    }

    public Date getValidationTime() {
        return validationTime;
    }

    public void setValidationTime(Date validationTime) {
        this.validationTime = validationTime;
    }

    public String getValidationResult() {
        return validationResult;
    }

    public void setValidationResult(String validationResult) {
        this.validationResult = validationResult;
    }

    public String getFailureReason() {
        return failureReason;
    }

    public void setFailureReason(String failureReason) {
        this.failureReason = failureReason;
    }

    public Integer getValidationScore() {
        return validationScore;
    }

    public void setValidationScore(Integer validationScore) {
        this.validationScore = validationScore;
    }

    public String getRuleVersion() {
        return ruleVersion;
    }

    public void setRuleVersion(String ruleVersion) {
        this.ruleVersion = ruleVersion;
    }

    public String getCreditStatus() {
        return creditStatus;
    }

    public void setCreditStatus(String creditStatus) {
        this.creditStatus = creditStatus;
    }

    public Long getServicePeriodId() {
        return servicePeriodId;
    }

    public void setServicePeriodId(Long servicePeriodId) {
        this.servicePeriodId = servicePeriodId;
    }
}