乳品厂生牛乳批次建模实践:收奶批/槽车批/厂内批三层绑定设计

简介: 乳品厂数字化第一需求不是提效率,是出事别背锅。巴氏奶保质期2-7天,客诉一旦爆发,召回范围能不能从"整线三天"缩到"两小时一班",取决于收奶、杀菌、CIP、灌装、出库是否绑在同一批号上。本文以实际项目复盘,拆解乳品MES三个核心落地点:生牛乳批次三层留痕、杀菌/CIP参数超差硬拦截、成品批正向反向追溯。短保效期FIFO强制和临期预警逻辑同步覆盖。适合做食品数字化、工业软件集成的朋友参考。

摘要:乳品厂数字化的第一道坎不是"上系统",是收奶环节的数据建模。本文以实际项目中的数据库设计为例,拆解生牛乳从牧场到厂内生产线的批次绑定逻辑,并给出核心表结构和数据流。适合做工业软件、MES 开发、IoT 数据采集的开发者参考。

一、为什么收奶不能用"一张表搞定"

很多通用 MES 在乳品厂上线后,追溯做不出来的根因,出在收奶建模阶段。

牧场送一车奶到工厂,实际上携带了三层身份:

  1. 牧场批号:同一牧场、同一天、同一牛群产出的奶,有独立检测报告(脂肪、蛋白、菌落总数、抗生素)
  2. 槽车批号:同一辆车可能装了 2-3 个牧场的奶(拼车),每车有独立的 COA(Certificate of Analysis)
  3. 厂内收奶批号:工厂收奶时生成的内部批号,关联净乳机、暂存罐、验收结果

如果只用一张 raw_material_lot 表,把牧场批和槽车批混在一起,后面一旦客诉,你只能查到"用了哪车奶",查不到"这车奶里混了哪几个牧场的、哪个牧场的指标超标"。

所以正确做法是:三层独立建表,通过外键关联,系统自动绑定,不靠人填。

二、核心表设计

1. 牧场批次表 pasture_lot

CREATE TABLE pasture_lot (
pasture_lot_no VARCHAR(64) PRIMARY KEY,
pasture_name VARCHAR(128),
cow_group VARCHAR(32), -- 牛群编号
milk_date DATE, -- 挤奶日期
fat_rate DECIMAL(5,2), -- 脂肪含量 %
protein_rate DECIMAL(5,2), -- 蛋白含量 %
bacteria_count INT, -- 菌落总数
antibiotic_result VARCHAR(16), -- 抗生素检测:阴性/阳性
quality_status SMALLINT, -- 0待检 1合格 2拒收
created_at DATETIME
);

2. 槽车批次表 tanker_lot

CREATE TABLE tanker_lot (
tanker_lot_no VARCHAR(64) PRIMARY KEY,
tanker_no VARCHAR(32), -- 槽车编号
driver_name VARCHAR(32),
departure_time DATETIME, -- 离开牧场时间
arrival_time DATETIME, -- 到厂时间
temperature_on_arrival DECIMAL(4,1), -- 到厂温度
total_volume DECIMAL(10,2), -- 总体积 L
coa_no VARCHAR(64), -- COA 报告编号
created_at DATETIME
);

3. 槽车-牧场关联表 tanker_pasture_mapping

CREATE TABLE tanker_pasture_mapping (
id BIGINT PRIMARY KEY,
tanker_lot_no VARCHAR(64),
pasture_lot_no VARCHAR(64),
volume DECIMAL(10,2), -- 该牧场奶在此车中的体积
sequence_no SMALLINT, -- 装车顺序
FOREIGN KEY (tanker_lot_no) REFERENCES tanker_lot(tanker_lot_no),
FOREIGN KEY (pasture_lot_no) REFERENCES pasture_lot(pasture_lot_no)
);

拼车场景靠这张表解决:一车奶对应多个牧场批,每个批有多少升,系统自动记录。

4. 厂内收奶批表 milk_receive_lot

我们在万界星空科技乳制品MES里用 milk_receive_lot 这张表承接厂内收奶动作:
CREATE TABLE milk_receive_lot (
receive_lot_no VARCHAR(64) PRIMARY KEY,
tanker_lot_no VARCHAR(64),
receiving_line VARCHAR(32), -- 收奶线编号
clarifier_no VARCHAR(32), -- 净乳机编号
storage_tank VARCHAR(32), -- 暂存罐编号
receive_start DATETIME,
receive_end DATETIME,
received_volume DECIMAL(10,2),
temperature_in DECIMAL(4,1), -- 进线温度
temperature_out DECIMAL(4,1), -- 出线温度
fat_actual DECIMAL(5,2), -- 实际检测脂肪
protein_actual DECIMAL(5,2), -- 实际检测蛋白
status SMALLINT, -- 0收奶中 1待检 2合格 3隔离 4拒收
operator VARCHAR(32),
created_at DATETIME,
FOREIGN KEY (tanker_lot_no) REFERENCES tanker_lot(tanker_lot_no)
);

这张表是追溯链路的总入口:输入厂内收奶批号,系统自动展开 → 槽车批号 → 牧场批号列表(含每个牧场的脂肪/蛋白/菌落/抗生素结果)。

三、数据流:从收奶到杀菌到灌装

pasture_lot (牧场批)

tanker_pasture_mapping (拼车映射)

tanker_lot (槽车批)

milk_receive_lot (厂内收奶批)

processing_batch (生产工单)
├── sterilization_record (杀菌参数)
├── cip_record (清洗报告)
├── filling_record (灌装记录)
│ └── package_unit (箱码/托盘码)

