# 质检检验单手动选择质检方案 - 前端联调方案 ## 涉及页面 - 来料检验(IQC)新建表单 - 过程检验(IPQC)新建表单 - 出货检验(OQC)新建表单 - 退货检验(RQC)新建表单 ## 背景 一个产品可在 `mes_qc_template_item` 关联多个质检方案(`mes_qc_template`)。此前后端命中多个方案时静默取第一个,用户无法控制。现支持在检验单**新建表单**中通过「质检方案」下拉手动选择;未配置或仅一个方案时保持原有自动行为不变。 ## API | 方法 | 路径 | 说明 | |------|------|------| | GET | /mes/qc/template/item/list-by-item-and-type | 根据物料或工单/任务和检测种类获取可用质检方案列表 | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | qcType | Integer | 是 | 检测种类:1=IQC、2=IPQC、3=OQC、4=RQC | | itemId | Long | 否 | 产品物料 ID(mes_md_item.id);IQC/OQC/RQC 使用 | | workOrderId | Long | 否 | 生产订单 ID;IPQC 使用 | | taskId | Long | 否 | 生产任务 ID;IPQC 使用 | > 说明:`itemId`、`workOrderId`、`taskId` 三者至少传一个。优先顺序:taskId → workOrderId → itemId。IPQC 表单不选物料,传 workOrderId(+可选 taskId)由后端解析产品;其余三个模块传 itemId。 **响应字段(数组):** | 字段 | 类型 | 说明 | |------|------|------| | id | Long | 方案-产品关联编号(templateItem.id) | | templateId | Long | 质检方案 ID | | templateCode | String | 质检方案编号 | | templateName | String | 质检方案名称 | | quantityCheck | Integer | 最低检测数 | | quantityUnqualified | Integer | 最大不合格数 | | criticalRate | BigDecimal | 最大致命缺陷率(%) | | majorRate | BigDecimal | 最大严重缺陷率(%) | | minorRate | BigDecimal | 最大轻微缺陷率(%) | **响应示例:** ```json { "code": 0, "data": [ { "id": 5, "templateId": 10, "templateCode": "IQC-AQL-Ⅱ", "templateName": "IQC 正常检验二级水平", "quantityCheck": 8, "quantityUnqualified": 1, "criticalRate": 0, "majorRate": 2.5, "minorRate": 10 } ] } ``` ## 前端表现 | 模块 | 触发字段 | qcType | 说明 | |------|----------|--------|------| | IQC | itemId | 1 | 选中物料后按 qcType=1 拉取 | | OQC | itemId | 3 | 选中物料后按 qcType=3 拉取 | | RQC | itemId | 4 | 选中物料后按 qcType=4 拉取(后端已修复为按检测种类匹配模板,不再误匹配到 IQC/IPQC 方案) | | IPQC | workOrderId、taskId | 2 | 选中生产订单后按 qcType=2 拉取,taskId 可选传入 | ## 字段展示规则 「质检方案」字段(templateId): | 场景 | 规则 | |------|------| | 新建、未选物料/生产订单 | 下拉禁用,提示"请先选择产品物料/生产订单" | | 新建、已选物料/生产订单 | 下拉可用,默认选中返回列表第一个方案,可切换 | | 编辑/详情 | 下拉禁用,仅回显已保存的方案 | | 产品未配置可用方案 | 下拉为空(保存时后端仍校验报「未配置质检方案」) | | 产品配置多个 enable 方案 | 下拉展示全部可选方案,用户可切换 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 前端显式传了 templateId | 后端在校验方案必须属于"产品+检测种类"可匹配列表,否则拒绝(防止选到其他产品/其他检测种类的方案) | | 前端未传 templateId | 自动取匹配列表第一个方案,与旧行为一致 | | 编辑检验单 | 不允许修改方案(后端 update 时忽略 templateId) | | 自动触发路径(到货通知→IQC、销售出库→OQC) | 不走下拉,仍由后端自动取方案,行为不变 | ## 注意事项 - 列表、详情回显字段 templateId 在现有 RespVO 中已存在,无需额外对接。 - 保存请求参数新增 `templateId`(质检方案 ID),四个模块 SaveReqVO 均已补充;RQC 原本就带此字段。 - 下拉默认选中第一个依赖组件 `autoSelect: 'first'`,仅当当前值为空时生效,用户手动选择后不会被动覆盖。