From 4138fbb0a67b070beda2d13b27ff213ccf2a24de Mon Sep 17 00:00:00 2001 From: gongzuming <gongzuming> Date: 星期二, 29 十月 2024 11:33:58 +0800 Subject: [PATCH] 优化 --- src/main/resources/mapper/payment/DeliveryOrderMapper.xml | 91 ++++++++++++++++++++++++++++++++++++++------- 1 files changed, 76 insertions(+), 15 deletions(-) diff --git a/src/main/resources/mapper/payment/DeliveryOrderMapper.xml b/src/main/resources/mapper/payment/DeliveryOrderMapper.xml index 243e5d8..73e81ed 100644 --- a/src/main/resources/mapper/payment/DeliveryOrderMapper.xml +++ b/src/main/resources/mapper/payment/DeliveryOrderMapper.xml @@ -188,21 +188,82 @@ </select> <select id="statisticStationList" resultType="com.mzl.flower.dto.response.flower.StationStatisticDTO"> - select tt.* - , (select count(distinct s.id) - from t_supplier_info s - join t_delivery_order q on s.id = q.supplier_id - WHERE q.deleted = 0 - and q.status in ('CHECKED') - AND s.station_id = tt.stationId - ) checkedSupplierCount - , (select count(distinct s.id) - from t_supplier_info s - join t_delivery_order q on s.id = q.supplier_id - WHERE q.deleted = 0 - and q.status in ('PENDING', 'ARRIVED') - AND s.station_id = tt.stationId - ) uncheckedSupplierCount + select tt.*, + (SELECT + SUM( oi.num ) + 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 s.station_id = tt.stationId + AND o.`status` IN ( '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 > #{startDate} + </if> + <if test="endDate != null"> + AND o.create_time <= #{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`) checkedSupplierCount, + ( + 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 s.station_id = tt.stationId + AND o.`status` IN ( 'PENDING', 'ARRIVED') + <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 > #{startDate} + </if> + <if test="endDate != null"> + AND o.create_time <= #{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`) uncheckedSupplierCount from ( SELECT s.station_id AS stationId, -- Gitblit v1.9.3