质检qms模块通用模块版本只关注qc_inspection_item、qc_inspection_item_category、qc_inspection_main、qc_inspection_main_file_relation、qc_inspection_result、qc_inspection_template、qc_template_item、qc_unqualified_record、qc_unqualified_review! **QMS质检模块** - 仅关注以下核心数据表: - `qc_inspection_item` - 检验项目 - `qc_inspection_item_category` - 检验项目分类 - `qc_inspection_main` - 检验单主表 - `qc_inspection_main_file_relation` - 检验单附件关联 - `qc_inspection_result` - 检验结果 - `qc_inspection_template` - 检验模板 - `qc_template_item` - 模板检验项 - `qc_unqualified_record` - 不合格品记录 - `qc_unqualified_review` - 不合格品评审 #### QMS模块主子表关系详解 ``` qc_inspection_type (检测类型) ↓ │ qc_inspection_item_category (检测项目分类) ←→ qc_inspection_item (检测项定义) ↓ ↓ │ │ qc_inspection_template (检验模板) ←→ qc_template_item (模板检验项) ↓ │ │ │ qc_inspection_main (检验单主表) ←───────────────────┘ ↓ qc_inspection_result (检验结果) qc_inspection_main (检验单主表) → [产生不合格] → qc_unqualified_review (不合格评审) ↓ qc_unqualified_record (不合格记录) ``` **主子表对**: | 主表 | 子表 | 关联字段 | 说明 | |-----|-----|---------|-----| | `qc_inspection_template` | `qc_template_item` | `templateId` | 检验模板包含多个检测项 | | `qc_inspection_main` | `qc_inspection_result` | `inspectionId` | 检验单包含多个检验结果 | | `qc_unqualified_review` | `qc_unqualified_record` | `reviewId` | 不合格评审包含多个评审记录 | **基础数据关联**: | 表 | 关联表 | 关联字段 | 说明 | |---|--------|---------|-----| | `qc_inspection_item` | `qc_inspection_item_category` | `categoryId` | 检验项目归属分类 | | `qc_inspection_item` | `qc_inspection_type` | `inspectionType` | 检验项目归属类型 | | `qc_inspection_main` | `qc_inspection_template` | `templateId` | 检验单引用模板 | | `qc_inspection_result` | `qc_inspection_item` | `itemId` | 检验结果关联检测项定义 | **关键设计特点**: 1. **模板驱动**: 检验单关联模板,模板包含多个检测项定义 2. **级联继承**: 检验结果从检测项定义继承标准值、上下限等规格参数 3. **主子分离**: 主表记录总体信息(单号、物料、数量),子表记录明细(每个检测项的检测结果) 4. **不合格评审**: 当检验结果不合格时,触发评审流程,生成评审主表及记录子表 --- ## 质检模板匹配策略(核心业务规则) **生成质检任务时,按以下4级降级优先级自动匹配模板:** ``` ┌─────────────────────────────────────────────────────────────┐ │ 质检模板匹配策略 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 第1级:物料 + 工位 + 工序 + 检测类型(精确匹配) │ │ ↓ 未找到 │ │ 第2级:物料 + 工位 + 检测类型 │ │ ↓ 未找到 │ │ 第3级:物料 + 检测类型 │ │ ↓ 未找到 │ │ 第4级:通用模板(仅检测类型 + isDefault=1) │ │ ↓ 未找到 → 抛出异常:"无可用检测模板" │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 匹配条件说明 | 优先级 | 匹配条件 | 说明 | 业务场景 | |-------|---------|------|---------| | 1 | 物料 + 工位 + 工序 + 检测类型 | 最精确匹配 | 某物料在特定工位/工序有特殊质检要求 | | 2 | 物料 + 工位 + 检测类型 | 特定工位(不限工序) | 某物料在特定工位的质检要求统一 | | 3 | 物料 + 检测类型 | 特定物料(不限工位/工序) | 某物料的质检要求在任何工位/工序都一致 | | 4 | 通用模板(仅检测类型) | 兜底方案 | 该检测类型的默认质检方案 | ### 检测类型字典 | 代码 | 检测类型 | 说明 | |------|---------|------| | 0 | 首检 | 生产开始前首批产品的检验 | | 1 | 专检 | 专职检验员的检验 | | 2 | 自检 | 操作工自己检验 | | 3 | 互检 | 相互检验(上下工序互检) | | 4 | 原材料检 | 原材料入库检验 | | 5 | 抽检 | 抽样检验 | | 6 | 成品检 | 成品检验 | | 7 | 入库检 | 产品入库前的检验 | ### 通用模板规则 **定义**: - **通用模板**:不绑定具体物料、工序或工位,仅按检测类型适用的默认质检方案 - **标识字段**:`is_default`(0否/1是) **约束规则**: 1. **唯一性**:每种检测类型只能有一个通用模板 2. **互斥性**:通用模板不能同时绑定物料、工序或工位 3. **校验方式**:应用层校验(Service层代码校验,非数据库约束)