Appearance
物料主数据管理
**本文引用的文件** - [PartMainDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-common/src/main/java/com/lenovo/lemes/service/dm/store/entity/PartMainDo.java) - [SupplierDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-common/src/main/java/com/lenovo/lemes/service/dm/store/entity/SupplierDo.java) - [ManufacturerDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-common/src/main/java/com/lenovo/lemes/service/dm/store/entity/ManufacturerDo.java) - [PartMainApi.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-common/src/main/java/com/lenovo/lemes/service/dm/device/api/PartMainApi.java) - [BaseEntity.java(公共基类)](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/tools/entity/BaseEntity.java) - [BaseEntity.java(作业执行器基类)](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/BaseEntity.java) - [SysFactory.java](file://lemes-job-devicemate/lemes-job-devicemate-common/src/main/java/com/lenovo/lemes/job/devicemate/common/entity/SysFactory.java) - [FactoryDo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/entity/FactoryDo.java) - [FactoryVo.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/vo/outer/FactoryVo.java) - [index.vue(工厂选择组件)](file://dm/lemes-web/src/components/factory-select/index.vue) - [material-template.xlsx(物料导入模板)](file://dm/lemes-web/src/assets/download/excelTemplate/material-template.xlsx) - [materialInfo.xlsx(物料信息模板)](file://dm/lemes-web/src/assets/download/excelTemplate/materialInfo.xlsx) - [materialPrtInfo.xlsx(物料扩展属性模板)](file://dm/lemes-web/src/assets/download/excelTemplate/materialPrtInfo.xlsx) - [materialExtendAttr.xlsx(物料扩展属性模板)](file://dm/lemes-web/src/assets/download/excelTemplate/materialExtendAttr.xlsx) - [materialOnline.vue(在线物料界面)](file://dm/lemes-web/src/views/wh/material/materialOnline.vue) - [materialOnlineUp.vue(在线物料上传)](file://dm/lemes-web/src/views/wh/material/materialOnlineUp.vue) - [materialOnlineContinue.vue(在线物料继续)](file://dm/lemes-web/src/views/wh/material/materialOnlineContinue.vue) - [materialStackData.vue(物料堆存数据)](file://dm/lemes-web/src/views/wh/material/materialStackData.vue) - [materialboard.vue(物料看板)](file://dm/lemes-web/src/views/wh/material/materialboard.vue) - [materialRequest.vue(物料需求申请)](file://dm/lemes-web/src/views/prom/material/materialRequest/materialRequest.vue) - [materialRequestHis.vue(物料需求申请历史)](file://dm/lemes-web/src/views/prom/material/materialRequest/materialRequestHis.vue) - [materialRequestPage.vue(物料需求申请分页)](file://dm/lemes-web/src/views/prom/material/materialRequest/materialRequestPage.vue) - [materialProductImport.vue(物料产品导入)](file://dm/lemes-web/src/views/prom/order/materialProductImport.vue) - [materialPrtInfoImport.vue(物料打印信息导入)](file://dm/lemes-web/src/views/prom/material/materialPrtInfoImport.vue) - [materialExtendImport.vue(物料扩展属性导入)](file://dm/lemes-web/src/views/prom/material/materialExtendImport.vue) - [partMain.vue(物料主数据界面)](file://dm/lemes-web/src/views/devicemate/information/partMain/partMain.vue) - [partMain.js(物料主数据API封装)](file://dm/lemes-web/src/views/devicemate/api/information/partMain/partMain.js) - [supplier.vue(供应商界面)](file://dm/lemes-web/src/views/devicemate/information/supplier/supplier.vue) - [supplier.js(供应商API封装)](file://dm/lemes-web/src/views/devicemate/api/information/supplier/supplier.js) - [manufacturer.vue(制造商界面)](file://dm/lemes-web/src/views/devicemate/information/manufacturer/manufacturer.vue) - [manufacturer.js(制造商API封装)](file://dm/lemes-web/src/views/devicemate/api/information/manufacturer/manufacturer.js) - [material-header-code-list.vue(供应商物料头代码列表)](file://dm/lemes-web/src/views/kms/vendor/materialHeaderCodeList.vue) - [material-extend-import.vue(物料扩展属性导入)](file://dm/lemes-web/src/views/prom/material/materialExtendImport.vue) - [material-prt-info-import.vue(物料打印信息导入)](file://dm/lemes-web/src/views/prom/material/materialPrtInfoImport.vue) - [material-product-import.vue(物料产品导入)](file://dm/lemes-web/src/views/prom/order/materialProductImport.vue)目录
引言
本技术文档围绕“物料主数据管理”模块展开,系统性阐述PartMainDo(物料主数据)、SupplierDo(供应商)、ManufacturerDo(制造商)三类核心实体的设计理念与业务含义;并结合前端界面与后端API,说明物料分类、属性配置、替代关系、导入导出、批量维护、数据校验等高级能力在系统中的落地方式。同时,文档展示物料主数据与库存管理、采购管理、生产管理等模块的集成路径,帮助读者快速理解从数据模型到业务流程的全链路实现。
项目结构
物料主数据相关能力横跨前端Vue页面、后端通用公共模块与设备/存储/工作流等业务子模块,并通过统一的公共基类与工厂维度进行扩展。下图给出与物料主数据相关的关键文件与模块关系概览:
图表来源
- PartMainApi.java:1-44
- PartMainDo.java:1-130
- SupplierDo.java:1-73
- ManufacturerDo.java:1-73
- BaseEntity.java(公共基类):1-123
- FactoryDo.java:1-42
- FactoryVo.java:1-49
- BaseEntity.java(作业执行器基类):53-103
- SysFactory.java:1-86
章节来源
核心组件
本节聚焦物料主数据的核心实体与接口,阐明其设计理念与业务含义。
PartMainDo(物料主数据)
- 设计理念:以“物料代号/编码+分类+规格+计量单位+控制类型+价格币种+首选供应商+有效期/寿命属性+ABC分类+可用标志+备注+包装数量+序列号规则”为核心字段集合,覆盖库存、采购、生产、质量等多环节对物料的基础描述与控制要求。
- 关键字段说明(部分):
- 物料代号/编码:用于系统内唯一识别与跨模块引用
- 分类:大类/小类/子类三级分类体系,支撑统计与分析
- 规格:描述物料物理或技术特性
- 计量单位:支持多单位换算与库存核算
- 控制类型:用于库存策略与安全策略控制
- 价格/币种:支持多币种价格管理
- 首选供应商:用于采购优先级与供应商评估联动
- 有效期/寿命:寿命件与有效期件的生命周期管理
- ABC分类:高价值/高风险物料的分级管理
- 可用标志:启用/停用控制
- 包装数量/序列号规则:影响出入库与盘点策略
SupplierDo(供应商)
- 设计理念:以“供应商代号/编码+名称+地址/联系人/电话/邮箱/传真/网址+可用标志+备注”为核心,支撑供应商信息维护与评估的基础数据结构。
- 关键字段说明(部分):
- 供应商代号/编码:系统内唯一标识
- 名称:对外展示与合同主体一致
- 联系信息:支撑采购与质量沟通
- 可用标志:启用/停用控制
ManufacturerDo(制造商)
- 设计理念:与供应商类似,但更强调制造侧的主体信息,便于追溯与质量评估。
- 关键字段说明(部分):
- 制造商代号/编码/名称
- 联系信息与可用标志
PartMainApi(物料主数据接口)
- 提供不分页列表查询、按代号/编码查询单条物料详情等能力,作为前端与后端交互的统一入口。
章节来源
架构总览
物料主数据在系统中的架构由“前端界面 + 后端通用接口 + 存储实体 + 工厂维度扩展 + 作业执行器”构成,如下图所示:
图表来源
- PartMainApi.java:1-44
- PartMainDo.java:1-130
- SupplierDo.java:1-73
- ManufacturerDo.java:1-73
- FactoryDo.java:1-42
- FactoryVo.java:1-49
- SysFactory.java:1-86
- BaseEntity.java(作业执行器基类):53-103
详细组件分析
物料主数据 PartMainDo
- 数据模型设计要点
- 继承公共基类,统一创建/更新用户与时间、逻辑删除
- 采用MyBatis-Plus注解映射数据库表,确保字段与表结构一致
- 字段覆盖库存、采购、生产、质量等关键业务域
- 业务含义与使用场景
- 作为库存管理的“物料档案”,支撑出入库、盘点、调拨等操作
- 作为采购管理的“供应商优选依据”,配合首选供应商字段
- 作为生产管理的“BOM基础”,配合分类与规格字段
- 性能与扩展建议
- 对高频查询字段建立索引(如partNo、partCode、validFlag)
- 对ABC分类、控制类型等维度字段进行分区或物化视图优化
图表来源
章节来源
供应商 SupplierDo 与制造商 ManufacturerDo
- 设计理念
- 与PartMainDo一致,均继承公共基类,具备统一的审计与删除能力
- 字段覆盖企业主体信息与可用性控制,满足供应商/制造商信息维护与评估
- 业务流程关联
- 供应商信息变更将影响物料的首选供应商字段与采购策略
- 制造商信息变更将影响质量追溯与责任划分
图表来源
章节来源
物料主数据接口 PartMainApi
- 能力概述
- 不分页列表查询:支持复杂条件组合查询
- 按代号/编码查询:快速定位单条物料
- 调用流程示意
图表来源
章节来源
工厂维度与多工厂支持
- 工厂实体与视图
- FactoryDo:系统工厂实体,包含工厂编码、简称、描述、虚拟ID等
- FactoryVo:对外输出的工厂视图对象,包含默认工厂标记与时区信息
- SysFactory:作业执行器侧的工厂实体,用于作业与调度
- 工厂选择组件
- 前端组件根据isDeviceMate/isDms等属性动态加载工厂列表与默认工厂显示
- 多工厂支持的意义
- 在不同工厂间隔离数据与默认值,确保物料主数据在各工厂维度的独立性与一致性
图表来源
章节来源
- FactoryDo.java:1-42
- FactoryVo.java:1-49
- SysFactory.java:1-86
- BaseEntity.java(作业执行器基类):53-103
- index.vue(工厂选择组件):21-76
物料分类、属性配置与替代关系
- 分类体系
- PartMainDo提供大类/小类/子类字段,支撑三级分类统计与筛选
- 属性配置
- 通过扩展属性模板(如物料扩展属性模板)实现属性的灵活配置与导入
- 替代关系
- 可基于PartMainDo的字段组合与业务规则实现替代关系的建模与查询(例如通过规格、分类、首选供应商等字段进行匹配)
章节来源
物料数据导入导出与批量维护
- 导入模板
- 物料导入模板、物料信息模板、物料扩展属性模板、物料打印信息模板等,支撑不同维度的数据导入
- 批量维护
- 前端提供在线物料上传、继续、堆存数据、看板等界面,支持批量导入与可视化维护
- 数据校验
- 建议在导入前进行格式校验(如必填字段、编码唯一性、计量单位合法性等),并在导入后进行一致性校验与回写提示
章节来源
- material-template.xlsx(物料导入模板)
- materialInfo.xlsx(物料信息模板)
- materialPrtInfo.xlsx(物料打印信息模板)
- materialExtendAttr.xlsx(物料扩展属性模板)
- materialOnline.vue(在线物料界面)
- materialOnlineUp.vue(在线物料上传)
- materialOnlineContinue.vue(在线物料继续)
- materialStackData.vue(物料堆存数据)
- materialboard.vue(物料看板)
与库存管理、采购管理、生产管理的集成
- 与库存管理
- 物料主数据作为库存档案,决定计量单位、包装数量、序列号规则、有效期/寿命等策略
- 与采购管理
- 供应商信息与首选供应商字段驱动采购策略与供应商评估
- 与生产管理
- 分类、规格、ABC分类等字段支撑BOM与生产计划制定
章节来源
依赖分析
- 组件耦合与内聚
- PartMainDo/SupplierDo/ManufacturerDo均继承公共基类,具备统一的审计与删除能力,提升内聚性
- PartMainApi作为统一入口,降低前端与存储层直接耦合
- 外部依赖与集成点
- MyBatis-Plus:负责实体与数据库的映射
- 工厂维度:通过FactoryDo/FactoryVo与SysFactory形成跨模块的一致性
- 循环依赖
- 当前结构未见循环依赖迹象,接口与实体分离清晰
图表来源
- PartMainApi.java:1-44
- PartMainDo.java:1-130
- SupplierDo.java:1-73
- ManufacturerDo.java:1-73
- BaseEntity.java(公共基类):1-123
- FactoryDo.java:1-42
- FactoryVo.java:1-49
- BaseEntity.java(作业执行器基类):53-103
- SysFactory.java:1-86
性能考虑
- 索引与查询优化
- 对高频查询字段(如partNo、partCode、validFlag、preferredSupplier)建立索引
- 对分类字段(bigCategory/smallCategory/sonCategory)进行复合索引或物化维度表
- 缓存策略
- 对常用物料清单与供应商/制造商字典进行缓存,减少数据库压力
- 分页与批量
- 列表查询建议使用分页,避免一次性加载过多数据
- 工厂维度
- 通过factoryNo进行分区或分库分表,提升跨工厂场景下的查询效率
故障排查指南
- 常见问题与定位
- 物料查询为空:检查validFlag、分类过滤条件与权限范围
- 供应商/制造商信息不一致:核对编码唯一性与可用标志
- 导入失败:检查模板字段与必填项,确认数据类型与长度限制
- 日志与审计
- 利用公共基类的createUser/updateUser/createTime/updateTime进行问题追踪
- 建议流程
结论
物料主数据管理模块以PartMainDo、SupplierDo、ManufacturerDo为核心,通过统一的公共基类与工厂维度扩展,实现了跨库存、采购、生产的统一数据基础。前端提供丰富的导入导出与批量维护能力,后端以PartMainApi为入口,保障了系统的可扩展性与一致性。建议在实际部署中完善索引、缓存与校验机制,持续优化查询与导入性能。
附录
- 前端界面与模板
- 物料主数据界面:partMain.vue
- 供应商界面:supplier.vue
- 制造商界面:manufacturer.vue
- 物料导入模板:material-template.xlsx
- 物料信息模板:materialInfo.xlsx
- 物料扩展属性模板:materialExtendAttr.xlsx
- 物料打印信息模板:materialPrtInfo.xlsx
- 后端接口与实体
- 物料主数据接口:PartMainApi.java
- 物料主数据实体:PartMainDo.java
- 供应商实体:SupplierDo.java
- 制造商实体:ManufacturerDo.java
- 工厂实体与视图:FactoryDo.java, FactoryVo.java, SysFactory.java
- 作业执行器基类:BaseEntity.java(作业执行器基类)