java-retail-app/bd-business/bd-business-sale/src/main/resources/mapper/sale/deliver/SaDeliverItemsMapper.xml

510 lines
22 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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.hzs.sale.deliver.mapper.SaDeliverItemsMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.sale.deliver.SaDeliverItems">
<id column="PK_ID" property="pkId"/>
<result column="PK_DELIVER" property="pkDeliver"/>
<result column="PK_ORDER" property="pkOrder"/>
<result column="PK_ORDER_ITEMS" property="pkOrderItems"/>
<result column="PK_PRODUCT" property="pkProduct"/>
<result column="PK_STOREHOUSE" property="pkStorehouse"/>
<result column="QUANTITY" property="quantity"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="PK_CREATOR" property="pkCreator"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="PK_MODIFIED" property="pkModified"/>
<result column="MODIFIED_TIME" property="modifiedTime"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<result column="PK_WARES_SPECS_SKU" property="pkWaresSpecsSku"/>
<result column="PK_WARES_DETAIL" property="pkWaresDetail"/>
<result column="EXCHANGE_GOODS" property="exchangeGoods"/>
<result column="SPECS_NAME" property="specsName"/>
<result column="SPECS_NAME_ID" property="specsNameId"/>
</resultMap>
<!-- 发货条码数据映射 -->
<resultMap id="deliverBarCodeMap" type="com.hzs.sale.deliver.vo.DeliverBarCodeVO">
<result column="pk_id" property="pkId"/>
<result column="pk_deliver" property="pkDeliver"/>
<result column="pk_order" property="pkOrder"/>
<result column="order_code" property="orderCode"/>
<result column="pk_product" property="pkProduct"/>
<result column="product_name" property="productName"/>
<result column="specs_name" property="specsName"/>
<result column="quantity" property="quantity"/>
<collection property="detailList" ofType="com.hzs.sale.deliver.vo.DeliverBarCodeDetailVO">
<result column="deliver_bar_code_id" property="deliverBarCodeId"/>
<result column="bar_code" property="barCode"/>
</collection>
</resultMap>
<!-- 已合并发货单列表 -->
<select id="queryDeliverHandledList" resultType="com.hzs.sale.deliver.vo.DeliverHandledVO">
<if test="param.pkDeliverList != null and param.pkDeliverList.size > 0">
<foreach collection="param.pkDeliverList" item="item" index="index" separator=" UNION ALL ">
<if test="index % 500 == 0">
select sdi.pk_id,
sdi.pk_deliver,
sdi.pk_order,
sd.deliver_code,
bp.cover,
bp.product_code,
bp.product_name,
bp.shipping_channel,
sdi.SPECS_NAME,
sdi.quantity,
soi.order_status,
so.order_code,
so.order_type,
cm.member_code,
cm.member_name,
cm.phone,
sd.rec_name,
sd.rec_phone,
sd.rec_province,
sd.rec_city,
sd.rec_county,
sd.rec_address,
so.delivery_way,
bwe.operate_scope,
so.tran_type,
bwe.pre_sale_status,
sd.print_status,
sd.logistics_company,
sd.logistics_code,
so.remark,
sd.creation_time,
so.pay_time,
bu.name unit_name,
bs.name storehouseName,
so.system_type,
sd.day_batch,
sd.batch_number,
bv.vertex_name
from SA_DELIVER sd
left join SA_DELIVER_ITEMS sdi on sdi.pk_deliver = sd.pk_id
inner join SA_ORDER so on so.pk_id = sdi.pk_order and so.del_flag = 0
inner join SA_ORDER_ITEMS soi on soi.pk_order = sdi.pk_order and soi.pk_id = sdi.pk_order_items
inner join BD_PRODUCT bp on bp.pk_id = soi.pk_product
left join BD_WARES_EXTEND bwe on bwe.pk_wares = soi.pk_wares
left join bd_unit bu on bu.pk_id = bp.unit
inner join cu_member cm on cm.pk_id = so.pk_member
left join bd_storehouse bs on bs.pk_id = so.pk_storehouse
left join bd_vertex bv on bv.pk_id = cm.pk_vertex
where sd.del_flag = 0
and sd.pk_country = #{pkCountry}
and sdi.del_flag = 0
and sd.pk_id in
<foreach collection="param.pkDeliverList" item="subItem" index="subItem_index" open="(" close=")" separator=",">
<if test="subItem_index gte index and subItem_index lt index + 500">
#{subItem}
</if>
</foreach>
<if test="param.systemAll == null or param.systemAll == 1">
<if test="param.systemType != null">
and so.SYSTEM_TYPE = #{param.systemType}
</if>
</if>
<if test="param.dayBatch != null">
and sd.DAY_BATCH = #{param.dayBatch}
</if>
<if test="param.pkDeliver != null">
and sd.pk_id = #{param.pkDeliver}
</if>
<if test="param.pkStorehouse != null ">
and bs.pk_id = #{param.pkStorehouse}
</if>
<if test="param.pkDeliverItems != null">
and sdi.pk_id = #{param.pkDeliverItems}
</if>
<if test="param.deliverCode != null and param.deliverCode != ''">
and sd.deliver_code like '%' || #{param.deliverCode} || '%'
</if>
<if test="param.orderCode != null and param.orderCode != ''">
and so.order_code like '%' || #{param.orderCode} || '%'
</if>
<if test="param.memberCode != null and param.memberCode != ''">
and cm.member_code like #{param.memberCode} || '%'
</if>
<if test="param.memberName != null and param.memberName != ''">
and cm.member_name like #{param.memberName} || '%'
</if>
<if test="param.phone != null and param.phone != ''">
and cm.phone like #{param.phone} || '%'
</if>
<if test="param.orderType != null ">
and so.order_type = #{param.orderType}
</if>
<if test="param.orderStatus != null ">
and soi.order_status = #{param.orderStatus}
</if>
<if test="param.preSaleStatus != null ">
and bwe.pre_sale_status = #{param.preSaleStatus}
</if>
<if test="param.deliveryWay != null ">
and so.delivery_way = #{param.deliveryWay}
</if>
<if test="param.transportType != null">
and so.tran_type = #{param.transportType}
</if>
<if test="param.operateScope != null ">
and bwe.operate_scope = #{param.operateScope}
</if>
<if test="param.printStatus != null ">
and sd.print_status = #{param.printStatus}
</if>
<if test="param.recName != null and param.recName != '' ">
and so.rec_name like '%' || #{param.recName} || '%'
</if>
<if test="param.recPhone != null and param.recPhone != '' ">
and so.rec_phone like '%' || #{param.recPhone} || '%'
</if>
<if test="param.recProvince != null ">
and so.rec_province = #{param.recProvince}
</if>
<if test="param.recCity != null ">
and so.rec_city = #{param.recCity}
</if>
<if test="param.recCounty != null ">
and so.rec_county = #{param.recCounty}
</if>
<if test="param.recAddress != null and param.recAddress != '' ">
and so.rec_address like #{param.recAddress} || '%'
</if>
<if test="param.creationTime != null">
and sd.creation_time >= #{param.creationTime[0]}
and #{param.creationTime[1]} >= sd.creation_time
</if>
<if test="param.payTime != null">
and so.pay_time >= #{param.payTime[0]}
and #{param.payTime[1]} >= so.pay_time
</if>
<if test="param.shippingChannel != null">
and bp.shipping_channel = #{param.shippingChannel}
</if>
<if test="param.productName != null and param.productName != ''">
and bp.product_name like '%' || #{param.productName} || '%'
</if>
<!-- 地区权限处理 -->
<if test="param.areaScopeList != null and param.areaScopeList.size > 0">
and so.rec_province in
<foreach collection="param.areaScopeList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<!-- 体系权限处理 -->
<if test="param.vertexIdList != null and param.vertexIdList.size > 0">
and cm.pk_vertex in
<foreach collection="param.vertexIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="param.pkVertex != null">
and cm.pk_vertex = #{param.pkVertex}
</if>
</if>
</foreach>
order by creation_time desc, batch_number, deliver_code desc, order_code desc
</if>
<if test="param.pkDeliverList == null or param.pkDeliverList.size == 0">
<!-- 原始查询逻辑 -->
select sdi.pk_id,
sdi.pk_deliver,
sdi.pk_order,
sd.deliver_code,
bp.cover,
bp.product_code,
bp.product_name,
bp.shipping_channel,
sdi.SPECS_NAME,
sdi.quantity,
soi.order_status,
so.order_code,
so.order_type,
cm.member_code,
cm.member_name,
cm.phone,
sd.rec_name,
sd.rec_phone,
sd.rec_province,
sd.rec_city,
sd.rec_county,
sd.rec_address,
so.delivery_way,
bwe.operate_scope,
so.tran_type,
bwe.pre_sale_status,
sd.print_status,
sd.logistics_company,
sd.logistics_code,
so.remark,
sd.creation_time,
so.pay_time,
bu.name unit_name,
bs.name storehouseName,
so.system_type,
sd.day_batch,
sd.batch_number,
bv.vertex_name
from SA_DELIVER sd
left join SA_DELIVER_ITEMS sdi
on sdi.pk_deliver = sd.pk_id
inner join SA_ORDER so
on so.pk_id = sdi.pk_order
and so.del_flag = 0
inner join SA_ORDER_ITEMS soi
on soi.pk_order = sdi.pk_order
and soi.pk_id = sdi.pk_order_items
inner join BD_PRODUCT bp
on bp.pk_id = soi.pk_product
left join BD_WARES_EXTEND bwe
on bwe.pk_wares = soi.pk_wares
left join bd_unit bu
on bu.pk_id = bp.unit
inner join cu_member cm
on cm.pk_id = so.pk_member
left join bd_storehouse bs
on bs.pk_id = so.pk_storehouse
left join bd_vertex bv
on bv.pk_id = cm.pk_vertex
where sd.del_flag = 0
and sd.pk_country = #{pkCountry}
and sdi.del_flag = 0
<if test="param.systemAll == null or param.systemAll == 1">
<if test="param.systemType != null">
and so.SYSTEM_TYPE = #{param.systemType}
</if>
</if>
<if test="param.dayBatch != null">
and sd.DAY_BATCH = #{param.dayBatch}
</if>
<if test="param.pkDeliver != null">
and sd.pk_id = #{param.pkDeliver}
</if>
<if test="param.pkStorehouse != null ">
and bs.pk_id = #{param.pkStorehouse}
</if>
<if test="param.pkDeliverItems != null">
and sdi.pk_id = #{param.pkDeliverItems}
</if>
<if test="param.deliverCode != null and param.deliverCode != ''">
and sd.deliver_code like '%' || #{param.deliverCode} || '%'
</if>
<if test="param.orderCode != null and param.orderCode != ''">
and so.order_code like '%' || #{param.orderCode} || '%'
</if>
<if test="param.memberCode != null and param.memberCode != ''">
and cm.member_code like #{param.memberCode} || '%'
</if>
<if test="param.memberName != null and param.memberName != ''">
and cm.member_name like #{param.memberName} || '%'
</if>
<if test="param.phone != null and param.phone != ''">
and cm.phone like #{param.phone} || '%'
</if>
<if test="param.orderType != null ">
and so.order_type = #{param.orderType}
</if>
<if test="param.orderStatus != null ">
and soi.order_status = #{param.orderStatus}
</if>
<if test="param.preSaleStatus != null ">
and bwe.pre_sale_status = #{param.preSaleStatus}
</if>
<if test="param.deliveryWay != null ">
and so.delivery_way = #{param.deliveryWay}
</if>
<if test="param.transportType != null">
and so.tran_type = #{param.transportType}
</if>
<if test="param.operateScope != null ">
and bwe.operate_scope = #{param.operateScope}
</if>
<if test="param.printStatus != null ">
and sd.print_status = #{param.printStatus}
</if>
<if test="param.recName != null and param.recName != '' ">
and so.rec_name like '%' || #{param.recName} || '%'
</if>
<if test="param.recPhone != null and param.recPhone != '' ">
and so.rec_phone like '%' || #{param.recPhone} || '%'
</if>
<if test="param.recProvince != null ">
and so.rec_province = #{param.recProvince}
</if>
<if test="param.recCity != null ">
and so.rec_city = #{param.recCity}
</if>
<if test="param.recCounty != null ">
and so.rec_county = #{param.recCounty}
</if>
<if test="param.recAddress != null and param.recAddress != '' ">
and so.rec_address like #{param.recAddress} || '%'
</if>
<if test="param.creationTime != null">
and sd.creation_time >= #{param.creationTime[0]}
and #{param.creationTime[1]} >= sd.creation_time
</if>
<if test="param.payTime != null">
and so.pay_time >= #{param.payTime[0]}
and #{param.payTime[1]} >= so.pay_time
</if>
<if test="param.shippingChannel != null">
and bp.shipping_channel = #{param.shippingChannel}
</if>
<if test="param.productName != null and param.productName != ''">
and bp.product_name like '%' || #{param.productName} || '%'
</if>
<!-- 地区权限处理 -->
<if test="param.areaScopeList != null and param.areaScopeList.size > 0">
and so.rec_province in
<foreach collection="param.areaScopeList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<!-- 体系权限处理 -->
<if test="param.vertexIdList != null and param.vertexIdList.size > 0">
and cm.pk_vertex in
<foreach collection="param.vertexIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="param.pkVertex != null">
and cm.pk_vertex = #{param.pkVertex}
</if>
order by sd.creation_time desc, sd.batch_number, sd.deliver_code desc, so.order_code desc
</if>
</select>
<!-- 批量插入 -->
<insert id="insertBatch">
MERGE INTO SA_DELIVER_ITEMS
USING (
<foreach collection="list" item="item" separator=" union ">
select
#{item.pkDeliver} pkDeliver,
#{item.pkOrder} pkOrder,
#{item.pkOrderItems} pkOrderItems,
#{item.pkProduct} pkProduct,
#{item.quantity} quantity,
#{item.pkWaresSpecsSku} pkWaresSpecsSku,
#{item.pkWaresDetail} pkWaresDetail,
#{item.pkCountry} pkCountry,
#{item.pkCreator} pkCreator,
#{item.creationTime} creationTime,
#{item.pkModified} pkModified,
#{item.modifiedTime} modifiedTime,
#{item.specsName, jdbcType=VARCHAR} specsName,
#{item.specsNameId, jdbcType=VARCHAR} specsNameId
from dual
</foreach>
) tmp
ON (0 = 1)
WHEN NOT MATCHED THEN
insert (
PK_ID,
PK_DELIVER,
PK_ORDER,
PK_ORDER_ITEMS,
PK_PRODUCT,
QUANTITY,
PK_WARES_SPECS_SKU,
PK_WARES_DETAIL,
PK_COUNTRY,
PK_CREATOR,
CREATION_TIME,
PK_MODIFIED,
MODIFIED_TIME,
SPECS_NAME,
SPECS_NAME_ID)
values (
SA_DELIVER_ITEMS_SEQ.nextval,
tmp.pkDeliver,
tmp.pkOrder,
tmp.pkOrderItems,
tmp.pkProduct,
tmp.quantity,
tmp.pkWaresSpecsSku,
tmp.pkWaresDetail,
tmp.pkCountry,
tmp.pkCreator,
tmp.creationTime,
tmp.pkModified,
tmp.modifiedTime,
tmp.specsName,
tmp.specsNameId)
</insert>
<!-- 查询发货条码数据 -->
<select id="deliverCodeData" resultMap="deliverBarCodeMap">
select sdi.pk_id,
sdi.pk_deliver,
sdi.pk_order,
so.order_code,
sdi.pk_product,
bp.product_name,
sdi.specs_name,
sdi.quantity,
sdbc.pk_id deliver_bar_code_id,
sdbc.bar_code
from SA_DELIVER_ITEMS sdi
inner join SA_DELIVER sd
on sdi.pk_deliver = sd.pk_id
inner join SA_ORDER_ITEMS soi
on soi.pk_id = sdi.pk_order_items
inner join SA_ORDER so
on so.pk_id = sdi.pk_order
inner join BD_PRODUCT bp
on bp.pk_id = sdi.pk_product
left join SA_DELIVER_BAR_CODE sdbc
on sdbc.pk_deliver_items = sdi.pk_id
and sdbc.pk_product = sdi.pk_product
and sdbc.del_flag = 0
where sdi.pk_country = #{pkCountry}
and sdi.del_flag = 0
and sdi.pk_deliver in
<foreach collection="idList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
<if test="orderIdList != null and orderIdList.size > 0">
and sdi.pk_order in
<foreach collection="orderIdList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="bind != null and bind == 0">
and sdbc.pk_id is not null
</if>
order by sdi.creation_time desc, sd.deliver_code desc, so.order_code desc
</select>
<!-- 根据订单ID或者订单明细ID列表查询指定状态订单明细数据 -->
<select id="queryDeliverItemsByOrder" resultMap="BaseResultMap">
select sdi.*
from SA_DELIVER_ITEMS sdi
where (sdi.pk_order, sdi.pk_order_items) in
(select soi.pk_order, soi.pk_id
from sa_order_items soi
where soi.del_flag = 0
and soi.pk_country = #{pkCountry}
and soi.pk_order = #{pkOrder}
<if test="pkOrderItemList != null and pkOrderItemList.size > 0">
and soi.pk_id not in
<foreach collection="pkOrderItemList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="orderStatusList != null and orderStatusList.size > 0">
and soi.order_status in
<foreach collection="orderStatusList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
)
</select>
</mapper>