3. 批次编号自动生成规则配置
在食品ERP中,原料批次号是贯穿采购收货、检验放行、生产领用、成品追溯全过程的唯一标识。手工录入批次号不仅效率低,更常见的问题是格式不统一、重号、日期写错,导致后续追溯断链。因此,批次编号自动生成规则的核心目标只有两个:唯一性(系统内绝不重复)与可读性(人眼能快速读出日期、物料、来源等信息)。本节围绕如何设计并配置这套规则展开,并给出可直接参考的配置样例与测试用例。
一、批次号的结构设计
一个实用的批次号通常由若干“段”拼接而成,每段承担不同语义。常见分段包括:固定前缀、物料或品类代码、日期段、来源/供应商标识、流水序列号。设计时先确定分段顺序,再确定每段的取值来源与长度。
以某乳品企业原料批次为例,采用如下结构:
RM-{物料类别码}-{YYYYMMDD}-{供应商简码}-{流水号4位}
示例:RM-DRY-20250312-SUP01-0007
其中 RM 表示原料(Raw Material),DRY 为奶粉类类别码,日期段取收货日期,SUP01 为供应商简码,末段为当日该供应商该类别下的顺序号。这样一段批次号,仓管人员一眼即可判断“这是2025年3月12日从SUP01进的奶粉类原料,当天第7批”。
二、各段参数的配置要点
前缀段建议按业务大类区分,如原料RM、包材PK、半成品SF、成品FG,便于跨模块检索。前缀不宜过长,2~4位字符足够。
日期格式推荐 YYYYMMDD 八位定长格式。不要使用 YYMMDD,因为跨世纪或跨十年时会产生歧义;也不建议用 YYYY-MM-DD 带分隔符,虽然可读但占用长度且不利于按字符串排序。若企业存在跨时区收货,需明确日期取“收货单据的业务日期”而非服务器系统时间,避免同一批货在不同时区生成不同日期段。
序列号长度是关键参数。长度过短会在业务高峰日溢出,过长则浪费可读性。确定方法:统计历史单日最大批次生成量,向上取整到10的幂次再留一倍余量。例如某企业单日某类别最多生成约320批,则4位序列号(最大9999)完全够用;若单日峰值可能超过9000,则应升为5位。序列号必须按“日期段+类别+供应商”维度独立计数并每日归零,而不是全局连续,否则号码会迅速膨胀且失去“当日第几批”的可读含义。
供应商简码需在供应商主数据中维护一个2~6位的唯一简码字段,生成规则引用该字段而非供应商全称,避免批次号过长或含特殊字符。
三、唯一性保障机制
仅靠“日期+流水号”在理论上仍可能重复,例如规则修改后新旧规则生成的号码碰撞,或并发收货时序列号取号冲突。工程上需三重保障:其一,在数据库中为批次号字段建立唯一索引,作为最后防线;其二,取号时使用数据库序列或加锁的计数表,保证并发下不重号;其三,规则变更时保留历史规则版本,新规则启用后从新序列起点开始,避免与旧号段交叉。
下图展示了批次号从取号到落库的生成链路与唯一性校验位置:
四、不同业务场景下的生成逻辑测试
规则配置完成后必须做场景化测试,重点验证边界与异常。以下测试用例表可直接用于UAT阶段,参数为示例假设值:
| 场景 | 输入条件 | 预期生成结果 | 验证要点 |
|---|---|---|---|
| 常规收货 | 奶粉类,SUP01,2025-03-12,当日第1批 | RM-DRY-20250312-SUP01-0001 | 各段拼接正确、定长 |
| 同日同供应商连续收货 | 同上,再收3批 | …-0002、0003、0004 | 序列号递增不跳号 |
| 跨日归零 | 2025-03-13 首批 | RM-DRY-20250313-SUP01-0001 | 日期段更新、序列归零 |
| 不同供应商隔离 | 同日 SUP02 首批 | RM-DRY-20250312-SUP02-0001 | 计数维度独立 |
| 并发收货 | 两单据同时提交 | 两个不同序列号 | 无重号、无阻塞超时 |
| 序列号溢出 | 当日第10000批(4位) | 系统告警并拒绝或自动升位 | 溢出策略明确 |
| 规则版本切换 | 启用V2新前缀 | 新号段不与V1历史号重复 | 历史批次仍可查 |
测试时特别关注两个易错点。第一是并发取号:若采用“先查询当日最大号再加1”的实现方式,两笔并发收货可能读到同一个最大值,生成重复号。正确做法是使用数据库序列、行锁或原子自增计数表。第二是序列号溢出:必须预先定义溢出行为——是直接报错阻断收货,还是自动扩展位数。食品企业通常选择“报错并提示联系管理员”,因为静默升位会破坏定长规则,影响下游标签模板和扫码解析。
五、可读性与运维约定
规则上线后应形成书面约定并纳入主数据管理制度:前缀与类别码对照表由质量部维护;供应商简码在供应商准入时同步分配;日期段统一取业务日期;序列号计数维度一经确定不得随意变更。规则修改须走变更审批,旧规则版本封存,新版本明确生效日期与起始序列。这样,批次号不仅是一串自动生成的字符,更是可审计、可追溯、可运维的质量数据资产。