<?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.sckw.transport.dao.KwtLogisticsOrderMapper">
    <resultMap id="BaseResultMap" type="com.sckw.transport.model.KwtLogisticsOrder">
        <id column="id" jdbcType="BIGINT" property="id"/>
        <result column="ent_id" jdbcType="BIGINT" property="entId"/>
        <result column="type" jdbcType="BIGINT" property="type"/>
        <result column="t_order_id" jdbcType="BIGINT" property="tOrderId"/>
        <result column="t_order_no" jdbcType="VARCHAR" property="tOrderNo"/>
        <result column="l_order_no" jdbcType="VARCHAR" property="lOrderNo"/>
        <result column="pid" jdbcType="BIGINT" property="pid"/>
        <result column="pids" jdbcType="VARCHAR" property="pids"/>
        <result column="level" jdbcType="VARCHAR" property="level"/>
        <result column="bind_status" jdbcType="VARCHAR" property="bindStatus"/>
        <result column="total_load_amount" jdbcType="VARCHAR" property="totalLoadAmount"/>
        <result column="total_unload_amount" jdbcType="VARCHAR" property="totalUnloadAmount"/>
        <result column="settlement_cycle" jdbcType="BIGINT" property="settlementCycle"/>
        <result column="billing_mode" jdbcType="BIGINT" property="billingMode"/>
        <result column="price" jdbcType="DECIMAL" property="price"/>
        <result column="price_type" jdbcType="BIGINT" property="priceType"/>
        <result column="amount" jdbcType="DECIMAL" property="amount"/>
        <result column="unit" jdbcType="VARCHAR" property="unit"/>
        <result column="loss" jdbcType="DECIMAL" property="loss"/>
        <result column="loss_unit" jdbcType="VARCHAR" property="lossUnit"/>
        <result column="goods_price" jdbcType="DECIMAL" property="goodsPrice"/>
        <result column="goods_price_unit" jdbcType="VARCHAR" property="goodsPriceUnit"/>
        <result column="start_time" jdbcType="TIMESTAMP" property="startTime"/>
        <result column="end_time" jdbcType="TIMESTAMP" property="endTime"/>
        <result column="subcontract_amount" jdbcType="DECIMAL" property="subcontractAmount"/>
        <result column="entrust_amount" jdbcType="DECIMAL" property="entrustAmount"/>
        <result column="unload_amount" jdbcType="DECIMAL" property="unloadAmount"/>
        <result column="load_amount" jdbcType="DECIMAL" property="loadAmount"/>
        <result column="ignore_amount" jdbcType="DECIMAL" property="ignoreAmount"/>
        <result column="deficit_amount" jdbcType="DECIMAL" property="deficitAmount"/>
        <result column="deficit_price" jdbcType="DECIMAL" property="deficitPrice"/>
        <result column="payment" jdbcType="BIGINT" property="payment"/>
        <result column="tax_rate" jdbcType="DECIMAL" property="taxRate"/>
        <result column="remark" jdbcType="VARCHAR" property="remark"/>
        <result column="status" jdbcType="INTEGER" property="status"/>
        <result column="create_by" jdbcType="BIGINT" property="createBy"/>
        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
        <result column="update_by" jdbcType="BIGINT" property="updateBy"/>
        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
        <result column="del_flag" jdbcType="INTEGER" property="delFlag"/>
    </resultMap>
    <sql id="Base_Column_List">
        id
                ,
        ent_id,
        t_order_id,
        type,
        level,
        bind_status,
        total_load_amount,
        total_unload_amount,
        t_order_no,
        l_order_no,
        pid,
        pids,
        settlement_cycle,
        price,
        price_type,
        billing_mode,
        amount,
        unit,
        loss,
        loss_unit,
        goods_price,
        goods_price_unit,
        start_time,
        end_time,
        subcontract_amount,
        entrust_amount,
        unload_amount,
        load_amount,
        ignore_amount,
        deficit_amount,
        deficit_price,
        payment,
        tax_rate,
        remark,
        `status`,
        create_by,
        create_time,
        update_by,
        update_time,
        del_flag
    </sql>
    <select id="selectOrderList" resultType="com.sckw.transport.model.dto.LogisticsOrderDto">
        SELECT a.id as lOrderId,
        a.l_order_no as lOrderNo,
        b.`status` as `status`,
        a.t_order_id as tOrderId,
        a.t_order_no as tOrderNo,
        a.payment as payment,
        a.amount,
        a.price,
        a.loss,
        a.goods_price as goodsPrice,
        c.firm_name as comanyName,
        c.contacts,
        c.phone,
        a.create_by as createBy,
        a.create_time as createTime
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id and a.`status` = b.`status`
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id AND c.unit_type = #{type}
        WHERE a.del_flag = '0'
        AND b.del_flag = '0'
        AND a.t_order_id = #{id,jdbcType=VARCHAR} limit #{page}
        , #{pageSize}
    </select>

    <select id="selectOrderListNotPage" resultType="com.sckw.transport.model.dto.LogisticsOrderDto">
        SELECT a.id as lOrderId,
        a.l_order_no as lOrderNo,
        b.`status` as `status`,
        a.t_order_id as tOrderId,
        a.t_order_no as tOrderNo,
        a.payment as payment,
        a.amount,
        a.unit as unit,
        a.price,
        a.price_type as priceType,
        a.loss,
        a.loss_unit AS lossUnit,
        a.goods_price as goodsPrice,
        a.goods_price_unit as goodsPriceUnit,
        c.firm_name as companyName,
        c.contacts,
        c.phone,
        a.create_by as createBy,
        a.create_time as createTime
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id and a.`status` = b.`status`
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id
        WHERE a.del_flag = '0'
        AND b.del_flag = '0'
        <if test="type != null and type != ''">
            AND c.unit_type = #{type}
        </if>
        AND a.t_order_id = #{id,jdbcType=VARCHAR}
        order by createTime desc
    </select>


    <select id="selectOrderListNotPageByIds" resultType="com.sckw.transport.model.dto.LogisticsOrderDto">
        SELECT a.id as lOrderId,
        a.l_order_no as lOrderNo,
        b.`status` as `status`,
        a.t_order_id as tOrderId,
        a.t_order_no as tOrderNo,
        a.payment as payment,
        a.amount,
        a.unit as unit,
        a.price,
        a.price_type as priceType,
        a.loss,
        a.loss_unit AS lossUnit,
        a.goods_price as goodsPrice,
        a.goods_price_unit as goodsPriceUnit,
        c.firm_name as companyName,
        c.contacts,
        c.phone,
        a.create_by as createBy,
        a.create_time as createTime
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id and a.`status` = b.`status`
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id
        WHERE a.del_flag = '0'
        AND b.del_flag = '0'
        <if test="type != null and type != ''">
            AND c.unit_type = #{type}
        </if>
        <if test="ids != null and ids.size() > 0">
            AND a.t_order_id in
            <foreach collection="ids" separator="," open="(" close=")" item="item">
                #{item}
            </foreach>
        </if>
        order by createTime desc
    </select>

    <select id="selectOrderListByTradeOrderIds" resultType="com.sckw.transport.model.dto.LogisticsOrderDto">
        SELECT a.id as lOrderId,
        a.l_order_no as lOrderNo,
        a.`status` as `status`,
        a.t_order_id as tOrderId,
        a.t_order_no as tOrderNo,
        a.payment as payment,
        a.amount,
        a.unit as unit,
        a.price,
        a.price_type as priceType,
        a.loss,
        a.loss_unit AS lossUnit,
        a.goods_price as goodsPrice,
        a.goods_price_unit as goodsPriceUnit,
        c.firm_name as companyName,
        c.contacts,
        c.phone,
        a.create_by as createBy,
        a.create_time as createTime
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id
        WHERE a.del_flag = '0'
        AND c.del_flag = '0'
        <if test="unitType != null and unitType != ''">
            AND c.unit_type = #{unitType}
        </if>
        <if test="tradeOrderIds != null and tradeOrderIds.size() > 0">
            and a.t_order_id in
            <foreach collection="tradeOrderIds" item="item" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        order by tOrderId, createTime desc
    </select>

    <select id="selectOrderListByContractId" resultType="com.sckw.transport.model.vo.SckwLogisticsOrderVO">
        SELECT a.STATUS,
        a.id AS lOrderId,
        a.l_order_no AS lOrderNo,
        f.contract_no AS contractNo,
        d.id as checkId,
        d.ent_id as checkEntId,
        d.top_ent_id as checkTopEntId,
        d.firm_name AS checkFirmName,
        e.id as carrierId,
        e.ent_id as carrierEntId,
        e.top_ent_id as carrierTopEntId,
        e.firm_name AS carrierFirmName,
        g.goods_name AS goodsName,
        a.amount AS carryingCapacity,
        a.price AS price,
        b.city_name AS loadCityName,
        b.detail_address AS loadDetailAddress,
        a.payment AS payment,
        a.loss AS loss,
        a.loss_unit AS lossUnit,
        a.goods_price AS goodsPrice,
        a.goods_price_unit AS goodsPriceUnit,
        a.settlement_cycle AS settlementCycle,
        e.contacts AS carrierContacts,
        e.phone AS carrierPhone,
        d.contacts AS checkContacts,
        d.phone AS checkPhone,
        b.contacts AS loadContacts,
        b.phone AS loadPhone,
        c.contacts AS unloadContacts,
        c.phone AS unloadPhone,
        a.start_time AS startTime,
        a.end_time AS endTime,
        a.remark AS remark,
        a.create_by AS createBy,
        a.create_time AS createTime,
        f.contract_id AS contractId,
        a.amount AS amount,
        c.detail_address as unloadDetailAddress,
        a.billing_mode as billingMode
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_address b ON a.id = b.l_order_id
        AND b.address_type = 1
        AND b.del_flag = 0
        LEFT JOIN kwt_logistics_order_address c ON a.id = c.l_order_id
        AND c.address_type = 2
        AND c.del_flag = 0
        LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
        AND d.unit_type = 1
        AND d.del_flag = 0
        LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
        AND e.unit_type = 2
        LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id
        AND g.del_flag = 0
        LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id
        AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <!--            <if test="type == 1">-->
            <!--                and (d.top_ent_id = #{entId} or d.ent_id = #{entId})-->
            <!--            </if>-->
            <!--            <if test="type == 2">-->
            <!--                and (e.top_ent_id = #{entId} or e.ent_id = #{entId})-->
            <!--            </if>-->
            <if test="contractIds != null and contractIds.size() > 0">
                and f.contract_id in
                <foreach collection="contractIds" item="item" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
        </where>
        ORDER BY a.id DESC
    </select>
    <select id="selectOrderCount" resultType="java.lang.Long">
        SELECT count(a.id)
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id and a.`status` = b.`status`
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id AND c.unit_type = #{type}
        WHERE a.del_flag = '0'
        AND b.del_flag = '0'
        AND a.t_order_id = #{id,jdbcType=VARCHAR}
    </select>
    <select id="selectLogisticOrderData" resultType="com.sckw.transport.api.model.vo.LogisticsOrderVO">
        SELECT DISTINCT a.id                  AS lOrderId,
                        a.l_order_no          AS lOrderNO,
                        a.t_order_id          AS tOrderId,
                        a.t_order_no          AS tOrderNO,
                        a.payment             AS payment,
                        a.billing_mode        AS billingMode,
                        c.contract_id         AS contractId,
                        c.contract_no         AS contractNo,
                        c.contract_name       AS contractName,
                        b.goods_name          AS goodsName,
                        a.amount,
                        a.remark              as remark,
                        a.unit,
                        a.ignore_amount       AS ignoreAmount,
                        a.price,
                        a.price_type          as priceType,
                        a.goods_price         AS goodsPrice,
                        a.goods_price_unit    AS goodsPriceUnit,
                        a.loss,
                        a.loss_unit           AS lossUnit,
                        a.tax_rate            as taxRate,
                        a.load_amount         AS loadAmount,
                        a.unload_amount       AS unloadAmount,
                        a.total_load_amount   AS totalLoadAmount,
                        a.total_unload_amount AS totalUnloadAmount,
                        a.total_take          AS totalTake,
                        a.settlement_cycle    as settlementCycle,
                        a.start_time          AS startTime,
                        a.end_time            AS endTime,
                        a.create_time         AS createTime,
                        a.create_by           AS createBy,
                        a.update_by           AS updateBy,
                        a.update_time         AS updateTime
        FROM
        kwt_logistics_order a
            LEFT JOIN kwt_logistics_order_goods b ON a.id = b.l_order_id and a.bind_status = '0'
        <!--        LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id-->
        LEFT JOIN kwt_logistics_order_contract c ON a.id = c.l_order_id
        <!--        LEFT JOIN ( SELECT l_order_id FROM kwt_logistics_order_unit WHERE unit_type = 1 AND ent_id = #{entId} ) g ON a.id = g.l_order_id-->
        <!--        LEFT JOIN ( SELECT ent_id FROM kwt_logistics_order_unit WHERE unit_type = 1 AND ent_id = #{entId} ) g ON a.id = g.l_order_id-->
        LEFT JOIN kwt_logistics_order_unit g on a.id = g.l_order_id and g.unit_type = 1
        LEFT JOIN kwt_logistics_order_unit h on a.id = h.l_order_id and h.unit_type = 2
        <where>
            a.del_flag = 0
              and a.bind_status = '0' <!--and d.unit_type = 1-->
            <if test="dictValue != null and dictValue != ''">
                AND a.payment = #{dictValue}
            </if>
            <if test="logisticsOrderParam.companyId != null and logisticsOrderParam.companyId != ''">
                <!--                AND d.ent_id = #{logisticsOrderParam.companyId}-->
                AND g.ent_id = #{logisticsOrderParam.companyId}
            </if>
            <if test="ids != null and ids.size() > 0">
                AND ( h.ent_id in
                <foreach collection="ids" open="(" close=")" separator="," item="item">
                    #{item}
                </foreach>
                or h.top_ent_id in
                <foreach collection="ids" item="item" separator="," close=")" open="(">
                    #{item}
                </foreach>
                )
            </if>
            <if test="logisticsOrderParam.taxRate != null and logisticsOrderParam.taxRate != ''">
                AND a.tax_rate = #{logisticsOrderParam.taxRate}
            </if>
            <if test="logisticsOrderParam.goodsName != null and logisticsOrderParam.goodsName != ''">
                AND b.goods_name LIKE concat('%', #{logisticsOrderParam.goodsName}, '%')
            </if>
            <if test="logisticsOrderParam.startTime != null and logisticsOrderParam.startTime != ''">
                AND a.start_time &gt;= #{logisticsOrderParam.startTime}
            </if>
            <if test="logisticsOrderParam.endTime != null and logisticsOrderParam.endTime != ''">
                AND a.end_time &lt;= #{logisticsOrderParam.endTime}
            </if>
            <if test="orderStatusList != null and orderStatusList.size() > 0">
                and a.status in
                <foreach collection="orderStatusList" separator="," open="(" close=")" item="item">
                    #{item,jdbcType=INTEGER}
                </foreach>
            </if>
        </where>
        ORDER BY a.create_time DESC
        <if test="logisticsOrderParam.page != null and logisticsOrderParam.pageSize != null">
            limit #{logisticsOrderParam.page,jdbcType=INTEGER}, #{logisticsOrderParam.pageSize,jdbcType=INTEGER}
        </if>
    </select>
    <select id="selectLogisticOrderCount" resultType="java.lang.Long">
        SELECT count(a.id)
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_goods b ON a.id = b.l_order_id
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
                 LEFT JOIN kwt_logistics_order_unit h ON a.id = h.l_order_id
                 LEFT JOIN kwt_logistics_order_contract c ON a.id = c.l_order_id
        <where>
            a.del_flag = 0
              and d.unit_type = 1
              and h.unit_type = 2
              and a.bind_status = '0'
            <if test="dictValue != null and dictValue != ''">
                AND a.payment = #{dictValue}
            </if>
            <if test="logisticsOrderParam.companyId != null and logisticsOrderParam.companyId != ''">
                AND d.ent_id = #{logisticsOrderParam.companyId}
            </if>
            <if test="ids != null and ids.size() > 0">
                AND ( h.ent_id in
                <foreach collection="ids" open="(" close=")" separator="," item="item">
                    #{item}
                </foreach>
                or h.top_ent_id in
                <foreach collection="ids" item="item" separator="," close=")" open="(">
                    #{item}
                </foreach>
                )
            </if>
            <if test="logisticsOrderParam.taxRate != null and logisticsOrderParam.taxRate != ''">
                AND a.tax_rate = #{logisticsOrderParam.taxRate}
            </if>
            <if test="logisticsOrderParam.goodsName != null and logisticsOrderParam.goodsName != ''">
                AND b.goods_name LIKE concat('%', #{logisticsOrderParam.goodsName}, '%')
            </if>
            <if test="logisticsOrderParam.startTime != null and logisticsOrderParam.startTime != ''">
                AND a.start_time &gt;= #{logisticsOrderParam.startTime}
            </if>
            <if test="logisticsOrderParam.endTime != null and logisticsOrderParam.endTime != ''">
                AND a.end_time &lt;= #{logisticsOrderParam.endTime}
            </if>
            <if test="orderStatusList != null  and orderStatusList.size() > 0">
                and a.status in
                <foreach collection="orderStatusList" item="item" close=")" open="(" separator=",">
                    #{item,jdbcType=INTEGER}
                </foreach>
            </if>
        </where>
        ORDER BY a.create_time DESC
    </select>

    <select id="getRejectReason" resultType="java.util.Map">
        SELECT a.id AS lOrderId,
        b.remark remark
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id
        WHERE a.del_flag = '0'
        AND b.del_flag = '0'
        and b.status = #{status}
        and a.id = #{id}
    </select>

    <select id="getSubcontractConsignment" resultType="com.sckw.transport.model.vo.SubcontractConsignmentVO">
        SELECT a.id,
        a.pid,
        a.`status` as status,
        a.l_order_no as consignOrderNo,
        c.firm_name as carrierContacts,
        d.goods_name as goodsName,
        a.amount as amount,
        a.price,
        a.price_type as priceType,
        e.detail_address as loadAddress,
        f.detail_address as unloadAddress,
        a.billing_mode as billingMode,
        a.loss,
        a.loss_unit as lossUnit,
        a.goods_price as goodsPrice,
        a.goods_price_unit as goodsPriceUnit,
        a.settlement_cycle as settlementCycle,
        c.contacts as carrierContacts,
        c.phone as carrierPhone,
        b.firm_name as consignCompany,
        b.contacts as consignContacts,
        b.phone as consignPhone,
        e.contacts as loadContacts,
        e.phone as loadContacts,
        f.contacts as unloadContacts,
        f.phone as unloadPhone,
        a.start_time as shipmentsDate,
        a.end_time as receiveGoodsDate,
        a.remark,
        a.create_by as createBy,
        a.create_time as createTime,
        g.contract_id as contractId
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
        AND b.unit_type = 1
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id
        AND c.unit_type = 2
        LEFT JOIN kwt_logistics_order_goods d ON a.id = d.l_order_id
        LEFT JOIN kwt_logistics_order_address e ON a.id = e.l_order_id
        AND e.address_type = 1
        LEFT JOIN kwt_logistics_order_address f ON a.id = f.l_order_id
        AND f.address_type = 2
        LEFT JOIN kwt_logistics_order_contract g ON a.id = g.l_order_id
        WHERE a.del_flag = 0
        AND b.del_flag = 0
        AND c.del_flag = 0
        AND e.del_flag = 0
        AND f.del_flag = 0
        and a.pid = #{lOrderId}
        ORDER BY a.create_time
        limit #{page}, #{pageSize}
    </select>

    <select id="getSubcontractConsignmentList" resultType="com.sckw.transport.model.vo.SubcontractConsignmentVO">
        SELECT a.id,
        a.pid,
        a.`status` as status,
        a.l_order_no as consignOrderNo,
        <!--               a.l_order_no       as carrierOrderNo,-->
        c.firm_name as carrierCompany,
        d.goods_name as goodsName,
        a.amount as carryingCapacity,
        a.price,
        a.price_type as priceType,
        e.detail_address as loadAddress,
        f.detail_address as unloadAddress,
        a.billing_mode as billingMode,
        a.loss,
        a.tax_rate as taxRate,
        a.loss_unit as lossUnit,
        a.goods_price as goodsPrice,
        a.goods_price_unit as goodsPriceUnit,
        a.settlement_cycle as settlementCycle,
        c.contacts as carrierContacts,
        c.phone as carrierPhone,
        b.firm_name as consignCompany,
        b.contacts as consignContacts,
        b.phone as consignPhone,
        e.contacts as loadContacts,
        e.phone as loadPhone,
        f.contacts as unloadContacts,
        f.phone as unloadPhone,
        a.start_time as shipmentsDate,
        a.end_time as receiveGoodsDate,
        a.remark,
        a.create_by as createBy,
        a.create_time as createTime,
        g.contract_id as contractId,
        g.contract_no as contractNo,
        g.contract_name as contractName,
        g.signing_way as signing,
        e.city_name as loadCityName,
        f.city_name as unloadCityName,
        e.name as loadName,
        f.name as unloadName,
        a.type as orderSource
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
        AND b.unit_type = 1
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id
        AND c.unit_type = 2
        LEFT JOIN kwt_logistics_order_goods d ON a.id = d.l_order_id
        LEFT JOIN kwt_logistics_order_address e ON a.id = e.l_order_id
        AND e.address_type = 1
        LEFT JOIN kwt_logistics_order_address f ON a.id = f.l_order_id
        AND f.address_type = 2
        LEFT JOIN kwt_logistics_order_contract g ON a.id = g.l_order_id
        WHERE a.del_flag = 0
        AND b.del_flag = 0
        AND c.del_flag = 0
        AND e.del_flag = 0
        AND f.del_flag = 0
        <if test="lOrderIds != null and lOrderIds.size() > 0">
            and a.pid in
            <foreach collection="lOrderIds" item="item" close=")" open="(" separator=",">
                #{item,jdbcType=BIGINT}
            </foreach>
        </if>
        <!--        ORDER BY a.id desc-->
        ORDER BY a.create_time desc
    </select>

    <select id="getSubcontractConsignmentNotPage" resultType="com.sckw.transport.model.vo.SubcontractConsignmentVO">
        SELECT a.id,
        a.pid,
        a.`status` as status,
        a.l_order_no as consignOrderNo,
        <!--               a.l_order_no       as carrierOrderNo,-->
        c.firm_name as carrierCompany,
        d.goods_name as goodsName,
        a.amount as carryingCapacity,
        a.price,
        a.price_type as priceType,
        e.detail_address as loadAddress,
        f.detail_address as unloadAddress,
        a.billing_mode as billingMode,
        a.loss,
        a.loss_unit as lossUnit,
        a.goods_price as goodsPrice,
        a.goods_price_unit as goodsPriceUnit,
        a.settlement_cycle as settlementCycle,
        c.contacts as carrierContacts,
        c.phone as carrierPhone,
        b.firm_name as consignCompany,
        b.contacts as consignContacts,
        b.phone as consignPhone,
        e.contacts as loadContacts,
        e.phone as loadPhone,
        f.contacts as unloadContacts,
        f.phone as unloadPhone,
        a.start_time as shipmentsDate,
        a.end_time as receiveGoodsDate,
        a.remark,
        a.create_by as createBy,
        a.create_time as createTime,
        g.contract_id as contractId,
        g.contract_no as contractNo,
        g.contract_name as contractName,
        g.signing_way as signing,
        e.city_name as loadCityName,
        f.city_name as unloadCityName
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
        AND b.unit_type = 1
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id
        AND c.unit_type = 2
        LEFT JOIN kwt_logistics_order_goods d ON a.id = d.l_order_id
        LEFT JOIN kwt_logistics_order_address e ON a.id = e.l_order_id
        AND e.address_type = 1
        LEFT JOIN kwt_logistics_order_address f ON a.id = f.l_order_id
        AND f.address_type = 2
        LEFT JOIN kwt_logistics_order_contract g ON a.id = g.l_order_id
        WHERE a.del_flag = 0
        AND b.del_flag = 0
        AND c.del_flag = 0
        AND e.del_flag = 0
        AND f.del_flag = 0
        and a.pid = #{lOrderId}
        ORDER BY a.create_time desc
    </select>

    <select id="countSubcontractConsignmentById" resultType="java.util.Map">
        SELECT COUNT(0) as total,
        a.id,
        a.pid,
        a.`status` as status,
        a.l_order_no as consignOrderNo,
        c.firm_name as carrierContacts,
        d.goods_name as goodsName,
        a.amount as amount,
        a.price,
        a.price_type as priceType,
        e.detail_address as loadAddress,
        f.detail_address as unloadAddress,
        a.billing_mode as billingMode,
        a.loss,
        a.loss_unit as lossUnit,
        a.goods_price as goodsPrice,
        a.goods_price_unit as goodsPriceUnit,
        a.settlement_cycle as settlementCycle,
        c.contacts as carrierContacts,
        c.phone as carrierPhone,
        b.firm_name as consignCompany,
        b.contacts as consignContacts,
        b.phone as consignPhone,
        e.contacts as loadContacts,
        e.phone as loadContacts,
        f.contacts as unloadContacts,
        f.phone as unloadPhone,
        a.start_time as shipmentsDate,
        a.end_time as receiveGoodsDate,
        a.remark,
        a.create_by as createBy,
        a.create_time as createTime,
        g.contract_id as contractId
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
        AND b.unit_type = 1
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id
        AND c.unit_type = 2
        LEFT JOIN kwt_logistics_order_goods d ON a.id = d.l_order_id
        LEFT JOIN kwt_logistics_order_address e ON a.id = e.l_order_id
        AND e.address_type = 1
        LEFT JOIN kwt_logistics_order_address f ON a.id = f.l_order_id
        AND f.address_type = 2
        LEFT JOIN kwt_logistics_order_contract g ON a.id = g.l_order_id
        WHERE a.del_flag = 0
        AND b.del_flag = 0
        AND c.del_flag = 0
        AND e.del_flag = 0
        AND f.del_flag = 0
        and a.pid = #{lOrderId}
        ORDER BY a.create_time
    </select>

    <select id="selectDriverListById" resultType="com.sckw.transport.model.vo.DriverListVo">
        <!--        SELECT count(IF(b.status in (7, 8, 13), 1, NULL)) AS count,-->
        SELECT count(IF(b.status in (502,504,503,501), 1, NULL)) AS count,
        a.id AS lOrderId,
        a.l_order_no AS lOrderNo,
        b.driver_id AS driverId,
        b.id AS wOrderId,
        b.w_order_no AS wOrderNo,
        b.driver_name AS driverName,
        b.driver_phone AS driverPhone,
        b.driver_idcard AS driverIdCard,
        b.truck_no AS truckNo,
        b.status AS status
        FROM
        kwt_waybill_order b
        LEFT JOIN kwt_logistics_order a
        ON b.l_order_id = a.id
        <!--        SELECT a.id AS lOrderId,-->
        <!--        a.l_order_no AS lOrderNo,-->
        <!--        b.driver_id AS driverId,-->
        <!--        b.id AS wOrderId,-->
        <!--        b.w_order_no AS wOrderNo,-->
        <!--        b.driver_name AS driverName,-->
        <!--        b.driver_phone AS driverPhone,-->
        <!--        b.driver_idcard AS driverIdCard,-->
        <!--        b.truck_no AS truckNo-->
        <!--        ,-->
        <!--        COUNT( b.id ) AS count-->
        <!--        FROM-->
        <!--        kwt_waybill_order b,-->
        <!--        kwt_logistics_order a-->
        <where>
            a.id = b.l_order_id
            AND a.del_flag = 0
            AND b.del_flag = 0
            AND b.type = 1
            <if test="driverParam.lOrderId != null and driverParam.lOrderId != ''">
                AND a.id =#{driverParam.lOrderId}
            </if>
            <if test="driverParam.driverName != null and driverParam.driverName != '' or (driverParam.driverPhone != null and driverParam.driverPhone != '') or (driverParam.truckNo != null and driverParam.truckNo != '')">
                <!--                and (-->
                <if test="driverParam.driverName != null and driverParam.driverName != ''">
                    and b.driver_name like concat('%'
                    , #{driverParam.driverName}
                    , '%')
                </if>
                <if test="driverParam.driverPhone != null and driverParam.driverPhone != ''">
                    and b.driver_phone like concat('%'
                    , #{driverParam.driverPhone}
                    , '%')
                </if>
                <if test="driverParam.truckNo != null and driverParam.truckNo != ''">
                    and b.truck_no like concat('%'
                    , #{driverParam.truckNo}
                    , '%')
                </if>
                <!--                )-->
            </if>
            GROUP BY
            b.truck_no
            <!--        a.l_order_no,-->
        </where>
    </select>

    <select id="selectDriverCountById" resultType="com.sckw.transport.model.vo.DriverListVo">
        SELECT count(1) AS count,
        c.truck_no AS truckNo
        FROM
        kwt_waybill_order_subtask b
        LEFT JOIN kwt_waybill_order c on b.w_order_id =c.id
        <where>
            b.del_flag = 0
            AND c.type =#{type}
            AND b.status in (501
            , 502
            , 503
            , 504)
            <if test="driverParam.lOrderId != null and driverParam.lOrderId != ''">
                AND b.l_order_id =#{driverParam.lOrderId}
            </if>
            <if test="driverParam.driverName != null and driverParam.driverName != '' or (driverParam.driverPhone != null and driverParam.driverPhone != '') or (driverParam.truckNo != null and driverParam.truckNo != '')">
                <!--                and (-->
                <if test="driverParam.driverName != null and driverParam.driverName != ''">
                    and b.driver_name like concat('%'
                    , #{driverParam.driverName}
                    , '%')
                </if>
                <if test="driverParam.driverPhone != null and driverParam.driverPhone != ''">
                    and b.driver_phone like concat('%'
                    , #{driverParam.driverPhone}
                    , '%')
                </if>
                <if test="driverParam.truckNo != null and driverParam.truckNo != ''">
                    and b.truck_no like concat('%'
                    , #{driverParam.truckNo}
                    , '%')
                </if>
            </if>
            GROUP BY
            c.truck_no
        </where>
    </select>

    <select id="selectLogisticOrderList" resultType="com.sckw.transport.api.model.dto.AcceptCarriageLogisticsOrderDto">
        SELECT DISTINCT a.id AS lOrderId,
        a.l_order_no AS lOrderNO,
        a.t_order_id AS tOrderId,
        a.t_order_no AS tOrderNO,
        a.payment AS payment,
        a.billing_mode AS billingMode,
        c.contract_id AS contractId,
        b.goods_name AS goodsName,
        a.amount,
        a.remark as remark,
        a.unit,
        a.ignore_amount AS ignoreAmount,
        a.price,
        a.price_type as priceType,
        a.goods_price AS goodsPrice,
        a.loss,
        a.loss_unit AS lossUnit,
        a.tax_rate as taxRate,
        a.load_amount AS loadAmount,
        a.unload_amount AS unloadAmount,
        a.total_load_amount AS totalLoadAmount,
        a.total_unload_amount AS totalUnloadAmount,
        a.total_take AS totalTake,
        a.settlement_cycle as settlementCycle,
        a.start_time AS startTime,
        a.end_time AS endTime,
        a.create_time AS createTime,
        a.create_by AS createBy,
        a.update_by AS updateBy,
        a.update_time AS updateTime
        FROM
        kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_goods b ON a.id = b.l_order_id and a.bind_status = '0'
        <!--        LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id-->
        LEFT JOIN kwt_logistics_order_contract c ON a.id = c.l_order_id
        <where>
            <if test="ids != null and ids.size() > 0">
                and a.id in
                <foreach collection="ids" item="item" open="(" close=")" separator=",">
                    #{item}
                </foreach>
            </if>
        </where>
        and a.status = #{status,jdbcType=INTEGER}
        ORDER BY a.create_time DESC
    </select>

    <select id="selectOrderFinishData" resultType="com.sckw.transport.model.vo.OrderFinishVO">
        SELECT b.amount as amount,
        COUNT(a.id) AS number,
        SUM(IFNULL(a.load_amount, 0)) as loadAmount,
        SUM(IFNULL(a.unload_amount, 0)) AS unloadAmount
        FROM kwt_waybill_order a
        LEFT JOIN kwt_logistics_order b ON b.id = a.l_order_id
        AND a.del_flag = 0
        AND b.del_flag = 0
        <where>
            <if test="orderId != null and orderId != ''">
                and b.id = #{orderId}
            </if>
        </where>
    </select>

    <select id="findLogisticsOrder" resultType="com.sckw.transport.model.KwtLogisticsOrder"
            parameterType="java.util.Map">
        select id,
        ent_id entId,
        t_order_id tOrderId,
        t_order_no tOrderNo,
        l_order_no lOrderNo,
        pid,
        pids,
        settlement_cycle settlementCycle,
        price,
        price_type priceType,
        billing_mode billingMode,
        type,
        amount,
        unit,
        loss,
        loss_unit lossUnit,
        goods_price goodsPrice,
        goods_price_unit goodsPriceUnit,
        start_time startTime,
        end_time endTime,
        subcontract_amount subcontractAmount,
        entrust_amount entrustAmount,
        unload_amount unloadAmount,
        load_amount loadAmount,
        ignore_amount ignoreAmount,
        deficit_amount deficitAmount,
        deficit_price deficitPrice,
        payment,
        tax_rate taxRate,
        remark,
        `status`,
        create_by createBy,
        total_take totalTake,
        total_load_amount totalLoadAmount,
        total_unload_amount totalUnloadAmount,
        create_time createTime,
        update_by updateBy,
        update_time updateTime
        from kwt_logistics_order
        where del_flag = 0
        <if test="id != null and id != ''">
            and id = #{id, jdbcType=BIGINT}
        </if>
        <if test="pid != null and pid != ''">
            and pid in (#{pid, jdbcType=VARCHAR})
        </if>
        <if test="status != null and status != ''">
            and status = #{status, jdbcType=INTEGER}
        </if>
        <if test="upperlOrderId != null and upperlOrderId != ''">
            and FIND_IN_SET(#{upperlOrderId, jdbcType=BIGINT}, pids)
        </if>
        <if test="belowlOrderId != null and belowlOrderId != ''">
            and FIND_IN_SET(id, #{belowlOrderId, jdbcType=VARCHAR})
        </if>
        <if test="ownOrderId != null and ownOrderId != ''">
            and id != #{ownOrderId, jdbcType=BIGINT}
        </if>
        <if test="allOrderId != null and allOrderId != ''">
            and (
            FIND_IN_SET(#{plOrderIds, jdbcType=BIGINT}
            , pids)
            or FIND_IN_SET(id
            , #{currentlOrderId, jdbcType=VARCHAR})
            )
        </if>
        <if test="checkEntId != null and checkEntId != ''">
            and id in (select l_order_id from kwt_logistics_order_unit where unit_type = 1
            and top_ent_id = #{checkEntId, jdbcType=BIGINT})
        </if>
    </select>

    <select id="selectOrderCountByOrderId" resultType="com.sckw.transport.model.dto.LogisticsOrderDto">
        SELECT a.id as lOrderId,
        a.l_order_no as lOrderNo,
        b.`status` as `status`,
        a.t_order_id as tOrderId,
        a.t_order_no as tOrderNo,
        a.payment as payment,
        a.amount,
        a.price,
        a.loss,
        a.goods_price as goodsPrice,
        c.firm_name as comanyName,
        c.contacts,
        c.phone,
        a.create_by as createBy,
        a.create_time as createTime
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id AND c.unit_type = #{type}
        WHERE a.del_flag = '0'
        AND b.del_flag = '0'
        AND a.t_order_id = #{id,jdbcType=VARCHAR}
    </select>
    <select id="getAddressList" resultType="java.lang.Integer">
        SELECT a.city_code
        FROM kwt_logistics_order_address a
        LEFT JOIN kwt_logistics_order b ON a.l_order_id = b.id
        where a.city_code is not null
        AND b.ent_id = #{entId}
        GROUP BY a.city_code
    </select>
    <select id="selectMaxLevel" resultType="java.lang.Integer">
        SELECT MAX(LEVEL)
        FROM kwt_logistics_order
        WHERE del_flag = 0
        AND FIND_IN_SET(#{id}, pids)
    </select>

    <select id="countAmountByTradeOrderId" resultType="java.util.Map">
        SELECT IFNULL(SUM(unload_amount), 0) AS unloadAmount,
        IFNULL(SUM(load_amount), 0) AS loadAmount,
        IFNULL(SUM(total_load_amount), 0) AS totalLoadAmount,
        IFNULL(SUM(total_unload_amount), 0) AS totalUnloadAmount
        FROM kwt_logistics_order
        WHERE del_flag = 0
        AND t_order_id = #{tOrderId}
        AND `status` IN (
        8
        )
    </select>

    <select id="selectOrderListByIdsAndUnitType" resultType="com.sckw.transport.model.dto.LogisticsOrderDto">
        SELECT a.id as lOrderId,
        a.l_order_no as lOrderNo,
        b.`status` as `status`,
        a.t_order_id as tOrderId,
        a.t_order_no as tOrderNo,
        a.payment as payment,
        a.amount,
        a.price,
        a.loss,
        a.goods_price as goodsPrice,
        c.firm_name as companyName,
        c.contacts,
        c.phone,
        a.create_by as createBy,
        a.create_time as createTime
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id and a.`status` = b.`status`
        LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id AND c.unit_type = #{type}
        WHERE a.del_flag = '0'
        AND b.del_flag = '0'
        AND a.t_order_id IN
        <foreach collection="ids" item="item" open="(" close=")" separator=",">
            #{item}
        </foreach>
        order by createTime desc
    </select>

    <select id="selectLoopOrderAndDriverListByOrderId" resultType="com.sckw.transport.model.vo.DriverListVo">
        SELECT a.id AS lOrderId,
        a.l_order_no AS lOrderNo,
        c.driver_id AS driverId,
        c.id AS circulateId,
        c.driver_name AS driverName,
        c.driver_phone AS driverPhone,
        c.driver_idcard AS driverIdCard,
        c.truck_no AS truckNo,
        c.truck_id AS truckId,
        c.total_take as count,
        c.status as status
        FROM
        kwt_logistics_order_circulate c, kwt_logistics_order a
        <where>
            a.id = c.l_order_id
            AND c.type = '2'
            AND c.`status` = '0'
            AND a.del_flag = 0
            AND c.del_flag = 0
            <if test="driverParam.lOrderId != null and driverParam.lOrderId != ''">
                AND a.id =#{driverParam.lOrderId}
            </if>
            <if test="driverParam.driverName != null and driverParam.driverName != '' or (driverParam.driverPhone != null and driverParam.driverPhone != '') or (driverParam.truckNo != null and driverParam.truckNo != '')">
                <!--                and (-->
                <if test="driverParam.driverName != null and driverParam.driverName != ''">
                    and c.driver_name like concat('%'
                    , #{driverParam.driverName}
                    , '%')
                </if>
                <if test="driverParam.driverPhone != null and driverParam.driverPhone != ''">
                    and c.driver_phone like concat('%'
                    , #{driverParam.driverPhone}
                    , '%')
                </if>
                <if test="driverParam.truckNo != null and driverParam.truckNo != ''">
                    and c.truck_no like concat('%'
                    , #{driverParam.truckNo}
                    , '%')
                </if>
                <!--                )-->
            </if>
        </where>
    </select>

    <select id="selectLoopOrderAndDriverListByOrderIds" resultType="com.sckw.transport.model.vo.DriverListVo">
        SELECT c.id AS circulateId,
        c.driver_id AS driverId,
        b.id AS lOrderId,
        b.l_order_no AS lOrderNo,
        c.driver_name AS driverName,
        c.driver_phone AS driverPhone,
        c.driver_idcard AS driverIdCard,
        c.truck_no AS truckNo,
        c.truck_id AS truckId,
        c.total_take AS count
        FROM
        kwt_logistics_order_circulate c
        LEFT JOIN kwt_logistics_order b
        ON b.id = c.l_order_id
        WHERE
        b.del_flag = 0
        AND c.del_flag = 0
        AND c.STATUS = 0
        <if test="idsList != null and idsList.size() > 0">
            AND b.id IN
            <foreach collection="idsList" item="item" open="(" close=")" separator=",">
                #{item}
            </foreach>
        </if>
    </select>

    <sql id="Query_Column_List">
        a.id                  AS lOrderId,
        a.l_order_no          AS lOrderNo,
        a.t_order_id          AS tOrderId,
        a.t_order_no          AS tOrderNo,
        a.loss                AS loss,
        a.loss_unit           AS lossUnit,
        a.settlement_cycle    AS accountsCycle,
        a.billing_mode        AS billingMode,
        a.amount              AS carryingCapacity,
        a.goods_price         AS goodsPrice,
        a.goods_price_unit    AS goodsPriceUnit,
        a.`status`            AS status,
        a.settlement_cycle    AS settlementCycle,
        a.price               AS price,
        a.price_type          AS priceType,
        a.type                AS orderSource,
        a.unit                AS unit,
        a.subcontract_amount  AS subcontractAmount,
        a.entrust_amount      AS entrustAmount,
        a.unload_amount       AS unloadAmount,
        a.load_amount         AS loadAmount,
        a.ignore_amount       AS ignoreAmount,
        a.deficit_amount      AS deficitAmount,
        a.deficit_price       AS deficitPrice,
        a.total_load_amount   AS totalLoadAmount,
        a.total_unload_amount AS totalUnloadAmount,
        a.payment             AS payment,
        a.tax_rate            AS taxRate,
        a.ent_id              AS entId,
        a.create_by           AS createBy,
        a.create_time         AS createTime,
        a.update_by           AS updateBy,
        a.update_time         AS updateTime,
        a.start_time          AS shipmentsDateTime,
        a.end_time            AS receiveGoodsDateTime,
        a.remark              AS remark,
        g.goods_id            AS goodsId,
        g.goods_name          AS goodsName,
        g.goods_type          AS goodsType,
        f.contract_id         AS contractId,
        f.contract_no         AS contractNo,
        f.signing_way         AS signing,
        d.ent_id              AS consignCompanyId,
        d.top_ent_id          AS consignTopEntId,
        d.firm_name           AS consignCompany,
        d.contacts            AS consignContacts,
        d.contacts_id         AS consignContactsId,
        e.contacts_id         AS carrierContactsId,
        d.phone               AS consignPhone,
        e.ent_id              AS carrierCompanyId,
        e.firm_name           AS carrierCompany,
        e.top_ent_id          AS carrierTopEntId,
        e.contacts            AS carrierContacts,
        e.phone               AS carrierPhone,
        b.`name`              AS loadName,
        b.address_type        AS loadType,
        b.city_name           AS loadCityName,
        b.city_code           AS loadCityCode,
        b.detail_address      AS loadAddress,
        b.contacts            AS shipmentsContacts,
        b.phone               AS shipmentsPhone,
        b.lat                 AS loadLat,
        b.lng                 AS loadLng,
        c.name                AS unloadName,
        c.address_type        AS unloadType,
        c.contacts            AS receiveGoodsContacts,
        c.phone               AS receiveGoodsPhone,
        c.city_name           AS unloadCityName,
        c.city_code           AS unloadCityCode,
        c.detail_address      AS unloadAddress,
        c.lat                 AS unloadLat,
        c.lng                 AS unloadLng,
        f.contract_name       as contract
                ,
        a.del_flag            as delFlag
    </sql>

    <sql id="Query_Column_List_v42">
        distinct a.id                  AS lOrderId,
                 a.l_order_no          AS lOrderNo,
                 a.t_order_id          AS tOrderId,
                 a.t_order_no          AS tOrderNo,
                 a.loss                AS loss,
                 a.loss_unit           AS lossUnit,
                 a.settlement_cycle    AS accountsCycle,
                 a.billing_mode        AS billingMode,
                 a.amount              AS carryingCapacity,
                 a.goods_price         AS goodsPrice,
                 a.goods_price_unit    AS goodsPriceUnit,
                 a.`status`            AS status,
                 a.settlement_cycle    AS settlementCycle,
                 a.price               AS price,
                 a.price_type          AS priceType,
                 a.type                AS orderSource,
                 a.unit                AS unit,
                 a.subcontract_amount  AS subcontractAmount,
                 a.entrust_amount      AS entrustAmount,
                 a.unload_amount       AS unloadAmount,
                 a.load_amount         AS loadAmount,
                 a.ignore_amount       AS ignoreAmount,
                 a.deficit_amount      AS deficitAmount,
                 a.deficit_price       AS deficitPrice,
                 a.total_load_amount   AS totalLoadAmount,
                 a.total_unload_amount AS totalUnloadAmount,
                 a.payment             AS payment,
                 a.tax_rate            AS taxRate,
                 a.ent_id              AS entId,
                 a.create_by           AS createBy,
                 a.create_time         AS createTime,
                 a.update_by           AS updateBy,
                 a.update_time         AS updateTime,
                 a.start_time          AS shipmentsDateTime,
                 a.end_time            AS receiveGoodsDateTime,
                 a.remark              AS remark,
                 g.goods_id            AS goodsId,
                 g.goods_name          AS goodsName,
                 g.goods_type          AS goodsType,
                 f.contract_id         AS contractId,
                 f.contract_no         AS contractNo,
                 f.signing_way         AS signing,
                 d.ent_id              AS consignCompanyId,
                 d.top_ent_id          AS consignTopEntId,
                 d.firm_name           AS consignCompany,
                 d.contacts            AS consignContacts,
                 d.contacts_id         AS consignContactsId,
                 e.contacts_id         AS carrierContactsId,
                 d.phone               AS consignPhone,
                 e.ent_id              AS carrierCompanyId,
                 e.firm_name           AS carrierCompany,
                 e.top_ent_id          AS carrierTopEntId,
                 e.contacts            AS carrierContacts,
                 e.phone               AS carrierPhone,
                 f.contract_name       as contract,
                 a.del_flag            as delFlag
    </sql>

    <sql id="Query_Column_List_Accept_Carriage">
        DISTINCT a.id                                                AS lOrderId,
                 a.l_order_no                                        AS lOrderNo,
                 a.t_order_id                                        AS tOrderId,
                 a.t_order_no                                        AS tOrderNo,
                 a.loss                                              AS loss,
                 a.loss_unit                                         AS lossUnit,
                 a.settlement_cycle                                  AS accountsCycle,
                 a.billing_mode                                      AS billingMode,
                 a.amount                                            AS carryingCapacity,
                 a.goods_price                                       AS goodsPrice,
                 a.goods_price_unit                                  AS goodsPriceUnit,
                 a.`status`                                          AS status,
                 a.settlement_cycle                                  AS settlementCycle,
                 a.price                                             AS price,
                 a.price_type                                        AS priceType,
                 a.type                                              AS orderSource,
                 a.unit                                              AS unit,
                 a.subcontract_amount                                AS subcontractAmount,
                 a.entrust_amount                                    AS entrustAmount,
                 a.unload_amount                                     AS unloadAmount,
                 a.load_amount                                       AS loadAmount,
                 a.ignore_amount                                     AS ignoreAmount,
                 a.deficit_amount                                    AS deficitAmount,
                 a.deficit_price                                     AS deficitPrice,
                 a.total_load_amount                                 AS totalLoadAmount,
                 a.total_unload_amount                               AS totalUnloadAmount,
                 a.payment                                           AS payment,
                 a.tax_rate                                          AS taxRate,
                 a.ent_id                                            AS entId,
                 a.create_by                                         AS createBy,
                 a.create_time                                       AS createTime,
                 a.update_by                                         AS updateBy,
                 a.update_time                                       AS updateTime,
                 a.start_time                                        AS shipmentsDateTime,
                 a.end_time                                          AS receiveGoodsDateTime,
                 a.remark                                            AS remark,
                 g.goods_id                                          AS goodsId,
                 g.goods_name                                        AS goodsName,
                 g.goods_type                                        AS goodsType,
                 f.contract_id                                       AS contractId,
                 f.contract_no                                       AS contractNo,
                 f.signing_way                                       AS signing,
                 d.ent_id                                            AS consignCompanyId,
                 d.top_ent_id                                        AS consignTopEntId,
                 d.firm_name                                         AS consignCompany,
                 d.contacts                                          AS consignContacts,
                 d.contacts_id                                       AS consignContactsId,
                 e.contacts_id                                       AS carrierContactsId,
                 d.phone                                             AS consignPhone,
                 e.ent_id                                            AS carrierCompanyId,
                 e.firm_name                                         AS carrierCompany,
                 e.top_ent_id                                        AS carrierTopEntId,
                 e.contacts                                          AS carrierContacts,
                 e.phone                                             AS carrierPhone,
                 f.contract_name                                     as contract,
                 a.del_flag                                          as delFlag,
                 case when a.ent_id = e.top_ent_id then 1 ELSE 2 end as createType
    </sql>

    <sql id="Query_Column_List_Accept_Carriage_v42">
        a.id                                                AS lOrderId,
        a.l_order_no                                        AS lOrderNo,
        a.t_order_id                                        AS tOrderId,
        a.t_order_no                                        AS tOrderNo,
        a.loss                                              AS loss,
        a.loss_unit                                         AS lossUnit,
        a.settlement_cycle                                  AS accountsCycle,
        a.billing_mode                                      AS billingMode,
        a.amount                                            AS carryingCapacity,
        a.goods_price                                       AS goodsPrice,
        a.goods_price_unit                                  AS goodsPriceUnit,
        a.`status`                                          AS status,
        a.settlement_cycle                                  AS settlementCycle,
        a.price                                             AS price,
        a.price_type                                        AS priceType,
        a.type                                              AS orderSource,
        a.unit                                              AS unit,
        a.subcontract_amount                                AS subcontractAmount,
        a.entrust_amount                                    AS entrustAmount,
        a.unload_amount                                     AS unloadAmount,
        a.load_amount                                       AS loadAmount,
        a.ignore_amount                                     AS ignoreAmount,
        a.deficit_amount                                    AS deficitAmount,
        a.deficit_price                                     AS deficitPrice,
        a.total_load_amount                                 AS totalLoadAmount,
        a.total_unload_amount                               AS totalUnloadAmount,
        a.payment                                           AS payment,
        a.tax_rate                                          AS taxRate,
        a.ent_id                                            AS entId,
        a.create_by                                         AS createBy,
        a.create_time                                       AS createTime,
        a.update_by                                         AS updateBy,
        a.update_time                                       AS updateTime,
        a.start_time                                        AS shipmentsDateTime,
        a.end_time                                          AS receiveGoodsDateTime,
        a.remark                                            AS remark,
        g.goods_id                                          AS goodsId,
        g.goods_name                                        AS goodsName,
        g.goods_type                                        AS goodsType,
        f.contract_id                                       AS contractId,
        f.contract_no                                       AS contractNo,
        f.signing_way                                       AS signing,
        d.ent_id                                            AS consignCompanyId,
        d.top_ent_id                                        AS consignTopEntId,
        d.firm_name                                         AS consignCompany,
        d.contacts                                          AS consignContacts,
        d.contacts_id                                       AS consignContactsId,
        e.contacts_id                                       AS carrierContactsId,
        d.phone                                             AS consignPhone,
        e.ent_id                                            AS carrierCompanyId,
        e.firm_name                                         AS carrierCompany,
        e.top_ent_id                                        AS carrierTopEntId,
        e.contacts                                          AS carrierContacts,
        e.phone                                             AS carrierPhone,
        f.contract_name                                     as contract,
        a.del_flag                                          as delFlag,
        case when a.ent_id = e.top_ent_id then 1 ELSE 2 end as createType
    </sql>

    <sql id="Query_Column_List_Cogsign">
        distinct a.id                                                AS lOrderId,
                 a.l_order_no                                        AS lOrderNo,
                 a.t_order_id                                        AS tOrderId,
                 a.t_order_no                                        AS tOrderNo,
                 a.loss                                              AS loss,
                 a.loss_unit                                         AS lossUnit,
                 a.settlement_cycle                                  AS accountsCycle,
                 a.billing_mode                                      AS billingMode,
                 a.amount                                            AS carryingCapacity,
                 a.goods_price                                       AS goodsPrice,
                 a.goods_price_unit                                  AS goodsPriceUnit,
                 a.`status`                                          AS status,
                 a.settlement_cycle                                  AS settlementCycle,
                 a.price                                             AS price,
                 a.price_type                                        AS priceType,
                 a.type                                              AS orderSource,
                 a.unit                                              AS unit,
                 a.subcontract_amount                                AS subcontractAmount,
                 a.entrust_amount                                    AS entrustAmount,
                 a.unload_amount                                     AS unloadAmount,
                 a.load_amount                                       AS loadAmount,
                 a.ignore_amount                                     AS ignoreAmount,
                 a.deficit_amount                                    AS deficitAmount,
                 a.deficit_price                                     AS deficitPrice,
                 a.total_load_amount                                 AS totalLoadAmount,
                 a.total_unload_amount                               AS totalUnloadAmount,
                 a.payment                                           AS payment,
                 a.tax_rate                                          AS taxRate,
                 a.ent_id                                            AS entId,
                 a.create_by                                         AS createBy,
                 a.create_time                                       AS createTime,
                 a.update_by                                         AS updateBy,
                 a.update_time                                       AS updateTime,
                 a.start_time                                        AS shipmentsDateTime,
                 a.end_time                                          AS receiveGoodsDateTime,
                 a.remark                                            AS remark,
                 g.goods_id                                          AS goodsId,
                 g.goods_name                                        AS goodsName,
                 g.goods_type                                        AS goodsType,
                 f.contract_id                                       AS contractId,
                 f.contract_no                                       AS contractNo,
                 f.signing_way                                       AS signing,
                 d.ent_id                                            AS consignCompanyId,
                 d.top_ent_id                                        AS consignTopEntId,
                 d.firm_name                                         AS consignCompany,
                 d.contacts                                          AS consignContacts,
                 d.contacts_id                                       AS consignContactsId,
                 e.contacts_id                                       AS carrierContactsId,
                 d.phone                                             AS consignPhone,
                 e.ent_id                                            AS carrierCompanyId,
                 e.firm_name                                         AS carrierCompany,
                 e.top_ent_id                                        AS carrierTopEntId,
                 e.contacts                                          AS carrierContacts,
                 e.phone                                             AS carrierPhone,
                 f.contract_name                                     as contract,
                 a.del_flag                                          as delFlag,
                 case when a.ent_id = d.top_ent_id then 1 ELSE 2 end as createType
    </sql>

    <sql id="New_Query_Column_List">
        lOrderId,
        lOrderNo,
        tOrderId,
        tOrderNo,
        loss,
        lossUnit,
        accountsCycle,
        billingMode,
        carryingCapacity,
        goodsPrice,
        goodsPriceUnit,
        STATUS,
        settlementCycle,
        price,
        priceType,
        orderSource,
        unit,
        subcontractAmount,
        entrustAmount,
        unloadAmount,
        loadAmount,
        ignoreAmount,
        deficitAmount,
        deficitPrice,
        totalLoadAmount,
        totalUnloadAmount,
        payment,
        taxRate,
        entId,
        createBy,
        createTime,
        updateBy,
        updateTime,
        shipmentsDateTime,
        receiveGoodsDateTime,
        remark,
        goodsId,
        goodsName,
        goodsType,
        contractId,
        contractNo,
        signing,
        consignCompanyId,
        consignTopEntId,
        consignCompany,
        consignContacts,
        consignPhone,
        carrierCompanyId,
        carrierCompany,
        carrierTopEntId,
        carrierContacts,
        carrierPhone,
        loadName,
        loadType,
        loadCityName,
        loadCityCode,
        loadAddress,
        shipmentsContacts,
        shipmentsPhone,
        loadLat,
        loadLng,
        unloadName,
        unloadType,
        receiveGoodsContacts,
        receiveGoodsPhone,
        unloadCityName,
        unloadCityCode,
        unloadAddress,
        unloadLat,
        unloadLng,
        contract,
        createType
    </sql>
    <sql id="New_Query_Column_List_v42">
        lOrderId,
        lOrderNo,
        tOrderId,
        tOrderNo,
        loss,
        lossUnit,
        accountsCycle,
        billingMode,
        carryingCapacity,
        goodsPrice,
        goodsPriceUnit,
        STATUS,
        settlementCycle,
        price,
        priceType,
        orderSource,
        unit,
        subcontractAmount,
        entrustAmount,
        unloadAmount,
        loadAmount,
        ignoreAmount,
        deficitAmount,
        deficitPrice,
        totalLoadAmount,
        totalUnloadAmount,
        payment,
        taxRate,
        entId,
        createBy,
        createTime,
        updateBy,
        updateTime,
        shipmentsDateTime,
        receiveGoodsDateTime,
        remark,
        goodsId,
        goodsName,
        goodsType,
        contractId,
        contractNo,
        signing,
        consignCompanyId,
        consignTopEntId,
        consignCompany,
        consignContacts,
        consignPhone,
        carrierCompanyId,
        carrierCompany,
        carrierTopEntId,
        carrierContacts,
        carrierPhone shipmentsContacts,
        contract,
        createType,
        carrierPhone
    </sql>

    <select id="selectLogisticsOrderList" resultType="com.sckw.transport.model.vo.AcceptCarriageOrderVO">
        SELECT
        <include refid="Query_Column_List">
        </include>
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_address b ON a.id = b.l_order_id
            AND b.address_type = 1 AND b.del_flag = 0
                 LEFT JOIN kwt_logistics_order_address c ON a.id = c.l_order_id
            AND c.address_type = 2 AND c.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
            AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
            AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <if test="type == 1">
                <!--                and (d.top_ent_id = #{entId} or d.ent_id = #{entId})-->
                AND ((
                        a.ent_id = #{entId}
                <if test="userIds != null and userIds.size() > 0">
                    AND a.create_by IN
                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                        #{item}
                    </foreach>
                </if>
                )
                    OR (
                        d.top_ent_id = #{entId}
                <if test="contactsIds != null and contactsIds.size() > 0">
                    AND d.contacts_id IN
                    <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                        #{item}
                    </foreach>
                </if>
                ))
            </if>
            <if test="type == 2">
                <!--                and (e.top_ent_id = #{entId} or e.ent_id = #{entId})-->
                AND ((
                        a.ent_id = #{entId}
                <if test="userIds != null and userIds.size() > 0">
                    AND a.create_by IN
                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                        #{item}
                    </foreach>
                </if>
                )
                    OR (
                        e.top_ent_id = #{entId}
                <if test="contactsIds != null and contactsIds.size() > 0">
                    AND e.contacts_id IN
                    <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                        #{item}
                    </foreach>
                </if>
                ))
            </if>
            <if test="query.keywords != null and query.keywords != ''">
                and (
                            a.t_order_no like concat('%', #{query.keywords}, '%')
                        or a.l_order_no like concat('%', #{query.keywords}, '%')
                        or d.firm_name like concat('%', #{query.keywords}, '%')
                        or e.firm_name like concat('%', #{query.keywords}, '%')
                        or g.goods_name like concat('%', #{query.keywords}, '%'))
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="idsList != null and idsList.size() > 0">
                and a.id in
                <foreach collection="idsList" close=")" open="(" separator="," item="item">
                    #{item}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE(a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE(a.end_time) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE(a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE(a.start_time) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;= #{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;= #{query.createEndTime}
            </if>
            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                and b.city_code = #{query.loadAddressCode}
            </if>
            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                and c.city_code = #{query.unloadAddressCode}
            </if>
            <if test="query.billingMode != null and query.billingMode != ''">
                and a.billing_mode = #{query.billingMode}
            </if>
        </where>
        ORDER BY a.create_time DESC
        <!--               ,a.create_time-->
    </select>


    <select id="selectManagementLogisticsOrderList" resultType="com.sckw.transport.model.vo.ManagementLogisticsOrderVO">
        SELECT
        <!--        <include refid="Query_Column_List">-->
        <!--        </include>-->
        <include refid="Query_Column_List_v42">
        </include>
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_address b ON a.id = b.l_order_id
            AND b.address_type = 1 AND b.del_flag = 0
                 LEFT JOIN kwt_logistics_order_address c ON a.id = c.l_order_id
            AND c.address_type = 2 AND c.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
            AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
            AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <if test="authEntIdList != null and authEntIdList.size() != 0">
                and a.ent_id in
                <foreach collection="authEntIdList" item="item" open="(" close=")" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="query.keywords != null and query.keywords != ''">
                and (
                            a.t_order_no like concat('%', #{query.keywords}, '%')
                        or a.l_order_no like concat('%', #{query.keywords}, '%')
                        or d.firm_name like concat('%', #{query.keywords}, '%')
                        or e.firm_name like concat('%', #{query.keywords}, '%')
                        or g.goods_name like concat('%', #{query.keywords}, '%'))
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="idsList != null and idsList.size > 0">
                and a.id in
                <foreach collection="idsList" item="item" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE(a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE(a.end_time) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE(a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE(a.start_time) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;= #{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;= #{query.createEndTime}
            </if>
            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                and b.city_code LIKE CONCAT(#{query.loadAddressCode}
                    , '%')
            </if>
            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                and c.city_code LIKE CONCAT(#{query.unloadAddressCode}
                    , '%')
            </if>
            <if test="query.billingMode != null and query.billingMode != ''">
                and a.billing_mode = #{query.billingMode}
            </if>
        </where>
        ORDER BY a.create_time DESC
        <!--               ,a.create_time-->
    </select>

    <select id="countLogisticsOrderListByStatus" resultType="com.sckw.mongo.model.TableTops">
        SELECT a.`status`        AS value,
               COUNT(a.`status`) AS total
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_address b
                           ON a.id = b.l_order_id
                               AND b.address_type = 1 AND b.del_flag = 0
                 LEFT JOIN kwt_logistics_order_address c ON a.id = c.l_order_id
            AND c.address_type = 2 AND c.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
            AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
            AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <if test="type == 1">
                <!--                and (d.top_ent_id = #{entId} or d.ent_id = #{entId})-->
                AND ((
                        a.ent_id = #{entId}
                <if test="userIds != null and userIds.size() > 0">
                    AND a.create_by IN
                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                        #{item}
                    </foreach>
                </if>
                )
                    OR (
                        d.top_ent_id = #{entId}
                <if test="contactsIds != null and contactsIds.size() > 0">
                    AND d.contacts_id IN
                    <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                        #{item}
                    </foreach>
                </if>
                ))
            </if>
            <if test="type == 2">
                <!--                and (e.top_ent_id = #{entId} or e.ent_id = #{entId})-->
                AND ((
                        a.ent_id = #{entId}
                <if test="userIds != null and userIds.size() > 0">
                    AND a.create_by IN
                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                        #{item}
                    </foreach>
                </if>
                )
                    OR (
                        e.top_ent_id = #{entId}
                <if test="contactsIds != null and contactsIds.size() > 0">
                    AND e.contacts_id IN
                    <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                        #{item}
                    </foreach>
                </if>
                ))
            </if>
            <if test="query.keywords != null and query.keywords != ''">
                and (
                            a.t_order_no like concat('%'
                            , #{query.keywords}
                            , '%')
                        or a.l_order_no like concat('%'
                        , #{query.keywords}
                        , '%')
                        or d.firm_name like concat('%'
                        , #{query.keywords}
                        , '%')
                        or e.firm_name like concat('%'
                        , #{query.keywords}
                        , '%')
                        or g.goods_name like concat('%'
                        , #{query.keywords}
                        , '%'))
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="idsList != null and idsList.size() > 0">
                and a.id in
                <foreach collection="idsList" item="item" open="(" close=")" separator=",">
                    #{item}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE(a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE(a.end_time) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE(a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE(a.start_time) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;= #{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;= #{query.createEndTime}
            </if>
            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                and b.city_code = #{query.loadAddressCode}
            </if>
            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                and c.city_code = #{query.unloadAddressCode}
            </if>
        </where>
        group by a.status
    </select>

    <select id="countManagementLogisticsOrderListByStatus" resultType="com.sckw.mongo.model.TableTops">
        SELECT a.`status` AS value ,
        COUNT(a.`status`) AS total
        FROM
        kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_address b
        ON a.id = b.l_order_id
        AND b.address_type = 1 AND b.del_flag = 0
        LEFT JOIN kwt_logistics_order_address c ON a.id = c.l_order_id
        AND c.address_type = 2 AND c.del_flag = 0
        LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
        AND d.unit_type = 1 AND d.del_flag = 0
        LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
        AND e.unit_type = 2
        LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
        LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <if test="authEntIdList != null and authEntIdList.size() != 0">
                and a.ent_id in
                <foreach collection="authEntIdList" separator="," close=")" open="(" item="item">
                    #{item}
                </foreach>
            </if>
            <if test="query.keywords != null and query.keywords != ''">
                and (
                a.t_order_no like concat('%'
                , #{query.keywords}
                , '%')
                or a.l_order_no like concat('%'
                , #{query.keywords}
                , '%')
                or d.firm_name like concat('%'
                , #{query.keywords}
                , '%')
                or e.firm_name like concat('%'
                , #{query.keywords}
                , '%')
                or g.goods_name like concat('%'
                , #{query.keywords}
                , '%'))
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE ( a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE ( a.end_time ) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE ( a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE ( a.start_time ) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;=#{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;=#{query.createEndTime}
            </if>
            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                and b.city_code LIKE CONCAT(#{query.loadAddressCode}
                , '%')
            </if>
            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                and c.city_code LIKE CONCAT(#{query.unloadAddressCode}
                , '%')
            </if>
            <if test="query.billingMode != null and query.billingMode != ''">
                and a.billing_mode = #{query.billingMode}
            </if>
        </where>
        group by a.status
    </select>
    <select id="selectCountByLorderId" resultType="java.lang.Integer">
        SELECT COUNT(id)
        FROM kwt_waybill_order
        WHERE del_flag = 0
        and l_order_id = #{orderId}
        <if test="orderStatusList != null and orderStatusList.size() > 0">
            AND status IN
            <foreach collection="orderStatusList" item="item" open="(" close=")" separator=",">
                #{item}
            </foreach>
        </if>
    </select>
    <select id="getMaxOrderNoByDate" resultType="java.lang.String">
        SELECT MAX(l_order_no)
        FROM kwt_logistics_order
        WHERE create_time &gt;= #{date};
    </select>
    <select id="checkLogisticsOrderIsFinishByEntId" resultType="java.lang.String">
        SELECT a.l_order_no
        FROM kwt_logistics_order a
        INNER JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
        AND a.del_flag = 0
        AND b.del_flag = 0
        AND b.unit_type = 1
        INNER JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id
        AND a.del_flag = 0
        AND c.del_flag = 0
        AND c.unit_type = 2
        <where>
            <if test="consignEntId != null and consignEntId != ''">
                and b.top_ent_id = #{consignEntId}
            </if>
            <if test="acceptCarriageEntId != null and acceptCarriageEntId != ''">
                and c.top_ent_id = #{acceptCarriageEntId}
            </if>
            <if test="orderStatus != null and orderStatus.size() > 0">
                and a.status in
                <foreach collection="orderStatus" separator="," open="(" item="item" close=")">
                    #{item}
                </foreach>
            </if>
        </where>
    </select>

    <select id="selectLogisticsOrderListExport"
            resultType="com.sckw.transport.model.vo.execlVo.AcceptCarriageOrderExcelVo">
        SELECT
        <include refid="Query_Column_List">
        </include>
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_address b ON a.id = b.l_order_id
            AND b.address_type = 1 AND b.del_flag = 0
                 LEFT JOIN kwt_logistics_order_address c ON a.id = c.l_order_id
            AND c.address_type = 2 AND c.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
            AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
            AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <if test="type == 1">
                and (d.top_ent_id = #{entId} or d.ent_id = #{entId})
            </if>
            <if test="type == 2">
                and (e.top_ent_id = #{entId} or e.ent_id = #{entId})
            </if>
            <if test="query.keywords != null and query.keywords != ''">
                and (
                            a.t_order_no like concat('%', #{query.keywords}, '%')
                        or a.l_order_no like concat('%', #{query.keywords}, '%')
                        or d.firm_name like concat('%', #{query.keywords}, '%')
                        or e.firm_name like concat('%', #{query.keywords}, '%')
                        or g.goods_name like concat('%', #{query.keywords}, '%'))
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE(a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE(a.end_time) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE(a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE(a.start_time) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;= #{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;= #{query.createEndTime}
            </if>
            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                and b.city_code = #{query.loadAddressCode}
            </if>
            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                and c.city_code = #{query.unloadAddressCode}
            </if>
            <if test="query.billingMode != null and query.billingMode != ''">
                and a.billing_mode = #{query.billingMode}
            </if>
        </where>
        ORDER BY a.id DESC
        <!--               ,a.create_time-->
    </select>

    <select id="selectConsignLogisticsOrderList" resultType="com.sckw.transport.model.vo.ConsignOrderVO">
        SELECT
        <include refid="Query_Column_List">
        </include>
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_address b ON a.id = b.l_order_id
            AND b.address_type = 1 AND b.del_flag = 0
                 LEFT JOIN kwt_logistics_order_address c ON a.id = c.l_order_id
            AND c.address_type = 2 AND c.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
            AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
            AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <if test="type == 1">
                <!--                and (d.top_ent_id = #{entId} or d.ent_id = #{entId})-->
                AND ((
                        a.ent_id = #{entId}
                <if test="userIds != null and userIds.size() > 0">
                    AND a.create_by IN
                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                        #{item}
                    </foreach>
                </if>
                )
                    OR (
                        d.top_ent_id = #{entId}
                <if test="contactsIds != null and contactsIds.size() > 0">
                    AND d.contacts_id IN
                    <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                        #{item}
                    </foreach>
                </if>
                ))
            </if>
            <if test="type == 2">
                <!--                and (e.top_ent_id = #{entId} or e.ent_id = #{entId})-->
                AND ((
                        a.ent_id = #{entId}
                <if test="userIds != null and userIds.size() > 0">
                    AND a.create_by IN
                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                        #{item}
                    </foreach>
                </if>
                )
                    OR (
                        e.top_ent_id = #{entId}
                <if test="contactsIds != null and contactsIds.size() > 0">
                    AND e.contacts_id IN
                    <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                        #{item}
                    </foreach>
                </if>
                ))
            </if>
            <if test="query.keywords != null and query.keywords != ''">
                and (
                            a.t_order_no like concat('%', #{query.keywords}, '%')
                        or a.l_order_no like concat('%', #{query.keywords}, '%')
                        or d.firm_name like concat('%', #{query.keywords}, '%')
                        or e.firm_name like concat('%', #{query.keywords}, '%')
                        or g.goods_name like concat('%', #{query.keywords}, '%'))
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="idsList != null and idsList.size() > 0">
                and a.status in
                <foreach collection="idsList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE(a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE(a.end_time) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE(a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE(a.start_time) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;= #{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;= #{query.createEndTime}
            </if>
            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                and b.city_code = #{query.loadAddressCode}
            </if>
            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                and c.city_code = #{query.unloadAddressCode}
            </if>
            <if test="query.billingMode != null and query.billingMode != ''">
                and a.billing_mode = #{query.billingMode}
            </if>
        </where>
        ORDER BY a.id DESC
        <!--               ,a.create_time-->
    </select>

    <select id="statisticsWaybillSendCar" resultType="java.lang.Integer">
        SELECT COUNT(b.id)
        FROM kwt_waybill_order b
        LEFT JOIN kwt_logistics_order a ON a.id = b.l_order_id
        WHERE a.del_flag = 0
        AND b.del_flag = 0
        <if test="ids != null and ids.size() > 0">
            and a.id in
            <foreach collection="ids" open="(" close=")" separator="," item="item">
                #{item}
            </foreach>
        </if>
        <if test="orderList != null and orderList.size() > 0">
            and b.status in
            <foreach collection="orderList" item="item" separator="," close=")" open="(">
                #{item}
            </foreach>
        </if>
    </select>

    <select id="countDispatchedWaybillsByTradeOrderId" resultType="java.lang.Long">
        SELECT COUNT(1)
        FROM kwt_logistics_order lo
                 INNER JOIN kwt_waybill_order wo ON wo.l_order_id = lo.id AND wo.del_flag = 0
        WHERE lo.t_order_id = #{tOrderId}
          AND lo.del_flag = 0
          AND wo.status &lt;&gt; 99
    </select>

    <select id="sumCompletedWaybillVolumeByTimeRange" resultType="java.math.BigDecimal">
        SELECT COALESCE(SUM(
        <choose>
            <when test="chargeType == 1">
                wos.load_amount
            </when>
            <when test="chargeType == 2">
                wos.unload_amount
            </when>
            <otherwise>
                0
            </otherwise>
        </choose>
        ), 0)
        FROM kwt_logistics_order lo
                 INNER JOIN kwt_waybill_order wo ON wo.l_order_id = lo.id AND wo.del_flag = 0
                 INNER JOIN kwt_waybill_order_subtask wos ON wos.w_order_id = wo.id AND wos.del_flag = 0
        WHERE lo.t_order_id = #{tOrderId}
          AND lo.del_flag = 0
          AND wo.status = 25
        <if test="chargeType == 1">
          AND wos.load_amount IS NOT NULL
        </if>
        <if test="chargeType == 2">
          AND wos.unload_amount IS NOT NULL
        </if>
        <if test="chargeType == null or (chargeType != 1 and chargeType != 2)">
          AND 1 = 0
        </if>
        <if test="startTime != null and endTime != null">
          AND wo.update_time <![CDATA[ >= ]]> #{startTime}
          AND wo.update_time <![CDATA[ < ]]> #{endTime}
        </if>
    </select>

    <select id="statisticsLogistics" resultType="java.lang.Long">
        SELECT DISTINCT a.id
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON b.l_order_id = a.id
        WHERE a.del_flag = 0
        AND b.del_flag = 0
        <if test="topEntId != null and topEntId != ''">
            AND (b.ent_id = #{topEntId} OR b.top_ent_id = #{topEntId})
        </if>
    </select>

    <select id="statisticsLogisticsByTopEntIdAndOrderStatus" resultType="java.lang.Integer">
        SELECT count(DISTINCT a.id)
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON b.l_order_id = a.id
        WHERE a.del_flag = 0
        AND b.del_flag = 0
        <if test="topEntId != null and topEntId != ''">
            AND (b.ent_id = #{topEntId} OR b.top_ent_id = #{topEntId})
        </if>
        AND b.unit_type = #{unitType}
        <if test="enterpriseIds != null and enterpriseIds.size() != 0">
            and a.ent_id in
            <foreach collection="enterpriseIds" separator="," close=")" open="(" item="item">
                #{item}
            </foreach>
        </if>
        And a.status in
        <foreach collection="orderList" open="(" close=")" separator="," item="item">
            #{item}
        </foreach>
    </select>

    <select id="selectAcceptCarriageFinishOrder" resultType="com.sckw.transport.model.vo.StatisticsByOrderVO">
        SELECT IFNULL(SUM(t1.waitingAmount), 0) AS waitingAmount,
        count(1) AS amount,
        IFNULL(SUM(t1.entrustAmount), 0) AS entrustAmount,
        IFNULL(SUM(t1.subcontractAmount), 0) AS subcontractAmount,
        IFNULL(SUM(t1.totalPrice), 0) AS totalPrice
        FROM
        (
        SELECT
        <!--        ( a.amount - IFNULL(a.total_load_amount,0)) AS waitingAmount,-->
        CASE when a.STATUS in (0,1,2,3) THEN 1 else 0 END waitingAmount,
        a.amount,
        a.entrust_amount AS entrustAmount,
        a.subcontract_amount AS subcontractAmount,
        a.price,
        case when a.billing_mode = '3' then IFNULL( a.price, 0 ) else a.amount * IFNULL( a.price, 0 ) end AS totalPrice
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
        AND a.del_flag = 0
        AND b.del_flag = 0
        WHERE b.unit_type = #{unitType}
        <if test="topId != null and topId != ''">
            and b.top_ent_id = #{topId}
        </if>
        <if test="statusList != null and statusList.size() > 0">
            and a.`status` IN
            <foreach collection="statusList" item="item" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="dateStart != null and dateStart != ''">
            and a.create_time &gt;= #{dateStart,jdbcType=TIMESTAMP}
        </if>
        <if test="dateEnd != null and dateEnd != ''">
            and a.create_time &lt;= #{dateEnd,jdbcType=TIMESTAMP}
        </if>
        ) t1
    </select>

    <select id="selectStatisticsByOrder" resultType="com.sckw.transport.model.vo.StatisticsByOrderVO">
        SELECT IFNULL(SUM(t1.WaitingAmount), 0) AS WaitingAmount,
        count(1) AS amount,
        IFNULL(SUM(t1.entrustAmount), 0) AS entrustAmount,
        IFNULL(SUM(t1.subcontractAmount), 0) AS subcontractAmount,
        IFNULL(SUM(t1.totalPrice), 0) AS totalPrice
        FROM
        (
        SELECT CASE when a.STATUS in (0,1,2,3) THEN 1 else 0 END waitingAmount,
        <!--        ( a.amount - a.entrust_amount - a.subcontract_amount ) AS WaitingAmount,-->
        a.amount,
        a.entrust_amount AS entrustAmount,
        a.subcontract_amount AS subcontractAmount,
        a.price,
        case when a.billing_mode = '3' then IFNULL( a.price, 0 ) else a.amount * IFNULL( a.price, 0 ) end AS totalPrice
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
        AND a.del_flag = 0
        AND b.del_flag = 0
        WHERE b.unit_type = #{unitType}
        <if test="topId != null and topId != ''">
            and b.top_ent_id = #{topId}
        </if>
        <if test="statusList != null and statusList.size() > 0">
            and a.`status` IN
            <foreach collection="statusList" item="item" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="dateStart != null and dateStart != ''">
            and a.create_time &gt;= #{dateStart,jdbcType=TIMESTAMP}
        </if>
        <if test="dateEnd != null and dateEnd != ''">
            and a.create_time &lt;= #{dateEnd,jdbcType=TIMESTAMP}
        </if>
        ) t1
    </select>

    <select id="selectAcceptCarriageAwaitFinishOrder" resultType="com.sckw.transport.model.vo.StatisticsByOrderVO">
        SELECT IFNULL(SUM(t1.WaitingAmount), 0) AS WaitingAmount,
        count(1) AS amount,
        IFNULL(SUM(t1.entrustAmount), 0) AS entrustAmount,
        IFNULL(SUM(t1.subcontractAmount), 0) AS subcontractAmount,
        IFNULL(SUM(t1.totalPrice), 0) AS totalPrice
        FROM
        (
        SELECT CASE when a.STATUS in (0,1,2,3) THEN 1 else 0 END waitingAmount,
        a.amount,
        a.entrust_amount AS entrustAmount,
        a.subcontract_amount AS subcontractAmount,
        a.price,
        case when a.billing_mode = '3' then IFNULL( a.price, 0 ) else a.amount * IFNULL( a.price, 0 ) end AS totalPrice
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
        AND a.del_flag = 0
        AND b.del_flag = 0
        WHERE b.unit_type = #{unitType}
        <if test="topId != null and topId != ''">
            and b.top_ent_id = #{topId}
        </if>
        <if test="statusList != null and statusList.size() > 0">
            and a.`status` IN
            <foreach collection="statusList" item="item" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        <if test="dateStart != null and dateStart != ''">
            and a.create_time &gt;= #{dateStart,jdbcType=TIMESTAMP}
        </if>
        <if test="dateEnd != null and dateEnd != ''">
            and a.create_time &lt;= #{dateEnd,jdbcType=TIMESTAMP}
        </if>
        ) t1
    </select>

    <select id="workbenchLogisticsOrderStatisticsByMonth"
            resultType="com.sckw.transport.model.vo.LogisticsOrderStatisticsVO">
        SELECT A.date_time as dateTime,
        COALESCE(B.num, 0) as num,
        IFNULL(B.typeOne, 0) AS typeOne,
        IFNULL(B.typeTwo, 0) AS typeTwo FROM
        (SELECT DATE_FORMAT(DATE_ADD(#{dateStart}, INTERVAL ROW1 MONTH ), '%Y-%m') date_time
        FROM (SELECT @ROW := @ROW +1 as ROW1
        FROM
        (select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union
        all select 6 union all select 7 union all select 8 union all select 9) t, (select 0 union all select 1 union all
        select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union
        all select 8 union all select 9) t2, (select 0 union all select 1 union all select 2 union all select 3 union
        all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t3,
        (select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union
        all select 6 union all select 7 union all select 8 union all select 9) t4, (SELECT @row := -1) r) se
        WHERE DATE_FORMAT(date_add(#{dateStart}, INTERVAL ROW1 MONTH ), '%Y-%m') &lt;= DATE_FORMAT(
        #{dateEnd},
        '%Y-%m')) A
        LEFT JOIN
        (
        SELECT DATE_FORMAT(a.create_time, '%Y-%m') date_time,
        COUNT(*) num,
        CASE
        WHEN #{typeOne} = 1 THEN
        sum(a.amount)
        WHEN #{typeOne} = 2 THEN
        sum(a.amount * IFNULL(a.price, 0))
        ELSE 0 end AS typeOne,
        CASE
        WHEN #{typeTwo} = 2 THEN
        sum(a.amount * IFNULL(a.price, 0))
        WHEN #{typeTwo} = 1 THEN
        sum(a.amount)
        ELSE 0 end AS typeTwo
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
        WHERE a.del_flag = 0
        <if test="id != null">
            AND b.top_ent_id =#{id}
        </if>
        AND b.unit_type = #{type}
        <if test="statusList != null and statusList.size() > 0">
            and a.status in
            <foreach collection="statusList" close=")" open="(" separator="," item="item">
                #{item}
            </foreach>
        </if>
        GROUP BY DATE_FORMAT(a.create_time, '%Y-%m')
        ) B
        ON A.date_time = B.date_time
    </select>

    <select id="workbenchLogisticsOrderStatisticsByDays"
            resultType="com.sckw.transport.model.vo.LogisticsOrderStatisticsVO">
        SELECT A.date as dateTime,
        COALESCE(B.num, 0) as num,
        IFNULL(B.typeOne, 0) AS typeOne,
        IFNULL(B.typeTwo, 0) AS typeTwo FROM
        (select date_add(#{dateStart}, interval row1 DAY) date
        from
        (
        SELECT @row := @row + 1 as row1 FROM
        (select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union
        all select 6 union all select 7 union all select 8 union all select 9) t, (select 0 union all select 1 union all
        select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union
        all select 8 union all select 9) t2, (select 0 union all select 1 union all select 2 union all select 3 union
        all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t3,
        (select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union
        all select 6 union all select 7 union all select 8 union all select 9) t4, (SELECT @row := -1) r
        ) se
        where date_add(#{dateStart}
        , interval row1 DAY) &lt;= #{dateEnd}) A
        LEFT JOIN
        (
        SELECT COUNT(*) num,
        CASE
        WHEN #{typeOne} = 1 THEN
        sum(a.amount)
        WHEN #{typeOne} = 2 THEN
        sum(a.amount * IFNULL(a.price, 0))
        ELSE 0 end AS typeOne,
        CASE
        WHEN #{typeTwo} = 2 THEN
        sum(a.amount * IFNULL(a.price, 0))
        WHEN #{typeTwo} = 1 THEN
        sum(a.amount)
        ELSE 0 end AS typeTwo,
        DATE_FORMAT(a.create_time, '%Y-%m-%d') date_time
        FROM kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit b ON a.id = b.l_order_id
        WHERE a.del_flag = 0
        <if test="id != null">
            AND b.top_ent_id =#{id}
        </if>
        AND b.unit_type = b.unit_type = #{type}
        <if test="statusList != null and statusList.size() > 0">
            and a.status in
            <foreach collection="statusList" close=")" open="(" separator="," item="item">
                #{item}
            </foreach>
        </if>
        GROUP BY DATE_FORMAT(a.create_time, '%Y-%m-%d')
        ) B
        ON A.date = B.date_time;
    </select>

    <select id="selectLogisticsOrderListByAcceptCarriage"
            resultType="com.sckw.transport.model.vo.AcceptCarriageOrderVO">
        SELECT
        <include refid="New_Query_Column_List_v42">
        </include>
        FROM (
        SELECT
        <include refid="Query_Column_List_Accept_Carriage_v42">
        </include>
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
              and f.del_flag = 0
            <if test="query.keywords != null and query.keywords != ''">
                and (
                            a.t_order_no like concat('%', #{query.keywords}, '%')
                        or a.l_order_no like concat('%', #{query.keywords}, '%')
                        or d.firm_name like concat('%', #{query.keywords}, '%')
                        or e.firm_name like concat('%', #{query.keywords}, '%')
                        or g.goods_name like concat('%', #{query.keywords}, '%')
                    )
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="idsList != null and idsList.size() > 0">
                and a.id in
                <foreach collection="idsList" close=")" open="(" separator="," item="item">
                    #{item}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE(a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE(a.end_time) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE(a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE(a.start_time) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;= #{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;= #{query.createEndTime}
            </if>
            <if test="(query.loadAddressCode != null and query.loadAddressCode != '') or (query.unloadAddressCode != null and query.unloadAddressCode != '')">
                and a.id in (
                SELECT DISTINCT l_order_id
                from kwt_logistics_order_address where del_flag = 0
                <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                    and address_type = 1
                    and left(city_code, #{query.loadAddressLevel, jdbcType=INTEGER}) =
                        left(#{query.loadAddressCode, jdbcType=INTEGER}, #{query.loadAddressLevel, jdbcType=INTEGER})
                </if>
                <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                    and address_type = 2
                    and left(city_code, #{query.unloadAddressLevel, jdbcType=INTEGER}) =
                        left(#{query.unloadAddressCode, jdbcType=INTEGER},
                             #{query.unloadAddressLevel, jdbcType=INTEGER})
                </if>
                )
            </if>
            <if test="query.billingMode != null and query.billingMode != ''">
                and a.billing_mode = #{query.billingMode}
            </if>
        </where>
        ORDER BY a.create_time DESC
        ) tab
        <where>
            tab.delFlag = 0
              AND ((
                    tab.createType = 1
            <if test="entId != null">
                and tab.entId = #{entId}
            </if>
            <if test="userIds != null and userIds.size() > 0">
                AND tab.createBy IN
                <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            )
                OR (
                    tab.carrierTopEntId = #{entId}
            <if test="contactsIds != null and contactsIds.size() > 0">
                AND tab.carrierContactsId IN
                <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                    #{item}
                </foreach>
            </if>
            ))
        </where>
    </select>

    <select id="selectLogisticsOrderListByConsign" resultType="com.sckw.transport.model.vo.AcceptCarriageOrderVO">
        SELECT
        <include refid="New_Query_Column_List_v42">
        </include>
        FROM (
        SELECT
        <include refid="Query_Column_List_Cogsign">
        </include>
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <if test="query.keywords != null and query.keywords != ''">
                and (
                            a.t_order_no like concat('%', #{query.keywords}, '%')
                        or a.l_order_no like concat('%', #{query.keywords}, '%')
                        or d.firm_name like concat('%', #{query.keywords}, '%')
                        or e.firm_name like concat('%', #{query.keywords}, '%')
                        or g.goods_name like concat('%', #{query.keywords}, '%'))
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="idsList != null and idsList.size() > 0">
                and a.id in
                <foreach collection="idsList" close=")" open="(" separator="," item="item">
                    #{item}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE(a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE(a.end_time) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE(a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE(a.start_time) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;= #{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;= #{query.createEndTime}
            </if>
            <if test="(query.loadAddressCode != null and query.loadAddressCode != '') or (query.unloadAddressCode != null and query.unloadAddressCode != '')">
                and a.id in (
                SELECT DISTINCT l_order_id
                from kwt_logistics_order_address where del_flag = 0
                <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                    and address_type = 1
                    and left(city_code, #{query.loadAddressLevel, jdbcType=INTEGER}) =
                        left(#{query.loadAddressCode, jdbcType=INTEGER}, #{query.loadAddressLevel, jdbcType=INTEGER})
                </if>
                <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                    and address_type = 2
                    and left(city_code, #{query.unloadAddressLevel, jdbcType=INTEGER}) =
                        left(#{query.unloadAddressCode, jdbcType=INTEGER},
                             #{query.unloadAddressLevel, jdbcType=INTEGER})
                </if>
                )
            </if>
            <if test="query.billingMode != null and query.billingMode != ''">
                and a.billing_mode = #{query.billingMode}
            </if>
        </where>
        ORDER BY a.create_time DESC
        ) tab
        <where>
            tab.delFlag = 0
              AND (
            (
                    tab.createType = 1 and tab.entId = #{entId}
            <if test="userIds != null and userIds.size() > 0">
                AND tab.createBy IN
                <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            )
                OR (
                    tab.consignTopEntId = #{entId}
            <if test="contactsIds != null and contactsIds.size() > 0">
                AND tab.consignContactsId IN
                <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                    #{item}
                </foreach>
            </if>
            )
                )
        </where>
        ORDER BY tab.createTime DESC
    </select>

    <select id="countLogisticsOrderListByConsignStatus" resultType="com.sckw.mongo.model.TableTops">
        select status        AS value,
               COUNT(status) AS total
        FROM (
        SELECT
        <include refid="Query_Column_List_Cogsign">
        </include>
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <if test="query.keywords != null and query.keywords != ''">
                and (
                            a.t_order_no like concat('%', #{query.keywords}, '%')
                        or a.l_order_no like concat('%', #{query.keywords}, '%')
                        or d.firm_name like concat('%', #{query.keywords}, '%')
                        or e.firm_name like concat('%', #{query.keywords}, '%')
                        or g.goods_name like concat('%', #{query.keywords}, '%'))
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="idsList != null and idsList.size() > 0">
                and a.id in
                <foreach collection="idsList" close=")" open="(" separator="," item="item">
                    #{item}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE(a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE(a.end_time) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE(a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE(a.start_time) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;= #{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;= #{query.createEndTime}
            </if>
            <if test="(query.loadAddressCode != null and query.loadAddressCode != '') or (query.unloadAddressCode != null and query.unloadAddressCode != '')">
                and a.id in (
                SELECT DISTINCT l_order_id
                from kwt_logistics_order_address where del_flag = 0
                <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                    and address_type = 1
                    and left(city_code, #{query.loadAddressLevel, jdbcType=INTEGER}) =
                        left(#{query.loadAddressCode, jdbcType=INTEGER}, #{query.loadAddressLevel, jdbcType=INTEGER})
                </if>
                <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                    and address_type = 2
                    and left(city_code, #{query.unloadAddressLevel, jdbcType=INTEGER}) =
                        left(#{query.unloadAddressCode, jdbcType=INTEGER},
                             #{query.unloadAddressLevel, jdbcType=INTEGER})
                </if>
                )
            </if>
            <if test="query.billingMode != null and query.billingMode != ''">
                and a.billing_mode = #{query.billingMode}
            </if>
        </where>
        ORDER BY a.create_time DESC
        ) tab
        <where>
            tab.delFlag = 0
              AND ((
                    tab.createType = 1
                and tab.entId = #{entId}
            <if test="userIds != null and userIds.size() > 0">
                AND tab.createBy IN
                <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            )
                OR (
                    tab.consignTopEntId = #{entId}
            <if test="contactsIds != null and contactsIds.size() > 0">
                AND tab.consignContactsId IN
                <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                    #{item}
                </foreach>
            </if>
            ))
        </where>
        group by status
    </select>

    <select id="countLogisticsOrderListByAcceptCarriageStatus" resultType="com.sckw.mongo.model.TableTops">
        SELECT status        as value,
               COUNT(status) AS total
        FROM (
        SELECT
        <include refid="Query_Column_List_Accept_Carriage">
        </include>
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <if test="query.keywords != null and query.keywords != ''">
                and (
                            a.t_order_no like concat('%', #{query.keywords}, '%')
                        or a.l_order_no like concat('%', #{query.keywords}, '%')
                        or d.firm_name like concat('%', #{query.keywords}, '%')
                        or e.firm_name like concat('%', #{query.keywords}, '%')
                        or g.goods_name like concat('%', #{query.keywords}, '%'))
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="idsList != null and idsList.size() > 0">
                and a.id in
                <foreach collection="idsList" close=")" open="(" separator="," item="item">
                    #{item}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE(a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE(a.end_time) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE(a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE(a.start_time) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;= #{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;= #{query.createEndTime}
            </if>
            <if test="(query.loadAddressCode != null and query.loadAddressCode != '') or (query.unloadAddressCode != null and query.unloadAddressCode != '')">
                and a.id in (
                SELECT DISTINCT l_order_id
                from kwt_logistics_order_address where del_flag = 0
                <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                    and address_type = 1
                    and left(city_code, #{query.loadAddressLevel, jdbcType=INTEGER}) =
                        left(#{query.loadAddressCode, jdbcType=INTEGER}, #{query.loadAddressLevel, jdbcType=INTEGER})
                </if>
                <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                    and address_type = 2
                    and left(city_code, #{query.unloadAddressLevel, jdbcType=INTEGER}) =
                        left(#{query.unloadAddressCode, jdbcType=INTEGER},
                             #{query.unloadAddressLevel, jdbcType=INTEGER})
                </if>
                )
            </if>
            <if test="query.billingMode != null and query.billingMode != ''">
                and a.billing_mode = #{query.billingMode}
            </if>
        </where>
        ORDER BY a.create_time DESC
        ) tab
        <where>
            tab.delFlag = 0
              AND ((
                    tab.createType = 1
                and tab.entId = #{entId}
            <if test="userIds != null and userIds.size() > 0">
                AND tab.createBy IN
                <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            )
                OR (
                    tab.carrierTopEntId = #{entId}
            <if test="contactsIds != null and contactsIds.size() > 0">
                AND tab.carrierContactsId IN
                <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                    #{item}
                </foreach>
            </if>
            ))
        </where>
        group by status
    </select>

    <select id="selectConsignLogisticsOrderListByConsign" resultType="com.sckw.transport.model.vo.ConsignOrderVO">
        SELECT
        <include refid="New_Query_Column_List">
        </include>
        FROM (
        SELECT
        <include refid="Query_Column_List_Cogsign">
        </include>
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_address b ON a.id = b.l_order_id
            AND b.address_type = 1 AND b.del_flag = 0
                 LEFT JOIN kwt_logistics_order_address c ON a.id = c.l_order_id
            AND c.address_type = 2 AND c.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
            AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
            AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
        <where>
            a.del_flag = 0
            <if test="query.keywords != null and query.keywords != ''">
                and (
                            a.t_order_no like concat('%', #{query.keywords}, '%')
                        or a.l_order_no like concat('%', #{query.keywords}, '%')
                        or d.firm_name like concat('%', #{query.keywords}, '%')
                        or e.firm_name like concat('%', #{query.keywords}, '%')
                        or g.goods_name like concat('%', #{query.keywords}, '%'))
            </if>
            <if test="orderList != null and orderList.size() > 0">
                and a.status in
                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
                    #{status}
                </foreach>
            </if>
            <if test="idsList != null and idsList.size() > 0">
                and a.id in
                <foreach collection="idsList" close=")" open="(" separator="," item="item">
                    #{item}
                </foreach>
            </if>
            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
                and DATE(a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
            </if>
            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
                and DATE(a.end_time) <![CDATA[ <= ]]> #{query.endOverDateTime}
            </if>
            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
                and DATE(a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
            </if>
            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
                and DATE(a.start_time) <![CDATA[ <= ]]> #{query.startOverDateTime}
            </if>
            <if test="query.createStartTime != null and query.createStartTime != ''">
                and a.create_time &gt;= #{query.createStartTime}
            </if>
            <if test="query.createEndTime != null and query.createEndTime != ''">
                and a.create_time &lt;= #{query.createEndTime}
            </if>
            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                <!--                and b.city_code = #{query.loadAddressCode}-->
                and b.city_code LIKE CONCAT(#{query.loadAddressCode}
                    , '%')
            </if>
            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
                <!--                and c.city_code = #{query.unloadAddressCode}-->
                and c.city_code LIKE CONCAT(#{query.unloadAddressCode}
                    , '%')
            </if>
            <if test="query.billingMode != null and query.billingMode != ''">
                and a.billing_mode = #{query.billingMode}
            </if>
        </where>
        ORDER BY a.create_time DESC
        ) tab
        <where>
            tab.delFlag = 0
              AND ((
                    tab.createType = 1
                and tab.entId = #{entId}
            <if test="userIds != null and userIds.size() > 0">
                AND tab.createBy IN
                <foreach collection="userIds" open="(" close=")" item="item" separator=",">
                    #{item}
                </foreach>
            </if>
            )
                OR (
                    tab.consignTopEntId = #{entId}
            <if test="contactsIds != null and contactsIds.size() > 0">
                AND tab.consignContactsId IN
                <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
                    #{item}
                </foreach>
            </if>
            ))
        </where>
        ORDER BY tab.createTime DESC
    </select>

    <select id="findLogisticsOrderCount" resultType="com.sckw.transport.model.vo.LogisticsCountVo"
            parameterType="java.util.Map">
        SELECT IFNULL(sum(load_amount), 0.0) loadAmount,
        IFNULL(sum(unload_amount), 0.0) unloadAmount,
        IFNULL(sum(total_load_amount), 0.0) totalLoadAmount,
        IFNULL(sum(total_unload_amount), 0.0) totalUnloadAmount
        from kwt_logistics_order where del_flag = 0
        <if test="tOrderId != null and tOrderId != ''">
            and t_order_id = #{tOrderId, jdbcType=BIGINT}
        </if>
        <if test="lOrderId != null and lOrderId != ''">
            and id = #{lOrderId, jdbcType=BIGINT}
        </if>
        <if test="level != null and level != ''">
            and pid is null
        </if>
        <if test="finishedStatus != null and finishedStatus != ''">
            and status in (4, 5, 6)
        </if>
        <if test="status != null and status != ''">
            and status = #{lOrderId, jdbcType=INTEGER}
        </if>
        <if test="upperlOrderId != null and upperlOrderId != ''">
            and FIND_IN_SET(#{upperlOrderId, jdbcType=BIGINT}, pids)
        </if>
        <if test="belowlOrderId != null and belowlOrderId != ''">
            and FIND_IN_SET(id, #{belowlOrderId, jdbcType=VARCHAR})
        </if>
    </select>

    <select id="selectData" resultType="com.sckw.transport.api.model.dto.McpLogisticsOrderVo">
        select a.id                                  as lOrderId,
               a.t_order_id                          AS tOrderId,
               a.l_order_no                          AS lOrderNo,
               a.t_order_no                          AS tOrderNo,
               a.amount,
               a.`status`                            AS status,
               d.firm_name                           as tyFirmName,
               e.firm_name                           as cyFirmName,
               a.start_time,
               a.end_time,
               g.goods_name,
               g.goods_id,
               ifnull(a.amount * a.price, 0)         as money,
               ifnull(a.amount * a.unload_amount, 0) as pay,
               a.load_amount,
               a.unload_amount,
               a.price,
               a.billing_mode,
               a.create_time
        FROM kwt_logistics_order a
                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
            AND d.unit_type = 1 AND d.del_flag = 0
                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
            AND e.unit_type = 2
                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0

        <where>
            a.del_flag = 0
            <if test="para.startTime != null and para.endTime != null">
                and a.create_time between #{para.startTime,jdbcType=TIMESTAMP} and #{para.endTime,jdbcType=TIMESTAMP}
            </if>
            <if test="para.orderNo != null and para.orderNo != ''">
                and a.t_order_no = #{para.orderNo}
            </if>
            <if test="para.logisticsOrderNo != null and para.logisticsOrderNo != ''">
                and a.l_order_no = #{para.logisticsOrderNo}
            </if>
            <if test="para.entId != null and para.entId.size() > 0">
                <if test="para.type != null and para.type == 3">
                    and
                        e.ent_id in
                    <foreach collection="para.entId" item="item" open="(" close=")" separator=",">
                        #{item}
                    </foreach>
                </if>
                <if test="para.type != null">
                    <if test="para.type == 1 or para.type == 2">
                        and d.ent_id in
                        <foreach collection="para.entId" item="item" open="(" close=")" separator=",">
                            #{item}
                        </foreach>
                    </if>
                </if>
            </if>
            limit 10
        </where>
    </select>
    <select id="selectBase" resultType="com.sckw.transport.api.model.LogisticsBaseOrderVo">
        select count(1)                                   as count,
               d.firm_name                                as tyFirmName,
               e.firm_name                                as cyFirmName,
               sum(ifnull(a.amount * a.price, 0))         as money,
               sum(ifnull(a.amount * a.unload_amount, 0)) as pay,
               sum(a.amount),
               sum(a.load_amount),
               sum(a.unload_amount)
        FROM kwt_logistics_order a
                 inner JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
            AND d.unit_type = 1 AND d.del_flag = 0
                 inner JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
            AND e.unit_type = 2

        <where>
            a.del_flag = 0
            <if test="para.entId != null and para.entId.size() > 0">
                <if test="para.type != null and para.type == 3">
                    and
                        e.ent_id in
                    <foreach collection="para.entId" item="item" open="(" close=")" separator=",">
                        #{item}
                    </foreach>
                </if>
                <if test="para.type != null">
                    <if test="para.type == 1 or para.type == 2">
                        and d.ent_id in
                        <foreach collection="para.entId" item="item" open="(" close=")" separator=",">
                            #{item}
                        </foreach>
                    </if>
                </if>
            </if>
            group by d.ent_id, e.ent_id,d.firm_name, e.firm_name
        </where>
    </select>

    <select id="queryCount" resultType="java.lang.Long">
        select count(1)
        from kwt_logistics_order a
        LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
        AND d.unit_type = 1 AND d.del_flag = 0
        <where>
            a.del_flag = 0
              and a.status = 20
            <if test="ids != null and ids.size() != 0">
                and d.ent_id in
                <foreach collection="ids" item="item" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </if>
        </where>
    </select>


</mapper>