正向追溯:成品箱码 → 灌装记录 → 生产工单 → 收奶批 → 槽车批 → 牧场批
反向召回:某牧场抗生素阳性 → 关联槽车 → 关联收奶批 → 关联生产工单 → 关联成品批 → 关联出库客户

四、几个容易踩的坑

  1. 槽车温度超限但牧场批合格

到厂温度 > 6℃ 时,即使牧场检测全部合格,也要标记"待复检"。系统里不能只存最终判定,要存每个环节的原始数据,审计时才说得清。

  1. 拼车奶混罐后无法拆分

多车奶进同一个暂存罐后,物理上已经混合。系统要做"混合批"标记:一旦混罐,追溯粒度只能到"罐"级别,不能假装还能精确到"哪车哪牧场"。提前告诉质量部门这个限制,别等飞检时解释不清。

  1. 收奶批和杀菌工单不是 1:1

一罐奶可能供 2-3 个杀菌工单(巴氏和 UHT 同时用),也可能一个工单用了 2 个罐的奶。系统要支持多对多映射,不能简单假设一对一。

  1. 拒收奶的去向要记

牧场批拒收后,槽车退回还是转做工业奶粉原料?这个决策和去向必须留痕,不能"口头处理"。

五、和 SCADA / ERP 的边界

cb14a5c3-63d6-44e3-91a0-5b549807fc71.png

六、小结

乳品厂批次追溯能不能做出来,80% 取决于收奶建模对不对。

核心原则:
• 牧场批、槽车批、厂内批三层独立,不合并不省略

• 拼车场景用映射表,不靠人脑记

• 每个环节的原始数据全留,不只有最终判定

• 追溯链路从第一天就跑通,别等飞检来了再补

把 milk_receive_lot 这张表设计扎实,后面的杀菌参数绑定、CIP 互锁、灌装赋码都是顺着这条链路往下接,不会散。

相关文章
|
8天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
|
9天前
|
人工智能 API 内存技术
刚刚 DeepSeek V4.1 Flash 开启内测,1 分钟教你用上!
刚刚 DeepSeek 内测群发布了 DeepSeek V4.1 Flash 中间版本内测的消息,这次的模型采用了新的结构,原生支持多模态、能力更强、速度更快、且成本更低。
1877 15
|
14天前
|
网络协议 Linux iOS开发
【2026实测】Wireshark下载+安装+汉化+使用教程(图文版,巨详细)
Wireshark 是一款免费开源的网络协议分析工具,可实时捕获、解析并可视化数据包,助你诊断网络故障、分析通信协议(如HTTP、DNS、TCP等)。支持Windows/macOS/Linux,含中文界面,新手入门便捷。(239字)
|
8天前
|
人工智能
千问办公官网入口:阿里AI办公QwenWork产品页和免费网页端链接
千问办公官网含两大入口:一是网页端(qwenwork.cn),即开即用,支持浏览器直接访问;二是阿里云产品页 https://t.aliyun.com/U/JNKJuO 提供免费/付费版详情、功能介绍及使用指南。
|
13天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1664 3
|
7天前
|
IDE 开发工具
Qoder 上线 Sonus 模型,Computer Use 能力全面增强
Qoder国际版上线全新内置大模型Sonus(/ˈsoʊnəs/),全球领先,专精超长任务执行与电脑操作(Computer Use)。配合Qoder桌面端0.2.3版本,可自主完成编程、金融建模、科研及表格制作等复杂工作。现全面支持Qoder全系产品,效率提升3.2倍。
932 1
Qoder 上线 Sonus 模型,Computer Use 能力全面增强
|
10天前
|
SQL 人工智能 前端开发
QoderWake 1.0 正式发布:从桌面里的 Agent,到工作现场的数字员工
QoderWake v1.0正式发布:企业级数字员工团队平台。支持“一句话建岗”,预置10类特训岗位;Waker常驻钉钉/飞书群,@即响应、自动协作、跨任务记忆;具备定时/事件/API多触发方式与统一任务看板;已沉淀27.6万条记忆、12.3万项技能,助力组织实现人机协同增效。
810 2
|
15天前
|
缓存 数据可视化 开发工具
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
DeepSeek Harness 的更新分两层:本体更新(npx 自动最新、npm update -g、源码 git pull)与插件更新(插件市场点更新、命令行覆盖安装)。本文按「准备 → 更新本体 → 更新插件 → 更新后检查」四步走,覆盖新手常见疑问。
1755 1
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
|
8天前
|
缓存 测试技术 API
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
DeepSeek V4.1 Flash 内测不用申请,base_url 不变、改个模型名就能调,9/10 到期。本文讲清接入、计费限流与多模态注意点。
821 0
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
|
9天前
|
缓存 人工智能 自然语言处理
阿里云qwen3.8-flash大模型介绍:模型能力、模型价格、免费额度与最新活动
本文是阿里云百炼平台Qwen3.8-Flash大模型的选型接入指南,作为兼顾性能与响应速度的高性价比多模态模型,它支持百万级上下文窗口、全场景多模态输入与完整智能体能力矩阵,适配编程辅助、智能体协作等核心场景。文中同步梳理了最新下调的阶梯定价、夜间4折等优惠活动,搭配OpenAI兼容流式调用示例,帮助开发者低成本快速落地高并发AI应用。
阿里云qwen3.8-flash大模型介绍:模型能力、模型价格、免费额度与最新活动

热门文章

最新文章