gongzuming
2024-10-22 93331239062a8604411400ea010270d22c1d26b1
优化
已修改1个文件
91 ■■■■ 文件已修改
src/main/resources/mapper/payment/DeliveryOrderMapper.xml 91 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 &gt; #{startDate}
        </if>
        <if test="endDate != null">
            AND o.create_time &lt;= #{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 &gt; #{startDate}
        </if>
        <if test="endDate != null">
            AND o.create_time &lt;= #{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,