gaoluyang
2 天以前 4ba399c0159d7dceff8f95beb05fb1a92dbda049
src/main/resources/mapper/quality/QualityInspectMapper.xml
@@ -95,11 +95,8 @@
    </delete>
    <select id="getInspectStatistics" resultType="com.ruoyi.quality.dto.QualityInspectStatDto">
        SELECT CASE pp.product_name
                   WHEN '原材料' THEN 0
                   WHEN '半成品' THEN 1
                   WHEN '成品' THEN 2
                   END                     AS modelType,
        <!-- 检验类型与产品大类一一对应:0-原材料 1-半成品 2-成品,直接取 quality_inspect.inspect_type 分桶 -->
        SELECT t.modelType,
               IFNULL(SUM(qi.quantity), 0) AS totalCount,
@@ -108,17 +105,16 @@
                              ELSE 0
                   END), 0)                AS completedCount
        FROM product p
                 INNER JOIN product pp
                            ON p.parent_id = pp.id
                 LEFT JOIN product_model pm
                           ON pm.product_id = p.id
        FROM (SELECT 0 AS modelType
              UNION ALL
              SELECT 1
              UNION ALL
              SELECT 2) t
                 LEFT JOIN quality_inspect qi
                           ON qi.product_model_id = pm.id
                           ON qi.inspect_type = t.modelType
        WHERE pp.product_name IN ('原材料', '半成品', '成品')
        GROUP BY pp.product_name
        GROUP BY t.modelType
        ORDER BY t.modelType
    </select>
@@ -191,19 +187,8 @@
              SELECT 1
              UNION ALL
              SELECT 2) t
                 LEFT JOIN product p
                           ON 1 = 1
                 LEFT JOIN product pp
                           ON p.parent_id = pp.id
                 LEFT JOIN product_model pm
                           ON pm.product_id = p.id
                 LEFT JOIN quality_inspect qi
                           ON qi.product_model_id = pm.id
                               AND (
                                  (pp.product_name = '原材料' AND t.modelType = 0) OR
                                  (pp.product_name = '半成品' AND t.modelType = 1) OR
                                  (pp.product_name = '成品' AND t.modelType = 2)
                                  )
                           ON qi.inspect_type = t.modelType
        GROUP BY t.modelType
        ORDER BY t.modelType;
@@ -298,18 +283,10 @@
               )                             AS passRate
        FROM base b
                 LEFT JOIN product p ON 1 = 1
                 LEFT JOIN product pp ON p.parent_id = pp.id
                 LEFT JOIN product_model pm ON pm.product_id = p.id
                 LEFT JOIN quality_inspect qi
                           ON qi.product_model_id = pm.id
                           ON qi.inspect_type = b.modelType
                               AND YEAR(qi.check_time) = #{year}
                               AND MONTH(qi.check_time) = b.month_num
                               AND (
                                  (pp.product_name = '原材料' AND b.modelType = 0)
                                      OR (pp.product_name = '半成品' AND b.modelType = 1)
                                      OR (pp.product_name = '成品' AND b.modelType = 2)
                                  )
        GROUP BY b.month_num, b.modelType
        ORDER BY b.month_num, b.modelType;
