zouyu
2026-05-09 e9e88eefcc8abd2b1e187d28c7666e80307e97cc
inspect-server/src/main/resources/mapper/DataAnalysisMapper.xml
@@ -26,7 +26,7 @@
        SELECT
        DAYOFWEEK(io1.send_time) AS week,
        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 2 THEN 1 ELSE 0 END) AS unQualified
        SUM(CASE WHEN iiq.inspect_status = 2 or iiq.inspect_status = 4 THEN 1 ELSE 0 END) AS unQualified
        FROM ifs_inventory_quantity iiq
        INNER JOIN ins_order io1
        ON io1.ifs_inventory_id = iiq.id
@@ -37,7 +37,7 @@
        ) ins ON ins.ins_order_id = io1.id
        WHERE
        iiq.is_finish = 1
        AND iiq.inspect_status IN (1, 2)
        AND iiq.inspect_status IN (1, 2,4)
        AND io1.order_type = #{dto.orderType}
        AND io1.state != -1
        AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
@@ -85,8 +85,8 @@
        SELECT
        DATE(io1.send_time) AS day,
        COUNT(*) AS total,
        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 2 THEN 1 ELSE 0 END) AS unQualified
        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
        FROM ifs_inventory_quantity iiq
        LEFT JOIN ins_order io1
        ON io1.ifs_inventory_id = iiq.id
@@ -94,13 +94,28 @@
        AND io1.state != -1
        AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
        LEFT JOIN (
            SELECT
                iuh.id,
                coa.operation,
                iuh.inventory_quantity_id
            FROM ins_unqualified_handler iuh
            LEFT JOIN (
            SELECT
            *,
            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
            FROM
            common_oa
            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
            WHERE coa.operation !='退回' AND coa.operation is not null
        ) iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
        SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
        FROM ins_sample
        GROUP BY ins_order_id
        ) ins ON ins.ins_order_id = io1.id
        WHERE
        iiq.is_finish = 1
        AND iiq.inspect_status IN (1,2)
        AND iiq.inspect_status IN (1,2,4)
        <if test="dto.materialProp != null and dto.materialProp != ''">
            AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%')
@@ -114,7 +129,9 @@
        <if test="dto.supplierName != null and dto.supplierName != ''">
            AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%')
        </if>
        <if test="dto.contract != null and dto.contract != ''">
            AND IFNULL(iiq.contract,'') = #{dto.contract}
        </if>
        GROUP BY DATE(io1.send_time)
        ) sub ON ad.day = sub.day
        ORDER BY ad.day
@@ -157,8 +174,8 @@
        SELECT
        MONTH(io1.send_time) AS month,
        COUNT(*) AS total,
        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 2 THEN 1 ELSE 0 END) AS unQualified
        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
        FROM ifs_inventory_quantity iiq
        LEFT JOIN ins_order io1
        ON io1.ifs_inventory_id = iiq.id
@@ -166,13 +183,28 @@
        AND io1.state != -1
        AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
        LEFT JOIN (
            SELECT
            iuh.id,
            coa.operation,
            iuh.inventory_quantity_id
            FROM ins_unqualified_handler iuh
            LEFT JOIN (
            SELECT
            *,
            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
            FROM
            common_oa
            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
            WHERE coa.operation !='退回' AND coa.operation is not null
        ) iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
        SELECT ins_order_id, MAX(sample) AS sample, MAX(model) AS model
        FROM ins_sample
        GROUP BY ins_order_id
        ) ins ON ins.ins_order_id = io1.id
        WHERE
        iiq.is_finish = 1
        AND iiq.inspect_status IN (1,2)
        AND iiq.inspect_status IN (1,2,4)
        <if test="dto.materialProp != null and dto.materialProp != ''">
            AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%')
@@ -186,7 +218,9 @@
        <if test="dto.supplierName != null and dto.supplierName != ''">
            AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%')
        </if>
        <if test="dto.contract != null and dto.contract != ''">
            AND IFNULL(iiq.contract,'') = #{dto.contract}
        </if>
        GROUP BY MONTH(io1.send_time)
        ) sub ON am.month = sub.month
        ORDER BY am.month
