antiFake 区块,展示该追溯码累计扫码次数、首次/最近扫码时间,帮助消费者识别被多次扫描的疑似复制码。| 方法 | 路径 | 说明 | 权限 |
|---|---|---|---|
| GET | /mes/trace-cross-region/page |
窜货预警分页 | mes:trace-cross-region:query |
| PUT | /mes/trace-cross-region/handle |
处理预警(已处理/误报) | mes:trace-cross-region:handle |
| GET | /mes/trace-cross-region/summary |
预警汇总(总数/待处理/跨省/跨市) | mes:trace-cross-region:query |
| GET | /mes/trace-cross-region/statistics |
预警分布统计(按省份/经销商/物料等分组) | mes:trace-cross-region:query |
| GET | /mes/trace-cross-region/config |
查询判定规则配置 | mes:trace-cross-region:query |
| PUT | /mes/trace-cross-region/config |
更新判定规则(省/市粒度切换) | mes:trace-cross-region:handle |
GET /page 请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| status | Integer | 否 | 状态:10 待处理 / 20 已处理 / 30 误报 |
| warningType | String | 否 | 预警类型:CROSS_PROVINCE / CROSS_CITY |
| batchId | Long | 否 | 批次编号 |
| batchCode | String | 否 | 批次号(模糊) |
| bagCode | String | 否 | 袋码(模糊) |
| clientId | Long | 否 | 经销商编号 |
| clientName | String | 否 | 经销商名称(模糊) |
| eventTime[] | LocalDateTime[] | 否 | 预警产生时间范围 |
| pageNo / pageSize | - | 否 | 分页参数 |
GET /page 响应字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| warningNo | String | 预警编号 |
| bagCode / palletCode | String | 袋码 / 托盘码 |
| batchCode | String | 批次号 |
| itemName | String | 物料名称 |
| salesCode | String | 出库单号 |
| clientName | String | 经销商名称 |
| dealerProvince / dealerCity | String | 经销商省份 / 城市 |
| scanProvince / scanCity | String | 扫码省份 / 城市 |
| warningType / warningTypeName | String | 预警类型 / 类型名称 |
| status / statusName | Integer / String | 状态 / 状态名称 |
| handleRemark | String | 处理备注 |
| handleUserName | String | 处理人姓名 |
| handleTime / eventTime | LocalDateTime | 处理时间 / 预警产生时间 |
PUT /handle 请求体:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 预警编号 |
| status | Integer | 是 | 处理状态:20 已处理 / 30 误报 |
| handleRemark | String | 否 | 处理备注 |
GET /summary 请求参数: startTime、endTime(可选,LocalDateTime,格式 yyyy-MM-dd HH:mm:ss)
GET /summary 响应字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| total / pending / handled / falseAlarm | Long | 总数 / 待处理 / 已处理 / 误报 |
| crossProvince / crossCity | Long | 跨省预警数 / 跨市预警数 |
GET /statistics 请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| groupBy | String | 是 | 分组维度:scanProvince / scanCity / clientId / itemId / batchId |
| startTime / endTime | LocalDateTime | 否 | 时间范围 |
GET /statistics 响应字段: name(分组名)、count(数量),按数量倒序。
GET /config 响应字段: warningLevel(PROVINCE 跨省 / CITY 跨市)、remark。
PUT /config 请求参数: warningLevel(必填,仅支持 PROVINCE / CITY)。
| 方法 | 路径 | 说明 | 权限 |
|---|---|---|---|
| GET | /mes/trace-integrity/verify |
校验数据完整性(重算摘要比对) | mes:trace-integrity:verify |
| GET | /mes/trace-integrity/page |
完整性记录分页 | mes:trace-integrity:query |
GET /verify 请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| bizType | String | 是 | 业务类型:BATCH 批次 / SALES 销售出库 / SCAN 消费者扫码 |
| bizId | Long | 是 | 业务记录编号 |
GET /verify 响应字段:
| 字段 | 类型 | 说明 |
|---|
| bizType / bizId / bizCode | - | 业务类型 / 编号 / 编码 |
| matched | Boolean | 是否校验通过 |
| storedHash | String | 存储的摘要 SHA-256 |
| currentHash | String | 当前数据重算摘要 SHA-256 |
| bagSetHash | String | 仅 BATCH 校验返回:批次当前袋码集合摘要(供人工比对袋码防篡改) |
| message | String | 校验说明 |
GET /page 请求参数: bizType、bizId、bizCode(均可选)。
GET /page 响应字段: id、bizType、bizId、bizCode、contentHash、eventTime。
溯源接口(/public/mes/trace/query)响应新增 antiFake 区块(有扫码记录才返回):
| 字段 | 类型 | 说明 |
|---|---|---|
| antiFake.scanCount | Long | 该追溯码累计扫码次数 |
| antiFake.firstScanTime | LocalDateTime | 首次扫码时间 |
| antiFake.lastScanTime | LocalDateTime | 最近扫码时间 |
| 字段 | 展示位置 | 说明 |
|---|---|---|
| 预警类型 | 窜货预警列表、详情 | CROSS_PROVINCE=跨省 / CROSS_CITY=跨市 |
| 状态 | 窜货预警列表、详情 | 待处理 / 已处理 / 误报,列表建议按状态着色 |
| 经销商 vs 扫码地区 | 窜货预警详情 | 两列对比展示,异常字段高亮 |
| 处理备注 | 窜货预警详情 | 处理时可填写 |
| matched | 数据完整性校验页 | 校验结果,通过显示绿色、不通过显示红色并给出两个摘要值 |
| 场景 | 规则 |
|---|---|
| 判定粒度 | 管理端可在 PROVINCE(跨省)与 CITY(跨市)间切换;CITY 粒度下若扫码市与经销商市都为空则退回省级判断 |
| 不产生预警的情况 | 批次码入口扫码、扫码无地区(IP 解析失败)、袋码未出库、经销商无地区信息 |
| 预警处理 | 仅「待处理」状态可处理为「已处理」或「误报」;处理后不可再次处理 |
| 完整性覆盖范围 | 只校验不可变核心字段,正常业务流转(草稿→生产中→完成、出库后状态更新)不会导致校验误报 |
| 未生成摘要 | 若业务数据未生成过摘要(如历史数据),verify 返回"数据完整性记录不存在"错误码 |
eventTime 传两个值(eventTime[0] 起、eventTime[1] 止)表示时间范围。statistics 的 groupBy 只能传白名单内的维度,传其他值后端会拒绝。antiFake 区块无扫码记录时不返回该字段,前端需做空值兜底。