diff --git a/src/main/java/cn/van/business/util/JDUtils.java b/src/main/java/cn/van/business/util/JDUtils.java index aee6d4f..bb4093c 100644 --- a/src/main/java/cn/van/business/util/JDUtils.java +++ b/src/main/java/cn/van/business/util/JDUtils.java @@ -219,62 +219,55 @@ public class JDUtils { } -/** - * 每小时拉取过去两个月的订单 - * 因为有的延迟发货,而接口只能拉取两个月前的数据 - */ -@Scheduled(cron = "0 0 * * * ?") -public void fetchHistoricalOrders() { - System.out.println("开始拉取历史订单"); + /** + * 每小时拉取过去两个月的订单 + * 因为有的延迟发货,而接口只能拉取两个月前的数据 + */ + @Scheduled(cron = "0 0 * * * ?") + public void fetchHistoricalOrders() { + System.out.println("开始拉取历史订单"); - // 获取当前时间,并调整为整点开始 - LocalDateTime now = LocalDateTime.now(); - LocalDateTime lastHour = now.truncatedTo(ChronoUnit.HOURS); - LocalDateTime startDate = lastHour.minusMonths(2).truncatedTo(ChronoUnit.HOURS); + LocalDateTime now = LocalDateTime.now(); + LocalDateTime lastHour = now.truncatedTo(ChronoUnit.HOURS); + LocalDateTime startDate = lastHour.minusMonths(2).truncatedTo(ChronoUnit.HOURS); - // 循环从两个月前到现在最近的整点 - while (!startDate.isEqual(lastHour)) { - Integer pageIndex = 1; - Boolean hasMore = true; + while (!startDate.isEqual(lastHour)) { + Integer pageIndex = 1; + boolean hasMore = true; - while (hasMore) { - try { - UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(startDate, false, pageIndex); // 请求历史订单数据 - - if (response != null && response.getQueryResult() != null && response.getQueryResult().getCode() == 200) { - OrderRowResp[] orderRowResps = response.getQueryResult().getData(); - - // 安全地获取hasMore信息 - Boolean tempHasMore = response.getQueryResult().getHasMore(); - hasMore = tempHasMore != null && tempHasMore; - - if (orderRowResps != null) { - for (OrderRowResp orderRowResp : orderRowResps) { - // 固化到数据库 - OrderRow orderRow = createOrderRow(orderRowResp); - // 订单号不存在就保存,存在就更新订单状态 - orderRowRepository.save(orderRow); + while (hasMore) { + try { + UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(startDate, false, pageIndex); + if (response != null && response.getQueryResult() != null) { + if (response.getQueryResult().getCode() == 200) { + OrderRowResp[] orderRowResps = response.getQueryResult().getData(); + if (orderRowResps != null) { + for (OrderRowResp orderRowResp : orderRowResps) { + if (orderRowResp != null) { // Check each orderRowResp is not null + OrderRow orderRow = createOrderRow(orderRowResp); + if (orderRow != null) { // Ensure orderRow is not null after creation + orderRowRepository.save(orderRow); + } + } + } + } + hasMore = Boolean.TRUE.equals(response.getQueryResult().getHasMore()); + } else { + hasMore = false; } } else { hasMore = false; } - - if (hasMore) pageIndex++; - } else { - hasMore = false; + } catch (Exception e) { + System.err.println("处理时间 " + startDate + " 时出错:" + e.getMessage()); + hasMore = false; // Optionally break out of the while loop if required } - } catch (Exception e) { - // 在这里处理任何抛出的异常,防止它打断整个抓取过程 - System.err.println("处理时间 " + startDate + " 时出错: " + e.getMessage()); - // 可以选择继续或中断当前小时的处理 - hasMore = false; // 选择中断当前小时的处理 + if (hasMore) pageIndex++; } + startDate = startDate.plusHours(1); } - - // 每处理完一个小时的数据,递增到下一个小时 - startDate = startDate.plusHours(1); } -} + /** * 手动调用 将订单发送到微信 */ @@ -565,7 +558,7 @@ public void fetchHistoricalOrders() { LocalDateTime lastHour = LocalDateTime.now().minusHours(1).withMinute(0).withSecond(0).withNano(0); while (!startDate.isEqual(lastHour)) { startDate = startDate.plusHours(1); - UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(startDate, false,1); + UnionOpenOrderRowQueryResponse response = fetchOrdersForDateTime(startDate, false, 1); if (response != null) { int code = response.getQueryResult().getCode();