生鲜供应链生产加工模块数据库设计与实践

发布时间:2026/11/4 8:04:02

生鲜供应链生产加工模块数据库设计与实践 1. 生产加工模块数据库设计概述在生鲜配送供应链管理系统中生产加工模块Manufacturing Domain简称MD是整个系统的核心组成部分之一。这个模块负责管理从原材料到成品的整个加工过程包括BOM物料清单管理、生产工单执行、用料控制以及基础数据维护等关键业务流程。作为从业十多年的供应链系统架构师我深知生鲜行业对生产加工环节的特殊要求时效性强、损耗控制严格、批次追溯要求高。这套表结构设计正是基于这些行业特点经过多个实际项目验证的成熟方案。整个MD模块共包含15张核心表采用标准的域前缀命名规范md_明细表统一以item结尾确保数据结构清晰可维护。2. 核心表结构设计与业务逻辑2.1 BOM与结构定义表2.1.1 md_bom商品BOM主表这是生产加工的基础表定义了成品与原料的组成关系。关键设计点包括bom_code唯一BOM编码采用成品SKU版本的生成规则product_sku_id关联商品主数据bom_version支持同一成品多个BOM版本共存base_quantity基准产出量用于计算原料用量比例CREATE TABLE md_bom ( id BIGINT PRIMARY KEY COMMENT 主键ID, bom_code VARCHAR(100) NOT NULL COMMENT BOM编码, product_sku_id BIGINT NOT NULL COMMENT 成品SKU, unit_id BIGINT NOT NULL COMMENT 成品单位, bom_version INT NOT NULL COMMENT BOM版本, base_quantity DECIMAL(12,4) NOT NULL DEFAULT 1 COMMENT 基准产出数量, remark VARCHAR(250) DEFAULT NULL COMMENT 备注, audit_state TINYINT NOT NULL DEFAULT 0 COMMENT 审核状态 0待审 1已审 -1作废, enabled TINYINT NOT NULL DEFAULT 1 COMMENT 启用状态, del_flag TINYINT NOT NULL DEFAULT 0 COMMENT 删除标记, creator BIGINT NOT NULL DEFAULT 0 COMMENT 创建人, create_date BIGINT DEFAULT NULL COMMENT 创建时间, updater BIGINT NOT NULL DEFAULT 0 COMMENT 修改人, update_date BIGINT DEFAULT NULL COMMENT 修改时间, UNIQUE KEY uk_bom (product_sku_id, unit_id, bom_version, del_flag), KEY idx_bom_code (bom_code) ) COMMENT 商品BOM主表;2.1.2 md_bom_itemBOM明细表存储BOM的原料组成明细关键字段设计material_sku_id原料SKU IDnet_quantity理论净用量loss_rate损耗率%用于计算实际需求plan_quantity计划用量 净用量 × (1 损耗率)实际项目经验生鲜行业的损耗率设置非常关键建议初期设置保守值通过实际生产数据不断优化。我们曾遇到因损耗率设置不当导致原料短缺的情况。2.2 商品拆分表设计2.2.1 md_bom_split_template拆分模板主表支持整转零、组合拆分等轻加工场景如整猪分割、礼盒拆分等。设计特点template_code模板编码建议采用SPLIT日期序号审核机制确保模板准确性2.2.2 md_bom_split_template_item拆分模板明细记录拆分后的SKU及数量关系支持一对多拆分。2.2.3 md_bom_split_record拆分执行记录每次执行拆分操作生成一条记录包含record_code拆分单号规则如SP日期序号template_id关联使用的模板2.2.4 md_bom_split_record_item拆分执行明细记录实际拆分结果用于库存调整和成本核算。2.3 生产加工单据表2.3.1 md_production_order生产工单主表核心生产指令单据关键设计order_code工单编号建议规则PO日期序号workshop_id生产车间支持多车间管理production_date计划生产日期posting_state过账状态控制WMS交互CREATE TABLE md_production_order ( id BIGINT PRIMARY KEY COMMENT 主键ID, order_code VARCHAR(100) NOT NULL COMMENT 生产加工单号, workshop_id BIGINT DEFAULT NULL COMMENT 生产车间, production_date BIGINT DEFAULT NULL COMMENT 生产日期, audit_state TINYINT NOT NULL DEFAULT 0 COMMENT 审核状态, posting_state TINYINT NOT NULL DEFAULT 0 COMMENT 过账状态, enabled TINYINT NOT NULL DEFAULT 1 COMMENT 启用状态, del_flag TINYINT NOT NULL DEFAULT COMMENT 删除标记, creator BIGINT DEFAULT NULL COMMENT 创建人, create_date BIGINT DEFAULT NULL COMMENT 创建时间, UNIQUE KEY uk_prod_order (order_code, del_flag) ) COMMENT 生产加工单主表;2.3.2 md_production_order_item生产工单明细记录工单的成品产出计划product_sku_id目标成品SKUplan_quantity计划生产数量complete_quantity实际完成数量动态更新2.4 生产用料与批次表2.4.1 md_production_material生产用料事实表核心用料记录表特点最小粒度每个工单项的每种原料一条记录三量记录净用量、计划量、实际用量直接关联成本计算和库存扣减2.4.2 md_production_material_lot用料批次锁定实现先进先出和批次追溯lot_no锁定具体批次lock_quantity锁定数量与WMS库存批次强关联2.4.3 md_production_picking_item领料出库绑定记录实际出库情况关键字段picking_codeWMS出库单号out_quantity实际出库量提供完整的生产→用料→出库追溯链2.5 基础资料表2.5.1 md_production_worker生产工人简单的人员主数据支持worker_code工号worker_name姓名与工时统计、绩效等模块关联2.5.2 md_production_workshop生产车间车间基础信息支持多车间管理。2.5.3 md_process工序主表定义加工工序如清洗→切割→包装。2.5.4 md_process_item工序步骤明细记录工序的详细步骤和顺序。3. 关键业务逻辑实现3.1 BOM版本控制机制在实际项目中我们采用生效日期版本号的双重控制新建BOM时版本号自动1生产工单记录使用的BOM版本历史BOM保留但不启用确保追溯// BOM版本生成示例代码 public String generateBomVersion(Long productSkuId) { Integer maxVersion bomMapper.selectMaxVersionBySku(productSkuId); return maxVersion ! null ? maxVersion 1 : 1; }3.2 生产领料出库流程完整的物料领用流程包括工单审核通过后生成用料计划根据库存批次锁定具体物料md_production_material_lot生成WMS领料单并绑定md_production_picking_item实际出库后回写actual_quantity避坑经验务必在领料前检查批次库存是否充足我们曾因并发锁定导致超领。解决方案是采用SELECT FOR UPDATE加锁。3.3 成本核算关联设计通过sku_unit_id关联成本模块生产用料事实表记录详细的原料消耗成本模块通过sku_unit_id获取单价支持按工单、成品的成本精细核算4. 性能优化与扩展设计4.1 索引设计策略针对核心查询场景优化工单查询idx_prod_item (order_id)用料查询idx_material_sku (sku_unit_id)批次追溯idx_lot (sku_unit_id, lot_no)4.2 水平分表考虑对于大型生鲜企业建议按日期分表md_production_order_202301定期归档历史数据热点数据单独优化4.3 扩展字段设计预留30%的备用字段每个主表添加ext_字段ext1, ext2...使用JSON类型的ext_info存储灵活数据5. 常见问题与解决方案5.1 并发领料冲突现象多个工单同时领用同一批次导致超领 解决方案采用乐观锁控制版本关键操作添加事务隔离库存检查使用SELECT FOR UPDATE5.2 BOM变更影响现象生产中途BOM变更导致数据不一致 处理方案已开工单锁定BOM版本新工单使用新BOM增加变更记录表跟踪历史5.3 批次追溯性能优化方案建立组合索引sku_unit_id lot_no定期汇总批次数据使用Elasticsearch辅助查询6. 实际应用建议经过多个生鲜配送项目验证这套表结构设计需要注意初始化配置先建立基础数据车间、工序、工人再配置BOM和拆分模板最后开展生产业务权限控制要点车间数据隔离BOM修改需高级权限工单审核分离数据校验策略BOM循环引用检查损耗率合理范围验证工单关闭前完成率检查这套表结构已经成功应用于多个日均处理量10万的生鲜配送中心支持从原料到成品的全流程精细化管理。特别是在损耗控制和批次追溯方面表现优异帮助客户将原料损耗率降低了15%-20%。
延伸阅读

