From 8b9db684defff26456d58609ea243e9fd21ed081 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 17 四月 2026 10:16:02 +0800
Subject: [PATCH] 【本地】获取随访统计比例 逻辑调整

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java |   60 ++++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
index 119a6da..55b34de 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -457,11 +457,21 @@
     }
 
     private void processResultList(List<ServiceSLTDInhospResDTO> resultList, List<String> types, String cry, String campusId) {
-        for (String type : types)
+        // 闂ㄨ瘖(FH0108.01)鍜屾�ヨ瘖(FH0108.03)鍦ㄤ笟鍔′笂鏄悓涓�绫绘暟鎹紝鍏辩敤鍚屼竴涓� resultList銆�
+        // 鑻� types 鍚屾椂鍖呭惈涓よ�咃紝outHospitalDate 浼氳璋冪敤涓ゆ瀵艰嚧閲嶅鍏ュ簱銆�
+        // 鍥犳鍙 types 涓惈鏈変换鎰忎竴涓棬鎬ヨ瘖绫诲瀷锛屽氨鍙鐞嗕竴娆°��
+        boolean outpProcessed = false;
+        for (String type : types) {
             switch (type) {
                 case "FH0108.01":
-                    log.info("銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹�");
-                    outHospitalDate(resultList);
+                case "FH0108.03":
+                    if (!outpProcessed) {
+                        log.info("銆恜arseResponseData銆戣В鏋愰棬鎬ヨ瘖鏁版嵁锛宼ypes={}", types);
+                        outHospitalDate(resultList);
+                        outpProcessed = true;
+                    } else {
+                        log.info("銆恜arseResponseData銆戦棬鎬ヨ瘖鏁版嵁宸插鐞嗭紝璺宠繃 type={}", type);
+                    }
                     break;
                 case "FH0109.26":
                     log.info("銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹�");
@@ -483,14 +493,11 @@
                     log.info("銆恜arseResponseData銆戣В鏋愰浣忛櫌锛堝叾浠栵級鏁版嵁");
                     inHospitalDate(resultList, cry);
                     break;
-//                case "FH0108.03":
-//                    log.info("銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁");
-//                    outHospitalDate(resultList);
-//                    break;
                 default:
                     log.warn("銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}", type);
                     break;
             }
+        }
     }
 
     private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {
@@ -607,37 +614,38 @@
             }
 
         } else if (cry.equals("1")) {
-//           鍑洪櫌鏁版嵁澶勭悊
-            if (CollectionUtils.isEmpty(existingInhosps)) {
-                //濡傛灉涓虹┖锛岃鍏堝垽鏂紝棰勫叆闄㈡槸鍚︽湁鍊硷紝鏈夊�肩殑璇濆垯鏇存柊
+            // 鍑洪櫌鏁版嵁澶勭悊
+            if (CollectionUtils.isNotEmpty(existingInhosps)) {
+                // 宸插瓨鍦ㄥ嚭闄㈣褰曪紝鐩存帴鏇存柊锛堜繚鎸佹渶鏂版暟鎹級
+                patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid());
+                patMedInhospService.updatePatMedInhosp(patMedInhosp);
+                log.info("鍑洪櫌璁板綍宸插瓨鍦紝鎵ц鏇存柊锛歴erialnum={}, orgid={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid());
+            } else {
+                // 涓嶅瓨鍦ㄥ嚭闄㈣褰曪紝鍏堟煡棰勫叆闄紙state=3锛夛紝鍐嶆煡鍏ラ櫌锛坰tate=0锛�
                 queryInhosp.setInhospstate("3");
-                log.info("-----patMedInhospList杩涙潵浜嗕笉锛熷叆鍙備负锛歿}", queryInhosp);
+                log.info("-----鏌ヨ棰勫叆闄㈣褰曪紝鍏ュ弬涓猴細{}", queryInhosp);
                 List<PatMedInhosp> patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
-                log.info("----patMedInhospList杩涙潵浜嗕笉锛熻繑鍙備负锛歿}", CollectionUtils.isEmpty(patMedInhospList) ? null : patMedInhospList.get(0).getSerialnum());
+                log.info("----棰勫叆闄㈡煡璇㈢粨鏋滐細{}", CollectionUtils.isEmpty(patMedInhospList) ? "绌�" : patMedInhospList.get(0).getSerialnum());
                 if (CollectionUtils.isNotEmpty(patMedInhospList)) {
-                    //濡傛灉棰勫叆闄笉涓虹┖锛屽垯杩涜淇敼
+                    // 瀛樺湪棰勫叆闄㈣褰曪紝鏇存柊涓哄嚭闄㈢姸鎬�
+                    patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
                     patMedInhospService.updatePatMedInhosp(patMedInhosp);
+                    log.info("鐢遍鍏ラ櫌鏇存柊涓哄嚭闄細serialnum={}", patMedInhosp.getSerialnum());
                 } else {
-                    //濡傛灉鍏ラ櫌涓嶄负绌猴紝鍒欒繘琛屼慨鏀�
+                    // 鍐嶆煡鍏ラ櫌璁板綍锛坰tate=0锛�
                     queryInhosp.setInhospstate("0");
                     patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
+                    log.debug("鍏ラ櫌鏌ヨ缁撴灉锛歿}", CollectionUtils.isEmpty(patMedInhospList) ? "绌�" : patMedInhospList.size());
                     if (CollectionUtils.isNotEmpty(patMedInhospList)) {
+                        // 瀛樺湪鍏ラ櫌璁板綍锛屾洿鏂颁负鍑洪櫌鐘舵��
+                        patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
                         patMedInhospService.updatePatMedInhosp(patMedInhosp);
-                    }
-                }
-
-                //濡傛灉閮戒负绌猴紝鍒欒繘琛屾柊澧�
-                if (CollectionUtils.isEmpty(patMedInhospList)) {
-                    //濡傛灉鍏ラ櫌涓嶄负绌猴紝鍒欒繘琛屼慨鏀�
-                    queryInhosp.setInhospstate("0");
-                    log.debug("鍑洪櫌queryInhosp鍏ュ弬涓猴細{}", queryInhosp);
-                    List<PatMedInhosp> patMedInhosps = patMedInhospService.selectPatMedInhosp(queryInhosp);
-                    log.debug("鍑洪櫌patMedInhospList杩斿弬涓猴細{}", CollectionUtils.isEmpty(patMedInhosps) ? null : patMedInhosps.size());
-                    if (CollectionUtils.isNotEmpty(patMedInhosps)) {
-                        patMedInhospService.updatePatMedInhosp(patMedInhosp);
+                        log.info("鐢卞叆闄㈡洿鏂颁负鍑洪櫌锛歴erialnum={}", patMedInhosp.getSerialnum());
                     } else {
+                        // 棰勫叆闄㈠拰鍏ラ櫌鍧囦笉瀛樺湪锛岀洿鎺ユ柊澧炲嚭闄㈣褰�
                         try {
                             patMedInhospService.insertPatMedInhosp(patMedInhosp);
+                            log.info("鏂板鍑洪櫌璁板綍锛歴erialnum={}", patMedInhosp.getSerialnum());
                         } catch (org.springframework.dao.DuplicateKeyException e) {
                             log.warn("鍑洪櫌璁板綍宸插瓨鍦紝璺宠繃锛歴erialnum={}, orgid={}, state={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid(), patMedInhosp.getInhospstate());
                         }

--
Gitblit v1.9.3