# MDM 产品数据一体化改造 - 前端文档
## 概述
本次改造将 MDM 物料作为统一产品主数据,CRM 和 ERP 模块的产品数据统一使用 MDM 物料(itemType=2 产品类型)。
---
## 一、改造清单
### 后端改造(已完成)
| 文件 | 改动说明 |
|------|----------|
| `yudao-module-mdm-api/` | MDM 物料 API 模块 |
| `MdmItemApi.java` | 物料 API 接口 |
| `MdmItemRespDTO.java` | 物料响应 DTO |
| `MdmItemCreateReqDTO.java` | 物料创建请求 DTO |
| `MdmItemUpdateReqDTO.java` | 物料更新请求 DTO |
| `MdmItemTypeEnum.java` | 物料类型枚举 |
| `ErpProductServiceImpl.java` | 使用 MDM 物料 API |
| `CrmProductServiceImpl.java` | 使用 MDM 物料 API |
---
## 二、涉及页面
### ERP 产品管理
| 页面 | 路径 | 改动说明 |
|------|------|----------|
| 产品列表 | `/erp/product/index` | 无需改动,接口兼容 |
| 产品表单 | `/erp/product/form` | 无需改动,接口兼容 |
### CRM 产品管理
| 页面 | 路径 | 改动说明 |
|------|------|----------|
| 产品列表 | `/crm/product/index` | 无需改动,接口兼容 |
| 产品表单 | `/crm/product/form` | 无需改动,接口兼容 |
### MDM 物料管理
| 页面 | 路径 | 说明 |
|------|------|------|
| 物料列表 | `/mdm/item/index` | 统一产品主数据入口 |
| 物料表单 | `/mdm/item/form` | 创建/编辑物料 |
---
## 三、数据模型映射
### MDM 物料类型
| 类型值 | 说明 | 用途 |
|--------|------|------|
| 1 | 物料 | 原材料、辅料等 |
| 2 | 产品 | 销售产品(CRM、ERP 使用) |
| 3 | 半成品 | 生产中间件 |
### 字段映射(MDM -> ERP)
| MDM 字段 | ERP 字段 | 说明 |
|----------|----------|------|
| id | id | 编号 |
| name | name | 名称 |
| barCode | barCode | 条码 |
| specification | standard | 规格 |
| categoryId | categoryId | 分类编号 |
| unitMeasureId | unitId | 单位编号 |
| status | status | 状态 |
| purchasePrice | purchasePrice | 采购价格 |
| salesPrice | salePrice | 销售价格 |
| costPrice | minPrice | 成本价 -> 最低价 |
| expiryDay | expiryDay | 保质期 |
| weight | weight | 重量 |
| remark | remark | 备注 |
### 字段映射(MDM -> CRM)
| MDM 字段 | CRM 字段 | 说明 |
|----------|----------|------|
| id | id | 编号 |
| code | no | 编码 |
| name | name | 名称 |
| unitMeasureId | unit | 单位 |
| salesPrice | price | 价格 |
| status | status | 状态 |
| categoryId | categoryId | 分类编号 |
| remark | description | 描述 |
---
## 四、API 接口
### MDM 物料 API
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /rpc-api/mdm/item/create | 创建物料 |
| PUT | /rpc-api/mdm/item/update | 更新物料 |
| GET | /rpc-api/mdm/item/get | 获取物料 |
| POST | /rpc-api/mdm/item/list | 获取物料列表 |
| POST | /rpc-api/mdm/item/page | 获取物料分页 |
| GET | /rpc-api/mdm/item/validate-exists | 校验物料存在 |
| GET | /rpc-api/mdm/item/get-by-code | 根据编码获取物料 |
| GET | /rpc-api/mdm/item/get-by-bar-code | 根据条码获取物料 |
### ERP 产品 API(保持不变)
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /erp/product/create | 创建产品 |
| PUT | /erp/product/update | 更新产品 |
| DELETE | /erp/product/delete | 删除产品 |
| GET | /erp/product/get | 获取产品 |
| GET | /erp/product/page | 获取产品分页 |
| GET | /erp/product/simple-list | 获取产品精简列表 |
### CRM 产品 API(保持不变)
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /crm/product/create | 创建产品 |
| PUT | /crm/product/update | 更新产品 |
| DELETE | /crm/product/delete | 删除产品 |
| GET | /crm/product/get | 获取产品 |
| GET | /crm/product/page | 获取产品分页 |
| GET | /crm/product/simple-list | 获取产品精简列表 |
---
## 五、前端修改点
### 5.1 产品选择组件(可选优化)
如果需要统一产品选择体验,可以创建 MDM 物料选择组件:
```html
{{ item.name }}
{{ item.barCode }}
```
### 5.2 使用方式
```html
```
---
## 六、注意事项
### 6.1 数据迁移
如果已有 ERP 或 CRM 产品数据,需要迁移到 MDM 物料表:
```sql
-- 迁移 ERP 产品到 MDM 物料(示例)
INSERT INTO mdm_item (id, code, name, bar_code, specification, category_id, unit_measure_id,
item_type, status, purchase_price, sales_price, cost_price, expiry_day, weight, remark,
creator, create_time, updater, update_time, deleted, tenant_id)
SELECT
id,
bar_code AS code,
name,
bar_code,
standard AS specification,
category_id,
unit_id AS unit_measure_id,
2 AS item_type, -- 产品类型
status,
purchase_price,
sale_price AS sales_price,
min_price AS cost_price,
expiry_day,
weight,
remark,
creator,
create_time,
updater,
update_time,
deleted,
tenant_id
FROM erp_product
WHERE deleted = 0;
-- 迁移 CRM 产品到 MDM 物料(需要处理 ID 冲突)
-- 注意:如果 ID 与 ERP 产品冲突,需要重新分配 ID 并更新关联数据
```
### 6.2 接口兼容性
- ERP 和 CRM 的产品接口保持不变,前端无需修改
- 数据实际从 MDM 获取,对前端透明
- 创建/更新操作通过 MDM API 执行
### 6.3 权限管理
- CRM 产品保留本地记录用于权限管理
- 产品 ID 与 MDM 物料 ID 保持一致
- 权限验证仍然通过 CRM 权限系统
### 6.4 废弃说明
- `erp_product` 表:保留但不再作为主数据源
- `crm_product` 表:保留用于权限管理,数据同步自 MDM
- 建议后续版本在前端菜单中统一使用 MDM 物料管理
---
## 七、后续计划
| Phase | 内容 | 状态 |
|-------|------|------|
| Phase 1 | 客户数据统一 - ERP 使用 CRM 客户 | **已完成** |
| Phase 2 | 产品数据统一 - CRM/ERP 使用 MDM 物料 | **已完成** |
| Phase 3 | 合同生成销售订单 | 待开始 |
| Phase 4 | 销售全流程追溯 | 待开始 |
| Phase 5 | 营销数据报表 | 待开始 |
| Phase 6 | 数据迁移与清理 | 待开始 |