From 3d047130b059efd46f56be37465a751ab16ee8cb Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 11 十一月 2026 14:06:56 +0800
Subject: [PATCH] Merge branch 'smartor_ls_merge' into 20261111-妇幼档案随访

---
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java |  235 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 137 insertions(+), 98 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..859bd9c 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -1,5 +1,7 @@
 package com.smartor.service.impl;
 
+import com.ruoyi.othervisit.api.OtherVisitFacade;
+import com.ruoyi.inhospvisit.api.InhospVisitFacade;
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -16,11 +18,9 @@
 import com.ruoyi.common.utils.http.HttpUtils;
 import com.ruoyi.system.service.ISysConfigService;
 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;
@@ -41,6 +41,24 @@
 import java.util.*;
 import java.util.stream.Collectors;
 
+import com.ruoyi.outpatientvisit.domain.PatMedOuthospQueryReq;
+import com.ruoyi.othervisit.domain.PatMedOperationItem;
+import com.ruoyi.outpatientvisit.mapper.PatMedOuthospMapper;
+import com.ruoyi.othervisit.domain.PatMedOperation;
+import com.ruoyi.outpatientvisit.domain.PatMedOuthosp;
+import com.ruoyi.inhospvisit.domain.PatMedInhosp;
+import com.ruoyi.common.core.domain.entity.PatArchive;
+import com.ruoyi.common.core.domain.entity.PatArchivecontact;
+import com.ruoyi.task.domain.entity.ServiceSubtaskEntity;
+import com.ruoyi.task.domain.ServiceSubtask;
+import com.ruoyi.task.mapper.ServiceSubtaskMapper;
+import com.ruoyi.patarchive.mapper.PatArchiveMapper;
+import com.ruoyi.patarchive.mapper.PatArchivecontactMapper;
+import com.ruoyi.common.core.domain.entity.Icd10;
+import com.ruoyi.common.mapper.Icd10Mapper;
+import com.ruoyi.system.mapper.ext.SysUser2Mapper;
+import com.ruoyi.system.mapper.ext.SysDept2Mapper;
+import com.ruoyi.system.mapper.ext.SysUserDeptMapper;
 /**
  * 涓婚敭Service涓氬姟灞傚鐞�
  *
@@ -50,8 +68,19 @@
 @Slf4j
 @Service
 public class ServiceExternalServiceImpl implements IServiceExternalService {
+    /**
+     * 榫欐硥浜烘皯鍖婚櫌鏈烘瀯ID
+     */
+    private static final String LONGQUAN_PEOPLE_HOSPITAL_ORG_ID = "47240004533118111A1001";
+
     @Autowired
     private SysDept2Mapper sysDeptMapper;
+
+    /**
+     * 鎵嬫湳鏁版嵁涓�寰嬬粡 ruoyi-othervisit 鐨勯棬闈㈠彇鐢紙璺ㄦā鍧楁暟鎹闂師鍒欙級銆�
+     */
+    @Autowired
+    private OtherVisitFacade otherVisitFacade;
     @Autowired
     private SysUser2Mapper sysUserMapper;
     @Autowired
@@ -63,11 +92,7 @@
     @Autowired
     private PatArchivecontactMapper patArchivecontactMapper;
     @Autowired
-    private PatMedInhospMapper patMedInhospMapper;
-    @Autowired
-    private PatMedOperationMapper patMedOperationMapper;
-    @Autowired
-    private PatMedOperationItemMapper patMedOperationItemMapper;
+    private InhospVisitFacade inhospVisitFacade;
     @Autowired
     private PatMedInspectionMapper patMedInspectionMapper;
     @Autowired
@@ -79,9 +104,7 @@
     @Autowired
     private ISysConfigService configService;
     @Autowired
-    private IPatMaternityArchiveService patMaternityArchiveService;
-    @Autowired
-    private IPatChildArchiveService patChildArchiveService;
+    private IPatSpecificArchiveGenerateService patSpecificArchiveGenerateService;
     @Autowired
     private PatMedOuthospMapper patMedOuthospMapper;
     @Autowired
@@ -495,9 +518,9 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
@@ -510,7 +533,7 @@
                 patMedInhosp1.setOperatorId(ObjectUtils.isNotEmpty(JiuZhenXX.get("CaoZuoRID")) ? JiuZhenXX.get("CaoZuoRID").toString() : null);
             }
             patMedInhosp1.setUpdateTime(new Date());
-            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         }
         return true;
@@ -589,9 +612,9 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
         PatMedInhosp patMedInhosp1 = new PatMedInhosp();
@@ -706,7 +729,7 @@
                 //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
                 patMedInhosp1.setFuflag("0");
             }
