Commit fd888712d12b00b6285b7b2913c36288b22c62af

Authored by YunaiV
1 parent dfeb3c10

✨ feat(mes): 更新销售出库单状态流转逻辑,添加 OQC 检验支持

优化销售出库单的状态流转逻辑,新增待检测状态以支持 OQC 检验。根据检验结果自动流转状态,提升出库流程的灵活性和准确性。
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/ipqc/MesQcIpqcDO.java
@@ -76,7 +76,7 @@ public class MesQcIpqcDO extends BaseDO { @@ -76,7 +76,7 @@ public class MesQcIpqcDO extends BaseDO {
76 * 来源单据行 ID 76 * 来源单据行 ID
77 * 77 *
78 * 关联:根据 {@link #sourceDocType} 不同: 78 * 关联:根据 {@link #sourceDocType} 不同:
79 - * 1. {@link MesQcSourceDocTypeEnum#PRO_FEEDBACK} 时,暂不使用(预留) 79 + * 1. {@link MesQcSourceDocTypeEnum#PRO_FEEDBACK} 时,关联 {@link cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce.MesWmProductProduceLineDO#getId()}
80 */ 80 */
81 private Long sourceLineId; 81 private Long sourceLineId;
82 /** 82 /**
yudao-module-mes/src/main/resources/mapper/qc/pendinginspect/MesQcPendingInspectMapper.xml
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 待检任务查询(UNION ALL 多来源),已实现的来源: 6 待检任务查询(UNION ALL 多来源),已实现的来源:
7 1. 到货通知单(IQC):单据状态=PENDING_QC(2),行的 iqc_check_flag=1 且 iqc_id 为空 7 1. 到货通知单(IQC):单据状态=PENDING_QC(2),行的 iqc_check_flag=1 且 iqc_id 为空
8 2. 外协入库单(IQC):单据状态=CONFIRMED(1),行的 iqc_check_flag=1 且 iqc_id 为空 8 2. 外协入库单(IQC):单据状态=CONFIRMED(1),行的 iqc_check_flag=1 且 iqc_id 为空
9 - 3. 生产报工(IPQC):单据状态=UNCHECK(3) 9 + 3. 产品产出行(IPQC):产出行的 quality_status=PENDING(0),通过产出单头→报工关联
10 4. 销售出库单(OQC):单据状态=CONFIRMED(1),行的 oqc_check_flag=1 且 oqc_id 为空 10 4. 销售出库单(OQC):单据状态=CONFIRMED(1),行的 oqc_check_flag=1 且 oqc_id 为空
11 5. 生产退料单(RQC):单据状态=CONFIRMED(1),行的 rqc_check_flag=1 且 rqc_id 为空 且 quality_status=0(待检) 11 5. 生产退料单(RQC):单据状态=CONFIRMED(1),行的 rqc_check_flag=1 且 rqc_id 为空 且 quality_status=0(待检)
12 6. 销售退货单(RQC):单据状态=CONFIRMED(1),行的 rqc_check_flag=1 且 rqc_id 为空 且 quality_status=0(待检) 12 6. 销售退货单(RQC):单据状态=CONFIRMED(1),行的 rqc_check_flag=1 且 rqc_id 为空 且 quality_status=0(待检)
@@ -63,24 +63,28 @@ @@ -63,24 +63,28 @@
63 63
64 UNION ALL 64 UNION ALL
65 65
66 - <!-- 3. IPQC 来源:生产报工(状态=待检验) --> 66 + <!-- 3. IPQC 来源:产品产出行(quality_status=PENDING) -->
67 SELECT 67 SELECT
68 - f.id AS sourceDocId, 68 + pf.id AS sourceDocId,
69 ${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@PRO_FEEDBACK} AS sourceDocType, 69 ${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@PRO_FEEDBACK} AS sourceDocType,
70 - f.code AS sourceDocCode,  
71 - NULL AS sourceLineId,  
72 - f.feedback_time AS recordTime, 70 + pf.code AS sourceDocCode,
  71 + ppl.id AS sourceLineId,
  72 + pf.feedback_time AS recordTime,
73 ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IPQC.type} AS qcType, 73 ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IPQC.type} AS qcType,
74 - f.item_id AS itemId,  
75 - f.uncheck_quantity AS quantity, 74 + ppl.item_id AS itemId,
  75 + ppl.quantity AS quantity,
76 NULL AS vendorId, 76 NULL AS vendorId,
77 - f.work_order_id AS workOrderId,  
78 - f.workstation_id AS workstationId,  
79 - f.task_id AS taskId, 77 + pp.work_order_id AS workOrderId,
  78 + pp.workstation_id AS workstationId,
  79 + pp.task_id AS taskId,
80 NULL AS clientId 80 NULL AS clientId
81 - FROM mes_pro_feedback f  
82 - WHERE f.status = ${@cn.iocoder.yudao.module.mes.enums.pro.MesProFeedbackStatusEnum@UNCHECK.status}  
83 - AND f.deleted = 0 81 + FROM mes_wm_product_produce_line ppl
  82 + JOIN mes_wm_product_produce pp ON ppl.produce_id = pp.id
  83 + JOIN mes_pro_feedback pf ON pp.feedback_id = pf.id
  84 + WHERE ppl.quality_status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum@PENDING.status}
  85 + AND ppl.deleted = 0
  86 + AND pp.deleted = 0
  87 + AND pf.deleted = 0
84 88
85 UNION ALL 89 UNION ALL
86 90