3. 供应链批次标识与编码工程
批次追溯的起点不是数据库,而是编码。如果同一批物料在供应商、工厂、仓库、承运商和客户系统中被赋予不同的标识,后续所有追溯查询都会退化为人工对账。本节围绕 GS1 标准体系,讲清 GTIN、SSCC、批号、日期码与 EPCIS 事件之间的关系,并给出唯一标识设计与编码解析服务的工程做法。
一、四类标识的分工
供应链追溯中常见的标识并非互相替代,而是各管一段:
- GTIN(Global Trade Item Number):标识“这是什么”,即贸易项目的品类级身份,如某规格的注射液、某型号的电机。GTIN-13 用于零售单元,GTIN-14 用于箱、托盘等物流单元。它回答的是“物品类型”,不含批次信息。
- 批号(Lot/Batch Number):标识“这一批是什么时候、用什么条件做出来的”,是制造追溯的核心键。批号由生产企业按内部规则编制,长度通常 1~20 位,允许字母数字混合。
- 日期码:生产日期、有效期、保质期。GS1 用 AI(11) 表示生产日期、AI(17) 表示有效期、AI(10) 表示批号,格式为 YYMMDD,有效期可用 DD=00 表示当月最后一天。
- SSCC(Serial Shipping Container Code):标识“这一个物流单元”,18 位数字,含扩展位、厂商识别码、序列号和校验位,用于托盘、周转箱等运输单元的唯一识别。
关键关系是:GTIN 定品类,批号定生产批次,SSCC 定物流单元,EPCIS 记录它们之间“发生了什么”。一次收货事件中,SSCC 作为托盘标识,其内含的 GTIN+批号+数量构成子项清单,EPCIS 的 ObjectEvent 与 AggregationEvent 把这些对象串起来。
二、批号规则设计
批号规则必须同时满足可读性、唯一性和可解析性。推荐结构为:
批号 = 工厂码(2) + 产线(1) + 日期(YYMMDD,6) + 班次(1) + 流水(3)
示例:SH1A2506122001
含义:SH 工厂 / 1 号线 / 2025-06-12 / 夜班 / 第 001 批
设计要点:
- 唯一性边界:批号在“工厂+物料”范围内唯一即可,不必全局唯一;若需全局唯一,可拼接 GTIN 或工厂 GLN 作为前缀。
- 禁止复用:同一物料的历史批号不得再次启用,即使返工、重包装也应生成新批号或加后缀(如 -R1 表示返工)。
- 可解析:固定位段便于系统自动拆解出工厂、日期、班次,用于质量分析和召回范围圈定。
- 字符集约束:避免使用易混淆字符(O/0、I/1),若下游有条码打印,需确认 Code128 或 GS1-128 的编码兼容性。
三、唯一标识与 EPCIS 事件衔接
EPCIS 是 GS1 的“事件仓库”标准,核心是四类事件:ObjectEvent(对象发生了什么)、AggregationEvent(装箱/组托)、TransformationEvent(投料转化)、TransactionEvent(与业务单据关联)。每个事件必须携带 eventTime、readPoint、bizLocation 和 epcList 或 inputEPCList/outputEPCList。
批次追溯的衔接点在于:制造环节用 TransformationEvent 记录“投入哪些原料批 → 产出哪些成品批”,这是正向追溯(原料→成品)和反向追溯(成品→原料)的唯一权威依据。若企业只记录批号而不记录转化事件,召回时只能靠工单人工反查,效率极低。
四、编码注册与解析服务实现
编码解析服务是追溯系统的“翻译层”,负责把扫描到的条码字符串还原为结构化字段。以 GS1-128 为例,条码内容形如 (01)06901234567892(10)SH1A2506122001(17)270612,解析步骤为:
- 按 AI 表识别应用标识符,01 后固定 14 位,10 后为变长(需按 FNC1 或预定义长度截断),17 后固定 6 位。
- 对 GTIN-14 做 Mod 10 校验:从右往左奇数位乘 3、偶数位乘 1,求和后取 10 的补数,校验位应等于计算值。
- 按批号规则正则校验,例如
^[A-Z]{2}\d[A-Z]\d{6}\d{4}$,不匹配则标记为“非标批号”并进入人工复核队列。 - 将解析结果写入 EPCIS 事件,
epcList使用 SGTIN URI 格式:urn:epc:id:sgtin:0690123.456789.001。
注册环节需要维护三张主数据表:GTIN 注册表(品类、规格、包装层级)、批号规则表(工厂、正则、位段含义)、GLN 位置表(工厂、仓库、收货点)。解析服务启动时加载这些表,避免每次请求查库。
五、常见错误与判断依据
| 错误现象 | 根因 | 判断依据 |
|---|---|---|
| 同一托盘扫出多个 SSCC | 组托时未做 AggregationEvent 覆盖 | EPCIS 中同一 SSCC 出现多次 parent 记录 |
| 批号无法反查原料 | 缺少 TransformationEvent | 成品批号在事件库中无 inputEPCList |
| GTIN 校验失败 | 打印时校验位算错 | Mod 10 计算结果与末位不符 |
| 日期码解析为 00 日 | AI(17) 使用 DD=00 表示月末 | 需按“当月最后一天”规则处理 |
验证编码工程是否达标,可用一条最小测试链:给定一个成品 SSCC,解析服务应能在 3 秒内返回其 GTIN、批号、生产日期、有效期,并沿 TransformationEvent 反查到至少一个原料批号。若任一环节缺失,说明标识设计或事件记录尚未闭环。