-            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         } else {
             if (ObjectUtils.isNotEmpty(BingRenXX)) {
@@ -730,7 +753,7 @@
                 patMedInhosp1.setFuflag("0");
             }
 
-            int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.insertPatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         }
         return true;
@@ -788,9 +811,9 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
         PatMedInhosp patMedInhosp1 = new PatMedInhosp();
@@ -872,7 +895,7 @@
                 //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
                 patMedInhosp1.setFuflag("0");
             }
-            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         } else {
             if (ObjectUtils.isNotEmpty(BingRenXX)) {
@@ -895,7 +918,7 @@
                 //涓嶉渶瑕侀暱鏈熶换鍔¢殢璁�
                 patMedInhosp1.setFuflag("0");
             }
-            int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.insertPatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         }
         return true;
@@ -910,9 +933,9 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
@@ -926,7 +949,7 @@
                 patMedInhosp1.setOperatorId(ObjectUtils.isNotEmpty(JiuZhenXX.get("CaoZuoRXM")) ? JiuZhenXX.get("CaoZuoRID").toString() : null);
             }
             patMedInhosp1.setUpdateTime(new Date());
-            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
 
             //鍙栨秷鍑洪櫌锛屽氨涓嶉渶瑕佹湇鍔′簡锛岄渶瑕侀�氳繃patid鍜宻endstate=2鎴栬�卻endstate=1鍘绘煡璇竴涓嬶紝service_subtask閲屾槸鍚︽湁姝e湪鎵ц鐨勪换鍔★紝鏈夌殑璇濓紝绔嬪嵆鍋滀簡
             ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
@@ -1010,9 +1033,9 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
         Map<String, Object> JiuZhenXX = ObjectUtils.isNotEmpty(yeWuXX) ? (Map<String, Object>) yeWuXX.get("JiuZhenXX") : null;
@@ -1096,7 +1119,7 @@
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
             patMedInhosp1.setUpdateTime(new Date());
             patMedInhosp1.setOrgid(ObjectUtils.isNotEmpty(BingRenXX) && ObjectUtils.isNotEmpty(BingRenXX.get("ZuZhiJGID")) ? BingRenXX.get("ZuZhiJGID").toString() : null);
-            int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         } else {
             if (ObjectUtils.isNotEmpty(BingRenXX)) {
@@ -1115,7 +1138,7 @@
             patMedInhosp1.setPatname(patArchive.getName());
 
             patMedInhosp1.setCreateTime(new Date());
-            int i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp1);
+            int i = inhospVisitFacade.insertPatMedInhosp(patMedInhosp1);
             if (i != 1) return false;
         }
 
@@ -1150,7 +1173,7 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
         patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         PatMedInhosp patMedInhosp1 = null;
         if (CollectionUtils.isNotEmpty(patMedInhospList)) patMedInhosp1 = patMedInhospList.get(0);
         if (ObjectUtils.isNotEmpty(patMedInhosp1)) {
@@ -1161,7 +1184,7 @@
                     patMedInhosp1.setUpdateTime(new Date());
                     //鏇存柊鍑洪櫌鐘舵��
                     patMedInhosp1.setInhospstate("1");
-                    int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                    int i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                     if (i != 1) return false;
                 } catch (ParseException e) {
                     e.printStackTrace();
@@ -1432,7 +1455,7 @@
         patMedOperation.setPatid(patArchive.getId());
         patMedOperation.setOpreqcode(externalOperationInfo.getShenQingDID());
         //鏌ヨ涓�涓嬶紝璇ユ偅鑰呮槸鍚﹀凡缁忔湁杩欎簺鏁版嵁
-        List<PatMedOperation> patMedOperations = patMedOperationMapper.selectPatMedOperationList(patMedOperation);
+        List<PatMedOperation> patMedOperations = otherVisitFacade.selectOperationList(patMedOperation);
 
         patMedOperation.setOpsstatus(null);
         if (ObjectUtils.isNotEmpty(externalOperationInfo)) {
@@ -1509,10 +1532,10 @@
                 //鍚屾椂鍘绘煡璇紝鏄惁鍦╯ubtask涓敓鎴愪换鍔★紝濡傛灉鐢熸垚鍑哄緱绔嬮┈鍒犻櫎
             }
             patMedOperation.setUpdateTime(new Date());
-            patMedOperationMapper.updatePatMedOperation(patMedOperation);
+            otherVisitFacade.updateOperation(patMedOperation);
         } else {
             patMedOperation.setCreateTime(new Date());
-            patMedOperationMapper.insertPatMedOperation(patMedOperation);
+            otherVisitFacade.insertOperation(patMedOperation);
         }
         log.info("-----patMedOperation鐨勪富閿甶d涓猴細{}", patMedOperation.getId());
 
