调整订单同步查询条件
This commit is contained in:
@@ -43,6 +43,11 @@ public class TabOrderMonitorQuery implements Serializable
|
|||||||
* 空则服务端回落默认 3,4,5,6,7,8,11(与历史硬编码一致)。
|
* 空则服务端回落默认 3,4,5,6,7,8,11(与历史硬编码一致)。
|
||||||
*/
|
*/
|
||||||
private List<Integer> orderStatuses;
|
private List<Integer> orderStatuses;
|
||||||
|
/**
|
||||||
|
* 是否收货 BL_PICKUP。1 已收货,0 未收货。
|
||||||
|
* 空则服务端回落 1,与历史查询一致。
|
||||||
|
*/
|
||||||
|
private Integer blPickup;
|
||||||
/** 分批同步计费每批条数 */
|
/** 分批同步计费每批条数 */
|
||||||
private Integer batchSize;
|
private Integer batchSize;
|
||||||
/** Excel export field names (Java props; export only). */
|
/** Excel export field names (Java props; export only). */
|
||||||
|
|||||||
+2
-1
@@ -70,7 +70,8 @@ public interface OracleUpstreamOrderMapper
|
|||||||
List<Map<String, Object>> selectMatchedTransferOrderKeys(
|
List<Map<String, Object>> selectMatchedTransferOrderKeys(
|
||||||
@Param("orderTable") String orderTable,
|
@Param("orderTable") String orderTable,
|
||||||
@Param("batch") List<String> batch,
|
@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)。 */
|
/** 比对回填转单号专用分批(不走三列 UNION)。 */
|
||||||
@DataSource(DataSourceType.SLAVE)
|
@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;
|
List<String> customerCodes = cleanedCodes.isEmpty() ? null : cleanedCodes;
|
||||||
|
normalizeBlPickup(query);
|
||||||
int[] page = normalizePage(pageNum, pageSize);
|
int[] page = normalizePage(pageNum, pageSize);
|
||||||
int pn = page[0];
|
int pn = page[0];
|
||||||
int ps = page[1];
|
int ps = page[1];
|
||||||
String table = resolveTable();
|
String table = resolveTable();
|
||||||
long t0 = System.currentTimeMillis();
|
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);
|
List<TabOrderMonitorVo> rows = doPageByKeys(table, keys, pn, ps);
|
||||||
log.info("oracle tab_order transfer-fill page transferNos={} matched={} page={}/{} rows={} costMs={}",
|
log.info("oracle tab_order transfer-fill page transferNos={} matched={} page={}/{} rows={} costMs={}",
|
||||||
Integer.valueOf(nos.size()), Integer.valueOf(keys.size()),
|
Integer.valueOf(nos.size()), Integer.valueOf(keys.size()),
|
||||||
@@ -795,12 +796,14 @@ public class TabOrderMonitorService
|
|||||||
* 回填转单号专用收集:只走 selectMatchedTransferOrderKeys,
|
* 回填转单号专用收集:只走 selectMatchedTransferOrderKeys,
|
||||||
* 不走三列 UNION、不带提货时间。
|
* 不走三列 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('|');
|
StringBuilder fp = new StringBuilder("tf|").append(table == null ? "" : table).append('|');
|
||||||
appendSorted(fp, transferNos);
|
appendSorted(fp, transferNos);
|
||||||
fp.append('|');
|
fp.append('|');
|
||||||
appendSorted(fp, customerCodes);
|
appendSorted(fp, customerCodes);
|
||||||
|
fp.append('|').append(blPickup == null ? "" : blPickup);
|
||||||
String fingerprint = Integer.toHexString(fp.toString().hashCode());
|
String fingerprint = Integer.toHexString(fp.toString().hashCode());
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
CacheEntry cached = collectCache.get(fingerprint);
|
CacheEntry cached = collectCache.get(fingerprint);
|
||||||
@@ -821,7 +824,7 @@ public class TabOrderMonitorService
|
|||||||
new ArrayList<Future<List<Map<String, Object>>>>(batches.size());
|
new ArrayList<Future<List<Map<String, Object>>>>(batches.size());
|
||||||
for (List<String> batch : batches)
|
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>();
|
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.getOrderId())).append('|').append(safe(q.getOrgOrderId()))
|
||||||
.append('|').append(safe(q.getTransferOrderId())).append('|');
|
.append('|').append(safe(q.getTransferOrderId())).append('|');
|
||||||
appendSortedInts(sb, q.getOrderStatuses());
|
appendSortedInts(sb, q.getOrderStatuses());
|
||||||
|
sb.append('|').append(q.getBlPickup() == null ? "" : q.getBlPickup());
|
||||||
return Integer.toHexString(sb.toString().hashCode());
|
return Integer.toHexString(sb.toString().hashCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1207,6 +1211,7 @@ public class TabOrderMonitorService
|
|||||||
query.setOrgOrderId(trimToNull(query.getOrgOrderId()));
|
query.setOrgOrderId(trimToNull(query.getOrgOrderId()));
|
||||||
query.setTransferOrderId(trimToNull(query.getTransferOrderId()));
|
query.setTransferOrderId(trimToNull(query.getTransferOrderId()));
|
||||||
normalizeOrderStatuses(query);
|
normalizeOrderStatuses(query);
|
||||||
|
normalizeBlPickup(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Empty/missing -> default 3,4,5,6,7,8,11 so SQL always has a status IN list. */
|
/** 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);
|
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、去空去重。
|
* 多行文本归一化:按换行/逗号/分号/顿号拆分(不按空格拆),trim、去空去重。
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -66,7 +66,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="query.endTime != null and query.endTime != ''">
|
<if test="query.endTime != null and query.endTime != ''">
|
||||||
AND o.PICKUP_DATE <= TO_DATE(#{query.endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
AND o.PICKUP_DATE <= TO_DATE(#{query.endTime}, 'YYYY-MM-DD HH24:MI:SS')
|
||||||
</if>
|
</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">
|
<if test="query.orderStatuses != null and query.orderStatuses.size() > 0">
|
||||||
AND o.ORDER_STATUS IN
|
AND o.ORDER_STATUS IN
|
||||||
<foreach collection="query.orderStatuses" item="st" open="(" separator="," close=")">
|
<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=")">
|
<foreach collection="batch" item="bid" open="(" separator="," close=")">
|
||||||
#{bid}
|
#{bid}
|
||||||
</foreach>
|
</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)
|
AND o.ORDER_STATUS IN (3, 4, 5, 6, 7, 8, 11)
|
||||||
<if test="customerCodes != null and customerCodes.size() > 0">
|
<if test="customerCodes != null and customerCodes.size() > 0">
|
||||||
AND o.CUSTOMER_CODE IN
|
AND o.CUSTOMER_CODE IN
|
||||||
|
|||||||
@@ -240,6 +240,7 @@ function submit(skipConfirm) {
|
|||||||
orgOrderId: q.orgOrderId || undefined,
|
orgOrderId: q.orgOrderId || undefined,
|
||||||
transferOrderId: q.transferOrderId || undefined,
|
transferOrderId: q.transferOrderId || undefined,
|
||||||
orderStatuses: Array.isArray(q.orderStatuses) && q.orderStatuses.length ? q.orderStatuses : undefined,
|
orderStatuses: Array.isArray(q.orderStatuses) && q.orderStatuses.length ? q.orderStatuses : undefined,
|
||||||
|
blPickup: q.blPickup === 0 || q.blPickup === 1 ? q.blPickup : 1,
|
||||||
batchSize: 100
|
batchSize: 100
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
const asyncTaskId = res.data?.asyncTaskId || res.data
|
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 orderStatusOptions = Object.keys(orderStatusMap).map(k => ({ label: orderStatusMap[k], value: Number(k) }))
|
||||||
|
|
||||||
|
const blPickupOptions = [
|
||||||
|
{ label: '已收货', value: 1 },
|
||||||
|
{ label: '未收货', value: 0 }
|
||||||
|
]
|
||||||
|
|
||||||
const defaultParams = {
|
const defaultParams = {
|
||||||
orderStatuses: [3, 4, 5, 6, 7, 8, 11]
|
orderStatuses: [3, 4, 5, 6, 7, 8, 11],
|
||||||
|
blPickup: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
const searchColumns = [
|
const searchColumns = [
|
||||||
@@ -243,6 +249,13 @@ const searchColumns = [
|
|||||||
collapseTagsTooltip: true
|
collapseTagsTooltip: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '收货状态',
|
||||||
|
prop: 'blPickup',
|
||||||
|
component: 'select',
|
||||||
|
options: blPickupOptions,
|
||||||
|
placeholder: '请选择'
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
@@ -389,6 +402,7 @@ function queryList(params) {
|
|||||||
const customers = splitLines(src.customerKeywords)
|
const customers = splitLines(src.customerKeywords)
|
||||||
const fillQuery = { orderIdentifiers: identifiers }
|
const fillQuery = { orderIdentifiers: identifiers }
|
||||||
if (customers.length) fillQuery.customerKeywords = customers
|
if (customers.length) fillQuery.customerKeywords = customers
|
||||||
|
fillQuery.blPickup = src.blPickup === 0 || src.blPickup === 1 ? src.blPickup : 1
|
||||||
fillQuery.pageNum = params.pageNum
|
fillQuery.pageNum = params.pageNum
|
||||||
fillQuery.pageSize = params.pageSize
|
fillQuery.pageSize = params.pageSize
|
||||||
return listOrderSourceByTransferNos(fillQuery)
|
return listOrderSourceByTransferNos(fillQuery)
|
||||||
@@ -421,7 +435,7 @@ function openOrderCompare() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
proxy.$modal.confirm(
|
proxy.$modal.confirm(
|
||||||
'将按当前客户、提货时间与订单状态筛选,异步分页比对上游转单号是否已落库,确认继续?',
|
'将按当前客户、提货时间、订单状态和收货状态筛选,异步分页比对上游转单号是否已落库,确认继续?',
|
||||||
'二次确认'
|
'二次确认'
|
||||||
).then(() => {
|
).then(() => {
|
||||||
// 比对只按客户+时间;不带单号框内容(回填后可能有数千转单号,带上会把比对拖死)
|
// 比对只按客户+时间;不带单号框内容(回填后可能有数千转单号,带上会把比对拖死)
|
||||||
|
|||||||
Reference in New Issue
Block a user