From 2977d912b75123339657e78f9ed0a1c712d4b7b6 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 04 十一月 2026 15:20:19 +0800
Subject: [PATCH] 【丽水】龙泉人民JZ_ZY_RuYuanDJ-新增入院-新增患者再入院逻辑

---
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java |  136 +++++++++++++++++++++++++-------------------
 1 files changed, 77 insertions(+), 59 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
index 0ae7652..d2cd05e 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -18,9 +18,8 @@
 import com.smartor.domain.*;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
-import com.smartor.service.IPatChildArchiveService;
-import com.smartor.service.IPatMaternityArchiveService;
 import com.smartor.service.IPatMedOuthospService;
+import com.smartor.service.IPatSpecificArchiveGenerateService;
 import com.smartor.service.IServiceExternalService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
@@ -50,6 +49,11 @@
 @Slf4j
 @Service
 public class ServiceExternalServiceImpl implements IServiceExternalService {
+    /**
+     * 榫欐硥浜烘皯鍖婚櫌鏈烘瀯ID
+     */
+    private static final String LONGQUAN_PEOPLE_HOSPITAL_ORG_ID = "47240004533118111A1001";
+
     @Autowired
     private SysDept2Mapper sysDeptMapper;
     @Autowired
@@ -79,9 +83,7 @@
     @Autowired
     private ISysConfigService configService;
     @Autowired
-    private IPatMaternityArchiveService patMaternityArchiveService;
-    @Autowired
-    private IPatChildArchiveService patChildArchiveService;
+    private IPatSpecificArchiveGenerateService patSpecificArchiveGenerateService;
     @Autowired
     private PatMedOuthospMapper patMedOuthospMapper;
     @Autowired
@@ -1821,9 +1823,66 @@
         } else {
             patMedInhosp.setCreateTime(new Date());
             i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp);
+            if (i == 1) {
+                //榫欐硥浜烘皯鍖婚櫌锛氭柊澧炰綇闄俊鎭椂澶勭悊鎮h�呭啀鍏ラ櫌
+                stopReadmissionFollowUpTasks(patMedInhosp);
+            }
         }
         if (i == 1) return true;
         return false;
