From d7e3192804fca756d881af360ffd5eea157ef9ad Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 21 十月 2026 15:45:18 +0800
Subject: [PATCH] 【市一】电话挂断服务
---
smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java | 51 +++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 47 insertions(+), 4 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
index d30b56e..4511145 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -37,6 +37,12 @@
@Slf4j
@Service
public class PatMedInhospServiceImpl implements IPatMedInhospService {
+
+ /**
+ * 鎵归噺鏌ユ爣绛炬椂鍗曟 IN 鐨勬渶澶т釜鏁�
+ */
+ private static final int TAG_QUERY_BATCH_SIZE = 500;
+
@Autowired
private PatMedInhospMapper patMedInhospMapper;
@Autowired
@@ -116,14 +122,51 @@
}
List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
- for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
- String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
- patMedInhosp1.setTagname(tagname);
- }
+ fillTagnames(patMedInhospList);
return patMedInhospList;
}
/**
+ * 鎵归噺鍥炲~鎮h�呮爣绛俱��
+ * <p>
+ * 鍘熸潵鏄嬁鍒板垪琛ㄥ悗閫愯璋冪敤 getTagnameBypatid锛屽睘浜庡吀鍨嬬殑 N+1锛氬垎椤� 10 鏉″氨鏄� 10 娆℃煡璇紝
+ * 闈炲垎椤佃皟鐢紙瀵煎嚭銆佸畾鏃朵换鍔★級鍑犲崈鏉″氨鏄嚑鍗冩鏌ヨ銆傝繖閲屾敼鎴愭寜 patid 鍘婚噸鍚庡垎鎵� IN 鏌ヨ锛�
+ * 涓�鎵规渶澶� {@link #TAG_QUERY_BATCH_SIZE} 涓紝閬垮厤 IN 鍒楄〃杩囬暱銆�
+ *
+ * @param patMedInhospList 寰呭洖濉殑浣忛櫌璁板綍鍒楄〃
+ */
+ private void fillTagnames(List<PatMedInhosp> patMedInhospList) {
+ if (CollectionUtils.isEmpty(patMedInhospList)) {
+ return;
+ }
+ List<Long> patids = patMedInhospList.stream()
+ .map(PatMedInhosp::getPatid)
+ .filter(Objects::nonNull)
+ .distinct()
+ .collect(Collectors.toList());
+ if (patids.isEmpty()) {
+ return;
+ }
+
+ Map<Long, String> tagMap = new HashMap<>(patids.size());
+ for (int i = 0; i < patids.size(); i += TAG_QUERY_BATCH_SIZE) {
+ List<Long> batch = patids.subList(i, Math.min(i + TAG_QUERY_BATCH_SIZE, patids.size()));
+ List<PatArchivetag> tags = patMedInhospMapper.selectTagnameByPatids(batch);
+ if (CollectionUtils.isEmpty(tags)) {
+ continue;
+ }
+ for (PatArchivetag tag : tags) {
+ if (tag.getPatid() != null) {
+ tagMap.put(tag.getPatid(), tag.getTagname());
+ }
+ }
+ }
+ for (PatMedInhosp patMedInhosp : patMedInhospList) {
+ patMedInhosp.setTagname(tagMap.get(patMedInhosp.getPatid()));
+ }
+ }
+
+ /**
* 褰掍竴鍖栧叆闄㈠簥浣嶆帓搴忓弬鏁�
* <p>
* asc / 1 -> asc锛堝簥浣嶆搴忥級锛宒esc / 2 -> desc锛堝簥浣嶅�掑簭锛夛紝鍏朵綑锛堝惈涓嶄紶锛�-> null锛堜笉鎺掑簭锛夈��
--
Gitblit v1.9.3