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 76 * 来源单据行 ID
77 77 *
78 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 81 private Long sourceLineId;
82 82 /**
... ...
yudao-module-mes/src/main/resources/mapper/qc/pendinginspect/MesQcPendingInspectMapper.xml
... ... @@ -6,7 +6,7 @@
6 6 待检任务查询(UNION ALL 多来源),已实现的来源:
7 7 1. 到货通知单(IQC):单据状态=PENDING_QC(2),行的 iqc_check_flag=1 且 iqc_id 为空
8 8 2. 外协入库单(IQC):单据状态=CONFIRMED(1),行的 iqc_check_flag=1 且 iqc_id 为空
9   - 3. 生产报工(IPQC):单据状态=UNCHECK(3)
  9 + 3. 产品产出行(IPQC):产出行的 quality_status=PENDING(0),通过产出单头→报工关联
10 10 4. 销售出库单(OQC):单据状态=CONFIRMED(1),行的 oqc_check_flag=1 且 oqc_id 为空
11 11 5. 生产退料单(RQC):单据状态=CONFIRMED(1),行的 rqc_check_flag=1 且 rqc_id 为空 且 quality_status=0(待检)
12 12 6. 销售退货单(RQC):单据状态=CONFIRMED(1),行的 rqc_check_flag=1 且 rqc_id 为空 且 quality_status=0(待检)
... ... @@ -63,24 +63,28 @@
63 63  
64 64 UNION ALL
65 65  
66   - <!-- 3. IPQC 来源:生产报工(状态=待检验) -->
  66 + <!-- 3. IPQC 来源:产品产出行(quality_status=PENDING) -->
67 67 SELECT
68   - f.id AS sourceDocId,
  68 + pf.id AS sourceDocId,
69 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 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 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 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 89 UNION ALL
86 90  
... ...