<?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.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( b.truck_no ) 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'
            AND b.status = 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="selectLogisticOrderList" resultType="com.sckw.transport.api.model.dto.LogisticsOrderDTO">
        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.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_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="selectOrderCountByTorderId" 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="getAddressDetailListByEntId" resultType="com.sckw.transport.api.model.dto.AddressResDTO">
    </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_Accept_Carriage">
        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,
        case when a.ent_id = e.top_ent_id then 1 ELSE 2 end as createType
    </sql>

    <sql id="Query_Column_List_Cogsign">
        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,
        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>

    <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>
        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" 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="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="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}
        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 ,
        IFNULL( SUM( t1.amount ), 0 ) 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 a.status when
        4 then 0
        when 5 then 0
        when 6 then 0
        else ( a.amount - IFNULL(a.total_load_amount,0))
        end waitingAmount,
        a.amount,
        a.entrust_amount AS entrustAmount,
        a.subcontract_amount AS subcontractAmount,
        a.price ,
        a.amount * IFNULL(a.price,0) 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 ,
        IFNULL( SUM( t1.amount ), 0 ) 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
        a.STATUS
        WHEN 4 THEN
        0 ELSE ( a.amount - a.entrust_amount - a.subcontract_amount )
        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 ,
        a.amount * IFNULL(a.price,0) 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 ,
        IFNULL( SUM( t1.amount ), 0 ) 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 - a.entrust_amount - a.subcontract_amount) AS WaitingAmount,
        a.amount,
        a.entrust_amount AS entrustAmount,
        a.subcontract_amount AS subcontractAmount,
        a.price ,
        a.amount * IFNULL(a.price,0) 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 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 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"></include> FROM (
        SELECT
        <include refid="Query_Column_List_Accept_Carriage">
        </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  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
        ) 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>
    </select>
    <select id="selectLogisticsOrderListByConsign" resultType="com.sckw.transport.model.vo.AcceptCarriageOrderVO">
        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 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="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_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>
        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_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 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
        ) 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>

</mapper>