From 9ccc8bd3a53160a40cf60f14e5867f6ce9f6c58f Mon Sep 17 00:00:00 2001
From: guoyujie <guoyujie@ng.com>
Date: 星期五, 26 十二月 2025 16:49:15 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override

---
 north-glass-erp/src/main/resources/mapper/pp/Report.xml |  398 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 395 insertions(+), 3 deletions(-)

diff --git a/north-glass-erp/src/main/resources/mapper/pp/Report.xml b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
index cb33dfa..0494867 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/Report.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -171,6 +171,7 @@
     <!--    娴佺▼鍗¤繘搴�-->
     <select id="processCardProgressMp">
         select a.product_name,
+               a.building_number,
                b.glass_child,
                d.order_type,
                concat(c.process_id, '/', c.technology_number) as process_id,
@@ -1843,7 +1844,7 @@
         AND rw.reviewed_state >= 0
         AND rwd.completed_quantity > 0
         AND rw.reporting_work_time &gt;= #{selectTime1}
-        AND rw.reporting_work_time &lt;  #{selectTime2}
+        AND rw.reporting_work_time &lt;=  #{selectTime2}
         <choose>
             <!-- 鏈変紶宸ュ簭锛氱簿纭尮閰� -->
             <when test="selectProcesses != null and selectProcesses != ''">
@@ -1905,7 +1906,7 @@
         ) t
         WHERE 1 = 1
         <if test="teamOutputDTO.workProcessName != null and teamOutputDTO.workProcessName != ''">