更多相关文章

2026/11/4 7:59:02

轻量级电商后台:SPU/SKU分离+商品状态机+SKU矩阵生成

简介:这是一套基于ASP.NET开发的网络商品销售管理系统源码,面向初学者与Web开发学习者,聚焦商品维护、订单处理与库存管理等核心电商功能实现。资源共55个文件,包含15个DLL动态库(封装业务逻辑)、13个C#源文…

2026/11/4 7:59:02

金融风控与工业物联网中的可解释异常检测技术

1. 项目背景与核心挑战 在金融风控和工业物联网领域,我们经常遇到一个棘手问题:算法检测出了异常,但没人能说清楚为什么。三周前某证券公司的系统警报触发了37次,风控团队却花了整整两天才确认其中只有5次是真实威胁——这种低效排…

2026/11/4 7:59:02

Windows进程管理神器Process Explorer深度解析与应用

1. 进程管理器 Process Explorer 深度解析作为一名在Windows系统管理领域摸爬滚打多年的老鸟,Process Explorer绝对是我工具箱里使用频率最高的神器之一。这款由微软Sysinternals团队开发的免费工具,可以说是任务管理器的"Pro Max"版本——它不…

2026/11/4 9:04:19

解决IDEA中Spring Boot配置自动补全失效问题

