diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/task/LogisticsScanTask.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/task/LogisticsScanTask.java index c1319a9..4e15718 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/task/LogisticsScanTask.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/task/LogisticsScanTask.java @@ -31,76 +31,72 @@ public class LogisticsScanTask { */ @Scheduled(cron = "0 */10 * * * ?") public void scanAndFetchLogistics() { - logger.info("========== 开始执行物流信息扫描定时任务(最近30天订单) =========="); + long t0 = System.currentTimeMillis(); + int orderCandidates = 0; + int orderProcessed = 0; + int orderSkipped = 0; + int orderSuccess = 0; + int orderFailed = 0; + int adhocQueuePopped = 0; + + logger.info("========== 物流扫描定时任务开始(订单 F/PDD + 企微分享链队列) =========="); try { - // 查询分销标记为F或PDD且有物流链接的订单(最近30天) List orders = jdOrderService.selectJDOrderListByDistributionMarkFOrPDD(); - if (orders == null || orders.isEmpty()) { - logger.info("未找到需要处理的订单"); + logger.info("订单扫描:候选 0 条(最近30天 F/PDD 有物流链)"); } else { - logger.info("找到 {} 个需要处理的订单", orders.size()); + orderCandidates = orders.size(); + logger.info("订单扫描:候选 {} 条(最近30天 F/PDD 有物流链)", orderCandidates); - int processedCount = 0; - int skippedCount = 0; - int successCount = 0; - int failedCount = 0; - - // 串行处理订单(避免并发调用接口) for (JDOrder order : orders) { try { - // 检查Redis中是否已处理过(避免重复处理) if (logisticsService.isOrderProcessed(order.getId())) { - //logger.debug("订单已处理过,跳过 - 订单ID: {}", order.getId()); - skippedCount++; + orderSkipped++; continue; } - logger.info("开始处理订单 - 订单ID: {}, 订单号: {}, 分销标识: {}", + logger.info("订单扫描:处理中 id={} orderId={} mark={}", order.getId(), order.getOrderId(), order.getDistributionMark()); - // 获取物流信息并推送(串行执行,不并发) boolean success = logisticsService.fetchLogisticsAndPush(order); - + orderProcessed++; if (success) { - successCount++; - logger.info("订单处理成功 - 订单ID: {}, 订单号: {}", order.getId(), order.getOrderId()); + orderSuccess++; + logger.info("订单扫描:成功 id={} orderId={}", order.getId(), order.getOrderId()); } else { - failedCount++; - logger.warn("订单处理失败 - 订单ID: {}, 订单号: {}", order.getId(), order.getOrderId()); + orderFailed++; + logger.warn("订单扫描:未成功 id={} orderId={}", order.getId(), order.getOrderId()); } - processedCount++; - - // 添加短暂延迟,避免请求过于频繁 - Thread.sleep(500); // 每次请求间隔500毫秒 - + Thread.sleep(500); } catch (InterruptedException e) { logger.error("定时任务被中断", e); Thread.currentThread().interrupt(); break; } catch (Exception e) { - failedCount++; - logger.error("处理订单时发生异常 - 订单ID: {}, 错误: {}", order.getId(), e.getMessage(), e); - // 继续处理下一个订单 + orderFailed++; + logger.error("订单扫描:异常 id={} err={}", order.getId(), e.getMessage(), e); } } - - logger.info("========== 物流信息扫描定时任务执行完成 =========="); - logger.info("总订单数: {}, 已处理: {}, 跳过: {}, 成功: {}, 失败: {}", - orders.size(), processedCount, skippedCount, successCount, failedCount); } } catch (Exception e) { - logger.error("执行物流信息扫描定时任务时发生异常", e); + logger.error("订单扫描阶段异常", e); } finally { try { - logger.info("---------- 处理企微分享链物流待队列(adhoc) ----------"); - logisticsService.drainPendingShareLinkQueue(); + logger.info("---------- 企微分享链 adhoc 队列:开始 drain ----------"); + adhocQueuePopped = logisticsService.drainPendingShareLinkQueue(); } catch (Exception e) { - logger.error("企微分享链 adhoc 队列处理异常", e); + logger.error("企微分享链 adhoc 队列 drain 异常", e); } } + + long elapsed = System.currentTimeMillis() - t0; + logger.info("========== 物流扫描任务统计(本轮) =========="); + logger.info("订单:候选 {} 条 | 跳过(Redis已处理) {} | 本次已拉取处理 {} | 成功 {} | 失败或未推送 {}", + orderCandidates, orderSkipped, orderProcessed, orderSuccess, orderFailed); + logger.info("企微分享链队列:Redis 弹出并处理 {} 条(未出单等情况会重入队,与逐条日志一致)", adhocQueuePopped); + logger.info("总耗时 {} ms", elapsed); + logger.info("=========================================="); } } -