From 60ade5154522a042c816abaa1840751011ae0371 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 29 九月 2026 19:15:03 +0800
Subject: [PATCH] 1.省立同德满度问题处理 2.门急诊数据采集优化
---
smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java | 43 ++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 42 insertions(+), 1 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
index b73e932..9b0fcea 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -197,7 +197,48 @@
patMedOuthosp.setUpdateTime(DateUtils.getNowDate());
patMedOuthosp.setGuid(UUID.randomUUID().toString());
log.info("[insert] 璺敱鍒板垎琛�: {}", targetTable);
- return patMedOuthospMapper.insertIntoTable(targetTable, patMedOuthosp);
+ try {
+ return patMedOuthospMapper.insertIntoTable(targetTable, patMedOuthosp);
+ } catch (org.springframework.dao.DuplicateKeyException e) {
+ // 鍔犱簡 serialnum 鍞竴绱㈠紩鍚庯紝鏋佺骞跺彂鎴栭噸澶嶉噰闆嗕細琚暟鎹簱鐩存帴鎷︿笅锛�
+ // 杩欏睘浜�"璁板綍宸插瓨鍦�"锛屾寜姝e父璺宠繃澶勭悊锛堣繑鍥�0锛夛紝涓嶈褰撴垚鍏ュ簱澶辫触鍐欒繘閿欒琛�
+ log.info("[insert] serialnum={} 宸插瓨鍦ㄤ簬琛� {}锛堝敮涓�绱㈠紩鎷︽埅锛夛紝璺宠繃鎻掑叆", patMedOuthosp.getSerialnum(), targetTable);
+ return 0;
+ }
+ }
+
+ /**
+ * 鎵归噺鏌ヨ宸插叆搴撶殑 serialnum锛氭寜灏辫瘖鏃ユ湡瀹氫綅鍒嗚〃锛屼竴娆� IN 鏌ヨ鏌ュ嚭鏁撮〉宸插瓨鍦ㄧ殑璁板綍
+ * <p>
+ * 鍘熸潵姣忔潯璁板綍閮借 countBySerialnum 涓�娆★紝涓�椤� 500 鏉″氨鏄� 500 娆� SQL锛�
+ * 闂ㄦ�ヨ瘖鎸夊ぉ鍏ㄩ噺閲囬泦鏃舵瘡澶╄杩欎箞璺� 48 杞紝杩欓噷鍚堝苟鎴� 1 娆℃煡璇�
+ */
+ @Override
+ public Set<String> selectExistingSerialnums(String admitDateStr, Collection<String> serialnums) {
+ Set<String> existing = new HashSet<>();
+ if (CollectionUtils.isEmpty(serialnums)) {
+ return existing;
+ }
+ Date admitDate = null;
+ if (StringUtils.isNotBlank(admitDateStr)) {
+ try {
+ admitDate = new java.text.SimpleDateFormat("yyyy-MM-dd").parse(admitDateStr);
+ } catch (java.text.ParseException e) {
+ log.warn("[selectExistingSerialnums] 灏辫瘖鏃ユ湡瑙f瀽澶辫触锛歿}锛屾寜涓昏〃鏌ヨ", admitDateStr);
+ }
+ }
+ // 涓庢彃鍏ユ椂鐨勮矾鐢辫鍒欎繚鎸佷竴鑷达紝淇濊瘉鏌ラ噸鏌ョ殑灏辨槸瑕佸啓鍏ョ殑閭e紶琛�
+ String targetTable = admitDate == null ? null : resolveTargetTable(admitDate);
+ if (targetTable == null) {
+ targetTable = "pat_med_outhosp";
+ }
+ List<String> existed = patMedOuthospMapper.selectExistingSerialnums(targetTable, serialnums);
+ if (!CollectionUtils.isEmpty(existed)) {
+ existing.addAll(existed);
+ }
+ log.info("[selectExistingSerialnums] 鏃ユ湡={}锛屽垎琛�={}锛屽緟鏌}鏉★紝宸插瓨鍦▄}鏉�",
+ admitDateStr, targetTable, serialnums.size(), existing.size());
+ return existing;
}
/**
--
Gitblit v1.9.3