-            AND t.workProcessName REGEXP #{teamOutputDTO.workProcessName}
+            and t.workProcessName like concat('%', #{teamOutputDTO.workProcessName}, '%')
         </if>
         HAVING 1 = 1
         <if test="teamOutputDTO.thicknessSum != null and teamOutputDTO.thicknessSum != ''">
@@ -1990,7 +1991,7 @@
         AND rw.reviewed_state >= 0
         AND rwd.completed_quantity > 0
         AND rw.reporting_work_time &gt;= #{date[0]}
-        AND rw.reporting_work_time &lt;  #{date[1]}
+        AND rw.reporting_work_time &lt;=  #{date[1]}
         <choose>
             <!-- 鏈変紶宸ュ簭锛氱簿纭尮閰� -->
             <when test="process != null and process != ''">
@@ -4008,4 +4009,395 @@
         GROUP BY
             t.this_process
     </select>
+
+    <select id="TeamOutputSummaryMp">
+        SELECT
+        t.this_process,
+        t.teams_groups_name,
+        t.workProcessName,
+
+        -- 鏁伴噺姹囨��
+        SUM(t.completed_quantity) AS completed_quantity,
+
+        -- 闈㈢Н姹囨��
+        ROUND(SUM(t.area), 2) AS area
+        FROM
+        (
+        /* ================= 鍐呭眰瀛愭煡璇紙淇濇寔涓嶅彉锛� ================= */
+        SELECT
+        rw.reporting_work_time,
+        rw.this_process,
+        rw.teams_groups_name,
+        o.project,
+        o.order_id,
+        rw.process_id,
+        fc.order_number,
+        MAX(ogd.child_width)  AS width,
+        MAX(ogd.child_height) AS height,
+        od.edging_type,
+        rwd.completed_quantity AS completed_quantity,
+        ROUND(
+        MAX(ogd.child_width) * MAX(ogd.child_height)
+        * rwd.completed_quantity / 1000000,
+        2
+        ) AS area,
+        od.product_name,
+        JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS code,
+        rw.reviewed,
+        rw.examine_time,
+        rw.device_name,
+        o.order_type,
+        CASE
+        WHEN LOCATE('step', #{laminating}) > 0
+        THEN GROUP_CONCAT(ogd.glass_child SEPARATOR '+')
+        ELSE MAX(ogd.glass_child)
+        END AS workProcessName,
+        o.batch
+        FROM
+        pp.reporting_work AS rw
+        LEFT JOIN pp.reporting_work_detail AS rwd
+        ON rwd.reporting_work_id = rw.reporting_work_id
+        LEFT JOIN pp.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 > 0
+        AND rw.reporting_work_time >= #{selectTime1}
+        AND rw.reporting_work_time &lt;= #{selectTime2}
+
+        <choose>
+            <!-- 鏈変紶宸ュ簭锛氱簿纭尮閰� -->
+            <when test="selectProcesses != null and selectProcesses != ''">
+                AND rw.this_process = #{selectProcesses}
+            </when>
+            <!-- 鏈紶宸ュ簭锛氫笉鍔犻檺鍒讹紝鏌ユ墍鏈夛級 -->
+            <otherwise></otherwise>
+        </choose>
+
+        <if test="teamOutputDTO.thisProcess != null and teamOutputDTO.thisProcess != ''">
+            AND rw.this_process REGEXP #{teamOutputDTO.thisProcess}
+        </if>
+        <if test="teamOutputDTO.teamsGroupsName != null and 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}
+        </if>
+        <if test="teamOutputDTO.processId != null and teamOutputDTO.processId != ''">
+            AND rw.process_id REGEXP #{teamOutputDTO.processId}
+        </if>
+        <if test="teamOutputDTO.edgingType != null and teamOutputDTO.edgingType != ''">
+            AND od.edging_type REGEXP #{teamOutputDTO.edgingType}
+        </if>
+        <if test="teamOutputDTO.deviceName != null and teamOutputDTO.deviceName != ''">
+            AND rw.device_name REGEXP #{teamOutputDTO.deviceName}
+        </if>
+        <if test="teamOutputDTO.batch != null and teamOutputDTO.batch != ''">
+            AND o.batch REGEXP #{teamOutputDTO.batch}
+        </if>
+
+        <choose>
+            <when test="laminating == ''">
+                GROUP BY
+                rw.reporting_work_id,
+                rw.process_id,
+                rw.this_process,
+                rw.teams_groups_name,
+                rwd.order_number,
+                rwd.technology_number
+            </when>
+            <otherwise>
+                GROUP BY
+                <if test="laminating == 'stepA' || laminating == 'stepC'">
+                    ogd.`group`,
+                </if>
+                rw.reporting_work_id,
+                rw.process_id,
+                rw.this_process,
+                rw.teams_groups_name,
+                rwd.order_number
+            </otherwise>
+        </choose>
+        ) t
+        WHERE 1 = 1
+        <if test="teamOutputDTO.workProcessName != null and teamOutputDTO.workProcessName != ''">
+            and t.workProcessName like concat('%', #{teamOutputDTO.workProcessName}, '%')
+        </if>
+        GROUP BY
+        t.this_process,
+        t.teams_groups_name,
+        t.workProcessName
+
+        ORDER BY
+        t.this_process,
+        t.teams_groups_name,
+        t.workProcessName
+        LIMIT #{offset}, #{pageSize};
+    </select>
+
+    <select id="teamOutputSummaryPageTotal">
+
+        select CEILING(COUNT(*) / #{pageSize}) AS pageTotal,
+        COUNT(*) AS total FROM(
+        SELECT
+        t.this_process,
+        t.teams_groups_name,
+        t.workProcessName,
+
+        -- 鏁伴噺姹囨��
+        SUM(t.completed_quantity) AS completed_quantity,
+
+        -- 闈㈢Н姹囨��
+        ROUND(SUM(t.area), 2) AS area
+        FROM
+        (
+        /* ================= 鍐呭眰瀛愭煡璇紙淇濇寔涓嶅彉锛� ================= */
+        SELECT
+        rw.reporting_work_time,
+        rw.this_process,
+        rw.teams_groups_name,
+        o.project,
+        o.order_id,
+        rw.process_id,
+        fc.order_number,
+        MAX(ogd.child_width)  AS width,
+        MAX(ogd.child_height) AS height,
+        od.edging_type,
+        rwd.completed_quantity AS completed_quantity,
+        ROUND(
+        MAX(ogd.child_width) * MAX(ogd.child_height)
+        * rwd.completed_quantity / 1000000,
+        2
+        ) AS area,
+        od.product_name,
+        JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS code,
+        rw.reviewed,
+        rw.examine_time,
+        rw.device_name,
+        o.order_type,
+        CASE
+        WHEN LOCATE('step', #{laminating}) > 0
+        THEN GROUP_CONCAT(ogd.glass_child SEPARATOR '+')
+        ELSE MAX(ogd.glass_child)
+        END AS workProcessName,
+        o.batch
+        FROM
+        pp.reporting_work AS rw
+        LEFT JOIN pp.reporting_work_detail AS rwd
+        ON rwd.reporting_work_id = rw.reporting_work_id
+        LEFT JOIN pp.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 > 0
+        AND rw.reporting_work_time >= #{selectTime1}
+        AND rw.reporting_work_time &lt;= #{selectTime2}
+
+        <choose>
+            <!-- 鏈変紶宸ュ簭锛氱簿纭尮閰� -->
+            <when test="selectProcesses != null and selectProcesses != ''">
+                AND rw.this_process = #{selectProcesses}
+            </when>
+            <!-- 鏈紶宸ュ簭锛氫笉鍔犻檺鍒讹紝鏌ユ墍鏈夛級 -->
+            <otherwise></otherwise>
+        </choose>
+
+        <if test="teamOutputDTO.thisProcess != null and teamOutputDTO.thisProcess != ''">
+            AND rw.this_process REGEXP #{teamOutputDTO.thisProcess}
+        </if>
+        <if test="teamOutputDTO.teamsGroupsName != null and 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}
+        </if>
+        <if test="teamOutputDTO.processId != null and teamOutputDTO.processId != ''">
+            AND rw.process_id REGEXP #{teamOutputDTO.processId}
+        </if>
+        <if test="teamOutputDTO.edgingType != null and teamOutputDTO.edgingType != ''">
+            AND od.edging_type REGEXP #{teamOutputDTO.edgingType}
+        </if>
+        <if test="teamOutputDTO.deviceName != null and teamOutputDTO.deviceName != ''">
+            AND rw.device_name REGEXP #{teamOutputDTO.deviceName}
+        </if>
+        <if test="teamOutputDTO.batch != null and teamOutputDTO.batch != ''">
+            AND o.batch REGEXP #{teamOutputDTO.batch}
+        </if>
+
+        <choose>
+            <when test="laminating == ''">
+                GROUP BY
+                rw.reporting_work_id,
+                rw.process_id,
+                rw.this_process,
+                rw.teams_groups_name,
+                rwd.order_number,
+                rwd.technology_number
+            </when>
+            <otherwise>
+                GROUP BY
+                <if test="laminating == 'stepA' || laminating == 'stepC'">
+                    ogd.`group`,
+                </if>
+                rw.reporting_work_id,
+                rw.process_id,
+                rw.this_process,
+                rw.teams_groups_name,
+                rwd.order_number
+            </otherwise>
+        </choose>
+        ) t
+        WHERE 1 = 1
+        <if test="teamOutputDTO.workProcessName != null and teamOutputDTO.workProcessName != ''">
+            and t.workProcessName like concat('%', #{teamOutputDTO.workProcessName}, '%')
+        </if>
+        GROUP BY
+        t.this_process,
+        t.teams_groups_name,
+        t.workProcessName
+
+        ORDER BY
+        t.this_process,
+        t.teams_groups_name,
+        t.workProcessName
+
+        ) as b
+        LIMIT #{offset}, #{pageSize};
+    </select>
+
+    <select id="exportTeamOutputSummaryMp">
+        SELECT
+        t.this_process,
+        t.teams_groups_name,
+        t.workProcessName,
+        -- 鏁伴噺姹囨��
+        SUM(t.completed_quantity) AS completed_quantity,
+
+        -- 闈㈢Н姹囨��
+        ROUND(SUM(t.area), 2) AS area
+        FROM
+        (
+        SELECT
+        rw.reporting_work_time,
+        rw.this_process,
+        rw.teams_groups_name,
+        o.project,
+        o.order_id,
+        rw.process_id,
+        fc.order_number,
+        MAX(ogd.child_width)  AS width,
+        MAX(ogd.child_height) AS height,
+        od.edging_type,
+        rwd.completed_quantity AS completed_quantity,
+        ROUND(
+        MAX(ogd.child_width) * MAX(ogd.child_height)
+        * rwd.completed_quantity / 1000000,
+        2
+        ) AS area,
+        od.product_name,
+        JSON_UNQUOTE(JSON_EXTRACT(od.other_columns, '$.S01')) AS code,
+        rw.reviewed,
+        rw.examine_time,
+        rw.device_name,
+        o.order_type,
+        CASE
+        WHEN LOCATE('step', #{laminating}) > 0
+        THEN GROUP_CONCAT(ogd.glass_child SEPARATOR '+')
+        ELSE MAX(ogd.glass_child)
+        END AS workProcessName,
+        o.batch
+        FROM
+        pp.reporting_work AS rw
+        LEFT JOIN pp.reporting_work_detail AS rwd
+        ON rwd.reporting_work_id = rw.reporting_work_id
+        LEFT JOIN pp.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 > 0
+        AND rw.reporting_work_time &gt;= #{date[0]}
+        AND rw.reporting_work_time &lt;=  #{date[1]}
+
+        <choose>
+            <!-- 鏈変紶宸ュ簭锛氱簿纭尮閰� -->
+            <when test="selectProcesses != null and selectProcesses != ''">
+                AND rw.this_process = #{selectProcesses}
+            </when>
+            <!-- 鏈紶宸ュ簭锛氫笉鍔犻檺鍒讹紝鏌ユ墍鏈夛級 -->
+            <otherwise></otherwise>
+        </choose>
+
+        <choose>
+            <when test="laminating == ''">
+                GROUP BY
+                rw.reporting_work_id,
+                rw.process_id,
+                rw.this_process,
+                rw.teams_groups_name,
+                rwd.order_number,
+                rwd.technology_number
+            </when>
+            <otherwise>
+                GROUP BY
+                <if test="laminating == 'stepA' || laminating == 'stepC'">
+                    ogd.`group`,
+                </if>
+                rw.reporting_work_id,
+                rw.process_id,
+                rw.this_process,
+                rw.teams_groups_name,
+                rwd.order_number
+            </otherwise>
+        </choose>
+        ) t
+
+        GROUP BY
+        t.this_process,
+        t.teams_groups_name,
+        t.workProcessName
+
+        ORDER BY
+        t.this_process,
+        t.teams_groups_name,
+        t.workProcessName
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0