From 6ca5681ce55056d2a298ea9917d3ffedb97a50e7 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 28 十月 2026 13:46:05 +0800
Subject: [PATCH] 【丽水】collectUser\collectDept 同步调整

---
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
index 0651dd0..8c488f7 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
@@ -26,6 +26,7 @@
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -76,6 +77,11 @@
 
     @Autowired
     private RedisCache redisCache;
+
+    /**
+     * 鐢ㄦ埛鍚屾浠诲姟杩愯鏍囪锛岄伩鍏嶉噸澶嶇偣鍑�/閲嶅璋冪敤骞跺彂璺戝叏閲忓悓姝�
+     */
+    private final AtomicBoolean userSyncRunning = new AtomicBoolean(false);
 
     private static final long SHARDING_THRESHOLD = 5_000_000L;
     private static final String PAT_ARCHIVE_TABLE = "pat_archive";
@@ -703,6 +709,39 @@
         return size;
     }
 
+    /**
+     * 寮傛鍚屾鐢ㄦ埛淇℃伅锛氭帴鍙g珛鍗宠繑鍥烇紝瀹為檯鍚屾浜ょ粰绾跨▼姹犲悗鍙版墽琛屻��
+     * 浣跨敤 AtomicBoolean 闃叉閲嶅鎻愪氦瀵艰嚧澶氫釜鍏ㄩ噺鍚屾浠诲姟骞跺彂鎵ц銆�
+     */
+    @Override
+    public boolean selectUserListAsync(SysUser sysUser) {
+        if (!userSyncRunning.compareAndSet(false, true)) {
+            log.warn("鐢ㄦ埛淇℃伅鍚屾浠诲姟姝e湪鎵ц涓紝蹇界暐鏈鎻愪氦");
+            return false;
+        }
+        try {
+            taskExecutor.execute(() -> {
+                long start = System.currentTimeMillis();
+                log.info("鐢ㄦ埛淇℃伅寮傛鍚屾浠诲姟寮�濮嬫墽琛�");
+                try {
+                    Integer count = selectUserList(sysUser);
+                    log.info("鐢ㄦ埛淇℃伅寮傛鍚屾浠诲姟鎵ц瀹屾垚锛屽鐞嗘暟閲忥細{}锛岃�楁椂锛歿}ms",
+                            count, System.currentTimeMillis() - start);
+                } catch (Throwable e) {
+                    log.error("鐢ㄦ埛淇℃伅寮傛鍚屾浠诲姟鎵ц澶辫触锛岃�楁椂锛歿}ms",
+                            System.currentTimeMillis() - start, e);
+                } finally {
+                    userSyncRunning.set(false);
+                }
+            });
+            return true;
+        } catch (RuntimeException e) {
+            userSyncRunning.set(false);
+            log.error("鐢ㄦ埛淇℃伅寮傛鍚屾浠诲姟鎻愪氦澶辫触", e);
+            return false;
+        }
+    }
+
     @Override
     public Integer selectUserList(SysUser sysUser) {
         List<SysUser> sysUserList = chMapper.selectUserList(sysUser);

--
Gitblit v1.9.3