From 5f0bb044b603a335954b11bf3880f4ad6824e98f Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期五, 20 十二月 2024 17:37:47 +0800 Subject: [PATCH] add: 花材销售统计 --- src/main/resources/mapper/payment/DeliveryOrderMapper.xml | 146 ++++++++++++++++++++++++++++++++---------------- 1 files changed, 97 insertions(+), 49 deletions(-) diff --git a/src/main/resources/mapper/payment/DeliveryOrderMapper.xml b/src/main/resources/mapper/payment/DeliveryOrderMapper.xml index dbfd143..91e1e49 100644 --- a/src/main/resources/mapper/payment/DeliveryOrderMapper.xml +++ b/src/main/resources/mapper/payment/DeliveryOrderMapper.xml @@ -6,7 +6,10 @@ SELECT q.*, o.warehouse_name, o.warehouse_location_code, o.payment_time FROM t_delivery_order q join t_order o on q.order_id = o.id + left join t_warehouse w on o.warehouse_id=w.id + left join t_warehouse_location wl on o.warehouse_location_id=wl.id WHERE q.deleted = 0 and o.deleted = 0 +-- and w.deleted=0 and wl.deleted=0 and q.supplier_id = #{supplierId} <if test="condition.orderNo != null and condition.orderNo != ''"> AND q.order_no LIKE concat('%', #{condition.orderNo},'%') @@ -17,13 +20,20 @@ #{item} </foreach> </if> +<!-- <if test="condition.startDate != null">--> +<!-- AND q.create_time > #{condition.startDate}--> +<!-- </if>--> +<!-- <if test="condition.endDate != null">--> +<!-- AND q.create_time <= #{condition.endDate}--> +<!-- </if>--> <if test="condition.startDate != null"> - AND q.create_time > #{condition.startDate} + AND o.payment_time >= #{condition.startDate} </if> <if test="condition.endDate != null"> - AND q.create_time <= #{condition.endDate} + AND o.payment_time < #{condition.endDate} </if> - ORDER BY o.payment_time +-- ORDER BY o.payment_time + order by w.seq,wl.seq asc </select> <select id="selectDoStationList" resultType="com.mzl.flower.dto.response.payment.DeliveryOrderStationListDTO"> @@ -79,13 +89,16 @@ </select> <select id="selectSupplierDoList4Check" resultType="com.mzl.flower.dto.response.payment.DeliveryOrderList4CheckDTO"> - SELECT tt.id, tt.supplierName, tt.supplierTel, tt.stationName, sum(tt.num) totalNum, sum(tt.amount) totalAmount + SELECT tt.id, tt.supplierName, tt.supplierTel, tt.stationName, sum(tt.num) totalNum + , sum(tt.amount) totalAmount, sum(tt.uncheckedCount) uncheckedCount from ( select s.id, s.name supplierName, s.contact_tel supplierTel, st.name stationName , (select sum(num) from t_order_item oi where oi.supplier_id = q.supplier_id and oi.order_id = q.order_id) num - , (select sum(oi.supplier_price * oi.num) from t_order_item oi + , (select sum(oi.supplier_price * oi.num) from t_order_item oi where oi.supplier_id = q.supplier_id and oi.order_id = q.order_id) amount + , (select count(1) from t_delivery_order dor + where dor.id = q.id and dor.status != 'CHECKED') uncheckedCount from t_supplier_info s join t_station st on st.id = s.station_id join t_delivery_order q on s.id = q.supplier_id @@ -98,8 +111,12 @@ <if test="condition.orderNo != null and condition.orderNo != ''"> AND q.order_no LIKE concat('%', #{condition.orderNo},'%') </if> - <if test="condition.status != null and condition.status != ''"> - AND q.status = #{condition.status} + + <if test="condition.statusList != null and condition.statusList.size > 0"> + AND q.status in + <foreach collection="condition.statusList" item="status" open="(" separator="," close=")"> + #{status} + </foreach> </if> <if test="condition.supplierId != null"> @@ -123,11 +140,17 @@ AND o.warehouse_location_code LIKE concat('%', #{condition.warehouseLocationCode},'%') </if> +<!-- <if test="condition.startDate != null">--> +<!-- AND q.create_time > #{condition.startDate}--> +<!-- </if>--> +<!-- <if test="condition.endDate != null">--> +<!-- AND q.create_time <= #{condition.endDate}--> +<!-- </if>--> <if test="condition.startDate != null"> - AND q.create_time > #{condition.startDate} + AND o.payment_time >= #{condition.startDate} </if> <if test="condition.endDate != null"> - AND q.create_time <= #{condition.endDate} + AND o.payment_time < #{condition.endDate} </if> ) tt GROUP BY tt.id, tt.supplierName, tt.supplierTel, tt.stationName @@ -148,8 +171,12 @@ <if test="condition.orderNo != null and condition.orderNo != ''"> AND q.order_no LIKE concat('%', #{condition.orderNo},'%') </if> - <if test="condition.status != null and condition.status != ''"> - AND q.status = #{condition.status} + + <if test="condition.statusList != null and condition.statusList.size > 0"> + AND q.status in + <foreach collection="condition.statusList" item="status" open="(" separator="," close=")"> + #{status} + </foreach> </if> <if test="condition.warehouseId != null"> @@ -166,51 +193,68 @@ AND o.warehouse_location_code LIKE concat('%', #{condition.warehouseLocationCode},'%') </if> +<!-- <if test="condition.startDate != null">--> +<!-- AND q.create_time > #{condition.startDate}--> +<!-- </if>--> +<!-- <if test="condition.endDate != null">--> +<!-- AND q.create_time <= #{condition.endDate}--> +<!-- </if>--> <if test="condition.startDate != null"> - AND q.create_time > #{condition.startDate} + AND o.payment_time >= #{condition.startDate} </if> <if test="condition.endDate != null"> - AND q.create_time <= #{condition.endDate} + AND o.payment_time < #{condition.endDate} </if> ORDER BY q.arrive_time </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 > #{startDate} - </if> - <if test="endDate != null"> - AND o.create_time <= #{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 > #{startDate}--> +<!-- </if>--> +<!-- <if test="endDate != null">--> +<!-- AND o.create_time <= #{endDate}--> +<!-- </if>--> + <if test="startDate != null"> + AND t.payment_time >= #{startDate} + </if> + <if test="endDate != null"> + AND t.payment_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` </select> <update id="setDeliveryOrderPending"> @@ -225,9 +269,13 @@ SELECT q.* FROM t_delivery_order q WHERE q.deleted = 0 - and q.status in ('PENDING', 'ARRIVED', 'CHECKED') + AND q.status in ('PENDING', 'ARRIVED') AND q.supplier_id = #{supplierId} - AND q.create_time > #{startDate} - AND q.create_time <= #{endDate} + <if test="startDate != null"> + AND q.create_time > #{startDate} + </if> + <if test="endDate != null"> + AND q.create_time <= #{endDate} + </if> </select> </mapper> \ No newline at end of file -- Gitblit v1.9.3