From fc28d01cfa022d0f91ec719490342d726db2e105 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期五, 12 九月 2025 08:32:46 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/src/main/resources/mapper/pp/Report.xml |  157 ++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 116 insertions(+), 41 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 112b922..941f276 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/Report.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -2239,46 +2239,86 @@
     </select>
 
     <select id="teamOutputFootSum">
-        select SUM(completed_quantity) as completedQuantity,
-        ifnull(SUM(ROUND(width * height * completed_quantity / 1000000, 2)),0) AS area
-        from (
         SELECT
+        SUM(completed_quantity) as completedQuantity,
+        ifnull(SUM(ROUND(width * height * completed_quantity / 1000000, 2)),0) AS area
+        FROM
+        (
+        SELECT
+        rw.reporting_work_time,
         rw.this_process,
         rw.teams_groups_name,
         o.project,
         rw.process_id,
         fc.order_number,
-        MAX( ogd.child_width ) as width,
-        MAX( ogd.child_height ) as height,
-        rwd.completed_quantity as completed_quantity
+        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
-        reporting_work as rw left join reporting_work_detail as rwd on rwd.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>0
-        AND rw.reporting_work_time >= #{selectTime1}
+        reporting_work AS rw
+        LEFT JOIN reporting_work_detail AS rwd
+        ON rwd.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 > 0
+        AND rw.reporting_work_time &gt;= #{selectTime1}
         AND rw.reporting_work_time &lt;  #{selectTime2}
-        and position(#{selectProcesses} in rw.this_process)
+        <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}
+            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 REGEXP #{teamOutputDTO.teamsGroupsName}
         </if>
         <if test="teamOutputDTO.project != null and teamOutputDTO.project != ''">
-            and o.project regexp #{teamOutputDTO.project}
+            AND o.project REGEXP #{teamOutputDTO.project}
         </if>
         <if test="teamOutputDTO.processId != null and teamOutputDTO.processId != ''">
-            and rw.process_id regexp #{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}
+            AND od.edging_type REGEXP #{teamOutputDTO.edgingType}
         </if>
         <if test="teamOutputDTO.deviceName != null and teamOutputDTO.deviceName != ''">
-            and rw.device_name regexp #{teamOutputDTO.deviceName}
+            AND rw.device_name REGEXP #{teamOutputDTO.deviceName}
         </if>
+
         <choose>
             <when test="laminating == ''">
                 GROUP BY
@@ -2291,6 +2331,9 @@
             </when>
             <otherwise>
                 GROUP BY
+                <if test="laminating == 'stepA' || laminating == 'stepC'">
+                    ogd.`group`,
+                </if>
                 rw.reporting_work_id,
                 rw.process_id,
                 rw.this_process,
@@ -2298,13 +2341,17 @@
                 rwd.order_number
             </otherwise>
         </choose>
+        ) t
+        WHERE 1 = 1
+        <if test="teamOutputDTO.workProcessName != null and teamOutputDTO.workProcessName != ''">
+            AND t.workProcessName REGEXP #{teamOutputDTO.workProcessName}
+        </if>
         ORDER BY
-        rw.this_process,
-        rw.process_id,
-        rwd.order_number,
-        rw.reporting_work_time,
-        rw.teams_groups_name
-        ) as subquery
+        t.this_process,
+        t.process_id,
+        t.order_number,
+        t.reporting_work_time,
+        t.teams_groups_name
     </select>
 
     <select id="getLaminating">
@@ -3076,13 +3123,13 @@
             a.process_id,
             if(a.technology_number=1,sum(a.quantity-ifnull(a.termination_quantity,0)),0) as quantity,
             sum(a.quantity)-ifnull(a.termination_quantity,0) as thisQuantity,/*鐢ㄤ簬鍒ゆ柇鏄惁鏀瑰彉棰滆壊*/
-            if(a.technology_number=1, round(sum((a.quantity-ifnull(a.termination_quantity,0)))*b.compute_area,2),0) as gross_area,
+            if(a.technology_number=1, round(sum((a.quantity-ifnull(a.termination_quantity,0))*b.compute_area),2),0) as gross_area,
             if(a.technology_number=1, sum(a.received_quantity),0) as inventory,
             if(a.technology_number=1, round(sum(a.received_quantity*b.area),2),0) as inventoryArea,
 
             -- show
             sum(a.quantity-ifnull(a.termination_quantity,0)) as quantityShow ,
-            round(sum((a.quantity-ifnull(a.termination_quantity,0)))*b.compute_area,2) as gross_areaShow,
+            round(sum((a.quantity-ifnull(a.termination_quantity,0)*b.compute_area)),2) as gross_areaShow,
             sum(a.received_quantity) as inventoryShow,
             round(sum(a.received_quantity*b.area),2) as inventoryAreaShow
 
