调整订单同步查询条件
This commit is contained in:
@@ -43,6 +43,11 @@ public class TabOrderMonitorQuery implements Serializable
|
||||
* 空则服务端回落默认 3,4,5,6,7,8,11(与历史硬编码一致)。
|
||||
*/
|
||||
private List<Integer> orderStatuses;
|
||||
/**
|
||||
* 是否收货 BL_PICKUP。1 已收货,0 未收货。
|
||||
* 空则服务端回落 1,与历史查询一致。
|
||||
*/
|
||||
private Integer blPickup;
|
||||
/** 分批同步计费每批条数 */
|
||||
private Integer batchSize;
|
||||
/** Excel export field names (Java props; export only). */
|
||||
|
||||
+2
-1
@@ -70,7 +70,8 @@ public interface OracleUpstreamOrderMapper
|
||||
List<Map<String, Object>> selectMatchedTransferOrderKeys(
|
||||
@Param("orderTable") String orderTable,
|
||||
@Param("batch") List<String> batch,
|
||||
@Param("customerCodes") List<String> customerCodes);
|
||||
@Param("customerCodes") List<String> customerCodes,
|
||||
@Param("blPickup") Integer blPickup);
|
||||
|
||||
|
||||
/** 按已收集到的订单主键批量查明细(一批为一个内存分页切片)。 */
|
||||
|
||||
+3
-2
@@ -28,8 +28,9 @@ public class OracleOrderKeyCollectWorker
|
||||
|
||||
/** 比对回填转单号专用分批(不走三列 UNION)。 */
|
||||
@DataSource(DataSourceType.SLAVE)
|
||||
public List<Map<String, Object>> collectTransferBatch(String table, List<String> batch, List<String> customerCodes)
|
||||
public List<Map<String, Object>> collectTransferBatch(String table, List<String> batch, List<String> customerCodes,
|
||||
Integer blPickup)
|
||||
{
|
||||
return oracleUpstreamOrderMapper.selectMatchedTransferOrderKeys(table, batch, customerCodes);
|
||||
return oracleUpstreamOrderMapper.selectMatchedTransferOrderKeys(table, batch, customerCodes, blPickup);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -456,12 +456,13 @@ public class TabOrderMonitorService
|
||||
}
|
||||
}
|
||||
List<String> customerCodes = cleanedCodes.isEmpty() ? null : cleanedCodes;
|
||||
normalizeBlPickup(query);
|
||||
int[] page = normalizePage(pageNum, pageSize);
|
||||
int pn = page[0];
|
||||
int ps = page[1];
|
||||
String table = resolveTable();
|
||||
long t0 = System.currentTimeMillis();
|
||||
List<MatchedOrderKey> keys = doCollectTransferKeys(table, nos, customerCodes);
|
||||
List<MatchedOrderKey> keys = doCollectTransferKeys(table, nos, customerCodes, query.getBlPickup());
|
||||
List<TabOrderMonitorVo> rows = doPageByKeys(table, keys, pn, ps);
|
||||
log.info("oracle tab_order transfer-fill page transferNos={} matched={} page={}/{} rows={} costMs={}",
|
||||
Integer.valueOf(nos.size()), Integer.valueOf(keys.size()),
|
||||
@@ -795,12 +796,14 @@ public class TabOrderMonitorService
|
||||
* 回填转单号专用收集:只走 selectMatchedTransferOrderKeys,
|
||||
* 不走三列 UNION、不带提货时间。
|
||||
*/
|
||||
private List<MatchedOrderKey> doCollectTransferKeys(String table, List<String> transferNos, List<String> customerCodes)
|
||||
private List<MatchedOrderKey> doCollectTransferKeys(String table, List<String> transferNos, List<String> customerCodes,
|
||||
Integer blPickup)
|
||||
{
|
||||
StringBuilder fp = new StringBuilder("tf|").append(table == null ? "" : table).append('|');
|
||||
appendSorted(fp, transferNos);
|
||||
fp.append('|');
|
||||
appendSorted(fp, customerCodes);
|
||||
fp.append('|').append(blPickup == null ? "" : blPickup);
|
||||
String fingerprint = Integer.toHexString(fp.toString().hashCode());
|
||||
long now = System.currentTimeMillis();
|
||||
CacheEntry cached = collectCache.get(fingerprint);
|
||||
@@ -821,7 +824,7 @@ public class TabOrderMonitorService
|
||||
new ArrayList<Future<List<Map<String, Object>>>>(batches.size());
|
||||
for (List<String> batch : batches)
|
||||
{
|
||||
futures.add(collectPool.submit(() -> collectWorker.collectTransferBatch(table, batch, customerCodes)));
|
||||
futures.add(collectPool.submit(() -> collectWorker.collectTransferBatch(table, batch, customerCodes, blPickup)));
|
||||
}
|
||||
|
||||
Map<String, Timestamp> unique = new LinkedHashMap<String, Timestamp>();
|
||||
@@ -1035,6 +1038,7 @@ public class TabOrderMonitorService
|
||||
.append('|').append(safe(q.getOrderId())).append('|').append(safe(q.getOrgOrderId()))
|
||||
.append('|').append(safe(q.getTransferOrderId())).append('|');
|
||||
appendSortedInts(sb, q.getOrderStatuses());
|
||||
sb.append('|').append(q.getBlPickup() == null ? "" : q.getBlPickup());
|
||||
return Integer.toHexString(sb.toString().hashCode());
|
||||
}
|
||||
|
||||
@@ -1207,6 +1211,7 @@ public class TabOrderMonitorService
|
||||
query.setOrgOrderId(trimToNull(query.getOrgOrderId()));
|
||||
query.setTransferOrderId(trimToNull(query.getTransferOrderId()));
|
||||
normalizeOrderStatuses(query);
|
||||
normalizeBlPickup(query);
|
||||
}
|
||||
|
||||
/** Empty/missing -> default 3,4,5,6,7,8,11 so SQL always has a status IN list. */
|
||||
@@ -1227,6 +1232,16 @@ public class TabOrderMonitorService
|
||||
query.setOrderStatuses(cleaned.isEmpty() ? new ArrayList<Integer>(DEFAULT_ORDER_STATUSES) : cleaned);
|
||||
}
|
||||
|
||||
/** Empty or anything other than 0/1 falls back to 1(已收货). */
|
||||
private static void normalizeBlPickup(TabOrderMonitorQuery query)
|
||||
{
|
||||
Integer blPickup = query.getBlPickup();
|
||||
if (blPickup == null || (blPickup.intValue() != 0 && blPickup.intValue() != 1))
|
||||
{
|
||||
query.setBlPickup(Integer.valueOf(1));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 多行文本归一化:按换行/逗号/分号/顿号拆分(不按空格拆),trim、去空去重。
|
||||
*/
|
||||
|
||||
@@ -66,7 +66,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="query.endTime != null and query.endTime != ''">
|
||||
AND o.PICKUP_DATE <= TO_DATE(#{query.endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||
</if>
|
||||
AND o.BL_PICKUP = 1
|
||||
<choose>
|
||||
<when test="query.blPickup != null">
|
||||
AND o.BL_PICKUP = #{query.blPickup}
|
||||
</when>
|
||||
<!-- <otherwise>-->
|
||||
<!-- AND o.BL_PICKUP = 1-->
|
||||
<!-- </otherwise>-->
|
||||
</choose>
|
||||
<if test="query.orderStatuses != null and query.orderStatuses.size() > 0">
|
||||
AND o.ORDER_STATUS IN
|
||||
<foreach collection="query.orderStatuses" item="st" open="(" separator="," close=")">
|
||||
@@ -274,7 +281,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<foreach collection="batch" item="bid" open="(" separator="," close=")">
|
||||
#{bid}
|
||||
</foreach>
|
||||
AND o.BL_PICKUP = 1
|
||||
<choose>
|
||||
<when test="blPickup != null">
|
||||
AND o.BL_PICKUP = #{blPickup}
|
||||
</when>
|
||||
<!-- <otherwise>-->
|
||||
<!-- AND o.BL_PICKUP = 1-->
|
||||
<!-- </otherwise>-->
|
||||
</choose>
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user