| <?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 | 
|         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 | 
|             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.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> | 
|         ) 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.status != null and condition.status != ''"> | 
|             AND q.status = #{condition.status} | 
|         </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 | 
|                 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> | 
|   | 
|     <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', 'CHECKED') | 
|         AND q.supplier_id = #{supplierId} | 
|         AND q.create_time > #{startDate} | 
|         AND q.create_time <= #{endDate} | 
|     </select> | 
| </mapper> |