|
|
@@ -3432,10 +3432,80 @@ public class KwtLogisticsConsignmentService {
|
|
|
keywordLogOrderIds.addAll(goodsOrderIds);
|
|
|
log.debug("通过商品名称匹配到 {} 个订单", goodsOrderIds.size());
|
|
|
}
|
|
|
+
|
|
|
+ // 3. 根据贸易订单代理商名称模糊查询
|
|
|
+ Set<Long> agentOrderIds = queryLogisticsOrderIdsByAgentFirmName(keywords);
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(agentOrderIds)) {
|
|
|
+ keywordLogOrderIds.addAll(agentOrderIds);
|
|
|
+ log.debug("通过贸易订单代理商名称匹配到 {} 个物流订单", agentOrderIds.size());
|
|
|
+ }
|
|
|
|
|
|
return keywordLogOrderIds;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据贸易订单代理商名称模糊查询物流订单ID。
|
|
|
+ *
|
|
|
+ * @param keywords 代理商名称关键字
|
|
|
+ * @return 命中的物流订单ID集合
|
|
|
+ */
|
|
|
+ private Set<Long> queryLogisticsOrderIdsByAgentFirmName(String keywords) {
|
|
|
+ if (org.apache.commons.lang3.StringUtils.isBlank(keywords)) {
|
|
|
+ return Sets.newHashSet();
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ List<OrderUnitInfoDetailVO> orderUnits = tradeOrderInfoService.queryOrderUnitInfByEntName(keywords);
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(orderUnits)) {
|
|
|
+ return Sets.newHashSet();
|
|
|
+ }
|
|
|
+
|
|
|
+ Set<Long> tradeOrderIds = orderUnits.stream()
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .filter(unit -> Objects.equals(unit.getUnitType(), String.valueOf(NumberConstant.TWO)))
|
|
|
+ .map(OrderUnitInfoDetailVO::getTOrderId)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(tradeOrderIds)) {
|
|
|
+ return Sets.newHashSet();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<OrderDetailVo> tradeOrderDetails = tradeOrderInfoService.queryByTradeOrderIds(tradeOrderIds);
|
|
|
+ Set<Long> agentTradeOrderIds = extractAgentTradeOrderIdsByAgentName(tradeOrderDetails, keywords);
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(agentTradeOrderIds)) {
|
|
|
+ return Sets.newHashSet();
|
|
|
+ }
|
|
|
+
|
|
|
+ return logisticsOrderRepository.queryByTradeOrderIds(agentTradeOrderIds).stream()
|
|
|
+ .map(KwtLogisticsOrder::getId)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("通过代理商名称关键字查询物流订单失败,keywords={}", keywords, e);
|
|
|
+ return Sets.newHashSet();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 从贸易订单详情中过滤代理商名称命中的代理订单ID。
|
|
|
+ *
|
|
|
+ * @param tradeOrderDetails 贸易订单详情集合
|
|
|
+ * @param keywords 代理商名称关键字
|
|
|
+ * @return 代理商名称命中的贸易订单ID集合
|
|
|
+ */
|
|
|
+ static Set<Long> extractAgentTradeOrderIdsByAgentName(List<OrderDetailVo> tradeOrderDetails, String keywords) {
|
|
|
+ if (org.apache.commons.collections4.CollectionUtils.isEmpty(tradeOrderDetails)
|
|
|
+ || org.apache.commons.lang3.StringUtils.isBlank(keywords)) {
|
|
|
+ return Sets.newHashSet();
|
|
|
+ }
|
|
|
+ return tradeOrderDetails.stream()
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .filter(order -> Objects.equals(order.getAgentFlag(), Global.YES))
|
|
|
+ .filter(order -> org.apache.commons.lang3.StringUtils.contains(order.getAgentFirmName(), keywords))
|
|
|
+ .map(OrderDetailVo::getId)
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 合并关键字段命中的物流订单ID。
|
|
|
* 合并策略:
|