# 种子流向信息(销售出库出入库流水) - H5 溯源联调说明 ## 背景 H5 扫码溯源页(`mes.trace-base-url` 指向的 `trace.html`)新增「种子流向信息」区块: 按**批次全流水**展示该批次的入库与出库记录(数据源为销售出库 `/sales-outbound/product-sales` 模块对应的库存事务)。 同时修复既有「销售去向」数据链路:种子销售出库按袋码/托盘扫码拣货时,批次号只写入出库**明细表** (`mes_wm_product_sales_detail.batch_code`),原查询只匹配出库**行表**批次号,导致溯源永远查不到销售出库信息。 ## 涉及接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | /public/mes/trace/query?code={追溯码} | H5 溯源查询(免登录),响应新增 `seedFlows` 区块 | **响应新增字段 `seedFlows`(批次出入库流水,按事务时间升序):** | 字段 | 类型 | 说明 | |------|------|------| | type | Integer | 事务方向:1-入库 2-出库 | | bizType | Integer | 业务类型(118-生产入库、119-销售出库、124-产品产出、120-销售退货入库等,见 MesBizTypeConstants) | | bizCode | String | 来源业务单号(如销售出库单号 SL_xxx) | | quantity | BigDecimal | 变动数量(出库为负数,展示时取绝对值) | | transactionTime | LocalDateTime | 事务发生时间 | | warehouseName | String | 仓库名称 | | locationName | String | 库区名称 | | areaName | String | 库位名称 | | clientName | String | 客户名称(仅销售出库流水带出,来自出库单快照) | **`salesTargets` 字段变化(同接口,向后兼容):** - 查询口径扩展:批次号除匹配出库行外,同时按出库明细聚合匹配(排除已取消单据)。 - 新增填充 `clientName`(客户名称快照)、`clientCode` 不变;此前恒为 null。 ## H5 页面展示规则 | 区块 | 展示条件 | 列 | |------|----------|----| | 种子流向信息 | `seedFlows` 非空(优先) | 方向(入库/出库徽标)、业务、来源单号、客户、数量、时间、仓库/库区 | | 种子流向信息(回退) | `seedFlows` 为空但 `salesTargets` 非空 | 销售出库单、客户、数量、日期 | ## 部署注意事项 1. `trace.html` 为 `yudao-server` 静态资源(`src/main/resources/static/trace.html`),需**重新打包发布后端**; 若生产 nginx 的 `/prod/trace.html`(如 `http://47.97.181.254:9008/prod/trace.html`)是独立拷贝部署的,需同步替换该文件。 2. 销售出库流水的客户名称取 `mes_wm_product_sales.client_name` 快照字段,要求环境库包含该列; 经排查 `mom-thzy` 库已有,**`mom-xgdl` 库缺失 `client_name` / `outbound_time` / `outbound_user_id` 列**(落后于代码),使用 local 环境时需先补列。 3. 历史出库单不会补生成流水,仅新出库可看到完整入+出记录;无流水时回退展示销售出库单。 ## 验证数据(mom-thzy) 批次 `PC20260819twoITEM_001`:入库 100(产品产出,虚拟线边仓库)→ 出库 1(销售出库 SL_20260901002,成品合格库,南通客户)。