From 78fca0cb068fe7a7be9ad9b965fa3d1a2b1e2828 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期四, 30 四月 2026 18:19:28 +0800
Subject: [PATCH] #异步

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java |   65 ++++++++++++++++++--------------
 1 files changed, 36 insertions(+), 29 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java
index bb44b8d..203ecb9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CloudWmsNotifySchedule.java
@@ -19,6 +19,7 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /** 浜戜粨涓婃姤瀹氭椂浠诲姟 */
 @Slf4j
@@ -45,37 +46,43 @@
             return;
         }
         long nowMs = System.currentTimeMillis();
-        for (CloudWmsNotifyLog logRecord : pending) {
-            try {
-                Integer maxRetry = logRecord.getMaxRetryCount();
-                Integer intervalSeconds = logRecord.getRetryIntervalSeconds();
-                if (maxRetry == null || intervalSeconds == null) {
-                    log.warn("浜戜粨涓婃姤寰呭姙璺宠繃锛氶噸璇曞弬鏁扮己澶憋紝id={}锛宐izRef={}锛宮axRetry={}锛宨ntervalSeconds={}",
-                            logRecord.getId(), logRecord.getBizRef(), maxRetry, intervalSeconds);
-                    continue;
-                }
-                int effectiveIntervalSeconds = Math.max(0, intervalSeconds);
-                // if (logRecord.getRetryCount() != null && logRecord.getRetryCount() >= maxRetry) {
-                if (!isInfiniteRetry(maxRetry)
-                        && logRecord.getRetryCount() != null
-                        && logRecord.getRetryCount() >= maxRetry) {
-                    log.info("浜戜粨涓婃姤寰呭姙璺宠繃锛氶噸璇曟鏁板凡杈句笂闄愶紝id={}锛宐izRef={}锛宺etryCount={}锛宮axRetry={}",
-                            logRecord.getId(), logRecord.getBizRef(), logRecord.getRetryCount(), maxRetry);
-                    continue;
-                }
-                if (logRecord.getLastNotifyTime() != null) {
-                    long elapsed = (nowMs - logRecord.getLastNotifyTime().getTime()) / 1000;
-                    if (elapsed < effectiveIntervalSeconds) {
-//                        log.info("浜戜粨涓婃姤寰呭姙璺宠繃锛氭湭鍒伴噸璇曢棿闅旓紝id={}锛宐izRef={}锛宔lapsed={}s锛宨nterval={}s",
-//                                logRecord.getId(), logRecord.getBizRef(), elapsed, effectiveIntervalSeconds);
-                        continue;
-                    }
-                }
-                processOne(logRecord);
-            } catch (Exception e) {
-                log.warn("浜戜粨涓婃姤瀹氭椂浠诲姟澶勭悊鍗曟潯寮傚父锛宨d={}锛宐izRef={}锛歿}", logRecord.getId(), logRecord.getBizRef(), e.getMessage());
+        List<CloudWmsNotifyLog> ready = pending.stream()
+                .filter(logRecord -> shouldProcess(logRecord, nowMs))
+                .collect(Collectors.toList());
+        ready.parallelStream().forEach(this::safeProcessOne);
+    }
+
+    private void safeProcessOne(CloudWmsNotifyLog logRecord) {
+        try {
+            processOne(logRecord);
+        } catch (Exception e) {
+            log.warn("浜戜粨涓婃姤瀹氭椂浠诲姟澶勭悊鍗曟潯寮傚父锛宨d={}锛宐izRef={}锛歿}", logRecord.getId(), logRecord.getBizRef(), e.getMessage());
+        }
+    }
+
+    private boolean shouldProcess(CloudWmsNotifyLog logRecord, long nowMs) {
+        Integer maxRetry = logRecord.getMaxRetryCount();
+        Integer intervalSeconds = logRecord.getRetryIntervalSeconds();
+        if (maxRetry == null || intervalSeconds == null) {
+            log.warn("浜戜粨涓婃姤寰呭姙璺宠繃锛氶噸璇曞弬鏁扮己澶憋紝id={}锛宐izRef={}锛宮axRetry={}锛宨ntervalSeconds={}",
+                    logRecord.getId(), logRecord.getBizRef(), maxRetry, intervalSeconds);
+            return false;
+        }
+        if (!isInfiniteRetry(maxRetry)
+                && logRecord.getRetryCount() != null
+                && logRecord.getRetryCount() >= maxRetry) {
+            log.info("浜戜粨涓婃姤寰呭姙璺宠繃锛氶噸璇曟鏁板凡杈句笂闄愶紝id={}锛宐izRef={}锛宺etryCount={}锛宮axRetry={}",
+                    logRecord.getId(), logRecord.getBizRef(), logRecord.getRetryCount(), maxRetry);
+            return false;
+        }
+        int effectiveIntervalSeconds = Math.max(0, intervalSeconds);
+        if (logRecord.getLastNotifyTime() != null) {
+            long elapsed = (nowMs - logRecord.getLastNotifyTime().getTime()) / 1000;
+            if (elapsed < effectiveIntervalSeconds) {
+                return false;
             }
         }
+        return true;
     }
 
     private void processOne(CloudWmsNotifyLog logRecord) {

--
Gitblit v1.9.1