Просмотр исходного кода

外部渠道待处理记录的分页处理

wangyunpeng 1 месяц назад
Родитель
Сommit
f0d8b9bbd4
1 измененных файлов с 27 добавлено и 16 удалено
  1. 27 16
      api-module/src/main/java/com/tzld/piaoquan/api/job/ExternalChannelProcessJob.java

+ 27 - 16
api-module/src/main/java/com/tzld/piaoquan/api/job/ExternalChannelProcessJob.java

@@ -134,26 +134,37 @@ public class ExternalChannelProcessJob {
                 log.info("已将{}条创建时间早于{}的记录标记为失败", failedCount, beforeDaysTime);
                 log.info("已将{}条创建时间早于{}的记录标记为失败", failedCount, beforeDaysTime);
             }
             }
 
 
-            // 1. 查询所有待处理的记录(status=0),仅查询指定时间之后的记录
-            List<ExternalChannel> pendingList = externalChannelMapperExt.selectPendingList(QUERY_LIMIT, beforeDaysTime);
-
-            if (CollectionUtils.isEmpty(pendingList)) {
-                log.info("没有待处理的外部渠道记录");
-                return ReturnT.SUCCESS;
-            }
+            // 1. 循环分页查询并处理待处理的记录(status=0),仅查询指定时间之后的记录
+            int totalProcessed = 0;
+            int pageNum = 0;
+            List<ExternalChannel> pendingList;
+
+            do {
+                pageNum++;
+                pendingList = externalChannelMapperExt.selectPendingList(QUERY_LIMIT, beforeDaysTime);
+
+                if (CollectionUtils.isEmpty(pendingList)) {
+                    if (pageNum == 1) {
+                        log.info("没有待处理的外部渠道记录");
+                    }
+                    break;
+                }
 
 
-            log.info("找到{}条待处理记录", pendingList.size());
+                log.info("第{}页, 找到{}条待处理记录", pageNum, pendingList.size());
 
 
-            // 2. 逐条处理
-            for (ExternalChannel record : pendingList) {
-                try {
-                    processSingleRecord(record);
-                } catch (Exception e) {
-                    log.error("处理记录异常, id={}, rootSourceId={}", record.getId(), record.getRootSourceId(), e);
+                // 2. 逐条处理
+                for (ExternalChannel record : pendingList) {
+                    try {
+                        processSingleRecord(record);
+                        totalProcessed++;
+                    } catch (Exception e) {
+                        log.error("处理记录异常, id={}, rootSourceId={}", record.getId(), record.getRootSourceId(), e);
+                    }
                 }
                 }
-            }
 
 
-            log.info("外部渠道处理完成");
+            } while (pendingList.size() >= QUERY_LIMIT);
+
+            log.info("外部渠道处理完成, 共处理{}条记录", totalProcessed);
             return ReturnT.SUCCESS;
             return ReturnT.SUCCESS;
         } catch (Exception e) {
         } catch (Exception e) {
             log.error("处理外部渠道记录时发生异常", e);
             log.error("处理外部渠道记录时发生异常", e);