Files
sczx_order/src/main/resources/mapper/OrderMainMapper.xml
2025-07-31 23:27:25 +08:00

55 lines
2.1 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sczx.order.mapper.OrderMainMapper">
<select id="storeOrderStatistics" resultType="com.sczx.order.dto.StoreOrderStatisticsDTO">
SELECT
store_id,
COUNT(*) as total_orders,
SUM(CASE WHEN (order_status = 'AUTO_END' OR order_status = 'MANUAL_END') AND DATE_FORMAT(end_order_time, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m') THEN 1 ELSE 0 END) as monthly_completed_orders,
SUM(CASE WHEN (order_status = 'AUTO_END' OR order_status = 'MANUAL_END') AND DATE_FORMAT(end_order_time, '%Y-%m') = DATE_FORMAT(NOW(), '%Y-%m') THEN order_amount ELSE 0 END) as monthly_order_amount,
COUNT(CASE WHEN order_status = 'WAIT_RETURN' THEN 1 END) as pending_pickup_count,
COUNT(CASE WHEN order_status = 'WAIT_RETURN' THEN 1 END) as pending_return_count,
COUNT(CASE WHEN order_status = 'RENT_OVERDUE' THEN 1 END) as overdue_count
FROM zc_order_main
WHERE store_id = #{storeId}
GROUP BY store_id
</select>
<select id="pageQueryOrder" resultType="com.sczx.order.dto.OrderSimpleDTO">
SELECT
o.order_id,
o.order_no,
o.order_status,
o.first_order_time,
o.end_rent_time,
o.car_model_id,
o.vehicle_id,
c.license_plate,
c.vin,
m.model_name,
m.brand_name,
m.image
from
zc_order_main o
join zc_car_model m on o.car_model_id = m.id
LEFT JOIN zc_car c on o.vehicle_id = c.id
<where>
<if test="customerId != null">
and o.customer_id = #{customerId}
</if>
<if test="storeId != null">
and o.store_id = #{storeId}
</if>
<if test="orderStatus != null and orderStatus!= ''">
and o.order_status = #{orderStatus}
</if>
</where>
order by o.update_time desc
</select>
</mapper>