4.6 KiB
4.6 KiB
报价单管理模块迁移方案 — 06 分步实施计划
范围:报价单 全量功能(含 PDF、分享、转合同、统计、导出),无 MVP 裁剪。
快照:每步 Sub-step 0 执行snapshot-java.sh,只拷本步文件(见reference/java/README.md)。
完成标准:04-api-spec.md对应行 ✅ + 该步手测通过。
阶段 A:方案(已完成)
| 步骤 | 内容 | 状态 |
|---|---|---|
| A1 | 01 / 04 / 05 / 06 + 前置方案 |
✅ |
| A2 | 决策:供方同步 + 合同 create 先行 + 全量功能 + 按需快照 | ✅ |
阶段 P0:供方信息 crm_supplier_info
详案:
plans/supplier-info/01-overview.md
阻塞:报价单 C4(新增)及编号生成。
| 步骤 | Sub-step 0 快照 | 实施 | 完成标准 |
|---|---|---|---|
| P0-1 | supplier-info Controller + ServiceImpl + domain + mapper |
DDL + Model + Schema + CRUD + API(list/listAll/detail/add/update/delete/export) | ✅ 2026-05-31 |
阶段 P1:合同 create(报价转合同前置)
详案:
plans/contract/01-prerequisite-create-for-quote.md
阻塞:报价单 C14(转合同)。
| 步骤 | Sub-step 0 快照 | 实施 | 完成标准 |
|---|---|---|---|
| P1-1 | contract Controller + ContractServiceImpl + ProductServiceImpl + Bo/Entity |
crm_contract 字段补全 + crm_contract_product DDL + create_contract(含产品 batch) |
✅ 2026-05-31 |
阶段 P2:报价单后端(全量 C1–C16)
P2-0 基础设施
| 步骤 | 快照 | 实施 | 状态 |
|---|---|---|---|
| B1 | — | incremental_crm_quote.sql(4 表) |
✅ |
| B2 | domain/CrmQuote*.java |
Model + Schema 骨架 | ✅ |
P2-1 对照翻译
每步:0 快照 → 1 写 Python → 2 打 ✅
| 步骤 | Sub-step 0 快照(示例命令) | 翻译范围 | 04-api |
|---|---|---|---|
| C1 | quote service/impl/CrmQuoteServiceImpl.java(整文件,首拷) |
buildQueryWrapper + list + canApprove + fillContractLinkedCount |
#1 |
| C2 | 同上(已快照则跳过) | queryById |
#2 |
| C3 | quote service/impl/CrmQuoteProductServiceImpl.java + mapper |
产品 CRUD + batchInsert/deleteByQuoteId | product |
| C4 | quote ServiceImpl + product CrmProductServiceImpl.resolveProductIdForQuoteItem |
insertByBo + 编号 + 金额 |
#3 |
| C5 | quote ServiceImpl |
updateByBo + deleteWithValidByIds |
#4-5 |
| C6 | quote ServiceImpl + quote ApprovalServiceImpl |
submitQuote + createApprovalRecords |
#6 |
| C7 | quote Approval* + resources/mapper/crm/CrmQuoteApprovalMapper.xml |
审批 list + approve | approval #1-2 |
| C8 | quote ApprovalServiceImpl |
withdraw + canUserApprove | approval #3-4 |
| C9 | quote ServiceImpl |
accept / reject / invalid | #12-13, #22 |
| C10 | quote ServiceImpl |
newVersion + versions | #15-16 |
| C11 | quote ServiceImpl |
saveTemplate + getTemplate | #7-8 |
| C12 | quote PdfServiceImpl + resources/templates/quote-pdf.html |
generatePdf → MinIO | #9 |
| C13 | quote ServiceImpl + ShareLogServiceImpl |
generateShare + 公开 share + shareLog | #10-11, shareLog |
| C14 | quote ServiceImpl toContract + P1 已实现的 contract create |
转合同联调 | ✅ 2026-05-31 |
| C15 | quote ServiceImpl |
statistics ×3 | #18-20 |
| C16 | quote domain/vo/CrmQuoteVo.java |
export + QUOTE_EXPORT_COLUMNS |
#17 |
C4 额外快照(产品解析,非报价目录):
./docs/crm-migration/scripts/snapshot-java.sh product \
service/impl/CrmProductServiceImpl.java
C13 公开路由:GET /api/public/crm/quote/share/{shareCode}(无 JWT)。
阶段 P3:前端 ✅(2026-05-31)
| 步骤 | 内容 | 说明 | 状态 |
|---|---|---|---|
| D1 | 拷贝 views/crm/quote/ + API |
与线索/商机相同 | ✅ |
| D2 | POST + /web/crm/quote/* |
对齐 04-api-spec |
✅ |
| D3 | Fresh Mint + 组件适配 | DictTag / ListPagination / modal shim | ✅ |
| D4 | useQuotePerm |
menu-codes | ✅ |
可与 P2 C1 之后并行联调。
阶段 P4:验证
| 步骤 | 内容 |
|---|---|
| E1 | 07-verify.md 全功能清单(含 PDF/分享/转合同) |
| E2 | 状态机全路径手测 |
| E3 | check_field_consistency.py |
| E4 | 更新 module-status.md |
禁止
- ❌ 暂缓 PDF / 分享 / 转合同
- ❌ 方案阶段全量快照 Java(探索性
quote/目录保留即可,不作为「已实施」依据) - ❌ 供方默认写死 SX(须 P0 真实数据)