袋码 / 托盘码在生成后、录入生产批次前,是一个「已印制、未投产」的中间态。此前该状态下调用溯源查询接口会直接返回错误码 1040760000(未查询到该追溯码),消费者扫到这类包装时无法查看任何信息。
本次调整:**未绑定批次的袋码 / 托盘码同样可以扫码成功**,接口正常返回该码对应的**品种信息**,并新增 batchBound 字段标识批次是否已录入,由前端提示「尚未绑定批次」。追溯码本身不存在时,行为不变,仍返回 1040760000。
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /public/mes/trace/query?code={追溯码} | H5 溯源查询(免登录) |
| 字段 | 类型 | 说明 |
|---|---|---|
| batchBound | Boolean | 是否已录入生产批次。true 已绑定(批次区块字段正常返回);false 未绑定,此时**仅** itemCode / itemName / itemSpecification / itemUnitMeasureName、sourceType、requestCode、antiFake、timeline、decision 有值,其余批次相关字段全部为 null |
字段位置: requestCode 之后,itemCode 之前。
| 场景 | 变更前 | 变更后 |
|---|---|---|
| 袋码已生成、未录入批次 | code=1040760000,data=null,无法展示任何信息 |
code=0,batchBound=false,返回品种信息,前端提示未绑定批次 |
| 托盘已生成、未录入批次 | 同上 | 同上,品种取托盘内**任一袋码**的品种 |
| 追溯码不存在 | code=1040760000 |
不变 |
{
"code": 0,
"data": {
"sourceType": "BAG",
"requestCode": "BAG-00000153",
"batchBound": false,
"itemCode": "ITEM_20260917003",
"itemName": "吨",
"itemSpecification": null,
"itemUnitMeasureName": "吨袋子",
"batchCode": null,
"tempCode": null,
"batchStatus": null,
"batchStatusName": null,
"produceDate": null,
"lineCode": null,
"lineName": null,
"ownerUserId": null,
"ownerUserName": null,
"planQuantity": null,
"bagQuantity": null,
"palletQuantity": null,
"inboundTime": null,
"remark": null,
"workers": null,
"palletCount": null,
"pallets": null,
"bagTotal": null,
"bags": null,
"inbound": null,
"quality": null,
"antiFake": {
"scanCount": 0,
"firstScanTime": null,
"lastScanTime": null
},
"purchaseSources": null,
"salesTargets": null,
"seedFlows": null,
"processTraces": null,
"timeline": [],
"decision": {
"qualityRisk": false,
"inboundQuantity": null,
"salesTargetCount": 0,
"consumerScanCount": 0,
"riskLevel": "NORMAL"
}
}
}
| 字段 | 绑定批次(batchBound=true) |
未绑定批次(batchBound=false) |
|---|---|---|
| 品种名称 | itemName + itemSpecification 空格拼接 |
同左 |
| 计量单位 | itemUnitMeasureName |
同左 |
| 生产经营者 | 页面常量 COMPANY_NAME |
同左 |
| 单元识别代码 | requestCode → batchCode → tempCode 依次回退 |
requestCode |
| 追溯网址 | 页面常量 TRACE_URL |
同左 |
| 追溯类型 | sourceType |
同左 |
| 批次号 | batchCode |
不展示,替换为提示文案 |
| 生产日期 | produceDate |
不展示 |
| 产线 | lineName,为空回退 lineCode |
不展示 |
未绑定批次时的提示文案(替代批次号 / 生产日期 / 产线三行):
该追溯码尚未录入生产批次,批次号、生产日期、产线等信息待完善;当前展示该码对应的品种信息。
batchCode 有值时,对应批次 行展示批次号。batchCode 为空(即未绑定批次)时,对应批次 行展示「尚未绑定批次」,并以弱化 / 警示样式区分,避免被误读为「无数据」。batchBound 是**唯一**判断批次是否已录入的字段,前端不要用 batchCode == null 推断(历史数据中同样存在批次号为空但批次已绑定的边界情况)。bags / pallets / workers / quality 等区块均为 null(不是空数组),前端渲染前需判空。antiFake.scanCount)与消费者扫码事件,逻辑与正常扫码一致。code=1040760000,前端沿用原有错误提示,不需要改动。