<?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.mzl.flower.mapper.payment.DeliveryOrderMapper">
|
|
<select id="selectDoList" resultType="com.mzl.flower.dto.response.payment.DeliveryOrderListDTO">
|
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
|
WHERE q.deleted = 0 and o.deleted = 0
|
and q.supplier_id = #{supplierId}
|
<if test="condition.orderNo != null and condition.orderNo != ''">
|
AND q.order_no LIKE concat('%', #{condition.orderNo},'%')
|
</if>
|
<if test="condition.statusList != null and condition.statusList.size > 0">
|
and q.status in
|
<foreach collection="condition.statusList" item="item" open="(" separator="," close=")">
|
#{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>
|
ORDER BY o.payment_time
|
</select>
|
|
<select id="selectDoStationList" resultType="com.mzl.flower.dto.response.payment.DeliveryOrderStationListDTO">
|
SELECT q.id, q.order_no, q.status, s.name supplierName, s.contact_tel supplierTel
|
, st.name stationName, o.warehouse_name, o.warehouse_location_code, q.arrive_time
|
, (select sum(num) from t_order_item oi
|
where oi.supplier_id = q.supplier_id and oi.order_id = q.order_id) totalNum
|
FROM t_delivery_order q
|
join t_order o on q.order_id = o.id
|
join t_supplier_info s on s.id = q.supplier_id
|
join t_station st on st.id = s.station_id
|
WHERE q.deleted = 0 and o.deleted = 0
|
and q.status in ('PENDING', 'ARRIVED', 'CHECKED')
|
<if test="condition.stationId != null">
|
AND st.id = #{condition.stationId}
|
</if>
|
<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>
|
|
<if test="condition.supplierId != null">
|
AND q.supplier_id = #{condition.supplierId}
|
</if>
|
<if test="condition.supplierName != null and condition.supplierName != ''">
|
AND s.name LIKE concat('%', #{condition.supplierName},'%')
|
</if>
|
|
<if test="condition.warehouseId != null">
|
AND o.warehouse_id = #{condition.warehouseId}
|
</if>
|
<if test="condition.warehouseName != null and condition.warehouseName != ''">
|
AND o.warehouse_name LIKE concat('%', #{condition.warehouseName},'%')
|
</if>
|
|
<if test="condition.warehouseLocationId != null">
|
AND o.warehouse_location_id = #{condition.warehouseLocationId}
|
</if>
|
<if test="condition.warehouseLocationCode != null and condition.warehouseLocationCode != ''">
|
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>
|
|
ORDER BY q.arrive_time
|
</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, 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
|
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
|
join t_order o on q.order_id = o.id
|
WHERE q.deleted = 0 and o.deleted = 0
|
and q.status in ('PENDING', 'ARRIVED', 'CHECKED')
|
<if test="condition.stationId != null">
|
AND st.id = #{condition.stationId}
|
</if>
|
<if test="condition.orderNo != null and condition.orderNo != ''">
|
AND q.order_no LIKE concat('%', #{condition.orderNo},'%')
|
</if>
|
|
<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">
|
AND q.supplier_id = #{condition.supplierId}
|
</if>
|
<if test="condition.supplierName != null and condition.supplierName != ''">
|
AND s.name LIKE concat('%', #{condition.supplierName},'%')
|
</if>
|
|
<if test="condition.warehouseId != null">
|
AND o.warehouse_id = #{condition.warehouseId}
|
</if>
|
<if test="condition.warehouseName != null and condition.warehouseName != ''">
|
AND o.warehouse_name LIKE concat('%', #{condition.warehouseName},'%')
|
</if>
|
|
<if test="condition.warehouseLocationId != null">
|
AND o.warehouse_location_id = #{condition.warehouseLocationId}
|
</if>
|
<if test="condition.warehouseLocationCode != null and condition.warehouseLocationCode != ''">
|
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>
|
) tt
|
GROUP BY tt.id, tt.supplierName, tt.supplierTel, tt.stationName
|
</select>
|
|
<select id="selectSupplierDoInfo4Check" resultType="com.mzl.flower.dto.response.payment.DeliveryOrder4CheckDTO">
|
SELECT q.id, q.order_no, q.status, s.name supplierName, s.contact_tel supplierTel
|
, st.name stationName, o.warehouse_name, o.warehouse_location_code, q.arrive_time
|
, q.arrive_remarks, q.arrive_images
|
FROM t_delivery_order q
|
join t_order o on q.order_id = o.id
|
join t_supplier_info s on s.id = q.supplier_id
|
join t_station st on st.id = s.station_id
|
WHERE q.deleted = 0 and o.deleted = 0
|
and q.status in ('PENDING', 'ARRIVED', 'CHECKED')
|
AND q.supplier_id = #{condition.supplierId}
|
|
<if test="condition.orderNo != null and condition.orderNo != ''">
|
AND q.order_no LIKE concat('%', #{condition.orderNo},'%')
|
</if>
|
|
<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">
|
AND o.warehouse_id = #{condition.warehouseId}
|
</if>
|
<if test="condition.warehouseName != null and condition.warehouseName != ''">
|
AND o.warehouse_name LIKE concat('%', #{condition.warehouseName},'%')
|
</if>
|
|
<if test="condition.warehouseLocationId != null">
|
AND o.warehouse_location_id = #{condition.warehouseLocationId}
|
</if>
|
<if test="condition.warehouseLocationCode != null and condition.warehouseLocationCode != ''">
|
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>
|
|
ORDER BY q.arrive_time
|
</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
|
from (
|
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>
|
|
<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`
|
) tt
|
</select>
|
|
<update id="setDeliveryOrderPending">
|
update t_delivery_order set status = 'PENDING' where order_id = #{orderId}
|
</update>
|
|
<update id="deleteByOrderId">
|
update t_delivery_order set deleted = 1 where order_id = #{orderId}
|
</update>
|
|
<select id="selectSupplierDoEntity4Check" resultType="com.mzl.flower.entity.payment.DeliveryOrder">
|
SELECT q.*
|
FROM t_delivery_order q
|
WHERE q.deleted = 0
|
AND q.status in ('PENDING', 'ARRIVED')
|
AND q.supplier_id = #{supplierId}
|
<if test="startDate != null">
|
AND q.create_time > #{startDate}
|
</if>
|
<if test="endDate != null">
|
AND q.create_time <= #{endDate}
|
</if>
|
</select>
|
</mapper>
|