8 天以前 6d15d7a800fcf4e074ba9918de05408b2c393967
docs(qc): 更新质检功能前端联调文档

- 添加质检导出功能增强文档,支持检验项指标列和检测时间范围筛选
- 新增质检检验单手动选择质检方案文档,支持多方案时手动选择
- 完善相关API接口参数和响应字段说明
- 更新前端表现和业务规则说明
- 补充注意事项和字段展示规则
已添加2个文件
171 ■■■■■ 文件已修改
docs/qc_export_integration.md 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/qc_template_option_selection.md 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/qc_export_integration.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
# è´¨æ£€å¯¼å‡ºåŠŸèƒ½å¢žå¼º - å‰ç«¯è”调方案
## æ¶‰åŠé¡µé¢
- æ¥æ–™æ£€éªŒå•(IQC)列表页
- è¿‡ç¨‹æ£€éªŒå•(IPQC)列表页
- å‡ºè´§æ£€éªŒå•(OQC)列表页
- é€€è´§æ£€éªŒå•(RQC)列表页
以上四个页面的「导出」功能均需调整。
## å˜æ›´æ¦‚览
1. **导出 Excel æ–°å¢žã€Œæ£€éªŒé¡¹æŒ‡æ ‡ã€åˆ—**:展示该检验单所有检验项的结果汇总。
2. **导出支持按检测时间范围筛选**:用户选择时间范围后,只导出检测日期落在范围内的检验单。
## ä¸šåŠ¡æµç¨‹ä¸Žæ•°æ®å¸¦å…¥
1. ç”¨æˆ·åœ¨åˆ—表页设置筛选条件(含新增的「检测时间范围」)→ ç‚¹å‡»ã€Œå¯¼å‡ºã€ã€‚
2. å¯¼å‡ºæŽ¥å£ä»¥å½“前筛选条件(与分页查询相同的筛选参数)拉取全部数据,生成 Excel ä¸‹è½½ã€‚
3. ä¸é€‰æ‹©æ—¶é—´èŒƒå›´æ—¶ï¼Œå¯¼å‡ºè¡Œä¸ºä¸Žæ”¹åŠ¨å‰ä¸€è‡´ï¼ˆå¯¼å‡ºå…¨éƒ¨ç¬¦åˆå…¶å®ƒç­›é€‰æ¡ä»¶çš„æ•°æ®ï¼‰ã€‚
## API
| æ–¹æ³• | è·¯å¾„ | è¯´æ˜Ž |
|------|------|------|
| GET | /mes/qc/iqc/export-excel | å¯¼å‡ºæ¥æ–™æ£€éªŒå• |
| GET | /mes/qc/ipqc/export-excel | å¯¼å‡ºè¿‡ç¨‹æ£€éªŒå• |
| GET | /mes/qc/oqc/export-excel | å¯¼å‡ºå‡ºè´§æ£€éªŒå• |
| GET | /mes/qc/rqc/export-excel | å¯¼å‡ºé€€è´§æ£€éªŒå• |
**新增请求参数(四个接口一致):**
| å‚æ•° | ç±»åž‹ | å¿…å¡« | è¯´æ˜Ž |
|------|------|------|------|
| inspectDate[0] | String | å¦ | æ£€æµ‹å¼€å§‹æ—¶é—´ï¼Œæ ¼å¼ yyyy-MM-dd HH:mm:ss |
| inspectDate[1] | String | å¦ | æ£€æµ‹ç»“束时间,格式 yyyy-MM-dd HH:mm:ss |
说明:此参数为筛选条件,与分页查询 `GET /mes/qc/xxx/page` çš„传参方式完全一致,前端分页与导出可复用同一套查询参数对象。
**导出 Excel æ–°å¢žåˆ—:**
| åˆ—名 | ç±»åž‹ | è¯´æ˜Ž |
|------|------|------|
| æ£€éªŒé¡¹æŒ‡æ ‡ | String | æ ¼å¼ï¼šæŒ‡æ ‡åç§°:检测值 æˆ– æŒ‡æ ‡åç§°:检测值(备注),多个指标用逗号分隔,例如 `外观:良好(OK), å°ºå¯¸:100.00mm(OK)`;无检验结果时为空 |
## å­—段展示规则
| å­—段 | å±•示位置 | è¯´æ˜Ž |
|------|----------|------|
| æ£€éªŒé¡¹æŒ‡æ ‡ | Excel「检验项指标」列 | ç”±ç³»ç»Ÿè‡ªåŠ¨æ‹¼æŽ¥ï¼Œå‰ç«¯æ— éœ€å¤„ç†æ ¼å¼ |
| æ£€æµ‹æ—¶é—´èŒƒå›´ | åˆ—表页筛选区 | æ–°å¢žæ—¶é—´èŒƒå›´é€‰æ‹©æŽ§ä»¶ï¼Œå»ºè®®ä¸ŽçŽ°æœ‰ã€Œæ£€æµ‹æ—¥æœŸã€åˆ—å¯¹åº” |
## ä¸šåŠ¡è§„åˆ™è¯´æ˜Ž
| åœºæ™¯ | è§„则 |
|------|------|
| æœªé€‰æ‹©æ—¶é—´èŒƒå›´ | å¯¼å‡ºå…¨éƒ¨æ•°æ®ï¼ˆä¸Žæ”¹åŠ¨å‰ä¸€è‡´ï¼‰ |
| ä»…选择开始时间 | å¯¼å‡ºæ£€æµ‹æ—¥æœŸå¤§äºŽç­‰äºŽå¼€å§‹æ—¶é—´çš„记录 |
| ä»…选择结束时间 | å¯¼å‡ºæ£€æµ‹æ—¥æœŸå°äºŽç­‰äºŽç»“束时间的记录 |
| é€‰æ‹©å®Œæ•´èŒƒå›´ | å¯¼å‡ºæ£€æµ‹æ—¥æœŸåœ¨é—­åŒºé—´ [开始, ç»“束] å†…的记录 |
| æ— æ£€éªŒç»“æžœ | ã€Œæ£€éªŒé¡¹æŒ‡æ ‡ã€åˆ—导出为空 |
| è¿‡æ»¤å­—段 | æ—¶é—´èŒƒå›´é’ˆå¯¹å„检验单的「检测日期」字段过滤 |
| å¯¼å‡ºæƒé™ | ä»å—各页面原有 `export` æƒé™æŽ§åˆ¶ï¼ŒOQC å¯¼å‡ºä¿ç•™å®¢æˆ·æ•°æ®æƒé™è¿‡æ»¤ |
## æ³¨æ„äº‹é¡¹
- åˆ†é¡µå’Œå¯¼å‡ºå…±ç”¨åŒä¸€å¥—筛选参数,前端导出时应把当前筛选条件(含时间范围)一并作为请求参数传递。
- æ—¶é—´æŽ§ä»¶æ ¼å¼å¿…须为 `yyyy-MM-dd HH:mm:ss`,否则后端无法解析。
- å››ä¸ªé¡µé¢å„自调用对应的导出接口,参数名完全相同,可复用同一导出函数。
- è‹¥åŽç»­éœ€è¦æŒ‰ã€Œåˆ›å»ºæ—¶é—´ã€ç­‰å…¶å®ƒæ—¶é—´ç»´åº¦ç­›é€‰ï¼Œå¯å¦è¡Œæ‰©å±•,本次仅支持检测时间。
docs/qc_template_option_selection.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,100 @@
# è´¨æ£€æ£€éªŒå•手动选择质检方案 - å‰ç«¯è”调方案
## æ¶‰åŠé¡µé¢
- æ¥æ–™æ£€éªŒï¼ˆ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'`,仅当当前值为空时生效,用户手动选择后不会被动覆盖。