芋道 ruoyi-vue-pro 是一套全部开源的企业级快速开发平台,基于 Spring Boot 4.0 + Vue 3 构建,包含系统管理、工作流、CRM、ERP、MES、WMS、MDM 等多个业务模块。
| 模块 | 说明 | 表数量 |
|---|---|---|
| yudao-module-system | 系统管理(用户、角色、菜单、字典等) | 32 |
| yudao-module-infra | 基础设施(代码生成、文件、定时任务等) | 11 |
| yudao-module-bpm | 工作流引擎 | 8 |
| yudao-module-crm | 客户关系管理 | 19 |
| yudao-module-mdm | 主数据管理(统一物料、分类、单位等) | 6 |
| yudao-module-erp | 企业资源计划 | 33 |
| yudao-module-mes | 制造执行系统 | 71 |
| yudao-module-wms | 仓库管理系统 | 18 |
本项目已实现 MDM 主数据管理 模块,打通 ERP、MES、WMS 三个业务模块的数据孤岛:
┌─────────────────────────────────────┐
│ MDM 主数据管理模块 │
│ (物料、SKU、分类、单位、品牌) │
└──────────────┬──────────────────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ ERP 模块 │ │ WMS 模块 │ │ MES 模块 │
│ 产品 = 成品 │ │ 商品 = 物料 │ │ 物料 = 原料 │
│ itemType=2 │ │ itemType=1 │ │ itemType=1 │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
│ │ │
└──────────────────┼──────────────────┘
│
┌─────────────▼─────────────┐
│ WMS 库存管理 API │
│ (统一库存入库/出库/查询) │
└───────────────────────────┘
数据统一说明:
| 业务模块 | 原数据表 | 现数据源 | 物料类型映射 |
|---|---|---|---|
| ERP | erp_product | MDM Item | itemType=2(成品) |
| WMS | wms_item + wms_item_sku | MDM Item + SKU | itemType=1(物料) |
| MES | mes_md_item | MDM Item | itemType=1(物料) |
# 1. 创建数据库
CREATE DATABASE `ruoyi-vue-pro` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 2. 执行 SQL 脚本
mysql -u root -p ruoyi-vue-pro < docs/database_schema.sql
# 3. 导入初始数据(菜单、字典等)
mysql -u root -p ruoyi-vue-pro < sql/ruoyi-vue-pro.sql
# 1. 进入项目目录
cd ruoyi-vue-pro
# 2. 编译项目
mvn clean install -DskipTests
# 3. 启动服务
cd yudao-server
mvn spring-boot:run -Dspring-boot.run.profiles=local
# 1. 进入前端目录
cd yudao-ui-admin
# 2. 安装依赖
npm install
# 3. 启动开发服务器
npm run dev
MDM(Master Data Management)主数据管理模块是整个系统的数据核心,负责统一管理:
┌─────────────────────────────────────────────────────────────────┐
│ MDM 物料类型 (itemType) │
├─────────────────────────────────────────────────────────────────┤
│ 1 - 物料/原料 → 用于 WMS 商品、MES 物料 │
│ 2 - 成品/产品 → 用于 ERP 产品 │
│ 3 - 半成品 → 用于 MES 生产中间件 │
│ 4 - 辅料 → 用于生产辅助材料 │
└─────────────────────────────────────────────────────────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 创建物料 │ -> │ 设置分类 │ -> │ 配置 SKU │ -> │ 启用物料 │
│ 基本信息 │ │ 单位品牌 │ │ 规格价格 │ │ │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │
v v v
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 编码生成 │ │ 分类关联 │ │ 多规格支持 │
│ 条码管理 │ │ 单位换算 │ │ 价格体系 │
└─────────────┘ └─────────────┘ └─────────────┘
操作步骤:
涉及表:
- mdm_item - 物料主表
- mdm_item_sku - 物料 SKU 表
- mdm_item_category - 物料分类表
- mdm_unit_measure - 计量单位表
- mdm_brand - 品牌表
┌─────────────────────────────────────────────────────────────┐
│ 物料 (Item) │
│ id: 1001 code: ITEM001 name: T恤 │
├─────────────────────────────────────────────────────────────┤
│ SKU 列表 │
├─────────────────┬─────────────────┬─────────────────────────┤
│ SKU-001 │ SKU-002 │ SKU-003 │
│ 红色 / L │ 蓝色 / M │ 黑色 / XL │
│ 条码: 001REDL │ 条码: 001BLUEM │ 条码: 001BLACKXL │
│ 销售价: 99 │ 销售价: 99 │ 销售价: 109 │
└─────────────────┴─────────────────┴─────────────────────────┘
SKU 字段:
- SKU 编码、SKU 名称、SKU 条码
- 尺寸(长/宽/高)
- 重量(毛重/净重)
- 价格(成本价/销售价)
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 新增用户 │ -> │ 分配角色 │ -> │ 分配部门 │
└─────────────┘ └─────────────┘ └─────────────┘
│
v
┌─────────────┐
│ 启用/禁用 │
└─────────────┘
操作步骤:
涉及表:
- system_users - 用户表
- system_user_role - 用户角色关联表
- system_user_post - 用户岗位关联表
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 创建角色 │ -> │ 分配菜单 │ -> │ 分配数据 │
│ │ │ 权限 │ │ 权限范围 │
└─────────────┘ └─────────────┘ └─────────────┘
操作步骤:
涉及表:
- system_role - 角色表
- system_role_menu - 角色菜单关联表
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 创建流程 │ -> │ 设计表单 │ -> │ 设计流程 │ -> │ 发布流程 │
│ 分类 │ │ │ │ 图 │ │ │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
操作步骤:
涉及表:
- bpm_category - 流程分类表
- bpm_form - 表单定义表
- bpm_process_definition_info - 流程定义扩展表
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 发起申请 │ -> │ 提交审批 │ -> │ 审批处理 │ -> │ 流程归档 │
│ │ │ │ │ (通过/驳回)│ │ │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
审批人操作:
涉及表:
- bpm_oa_leave - 请假申请表(示例业务表)
- bpm_process_instance_copy - 流程抄送表
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 录入线索 │ -> │ 跟进线索 │ -> │ 转化客户 │ -> │ 分配负责人 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │
v v
┌─────────────┐ ┌─────────────┐
│ 线索池 │ │ 跟进记录 │
│ 公海回收 │ │ │
└─────────────┘ └─────────────┘
操作步骤:
涉及表:
- crm_clue - 线索表
- crm_customer - 客户表
- crm_follow_up_record - 跟进记录表
- crm_permission - 数据权限表
┌─────────────────────────────────────────────────────────────────┐
│ ERP 产品 = MDM 物料 (itemType=2) │
├─────────────────────────────────────────────────────────────────┤
│ ErpProductService │
│ │ │
│ ▼ │
│ MdmItemApi.createItem() ──→ MDM 创建物料 │
│ MdmItemApi.updateItem() ──→ MDM 更新物料 │
│ MdmItemApi.getItem() ──→ MDM 查询物料 │
│ MdmItemApi.getItemPage() ──→ MDM 分页查询 │
└─────────────────────────────────────────────────────────────────┘
字段映射:
| ERP 字段 | MDM 字段 | 说明 |
|---|---|---|
| id | id | 统一 ID |
| name | name | 产品名称 |
| barCode | barCode | 产品条码 |
| standard | specification | 规格型号 |
| unitId | unitMeasureId | 单位编号 |
| salePrice | salesPrice | 销售价格 |
| minPrice | costPrice | 最低价格/成本价 |
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 采购申请 │ -> │ 采购订单 │ -> │ 采购入库 │ -> │ 采购付款 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
v v v v
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 需求部门 │ │ 供应商 │ │ WMS入库 │ │ 财务 │
│ 发起 │ │ 确认 │ │ API调用 │ │ 结算 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
采购入库集成:
ERP 采购入库
│
▼
ErpStockRecordService.createStockRecord()
│
▼
WmsInventoryApi.receipt() ──→ WMS 入库操作
│
▼
WMS 库存增加
涉及表:
- erp_supplier - 供应商表
- erp_purchase_order - 采购订单表
- erp_purchase_in - 采购入库表
- erp_stock_record - 库存流水表(ERP 本地记录)
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 销售报价 │ -> │ 销售订单 │ -> │ 销售出库 │ -> │ 销售收款 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
v v v v
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 客户询价 │ │ 合同签订 │ │ WMS出库 │ │ 对账开票 │
│ │ │ │ │ API调用 │ │ │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
销售出库集成:
ERP 销售出库
│
▼
ErpStockRecordService.createStockRecord()
│
▼
WmsInventoryApi.shipment() ──→ WMS 出库操作
│
▼
WMS 库存减少
涉及表:
- erp_customer - 客户表
- erp_sale_order - 销售订单表
- erp_sale_out - 销售出库表
- erp_finance_receipt - 收款单表
┌─────────────────────────────────────────────────────────────────┐
│ ERP 库存 = WMS 库存 API │
├─────────────────────────────────────────────────────────────────┤
│ ErpStockService │
│ │ │
│ ▼ │
│ MdmItemSkuApi.getItemSkuListByItemId() ──→ 获取默认 SKU │
│ │ │
│ ▼ │
│ WmsInventoryApi.getAvailableQuantity() ──→ 查询可用库存 │
│ WmsInventoryApi.getInventoryList() ──→ 查询库存列表 │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ MES 物料 = MDM 物料 (itemType=1) │
├─────────────────────────────────────────────────────────────────┤
│ MesMdItemService │
│ │ │
│ ▼ │
│ MdmItemApi.getItem() ──→ MDM 查询物料 │
│ MdmItemApi.getItemList() ──→ MDM 查询物料列表 │
└─────────────────────────────────────────────────────────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 生产工单 │ -> │ 工单派工 │ -> │ 生产领料 │ -> │ 生产报工 │
│ 下达 │ │ │ │ │ │ │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
v v v v
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 计划排程 │ │ 任务分配 │ │ WMS出库 │ │ 进度反馈 │
│ 物料检查 │ │ 工作站指派 │ │ API调用 │ │ 质量记录 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│
v
┌─────────────┐
│ 生产入库 │
│ WMS入库 │
│ API调用 │
└─────────────┘
涉及表:
- mes_pro_work_order - 生产工单表
- mes_pro_task - 生产任务表
- mes_pro_work_record - 报工记录表
- mes_wm_item_consume - 物料消耗表
┌─────────────────────────────────────────────────────────────────┐
│ WMS 商品 = MDM 物料 (itemType=1) │
├─────────────────────────────────────────────────────────────────┤
│ WmsItemService │
│ │ │
│ ▼ │
│ MdmItemApi.createItem() ──→ MDM 创建物料 │
│ MdmItemApi.updateItem() ──→ MDM 更新物料 │
│ MdmItemApi.getItemPage() ──→ MDM 分页查询 │
│ MdmItemApi.getItemList() ──→ MDM 查询列表 │
└─────────────────────────────────────────────────────────────────┘
字段映射:
| WMS 字段 | MDM 字段 | 说明 |
|---|---|---|
| id | id | 统一 ID |
| code | code | 商品编码 |
| name | name | 商品名称 |
| unit | unitMeasure.name | 单位名称(从计量单位获取) |
| categoryId | categoryId | 分类编号 |
| brandId | brandId | 品牌编号 |
┌─────────────────────────────────────────────────────────────────┐
│ WMS 库存管理 API │
├─────────────────────────────────────────────────────────────────┤
│ WmsInventoryApi │
│ │ │
│ ├─ receipt() 入库操作 │
│ │ └─ 参数: bizType, bizId, warehouseId, items[] │
│ │ │
│ ├─ shipment() 出库操作 │
│ │ └─ 参数: bizType, bizId, warehouseId, items[] │
│ │ │
│ ├─ reserve() 库存预留(锁库存) │
│ │ └─ 参数: bizType, bizId, warehouseId, items[] │
│ │ │
│ ├─ releaseReserve() 释放预留 │
│ │ └─ 参数: reserveNo │
│ │ │
│ ├─ getInventoryList() 查询库存列表 │
│ │ └─ 参数: skuIds, warehouseIds, onlyPositive │
│ │ │
│ └─ getAvailableQuantity() 查询可用库存 │
│ └─ 参数: skuId, warehouseId │
└─────────────────────────────────────────────────────────────────┘
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 入库预约 │ -> │ 到货登记 │ -> │ 收货验收 │ -> │ 上架作业 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
v v v v
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ ERP采购单 │ │ 送货单据 │ │ 质量检验 │ │ 库位分配 │
│ MES生产入库 │ │ 车辆信息 │ │ 数量确认 │ │ 批次管理 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
API 调用示例:
// ERP/MES 调用 WMS 入库
WmsReceiptReqDTO req = new WmsReceiptReqDTO();
req.setBizType(WmsInventoryBizTypeEnum.PURCHASE_RECEIPT.getType());
req.setBizId(purchaseInId);
req.setBizNo(purchaseInNo);
req.setWarehouseId(warehouseId);
req.setItems(List.of(
new WmsReceiptReqDTO.Item(skuId, quantity, price)
));
wmsInventoryApi.receipt(req);
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 出库申请 │ -> │ 波次生成 │ -> │ 拣货作业 │ -> │ 发货确认 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│ │ │ │
v v v v
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 销售订单 │ │ 订单合并 │ │ 批次分配 │ │ 装车发运 │
│ 生产领料 │ │ 优先级排序 │ │ 库位指引 │ │ 物流跟踪 │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
API 调用示例:
// ERP/MES 调用 WMS 出库
WmsShipmentReqDTO req = new WmsShipmentReqDTO();
req.setBizType(WmsInventoryBizTypeEnum.SALE_SHIPMENT.getType());
req.setBizId(saleOutId);
req.setBizNo(saleOutNo);
req.setWarehouseId(warehouseId);
req.setItems(List.of(
new WmsShipmentReqDTO.Item(skuId, quantity)
));
wmsInventoryApi.shipment(req);
涉及表:
- wms_inventory - 库存表
- wms_inventory_history - 库存流水表
- wms_inventory_reserve - 库存预留表
┌─────────────────┐
│ MDM 模块 │
│ (物料主数据) │
└────────┬────────┘
│
┌──────────────┼──────────────┐
│ │ │
v v v
┌────────────┐ ┌────────────┐ ┌────────────┐
│ ERP 模块 │ │ WMS 模块 │ │ MES 模块 │
│ (成品) │ │ (物料+SKU) │ │ (物料) │
│ itemType=2 │ │ itemType=1 │ │ itemType=1 │
└─────┬──────┘ └─────┬──────┘ └─────┬──────┘
│ │ │
│ │ │
└───────────────┼───────────────┘
│
┌──────v──────┐
│ WMS 库存 │
│ API │
└─────────────┘
| API 接口 | 提供方 | 调用方 | 说明 |
|---|---|---|---|
| MdmItemApi | MDM | ERP/WMS/MES | 物料主数据 CRUD |
| MdmItemSkuApi | MDM | ERP/WMS/MES | SKU 管理 |
| MdmItemCategoryApi | MDM | ERP/WMS/MES | 物料分类 |
| MdmUnitMeasureApi | MDM | ERP/WMS/MES | 计量单位 |
| WmsInventoryApi | WMS | ERP/MES | 库存入库/出库/查询 |
| 业务场景 | 涉及模块 | 数据流向 | API 调用 |
|---|---|---|---|
| ERP 产品管理 | ERP → MDM | 产品 CRUD | MdmItemApi |
| WMS 商品管理 | WMS → MDM | 商品 CRUD | MdmItemApi |
| MES 物料管理 | MES → MDM | 物料查询 | MdmItemApi |
| 采购入库 | ERP → WMS | 库存增加 | WmsInventoryApi.receipt() |
| 销售出库 | ERP → WMS | 库存减少 | WmsInventoryApi.shipment() |
| 生产领料 | MES → WMS | 库存减少 | WmsInventoryApi.shipment() |
| 生产入库 | MES → WMS | 库存增加 | WmsInventoryApi.receipt() |
| 库存查询 | ERP/MES → WMS | 库存查询 | WmsInventoryApi.getAvailableQuantity() |
排查步骤:
system_login_log排查步骤:
crm_permission 表排查步骤:
排查步骤:
排查步骤:
wms_inventory_history 库存流水记录| 模块 | 后端路径 | 前端路径 |
|---|---|---|
| System | yudao-module-system | views/system |
| Infra | yudao-module-infra | views/infra |
| BPM | yudao-module-bpm | views/bpm |
| CRM | yudao-module-crm | views/crm |
| MDM | yudao-module-mdm | views/mdm |
| ERP | yudao-module-erp | views/erp |
| MES | yudao-module-mes | views/mes |
| WMS | yudao-module-wms | views/wms |
所有业务接口需要携带 Token 访问:
Authorization: Bearer {access_token}
Token 获取方式:调用登录接口 /system/auth/login
系统支持多租户模式,租户隔离通过 tenant_id 字段实现:
tenant_id| 文件 | 改造说明 |
|---|---|
| ErpProductServiceImpl | 产品 CRUD 调用 MdmItemApi |
| ErpStockServiceImpl | 库存查询调用 WmsInventoryApi |
| ErpStockRecordServiceImpl | 库存变更调用 WmsInventoryApi |
| WmsItemServiceImpl | 商品 CRUD 调用 MdmItemApi |
| MdmItemApi | MDM 物料 API 接口 |
| MdmItemSkuApi | MDM SKU API 接口 |
| WmsInventoryApi | WMS 库存 API 接口 |
文档版本: v2.0
更新日期: 2026-06-29
适用版本: ruoyi-vue-pro 2026.04-SNAPSHOT
核心改造: MDM 主数据管理模块集成,打通 ERP/MES/WMS 数据孤岛