docs/item_type_integration.md
@@ -1,111 +1,120 @@
# 物料分类统一使用 mes_md_item_type - 前端联调方案
# 物料分类统一使用 mdm_item_category - 前端联调方案
## 变更说明
物料分类已从 MES 模块迁移到 MDM 模块统一管理:
- 原 MES 分类表 `mes_md_item_type` 保留但不再维护
- 统一使用 MDM 分类表 `mdm_item_category`
- MES 模块通过兼容层读取 MDM 分类数据
## 涉及页面
- MDM 物料管理页面(新增/编辑物料)
- MES 物料管理页面(新增/编辑物料)
- MDM 物料分类管理页面(主要维护入口)
- MDM 物料管理页面(新增/编辑物料选择分类)
- MES 物料管理页面(新增/编辑物料选择分类)
## 业务流程与数据带入
1. 物料分类统一使用 `mes_md_item_type` 表,MDM 和 MES 模块共用同一套分类数据
2. 物料类型字段 `itemType` 用于快速选择:1原料、2半成品、3成品、4辅料
3. 当选择 `categoryId` 时,直接关联分类 ID;当只选择 `itemType` 时,系统自动匹配对应名称的分类
1. 物料分类统一使用 `mdm_item_category` 表,MDM 和 MES 模块共用同一套分类数据
2. 分类新增 `itemOrProduct` 字段兼容 MES 的 ITEM/PRODUCT 标识
3. 物料类型字段 `itemType` 用于快速选择:1原料、2半成品、3成品、4辅料
## 字段映射
| MDM 字段 (mdm_item_category) | MES 字段 (mes_md_item_type) | 说明 |
|------------------------------|----------------------------|------|
| id | id | 分类编号 |
| code | code | 分类编码 |
| name | name | 分类名称 |
| parentId | parentId | 父分类编号 |
| itemType (Integer) | itemOrProduct (String) | 类型标识 |
| sort | sort | 排序 |
| status | status | 状态 |
| remark | remark | 备注 |
### itemType 与 itemOrProduct 映射关系
| itemType | 说明 | itemOrProduct |
|----------|------|---------------|
| 1 | 物料 | ITEM |
| 2 | 产品 | PRODUCT |
| 3 | 半成品 | ITEM |
| NULL | 全部 | - |
## API
### 获取物料分类列表
### MDM 分类管理(主要接口)
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /admin-api/mes/md/item-type/list | 获取物料分类列表 |
| POST | /admin-api/mdm/category/create | 创建物料分类 |
| PUT | /admin-api/mdm/category/update | 更新物料分类 |
| DELETE | /admin-api/mdm/category/delete | 删除物料分类 |
| GET | /admin-api/mdm/category/get | 获取单个分类 |
| GET | /admin-api/mdm/category/list | 获取分类列表 |
| GET | /admin-api/mdm/category/list-all-simple | 获取启用的分类列表(下拉框) |
**请求参数:**
**请求参数(MdmItemCategorySaveReqVO):**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| status | Integer | 否 | 状态筛选 |
**响应字段:**
| 字段 | 类型 | 说明 |
|------|------|------|
| id | Long | 分类编号 |
| code | String | 分类编码 |
| name | String | 分类名称 |
| parentId | Long | 父分类编号 |
| itemOrProduct | String | 物料/产品标识 |
| sort | Integer | 排序 |
| status | Integer | 状态 |
| id | Long | 否 | 分类编号(更新时必填) |
| parentId | Long | 否 | 父分类编号 |
| code | String | 是 | 分类编码 |
| name | String | 是 | 分类名称 |
| itemType | Integer | 否 | 适用物料类型:1物料、2产品、3半成品、NULL全部 |
| itemOrProduct | String | 否 | 物料/产品标识:ITEM、PRODUCT(兼容MES) |
| sort | Integer | 否 | 排序 |
| status | Integer | 是 | 状态:0启用、1禁用 |
| remark | String | 否 | 备注 |
**响应示例:**
```json
{
  "code": 0,
  "data": [
    {
      "id": 1,
      "code": "RAW001",
      "name": "原料",
      "parentId": 0,
      "itemOrProduct": "1",
      "sort": 1,
      "status": 0
    }
  ]
  "data": {
    "id": 1,
    "parentId": 0,
    "code": "RAW001",
    "name": "原料",
    "itemType": 1,
    "itemOrProduct": "ITEM",
    "sort": 0,
    "status": 0
  }
}
```
### 获取物料分类详情
### MES 分类接口(兼容保留)
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /admin-api/mes/md/item-type/get | 获取物料分类详情 |
| GET | /admin-api/mes/md/item-type/list | 获取物料分类列表 |
| GET | /admin-api/mes/md/item-type/simple-list | 获取精简列表(下拉框) |
**请求参数:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | Long | 是 | 分类编号 |
### 保存物料分类
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /admin-api/mes/md/item-type/create | 创建物料分类 |
| PUT | /admin-api/mes/md/item-type/update | 更新物料分类 |
**请求参数:**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | Long | 否 | 分类编号(更新时必填) |
| code | String | 是 | 分类编码 |
| name | String | 是 | 分类名称 |
| parentId | Long | 否 | 父分类编号 |
| itemOrProduct | String | 否 | 物料/产品标识 |
| sort | Integer | 否 | 排序 |
| status | Integer | 否 | 状态 |
> 注意:MES 分类接口底层已改为读取 MDM 分类数据,建议前端统一使用 MDM 分类接口。
## 字段展示规则
| 字段 | 展示位置 | 说明 |
|------|----------|------|
| categoryId | 新增/编辑表单 | 物料分类下拉框,数据来源:mes_md_item_type |
| categoryId / itemTypeId | 新增/编辑表单 | 物料分类下拉框,数据来源:mdm_item_category |
| itemType | 新增/编辑表单 | 物料类型快捷选择:1原料、2半成品、3成品、4辅料 |
| itemOrProduct | 分类表单 | 物料/产品标识,用于 MES 兼容 |
## 业务规则说明
| 场景 | 规则 |
|------|------|
| 物料分类选择 | 使用 `mes_md_item_type` 表,MDM 和 MES 共用同一套分类数据 |
| itemType 与 categoryId 关系 | 当 categoryId 为空时,可根据 itemType 自动匹配对应名称的分类 |
| itemType 映射 | 1→原料,2→半成品,3→成品,4→辅料 |
| 分类校验 | 保存物料时,会通过 RPC API 校验分类是否存在 |
| 分类管理 | 统一在 MDM 模块管理,MES 模块只读 |
| 分类删除 | 有子分类或有物料引用时不可删除 |
| 物料同步 | MDM 物料同步到 MES 时,分类 ID 保持一致 |
| 兼容性 | MES 分类服务优先从 MDM 获取,本地表作为回退 |
## 注意事项
- 物料分类数据在 MES 模块管理,MDM 模块通过 RPC API 调用获取
- `itemType` 是快捷选择字段,最终会转换为对应的分类编码
- 如果同时设置了 `categoryId` 和 `itemType`,优先使用 `categoryId`
- 分类支持树形结构,可通过 `parentId` 构建层级关系
1. **菜单变更**:MES 的"物料产品分类"菜单已禁用,统一使用 MDM 的"物料分类"菜单
2. **数据一致性**:两表数据已同步,后续维护只需操作 MDM 分类
3. **API 兼容**:MES 分类接口保留,底层读取 MDM 数据,前端可继续使用
4. **字段转换**:前端展示时,`itemOrProduct` 值需转换为中文(ITEM=物料,PRODUCT=产品)