From 24f7f046f8854d63839ad52d0cff34ea45a0f449 Mon Sep 17 00:00:00 2001
From: gongzuming <gongzuming>
Date: 星期二, 12 十一月 2024 13:10:17 +0800
Subject: [PATCH] 优化

---
 src/main/resources/mapper/payment/DeliveryOrderMapper.xml |   71 +++++++++++++++++++----------------
 1 files changed, 38 insertions(+), 33 deletions(-)

diff --git a/src/main/resources/mapper/payment/DeliveryOrderMapper.xml b/src/main/resources/mapper/payment/DeliveryOrderMapper.xml
index f6d68af..7af2ae0 100644
--- a/src/main/resources/mapper/payment/DeliveryOrderMapper.xml
+++ b/src/main/resources/mapper/payment/DeliveryOrderMapper.xml
@@ -188,40 +188,45 @@
     </select>
 
     <select id="statisticStationList" resultType="com.mzl.flower.dto.response.flower.StationStatisticDTO">
-            SELECT
-                s.station_id AS stationId,
-                st.`name`,
-                SUM( oi.num ) AS totalNum
-            FROM
-            t_delivery_order o
-            LEFT JOIN t_delivery_order_item i ON o.id = i.delivery_id
-            LEFT JOIN t_order_item oi ON oi.id = i.order_item_id
-            LEFT JOIN t_supplier_info s ON s.id = o.supplier_id
-            LEFT JOIN t_station st ON st.id = s.station_id
-            LEFT JOIN t_order t ON t.id = i.order_id
-            WHERE o.deleted = 0
-            AND o.`status` IN ( 'PENDING', 'ARRIVED', 'CHECKED' )
-            <if test="userId !=null and userId !=''">
-                AND st.user_ids LIKE concat('%', #{userId},'%')
-            </if>
-            <if test="name !=null and name !=''">
-                AND ( s.id LIKE concat('%', #{name},'%')  OR
-                      s.contact_tel LIKE concat('%', #{name},'%') OR
-                      s.`name` LIKE concat('%', #{name},'%') OR
-                      st.`name` LIKE concat('%', #{name},'%') OR
-                      t.warehouse_location_code LIKE concat('%', #{name},'%')
-                    )
-            </if>
-            <if test="startDate != null">
-                AND o.create_time &gt; #{startDate}
-            </if>
-            <if test="endDate != null">
-                AND o.create_time &lt;= #{endDate}
-            </if>
-            GROUP BY
-            s.station_id,
-            st.`name`;
+        SELECT
+        s.station_id AS stationId,
+        st.`name`,
+        SUM( oi.num ) AS totalNum,
+        SUM(CASE WHEN  o.`status` = 'CHECKED'  THEN oi.num ELSE 0 END) AS checkedSupplierCount,
+        SUM(CASE WHEN  o.`status` = 'PENDING' or o.`status`= 'ARRIVED' THEN oi.num ELSE 0 END) AS uncheckedSupplierCount
+        FROM t_delivery_order o
+        LEFT JOIN t_delivery_order_item i ON o.id = i.delivery_id
+        LEFT JOIN t_order_item oi ON oi.id = i.order_item_id
+        LEFT JOIN t_supplier_info s ON s.id = o.supplier_id
+        LEFT JOIN t_station st ON st.id = s.station_id
+        LEFT JOIN t_order t ON t.id = i.order_id
+        WHERE o.deleted = 0
+        AND o.`status` IN ( 'PENDING', 'ARRIVED', 'CHECKED' )
+        <if test="userId !=null and userId !=''">
+            AND st.user_ids LIKE concat('%', #{userId},'%')
+        </if>
+        <if test="name !=null and name !=''">
+            AND ( s.id LIKE concat('%', #{name},'%')  OR
+            s.contact_tel LIKE concat('%', #{name},'%') OR
+            s.`name` LIKE concat('%', #{name},'%') OR
+            st.`name` LIKE concat('%', #{name},'%') OR
+            t.warehouse_location_code LIKE concat('%', #{name},'%')
+            )
+        </if>
+        <if test="startDate != null">
+            AND o.create_time &gt; #{startDate}
+        </if>
+        <if test="endDate != null">
+            AND o.create_time &lt;= #{endDate}
+        </if>
 
+        <if test="statusList != null and statusList.size > 0">
+            AND o.status in
+            <foreach collection="statusList" item="status" open="(" separator="," close=")">
+                #{status}
+            </foreach>
+        </if>
+        GROUP BY s.station_id, st.`name`
     </select>
 
     <update id="setDeliveryOrderPending">

--
Gitblit v1.9.3