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