9 小时以前 620bb4712a31791231c4381581f0f60088f079fe
src/main/resources/mapper/quality/QualityInspectMapper.xml
@@ -9,8 +9,8 @@
                pl.purchase_contract_number as purchase_contract_no
            </when>
            <otherwise>
                pwo.work_order_no,
                sl.sales_contract_no
                pot.work_order_no,
                po_sales.sales_contract_no
            </otherwise>
        </choose>
        FROM
@@ -21,9 +21,17 @@
            </when>
            <otherwise>
                LEFT JOIN production_product_main ppm ON qi.product_main_id = ppm.id
                LEFT JOIN product_work_order pwo ON ppm.work_order_id = pwo.id
                left join product_order po ON po.id = pwo.product_order_id
                left join sales_ledger sl ON sl.id = po.sales_ledger_id
                LEFT JOIN production_operation_task pot ON ppm.production_operation_task_id = pot.id
                left join production_order po ON po.id = pot.production_order_id
                left join (
                    select po2.id as order_id,
                           group_concat(distinct sl2.sales_contract_no order by sl2.sales_contract_no separator ',') as sales_contract_no
                    from production_order po2
                             left join production_plan pp2
                                       on find_in_set(pp2.id, replace(replace(replace(po2.production_plan_ids, '[', ''), ']', ''), ' ', '')) > 0
                             left join sales_ledger sl2 on sl2.id = pp2.sales_ledger_id
                    group by po2.id
                ) po_sales ON po_sales.order_id = po.id
            </otherwise>
        </choose>
        WHERE
@@ -45,6 +53,15 @@
        </if>
        <if test="qualityInspect.entryDateEnd != null and qualityInspect.entryDateEnd != '' ">
            AND qi.check_time &lt;= DATE_FORMAT(#{qualityInspect.entryDateEnd},'%Y-%m-%d')
        </if>
        <if test="qualityInspect.purchaseContractNo != null and qualityInspect.purchaseContractNo != '' ">
            AND pl.purchase_contract_number like concat('%',#{qualityInspect.purchaseContractNo},'%')
        </if>
        <if test="qualityInspect.workOrderNo != null and qualityInspect.workOrderNo != '' ">
            AND pot.work_order_no like concat('%',#{qualityInspect.workOrderNo},'%')
        </if>
        <if test="qualityInspect.salesContractNo != null and qualityInspect.salesContractNo != '' ">
            AND po_sales.sales_contract_no like concat('%',#{qualityInspect.salesContractNo},'%')
        </if>
        ORDER BY qi.check_time DESC
    </select>
@@ -120,8 +137,7 @@
               COALESCE(SUM(
                                CASE
                                    WHEN qi.inspect_state = 1
                                        AND qi.check_result = '合格'
                                        THEN qi.quantity
                                        THEN qi.qualified_quantity
                                    ELSE 0
                                    END
                        ), 0)                AS qualifiedCount,
@@ -129,8 +145,7 @@
               COALESCE(SUM(
                                CASE
                                    WHEN qi.inspect_state = 1
                                        AND qi.check_result = '不合格'
                                        THEN qi.quantity
                                        THEN qi.unqualified_quantity
                                    ELSE 0
                                    END
                        ), 0)                AS unqualifiedCount,
@@ -158,8 +173,7 @@
                          COALESCE(SUM(
                                           CASE
                                               WHEN qi.inspect_state = 1
                                                   AND qi.check_result = '合格'
                                                   THEN qi.quantity
                                                   THEN qi.qualified_quantity
                                               ELSE 0
                                               END
                                   ), 0)
@@ -240,8 +254,8 @@
            /* 合格 */
               COALESCE(SUM(
                                CASE
                                    WHEN qi.inspect_state = 1 AND qi.check_result = '合格'
                                        THEN qi.quantity
                                    WHEN qi.inspect_state = 1
                                        THEN qi.qualified_quantity
                                    ELSE 0
                                    END
                        ), 0)                AS qualifiedCount,
@@ -249,8 +263,8 @@
            /* 不合格 */
               COALESCE(SUM(
                                CASE
                                    WHEN qi.inspect_state = 1 AND qi.check_result = '不合格'
                                        THEN qi.quantity
                                    WHEN qi.inspect_state = 1
                                        THEN qi.unqualified_quantity
                                    ELSE 0
                                    END
                        ), 0)                AS unqualifiedCount,
@@ -271,8 +285,8 @@
                  ROUND(
                          COALESCE(SUM(
                                           CASE
                                               WHEN qi.inspect_state = 1 AND qi.check_result = '合格'
                                                   THEN qi.quantity
                                               WHEN qi.inspect_state = 1
                                                   THEN qi.qualified_quantity
                                               ELSE 0
                                               END
                                   ), 0)
@@ -304,7 +318,6 @@
    <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
@@ -312,8 +325,23 @@
                                    WHEN pp.product_name = '成品' AND t.modelType = 2 THEN qi.quantity
                                    ELSE 0
                                    END
                        ), 0) AS totalCount
                        ), 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
        FROM (SELECT 0 AS modelType
              UNION ALL
              SELECT 1
@@ -326,8 +354,6 @@
                           ON qi.product_model_id = pm.id
                               AND YEAR(qi.check_time) = #{year}
                               AND qi.inspect_state = 1
                               AND qi.check_result = '合格'
        GROUP BY t.modelType
        ORDER BY t.modelType;
    </select>