合同台账
这篇解决什么
起草单 contract_info 和通过后的台账 contract_ledger 为什么分表。读完能改 /contract/info 和 /contract/ledger,不要在起草列表里改已生效金额冒充变更。
示意图:模板填进起草单。通过后登记台账,并可生成签署记录。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 起草 | /contract/info,key contract_approve | ruoyi-office/yudao-module-contract/.../ContractInfoController.java |
| 台账 | /contract/ledger | ContractLedgerController.java |
| 签署 | /contract/sign,key contract_sign | ContractSignController.java |
| 表 | 起草 / 台账 / 标的 / 签署 | contract_info、contract_ledger、contract_item、contract_sign |
| 前端 | 列表、detail、台账页、草稿列表 | ruoyi-office-vben/apps/web-antd/src/views/contract/info/ |
ContractInfoServiceImpl.onProcessApproved 会生成正文文件、登记附件,并按配置生成签署记录或直接生效。台账行用 draftContractId 指回起草单,两表字段相近但 不是 同一行 id。
contractType:1 销售 / 2 采购 / 3 服务 / 4 租赁 / 5 劳动 / 6 框架 / 99 其他。contractNature:1 收入 / 2 支出 / 3 无金额。日期 signDate / startDate / endDate 是 LocalDate。
对方单位优先 counterpartyMdmId(主数据伙伴)。counterpartyType + counterpartyId 兼容旧数据。甲乙方由 ourRole 映射,不要只改 partyBName 不同步对方。
正文在 contentHtml,占位在 fieldValuesJson。编辑页 info/doc-editor/。模板版本写 templateId + templateVersion。
移动发起权限 contract:info:create,创建页 pages-contract/info/create。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
billCode / contractCode | 单据号与合同号 | ContractInfoDO |
totalAmount / performanceAmount | 总额与已履约 | 同上 |
draftContractId | 台账回挂起草 | ContractLedgerDO |
status / processStatus | 合同态与审批态 | ContractInfoDO |
台账不是第二张起草单
已生效合同改金额走变更单。直接 UPDATE contract_ledger 不会留 amountBefore / amountAfter。
详情路径是 detail
模型 formCustomViewPath 应对 contract/info/detail(或当前菜单 component)。写成 info/info 会白屏。
@RequestMapping("/contract/info")
public class ContractInfoController { }
@TableName(value = "contract_ledger", autoResultMap = true)
public class ContractLedgerDO extends TenantBaseDO { }配置与操作
先在 合同 → 合同分类 / 合同模板 建分类和模板。起草走草稿列表或 contract-info-detail,选模板填对方、金额、起止日后提交。contractType 与 ourRole 要和对方主数据对上,不要只改 partyBName。
审批通过后看 合同台账(contract_ledger),不要在起草列表改已生效金额。详情路径是 info/detail,模型不要写成 info/info。

本系统截图:合同 → 合同台账。点编号进详情。

本系统截图:起草 / 台账详情。日期是 LocalDate。
