From 64f3a44f835a917c7d4157856ea4a1ede84b26a9 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期一, 14 九月 2026 14:04:23 +0800
Subject: [PATCH] 【景宁】景宁 只要存在相同诊断、患者的门诊记录则当再次随访处理

---
 smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java |  103 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 73 insertions(+), 30 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 226d9b9..729cc51 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -21,6 +21,7 @@
 import java.time.ZoneId;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 鎮h�呴棬璇婅褰昐ervice涓氬姟灞傚鐞�
@@ -543,15 +544,45 @@
     @Override
     public Integer dealPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum){
         Integer num = 0;
-        ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity();
-        serviceSubtask.setInhospid(patMedOuthosp.getId());
-        serviceSubtask.setServiceType("3");
-        serviceSubtask.setVisitCount(1);
-        List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask);
-        if(CollectionUtils.isEmpty(serviceSubtasks)){
-            num = followUpByPatMedOuthosp(patMedOuthosp, visitTimeNum);
+
+        //鏅畞 瀛樺湪鐩稿悓璇婃柇鐨勯棬璇婅褰曞垯鏂板鍐嶆闅忚,鍚﹀垯鏂板闅忚
+        if(ObjectUtils.isNotEmpty(patMedOuthosp.getOrgid()) &&
+                patMedOuthosp.getOrgid().equals("47255004333112711A1001")){
+            PatMedOuthosp patMedOuthospVo = new PatMedOuthosp();
+            List<PatMedOuthosp> patMedOuthosps = new ArrayList<>();
+            patMedOuthospVo.setOrgid(patMedOuthosp.getOrgid());
+            patMedOuthospVo.setPatid(patMedOuthosp.getPatid());
+            patMedOuthospVo.setIcd10code(patMedOuthosp.getIcd10code());
+            // 鍚屼竴涓偅鑰� + 鍚屼竴涓瘖鏂紝鍘嗗彶涓婂凡缁忔湁闂ㄨ瘖闅忚璁板綍锛堟帓闄ゆ湰娆″氨璇婏紝鏈鍦ㄨ皟鐢ㄥ墠宸茶惤搴擄級
+            patMedOuthosps = selectPatMedOuthospList(patMedOuthospVo);
+            Long currentId = patMedOuthosp.getId();
+            List<Long> ids = patMedOuthosps.stream().map(PatMedOuthosp::getId).filter(ObjectUtils::isNotEmpty)
+                    .filter(id -> !id.equals(currentId))
+                    .distinct()
+                    .collect(Collectors.toList());
+            ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity();
+            //鏅畞 鍙瀛樺湪鐩稿悓璇婃柇銆佹偅鑰呯殑闂ㄨ瘖璁板綍鍒欏綋鍐嶆闅忚澶勭悊
+            serviceSubtask.setInhospids(ids);
+            serviceSubtask.setServiceType("3");
+            List<ServiceSubtask> serviceSubtasks = CollectionUtils.isEmpty(ids)
+                    ? new ArrayList<>()
+                    : serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask);
+            if(CollectionUtils.isEmpty(serviceSubtasks)){
+                num = followUpByPatMedOuthosp(patMedOuthosp, visitTimeNum);
+            }else {
+                num = followUpAgainByPatMedOuthosp(patMedOuthosp, visitTimeNum, ids);
+            }
         }else {
-            num = followUpAgainByPatMedOuthosp(patMedOuthosp, visitTimeNum);
+            ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity();
+            serviceSubtask.setInhospid(patMedOuthosp.getId());
+            serviceSubtask.setServiceType("3");
+            serviceSubtask.setVisitCount(1);
+            List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask);
+            if(CollectionUtils.isEmpty(serviceSubtasks)){
+                num = followUpByPatMedOuthosp(patMedOuthosp, visitTimeNum);
+            }else {
+                num = followUpAgainByPatMedOuthosp(patMedOuthosp, visitTimeNum, null);
+            }
         }
         return num;
     }
@@ -610,7 +641,7 @@
      * @return
      */
     @Override
-    public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum) {
+    public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum, List<Long> inhospids) {
         Date adminDate = patMedOuthosp.getAdmitdate();
         Date newDate = addDays(adminDate, visitTimeNum);
 
@@ -622,32 +653,44 @@
         serviceSubtaskEntity0.setOrgid(patMedOuthosp.getOrgid());
         serviceSubtaskEntity0.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 7L)));
         serviceSubtaskEntity0.setPatid(patid);
