From da497e4c08c46cbde5dfcd7ea0cf2e455ee6f592 Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期一, 20 五月 2024 10:36:44 +0800
Subject: [PATCH] 添加发货报表

---
 north-glass-erp/src/main/resources/mapper/pp/Report.xml |  306 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 306 insertions(+), 0 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 fa088b6..1e0a20f 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/Report.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -364,4 +364,310 @@
         group by fc.process_id, fc.order_number, fc.technology_number
         order by fc.process_id, fc.order_number, fc.technology_number
     </select>
+
+    <select id="selectDamageReportMp">
+        SELECT
+            o.order_id,
+            o.project,
+            rw.process_id,
+            dd.order_number,
+            dd.technology_number,
+            date(rw.reporting_work_time) as reporting_work_time,
+            dd.responsible_process,
+            dd.responsible_team,
+            dd.responsible_equipment,
+            dd.breakage_type,
+            dd.breakage_reason,
+            dd.breakage_quantity,
+            round( ogd.child_width * ogd.child_height * dd.breakage_quantity / 1000000, 2 ) as area,
+            IFNULL(dd.responsible_personnel,'') as personnel,
+            ogd.glass_child
+        FROM
+            sd.ORDER AS o
+                LEFT JOIN sd.order_glass_detail AS ogd ON ogd.order_id = o.order_id
+                LEFT JOIN reporting_work AS rw ON rw.order_id = o.order_id
+                LEFT JOIN damage_details AS dd ON dd.reporting_work_id = rw.reporting_work_id
+                AND dd.order_number = ogd.order_number
+                AND dd.technology_number = ogd.technology_number
+        WHERE
+            rw.reporting_work_time between #{selectTime1} and #{selectTime2}
+          AND dd.available = 0
+          AND LENGTH( rw.process_id )= 14
+        GROUP BY
+            dd.id
+    </select>
+
+    <select id="splittingDetailsOutsideMp">
+        SELECT
+            fc.process_id,
+            fc.order_number,
+            fc.technology_number,
+            o.project,
+            o.batch,
+            ogd.child_width,
+            ogd.child_height,
+            fc.quantity,
+            round( ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2 ) as area,
+            od.shape,
+            od.remarks
+        FROM
+            sd.ORDER AS o
+                LEFT JOIN sd.order_detail AS od ON od.order_id = od.order_id
+                LEFT JOIN sd.order_glass_detail AS ogd ON o.order_id = ogd.order_id
+                AND ogd.order_number = od.order_number
+                LEFT JOIN flow_card AS fc ON fc.order_id = ogd.order_id
+                AND fc.order_number
+                AND fc.technology_number = ogd.technology_number
+        WHERE
+            fc.order_id = #{orderId}
+        GROUP BY
+            fc.id
+    </select>
+
+    <select id="qualityReportMp">
+        SELECT o.order_id,
+               o.customer_name,
+               o.project,
+               fc.order_number,
+               fc.technology_number,
+               od.product_name,
+               od.quantity,
+               MAX(opd.reporting_work_num_count)                                                   as quantityMax,
+               IFNULL(SUM(distinct dd.breakage_quantity), 0)                                       as breakage_quantity,
+               IFNULL(sum(distinct pl.patch_num), 0)                                               as patch_num,
+               fc.received_quantity,
+               CONCAT(ROUND(ROUND(od.quantity / MAX(opd.reporting_work_num_count), 2) * 100), '%') as finished
+        FROM sd.`order` AS o
+                 LEFT JOIN sd.order_detail AS od ON od.order_id = o.order_id
+
+                 LEFT JOIN flow_card AS fc ON o.order_id = fc.order_id
+            AND fc.order_number = od.order_number
+
+                 LEFT JOIN damage_details AS dd ON dd.process_id = fc.process_id
+            AND dd.order_number = fc.order_number
+            AND dd.technology_number = fc.technology_number
+            and dd.available != 1
+
+                 LEFT JOIN patch_log AS pl ON pl.order_id = fc.order_id
+            AND pl.process_id = fc.process_id
+            AND pl.order_sort = fc.order_number
+            AND pl.technology_number = fc.technology_number
+
+                 LEFT JOIN sd.order_process_detail AS opd ON opd.order_id = fc.order_id
+            AND opd.order_number = fc.order_number
+            AND opd.technology_number = fc.technology_number
+
+        WHERE o.create_time BETWEEN #{selectTime1} and #{selectTime2}
+
+        GROUP BY o.order_id,
+                 fc.order_number,
+                 fc.technology_number
+        ORDER BY fc.order_number
+    </select>
+
+    <select id="yieldMp">
+        SELECT opd.process,
+               o.order_id,
+               o.customer_name,
+               o.project,
+               od.product_name,
+               ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2)                               as finishedArea
+                ,
+               ROUND(SUM(distinct opd.broken_num) * od.area, 2)                                       as brokenArea,
+               (ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) +
+                ROUND(SUM(distinct opd.broken_num) * od.area, 2))                                     as area,
+               CONCAT(ROUND(ROUND(ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) /
+                                  (ROUND(SUM(distinct opd.reporting_work_num) * od.area, 2) +
+                                   ROUND(SUM(distinct opd.broken_num) * od.area, 2)), 2) * 100), '%') as finished
+        FROM sd.`order` AS o
+                 LEFT JOIN sd.order_detail AS od ON od.order_id = o.order_id
+                 LEFT JOIN flow_card AS fc ON fc.order_id = od.order_id
+            AND fc.order_number = fc.order_number
+                 LEFT JOIN sd.order_process_detail AS opd ON opd.order_id = fc.order_id
+            AND opd.process_id = fc.process_id
+            AND opd.order_number = fc.order_number
+            AND opd.technology_number = fc.technology_number
+        WHERE opd.reporting_work_num > 0
+          and o.create_time BETWEEN #{selectTime1} and #{selectTime2}
+          AND position(#{selectProcesses} IN opd.process)
+        GROUP BY opd.process, o.order_id
+    </select>
+
+    <select id="productionScheduleMp">
+        select
+            a.order_number,
+            a.shape,
+            a.product_name,
+            b.child_width,
+            b.child_height,
+            c.quantity,
+            c.technology_number,
+            b.glass_child,
+            e.reportWorkQuantity,
+            e.reportWorkQuantityCount,
+            ifnull(f.inventory,0) as inventoryNum,
+            round(ifnull(f.inventory,0)*a.area,2) as  inventoryArea,
+                dd.quantity as shippedQuantity,
+            dd.area
+
+        from
+            flow_card as c
+                left join
+            sd.order_detail as a
+            on  c.order_id = a.order_id
+                and c.order_number = a.order_number
+                left join sd.order_glass_detail as b
+                          on c.order_id = b.order_id
+                              and b.order_number = c.order_number
+                              and c.technology_number = b.technology_number
+                left join sd.`order` as d
+                          on c.order_id = d.order_id
+                left join mm.finished_goods_inventory as f
+                          on c.order_id = f.order_id and f.order_number = c.order_number
+                left join (
+                SELECT process_id,
+                       technology_number,
+                       sum(a.broken_num) as broken_num,
+                       concat('{',
+                              GROUP_CONCAT(concat("\"",process,"\":\"",reporting_work_num,"\"")),
+                              '}'
+                           ) as reportWorkQuantity,
+                       concat('{',
+                              GROUP_CONCAT(concat("\"",process,"\":\"",reporting_work_num,"\"")),
+                              '}'
+                           ) as  reportWorkQuantityCount
+                FROM sd.order_process_detail as a
+                where a.order_id=#{orderId}
+                GROUP BY process_id,a.technology_number
+            ) as e
+                          on e.process_id = c.process_id
+                              and e.technology_number = c.technology_number
+                left join sd.delivery_detail as dd on dd.order_id=a.order_id and dd.order_number=a.order_number
+        where a.order_id = #{orderId}
+        ORDER BY a.order_number
+    </select>
+
+    <select id="taskCompletionStatusMp">
+        select d.customer_name,
+               d.project,
+               d.batch,
+               c.order_id,
+               d.quantity,
+               d.area,
+               dd.quantity as shippedQuantity,
+               dd.area     as shippedArea,
+               e.reportWorkQuantity,
+               e.reportWorkQuantityCount
+
+        from sd.`order` as d
+                 left join flow_card as c on c.order_id = d.order_id
+                 left join
+             sd.order_detail as a
+             on c.order_id = a.order_id
+                 and c.order_number = a.order_number
+                 left join sd.order_glass_detail as b
+                           on c.order_id = b.order_id
+                               and b.order_number = c.order_number
+                               and c.technology_number = b.technology_number
+                 left join mm.finished_goods_inventory as f
+                           on c.order_id = f.order_id and f.order_number = c.order_number
+                 left join (SELECT process_id,
+                                   technology_number,
+                                   sum(a.broken_num) as broken_num,
+                                   concat('{',
+                                          GROUP_CONCAT(concat("\"", process, "\":\"", ifnull(reporting_work_num,0), "\"")),
+                                          '}'
+                                       )             as reportWorkQuantity,
+                                   concat('{',
+                                          GROUP_CONCAT(concat("\"", process, "\":\"", ifnull(reporting_work_num,0), "\"")),
+                                          '}'
+                                       )             as reportWorkQuantityCount
+                            FROM sd.order_process_detail as a
+                                     left join sd.`order` as o on o.order_id = a.order_id
+                            where o.create_time BETWEEN #{selectTime1} and #{selectTime2}
+                            GROUP BY process_id,a.technology_number
+                            ) as e
+                           on e.process_id = c.process_id
+                               and e.technology_number = c.technology_number
+                 left join sd.delivery_detail as dd on dd.order_id = a.order_id and dd.order_number = a.order_number
+        where d.create_time BETWEEN #{selectTime1} and #{selectTime2} and reportWorkQuantity is not null
+        GROUP BY a.order_id
+        ORDER BY a.order_id
+    </select>
+
+    <select id="orderPlanDecompositionMp">
+        SELECT
+            o.order_id,
+            o.customer_name,
+            o.project,
+            o.batch,
+            o.quantity,
+            o.area,
+            date(fc.create_time) as create_time,
+            date(orw.startTime) as startTime,
+            oopd.completionsNum,
+            sum( DISTINCT fc.received_quantity ) AS received_quantity,
+            sum( DISTINCT fc.quantity - fc.received_quantity ) AS receivedNo,
+            IF(fc.quantity=fc.received_quantity,'宸叉竻鍗�','') as accomplish,
+            DATEDIFF(
+                    MAX( rw.reporting_work_time ),
+                    min( rw.reporting_work_time ))+1 AS daysDifference
+        FROM
+            sd.`order` AS o
+                LEFT JOIN flow_card AS fc ON fc.order_id = o.order_id
+                LEFT JOIN (
+                SELECT
+                    a.order_id,
+                    MIN( b.reporting_work_time ) AS startTime
+                FROM
+                    sd.`order` AS a
+                        LEFT JOIN reporting_work AS b ON a.order_id = b.order_id
+                WHERE
+                    b.this_process = '鍒囧壊'
+                  AND a.create_time BETWEEN #{selectTime1} and #{selectTime2}
+                GROUP BY
+                    a.order_id
+            ) AS orw ON orw.order_id = o.order_id
+                LEFT JOIN (
+                SELECT
+                    a.order_id,
+                    SUM( b.reporting_work_num ) AS completionsNum
+                FROM
+                    sd.`order` AS a
+                        LEFT JOIN sd.order_process_detail AS b ON a.order_id = b.order_id
+                WHERE
+                    b.process = '鍖呰'
+                  AND a.create_time BETWEEN #{selectTime1} and #{selectTime2}
+                GROUP BY
+                    a.order_id
+            ) AS oopd ON oopd.order_id = o.order_id
+                LEFT JOIN reporting_work AS rw ON rw.order_id = fc.order_id
+                AND rw.process_id = fc.process_id
+        WHERE
+            o.create_time BETWEEN #{selectTime1} and #{selectTime2}
+          AND fc.create_time IS NOT NULL
+        GROUP BY
+            o.order_id
+    </select>
+
+    <select id="rawMaterialRequisitionMp">
+        SELECT
+            fc.project_no,
+            modl.material_name,
+            modl.producer,
+            ou.width,
+            ou.height,
+            modl.date_of_manufacture,
+            SUM(distinct modl.outbound_quantity) as quantity,
+            ROUND(SUM(modl.outbound_quantity)*SUM(modl.single_piece_area),2) as area,
+            date(mo.material_requisition_date) as date
+        FROM
+            mm.material_outbound_detail AS modl
+                left join mm.material_outbound as mo on mo.material_outbound_id=modl.material_outbound_id
+                LEFT JOIN optimize_use AS ou ON modl.use_id = ou.id and ou.raw_stock_code=modl.inventory_id
+                LEFT JOIN flow_card AS fc ON ou.project_no = fc.project_no
+        where  modl.use_id IS NOT NULL and mo.material_requisition_date BETWEEN #{selectTime1} and #{selectTime2}
+        GROUP BY
+            ou.width,ou.height,material_code
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0