@@ -198,17 +232,27 @@
        SELECT
        COUNT(*) AS sum,
        /* 合格 */
        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END) AS qualified,
        SUM(CASE WHEN iiq.inspect_status = 1 or (iuh.id is null) THEN 1 ELSE 0 END) AS qualified,
        /* 不合格 */
        SUM(CASE WHEN iiq.inspect_status = 2 THEN 1 ELSE 0 END) AS unQualified,
        ROUND(
        SUM(CASE WHEN iiq.inspect_status = 1 THEN 1 ELSE 0 END)
        / COUNT(*) * 100,
        2
        ) AS passRate
        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unQualified
        FROM ifs_inventory_quantity iiq
        INNER JOIN ins_order io1
        ON io1.ifs_inventory_id = iiq.id
        LEFT JOIN (
            SELECT
            iuh.id,
            coa.operation,
            iuh.inventory_quantity_id
            FROM ins_unqualified_handler iuh
            LEFT JOIN (
            SELECT
            *,
            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
            FROM
            common_oa
            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
            WHERE coa.operation !='退回' AND coa.operation is not null
        ) iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
        SELECT
        is2.ins_order_id,
@@ -220,7 +264,7 @@
        ) ins ON ins.ins_order_id = io1.id
        WHERE
        iiq.is_finish = 1
        AND iiq.inspect_status IN (1, 2)
        AND iiq.inspect_status IN (1, 2,4)
        AND io1.order_type = #{dto.orderType}
        AND io1.state != -1
        AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
@@ -237,21 +281,38 @@
        <if test="dto.supplierName != null and dto.supplierName.trim() != ''">
            AND IFNULL(iiq.supplier_name, '') LIKE CONCAT('%', #{dto.supplierName}, '%')
        </if>
        <if test="dto.contract != null and dto.contract != ''">
            AND IFNULL(iiq.contract,'') = #{dto.contract}
        </if>
    </select>
    <select id="getMaterialPropTable" resultType="com.ruoyi.inspect.dto.MaterialPropTableDTO">
        SELECT
        iiq.update_batch_no AS updateBatchNo, -- 修改后批次号
        iiq.qty_arrived AS qtyArrived, -- 抵达的采购数量
        iiq.part_desc AS partDesc, -- 零件描述
        iiq.inspect_status AS inspectStatus, -- 合格状态
        io1.send_time AS sendTime -- 下发时间
        iiq.supplier_name AS supplierName,
        COUNT(iiq.id) AS totalBatch,
        SUM(CASE WHEN iiq.inspect_status = 2 or (iuh.id is not null) THEN 1 ELSE 0 END) AS unqualifiedBatch,
        ROUND(SUM(CASE WHEN iiq.inspect_status = 1 and iuh.id is null THEN 1 ELSE 0 END) / COUNT(*)* 100, 2 ) AS passRate
        FROM ifs_inventory_quantity iiq
        INNER JOIN ins_order io1
        ON io1.ifs_inventory_id = iiq.id
        AND io1.order_type = #{dto.orderType}
        AND io1.state != -1
        AND io1.send_time BETWEEN #{dto.beginDate} AND #{dto.endDate}
        LEFT JOIN (
            SELECT
            iuh.id,
            coa.operation,
            iuh.inventory_quantity_id
            FROM ins_unqualified_handler iuh
            LEFT JOIN (
            SELECT
            *,
            ROW_NUMBER() OVER (PARTITION BY workflow_id ORDER BY approval_date DESC,approval_time DESC, id DESC) AS rn
            FROM
            common_oa
            ) AS coa ON iuh.request_id = coa.workflow_id AND coa.rn = 1
            WHERE coa.operation !='退回' AND coa.operation is not null
        ) iuh ON iiq.id = iuh.inventory_quantity_id
        LEFT JOIN (
        SELECT
        ins_order_id,
@@ -260,9 +321,10 @@
        FROM ins_sample
        GROUP BY ins_order_id
        ) ins ON ins.ins_order_id = io1.id
        WHERE
        iiq.is_finish = 1
        AND iiq.inspect_status IN (1,2)
        AND iiq.inspect_status IN (1,2,4)
        <if test="dto.materialProp != null and dto.materialProp != ''">
            AND IFNULL(iiq.material_prop,'') LIKE CONCAT('%',#{dto.materialProp},'%')
@@ -279,8 +341,15 @@
        <if test="dto.supplierName != null and dto.supplierName != ''">
            AND IFNULL(iiq.supplier_name,'') LIKE CONCAT('%',#{dto.supplierName},'%')
        </if>
        <if test="dto.contract != null and dto.contract != ''">
            AND IFNULL(iiq.contract,'') = #{dto.contract}
        </if>
        GROUP BY
        iiq.supplier_name
        ORDER BY io1.send_time DESC
        ORDER BY
        passRate DESC;
    </select>
    <select id="getRawProductAnalysisAllSample" resultType="com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto">