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 com.sunxung.factoring.entity.sys.FileStorage;
import org.hibernate.validator.constraints.Length;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;
import java.util.List;

/**
 * 额度支用-抵质押基础历史信息实体类
 *
 * @author
 */
public class ReviewMortgageBasicInfoHis extends BaseEntity {

    /**
     * 抵(质)押合同标识码
     */
    @Length(max = 46, message = "抵(质)押合同标识码长度不超过46个字符")
    private String mortgageNo;

    /**
     * 合同类型 1:抵押合同，2:质押合同
     */
    private Integer guarType;

    /**
     * 债务人身份类别
     */
    private String debtorIdType;

    /**
     * 债务人名称
     */
    @Length(max = 46, message = "债务人名称长度不超过46个字符")
    private String debtorName;

    /**
     * 债务人联系方式
     */
    @Length(max = 46, message = "债务人联系方式长度不超过46个字符")
    private String debtorPhone;

    /**
     * 债务人住址地（身份证地址）
     */
    @Length(max = 46, message = "债务人住址地长度不超过46个字符")
    private String debtorIdAddress;

    /**
     * 债务人实际住址（实际地址）
     */
    @Length(max = 46, message = "债务人实际住址长度不超过46个字符")
    private String debtorActualAddress;

    /**
     * 担保金额
     */
    private String guarAmount;

    /**
     * 币种
     */
    private String currency;

    /**
     * 抵质押合同生效日期
     */
    @JSONField(format = "yyyy-MM-dd")
    private Date mortContrValueDate;

    /**
     * 抵质押合同失效日期
     */
    @JSONField(format = "yyyy-MM-dd")
    private Date mortContrFinishDate;

    /**
     * 抵质押合同到期日期
     */
    @JSONField(format = "yyyy-MM-dd")
    private Date mortContrExpireDate;

    /**
     * 最高额担保标识 1:是，0:否
     */
    private Integer maxGuar;

    /**
     * 抵质押合同状态 1:有效（指合同生后处于履约状态），2:到期/失效（指合同履行完毕或解除）
     */
    private Integer mortContrStatus;

    /**
     * 抵押物详情
     **/
    @TableField(exist = false)
    private List<ReviewMortgageCollateralInfoHis> mortgageCollateralInfoList;

    /**
     * 质押物详情
     **/
    @TableField(exist = false)
    private List<ReviewMortgagePledgeInfoHis> mortgagePledgeInfoList;

    /**
     * 附件查看
     **/
    @TableField(exist = false)
    private List<FileStorage> fileStorageList;

    /**
     * 原动产抵押合同编号,原股权质押合同编号
     */
    private String contractNo;
    /**
     * 抵押人身份类别
     */
    private String mortgagorIdType;
    /**
     * 抵押人名称
     */
    private String mortgagorName;
    /**
     * 抵押人身份标识类型
     */
    private String mortgagorCertType;
    /**
     * 抵押人身份标识号码
     */
    private String mortgagorCertNum;
    /**
     * 债务履行开始日
     */
    @JSONField(format = "yyyy-MM-dd")
    private Date startDate;
    /**
     * 债务履行到期日
     */
    @JSONField(format = "yyyy-MM-dd")
    private Date endDate;
    /**
     * 联系方式
     */
    private String contactNumber;
    /**
     * 住所地(身份证地址)、住所地(营业执照地址)
     */
    private String address;
    /**
     * 实际地址(实际住址)、实际地址(实际办公地)
     */
    private String actualAddress;
    /**
     * 证照正面
     */
    private Long cardFrontFileStorageId;
    @TableField(exist = false)
    private FileStorage cardFrontFileStorage;
    /**
     * 证照反面
     */
    private Long cardReverseFileStorageId;
    @TableField(exist = false)
    private FileStorage cardReverseFileStorage;
    /**
     * 法定代表人
     */
    private String legalRepresentative;

    public String getMortgageNo() {
        return mortgageNo;
    }

    public void setMortgageNo(String mortgageNo) {
        this.mortgageNo = mortgageNo;
    }

    public Integer getGuarType() {
        return guarType;
    }

    public void setGuarType(Integer guarType) {
        this.guarType = guarType;
    }

    public String getDebtorIdType() {
        return debtorIdType;
    }

    public void setDebtorIdType(String debtorIdType) {
        this.debtorIdType = debtorIdType;
    }

    public String getDebtorName() {
        return debtorName;
    }

    public void setDebtorName(String debtorName) {
        this.debtorName = debtorName;
    }

    public String getDebtorPhone() {
        return debtorPhone;
    }

    public void setDebtorPhone(String debtorPhone) {
        this.debtorPhone = debtorPhone;
    }

    public String getDebtorIdAddress() {
        return debtorIdAddress;
    }