1. 问题现象与背景分析 最近在IntelliJ IDEA中开发Spring Boot项目时,突然发现application.properties和application.yml文件失去了代码自动补全功能。这个问题看似不大,却严重影响开发效率——每次输入配置属性时都得手动查阅文档,稍不注意就…

2026/11/4 9:04:19

8G显存跑本地AI数字人:Voice Companion选型与避坑指南

不用换显卡,不用买云服务器,8G 显存的机器一样能跑出一套像模像样的本地 AI 数字人,能听能说,反应速度还凑合。这篇文章就从我最近搞的 Voice Companion 出发,把选型、时间、成本、占显存的账,以及踩过的那…

2026/11/4 9:04:19

HTML零基础入门:从创建第一个网页开始

1. 项目概述记得我第一次接触HTML时,那种既兴奋又忐忑的心情至今难忘。那是一个周末的下午,我对着电脑屏幕,试图用几行简单的代码创造出属于自己的第一个网页。对于完全零基础的我来说,这就像第一次拿起画笔面对空白画布的感觉。H…

2026/11/4 9:04:19

ResearchDownload固件烧写:多模块并行与自动检测避坑

简介:面向手机维修、产线测试与嵌入式烧录场景的ResearchDownload R24.0.0001烧写工具,主要用于通过USB数据线或串口线连接电脑与手机,将电脑中的程序写入手机硬件模块,适合需要批量刷机、多模块下载与自动检测的维修及测试人员。…

2026/11/4 9:04:19

企业形象工程的技术实践与标准化管理

1. 企业形象工程的技术实践概述 在商业竞争日益激烈的今天,企业形象工程已成为品牌建设不可或缺的一环。作为从业十余年的品牌技术顾问,我见证过太多企业在这个环节踩坑——有的花大价钱做了全套VI手册却束之高阁,有的反复修改设计规范导致执…

2026/11/4 8:59:18

括号匹配为什么用栈:有效括号判断的原理与工程实践

简介:这是一份围绕括号匹配(平衡括号)判定编写的 JavaScript 代码示例包,面向正在学习字符串处理与栈结构的初学者,以及准备算法面试的开发者,用于解决“左括号须由同类型右括号按正确顺序闭合”的有效性判…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/4 0:03:20

AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年…

2026/11/4 0:03:20

从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你…

2026/11/4 0:03:20

32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