SNAPSHOT W7 已部署稳定态 — 凯迪ERP+OA一体化平台 (MET 73.3%)
恢复点(restore point)。别人改崩后可 git reset --hard 回到此提交。 == 此快照内容 == - 后端 oa-backend: 734 控制器 / 711 实体 (Spring Boot 3.2.5 + SQLite, 端口8091) - 前端 modern-ui/app: Vue3+Vite, 约700页 (构建产物已在 oa-backend/src/main/resources/static) - 数据库 oa-backend/data/oa.db: 含全部演示数据 (强制入库, 6.6MB) - 交接文档 go.md + go-code-reference/endpoints/entities/database.md - 多代理建设脚本 .claude/wf-*.js == 状态 == - 对 凯迪科技ERP_20260507.xlsx 合规 MET ~73.3% (PARTIAL 75: 34可建+6种子/bug+35外部硬天花板) - 安全: 5轮红队+5轮复检, default-deny分级鉴权, 连续零可利用 - W3~W7 累计补完436缺口; W8末轮(40缺口)为半成品(源码树可编译但未集成) - 运行: cd oa-backend; java -jar build/libs/oa-backend-0.1.0.jar --server.port=8091; admin/123456 == 排除(gitignore, 可再生) == node_modules / oa-backend/build / .jdks / *.log / Backup-ERP-* / 弃用的OFBiz核心(只保留modern-ui) 完整文件夹备份见同目录 Backup-ERP-20260615-191517/ (含上述全部, 仅缺 node_modules) 时间戳: 20260615-191517 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
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 Double annualRate;
|
||||
|
||||
/** 期限(月)。 */
|
||||
private Integer termMonths;
|
||||
|
||||
/** 还款方式:等额本息 / 等额本金 / 到期一次还本付息 / 按期付息到期还本。 */
|
||||
private String repayMethod;
|
||||
|
||||
/** 手续费(一次性)。 */
|
||||
private BigDecimal handlingFee = BigDecimal.ZERO;
|
||||
|
||||
/** 担保方式:信用贷 / 抵押 / 质押 / 保证 / 组合担保。 */
|
||||
private String guaranteeType;
|
||||
|
||||
/** 担保费率(年化,百分比)。 */
|
||||
private Double guaranteeRate;
|
||||
|
||||
/** 提款条件(文字描述)。 */
|
||||
private String drawdownConditions;
|
||||
|
||||
/**
|
||||
* 系统自动计算的综合成本率(利息+费用+担保成本之和/本金,IRR 简化口径,百分比)。
|
||||
* 创建/更新时服务端根据 rate+费用+担保自动回填。
|
||||
*/
|
||||
private Double 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 Double getAnnualRate() { return annualRate; }
|
||||
public void setAnnualRate(Double 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 Double getGuaranteeRate() { return guaranteeRate; }
|
||||
public void setGuaranteeRate(Double guaranteeRate) { this.guaranteeRate = guaranteeRate; }
|
||||
|
||||
public String getDrawdownConditions() { return drawdownConditions; }
|
||||
public void setDrawdownConditions(String drawdownConditions) { this.drawdownConditions = drawdownConditions; }
|
||||
|
||||
public Double getEffectiveCostRate() { return effectiveCostRate; }
|
||||
public void setEffectiveCostRate(Double 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; }
|
||||
}
|
||||
Reference in New Issue
Block a user