@@ -3114,7 +3161,7 @@
                         group by opd.process_id,opd.technology_number,opd.process) as bb
                   GROUP BY bb.process_id,bb.technology_number) as b
        on a.process_id = b.process_id and a.technology_number = b.technology_number
-       order by a.process_id
+       order by a.process_id,a.order_number,a.technology_number
 
     </select>
 
@@ -3214,31 +3261,59 @@
             IFNULL(dd.breakageQuantity,0) as breakageQuantity,
             rw.completedArea,
             IFNULL(dd.breakageArea,0) as breakageArea,
-            CONCAT(ROUND(TRUNCATE(rw.completedQuantity/(rw.completedQuantity + IFNULL(dd.breakageArea,0)),2)*100), '%') as finished
+            CONCAT(ROUND(TRUNCATE(rw.completedArea/(rw.completedArea + IFNULL(dd.breakageArea,0)),2)*100), '%') as finished
         from
             (
-                select rw.this_process,SUM(rwd.completed_quantity) as completedQuantity
-                     ,ROUND(SUM((rwd.child_width) * (rwd.child_height) * rwd.completed_quantity / 1000000), 2) as completedArea
-                from reporting_work rw
-                         LEFT JOIN reporting_work_detail rwd on rwd.reporting_work_id = rw.reporting_work_id
+                select
+                    tb.process as this_process,
+                    SUM(tb.completedQuantity) as completedQuantity,
+                    ROUND(SUM(completedArea),2) as completedArea
+                from (
+                         SELECT
+                             rw.process_id,
+                             rw.this_process                                   AS process,
+                             rw.teams_groups_name                               AS teamsGroupsName,
+                             rwd.order_number                                   AS orderNumber,
+                             MAX(bd.nickname)                                   AS nickname,
+                             /* 浠呭綋 nickname 涓虹┖鏃舵墠鏄剧ず technology_number锛屽惁鍒欎负 NULL */
+                             MIN(CASE WHEN bd.nickname IS NULL THEN rwd.technology_number ELSE NULL END) AS technologyNumber,
+                             COALESCE((rwd.completed_quantity), 0)           AS completedQuantity,
+                             ROUND(COALESCE((rwd.child_width * rwd.child_height * rwd.completed_quantity),0)/1000000, 2)
+                                 AS completedArea
+                         FROM reporting_work rw
+                                  LEFT JOIN reporting_work_detail rwd
+                                            ON rwd.reporting_work_id = rw.reporting_work_id
+                                  LEFT JOIN sd.basic_data bd
+                                            ON bd.basic_name = rw.this_process
 
-                where   rw.reporting_work_time &gt;= #{selectTime1}
-                  AND rw.reporting_work_time &lt; #{selectTime2}
-                  AND rw.reviewed_state >= 0
-                GROUP BY rw.this_process
+                         WHERE rw.reporting_work_time &gt;= #{selectTime1}
+                           AND rw.reporting_work_time &lt; #{selectTime2}
+                           AND rw.reviewed_state &gt;= 0
+                         GROUP BY
+                             rw.reporting_work_id,
+                             rw.process_id,
+                             rw.this_process,
+                             rw.teams_groups_name,
+                             rwd.order_number,
+                             CASE WHEN bd.nickname IS NULL THEN rwd.technology_number ELSE NULL END
+                         ORDER BY rw.process_id,
+                                  rw.this_process, rw.teams_groups_name, rwd.order_number,
+                                  CASE WHEN bd.nickname IS NULL THEN rwd.technology_number ELSE NULL END
+                     ) as tb
+                GROUP BY tb.process
             ) as rw
                 left join
             (
                 select dd.responsible_process,sum(dd.breakage_quantity) as breakageQuantity
                      ,ROUND(SUM((rwd.child_width) * (rwd.child_height) * dd.breakage_quantity / 1000000), 2) as breakageArea
                 from reporting_work rw left join damage_details dd on dd.reporting_work_id = rw.reporting_work_id
-                                       LEFT JOIN reporting_work_detail rwd on rwd.reporting_work_id = dd.reporting_work_id
-                                                 and rwd.order_number = dd.order_number and rwd.technology_number  = dd.technology_number
+                                       LEFT JOIN reporting_work_detail rwd on rwd.reporting_work_id = dd.reporting_work_id and rwd.order_number = dd.order_number and rwd.technology_number  = dd.technology_number
                 where rw.reporting_work_time &gt;= #{selectTime1}
                   AND rw.reporting_work_time &lt; #{selectTime2}
-                  AND rw.reviewed_state >= 0 and dd.available =0
+                  AND rw.reviewed_state &gt;= 0 and dd.available =0
                 GROUP BY dd.responsible_process
             ) as dd on  rw.this_process = dd.responsible_process
 
+
     </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0