@@ -318,40 +295,16 @@
    <select id="getYearlyPassRateStatistics" resultType="com.ruoyi.quality.dto.QualityPassRateDto">
        SELECT t.modelType,
               COALESCE(SUM(
                                CASE
                                    WHEN pp.product_name = '原材料' AND t.modelType = 0 THEN qi.quantity
                                    WHEN pp.product_name = '半成品' AND t.modelType = 1 THEN qi.quantity
                                    WHEN pp.product_name = '成品' AND t.modelType = 2 THEN qi.quantity
                                    ELSE 0
                                    END
                        ), 0) AS totalCount,
               COALESCE(SUM(
                                CASE
                                    WHEN pp.product_name = '原材料' AND t.modelType = 0 THEN qi.qualified_quantity
                                    WHEN pp.product_name = '半成品' AND t.modelType = 1 THEN qi.qualified_quantity
                                    WHEN pp.product_name = '成品' AND t.modelType = 2 THEN qi.qualified_quantity
                                    ELSE 0
                                    END
                        ), 0) AS qualifiedCount,
               COALESCE(SUM(
                                CASE
                                    WHEN pp.product_name = '原材料' AND t.modelType = 0 THEN qi.unqualified_quantity
                                    WHEN pp.product_name = '半成品' AND t.modelType = 1 THEN qi.unqualified_quantity
                                    WHEN pp.product_name = '成品' AND t.modelType = 2 THEN qi.unqualified_quantity
                                    ELSE 0
                                    END
                        ), 0) AS unqualifiedCount
               COALESCE(SUM(qi.quantity), 0)             AS totalCount,
               COALESCE(SUM(qi.qualified_quantity), 0)   AS qualifiedCount,
               COALESCE(SUM(qi.unqualified_quantity), 0) AS unqualifiedCount
        FROM (SELECT 0 AS modelType
              UNION ALL
              SELECT 1
              UNION ALL
              SELECT 2) t
                 LEFT JOIN product p ON 1 = 1
                 LEFT JOIN product pp ON p.parent_id = pp.id
                 LEFT JOIN product_model pm ON pm.product_id = p.id
                 LEFT JOIN quality_inspect qi
                           ON qi.product_model_id = pm.id
                           ON qi.inspect_type = t.modelType
                               AND YEAR(qi.check_time) = #{year}
                               AND qi.inspect_state = 1
        GROUP BY t.modelType
@@ -384,7 +337,7 @@
            /* 原材料 */
               COALESCE(SUM(
                                CASE
                                    WHEN pp.product_name = '原材料'
                                    WHEN qi.inspect_type = 0
                                        THEN qi.quantity
                                    ELSE 0
                                    END
@@ -393,7 +346,7 @@
            /* 半成品 */
               COALESCE(SUM(
                                CASE
                                    WHEN pp.product_name = '半成品'
                                    WHEN qi.inspect_type = 1
                                        THEN qi.quantity
                                    ELSE 0
                                    END
@@ -402,19 +355,15 @@
            /* 成品 */
               COALESCE(SUM(
                                CASE
                                    WHEN pp.product_name = '成品'
                                    WHEN qi.inspect_type = 2
                                        THEN qi.quantity
                                    ELSE 0
                                    END
                        ), 0) AS outgoingCount
        FROM months m
                 LEFT JOIN product p ON 1 = 1
                 LEFT JOIN product pp ON p.parent_id = pp.id
                 LEFT JOIN product_model pm ON pm.product_id = p.id
                 LEFT JOIN quality_inspect qi
                           ON qi.product_model_id = pm.id
                               AND qi.inspect_state = 1
                           ON qi.inspect_state = 1
                               AND YEAR(qi.check_time) = #{year}
                               AND MONTH(qi.check_time) = m.month_num
@@ -429,15 +378,11 @@
                                  FROM quality_inspect_param qip
                                           JOIN quality_inspect qi
                                                ON qip.inspect_id = qi.id
                                           JOIN product p
                                                ON qi.product_id = p.id
                                           JOIN product pp
                                                ON p.parent_id = pp.id
                                  WHERE qi.inspect_state = 1
                                    AND (
                                      (#{modelType} = 1 AND pp.product_name = '原材料')
                                          OR (#{modelType} = 2 AND pp.product_name = '半成品')
                                          OR (#{modelType} = 3 AND pp.product_name = '成品')
                                      (#{modelType} = 1 AND qi.inspect_type = 0)
                                          OR (#{modelType} = 2 AND qi.inspect_type = 1)
                                          OR (#{modelType} = 3 AND qi.inspect_type = 2)
                                      )
                                  GROUP BY qip.parameter_item),
             ranked AS (SELECT name,