+    }
+
+    /**
+     * 鎮h�呭啀鍏ラ櫌澶勭悊锛氭偅鑰呭啀娆″叆闄㈠悗锛屼笂涓�娆″嚭闄㈢敓鎴愮殑寰呮墽琛岄暱鏈熼殢璁夸换鍔′笉鍐嶆墽琛屻��
+     * 鐩墠浠呭榫欐硥浜烘皯鍖婚櫌鐢熸晥锛岄伩鍏嶅奖鍝嶅叾浠栨満鏋勩��
+     *
+     * @param patMedInhosp 鏈鏂板鐨勪綇闄俊鎭�
+     */
+    private void stopReadmissionFollowUpTasks(PatMedInhosp patMedInhosp) {
+        if (!LONGQUAN_PEOPLE_HOSPITAL_ORG_ID.equals(patMedInhosp.getOrgid())) {
+            return;
+        }
+        if (Objects.isNull(patMedInhosp.getPatid()) || Objects.isNull(patMedInhosp.getStarttime())) {
+            log.warn("榫欐硥浜烘皯鍖婚櫌鎮h�呭啀鍏ラ櫌澶勭悊璺宠繃锛宲atid鎴栧叆闄㈡椂闂翠负绌猴紝inhospno={}", patMedInhosp.getInhospno());
+            return;
+        }
+        try {
+            ServiceSubtaskEntity subtask = new ServiceSubtaskEntity();
+            subtask.setPatid(patMedInhosp.getPatid());
+            subtask.setOrgid(LONGQUAN_PEOPLE_HOSPITAL_ORG_ID);
+            subtask.setSendstate(2L);
+            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask);
+            if (CollectionUtils.isEmpty(serviceSubtaskList)) {
+                return;
+            }
+            int stopCount = 0;
+            for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+                //涓嶆槸闀挎湡浠诲姟锛屼笉澶勭悊
+                if (Objects.isNull(serviceSubtask.getLongSendTime())) {
+                    continue;
+                }
+                //鍑洪櫌鏃堕棿鏅氫簬鎴栫瓑浜庢湰娆″叆闄㈡椂闂寸殑浠诲姟锛屼笉灞炰簬鏈鍏ラ櫌鍓嶇殑寰呴殢璁夸换鍔�
+                if (Objects.isNull(serviceSubtask.getEndtime())
+                        || !serviceSubtask.getEndtime().before(patMedInhosp.getStarttime())) {
+                    continue;
+                }
+                serviceSubtask.setSendstate(4L);
+                serviceSubtask.setIsVisitAgain(2);
+                serviceSubtask.setResult("error");
+                serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark())
+                        ? serviceSubtask.getRemark() + ";鎮h�呭啀鍏ラ櫌" : "鎮h�呭啀鍏ラ櫌");
+                serviceSubtask.setUpdateTime(new Date());
+                if (Boolean.TRUE.equals(serviceSubtaskMapper.updateServiceSubtask(serviceSubtask))) {
+                    stopCount++;
+                }
+            }
+            log.info("榫欐硥浜烘皯鍖婚櫌鎮h�呭啀鍏ラ櫌澶勭悊瀹屾垚锛宲atid={}锛屾湰娆″叆闄㈡椂闂�={}锛屽仠姝㈠緟鎵ц闀挎湡浠诲姟{}鏉�",
+                    patMedInhosp.getPatid(), patMedInhosp.getStarttime(), stopCount);
+        } catch (Exception e) {
+            //鍐嶅叆闄换鍔″鐞嗗け璐ヤ笉褰卞搷鏈浣忛櫌淇℃伅鍏ュ簱
+            log.error("榫欐硥浜烘皯鍖婚櫌鎮h�呭啀鍏ラ櫌澶勭悊寮傚父锛宲atid={}锛宨nhospno={}",
+                    patMedInhosp.getPatid(), patMedInhosp.getInhospno(), e);
+        }
     }
 
     //鏂板闅忚浠诲姟鍚屾
@@ -2459,61 +2518,20 @@
         return 1;
     }
 
