This commit is contained in:
Leo
2024-11-24 02:10:52 +08:00
parent 8c28084b7a
commit 5346a12c3c

View File

@@ -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();