调整订单同步查询条件
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
|
||||
|
||||
@@ -240,6 +240,7 @@ function submit(skipConfirm) {
|
||||
orgOrderId: q.orgOrderId || undefined,
|
||||
transferOrderId: q.transferOrderId || undefined,
|
||||
orderStatuses: Array.isArray(q.orderStatuses) && q.orderStatuses.length ? q.orderStatuses : undefined,
|
||||
blPickup: q.blPickup === 0 || q.blPickup === 1 ? q.blPickup : 1,
|
||||
batchSize: 100
|
||||
}).then(res => {
|
||||
const asyncTaskId = res.data?.asyncTaskId || res.data
|
||||
|
||||
@@ -191,8 +191,14 @@ const orderStatusMap = {
|
||||
|
||||
const orderStatusOptions = Object.keys(orderStatusMap).map(k => ({ label: orderStatusMap[k], value: Number(k) }))
|
||||
|
||||
const blPickupOptions = [
|
||||
{ label: '已收货', value: 1 },
|
||||
{ label: '未收货', value: 0 }
|
||||
]
|
||||
|
||||
const defaultParams = {
|
||||
orderStatuses: [3, 4, 5, 6, 7, 8, 11]
|
||||
orderStatuses: [3, 4, 5, 6, 7, 8, 11],
|
||||
blPickup: 1
|
||||
}
|
||||
|
||||
const searchColumns = [
|
||||
@@ -243,6 +249,13 @@ const searchColumns = [
|
||||
collapseTagsTooltip: true
|
||||
}
|
||||
},
|
||||
{
|
||||
label: '收货状态',
|
||||
prop: 'blPickup',
|
||||
component: 'select',
|
||||
options: blPickupOptions,
|
||||
placeholder: '请选择'
|
||||
},
|
||||
]
|
||||
|
||||
const columns = [
|
||||
@@ -389,6 +402,7 @@ function queryList(params) {
|
||||
const customers = splitLines(src.customerKeywords)
|
||||
const fillQuery = { orderIdentifiers: identifiers }
|
||||
if (customers.length) fillQuery.customerKeywords = customers
|
||||
fillQuery.blPickup = src.blPickup === 0 || src.blPickup === 1 ? src.blPickup : 1
|
||||
fillQuery.pageNum = params.pageNum
|
||||
fillQuery.pageSize = params.pageSize
|
||||
return listOrderSourceByTransferNos(fillQuery)
|
||||
@@ -421,7 +435,7 @@ function openOrderCompare() {
|
||||
return
|
||||
}
|
||||
proxy.$modal.confirm(
|
||||
'将按当前客户、提货时间与订单状态筛选,异步分页比对上游转单号是否已落库,确认继续?',
|
||||
'将按当前客户、提货时间、订单状态和收货状态筛选,异步分页比对上游转单号是否已落库,确认继续?',
|
||||
'二次确认'
|
||||
).then(() => {
|
||||
// 比对只按客户+时间;不带单号框内容(回填后可能有数千转单号,带上会把比对拖死)
|
||||
|
||||
Reference in New Issue
Block a user