From b989d87bb045dced59a834175af74ac21073d42b Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期五, 28 二月 2025 17:20:53 +0800 Subject: [PATCH] 修改自动同步 --- ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncResultTask.java | 22 ++++++++++++++-------- 1 files changed, 14 insertions(+), 8 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncResultTask.java b/ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncResultTask.java index 26c5ff5..7a41f2b 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncResultTask.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncResultTask.java @@ -29,6 +29,7 @@ import java.time.ZonedDateTime; import java.time.temporal.ChronoUnit; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; @@ -62,7 +63,7 @@ @Autowired private DataSourceConfig dataSourceConfig; - private final ReentrantLock reentrantLock = new ReentrantLock(); + private final Map<String, ReentrantLock> lockMap = new ConcurrentHashMap<>(); // 鐢ㄦ潵璺熻釜宸茶皟搴︿换鍔$殑鐢ㄦ埛ID闆嗗悎锛岄伩鍏嶉噸澶嶆坊鍔犱换鍔� private final Set<String> scheduledTasks = new HashSet<>(); @@ -85,6 +86,8 @@ // 鍒涘缓瀹氭椂浠诲姟鐨勬柟娉曪紝鐢ㄦ埛ID涓嶅瓨鍦ㄤ换鍔℃椂鎵嶄細娣诲姞 public void createTask(DictHosp dictHosp) { + log.info("杩涘叆鍒涘缓浠诲姟鏂规硶 ->{}",dictHosp.getCode()); + log.info("宸叉湁浠诲姟闆嗗悎 ->{}", scheduledTasks); // 濡傛灉浠诲姟宸茬粡瀛樺湪锛屽垯涓嶉噸澶嶆坊鍔� if (scheduledTasks.contains(dictHosp.getCode())) { return; @@ -104,6 +107,10 @@ }, Instant.now().plus(15, ChronoUnit.MINUTES)); } + private ReentrantLock getLock(String id) { + return lockMap.computeIfAbsent(id, k -> new ReentrantLock()); + } + // 鎵ц鏃ュ織鍚屾浠诲姟鐨勬柟娉� public void executeTask(DictHosp dictHosp) { // 鑾峰彇閿侊紝纭繚鍚屼竴鏃堕棿鍙湁涓�涓换鍔℃墽琛� @@ -114,6 +121,7 @@ String dsqjssj = configService.selectConfigByKey("dsqjssj"); boolean panduandangqianshijian = panduandangqianshijian(dsqkssj, dsqjssj); + ReentrantLock reentrantLock = getLock(dictHosp.getCode()); boolean lock = reentrantLock.tryLock(); try { if (!panduandangqianshijian) { @@ -187,13 +195,11 @@ log.error("瀹氭椂鍣ㄦ墽琛屾姤閿�"); log.error(String.valueOf(e),e.getMessage()); } finally { - if (reentrantLock.isLocked()) { - scheduledTasks.remove(dictHosp.getCode()); - reentrantLock.unlock(); - } - DataSourceContextHolder.setDataSourceKey(DataSourceType.MASTER.name()); - DataSourceContextHolder.clear(); - + reentrantLock.unlock(); + scheduledTasks.remove(dictHosp.getCode()); +// DataSourceContextHolder.setDataSourceKey(DataSourceType.MASTER.name()); +// DataSourceContextHolder.clear(); + log.info("浠诲姟{}宸查噴鏀鹃攣",dictHosp.getCode()); } } -- Gitblit v1.8.0