112 lines
4.6 KiB
Markdown
112 lines
4.6 KiB
Markdown
# 报价单管理模块迁移方案 — 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 额外快照**(产品解析,非报价目录):
|
||
|
||
```bash
|
||
./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 真实数据)
|