    public void setDebtorIdAddress(String debtorIdAddress) {
        this.debtorIdAddress = debtorIdAddress;
    }

    public String getDebtorActualAddress() {
        return debtorActualAddress;
    }

    public void setDebtorActualAddress(String debtorActualAddress) {
        this.debtorActualAddress = debtorActualAddress;
    }

    public String getGuarAmount() {
        return guarAmount;
    }

    public void setGuarAmount(String guarAmount) {
        this.guarAmount = guarAmount;
    }

    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency;
    }

    public Date getMortContrValueDate() {
        return mortContrValueDate;
    }

    public void setMortContrValueDate(Date mortContrValueDate) {
        this.mortContrValueDate = mortContrValueDate;
    }

    public Date getMortContrFinishDate() {
        return mortContrFinishDate;
    }

    public void setMortContrFinishDate(Date mortContrFinishDate) {
        this.mortContrFinishDate = mortContrFinishDate;
    }

    public Date getMortContrExpireDate() {
        return mortContrExpireDate;
    }

    public void setMortContrExpireDate(Date mortContrExpireDate) {
        this.mortContrExpireDate = mortContrExpireDate;
    }

    public Integer getMaxGuar() {
        return maxGuar;
    }

    public void setMaxGuar(Integer maxGuar) {
        this.maxGuar = maxGuar;
    }

    public Integer getMortContrStatus() {
        return mortContrStatus;
    }

    public void setMortContrStatus(Integer mortContrStatus) {
        this.mortContrStatus = mortContrStatus;
    }

    public List<ReviewMortgageCollateralInfoHis> getMortgageCollateralInfoList() {
        return mortgageCollateralInfoList;
    }

    public void setMortgageCollateralInfoList(List<ReviewMortgageCollateralInfoHis> mortgageCollateralInfoList) {
        this.mortgageCollateralInfoList = mortgageCollateralInfoList;
    }

    public List<ReviewMortgagePledgeInfoHis> getMortgagePledgeInfoList() {
        return mortgagePledgeInfoList;
    }

    public void setMortgagePledgeInfoList(List<ReviewMortgagePledgeInfoHis> mortgagePledgeInfoList) {
        this.mortgagePledgeInfoList = mortgagePledgeInfoList;
    }

    public List<FileStorage> getFileStorageList() {
        return fileStorageList;
    }

    public void setFileStorageList(List<FileStorage> fileStorageList) {
        this.fileStorageList = fileStorageList;
    }

    public String getContractNo() {
        return contractNo;
    }

    public void setContractNo(String contractNo) {
        this.contractNo = contractNo;
    }

    public String getMortgagorIdType() {
        return mortgagorIdType;
    }

    public void setMortgagorIdType(String mortgagorIdType) {
        this.mortgagorIdType = mortgagorIdType;
    }

    public String getMortgagorName() {
        return mortgagorName;
    }

    public void setMortgagorName(String mortgagorName) {
        this.mortgagorName = mortgagorName;
    }

    public String getMortgagorCertType() {
        return mortgagorCertType;
    }

    public void setMortgagorCertType(String mortgagorCertType) {
        this.mortgagorCertType = mortgagorCertType;
    }

    public String getMortgagorCertNum() {
        return mortgagorCertNum;
    }

    public void setMortgagorCertNum(String mortgagorCertNum) {
        this.mortgagorCertNum = mortgagorCertNum;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public String getContactNumber() {
        return contactNumber;
    }

    public void setContactNumber(String contactNumber) {
        this.contactNumber = contactNumber;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getActualAddress() {
        return actualAddress;
    }

    public void setActualAddress(String actualAddress) {
        this.actualAddress = actualAddress;
    }

    public Long getCardFrontFileStorageId() {
        return cardFrontFileStorageId;
    }

    public void setCardFrontFileStorageId(Long cardFrontFileStorageId) {
        this.cardFrontFileStorageId = cardFrontFileStorageId;
    }

    public FileStorage getCardFrontFileStorage() {
        return cardFrontFileStorage;
    }

    public void setCardFrontFileStorage(FileStorage cardFrontFileStorage) {
        this.cardFrontFileStorage = cardFrontFileStorage;
    }

    public Long getCardReverseFileStorageId() {
        return cardReverseFileStorageId;
    }

    public void setCardReverseFileStorageId(Long cardReverseFileStorageId) {
        this.cardReverseFileStorageId = cardReverseFileStorageId;
    }

    public FileStorage getCardReverseFileStorage() {
        return cardReverseFileStorage;
    }

    public void setCardReverseFileStorage(FileStorage cardReverseFileStorage) {
        this.cardReverseFileStorage = cardReverseFileStorage;
    }

    public String getLegalRepresentative() {
        return legalRepresentative;
    }

    public void setLegalRepresentative(String legalRepresentative) {
        this.legalRepresentative = legalRepresentative;
    }
}