-    //鏂板鎮h�呬笓绉戞。妗堝熀鏈俊鎭�
+    /**
+     * 瀹屾垚鎺ヨ瘖鏃舵寜涓撶妗f鐢熸垚閰嶇疆鐢熸垚濡囩/鍎跨妗f銆�
+     *
+     * <p>鐢熸垚閫昏緫鍐呴儴鍙鎸囧畾鏈烘瀯鐢熸晥锛屾湭鍛戒腑閰嶇疆鎴栫敓鎴愬け璐ュ潎涓嶅奖鍝嶆帴璇婁富娴佺▼銆�</p>
+     */
     private void genePatSpecificArchive(PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
-        String deptCategory = judgeDeptCategory(patMedOuthosp.getDeptcode(), patMedOuthosp.getOrgid());
-
-        boolean isGynecology = "1".equals(deptCategory);  // 鏄惁濡囩
-        boolean isPediatrics = "2".equals(deptCategory);  // 鏄惁鍎跨
-
-        if (isGynecology) {
-            // 璧板绉戞。妗堢敓鎴愰�昏緫
-            PatMaternityArchiveDetail patMaternityArchiveDetail
-                    = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatMaternityArchiveDetail.class);
-            patMaternityArchiveDetail.setSourceType("1");
-            patMaternityArchiveDetail.setPhone(patArchive.getTelcode());
-            patMaternityArchiveDetail.setPatid(patArchive.getId());
-            patMaternityArchiveDetail.setPatname(patArchive.getName());
-            patMaternityArchiveDetail.setBirthdate(patArchive.getBirthdate());
-            patMaternityArchiveDetail.setSex(patArchive.getSex());
-            patMaternityArchiveDetail.setAddress(patArchive.getPlaceOfResidence());
-            patMaternityArchiveDetail.setOuthospno(patMedOuthosp.getOuthospno());
-            patMaternityArchiveDetail.setSerialnum(patMedOuthosp.getSerialnum());
-            patMaternityArchiveDetail.setIcd10code(patMedOuthosp.getIcd10code());
-            patMaternityArchiveDetail.setDeptcode(patMedOuthosp.getDeptcode());
-            patMaternityArchiveDetail.setDeptname(patMedOuthosp.getDeptname());
-            patMaternityArchiveDetail.setDoctorName(patMedOuthosp.getDrname());
-            patMaternityArchiveDetail.setDoctorCode(patMedOuthosp.getDrcode());
-            patMaternityArchiveDetail.setManagementDoctorName(patMedOuthosp.getDrname());
-            patMaternityArchiveDetail.setManagementDoctorCode(patMedOuthosp.getDrcode());
-            patMaternityArchiveDetail.setOrgid(patMedOuthosp.getOrgid());
-            patMaternityArchiveDetail.setCampusid(patMedOuthosp.getCampusid());
-            patMaternityArchiveService.insertOrUpdateMaternityArchive(patMaternityArchiveDetail);
-        } else if (isPediatrics) {
-            // 璧板効绉戞。妗堢敓鎴愰�昏緫
-            PatChildArchiveDetail patChildArchiveDetail
-                    = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatChildArchiveDetail.class);
-            patChildArchiveDetail.setSourceType("1");
-            patChildArchiveDetail.setPhone(patArchive.getTelcode());
-            patChildArchiveDetail.setPatid(patArchive.getId());
-            patChildArchiveDetail.setPatname(patArchive.getName());
-            patChildArchiveDetail.setBirthdate(patArchive.getBirthdate());
-            patChildArchiveDetail.setSex(patArchive.getSex());
-//            patChildArchiveDetail.setAddress(patArchive.getPlaceOfResidence());
-            patChildArchiveDetail.setOuthospno(patMedOuthosp.getOuthospno());
-            patChildArchiveDetail.setSerialnum(patMedOuthosp.getSerialnum());
-            patChildArchiveDetail.setIcd10code(patMedOuthosp.getIcd10code());
-            patChildArchiveDetail.setDeptcode(patMedOuthosp.getDeptcode());
-            patChildArchiveDetail.setDeptname(patMedOuthosp.getDeptname());
-            patChildArchiveDetail.setDoctorName(patMedOuthosp.getDrname());
-            patChildArchiveDetail.setDoctorCode(patMedOuthosp.getDrcode());
-            patChildArchiveDetail.setManagementDoctorName(patMedOuthosp.getDrname());
-            patChildArchiveDetail.setManagementDoctorCode(patMedOuthosp.getDrcode());
-            patChildArchiveDetail.setOrgid(patMedOuthosp.getOrgid());
-            patChildArchiveDetail.setCampusid(patMedOuthosp.getCampusid());
-            patChildArchiveService.insertOrUpdateChildArchive(patChildArchiveDetail);
-        } else {
-            // 鏈懡涓厤缃紝涓嶇敓鎴愭。妗�
+        try {
+            int generated = patSpecificArchiveGenerateService.generateByOuthosp(patMedOuthosp, patArchive);
+            if (generated > 0) {
+                log.info("瀹屾垚鎺ヨ瘖鑷姩鐢熸垚涓撶妗f鎴愬姛锛宱uthospno={}锛岀敓鎴愭暟閲�={}",
+                        patMedOuthosp.getOuthospno(), generated);
+            }
+        } catch (Exception e) {
+            log.error("瀹屾垚鎺ヨ瘖鑷姩鐢熸垚涓撶妗f澶辫触锛宱uthospno={}", patMedOuthosp.getOuthospno(), e);
         }
     }
 

--
Gitblit v1.9.3