chenlu
2025-11-24 1e31f9f7fe6f04236e97f72c0df3ce051d5f867e
north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -970,7 +970,7 @@
        SUM(t.breakageQuantity) as breakageQuantity,
        SUM(t.breakageArea) as breakageArea,
        t.responsibleTeam,
        CONCAT(ROUND(ROUND(SUM(t.area)/(SUM(t.area) + SUM(t.breakageArea)),2)*100), '%') as finished,
        CONCAT(ROUND(TRUNCATE(SUM(t.area)/(SUM(t.area) + SUM(t.breakageArea)),2)*100), '%') as finished,
        t.product_name
        FROM
        (
@@ -1516,7 +1516,9 @@
          and position(#{process} in odpd.process)
          and position(ifnull(#{inputVal}, '') in od.order_id)
          and position(ifnull(#{project}, '') in o.project)
        <if test="terminationVals != '1' and terminationVals != 1">
            and fc.termination_status !=1
        </if>
        group by fc.process_id, fc.order_number, fc.technology_number,odpd.process
        order by fc.process_id, fc.order_number, fc.technology_number
    </select>
@@ -1731,7 +1733,7 @@
            AND rw.this_process REGEXP #{teamOutputDTO.thisProcess}
        </if>
        <if test="teamOutputDTO.teamsGroupsName != null and teamOutputDTO.teamsGroupsName != ''">
            AND rw.teams_groups_name REGEXP #{teamOutputDTO.teamsGroupsName}
            and rw.teams_groups_name like concat('%', #{teamOutputDTO.teamsGroupsName}, '%')
        </if>
        <if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
            AND o.project REGEXP #{teamOutputDTO.project}
@@ -1884,7 +1886,7 @@
            and rw.this_process regexp #{teamOutputDTO.thisProcess}
        </if>
        <if test="teamOutputDTO.teamsGroupsName != null and teamOutputDTO.teamsGroupsName != ''">
            and rw.teams_groups_name regexp #{teamOutputDTO.teamsGroupsName}
            and rw.teams_groups_name like concat('%', #{teamOutputDTO.teamsGroupsName}, '%')
        </if>
        <if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
            and o.project regexp #{teamOutputDTO.project}
@@ -2379,6 +2381,9 @@
        and position(#{selectProcesses} in d.process)
        and position(#{orderId} in od.order_id)
        and position(#{inputProject} in o.project)
        <if test="terminationVals != '1' and terminationVals != 1">
            and fc.termination_status !=1
        </if>
        <if test="workInProgressDTO.customerName != null and workInProgressDTO.customerName != ''">
            and o.customer_name regexp #{workInProgressDTO.customerName}
        </if>
@@ -2565,7 +2570,7 @@
            AND rw.this_process REGEXP #{teamOutputDTO.thisProcess}
        </if>
        <if test="teamOutputDTO.teamsGroupsName != null and teamOutputDTO.teamsGroupsName != ''">
            AND rw.teams_groups_name REGEXP #{teamOutputDTO.teamsGroupsName}
            and rw.teams_groups_name like concat('%', #{teamOutputDTO.teamsGroupsName}, '%')
        </if>
        <if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
            AND o.project REGEXP #{teamOutputDTO.project}
@@ -2702,6 +2707,9 @@
        and d.process!=SUBSTRING_INDEX(ogd.process, '->', 1)
        and position(#{orderId} in od.order_id)
        and position(#{inputProject} in o.project)
        <if test="terminationVals != '1' and terminationVals != 1">
            and fc.termination_status !=1
        </if>
        <if test="workInProgressDTO.thisProcess != null and workInProgressDTO.thisProcess != ''">
            and d.process regexp #{workInProgressDTO.thisProcess}
        </if>
@@ -3157,8 +3165,13 @@
                                        ) AS cb ON cb.process_id = b.process_id
                                        AND cb.order_sort = b.order_number
                                        AND cb.technology_number = b.technology_number
                             left join pp.flow_card as fc on fc.order_id= d.order_id and fc.order_number = d.order_number
                                       and fc.technology_number = d.technology_number
                             where a.processing_card>0
                               and a.warehousing!=2
                          <if test=" terminationVal != '1' and terminationVal != 1">
                               and termination_status !=1
                            </if>
                             GROUP BY  b.process_id, b.order_number,
                                 b.technology_number) as f
                                LEFT JOIN sd.order_process_detail as e
@@ -3247,8 +3260,13 @@
        ) AS cb ON cb.process_id = b.process_id
        AND cb.order_sort = b.order_number
        AND cb.technology_number = b.technology_number
        left join pp.flow_card as fc on fc.order_id= d.order_id and fc.order_number = d.order_number
        and fc.technology_number = d.technology_number
        where a.processing_card>0
        and a.warehousing!=2
        <if test="terminationVal != '1' and terminationVal != 1">
            and termination_status !=1
        </if>
        GROUP BY  b.process_id, b.order_number,
        b.technology_number) as f
        LEFT JOIN sd.order_process_detail as e
@@ -3333,8 +3351,13 @@
        ) AS cb ON cb.process_id = b.process_id
        AND cb.order_sort = b.order_number
        AND cb.technology_number = b.technology_number
        left join pp.flow_card as fc on fc.order_id= d.order_id and fc.order_number = d.order_number
        and fc.technology_number = d.technology_number
        where a.processing_card>0
        and a.warehousing!=2
        <if test="terminationVal != '1' and terminationVal != 1">
            and termination_status !=1
        </if>
        and (c.quantity-b.reporting_work_num_count)>0
        GROUP BY  b.process_id, b.order_number,
        b.technology_number) as f
@@ -3584,5 +3607,63 @@
        GROUP BY hz.project,hz.batch,glass_child
    </select>
    <select id="yieldProcessMp">
        SELECT
            t.this_process as process,
            SUM(t.completed_quantity) as completedQuantity,
            SUM(t.area) as completedArea,
            SUM(t.breakageQuantity) as breakageQuantity,
            SUM(t.breakageArea) as breakageArea,
            CONCAT(ROUND(TRUNCATE(SUM(t.area)/(SUM(t.area) + SUM(t.breakageArea)),2)*100), '%') as finished
        FROM
            (
                SELECT
                    rw.reporting_work_time,
                    rw.this_process,
                    o.project,
                    o.batch,
                    rw.process_id,
                    rwd.completed_quantity AS completed_quantity,
                    ROUND(MAX(ogd.child_width) * MAX(ogd.child_height) * rwd.completed_quantity / 1000000, 2) AS area,
                    IFNULL(dd.breakage_quantity,0) as breakageQuantity,
                    IFNULL(ROUND(MAX(ogd.child_width) * MAX(ogd.child_height) * dd.breakage_quantity / 1000000, 2),0) AS breakageArea,
                    IFNULL(dd.responsible_team,'') as responsibleTeam,
                    od.product_name
                FROM
                    reporting_work AS rw
                        LEFT JOIN reporting_work_detail AS rwd
                                  ON rwd.reporting_work_id = rw.reporting_work_id
                        LEFT JOIN damage_details as dd on dd.reporting_work_id = rw.reporting_work_id
                        LEFT JOIN flow_card AS fc
                                  ON fc.order_id = rw.order_id
                                      AND fc.process_id = rw.process_id
                                      AND fc.order_number = rwd.order_number
                                      AND fc.technology_number = rwd.technology_number
                        LEFT JOIN sd.order_glass_detail AS ogd
                                  ON ogd.order_id = fc.order_id
                                      AND ogd.order_number = fc.order_number
                                      AND ogd.technology_number = fc.technology_number
                        LEFT JOIN sd.order_detail AS od
                                  ON od.order_id = ogd.order_id
                                      AND od.order_number = ogd.order_number
                        LEFT JOIN sd.`order` AS o
                                  ON o.order_id = od.order_id
                WHERE
                    o.create_order > 0
                  AND rw.reviewed_state >= 0
                  AND rwd.completed_quantity + IFNULL(dd.breakage_quantity,0)> 0
                  AND rw.reporting_work_time &gt;= #{selectTime1}
                  AND rw.reporting_work_time &lt;= #{selectTime2}
                GROUP BY
                    rw.reporting_work_id,
                    rw.process_id,
                    rw.this_process,
                    rw.teams_groups_name,
                    rwd.order_number,
                    rwd.technology_number
            ) t
        GROUP BY
            t.this_process
    </select>
</mapper>