huminmin
2 小时以前 a53f698e4667bc57dcc1de65f77936024f9a06a0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.mes.dal.mysql.qc.pendinginspect.MesQcPendingInspectMapper">
 
    <!--
        待检任务查询(UNION ALL 多来源),已实现的来源:
        1. 到货通知单(IQC):单据状态=PENDING_QC(2),行的 iqc_check_flag=1 且 iqc_id 为空
        2. 外协入库单(IQC):单据状态=CONFIRMED(1),行的 iqc_check_flag=1 且 iqc_id 为空
        3. 产品产出行(IPQC):产出行的 quality_status=PENDING(0),通过产出单头→报工关联
        4. 销售出库单(OQC):单据状态=CONFIRMED(1),行的 oqc_check_flag=1 且 oqc_id 为空
        5. 生产退料单(RQC):单据状态=CONFIRMED(1),行的 rqc_check_flag=1 且 rqc_id 为空 且 quality_status=0(待检)
        6. 销售退货单(RQC):单据状态=CONFIRMED(1),行的 rqc_check_flag=1 且 rqc_id 为空 且 quality_status=0(待检)
    -->
    <select id="selectQcPendingPage" resultType="cn.iocoder.yudao.module.mes.controller.admin.qc.pendinginspect.vo.MesQcPendingInspectRespVO">
        SELECT * FROM (
            <!-- 1. IQC 来源:到货通知单 -->
            SELECT
                n.id AS sourceDocId,
                ${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@WM_ARRIVAL_NOTICE} AS sourceDocType,
                n.code AS sourceDocCode,
                l.id AS sourceLineId,
                n.arrival_date AS recordTime,
                ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IQC.type} AS qcType,
                l.item_id AS itemId,
                l.arrival_quantity AS quantity,
                n.vendor_id AS vendorId,
                NULL AS workOrderId,
                NULL AS workstationId,
                NULL AS taskId,
                NULL AS clientId
            FROM mes_wm_arrival_notice n
                JOIN mes_wm_arrival_notice_line l ON n.id = l.notice_id
            WHERE n.status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmArrivalNoticeStatusEnum@PENDING_QC.status}
              AND l.iqc_check_flag = 1
              AND l.iqc_id IS NULL
              AND n.deleted = 0
              AND l.deleted = 0
 
            UNION ALL
 
            <!-- 2. IQC 来源:外协入库单 -->
            SELECT
                r.id AS sourceDocId,
                ${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@WM_OUTSOURCE_RECPT} AS sourceDocType,
                r.code AS sourceDocCode,
                rl.id AS sourceLineId,
                r.receipt_date AS recordTime,
                ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IQC.type} AS qcType,
                rl.item_id AS itemId,
                rl.quantity AS quantity,
                r.vendor_id AS vendorId,
                NULL AS workOrderId,
                NULL AS workstationId,
                NULL AS taskId,
                NULL AS clientId
            FROM mes_wm_outsource_receipt r
                JOIN mes_wm_outsource_receipt_line rl ON r.id = rl.receipt_id
            WHERE r.status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmOutsourceReceiptStatusEnum@CONFIRMED.status}
              AND rl.iqc_check_flag = 1
              AND rl.iqc_id IS NULL
              AND r.deleted = 0
              AND rl.deleted = 0
 
            UNION ALL
 
            <!-- 3. IPQC 来源:产品产出行(quality_status=PENDING) -->
            SELECT
                pf.id AS sourceDocId,
                ${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@PRO_FEEDBACK} AS sourceDocType,
                pf.code AS sourceDocCode,
                ppl.id AS sourceLineId,
                pf.feedback_time AS recordTime,
                ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IPQC.type} AS qcType,
                ppl.item_id AS itemId,
                ppl.quantity AS quantity,
                NULL AS vendorId,
                pf.work_order_id AS workOrderId,
                pf.workstation_id AS workstationId,
                pf.task_id AS taskId,
                NULL AS clientId
            FROM mes_wm_product_produce_line ppl
                JOIN mes_wm_product_produce pp ON ppl.produce_id = pp.id
                JOIN mes_pro_feedback pf ON pp.feedback_id = pf.id
            WHERE ppl.quality_status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum@PENDING.status}
              AND ppl.deleted = 0
              AND pp.deleted = 0
              AND pf.deleted = 0
 
            UNION ALL
 
            <!-- 4. OQC 来源:销售出库单行(oqc_check_flag=1 且 oqc_id IS NULL) -->
            SELECT
                s.id AS sourceDocId,
                ${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@WM_PRODUCT_SALES} AS sourceDocType,
                s.code AS sourceDocCode,
                sl.id AS sourceLineId,
                s.sales_date AS recordTime,
                ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@OQC.type} AS qcType,
                sl.item_id AS itemId,
                sl.quantity AS quantity,
                NULL AS vendorId,
                NULL AS workOrderId,
                NULL AS workstationId,
                NULL AS taskId,
                s.client_id AS clientId
            FROM mes_wm_product_sales s
                JOIN mes_wm_product_sales_line sl ON s.id = sl.sales_id
            WHERE sl.oqc_check_flag = 1
              AND sl.oqc_id IS NULL
              AND s.status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmProductSalesStatusEnum@CONFIRMED.status}
              AND s.deleted = 0
              AND sl.deleted = 0
 
            UNION ALL
 
            <!-- 5. RQC 来源:生产退料单行(状态=待检验,行的 rqc_check_flag=1 且 rqc_id IS NULL 且 quality_status=0) -->
            SELECT
                ri.id AS sourceDocId,
                ${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@WM_RETURN_ISSUE} AS sourceDocType,
                ri.code AS sourceDocCode,
                ril.id AS sourceLineId,
                ri.return_date AS recordTime,
                ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@RQC.type} AS qcType,
                ril.item_id AS itemId,
                ril.quantity AS quantity,
                NULL AS vendorId,
                ri.work_order_id AS workOrderId,
                ri.workstation_id AS workstationId,
                ri.task_id AS taskId,
                NULL AS clientId
            FROM mes_wm_return_issue ri
                JOIN mes_wm_return_issue_line ril ON ri.id = ril.issue_id
            WHERE ri.status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnIssueStatusEnum@CONFIRMED.status}
              AND ril.rqc_check_flag = 1
              AND ril.rqc_id IS NULL
              AND ril.quality_status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum@PENDING.status}
              AND ri.deleted = 0
              AND ril.deleted = 0
 
            UNION ALL
 
            <!-- 6. RQC 来源:销售退货单(待检验(CONFIRMED),行的 quality_status=0) -->
            SELECT
                r.id AS sourceDocId,
                ${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@WM_RETURN_SALES} AS sourceDocType,
                r.code AS sourceDocCode,
                rl.id AS sourceLineId,
                r.return_date AS recordTime,
                ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@RQC.type} AS qcType,
                rl.item_id AS itemId,
                rl.quantity AS quantity,
                NULL AS vendorId,
                NULL AS workOrderId,
                NULL AS workstationId,
                NULL AS taskId,
                r.client_id AS clientId
            FROM mes_wm_return_sales r
                JOIN mes_wm_return_sales_line rl ON r.id = rl.return_id
            WHERE r.status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnSalesStatusEnum@CONFIRMED.status}
              AND rl.rqc_check_flag = 1
              AND rl.rqc_id IS NULL
              AND rl.quality_status = ${@cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum@PENDING.status}
              AND r.deleted = 0
              AND rl.deleted = 0
        ) t
        <where>
            <if test="sourceDocCode != null and sourceDocCode != ''">
                AND t.sourceDocCode LIKE CONCAT('%', #{sourceDocCode}, '%')
            </if>
            <if test="qcType != null">
                AND t.qcType = #{qcType}
            </if>
            <if test="itemId != null">
                AND t.itemId = #{itemId}
            </if>
        </where>
        ORDER BY t.recordTime DESC
    </select>
 
</mapper>