149 lines
5.6 KiB
Java
149 lines
5.6 KiB
Java
package com.kaidi.oa.domain;
|
||
|
||
import jakarta.persistence.Entity;
|
||
import jakarta.persistence.GeneratedValue;
|
||
import jakarta.persistence.GenerationType;
|
||
import jakarta.persistence.Id;
|
||
import jakarta.persistence.Table;
|
||
|
||
import java.math.BigDecimal;
|
||
import java.time.Instant;
|
||
|
||
/**
|
||
* 融资方案比选(金融办·融资申请与审批流程)。
|
||
* 支持对同一融资需求录入多家金融机构的报价,系统自动计算简化 IRR(综合成本率),
|
||
* 辅助财务人员择优决策。
|
||
*
|
||
* 状态:待比选 → 已推荐 → 已选定 → 已驳回。
|
||
* status=已选定 时,系统自动用 selectedSchemeId 回写 Financing 台账的 lender/rate/repayMethod。
|
||
*/
|
||
@Entity
|
||
@Table(name = "pmt_loan_scheme")
|
||
public class PmtLoanScheme {
|
||
|
||
@Id
|
||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||
private Long id;
|
||
|
||
/** 关联融资台账 id(pmt_loan_scheme 属于某次融资需求下的比选方案之一)。 */
|
||
private Long financingId;
|
||
|
||
/** 融资台账编号(冗余)。 */
|
||
private String financingCode;
|
||
|
||
/** 报价机构名称(银行/租赁公司名)。 */
|
||
private String institution;
|
||
|
||
/** 融资品种:银行贷款 / 融资租赁 / 债券 / 票据 / 其他。 */
|
||
private String loanType;
|
||
|
||
/** 拟融资金额(元)。 */
|
||
private BigDecimal amount = BigDecimal.ZERO;
|
||
|
||
/** 年化利率(百分比,如 4.35 表示 4.35%)。 */
|
||
private BigDecimal annualRate;
|
||
|
||
/** 期限(月)。 */
|
||
private Integer termMonths;
|
||
|
||
/** 还款方式:等额本息 / 等额本金 / 到期一次还本付息 / 按期付息到期还本。 */
|
||
private String repayMethod;
|
||
|
||
/** 手续费(一次性)。 */
|
||
private BigDecimal handlingFee = BigDecimal.ZERO;
|
||
|
||
/** 担保方式:信用贷 / 抵押 / 质押 / 保证 / 组合担保。 */
|
||
private String guaranteeType;
|
||
|
||
/** 担保费率(年化,百分比)。 */
|
||
private BigDecimal guaranteeRate;
|
||
|
||
/** 提款条件(文字描述)。 */
|
||
private String drawdownConditions;
|
||
|
||
/**
|
||
* 系统自动计算的综合成本率(利息+费用+担保成本之和/本金,IRR 简化口径,百分比)。
|
||
* 创建/更新时服务端根据 rate+费用+担保自动回填。
|
||
*/
|
||
private BigDecimal effectiveCostRate;
|
||
|
||
/** 综合排名(越小越优,由 /rank 端点服务端按综合成本排序后写入)。 */
|
||
private Integer rank;
|
||
|
||
/** 是否已推荐(比选后 owner 标注的首选方案)。 */
|
||
private Boolean recommended = false;
|
||
|
||
/** 经办人。 */
|
||
private String owner;
|
||
|
||
/** 状态:待比选 / 已推荐 / 已选定 / 已驳回。 */
|
||
private String status;
|
||
|
||
/** 备注(机构具体条款说明)。 */
|
||
private String remark;
|
||
|
||
private Instant createdAt;
|
||
|
||
// ---------- getters/setters ----------
|
||
|
||
public Long getId() { return id; }
|
||
public void setId(Long id) { this.id = id; }
|
||
|
||
public Long getFinancingId() { return financingId; }
|
||
public void setFinancingId(Long financingId) { this.financingId = financingId; }
|
||
|
||
public String getFinancingCode() { return financingCode; }
|
||
public void setFinancingCode(String financingCode) { this.financingCode = financingCode; }
|
||
|
||
public String getInstitution() { return institution; }
|
||
public void setInstitution(String institution) { this.institution = institution; }
|
||
|
||
public String getLoanType() { return loanType; }
|
||
public void setLoanType(String loanType) { this.loanType = loanType; }
|
||
|
||
public BigDecimal getAmount() { return amount; }
|
||
public void setAmount(BigDecimal amount) { this.amount = amount; }
|
||
|
||
public BigDecimal getAnnualRate() { return annualRate; }
|
||
public void setAnnualRate(BigDecimal annualRate) { this.annualRate = annualRate; }
|
||
|
||
public Integer getTermMonths() { return termMonths; }
|
||
public void setTermMonths(Integer termMonths) { this.termMonths = termMonths; }
|
||
|
||
public String getRepayMethod() { return repayMethod; }
|
||
public void setRepayMethod(String repayMethod) { this.repayMethod = repayMethod; }
|
||
|
||
public BigDecimal getHandlingFee() { return handlingFee; }
|
||
public void setHandlingFee(BigDecimal handlingFee) { this.handlingFee = handlingFee; }
|
||
|
||
public String getGuaranteeType() { return guaranteeType; }
|
||
public void setGuaranteeType(String guaranteeType) { this.guaranteeType = guaranteeType; }
|
||
|
||
public BigDecimal getGuaranteeRate() { return guaranteeRate; }
|
||
public void setGuaranteeRate(BigDecimal guaranteeRate) { this.guaranteeRate = guaranteeRate; }
|
||
|
||
public String getDrawdownConditions() { return drawdownConditions; }
|
||
public void setDrawdownConditions(String drawdownConditions) { this.drawdownConditions = drawdownConditions; }
|
||
|
||
public BigDecimal getEffectiveCostRate() { return effectiveCostRate; }
|
||
public void setEffectiveCostRate(BigDecimal effectiveCostRate) { this.effectiveCostRate = effectiveCostRate; }
|
||
|
||
public Integer getRank() { return rank; }
|
||
public void setRank(Integer rank) { this.rank = rank; }
|
||
|
||
public Boolean getRecommended() { return recommended; }
|
||
public void setRecommended(Boolean recommended) { this.recommended = recommended; }
|
||
|
||
public String getOwner() { return owner; }
|
||
public void setOwner(String owner) { this.owner = owner; }
|
||
|
||
public String getStatus() { return status; }
|
||
public void setStatus(String status) { this.status = status; }
|
||
|
||
public String getRemark() { return remark; }
|
||
public void setRemark(String remark) { this.remark = remark; }
|
||
|
||
public Instant getCreatedAt() { return createdAt; }
|
||
public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; }
|
||
}
|