本文原先标注后端改动「已完成」,**经实测为不实**:grep MdmItemApi 在 controller/admin/qc 下零命中,即质检控制器当时仍走 MES 侧 MesMdItemService,物料名称依旧查不出来(mes_md_item 60 行 ⊂ mdm_item 75 行,漏掉的 15 个物料显示为空;mes_md_unit_measure 0 行,单位恒为空)。
现已于 2026-09-22 真正落地,实际改动清单见下方「后端改动」表(本次改为以真实代码为准,逐文件列出)。前端联调内容(列表瘦身、MdmItemSelect)不受影响,仍按下文执行。
itemCode(物料编码)、itemName(物料名称)、itemSpecification(规格型号)、unitName(单位)恒为空。质检单据的 item_id 存的是 MDM 物料 ID(mdm_item.id),后端却去 MES 物料表(mes_md_item)反查名称,两张表不是一套 ID 体系,导致查不到(mes_md_item 甚至可能为空表)。
相关说明见记忆「MES 物料 ID 双轨制」:WM/质检单据用 mdm_item.id,PRO 工单/任务用 mes_md_item.id。
| 文件 | 改动 |
|---|---|
MesQcIpqcController |
物料/单位改由 MdmItemApi / MdmUnitMeasureApi 解析(列表 VO 与导出行两处) |
MesQcIqcController |
同上(同时该 Service 的物料校验早已走 mdmItemApi) |
MesQcOqcController |
同上 |
MesQcRqcController |
同上;MesQcRqcServiceImpl 的物料校验一并由 MesMdItemService 改为 MdmItemApi |
MesQcNcrController(顺带) |
不合格品处理单的 itemId 继承自质检单,同口径切到 MdmItemApi,否则 NCR 列表物料名为空 |
MesQc*LineController(IPQC/IQC/OQC/RQC 行) |
行明细的计量单位由 MdmUnitMeasureApi 解析 |
MesQcPendingInspectController |
在 buildPendingInspectRespVOList 中按 item_id 批量补 itemCode/itemName/specification/unitName(原走 MES 侧解析,漏 15 个物料) |
MesQcTemplateItemController |
产品关联列表的物料/计量单位由 MesMdmItemService/MesMdUnitMeasureService 改为 MdmItemApi/MdmUnitMeasureApi(mes_md_unit_measure 为 0 行,原单位恒为空) |
MesQcTemplateIndicatorController |
检测指标项的计量单位同上切到 MdmUnitMeasureApi |
MesQcTemplateItemServiceImpl |
getTemplateItemList 去掉「按 mes_md_item.id 反查再转 mdm_item.id」的中间转换——质检侧入参本就是 MDM 物料 ID;同时删除 workOrderId/taskId 分支(质检单据已无工单/任务维度) |
MesQcIqcServiceImpl |
删除未被使用的 MesMdItemService 字段 |
接口路径、请求参数、响应字段结构均无变化,仅保证
itemCode/itemName/itemSpecification/unitName有值。前端**无需改接口调用**,只要原来已展示这些字段即自动生效。后续修正(2026-09-22 二次):
/mes/qc/template/item/list-by-item-and-type的workOrderId/taskId参数**已移除**,只接受{ qcType, itemId },其中itemId为 MDM 物料 ID。
规则:**非必填的字段不再作为列表列,唯一例外是「检测结果」**。判定以**后端 MesQc*SaveReqVO 的校验注解**为准(与前端表单 rules 一致):无 @NotNull / @NotEmpty 即视为非必填。
四个列表最终列(顺序即展示顺序):
| 页面 | 列表列 |
|---|---|
| IPQC 过程检验 | 检验单编号、检验单名称、检验类型、产品物料编码、产品物料名称、规格型号、批号、单位、检测数量、检测结果、检测日期、检测人员、单据状态、操作 |
| IQC 来料检验 | 检验单编号、检验单名称、产品物料编码、产品物料名称、接收数量、检测数量、不合格数、检测结果、来料日期、检测日期、检测人员、单据状态、操作 |
| OQC 出货检验 | 检验单编号、检验单名称、产品物料编码、产品物料名称、规格型号、单位、不合格数、检测结果、检测日期、检测人员、单据状态、操作 |
| RQC 退货检验 | 检验单编号、检验单名称、产品物料编码、产品物料名称、规格型号、单位、检测结果、检测日期、检测人员、单据状态、操作 |
从列表移除的列(字段本身、详情弹窗、导出、标题栏筛选条件均保留,仅不再占列表):
| 页面 | 移除的列 | 依据(SaveReqVO 中无必填注解的字段) |
|---|---|---|
| IQC | 供应商简称、供应商批次号 | vendorId / vendorBatch |
| OQC | 客户名称、批次号、发货数量、检测数量、出货日期 | clientId / batchCode / outQuantity / checkQuantity / outDate |
| RQC | 来源单据类型、来源单据编码、批次号 | sourceDocType / sourceDocCode / batchCode |
| IPQC | 无(原列表已无非必填列) | — |
修正(2026-09-22 三次):本文此前记载「四个列表新增复核人
auditNickname/ 审核人approveNickname」与实测不符 ——grep auditNickname|approveNickname在controller/admin/qc下零命中,四个页面的data.ts中也无对应列。该条已删除,以本表为准。
src/views/mes/qc/pendinginspect/data.ts 的「产品物料」筛选条件,由 MES 物料选择器改为 MdmItemSelect(#/views/basicData/mdm/components)。原因:待检任务的 item_id 来自 WM 单据(mes_wm_*),属 MDM 物料 ID 体系;沿用 MES 物料选择器会带入 mes_md_item.id,筛选结果恒为空。
注意区分:
MdmItemSelect(MDM)位于#/views/basicData/mdm/components;MdItemSelect(MES)位于#/views/mes/md/item/components。二者不可混用。
| 字段 | 列表 | 详情 | 说明 |
|---|---|---|---|
| 产品物料(编码/名称/规格/单位) | 是 | 是 | 由 MDM 物料带出 |
| 检测结果 | 是 | 是 | 非必填,但按业务要求保留在列表 |
| 检测人员 / 复核人 / 审核人 | 是 | 是 | 按业务要求保留在列表;复核人、审核人为本次新增列 |
| 供应商 / 客户 | 否 | 是 | 非必填,移出列表 |
| 批次号(OQC/RQC)、发货数量、出货日期、来源单据类型/编码、供应商批次号 | 否 | 是 | 非必填,移出列表 |
| 采样地点、证书编号、执行标准、备注 | 否 | 是 | 原本就不在列表 |
| 导出 Excel | — | — | 列不受本次列表瘦身影响,字段全部保留 |
| 场景 | 规则 |
|---|---|
| 质检单物料展示 | 一律按 MDM 物料 ID 解析编码/名称/规格;单位取该物料的计量单位 |
| 待检任务物料展示 | 来源单据(WM)的物料 ID 即 MDM 物料 ID,按 MDM 解析名称等 |
| 物料筛选 | 待检任务页按 MDM 物料筛选;传 MES 物料 ID 将查不到任何任务 |
| 列表瘦身 | 非必填字段不进列表,改在详情查看;导出 Excel 不受影响 |
itemCode 等字段本来就存在,只是过去一直为 null/空串;如果前端之前对空值做了兜底如「-」,会自然变为真实值。mes_md_item 与 mdm_item 不可混用:本次修复正是把质检链路统一切到 MDM 体系,后续若有新页面展示质检/待检物料的名称,同样必须走 MdmItemApi。batchCode 仅 IPQC 来源有值,其余来源为 null。