From ac120ff7d3239da85c05d0ec7f8d8e416d557432 Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期一, 10 三月 2025 10:51:08 +0800
Subject: [PATCH] zjh20250310

---
 ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncResultTask.java |   66 +++++++++++++++++++++-----------
 1 files changed, 43 insertions(+), 23 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 f67a7c3..d400079 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,18 +107,24 @@
         }, Instant.now().plus(15, ChronoUnit.MINUTES));
     }
 
+    private ReentrantLock getLock(String id) {
+        return lockMap.computeIfAbsent(id, k -> new ReentrantLock());
+    }
+
     // 鎵ц鏃ュ織鍚屾浠诲姟鐨勬柟娉�
     public void executeTask(DictHosp dictHosp) {
         // 鑾峰彇閿侊紝纭繚鍚屼竴鏃堕棿鍙湁涓�涓换鍔℃墽琛�
-        log.info("{}鎵ц缁撴灉鍚屾", dictHosp.getCode());
-        dataSourceConfig.addDataSource(dictHosp.getDbname());
-        DataSourceContextHolder.setDataSourceKey(dictHosp.getDbname());
-        String dsqkssj = configService.selectConfigByKey("dsqkssj");
-        String dsqjssj = configService.selectConfigByKey("dsqjssj");
-        boolean panduandangqianshijian = panduandangqianshijian(dsqkssj, dsqjssj);
-
+        log.info("{}鎵ц缁撴灉鍚屾鍔犻攣鍓�",JSONUtil.toJsonStr(dictHosp));
+        ReentrantLock reentrantLock = getLock(dictHosp.getCode());
         boolean lock = reentrantLock.tryLock();
         try {
+            log.info("{}鎵ц缁撴灉鍚屾鍔犻攣鍚�",JSONUtil.toJsonStr(dictHosp));
+            log.info("{}鎵ц缁撴灉鍚屾", dictHosp.getCode());
+            dataSourceConfig.addDataSource(dictHosp.getDbname());
+            DataSourceContextHolder.setDataSourceKey(dictHosp.getDbname());
+            String dsqkssj = configService.selectConfigByKey("dsqkssj");
+            String dsqjssj = configService.selectConfigByKey("dsqjssj");
+            boolean panduandangqianshijian = panduandangqianshijian(dsqkssj, dsqjssj);
             if (!panduandangqianshijian) {
                 if (lock) {
                     log.info("浠诲姟寮�濮嬫墽琛屾椂闂� -> {}", dateTimeFormat.format(new Date()));
@@ -152,12 +161,12 @@
                                 List<LtkjExamJcsqd> list = jcsqdService.getLtkjJcsqdByTjh(s);
                                 if(null !=list && !list.isEmpty()){
                                     for (LtkjExamJcsqd jcsqd : list) {
-                                        if(jcsqd.getJgbx().contains("銆�")){
-                                            String[] split = jcsqd.getJgzt().split("銆�");
+                                        if(StringUtil.isNotBlank(jcsqd.getJgzt())){
+                                            String[] split = jcsqd.getJgzt().replaceAll("\n", "").split("銆倈锛泑;");
                                             for (String jg : split) {
                                                 if(StringUtil.isNotBlank(jg) && !jg.contains("鏈寮傚父")
-                                                        && !jg.contains("鏈鏄庢樉寮傚父") && !jg.contains("鏈鍗犱綅")
-                                                        && !jg.contains("鏈鏄庢樉")&& !jg.contains("姝e父")&& !jg.contains("鍙屼晶妞庨棿瀛旀棤鐙獎")){
+                                                        && !jg.contains("鏈鏄庢樉寮傚父") && !jg.contains("鏈鍗犱綅") && !jg.contains("鏈")
+                                                        && !jg.contains("鏈鏄庢樉")&& !jg.contains("姝e父")&& !jg.contains("鍙屼晶妞庨棿瀛旀棤鐙獎")&& !jg.contains("鏃犳畩")){
                                                     TjJcycxm jcycxm=new TjJcycxm();
                                                     jcycxm.setTjh(s);
                                                     jcycxm.setYqid(dictHosp.getCode());
@@ -187,13 +196,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());
         }
     }
 
@@ -226,9 +233,22 @@
                 awsService.saveBatch(awsList);
                 log.info("淇濆瓨澶栭�侀」鐩垚鍔�");
             }
-            List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(s);
             List<LtkjHysqd> wssq = testMapper.getWsxmLtkjHysqdByLisVi(s);
-            if(null !=wssq && !wssq.isEmpty())hysqdList.addAll(wssq);
+            if(null !=wssq && !wssq.isEmpty()){
+                for (LtkjHysqd hysqd : wssq) {
+                    LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(hysqd.getTjh(), hysqd.getTmh());
+                    if (null != jybgid) {
+                        ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(hysqd.getTjh(), hysqd.getTmh());
+                        ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(hysqd.getTmh());
+                    }
+                    if (ltkjHysqdService.save(hysqd)) {
+                        List<LtkjHybgd> wsbg = testMapper.getWsxmLtkjHybgdByLisVi(s);
+                        ltkjHybgdService.saveBatch(wsbg);
+                    }
+                }
+            }
+
+            List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(s);
             if (null != hysqdList && !hysqdList.isEmpty()) {
                 for (LtkjHysqd hysqd : hysqdList) {
                     LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(hysqd.getTjh(), hysqd.getTmh());
@@ -238,8 +258,8 @@
                     }
                     if (ltkjHysqdService.save(hysqd)) {
                         List<LtkjHybgd> hybgdList = testMapper.getCcXZxYyLtkjHybgdByLisVi(hysqd.getTmh());
-                        List<LtkjHybgd> wsbg = testMapper.getWsxmLtkjHybgdByLisVi(s);
-                        if(null !=wsbg && !wsbg.isEmpty())hybgdList.addAll(wsbg);
+//                        List<LtkjHybgd> wsbg = testMapper.getWsxmLtkjHybgdByLisVi(s);
+//                        if(null !=wsbg && !wsbg.isEmpty())hybgdList.addAll(wsbg);
                         ltkjHybgdService.saveBatch(hybgdList);
                     }
                 }

--
Gitblit v1.8.0