MesQcPendingInspectMapper.xml 7.88 KB
<?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):状态=待质检(2),行的 iqc_check_flag=1 且 iqc_id IS NULL
        2. 外协入库单(IQC/OIQC):状态=待检验(1),行的 iqc_check=1 且 iqc_id IS NULL
        3. 生产报工(IPQC):状态=待检验(3)
        4. 销售出库单(OQC):行的 oqc_check=1 且 oqc_id IS NULL
        5. 生产退料单(RQC):状态=待检验(5),行的 qc_flag=1 且 quality_status=0(待检)
        6. 销售退货单(RQC):状态=待执行(10),行的 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 = 1
              AND rl.iqc_id IS NULL
              AND r.deleted = 0
              AND rl.deleted = 0

            UNION ALL

            <!-- 3. IPQC 来源:生产报工(状态=待检验) -->
            SELECT
                f.id AS sourceDocId,
                ${@cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants@PRO_FEEDBACK} AS sourceDocType,
                f.code AS sourceDocCode,
                NULL AS sourceLineId,
                f.feedback_time AS recordTime,
                ${@cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum@IPQC.type} AS qcType,
                f.item_id AS itemId,
                f.uncheck_quantity AS quantity,
                NULL AS vendorId,
                f.work_order_id AS workOrderId,
                f.workstation_id AS workstationId,
                f.task_id AS taskId,
                NULL AS clientId
            FROM mes_pro_feedback f
            WHERE f.status = ${@cn.iocoder.yudao.module.mes.enums.pro.MesProFeedbackStatusEnum@UNCHECK.status}
              AND f.deleted = 0

            UNION ALL

            <!-- 4. OQC 来源:销售出库单行(oqc_check=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 = 1
              AND sl.oqc_id IS NULL
              AND s.deleted = 0
              AND sl.deleted = 0

            UNION ALL

            <!-- 5. RQC 来源:生产退料单行(状态=待检验,行的 qc_flag=1 且 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,
                NULL 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.qc_flag = 1
              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 来源:销售退货单(待执行(APPROVING),行的 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@APPROVING.status}
              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>