@@ -1536,7 +1559,7 @@
             }).collect(Collectors.toList()) : null;
 
             if(ObjectUtils.isNotEmpty(patMedOperation.getId())){
-                patMedOperationItemMapper.deleteHardPatMedOperationItemByOpId(patMedOperation.getId().toString());
+                otherVisitFacade.deleteHardOperationItemByOpId(patMedOperation.getId().toString());
             }
 
             //addMianTableFalg鏄惁闇�瑕佸皢涓绘墜鏈殑淇℃伅鏀惧埌PatMedOperation琛ㄤ腑锛堝彧鏈夌涓�涓富鎵嬫湳淇℃伅闇�瑕佹斁锛屽悗闈㈢殑閮戒笉闇�瑕佹斁浜嗭紝涔熷氨鏄锛岀涓�涓斁瀹屽悗锛屽氨瑕佹妸杩欎釜flag鏀规垚false锛�
@@ -1568,12 +1591,12 @@
                     }
 
                     patMedOperation.setUpdateTime(new Date());
-                    patMedOperationMapper.updatePatMedOperation(patMedOperation);
+                    otherVisitFacade.updateOperation(patMedOperation);
                     addMianTableFalg = false;
                 }
                 patMedOperationItem.setCreateTime(new Date());
                 patMedOperationItem.setUpdateTime(new Date());
-                patMedOperationItemMapper.insertPatMedOperationItem(patMedOperationItem);
+                otherVisitFacade.insertOperationItem(patMedOperationItem);
             }
         }
         return true;
@@ -1597,7 +1620,7 @@
         patMedOperation.setOrgid(patArchive.getOrgid());
         patMedOperation.setOpreqcode(externalOperationInfo.getShenQingDID());
         //鏌ヨ涓�涓嬶紝璇ユ偅鑰呮槸鍚﹀凡缁忔湁杩欎簺鏁版嵁
-        List<PatMedOperation> patMedOperations = patMedOperationMapper.selectPatMedOperationList(patMedOperation);
+        List<PatMedOperation> patMedOperations = otherVisitFacade.selectOperationList(patMedOperation);
         if (CollectionUtils.isNotEmpty(patMedOperations)) {
             for(PatMedOperation operation : patMedOperations){
                 Long id = operation.getId();
@@ -1612,7 +1635,7 @@
                     //鑾峰彇闇�瑕佸嚭闄㈡墜鏈殢璁匡紝鏈鐞嗙殑鏁版嵁
                     pmoi.setOpid(operation.getId().toString());
                     List<PatMedOperationItem> patMedOperationItems
-                            = patMedOperationItemMapper.selectOperationItemList(pmoi);
+                            = otherVisitFacade.selectOperationItemListByCondition(pmoi);
                     List<Long> operationItemIds = patMedOperationItems.stream()
                             .map(PatMedOperationItem::getId)
                             .filter(Objects::nonNull)
@@ -1646,8 +1669,8 @@
                         }
                     }
                     operation.setUpdateTime(new Date());
-                    patMedOperationMapper.updatePatMedOperation(operation);
-                    patMedOperationItemMapper.deleteSoftPatMedOperationItemByOpId(operation.getOpid());
+                    otherVisitFacade.updateOperation(operation);
+                    otherVisitFacade.deleteSoftOperationItemByOpId(operation.getOpid());
                 }
             }
         }
@@ -1766,7 +1789,7 @@
             //鍖婚櫌閭h竟璇磋鐢ㄧ梾妗堝彿锛屼笉瑕佺敤浣忛櫌鍙�
             patMedInhosp.setInhospno(externalInHospPatientInfo.getBingAnHao());
             patMedInhosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID());
-            patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+            patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
             patMedInhosp.setHospitalname(externalInHospPatientInfo.getZuZhiJGMC());
             patMedInhosp.setHospitalcode(externalInHospPatientInfo.getZuZhiJGID());
             patMedInhosp.setStarttime(externalInHospPatientInfo.getRuYuanSJ());
@@ -1817,13 +1840,70 @@
         int i = 1;
         if (CollectionUtils.isNotEmpty(patMedInhospList)) {
             patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
-            i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+            i = inhospVisitFacade.updatePatMedInhosp(patMedInhosp);
         } else {
             patMedInhosp.setCreateTime(new Date());
-            i = patMedInhospMapper.insertPatMedInhosp(patMedInhosp);
+            i = inhospVisitFacade.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 +2539,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