订单数据源增加订单对比功能

This commit is contained in:
wuweihua
2026-10-20 13:55:55 +08:00
parent 8093cb52e7
commit 45969a4d29
20 changed files with 1865 additions and 96 deletions
@@ -154,6 +154,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE rn > #{startRow}
</select>
<!--
订单比对专用 SQL(异步分页):仅返回转单号,
筛选与列表相同;排除空转单号。
-->
<select id="selectTabOrderCompareKeyPage" resultType="java.util.HashMap">
SELECT TRANSFER_ORDER_ID FROM (
SELECT inner_q.TRANSFER_ORDER_ID AS TRANSFER_ORDER_ID, ROWNUM AS rn
FROM (
SELECT o.TRANSFER_ORDER_ID, o.PICKUP_DATE, o.ORDER_ID
FROM ${orderTable} o
WHERE
<include refid="tabOrderMonitorWhere"/>
AND o.TRANSFER_ORDER_ID IS NOT NULL
ORDER BY o.PICKUP_DATE DESC, o.ORDER_ID DESC
) inner_q
WHERE ROWNUM &lt;= #{endRow}
)
WHERE rn &gt; #{startRow}
</select>
<!-- List detail by primary keys (display columns only). -->
<select id="selectTabOrderMonitorListByIds" resultType="java.util.HashMap">
SELECT
@@ -195,10 +215,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
ORDER BY o.PICKUP_DATE DESC, o.ORDER_ID DESC
</select>
<!--
大批量单号分批收集:每批最多 900 个(避开 Oracle IN 1000 上限)。
用 UNION ALL 三段分别匹配三列(比三列 OR 快约 2 倍:不依赖优化器 OR-expansion,
ORDER_ID/ORG_ORDER_ID/TRANSFER_ORDER_ID 各走自己的索引);重复 ID 由 Java 侧去重。
<!--
大批量单号分批收集:每批最多 900 个。
三列 UNION ALL(订单号/运单号/转单号),叠加 tabOrderFilterWhere。
比对回填搜索请用 selectMatchedTransferOrderKeys,不走本 SQL。
-->
<select id="selectMatchedOrderKeys" resultType="java.util.HashMap">
SELECT * FROM (
@@ -231,6 +251,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
</select>
<!--
比对缺失转单号回填搜索专用:仅 TRANSFER_ORDER_ID IN,
不带提货时间,不影响列表/同步/比对共用 SQL。
-->
<select id="selectMatchedTransferOrderKeys" resultType="java.util.HashMap">
SELECT o.ID AS ID, o.PICKUP_DATE AS PICKUP_DATE
FROM ${orderTable} o
WHERE o.TRANSFER_ORDER_ID IN
<foreach collection="batch" item="bid" open="(" separator="," close=")">
#{bid}
</foreach>
AND o.BL_PICKUP = 1
AND o.ORDER_STATUS IN (3, 4, 5, 6, 7, 8, 11)
<if test="customerCodes != null and customerCodes.size() > 0">
AND o.CUSTOMER_CODE IN
<foreach collection="customerCodes" item="code" open="(" separator="," close=")">
#{code}
</foreach>
</if>
</select>
<!-- 内存分页切片后的主键回查(一批最多一个页大小,远低于 IN 上限) -->
<select id="selectTabOrderMonitorByIds" resultType="java.util.HashMap">
<!-- 全行数据:同步计费时直接复用,不再按单号回查 Oracle -->