From d9281d43e27ab6c510d390ddb26eaffc8ccc1add Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 11 十一月 2026 14:04:52 +0800
Subject: [PATCH] 妇幼-补充住院随访档案生成日志、完成事件及自检文件

---
 smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java |   62 ++++++++++++++++++++++++++++---
 1 files changed, 56 insertions(+), 6 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java
index 04aef2b..9ccd188 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java
@@ -88,12 +88,62 @@
             log.error("insertOrUpdateChildArchive鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
             throw new BaseException("鍎跨妗f鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
         }
+        if (StringUtils.isEmpty(patChildArchiveDetail.getOuthospno())
+                && StringUtils.isEmpty(patChildArchiveDetail.getInhospno())) {
+            throw new BaseException("鍎跨妗f鍏ュ弬闂ㄨ瘖缂栧彿outhospno鍜屼綇闄㈢紪鍙穒nhospno涓嶈兘鍚屾椂涓虹┖");
+        }
+        if (StringUtils.isEmpty(patChildArchiveDetail.getArchiveType())) {
+            throw new BaseException("鍎跨妗f鍏ュ弬妗f绫诲瀷archiveType涓虹┖锛岃妫�鏌ュ叆鍙傛。妗堢被鍨�");
+        }
 
-        // 鍙紶浜嗚鎯卛d鏃讹紝鍙嶆煡鍑哄搴旂殑妗f涓婚敭id锛屼繚璇佸悗缁兘姝g‘鏇存柊涓昏〃
-        if (patChildArchiveDetail.getId() != null && patChildArchiveDetail.getArchiveid() == null) {
-            PatChildArchiveDetail existDetail = patChildArchiveDetailService.selectPatChildArchiveDetailById(patChildArchiveDetail.getId());
-            if (existDetail != null) {
-                patChildArchiveDetail.setArchiveid(existDetail.getArchiveid());
+        // 鎸変笟鍔¢敭鏌ヨ鎯�
+        PatChildArchiveDetail key = new PatChildArchiveDetail();
+        key.setOrgid(patChildArchiveDetail.getOrgid());
+        key.setPatid(patChildArchiveDetail.getPatid());
+        key.setOuthospno(patChildArchiveDetail.getOuthospno());
+        key.setInhospno(patChildArchiveDetail.getInhospno());
+        key.setArchiveType(patChildArchiveDetail.getArchiveType());
+        List<PatChildArchiveDetail> olds =
+                patChildArchiveDetailService.selectPatChildArchiveDetailList(key);
+
+        Long existArchiveId = null;
+        Long existDetailId = null;
+        if (CollectionUtils.isNotEmpty(olds)) {
+            existArchiveId = olds.get(0).getArchiveid();
+            existDetailId = olds.get(0).getId();
+        }
+
+        // 璇︽儏娌℃煡鍒帮紝鍐嶅厹搴曟寜鍚屾牱閿煡涓昏〃锛岄伩鍏嶄富琛ㄩ噸澶�
+        if (existArchiveId == null) {
+            PatChildArchive mainKey = new PatChildArchive();
+            mainKey.setOrgid(patChildArchiveDetail.getOrgid());
+            mainKey.setPatid(patChildArchiveDetail.getPatid());
+            mainKey.setOuthospno(patChildArchiveDetail.getOuthospno());
+            mainKey.setInhospno(patChildArchiveDetail.getInhospno());
+            mainKey.setArchiveType(patChildArchiveDetail.getArchiveType());
+            List<PatChildArchive> mainOlds =
+                    patChildArchiveMapper.selectPatChildArchiveList(mainKey);
+            if (CollectionUtils.isNotEmpty(mainOlds)) {
+                existArchiveId = mainOlds.get(0).getId();
+            }
+        }
+        patChildArchiveDetail.setArchiveid(existArchiveId);
+
+        // 鍚庨潰鏇存柊璇︽儏鏃讹紝浼樺厛鐢ㄤ笟鍔¢敭鍖归厤鍒扮殑 detail id
+        Long detailId = patChildArchiveDetail.getId();
+        if (detailId == null) {
+            detailId = existDetailId;
+        }
+
+
+        // 鏂板妗f鏃惰ˉ榛樿鏉ユ簮锛屾洿鏂版椂淇濈暀鍘熸潵婧�
+        if (existArchiveId == null && patChildArchiveDetail.getId() == null) {
+            if (StringUtils.isEmpty(patChildArchiveDetail.getSourceType())) {
+                patChildArchiveDetail.setSourceType("3");
+            }
+            if (StringUtils.isEmpty(patChildArchiveDetail.getSourceBizNo())) {
+                patChildArchiveDetail.setSourceBizNo(StringUtils.isNotEmpty(patChildArchiveDetail.getOuthospno())
+                        ? patChildArchiveDetail.getOuthospno() : patChildArchiveDetail.getInhospno());
             }
         }
 
@@ -121,7 +171,7 @@
         // 鍥炲~涓昏〃id鍒拌鎯咃紝鍚屾鐢熸垚/鏇存柊璇︽儏琛�
         patChildArchiveDetail.setArchiveid(patChildArchive.getId());
 
-        Long detailId = patChildArchiveDetail.getId();
+//      Long detailId = patChildArchiveDetail.getId();
         if (detailId == null && patChildArchiveDetail.getArchiveid() != null) {
             PatChildArchiveDetail query = new PatChildArchiveDetail();
             query.setArchiveid(patChildArchiveDetail.getArchiveid());

--
Gitblit v1.9.3