From 9a7ee34013ff0a0eb9a65d76ced42b4f13f3e4d4 Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期四, 13 三月 2025 17:39:22 +0800 Subject: [PATCH] 从lis、pacs视图查询增加携带院区 修改签到登记价格问题 --- ltkj-admin/src/main/java/com/ltkj/web/config/timer/AsyncResultTask.java | 53 ++++++++++++++++++++++++++++++----------------------- 1 files changed, 30 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 b1a9a57..44abae9 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())); @@ -130,7 +139,7 @@ if (null != jy && !jy.isEmpty()) { log.info("鍚屾妫�楠屼汉鍛� 鎵ц鏁伴噺->{}", jy.size()); for (String s : jy) { - extractedjianyan(s); + extractedjianyan(s,dictHosp.getCode()); } } @@ -138,7 +147,7 @@ if (null != jc && !jc.isEmpty()) { log.info("鍚屾妫�鏌ヤ汉鍛� 鎵ц鏁伴噺->{}", jc.size()); for (String s : jc) { - extractedjiancha(s); + extractedjiancha(s,dictHosp.getCode()); } } Map<String, Object> map = new HashMap<>(); @@ -152,7 +161,7 @@ List<LtkjExamJcsqd> list = jcsqdService.getLtkjJcsqdByTjh(s); if(null !=list && !list.isEmpty()){ for (LtkjExamJcsqd jcsqd : list) { - if(jcsqd.getJgzt().contains("銆�") || jcsqd.getJgzt().contains("锛�") || jcsqd.getJgzt().contains(";")){ + if(StringUtil.isNotBlank(jcsqd.getJgzt())){ String[] split = jcsqd.getJgzt().replaceAll("\n", "").split("銆倈锛泑;"); for (String jg : split) { if(StringUtil.isNotBlank(jg) && !jg.contains("鏈寮傚父") @@ -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()); } } @@ -216,7 +223,7 @@ taskScheduler.schedule(this::checkAndAddNewTasks, Instant.now().plus(2, ChronoUnit.MINUTES)); } - private void extractedjianyan(String s) { + private void extractedjianyan(String s,String hosp) { try { List<Aws> awsList = testMapper.getWsxmLtkjHysqdByLisViBySLAVEWS(s); if(null !=awsList && !awsList.isEmpty()){ @@ -226,7 +233,7 @@ awsService.saveBatch(awsList); log.info("淇濆瓨澶栭�侀」鐩垚鍔�"); } - List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(s); + List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(s,hosp); List<LtkjHysqd> wssq = testMapper.getWsxmLtkjHysqdByLisVi(s); if(null !=wssq && !wssq.isEmpty())hysqdList.addAll(wssq); if (null != hysqdList && !hysqdList.isEmpty()) { @@ -254,16 +261,16 @@ } - private void extractedjiancha(String s) { + private void extractedjiancha(String s,String hosp) { try { - List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(s); + List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(s,hosp); if (null != jcsqdList && !jcsqdList.isEmpty()) { DynamicDataSourceContextHolder.clearDataSourceType(); jcsqdService.deletedLtkjJcsqdByTjhAndTmh(s); jcbgdService.deletedLtkjJcbgdByTjhAndTmh(s); jcsqdService.saveBatch(jcsqdList); - List<LtkjExamJcbgd> jcbgdList = testMapper.getCcXZxYyPacsLtkjExamJcbgd(s); + List<LtkjExamJcbgd> jcbgdList = testMapper.getCcXZxYyPacsLtkjExamJcbgd(s,hosp); DynamicDataSourceContextHolder.clearDataSourceType(); if (null != jcbgdList && !jcbgdList.isEmpty()) jcbgdService.saveBatch(jcbgdList); DynamicDataSourceContextHolder.clearDataSourceType(); -- Gitblit v1.8.0