-        serviceSubtaskEntity0.setDeptcode(deptcode);
+        //鏅畞鏍规嵁璇婃柇鍐嶆闅忚
+        if(ObjectUtils.isNotEmpty(patMedOuthosp.getOrgid()) &&
+                patMedOuthosp.getOrgid().equals("47255004333112711A1001") && !CollectionUtils.isEmpty(inhospids)){
+            serviceSubtaskEntity0.setInhospids(inhospids);
+        }else {
+            serviceSubtaskEntity0.setDeptcode(deptcode);
+        }
+
         serviceSubtaskEntity0.setSort(0);
         List<ServiceSubtask> serviceSubtaskList0 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity0);
         if (!CollectionUtils.isEmpty(serviceSubtaskList0)) {
-            ServiceSubtask serviceSubtask0 = serviceSubtaskList0.get(0);
-            serviceSubtask0.setSendstate(6L);
-            serviceSubtask0.setUpdateTime(new Date());
-            serviceSubtask0.setFinishtime(adminDate);
-            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask0);
+            for (ServiceSubtask serviceSubtask0 : serviceSubtaskList0) {
+                serviceSubtask0.setSendstate(6L);
+                serviceSubtask0.setUpdateTime(new Date());
+                serviceSubtask0.setFinishtime(adminDate);
+                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask0);
 
-            ServiceSubtask serviceSubtask1 = DtoConversionUtils.sourceToTarget(serviceSubtask0, ServiceSubtask.class);
-            serviceSubtask1.setId(null);
-            serviceSubtask1.setSendstate(2L);
-            serviceSubtask1.setUpid(serviceSubtask0.getId().intValue());
-            serviceSubtask1.setVisitCount(serviceSubtask0.getVisitCount() + 1);
-            serviceSubtask1.setVisitType(serviceSubtask0.getVisitType());
-            serviceSubtask1.setVisitDeptCode(serviceSubtask0.getVisitDeptCode());
-            serviceSubtask1.setVisitDeptName(serviceSubtask0.getVisitDeptName());
-            serviceSubtask1.setCreateTime(new Date());
-            serviceSubtask1.setUpdateTime(new Date());
-            serviceSubtask1.setFinishtime(null);
-            serviceSubtask1.setAdmindate(adminDate);
+                ServiceSubtask serviceSubtask1 = DtoConversionUtils.sourceToTarget(serviceSubtask0, ServiceSubtask.class);
+                serviceSubtask1.setId(null);
+                serviceSubtask1.setSendstate(2L);
+                serviceSubtask1.setUpid(serviceSubtask0.getId().intValue());
+                //鑰佹暟鎹殑visit_count鍙兘涓虹┖锛岄粯璁ゆ寜绗�1娆$畻
+                Integer visitCount = ObjectUtils.isEmpty(serviceSubtask0.getVisitCount()) ? 1 : serviceSubtask0.getVisitCount();
+                serviceSubtask1.setVisitCount(visitCount + 1);
+                serviceSubtask1.setVisitType(serviceSubtask0.getVisitType());
+                serviceSubtask1.setVisitDeptCode(serviceSubtask0.getVisitDeptCode());
+                serviceSubtask1.setVisitDeptName(serviceSubtask0.getVisitDeptName());
+                //鏂颁换鍔$瀹ゆ槸褰撳墠鍑洪櫌绉戝
+                serviceSubtask1.setDeptcode(patMedOuthosp.getDeptcode());
+                serviceSubtask1.setCreateTime(new Date());
+                serviceSubtask1.setUpdateTime(new Date());
+                serviceSubtask1.setFinishtime(null);
+                serviceSubtask1.setAdmindate(adminDate);
 
-            serviceSubtask1.setVisitTime(newDate);
-            serviceSubtask1.setLongSendTime(newDate);
-            i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask1);
+                serviceSubtask1.setVisitTime(newDate);
+                serviceSubtask1.setLongSendTime(newDate);
+                i = i + serviceSubtaskMapper.insertServiceSubtask(serviceSubtask1);
+            }
         } else {
             //鏌ョ湅宸插畬鎴愮殑浠诲姟
 //            ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();

--
Gitblit v1.9.3