编辑 | blame | 历史 | 原始文档

CRM 与 ERP 销售一体化改造计划

一、现状分析

1.1 当前问题

问题 说明
客户数据独立 CRM 客户 (crm_customer) 和 ERP 客户 (erp_customer) 是两张完全独立的表,无法共享
产品数据独立 CRM 产品 (crm_product) 和 ERP 产品 (erp_product) 独立维护
合同与订单脱节 CRM 合同审批通过后无法自动生成 ERP 销售订单
回款数据独立 CRM 回款 (crm_receivable) 和 ERP 收款单 (erp_finance_receipt) 无关联
销售流程断裂 线索 → 客户 → 商机 → 合同 → 订单 → 出库 → 收款,流程在合同和订单之间断裂

1.2 改造目标

根据需求描述,改造目标为:

  1. 统一客户管理 - CRM 客户作为统一客户主数据,ERP 使用 CRM 客户
  2. 统一产品管理 - ERP 产品作为产品主数据,CRM 使用 ERP 产品
  3. 销售流程打通 - 合同审批通过后可生成销售订单,实现全流程追溯
  4. 销售数据联动 - 销售订单状态实时同步,支持销售决策分析
  5. 营销数据报表 - 整合 CRM 和 ERP 数据,提供完整的销售分析报表

二、分批改造计划

Phase 1: 客户数据统一(预计 2 天)

目标: 统一客户主数据,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


Phase 2: 产品数据统一(预计 1 天)

目标: 统一产品主数据,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 层


Phase 3: 合同生成销售订单(预计 2 天)

目标: 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


Phase 4: 销售全流程追溯(预计 1 天)

目标: 实现从线索到收款的完整销售流程追溯

改造内容:

序号 改造项 说明
4.1 商机关联销售订单 crm_business 增加订单关联,支持商机直接下单
4.2 销售订单状态回写 出库/退货/收款状态实时回写到订单和关联合同
4.3 全流程查询接口 提供按客户/商机/合同查询完整销售链路的接口

涉及文件:
- 修改: CrmBusinessDO.java
- 新增: CrmSaleTraceService.java


Phase 5: 营销数据报表(预计 2 天)

目标: 整合 CRM 和 ERP 数据,提供销售决策报表

改造内容:

序号 改造项 说明
5.1 销售漏斗分析增强 整合 ERP 订单数据,展示从商机到订单的转化率
5.2 客户销售分析 按客户统计:商机金额、合同金额、订单金额、出库金额、收款金额
5.3 销售业绩分析 整合 CRM 商机/合同和 ERP 订单/收款,计算销售业绩
5.4 销售趋势分析 按时间维度分析销售趋势
5.5 销售排行榜 综合排名:商机、合同、订单、收款

涉及文件:
- 修改: CRM 统计相关 Service
- 新增: CrmErpSalesStatisticsService.java


Phase 6: 数据迁移与清理(预计 1 天)

目标: 将现有数据迁移到统一结构

改造内容:

序号 改造项 说明
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 数据迁移可在系统稳定后进行

四、技术方案要点

4.1 跨模块调用方案

使用模块间 API 调用:
- CRM 提供 CrmCustomerApi 供 ERP 调用
- ERP 提供 ErpProductApiErpSaleOrderApi 供 CRM 调用

4.2 数据一致性方案

  • 使用 Spring Event 进行模块间事件通知
  • 关键操作使用事务保证一致性
  • 增加数据同步状态字段,支持异常恢复

4.3 权限控制方案

  • CRM 客户沿用现有的团队权限机制
  • ERP 模块通过 API 查询客户时,需校验数据权限

五、风险与注意事项

风险 应对措施
现有数据迁移复杂 提供迁移脚本和回滚脚本,分批迁移
跨模块调用性能 使用缓存减少 API 调用,批量查询优化
权限控制复杂 统一权限校验逻辑,复用 CRM 权限服务
业务流程变更 充分测试,提供用户培训文档

六、交付物

每个 Phase 完成后交付:
1. SQL 脚本 - 表结构变更、数据迁移
2. 前端文档 - 接口变更、页面修改说明
3. 测试用例 - 功能测试、回归测试