From 33e1839c6214ad72cc5a76ae254ce0bb542e9263 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期六, 10 十月 2026 09:31:11 +0800
Subject: [PATCH] 提交

---
 smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java |   51 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 48 insertions(+), 3 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 3f00820..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;
     }
 
     /**
@@ -482,6 +523,8 @@
     public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
         ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
         serviceSubtask.setTaskid(serviceTask.getTaskid());
+        serviceSubtask.setOrgid(serviceTask.getOrgid());
+        serviceSubtask.setCampusid(serviceTask.getCampusid());
         if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
             serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
         serviceSubtask.setDrcode(patMedOuthosp.getDrcode());
@@ -546,7 +589,8 @@
         Integer num = 0;
 
         //鏅畞 瀛樺湪鐩稿悓璇婃柇鐨勯棬璇婅褰曞垯鏂板鍐嶆闅忚,鍚﹀垯鏂板闅忚
-        if(patMedOuthosp.getOrgid().equals("47255004333112711A1001")){
+        if(ObjectUtils.isNotEmpty(patMedOuthosp.getOrgid()) &&
+                patMedOuthosp.getOrgid().equals("47255004333112711A1001")){
             PatMedOuthosp patMedOuthospVo = new PatMedOuthosp();
             List<PatMedOuthosp> patMedOuthosps = new ArrayList<>();
             patMedOuthospVo.setOrgid(patMedOuthosp.getOrgid());
@@ -653,7 +697,8 @@
         serviceSubtaskEntity0.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 7L)));
         serviceSubtaskEntity0.setPatid(patid);
         //鏅畞鏍规嵁璇婃柇鍐嶆闅忚
-        if(patMedOuthosp.getOrgid().equals("47255004333112711A1001") && !CollectionUtils.isEmpty(inhospids)){
+        if(ObjectUtils.isNotEmpty(patMedOuthosp.getOrgid()) &&
+                patMedOuthosp.getOrgid().equals("47255004333112711A1001") && !CollectionUtils.isEmpty(inhospids)){
             serviceSubtaskEntity0.setInhospids(inhospids);
         }else {
             serviceSubtaskEntity0.setDeptcode(deptcode);

--
Gitblit v1.9.3