From 0c1f8c479065739f3c7a5126de8e667035d00b58 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 12 十月 2026 14:21:52 +0800
Subject: [PATCH] 【丽水】满意度模块化:新增 ruoyi-satisfaction 独立模块

---
 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