| 问题 | 说明 |
|---|---|
| 客户数据独立 | CRM 客户 (crm_customer) 和 ERP 客户 (erp_customer) 是两张完全独立的表,无法共享 |
| 产品数据独立 | CRM 产品 (crm_product) 和 ERP 产品 (erp_product) 独立维护 |
| 合同与订单脱节 | CRM 合同审批通过后无法自动生成 ERP 销售订单 |
| 回款数据独立 | CRM 回款 (crm_receivable) 和 ERP 收款单 (erp_finance_receipt) 无关联 |
| 销售流程断裂 | 线索 → 客户 → 商机 → 合同 → 订单 → 出库 → 收款,流程在合同和订单之间断裂 |
根据需求描述,改造目标为:
目标: 统一客户主数据,ERP 销售模块使用 CRM 客户
改造内容:
| 序号 | 改造项 | 说明 |
|---|---|---|
| 1.1 | 创建 CRM 客户 API 模块 | 暴露客户查询接口供 ERP 调用 |
| 1.2 | ERP 销售订单关联 CRM 客户 | erp_sale_order.customer_id 改为关联 crm_customer.id |
| 1.3 | ERP 销售出库关联 CRM 客户 | erp_sale_out.customer_id 改为关联 crm_customer.id |
| 1.4 | ERP 销售退货关联 CRM 客户 | erp_sale_return.customer_id 改为关联 crm_customer.id |
| 1.5 | ERP 收款单关联 CRM 客户 | erp_finance_receipt.customer_id 改为关联 crm_customer.id |
| 1.6 | 废弃 ERP 客户表 | 标记废弃,保留数据迁移接口 |
涉及文件:
- 新增: yudao-module-crm-api/ 模块
- 修改: ErpSaleOrderDO.java, ErpSaleOutDO.java, ErpSaleReturnDO.java
- 修改: ErpSaleOrderServiceImpl.java, ErpSaleOutServiceImpl.java, ErpSaleReturnServiceImpl.java
目标: 统一产品主数据,CRM 使用 ERP 产品
改造内容:
| 序号 | 改造项 | 说明 |
|---|---|---|
| 2.1 | 创建 ERP 产品 API 模块 | 暴露产品查询接口供 CRM 调用 |
| 2.2 | CRM 商机产品关联 ERP 产品 | crm_business_product.product_id 改为关联 erp_product.id |
| 2.3 | CRM 合同产品关联 ERP 产品 | crm_contract_product.product_id 改为关联 erp_product.id |
| 2.4 | 废弃 CRM 产品表 | 标记废弃,保留数据迁移接口 |
涉及文件:
- 新增: yudao-module-erp-api/ 模块(如果不存在)
- 修改: CrmBusinessProductDO.java, CrmContractProductDO.java
- 修改: CRM 商机/合同 Service 层
目标: CRM 合同审批通过后可生成 ERP 销售订单
改造内容:
| 序号 | 改造项 | 说明 |
|---|---|---|
| 3.1 | ERP 销售订单增加关联合同字段 | 新增 contract_id, contract_no 字段 |
| 3.2 | CRM 合同增加订单关联字段 | 新增 order_id, order_no 字段 |
| 3.3 | 合同生成订单接口 | 合同审批通过后,调用 ERP 服务生成销售订单 |
| 3.4 | 合同状态监听器 | 监听合同审批通过事件,自动/手动触发订单生成 |
涉及文件:
- 修改: ErpSaleOrderDO.java, CrmContractDO.java
- 新增: CrmContractToOrderService.java
- 修改: CrmContractStatusListener.java
目标: 实现从线索到收款的完整销售流程追溯
改造内容:
| 序号 | 改造项 | 说明 |
|---|---|---|
| 4.1 | 商机关联销售订单 | crm_business 增加订单关联,支持商机直接下单 |
| 4.2 | 销售订单状态回写 | 出库/退货/收款状态实时回写到订单和关联合同 |
| 4.3 | 全流程查询接口 | 提供按客户/商机/合同查询完整销售链路的接口 |
涉及文件:
- 修改: CrmBusinessDO.java
- 新增: CrmSaleTraceService.java
目标: 整合 CRM 和 ERP 数据,提供销售决策报表
改造内容:
| 序号 | 改造项 | 说明 |
|---|---|---|
| 5.1 | 销售漏斗分析增强 | 整合 ERP 订单数据,展示从商机到订单的转化率 |
| 5.2 | 客户销售分析 | 按客户统计:商机金额、合同金额、订单金额、出库金额、收款金额 |
| 5.3 | 销售业绩分析 | 整合 CRM 商机/合同和 ERP 订单/收款,计算销售业绩 |
| 5.4 | 销售趋势分析 | 按时间维度分析销售趋势 |
| 5.5 | 销售排行榜 | 综合排名:商机、合同、订单、收款 |
涉及文件:
- 修改: CRM 统计相关 Service
- 新增: CrmErpSalesStatisticsService.java
目标: 将现有数据迁移到统一结构
改造内容:
| 序号 | 改造项 | 说明 |
|---|---|---|
| 6.1 | ERP 客户迁移到 CRM | 数据迁移 SQL 脚本 |
| 6.2 | CRM 产品迁移到 ERP | 数据迁移 SQL 脚本 |
| 6.3 | 数据校验脚本 | 验证迁移后数据完整性 |
| 优先级 | Phase | 说明 |
|---|---|---|
| P0 | Phase 1 | 客户统一是基础,必须最先完成 |
| P0 | Phase 2 | 产品统一是基础,必须最先完成 |
| P1 | Phase 3 | 合同生成订单是核心业务流程 |
| P1 | Phase 4 | 全流程追溯是合规要求 |
| P2 | Phase 5 | 报表分析可后续完善 |
| P2 | Phase 6 | 数据迁移可在系统稳定后进行 |
使用模块间 API 调用:
- CRM 提供 CrmCustomerApi 供 ERP 调用
- ERP 提供 ErpProductApi、ErpSaleOrderApi 供 CRM 调用
| 风险 | 应对措施 |
|---|---|
| 现有数据迁移复杂 | 提供迁移脚本和回滚脚本,分批迁移 |
| 跨模块调用性能 | 使用缓存减少 API 调用,批量查询优化 |
| 权限控制复杂 | 统一权限校验逻辑,复用 CRM 权限服务 |
| 业务流程变更 | 充分测试,提供用户培训文档 |
每个 Phase 完成后交付:
1. SQL 脚本 - 表结构变更、数据迁移
2. 前端文档 - 接口变更、页面修改说明
3. 测试用例 - 功能测试、回归测试