<?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="cn.iocoder.yudao.module.wealth.dal.mysql.receivable.ReceivableMapper"> <select id="getCostDetailPage" resultType="cn.iocoder.yudao.module.wealth.vo.receivable.CostDetailPageVO"> SELECT o.order_no, o.transport_id, o.channel_id, o.status, de.departure_warehouse_id, ob.objective_warehouse_id, dew.title_zh departure_warehouse_zh, dew.title_en departure_warehouse_en, obw.title_zh objective_warehouse_zh, obw.title_en objective_warehouse_en, obw.guojia destination_country, obw.shi destination_city, usu.username AS updater, asu.username AS approver, ra.update_time AS approverTime, r.* FROM ecw_receivable r LEFT JOIN ecw_order o ON o.order_id = r.order_id LEFT JOIN ecw_order_departure de ON de.order_id = o.order_id LEFT JOIN ecw_order_objective ob ON ob.order_id = o.order_id LEFT JOIN ecw_warehouse dew ON de.departure_warehouse_id = dew.id LEFT JOIN ecw_warehouse obw ON ob.objective_warehouse_id = obw.id LEFT JOIN ecw_receipt_approval ra ON ra.receipt_id = r.receipt_id LEFT JOIN system_user usu ON usu.id = r.updater LEFT JOIN system_user asu ON asu.id = ra.updater WHERE r.deleted = 0 <include refid="costDetailPageCondition"/> ORDER BY r.create_time </select> <select id="costDetailSearchAmount" resultType="cn.iocoder.yudao.module.wealth.vo.receivable.WealthMoneyAmountVO"> SELECT r.currency_id, SUM(r.total_amount) AS total_amount, SUM(r.tax_amount) AS tax_amount, SUM(r.discount_total) AS discount_total, SUM(r.write_off_amount) AS write_off_amount FROM ecw_receivable r <if test="(query.transportId != null and query.transportId.size() != 0) or query.shipmentChannel != null or query.status != null"> LEFT JOIN ecw_order o ON o.order_id = r.order_id </if> <if test="query.departureWareHouseId != null"> LEFT JOIN ecw_order_departure de ON de.order_id = r.order_id </if> <if test="query.destCountry != null or query.destCity != null or query.objectiveWareHouseId != null"> LEFT JOIN ecw_order_objective ob ON ob.order_id = r.order_id </if> WHERE r.deleted = 0 <include refid="costDetailPageCondition"/> GROUP BY r.currency_id </select> <sql id="costDetailPageCondition"> <if test="query.orderNo != null and query.orderNo != ''"> AND r.order_no = #{query.orderNo} </if> <if test="query.transportId != null"> <if test="query.transportId.size() == 1"> AND o.transport_id = #{query.transportId[0]} </if> <if test="query.transportId.size() > 1"> AND o.transport_id IN <foreach collection="query.transportId" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.shipmentChannel != null"> <if test="query.shipmentChannel.size() == 1"> AND o.channel_id = #{query.shipmentChannel[0]} </if> <if test="query.shipmentChannel.size() > 1"> AND o.channel_id IN <foreach collection="query.shipmentChannel" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.departureWareHouseId != null"> <if test="query.departureWareHouseId.size() == 1"> AND de.departure_warehouse_id = #{query.departureWareHouseId[0]} </if> <if test="query.departureWareHouseId.size() > 1"> AND de.departure_warehouse_id IN <foreach collection="query.departureWareHouseId" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.destCountry != null"> <if test="query.destCountry.size() == 1"> AND ob.objective_country_id = #{query.destCountry[0]} </if> <if test="query.destCountry.size() > 1"> AND ob.objective_country_id IN <foreach collection="query.destCountry" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.destCity != null"> <if test="query.destCity.size() == 1"> AND ob.objective_id = #{query.destCity[0]} </if> <if test="query.destCity.size() > 1"> AND ob.objective_id IN <foreach collection="query.destCity" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.objectiveWareHouseId != null"> <if test="query.objectiveWareHouseId.size() == 1"> AND ob.objective_warehouse_id = #{query.objectiveWareHouseId[0]} </if> <if test="query.objectiveWareHouseId.size() > 1"> AND ob.objective_warehouse_id IN <foreach collection="query.objectiveWareHouseId" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.title != null and query.title != ''"> AND (r.title_zh LIKE CONCAT('%', #{query.title}, '%') OR r.title_en LIKE CONCAT('%', #{query.title}, '%')) </if> <if test="query.feeSource != null"> <if test="query.feeSource.size() == 1"> AND r.fee_source = #{query.feeSource[0]} </if> <if test="query.feeSource.size() > 1"> AND r.fee_source IN <foreach collection="query.feeSource" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.feeType != null"> <if test="query.feeType.size() == 1"> AND r.fee_type = #{query.feeType[0]} </if> <if test="query.feeType.size() > 1"> AND r.fee_type IN <foreach collection="query.feeType" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.collectionType != null"> <if test="query.collectionType.size() == 1"> AND r.collection_type = #{query.collectionType[0]} </if> <if test="query.collectionType.size() > 1"> AND r.collection_type IN <foreach collection="query.collectionType" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.status != null"> AND o.status = #{query.status} </if> </sql> <select id="receivablePageAmount" resultType="cn.iocoder.yudao.module.wealth.vo.receivable.WealthMoneyAmountVO"> SELECT r.currency_id, SUM(r.total_amount) AS total_amount FROM ecw_receivable r <!--<if test="query.status != null or query.customsType != null or query.transportId != null or query.isCargoControl != null or ( query.marks != null and query.marks != '' ) or ( query.tidanNo != null and query.tidanNo != '' ) or query.customerId != null or query.orderNo != null and query.orderNo != '' or ( query.containerNumber != null and query.containerNumber != '' ) or query.departureId != null or query.objectiveId != null">--> LEFT JOIN ecw_order o ON o.order_id = r.order_id <!--</if>--> <if test="query.departureId != null or query.objectiveId != null"> LEFT JOIN ecw_warehouse_line de ON o.line_id = de.id </if> <if test="query.consignorNameOrPhone != null and query.consignorNameOrPhone != '' "> LEFT JOIN ecw_order_consignor nor ON nor.order_id = r.order_id </if> <if test="query.consigneeNameOrPhone != null and query.consigneeNameOrPhone != '' "> LEFT JOIN ecw_order_consignee nee ON nee.order_id = r.order_id </if> WHERE r.deleted = 0 AND r.receipt_id IS NULL and o.order_id is not null <if test="query.status != null"> AND o.`status` = #{query.status} </if> <if test="query.customsType != null"> AND o.`customs_type` = #{query.customsType} </if> <if test="query.transportId != null"> AND o.`transport_id` = #{query.transportId} </if> <if test="query.isCargoControl != null"> AND o.`is_cargo_control` = #{query.isCargoControl} </if> <if test="query.marks != null and query.marks != ''"> AND o.`marks` like concat("%",concat(#{query.marks},"%")) </if> <if test="query.departureId != null "> AND de.`start_warehouse_id` = #{query.departureId} </if> <if test="query.objectiveId != null "> AND de.`dest_warehouse_id` = #{query.objectiveId} </if> <if test="query.title != null and query.title != '' "> AND concat(r.`title_zh`, r.`title_en`) like concat("%",concat(#{query.title},"%")) </if> <if test="query.consignorNameOrPhone != null and query.consignorNameOrPhone != '' "> AND (nor.`name` like concat("%",#{query.consignorNameOrPhone},"%") or nor.`phone` like concat("%",#{query.consignorNameOrPhone},"%") or nor.`company` like concat("%",#{query.consignorNameOrPhone},"%")) </if> <if test="query.consigneeNameOrPhone != null and query.consigneeNameOrPhone != '' "> AND (nee.`name` like concat("%",#{query.consigneeNameOrPhone},"%") or nee.`phone` like concat("%",#{query.consigneeNameOrPhone},"%") or nee.`company` like concat("%",#{query.consigneeNameOrPhone},"%")) </if> <if test="query.orderNo != null and query.orderNo != '' "> AND r.`order_no` like concat("%",concat(#{query.orderNo},"%")) </if> <if test="query.tidanNo != null and query.tidanNo != '' "> AND o.`tidan_no` like concat("%",concat(#{query.tidanNo},"%")) </if> <if test="query.receiptNo != null and query.receiptNo != '' "> AND r.`receipt_no` like concat("%",concat(#{query.receiptNo},"%")) </if> <if test="query.state != null "> AND r.`state` = #{query.state} </if> <if test="query.beginCreateTime != null and query.endCreateTime != null "> AND r.`create_time` between #{query.beginCreateTime} and #{query.endCreateTime} </if> <if test="query.feeType != null"> AND r.`fee_type` = #{query.feeType} </if> <if test="query.customerId != null"> AND o.`customer_id` = #{query.customerId} </if> <if test="query.containerNumber != null and query.containerNumber != '' "> AND o.`container_number` = #{query.containerNumber} </if> GROUP BY r.currency_id </select> <select id="costDetailAmount" resultType="cn.iocoder.yudao.module.wealth.vo.receivable.WealthMoneyAmountVO"> SELECT r.currency_id, SUM(r.total_amount) AS total_amount, SUM(r.tax_amount) AS tax_amount, SUM(r.discount_total) AS discount_total, SUM(r.write_off_amount) AS write_off_amount FROM ecw_receivable r WHERE r.deleted = 0 GROUP BY r.currency_id </select> <select id="batchGenReceiptPage" resultType="cn.iocoder.yudao.module.wealth.vo.receivable.BatchGenReceiptPageVO"> SELECT r.order_id, r.order_no, e.tidan_no, e.transport_id, e.shipment_state AS selfNoStatus, de.departure_warehouse_id, ob.objective_warehouse_id, e.status AS order_status, e.drawee, nee.customer_id AS consignee_id, nor.customer_id AS consignor_id FROM ecw_receivable r LEFT JOIN ecw_order e ON r.order_id = e.order_id LEFT JOIN ecw_order_consignee nee ON nee.order_id = r.order_id LEFT JOIN ecw_order_consignor nor ON nor.order_id = r.order_id LEFT JOIN ecw_order_departure de ON de.order_id = r.order_id LEFT JOIN ecw_order_objective ob ON ob.order_id = r.order_id WHERE r.deleted = 0 AND r.receipt_id IS NULL <include refid="batchGenReceiptPageCondition"/> GROUP BY r.order_id ORDER BY r.order_id LIMIT #{start}, #{size} </select> <select id="countBatchGenReceiptPage" resultType="java.lang.Integer"> SELECT COUNT(DISTINCT r.order_id) FROM ecw_receivable r LEFT JOIN ecw_order e ON r.order_id = e.order_id <if test="query.consignee != null and query.consignee != ''"> LEFT JOIN ecw_order_consignee nee ON nee.order_id = r.order_id </if> <if test="query.consignor != null and query.consignor != ''"> LEFT JOIN ecw_order_consignor nor ON nor.order_id = r.order_id </if> <if test="query.departureWareHouseId != null"> LEFT JOIN ecw_order_departure de ON de.order_id = r.order_id </if> <if test="query.objectiveWareHouseId != null or query.destCity != null or query.destCountry != null"> LEFT JOIN ecw_order_objective ob ON ob.order_id = r.order_id </if> WHERE r.deleted = 0 AND r.receipt_id IS NULL <include refid="batchGenReceiptPageCondition"/> </select> <select id="calculateReceivableAmountByOrderId" resultType="cn.iocoder.yudao.module.wealth.vo.receiptItem.CurrencyAmount"> SELECT r.currency_id, SUM(r.total_amount) AS amount FROM ecw_receivable r WHERE r.deleted = 0 AND r.order_id = #{orderId} AND r.receipt_id IS NULL GROUP BY r.currency_id </select> <select id="batchGenReceiptReceivablePage" resultType="cn.iocoder.yudao.module.wealth.vo.receivable.BatchGenReceiptReceivablePageVO"> SELECT r.* FROM ecw_receivable r WHERE r.order_id = #{query.orderId} AND r.receipt_id IS NULL AND r.payment_user = #{query.paymentUser} AND r.deleted = 0 <include refid="feeCondition"></include> </select> <select id="batchGenReceiptReceivablAmount" resultType="cn.iocoder.yudao.module.wealth.vo.receiptItem.CurrencyAmount"> SELECT r.currency_id, SUM(r.total_amount) AS amount FROM ecw_receivable r WHERE r.order_id = #{query.orderId} AND r.receipt_id IS NULL AND r.payment_user = #{query.paymentUser} AND r.deleted = 0 <include refid="feeCondition"></include> GROUP BY r.currency_id </select> <sql id="feeCondition"> <if test="query.feeSource != null"> <if test="query.feeSource.size() == 1"> AND r.fee_source = #{query.feeSource[0]} </if> <if test="query.feeSource.size() > 1"> AND r.fee_source IN <foreach collection="query.feeSource" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.feeType != null"> <if test="query.feeType.size() == 1"> AND r.fee_type = #{query.feeType[0]} </if> <if test="query.feeType.size() > 1"> AND r.fee_type IN <foreach collection="query.feeType" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.collectionType != null"> <if test="query.collectionType.size() == 1"> AND r.collection_type = #{query.collectionType[0]} </if> <if test="query.collectionType.size() > 1"> AND r.collection_type IN <foreach collection="query.collectionType" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> </sql> <sql id="batchGenReceiptPageCondition"> <if test="query.orderIds != null"> <if test="query.orderIds.size() == 1"> AND e.order_id = #{query.orderIds[0]} </if> <if test="query.orderIds.size() > 1"> AND e.order_id IN <foreach collection="query.orderIds" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.orderNo != null and query.orderNo != ''"> AND r.order_no = #{query.orderNo} </if> <if test="query.tidanNo != null and query.tidanNo!= ''"> AND e.tidan_no = #{query.tidanNo} </if> <if test="query.transportId != null"> AND e.transport_id = #{query.transportId} </if> <if test="query.departureWareHouseId != null"> <if test="query.departureWareHouseId.size() == 1"> AND de.departure_warehouse_id = #{query.departureWareHouseId[0]} </if> <if test="query.departureWareHouseId.size() > 1"> AND de.departure_warehouse_id IN <foreach collection="query.departureWareHouseId" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.destCountry != null"> <if test="query.destCountry.size() == 1"> AND ob.objective_country_id = #{query.destCountry[0]} </if> <if test="query.destCountry.size() > 1"> AND ob.objective_country_id IN <foreach collection="query.destCountry" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.destCity != null"> <if test="query.destCity.size() == 1"> AND ob.objective_id = #{query.destCity[0]} </if> <if test="query.destCity.size() > 1"> AND ob.objective_id IN <foreach collection="query.destCity" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.objectiveWareHouseId != null"> <if test="query.objectiveWareHouseId.size() == 1"> AND ob.objective_warehouse_id = #{query.objectiveWareHouseId[0]} </if> <if test="query.objectiveWareHouseId.size() > 1"> AND ob.objective_warehouse_id IN <foreach collection="query.objectiveWareHouseId" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </if> <if test="query.consignee != null and query.consignee != ''"> AND nee.name = #{query.consignee} </if> <if test="query.consignor != null and query.consignor != ''"> AND nor.name = #{query.consignor} </if> </sql> <select id="getReceivableBoxPage" resultType="cn.iocoder.yudao.module.wealth.vo.receivable.ReceivableBoxReportPageVO"> SELECT eb.id, eb.self_no, eb.dg_date, eb.orderCount, eb.ladingCount, eb.dest_country_id, ebs.sl_settled_time, ebc.cl_clear_time qg_date, ebcu.ul_warehouse_time FROM ( SELECT box.id id, box.self_no self_no, box.dg_date dg_date, box.dest_country_id dest_country_id, box.start_warehouse_id start_warehouse_id, box.dest_warehouse_id dest_warehouse_id, box.sl_status sl_status, box.shipment_status shipment_status, ifnull( preload.orderCount, 0 ) orderCount, ifnull( lading.ladingCount, 0 ) ladingCount FROM ecw_box box LEFT JOIN ( SELECT shipment_id, COUNT( DISTINCT order_id ) AS orderCount FROM ecw_box_preload_goods WHERE deleted = 0 AND is_remove = 0 GROUP BY shipment_id ) preload ON box.id = preload.shipment_id LEFT JOIN ( SELECT shipment_id, COUNT(*) AS ladingCount FROM ecw_make_bill_of_lading WHERE deleted = 0 AND STATUS = 2 GROUP BY shipment_id ) lading ON box.id = lading.shipment_id WHERE box.deleted = 0 AND box.pr_status > 21 AND box.dest_country_id > 0 <if test="query.beginDaogangTime != null and query.endDaogangTime != null"> AND box.dg_date BETWEEN #{query.beginDaogangTime} AND #{query.endDaogangTime} </if> <if test="query.selfNo != null and query.selfNo != '' "> AND box.self_no LIKE concat('%',#{query.selfNo},'%') </if> <if test="query.selfNoList != null and query.selfNoList.size() > 0"> AND box.self_no IN <foreach collection="query.selfNoList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="query.startWarehouseIdList != null and query.startWarehouseIdList.size() > 0"> AND box.start_warehouse_id IN <foreach collection="query.startWarehouseIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="query.destCountryId != null and query.destCountryId.size() > 0"> AND box.dest_country_id IN <foreach collection="query.destCountryId" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="query.destWarehouseIdList != null and query.destWarehouseIdList.size() > 0"> AND box.dest_warehouse_id IN <foreach collection="query.destWarehouseIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="query.boxStatus != null and query.boxStatus.size() > 0"> AND box.shipment_status IN <foreach collection="query.boxStatus" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> <if test="query.slStatus != null"> AND box.sl_status = #{query.slStatus} </if> ) eb LEFT JOIN ecw_box_cabinet_unload ebcu ON eb.id = ebcu.shipment_id LEFT JOIN ecw_box_settlement ebs ON eb.id = ebs.shipment_id LEFT JOIN ecw_box_clearance ebc ON eb.id = ebc.shipment_id WHERE 1 = 1 <if test="query.beginJsDate != null and query.endJsDate != null"> AND ebs.sl_settled_time BETWEEN #{query.beginJsDate} AND #{query.endJsDate} </if> <if test="query.beginQingguanTime != null and query.endQingguanTime != null"> AND ebc.cl_clear_time BETWEEN #{query.beginQingguanTime} AND #{query.endQingguanTime} </if> <if test="query.beginUlWarehouseTime != null and query.endUlWarehouseTime != null"> AND ebcu.ul_warehouse_time BETWEEN #{query.beginUlWarehouseTime} AND #{query.endUlWarehouseTime} </if> <if test="query.ladingBillStatus != null"> <if test="query.ladingBillStatus == 0"> AND eb.ladingCount = 0 </if> <if test="query.ladingBillStatus == 1"> AND eb.ladingCount > 0 AND eb.ladingCount != eb.orderCount </if> <if test="query.ladingBillStatus == 2"> AND eb.ladingCount > 0 AND eb.ladingCount = eb.orderCount </if> </if> GROUP BY eb.id </select> <select id="getReceivableBoxRelationOrders" resultType="cn.iocoder.yudao.module.wealth.vo.receivable.ReceivebleBoxRelationOrder"> SELECT ebpg.shipment_id, ebpg.order_id, eb.dest_country_id FROM ecw_box_preload_goods ebpg LEFT JOIN ecw_box eb ON ebpg.shipment_id = eb.id WHERE ebpg.is_remove = 0 AND eb.dest_country_id > 0 AND ebpg.shipment_id IN <foreach collection="shipmentIdList" item="item" open="(" separator="," close=")"> #{item} </foreach> GROUP BY ebpg.shipment_id,ebpg.order_id </select> <select id="selectBoxReceivablesByOrderIds" resultType="cn.iocoder.yudao.module.wealth.dal.dataobject.receivable.ReceivableDO"> SELECT id, order_id, currency_id, tax_amount, total_amount, discount_total, fee_type, write_off_amount, dest_country_currency_id, dest_country_rate, dest_country_sub_rate FROM ecw_receivable WHERE order_id IN <foreach collection="orderIds" item="item" open="(" separator="," close=")"> #{item} </foreach> </select> <select id="getAllBoxId" resultType="java.lang.Long"> SELECT id FROM ecw_box WHERE deleted = 0 AND pr_status > 21 AND dest_country_id > 0 </select> <select id="getDestWarehouseIdListByDestCity" resultType="java.lang.Long"> SELECT id FROM ecw_warehouse WHERE deleted = 0 AND shi IN <foreach collection="destCity" item="item" open="(" separator="," close=")"> #{item} </foreach> </select> <select id="receivablePage" resultType="cn.iocoder.yudao.module.wealth.vo.receivable.ReceivableBackVO"> SELECT r.*, o.marks, o.`status`, o.abnormal_state, o.in_warehouse_state, o.shipment_state, o.pick_state, o.to_warehouse_state, o.tidan_no, o.container_number AS container_number, nor.name AS consignor_name, nor.phone AS consignor_phone, nor.customer_id AS consignor_id, nee.name AS consignee_name, nee.customer_id AS consignee_id, nee.phone AS consignee_phone FROM ecw_receivable r LEFT JOIN ecw_order o ON o.order_id = r.order_id LEFT JOIN ecw_warehouse_line de ON o.line_id = de.id LEFT JOIN ecw_order_consignor nor ON nor.order_id = o.order_id LEFT JOIN ecw_order_consignee nee ON nee.order_id = o.order_id WHERE r.deleted = 0 AND r.receipt_id IS NULL <if test="query.status != null"> AND o.`status` = #{query.status} </if> <if test="query.statusList != null and query.statusList.size() > 0"> AND o.`status` IN <foreach collection="query.statusList" item="status" open="(" separator="," close=")"> #{status} </foreach> </if> <if test="query.isCargoControl != null"> AND (o.`is_cargo_control` = #{query.isCargoControl} OR o.`is_cargo_control` = #{query.isCargoControl}) </if> <if test="query.customsType != null"> AND o.`customs_type` = #{query.customsType} </if> <if test="query.customsTypeList != null and query.customsTypeList.size() > 0"> AND o.`customs_type` IN <foreach collection="query.customsTypeList" item="status" open="(" separator="," close=")"> #{status} </foreach> </if> <if test="query.transportId != null"> AND o.`transport_id` = #{query.transportId} </if> <if test="query.transportIdList != null and query.transportIdList.size() > 0"> AND o.`transport_id` IN <foreach collection="query.transportIdList" item="status" open="(" separator="," close=")"> #{status} </foreach> </if> <if test="query.marks != null and query.marks != ''"> AND o.`marks` LIKE CONCAT('%', #{query.marks}, '%') </if> <if test="query.departureId != null"> AND de.`start_warehouse_id` = #{query.departureId} </if> <if test="query.departureIdList != null and query.departureIdList.size() > 0"> AND de.`start_warehouse_id` IN <foreach collection="query.departureIdList" item="status" open="(" separator="," close=")"> #{status} </foreach> </if> <if test="query.objectiveId != null"> AND de.`dest_warehouse_id` = #{query.objectiveId} </if> <if test="query.objectiveIdList != null and query.objectiveIdList.size() > 0"> AND de.`dest_warehouse_id` IN <foreach collection="query.objectiveIdList" item="status" open="(" separator="," close=")"> #{status} </foreach> </if> <if test="query.title != null and query.title != ''"> AND CONCAT(r.`title_zh`, r.`title_en`) LIKE CONCAT('%', #{query.title}, '%') </if> <if test="query.consignorNameOrPhone != null and query.consignorNameOrPhone != ''"> AND CONCAT(nor.`name`, nor.`phone`, nor.`company`) LIKE CONCAT('%', #{query.consignorNameOrPhone}, '%') </if> <if test="query.consigneeNameOrPhone != null and query.consigneeNameOrPhone != ''"> AND CONCAT(nee.`name`, nee.`phone`, nee.`company`) LIKE CONCAT('%', #{query.consigneeNameOrPhone}, '%') </if> <if test="query.orderNo != null and query.orderNo != ''"> AND r.`order_no` LIKE CONCAT('%', #{query.orderNo}, '%') </if> <if test="query.tidanNo != null and query.tidanNo != ''"> AND o.`tidan_no` LIKE CONCAT('%', #{query.tidanNo}, '%') </if> <if test="query.receiptNo != null and query.receiptNo != ''"> AND r.`receipt_no` LIKE CONCAT('%', #{query.receiptNo}, '%') </if> <if test="query.state != null"> AND r.`state` = #{query.state} </if> <if test="query.beginCreateTime != null and query.endCreateTime != null"> AND r.`create_time` BETWEEN #{query.beginCreateTime} AND #{query.endCreateTime} </if> <if test="query.feeType != null"> AND r.`fee_type` = #{query.feeType} </if> <if test="query.feeTypeList != null and query.feeTypeList.size() > 0"> AND r.`fee_type` IN <foreach collection="query.feeTypeList" item="status" open="(" separator="," close=")"> #{status} </foreach> </if> <if test="query.customerId != null"> AND o.`customer_id` = #{query.customerId} </if> <if test="query.containerNumber != null"> AND o.`container_number` = #{query.containerNumber} </if> GROUP BY r.id </select> </mapper>