package com.sunxung.factoring.entity.refundsManagement;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sunxung.factoring.entity.BaseEntity;
import com.sunxung.factoring.entity.sys.Dictionary;
import org.hibernate.validator.constraints.NotBlank;

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

/**
 * <p>
 * 退款管理-申请内容表
 * </p>
 *
 * @author yafan
 * @since 2024-03-04
 */
@TableName("refunds_apply_details")
public class RefundsApplyDetails extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 退款管理表Id
     */
    @TableField("refund_management_id")
    private Long refundManagementId;

    /**
     * 付款公司主体ID
     */
    @TableField("oa_company_entity_info_id")
    private Long oaCompanyEntityInfoId;

    /**
     * 付款事项（字典）code
     */
    @TableField("payment_matter")
    private String paymentMatter;

    @TableField(exist = false)
    private Dictionary paymentMatterDic;

    /**
     * 项目类型
     */
    @TableField("project_type")
    private String projectType;

    /**
     * 项目类型字典项
     */
    @TableField(exist = false)
    private Dictionary projectTypeDic;

    /**
     * 付款事由
     */
    @TableField("payment_reason")
    private String paymentReason;

    /**
     * 付款总金额
     */
    @TableField("payment_amount_total")
    private BigDecimal paymentAmountTotal;

    /**
     * 金额大写
     */
    @TableField("amount_capitalization")
    private String amountCapitalization;

    /**
     * 币种
     */
    @TableField("currency")
    private String currency;

    /**
     * 付款方式
     */
    @TableField("payment_method")
    private String paymentMethod;

    /**
     * 支付日期
     */
    @TableField("payment_date")
    private Date paymentDate;

    /**
     * 付款备注
     */
    @TableField("payment_remark")
    private String paymentRemark;

    /**
     * 要求时效或付款行等
     */
    @TableField("other_remark")
    private String otherRemark;

    /**
     * 状态 0:提交、1:通过、2:退回
     */
    @TableField("status")
    private Integer status;

    /**
     * 申请类型 0:抵扣、1:退款
     */
    @NotNull(message = "申请类型不能为空！")
    @TableField("apply_type")
    private Integer applyType;

    /**
     * 申请人id
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 表单类型
     */
    @TableField(exist = false)
    private String formListTypeName = "其他款项支付";

    @TableField(exist = false)
    private String userName;

    /**
     * 收方账户信息
     **/
    @TableField(exist = false)
    private List<RefundsApplyAccountInfo> accountInfoList;

    /**
     * 融资申请是否逾期
     **/
    @TableField(exist = false)
    private Boolean overdue;

    /**
     * 计划id
     */
    @TableField(exist = false)
    private List<Long> planIds;

    public Integer getApplyType() {
        return applyType;
    }

    public void setApplyType(Integer applyType) {
        this.applyType = applyType;
    }

    public Long getRefundManagementId() {
        return refundManagementId;
    }

    public void setRefundManagementId(Long refundManagementId) {
        this.refundManagementId = refundManagementId;
    }

    public Long getOaCompanyEntityInfoId() {
        return oaCompanyEntityInfoId;
    }

    public void setOaCompanyEntityInfoId(Long oaCompanyEntityInfoId) {
        this.oaCompanyEntityInfoId = oaCompanyEntityInfoId;
    }

    public String getPaymentMatter() {
        return paymentMatter;
    }

    public void setPaymentMatter(String paymentMatter) {
        this.paymentMatter = paymentMatter;
    }

    public Dictionary getPaymentMatterDic() {
        return paymentMatterDic;
    }

    public void setPaymentMatterDic(Dictionary paymentMatterDic) {
        this.paymentMatterDic = paymentMatterDic;
    }

    public String getProjectType() {
        return projectType;
    }

    public void setProjectType(String projectType) {
        this.projectType = projectType;
    }

    public String getPaymentReason() {
        return paymentReason;
    }

    public void setPaymentReason(String paymentReason) {
        this.paymentReason = paymentReason;
    }

    public BigDecimal getPaymentAmountTotal() {
        return paymentAmountTotal;
    }

    public void setPaymentAmountTotal(BigDecimal paymentAmountTotal) {
        this.paymentAmountTotal = paymentAmountTotal;
    }

    public String getAmountCapitalization() {
        return amountCapitalization;
    }

    public void setAmountCapitalization(String amountCapitalization) {
        this.amountCapitalization = amountCapitalization;
    }

    public String getCurrency() {
        return currency;
    }

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

    public String getPaymentMethod() {
        return paymentMethod;
    }

    public void setPaymentMethod(String paymentMethod) {
        this.paymentMethod = paymentMethod;
    }

    public Date getPaymentDate() {
        return paymentDate;
    }

    public void setPaymentDate(Date paymentDate) {
        this.paymentDate = paymentDate;
    }

    public String getPaymentRemark() {
        return paymentRemark;
    }

    public void setPaymentRemark(String paymentRemark) {
        this.paymentRemark = paymentRemark;
    }

    public String getOtherRemark() {
        return otherRemark;
    }

    public void setOtherRemark(String otherRemark) {
        this.otherRemark = otherRemark;
    }

    public List<RefundsApplyAccountInfo> getAccountInfoList() {
        return accountInfoList;
    }

    public void setAccountInfoList(List<RefundsApplyAccountInfo> accountInfoList) {
        this.accountInfoList = accountInfoList;
    }

    public Boolean getOverdue() {
        return overdue;
    }

    public void setOverdue(Boolean overdue) {
        this.overdue = overdue;
    }

    public Dictionary getProjectTypeDic() {
        return projectTypeDic;
    }

    public void setProjectTypeDic(Dictionary projectTypeDic) {
        this.projectTypeDic = projectTypeDic;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getFormListTypeName() {
        return formListTypeName;
    }

    public void setFormListTypeName(String formListTypeName) {
        this.formListTypeName = formListTypeName;
    }

    public List<Long> getPlanIds() {
        return planIds;
    }

    public void setPlanIds(List<Long> planIds) {
        this.planIds = planIds;
    }
}
