一、概述
前面的文章讲的是整个系统的基础框架构建,相当于整个骨架,之后的文章讲得是系统的整个业务功能,相当于系统的血肉。 首先我们先讲一下支持业务系统的基础数据,其实每个模块都有他自己的基础数,为了和模块与模块之间的解耦,我把整个系统通用的基础数据抽取出来作为一个单独的模块。
二、功能讲解
在 MES 系统中,基础模块 是所有生产、库存、质量等业务流程的核心数据支撑。一个合理、完整的基础模块不仅影响系统稳定性,更决定后续业务的可扩展性和数据的准确性。本文结合实际项目经验,详细介绍基础模块的主要功能及关键字段设计。
基础数据模块主要包含下面几个功能:
- 物料信息
- 单位管理
- 物料类型
- 系列管理
- BOM管理
- 客户管理
- 供应商管理
下面我会对每个功能进行详细的讲解:
2.1. 物料信息
功能与作用
物料信息是整个 MES 的核心数据源,用于统一管理企业所有的生产、采购、销售、库存等相关物料。无论是原材料、半成品还是成品,都需要在此模块建立唯一编码和属性。
关键字段说明
| 字段名 | 数据类型 | 允许空置 | 主键 | 注释 |
|---|---|---|---|---|
| id | bigint | 否 | 是 | |
| material_code | varchar(255) | 是 | 否 | 全局唯一编码,建议采用规则化编码,如类别+序列号 |
| material_name | varchar(255) | 是 | 否 | 物料名称 |
| spec | varchar(255) | 是 | 否 | 规格、型号、尺寸信息 |
| series_id | bigint | 是 | 否 | 系列ID,关联系列表 |
| unit_id | bigint | 是 | 否 | 单位ID,关联单位表 |
| type_id | bigint | 是 | 否 | 类型ID,关联类型表 |
| status | tinyint | 是 | 否 | 状态,1有效0无效 |
| safe_stock_flag | tinyint | 是 | 否 | 是否设置安全库存 |
| min_stock | double(12, 4) | 是 | 否 | 最低库存量 |
| max_stock | double(12, 4) | 是 | 否 | 最大库存量 |
| description | varchar(255) | 是 | 否 | 描述 |
| create_by | bigint | 是 | 否 | |
| create_time | datetime | 是 | 否 | |
| update_by | bigint | 是 | 否 | |
| update_time | datetime | 是 | 否 |
扩展字段 根据不同的业务场景还可以扩展更多字段:
| 字段 | 说明 |
|---|---|
| 批次规则 | 物料根据什么规则管控,字典:批次管控、序列号管控、数量管控 |
| 条码规则 | 物料编码自动生成规则,这里选择的是定义的编码规则 |
| 标签模板 | 使用标签打印的时候,通过定义的标签模板,自动识别打印 |
| 是否虚拟件 | 非实物物料,可以定义为虚拟件 |
| ABC分类 | 如果管控严格,可以根据物料的贵重定义ABC类,字典:A类、B类、C类 |
| 保质期 | 部分原材料是有使用期限的,可以设置物料的保质期,通过仓库监控过了保质期会预警通知 |
| 是否免检 | 启用免检,物料会自动跳过质检过程,例如来料检不会生成检验单据 |
根据不同行业属性,可以扩展的字段,这里以电子行业为例:
| 字段 | 说明 |
|---|---|
| 启用锡膏 | 锡膏类物料,需要启用锡膏管控 |
| 回温时间 | 锡膏的回温时间 |
| 开封寿命 | 锡膏开封之后的保质期 |
| 可回温次数 | 锡膏开封后可以回温的次数 |
| 启用PCB | 启用PCB物料管控 |
| 是否阴阳板 | PCB板是否阴阳板 |
| 拼版数 | PCB板的 |
备注 如果扩展的字段过多,可以在编辑页面中使用
Tab标签把不同种类的字段进行分组。
2.2. 单位管理(Unit Management)
功能与作用
为确保不同物料在采购、生产、库存时计量一致,需要统一的单位管理。它定义了各种计量单位及其换算规则,如件、米、千克等。
关键字段说明
| 字典名 | 数据类型 | 允许空置 | 主键 | 注释 |
|---|---|---|---|---|
| id | bigint | 否 | 是 | |
| unit_code | varchar(128) | 是 | 否 | 单位编码 |
| unit_name | varchar(128) | 是 | 否 | 单位名称 |
| primary_flag | tinyint | 是 | 否 | 是否主单位 |
| change_rate | double(12, 4) | 是 | 否 | 与主单位换算 |
| status | tinyint | 是 | 否 | 状态 |
| description | varchar(255) | 是 | 否 | 描述 |
| create_by | bigint | 是 | 否 | |
| create_time | datetime | 是 | 否 | |
| update_by | bigint | 是 | 否 | |
| update_time | datetime | 是 | 否 |
设计要点:同一物料可能存在多种计量单位,例如采购用“千克”,生产用“克”,需要支持单位换算。
2.3. 物料类型(Material Category)
功能与作用
物料类型用于对物料进行分类管理,不同类型可绑定不同业务逻辑,如采购策略、库存管理方式、质检要求等。
物料类型为树形结构
关键字段说明
| 字段名 | 数据类型 | 允许空值 | 主键 | 注释 |
|---|---|---|---|---|
| id | bigint | 否 | 是 | |
| type_code | varchar(128) | 否 | 否 | 类型编码 |
| type_name | varchar(255) | 否 | 否 | 类型名称 |
| parent_id | bigint | 是 | 否 | 父类型ID |
| path | varchar(255) | 是 | 否 | 层级路径 |
| order_num | int | 是 | 否 | 排列顺序 |
| status | int | 是 | 否 | 状态,是否有效 |
| description | varchar(255) | 是 | 否 | 描述 |
| create_by | bigint | 是 | 否 | |
| create_time | datetime | 是 | 否 | |
| update_by | bigint | 是 | 否 | |
| update_time | datetime | 是 | 否 |
2.4. 系列管理(Series Management)
功能与作用
系列管理是指对同一系列或同一族群的物料进行归类,如“2025 年新品系列”或“某一产品家族”。常用于产品的批量管理、营销及生命周期控制。
关键字段说明
| 字段名 | 数据类型 | 允许空值 | 主键 | 注释 |
|---|---|---|---|---|
| id | bigint | 否 | 是 | |
| name | varchar(128) | 否 | 否 | 系列 |
| remark | varchar(255) | 是 | 否 | 描述 |
| create_by | bigint | 是 | 否 | |
| create_time | datetime | 是 | 否 | |
| update_by | bigint | 是 | 否 | |
| update_time | datetime | 是 | 否 |
2.5. BOM 管理(Bill of Materials)
功能与作用
BOM(物料清单)是生产的核心数据,定义了一个成品所需的所有原料、半成品及其数量、替代料等。MES 通过 BOM 实现生产计划与物料需求的精准匹配。
在生产过程中,如果存在多个BOM版本,则会优先使用默认版本,同一个物料只能有一个默认版本。 在mes系统中使用的是生产BOM,只有一层BOM结构不同于ERP中的多级BOM。
关键字段说明
产品BOM主表
| 字段名 | 数据类型 | 允许空置 | 主键 | 注释 |
|---|---|---|---|---|
| id | bigint | 否 | 是 | 流水号 |
| material_id | bigint | 否 | 否 | 物料产品ID |
| material_code | varchar(128) | 否 | 否 | 产品编码 |
| material_name | varchar(128) | 否 | 否 | 产品名称 |
| status | char | 否 | 否 | 是否启用 |
| version | varchar(32) | 否 | 否 | 版本号 |
| is_default | char | 否 | 否 | 是否默认版本 |
| effective_date | date | 是 | 否 | 生效日期 |
| remark | varchar(500) | 是 | 否 | 备注 |
| create_by | bigint | 是 | 否 | 创建者 |
| create_time | datetime | 是 | 否 | 创建时间 |
| update_by | bigint | 是 | 否 | 更新者 |
| update_time | datetime | 是 | 否 | 更新时间 |
| 产品BOM子表 |
| 字段名 | 数据类型 | 允许空值 | 主键 | 注释 |
|---|---|---|---|---|
| id | bigint | 否 | 是 | 流水号 |
| bom_id | bigint | 否 | 否 | 物料产品ID |
| material_id | bigint | 否 | 否 | 物料ID |
| qty | decimal(10, 4) | 否 | 否 | 数量 |
| loss_rate | decimal(5, 2) | 是 | 否 | 损耗率(%) |
| create_by | bigint | 是 | 否 | 创建者 |
| create_time | datetime | 是 | 否 | 创建时间 |
| update_by | bigint | 是 | 否 | 更新者 |
| update_time | datetime | 是 | 否 | 更新时间 |
备注: 支持多版本管理,以便追溯历史生产。
2.6. 客户管理(Customer Management)
功能与作用
客户信息是企业销售、售后及客户关系维护的基础。MES 通过客户管理,支持订单、出货及客户质量反馈的全流程。
关键字段说明
| 字段名 | 数据类型 | 允许空置 | 主键 | 注释 |
|---|---|---|---|---|
| id | bigint | 否 | 是 | 客户ID |
| client_code | varchar(64) | 否 | 否 | 客户编码 |
| client_name | varchar(255) | 否 | 否 | 客户名称 |
| client_nick | varchar(255) | 是 | 否 | 客户简称 |
| client_en | varchar(255) | 是 | 否 | 客户英文名称 |
| client_des | varchar(500) | 是 | 否 | 客户简介 |
| client_type | varchar(64) | 是 | 否 | 客户类型 |
| address | varchar(500) | 是 | 否 | 客户地址 |
| website | varchar(255) | 是 | 否 | 客户官网地址 |
| varchar(255) | 是 | 否 | 客户邮箱地址 | |
| tel | varchar(64) | 是 | 否 | 客户电话 |
| contact | varchar(64) | 是 | 否 | 联系人 |
| contact_tel | varchar(64) | 是 | 否 | 联系人-电话 |
| contact_email | varchar(255) | 是 | 否 | 联系人-邮箱 |
| credit_code | varchar(64) | 是 | 否 | 统一社会信用代码 |
| status | char | 否 | 否 | 是否启用 |
| remark | varchar(500) | 是 | 否 | 备注 |
| create_by | bigint | 是 | 否 | 创建者 |
| create_time | datetime | 是 | 否 | 创建时间 |
| update_by | bigint | 是 | 否 | 更新者 |
| update_time | datetime | 是 | 否 | 更新时间 |
备注:
- 一般客户信息都是从ERP系统或销售系统数据同步过来,需要根据具体情况添加字段。
- 客户管理可以再扩展一个功能,在编辑页面中添加客户对应的成品信息和对应的客户成品编码。在实际的项目当中,会出现打印的标签中,物料编码为客户的物料编码。
2.7. 供应商管理(Supplier Management)
功能与作用
供应商是企业采购环节的关键数据。该模块用于记录供应商基本信息、资质、付款条件等,为采购和质量管理提供基础。
关键字段说明
| 字段名 | 数据类型 | 允许空值 | 主键 | 注释 |
|---|---|---|---|---|
| id | bigint | 否 | 是 | 供应商ID |
| supplier_code | varchar(64) | 否 | 否 | 供应商编码 |
| supplier_name | varchar(255) | 否 | 否 | 供应商名称 |
| supplier_nick | varchar(255) | 是 | 否 | 供应商简称 |
| supplier_en | varchar(255) | 是 | 否 | 供应商英文名称 |
| supplier_des | varchar(500) | 是 | 否 | 供应商简介 |
| supplier_level | varchar(64) | 是 | 否 | 供应商等级 |
| supplier_score | int | 是 | 否 | 供应商评分 |
| address | varchar(500) | 是 | 否 | 供应商地址 |
| website | varchar(255) | 是 | 否 | 供应商官网地址 |
| varchar(255) | 是 | 否 | 供应商邮箱地址 | |
| tel | varchar(64) | 是 | 否 | 供应商电话 |
| contact | varchar(64) | 是 | 否 | 联系人 |
| contact_tel | varchar(64) | 是 | 否 | 联系人-电话 |
| contact_email | varchar(255) | 是 | 否 | 联系人-邮箱 |
| credit_code | varchar(64) | 是 | 否 | 统一社会信用代码 |
| status | char | 否 | 否 | 是否启用 |
| remark | varchar(500) | 是 | 否 | 备注 |
| create_by | bigint | 是 | 否 | 创建者 |
| create_time | datetime | 是 | 否 | 创建时间 |
| update_by | bigint | 是 | 否 | 更新者 |
| update_time | datetime | 是 | 否 | 更新时间 |
备注:
- 一般供应商信息都是从ERP系统或采购系统数据同步过来,需要根据具体情况添加字段。
- 扩展功能,可以添加供应商对应的物料信息。
三、结语
基础模块是 MES 的“地基”,任何后续的生产计划、库存管理、质量追溯都离不开这些数据的准确与完整。
在实际实施中,建议在系统上线前完成严格的数据清洗和编码规范制定,避免后续因数据不统一带来的维护成本。
通过以上设计,企业可以在统一的数据标准下实现跨部门协作,真正发挥 MES 系统的价值。
本文源码已上传Gitee 开源项目地址:
欢迎在评论区分享你的技术选型经验,或对本文方案的改进建议!
关注公众号「慧工云创」