|
|
@@ -1006,10 +1006,13 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
|
|
|
}
|
|
|
|
|
|
private ErpOrderQuery convertToErpOrderQueryScrm(OrderQueryResponseDTO.Order order) {
|
|
|
- ErpOrderQuery erpOrder = new ErpOrderQuery();
|
|
|
-
|
|
|
FsStoreOrderScrm fsStoreOrder = fsStoreOrderService.selectFsStoreOrderScrmByOrderCode(order.getSoId());
|
|
|
- Asserts.notNull(fsStoreOrder,"该订单号没有找到!");
|
|
|
+ Asserts.notNull(fsStoreOrder, "该订单号没有找到!");
|
|
|
+ return convertToErpOrderQueryScrm(order, fsStoreOrder);
|
|
|
+ }
|
|
|
+
|
|
|
+ private ErpOrderQuery convertToErpOrderQueryScrm(OrderQueryResponseDTO.Order order, FsStoreOrderScrm fsStoreOrder) {
|
|
|
+ ErpOrderQuery erpOrder = new ErpOrderQuery();
|
|
|
|
|
|
// 设置基本订单信息
|
|
|
erpOrder.setCode(order.getSoId());
|
|
|
@@ -1281,6 +1284,105 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 批量查询商城订单(聚水潭)
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ErpOrderQueryResponse batchGetScrmOrder(List<FsStoreOrderScrm> orderList) {
|
|
|
+ ErpOrderQueryResponse response = new ErpOrderQueryResponse();
|
|
|
+ if (CollectionUtils.isEmpty(orderList)) {
|
|
|
+ response.setOrders(Collections.emptyList());
|
|
|
+ response.setSuccess(true);
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, FsStoreOrderScrm> orderByExtendId = orderList.stream()
|
|
|
+ .filter(order -> StringUtils.isNotEmpty(order.getExtendOrderId()))
|
|
|
+ .collect(Collectors.toMap(FsStoreOrderScrm::getExtendOrderId, order -> order, (a, b) -> a));
|
|
|
+ Map<String, FsStoreOrderScrm> orderByOrderCode = orderList.stream()
|
|
|
+ .filter(order -> StringUtils.isNotEmpty(order.getOrderCode()))
|
|
|
+ .collect(Collectors.toMap(FsStoreOrderScrm::getOrderCode, order -> order, (a, b) -> a));
|
|
|
+
|
|
|
+ List<Long> extendOrderIds = orderByExtendId.keySet().stream()
|
|
|
+ .map(Long::valueOf)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(extendOrderIds)) {
|
|
|
+ response.setOrders(Collections.emptyList());
|
|
|
+ response.setSuccess(true);
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ErpOrderQuery> erpOrders = new ArrayList<>();
|
|
|
+ int batchSize = 100;
|
|
|
+ for (int i = 0; i < extendOrderIds.size(); i += batchSize) {
|
|
|
+ List<Long> batch = extendOrderIds.subList(i, Math.min(i + batchSize, extendOrderIds.size()));
|
|
|
+ try {
|
|
|
+ OrderQueryRequestDTO requestDTO = new OrderQueryRequestDTO();
|
|
|
+ requestDTO.setOIds(batch);
|
|
|
+ OrderQueryResponseDTO query = jstErpHttpService.query(requestDTO);
|
|
|
+ if (query.getOrders() == null || query.getOrders().isEmpty()) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (OrderQueryResponseDTO.Order jstOrder : query.getOrders()) {
|
|
|
+ appendScrmErpOrderFromJst(jstOrder, orderByExtendId, orderByOrderCode, erpOrders);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("聚水潭批量查询商城订单失败,batchSize={}", batch.size(), e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ response.setOrders(erpOrders);
|
|
|
+ response.setSuccess(true);
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void appendScrmErpOrderFromJst(OrderQueryResponseDTO.Order jstOrder,
|
|
|
+ Map<String, FsStoreOrderScrm> orderByExtendId,
|
|
|
+ Map<String, FsStoreOrderScrm> orderByOrderCode,
|
|
|
+ List<ErpOrderQuery> erpOrders) {
|
|
|
+ if (jstOrder == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (ErpQueryOrderStatusEnum.MERGED.getCode().equals(jstOrder.getStatus())
|
|
|
+ && StringUtils.isNotEmpty(jstOrder.getLinkOId())) {
|
|
|
+ OrderQueryResponseDTO mergedWrapper = new OrderQueryResponseDTO();
|
|
|
+ mergedWrapper.setOrders(Collections.singletonList(jstOrder));
|
|
|
+ OrderQueryResponseDTO mergeQuery = followMergedJstQueryResponse(mergedWrapper, 1);
|
|
|
+ if (mergeQuery != null && !CollectionUtils.isEmpty(mergeQuery.getOrders())) {
|
|
|
+ for (OrderQueryResponseDTO.Order mergedOrder : mergeQuery.getOrders()) {
|
|
|
+ FsStoreOrderScrm localOrder = resolveScrmOrder(mergedOrder, orderByExtendId, orderByOrderCode);
|
|
|
+ if (localOrder != null) {
|
|
|
+ erpOrders.add(convertToErpOrderQueryScrm(mergedOrder, localOrder));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ persistOuterOiIdFromJstMergedOrder(jstOrder);
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ FsStoreOrderScrm localOrder = resolveScrmOrder(jstOrder, orderByExtendId, orderByOrderCode);
|
|
|
+ if (localOrder != null) {
|
|
|
+ erpOrders.add(convertToErpOrderQueryScrm(jstOrder, localOrder));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private FsStoreOrderScrm resolveScrmOrder(OrderQueryResponseDTO.Order jstOrder,
|
|
|
+ Map<String, FsStoreOrderScrm> orderByExtendId,
|
|
|
+ Map<String, FsStoreOrderScrm> orderByOrderCode) {
|
|
|
+ if (jstOrder == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(jstOrder.getSoId())) {
|
|
|
+ FsStoreOrderScrm byCode = orderByOrderCode.get(jstOrder.getSoId());
|
|
|
+ if (byCode != null) {
|
|
|
+ return byCode;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (jstOrder.getOId() != null) {
|
|
|
+ return orderByExtendId.get(String.valueOf(jstOrder.getOId()));
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 批量查询直播订单
|
|
|
* @param orderList 订单列表
|