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; /** * 融资业务主记录(金融办·融资管理)。一条 Financing 代表一笔对外融资/授信: * financingType 为 银行贷款 / 融资租赁 / 债券 / 票据 / 股权融资 之一; * repayMethod 为 等额本息 / 等额本金 / 到期一次还本付息 / 按期付息到期还本 之一; * status 流转 申请中 → 审批中 → 已放款 → 还款中 → 已结清,异常态 逾期 / 已驳回。 * creditLimit 为授信额度,amount 为本笔融资本金(提款金额),rate 为年化利率(%)。 * 还本付息计划由 {@link RepaymentPlan} 按本记录的 repayMethod / term / rate 自动生成。 */ @Entity @Table(name = "financing") public class Financing { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String code; /** 资金方 / 出借机构(银行 / 租赁公司 / 投资方)。 */ private String lender; /** 融资类型:银行贷款 / 融资租赁 / 债券 / 票据 / 股权融资。 */ private String financingType; /** 授信额度。 */ private BigDecimal creditLimit = BigDecimal.ZERO; /** 本笔融资本金(提款金额)。 */ private BigDecimal amount = BigDecimal.ZERO; private String currency; /** 年化利率(百分比,如 4.35 表示 4.35%)。 */ private BigDecimal rate; private String startDate; /** 到期日(用于到期分级预警)。 */ private String endDate; /** 期限(月)。 */ private Integer termMonths; /** 还款方式:等额本息 / 等额本金 / 到期一次还本付息 / 按期付息到期还本。 */ private String repayMethod; /** 申请中 / 审批中 / 已放款 / 还款中 / 已结清 / 逾期 / 已驳回。 */ private String status; private String companySubject; private String purpose; private String owner; private Instant createdAt; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getLender() { return lender; } public void setLender(String lender) { this.lender = lender; } public String getFinancingType() { return financingType; } public void setFinancingType(String financingType) { this.financingType = financingType; } public BigDecimal getCreditLimit() { return creditLimit; } public void setCreditLimit(BigDecimal creditLimit) { this.creditLimit = creditLimit; } public BigDecimal getAmount() { return amount; } public void setAmount(BigDecimal amount) { this.amount = amount; } public String getCurrency() { return currency; } public void setCurrency(String currency) { this.currency = currency; } public BigDecimal getRate() { return rate; } public void setRate(BigDecimal rate) { this.rate = rate; } public String getStartDate() { return startDate; } public void setStartDate(String startDate) { this.startDate = startDate; } public String getEndDate() { return endDate; } public void setEndDate(String endDate) { this.endDate = endDate; } 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 String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getCompanySubject() { return companySubject; } public void setCompanySubject(String companySubject) { this.companySubject = companySubject; } public String getPurpose() { return purpose; } public void setPurpose(String purpose) { this.purpose = purpose; } public String getOwner() { return owner; } public void setOwner(String owner) { this.owner = owner; } public Instant getCreatedAt() { return createdAt; } public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; } }