# 不合格品处理 - 前端联调方案 ## 涉及页面 - 质量管理 > 不合格品处理(新增页面 `mes/qc/ncr/index`) - 来料检验详情页(增加"生成NCR"按钮) - 过程检验详情页(增加"生成NCR"按钮) - 出货检验详情页(增加"生成NCR"按钮) - 退料检验详情页(增加"生成NCR"按钮) ## 业务流程与数据带入 1. **检验判定不合格 → NCR 创建**:在各检验单详情页,当检验结果为"不合格退货"或"不合格报废"时,可点击"生成NCR"按钮,自动带入检验类型、检验单ID/编号、物料信息、不合格数量、不合格描述,跳转到 NCR 新建页面。 2. **NCR 待评审 → 评审**:填写处置方式(退货/报废/返工/让步接收/降级使用)、责任部门、缺陷等级、评审意见。 3. **NCR 已评审 → 处置**:填写处理人、处理结果说明。 4. **NCR 已处置 → 关闭**:填写关闭意见。 ## API | 方法 | 路径 | 说明 | |------|------|------| | POST | `/mes/qc/ncr/create` | 创建不合格品处理单 | | PUT | `/mes/qc/ncr/update` | 更新不合格品处理单(仅待评审状态) | | PUT | `/mes/qc/ncr/review` | 评审不合格品处理单 | | PUT | `/mes/qc/ncr/dispose` | 执行不合格品处置 | | PUT | `/mes/qc/ncr/close` | 关闭不合格品处理单 | | DELETE | `/mes/qc/ncr/delete` | 删除不合格品处理单(仅待评审状态) | | GET | `/mes/qc/ncr/get` | 获得不合格品处理单详情 | | GET | `/mes/qc/ncr/page` | 获得不合格品处理单分页列表 | | GET | `/mes/qc/ncr/export-excel` | 导出不合格品处理单 Excel | ### 创建 NCR **POST** `/mes/qc/ncr/create` 请求参数: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | code | String | 是 | NCR单号 | | name | String | 是 | NCR名称 | | qcType | Integer | 否 | 检验类型(1=IQC/2=IPQC/3=OQC/4=RQC) | | qcId | Long | 否 | 来源检验单ID | | itemId | Long | 是 | 不合格物料ID | | defectLevel | Integer | 否 | 缺陷等级(1=致命/2=严重/3=轻微) | | unqualifiedQuantity | BigDecimal | 否 | 不合格数量 | | defectDescription | String | 否 | 不合格描述 | | rootCause | String | 否 | 根本原因 | | correctiveAction | String | 否 | 纠正措施 | | preventiveAction | String | 否 | 预防措施 | | remark | String | 否 | 备注 | ### 更新 NCR **PUT** `/mes/qc/ncr/update` 请求参数:同创建,增加 `id` 字段(必填)。 ### 评审 NCR **PUT** `/mes/qc/ncr/review` 请求参数: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 是 | NCR编号 | | disposition | Integer | 是 | 处置方式(1=退货/2=报废/3=返工/4=让步接收/5=降级使用) | | responsibleDeptId | Long | 否 | 责任部门ID | | defectLevel | Integer | 否 | 缺陷等级 | | reviewOpinion | String | 否 | 评审意见 | ### 处置 NCR **PUT** `/mes/qc/ncr/dispose` 请求参数: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 是 | NCR编号 | | handlerUserId | Long | 否 | 处理人ID | | handleResult | String | 否 | 处理结果说明 | ### 关闭 NCR **PUT** `/mes/qc/ncr/close` 请求参数: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 是 | NCR编号 | | closeOpinion | String | 否 | 关闭意见 | ### 分页查询 **GET** `/mes/qc/ncr/page` 请求参数: | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | code | String | 否 | NCR单号(模糊) | | qcType | Integer | 否 | 检验类型 | | itemId | Long | 否 | 不合格物料ID | | defectLevel | Integer | 否 | 缺陷等级 | | disposition | Integer | 否 | 处置方式 | | status | Integer | 否 | 状态 | | responsibleDeptId | Long | 否 | 责任部门ID | | reviewDate | LocalDateTime[] | 否 | 评审日期范围 | | createTime | LocalDateTime[] | 否 | 创建时间范围 | | pageNo | Integer | 否 | 页码 | | pageSize | Integer | 否 | 每页条数 | ### 响应字段 | 字段 | 类型 | 说明 | |------|------|------| | id | Long | 编号 | | code | String | NCR单号 | | name | String | NCR名称 | | qcType | Integer | 检验类型 | | qcId | Long | 来源检验单ID | | qcCode | String | 来源检验单编号 | | itemId | Long | 物料ID | | itemCode | String | 物料编码 | | itemName | String | 物料名称 | | itemSpecification | String | 规格型号 | | defectLevel | Integer | 缺陷等级 | | unqualifiedQuantity | BigDecimal | 不合格数量 | | defectDescription | String | 不合格描述 | | disposition | Integer | 处置方式 | | responsibleDeptId | Long | 责任部门ID | | responsibleDeptName | String | 责任部门名称 | | reviewerUserId | Long | 评审人ID | | reviewerNickname | String | 评审人昵称 | | reviewDate | LocalDateTime | 评审日期 | | reviewOpinion | String | 评审意见 | | handlerUserId | Long | 处理人ID | | handlerNickname | String | 处理人昵称 | | handleDate | LocalDateTime | 处理日期 | | handleResult | String | 处理结果说明 | | rootCause | String | 根本原因 | | correctiveAction | String | 纠正措施 | | preventiveAction | String | 预防措施 | | closeUserId | Long | 关闭人ID | | closeUserNickname | String | 关闭人昵称 | | closeDate | LocalDateTime | 关闭日期 | | closeOpinion | String | 关闭意见 | | status | Integer | 状态 | | remark | String | 备注 | | createTime | LocalDateTime | 创建时间 | ## 业务规则说明 ### 状态流转 ``` 待评审(0) ──评审──▶ 已评审(1) ──处置──▶ 已处置(2) ──关闭──▶ 已关闭(3) ``` ### 操作权限约束 | 操作 | 允许状态 | 说明 | |------|----------|------| | 创建 | — | 无状态限制 | | 更新 | 待评审 | 仅待评审状态可编辑 | | 删除 | 待评审 | 仅待评审状态可删除 | | 评审 | 待评审 | 状态变为"已评审",自动填入当前登录人为评审人 | | 处置 | 已评审 | 状态变为"已处置" | | 关闭 | 已处置 | 状态变为"已关闭",自动填入当前登录人为关闭人 | ### 处置方式枚举 | 值 | 名称 | 说明 | |----|------|------| | 1 | 退货 | 退回供应商 | | 2 | 报废 | 内部报废处理 | | 3 | 返工 | 重新加工 | | 4 | 让步接收 | 特采接收 | | 5 | 降级使用 | 降级后使用 | ### 缺陷等级枚举 | 值 | 名称 | |----|------| | 1 | 致命 | | 2 | 严重 | | 3 | 轻微 | ## 注意事项 - NCR 创建时编号规则建议:`NCR` + 年月日时分秒(如 `NCR20250101120000`),前端可用时间戳生成 - 从检验单生成 NCR 时,建议将 `qcType`、`qcId`、`itemId`、`unqualifiedQuantity` 自动带入 - NCR 的 `qcCode` 字段存储来源检验单编号,用于列表展示关联关系 - 列表页推荐展示:NCR单号、来源检验单编号、物料名称、缺陷等级、不合格数量、处置方式、状态、创建时间 - 不同状态下展示不同的操作按钮: - 待评审:编辑、删除、评审 - 已评审:处置 - 已处置:关闭 - 已关闭:仅查看 - 详情页建议分区域展示:不合格品信息、评审信息、处置信息、关闭信息 - 状态字典类型为 `mes_ncr_status`,处置方式字典类型为 `mes_ncr_disposition`