gongchunyi
2026-06-25 caab0b18b4500c34173f0f932499b7324997ab92
src/main/resources/mapper/quality/QualityInspectMapper.xml
@@ -158,7 +158,7 @@
        GROUP BY pt.root_id, pt.root_name
    </select>
    <select id="getPassRateStatistics" resultType="com.ruoyi.quality.dto.QualityPassRateDto">
    <select id="getRawPassRateStatistics" resultType="com.ruoyi.quality.pojo.QualityInspect">
        WITH RECURSIVE product_tree AS (SELECT id,
                                               product_name,
                                               CASE product_name
@@ -177,42 +177,15 @@
                                        FROM product p
                                                 INNER JOIN product_tree pt ON p.parent_id = pt.id)
        SELECT base.modelType,
               COALESCE(SUM(qi.quantity), 0)                                                AS totalCount,
               COALESCE(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END), 0) AS completedCount,
               COALESCE(SUM(CASE
                                  WHEN qi.inspect_state = 1 THEN IFNULL(qi.qualified_quantity,
                                                                          CASE WHEN qi.check_result = '合格' THEN IFNULL(qi.quantity, 0) ELSE 0 END)
                                  ELSE 0 END), 0)                                  AS qualifiedCount,
               COALESCE(SUM(CASE
                                  WHEN qi.inspect_state = 1 THEN IFNULL(qi.unqualified_quantity,
                                                                        CASE WHEN qi.check_result IN ('不合格', '部分合格') THEN IFNULL(qi.quantity, 0) ELSE 0 END)
                                  ELSE 0 END), 0)                                  AS unqualifiedCount,
               IF(COALESCE(SUM(qi.quantity), 0) = 0, 0,
                  ROUND(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END)
                            / SUM(qi.quantity) * 100, 2)
                   )                                                                        AS completionRate,
               IF(SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END) = 0, 0,
                  ROUND(SUM(CASE
                                WHEN qi.inspect_state = 1 THEN IFNULL(qi.qualified_quantity,
                                                                        CASE WHEN qi.check_result = '合格' THEN IFNULL(qi.quantity, 0) ELSE 0 END)
                                ELSE 0 END)
                            / SUM(CASE WHEN qi.inspect_state = 1 THEN qi.quantity ELSE 0 END) * 100, 2)
                   )                                                                        AS passRate
        FROM (SELECT 0 AS modelType
              UNION ALL
              SELECT 1
              UNION ALL
              SELECT 2) base
                 LEFT JOIN product_tree pt ON base.modelType = pt.modelType
                 LEFT JOIN product_model pm ON pm.product_id = pt.id
                 LEFT JOIN quality_inspect qi ON qi.product_model_id = pm.id
        GROUP BY base.modelType
        ORDER BY base.modelType
        SELECT pt.modelType AS inspectType,
               qi.quantity,
               qi.inspect_state AS inspectState,
               qi.check_result AS checkResult,
               qi.qualified_quantity AS qualifiedQuantity,
               qi.unqualified_quantity AS unqualifiedQuantity
        FROM product_tree pt
                 INNER JOIN product_model pm ON pm.product_id = pt.id
                 INNER JOIN quality_inspect qi ON qi.product_model_id = pm.id
    </select>
    <select id="getMonthlyPassRateStatistics" resultType="com.ruoyi.quality.dto.QualityMonthlyPassRateDto">