2. 批次标识体系
批次标识体系是跨系统追溯链路的“数字指纹”。在分布式制造与供应链环境中,一个批次从原料入库、半成品加工、成品出库到终端销售,可能经过数十个异构系统。若标识体系不统一,谱系查询将退化为低效的模糊匹配甚至人工翻查。本章从全局唯一ID、编码规范、自动识别载体三个维度构建可落地的标识方案。
2.1 全局唯一ID设计:分布式环境下的无冲突标识
传统自增ID在跨数据库、跨数据中心场景下必然产生冲突。批次谱系要求ID在时间与空间上全局唯一,且具备一定的可排序性与可解码性。以下是三种主流方案对比:
| 方案 | 生成方式 | ID长度 | 有序性 | 适用场景 |
|---|---|---|---|---|
| UUID v4 | 随机128位 | 36字符(含连字符) | 无序 | 离线生成、无中心节点 |
| Snowflake | 时间戳+机器ID+序列号 | 64位整数(19位十进制) | 时间有序 | 高并发、分库分表 |
| ULID | 时间戳+随机数(Crockford Base32) | 26字符 | 时间有序 | 兼顾可读性与排序 |
推荐:在批次谱系场景中,优先采用 Snowflake 或 ULID。UUID v4 虽简单但无序,会导致B+树索引频繁分裂,降低写入性能。Snowflake 的 41位毫秒时间戳可支撑69年,10位机器ID支持1024个节点,12位序列号支持每毫秒4096个ID,完全满足工厂级并发。
2.2 批次号编码规范:结构化、可解析、可扩展
批次号是业务人员与系统交互最频繁的标识。好的编码规范应满足:一眼可读(包含日期、产线、物料类别)、机器可解析(正则/子串提取)、未来可扩展(预留版本位)。
2.2.1 推荐编码结构
BATCH-{YYYYMMDD}-{工厂代码}-{产线号}-{物料类别}-{流水号}{校验码}
示例:BATCH-20250317-SH01-L03-RAW-00427X
| 字段 | 长度 | 说明 | 示例 |
|---|---|---|---|
| 前缀 | 6字符 | 固定“BATCH-”,区分其他单据 | BATCH- |
| 日期 | 8字符 | 生产日期,YYYYMMDD | 20250317 |
| 工厂代码 | 4字符 | 字母+数字,全局唯一 | SH01 |
| 产线号 | 3字符 | 字母+数字,L开头 | L03 |
| 物料类别 | 3字符 | RAW/半成品/成品 | RAW |
| 流水号 | 5字符 | 每日自增,补零 | 00427 |
| 校验码 | 1字符 | Luhn或ISO 7064 | X |
避坑:避免在批次号中嵌入过多业务含义(如供应商名称、客户代码),业务关系应通过关联表维护。批次号一旦生成不可修改,过长的业务字段会降低扫描效率与人工录入准确率。
2.2.2 编码规范检查清单
- 定长设计:固定总长度(如25字符),便于数据库字段设计与UI展示对齐。
- 纯大写字母+数字:避免大小写混淆(如O与0、I与1)。
- 校验位:最后一位使用Luhn算法或ISO 7064 Mod 37-2,防止人工录入错位。
- 分隔符:使用连字符“-”分段,提升人工可读性;系统存储时可去除分隔符以节省空间。
- 版本预留:在流水号后预留2位版本号,应对未来批次拆分/合并场景。
2.3 条形码/二维码与RFID映射:物理世界到数字世界的桥梁
批次标识最终需要附着在实物上。不同载体在读取距离、存储容量、抗污染能力上差异显著,需根据产线环境与追溯粒度选择。
2.3.1 载体选型对比
| 特性 | 一维条形码 | 二维码(QR/DataMatrix) | RFID(无源UHF) |
|---|---|---|---|
| 读取距离 | 0-0.5米 | 0-1米 | 0-10米 |
| 存储容量 | 20-30字符 | 2-3KB | 128-8KB |
| 读取方式 | 激光/摄像头 | 摄像头 | 射频波 |
| 抗污染能力 | 低(污损即失效) | 中(纠错等级可调) | 高(可穿透非金属) |
| 批量读取 | 不支持 | 不支持 | 支持(每秒数百标签) |
| 成本(单点) | ¥0.01-0.05 | ¥0.02-0.10 | ¥0.5-2.0 |
| 典型场景 | 成品外箱、零售POS | PCB板、小件、医药物流 | 托盘、周转箱、整车 |
2.3.2 映射关系设计
无论采用哪种载体,其存储内容都应指向同一个批次全局唯一ID,而非各自独立编码。映射关系如下:
物理载体(条形码/二维码/RFID) → 批次号(业务可读) → 全局唯一ID(Snowflake/ULID) → 谱系数据库
最佳实践:二维码内容建议采用
https://trace.example.com/batch/{全局唯一ID} 格式,既支持扫码直接访问追溯页面,又保留了ID的完整性。RFID标签的EPC(电子产品代码)区写入全局唯一ID的低64位,用户存储区写入完整批次号。
2.4 标识生命周期管理
批次标识从生成到归档需经历完整生命周期,每个阶段都有对应的管理策略:
- 生成阶段:通过ID生成服务(Snowflake集群)预生成一批ID,缓存至本地,防止网络抖动导致断号。
- 绑定阶段:批次号与全局ID绑定,同时写入载体(打印条码/写入RFID),记录绑定日志。
- 使用阶段:各系统通过载体读取批次号,经映射服务转换为全局ID,用于谱系查询。
- 变更阶段:批次拆分或合并时,生成新的子批次号,通过映射表维护父子关系。
- 归档阶段:批次生命周期结束后,标识进入只读状态,保留映射关系用于历史追溯。
性能提示:映射表建议使用Redis Cluster缓存热点批次(最近30天活跃批次),查询延迟控制在1ms以内。历史数据存入HBase或Cassandra,按全局ID分区,支持范围扫描。