From f0a09ee996ab2605869844d6a3d812709e2bf0fa Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 16 十月 2026 16:07:25 +0800
Subject: [PATCH] 任务模块、电话模块

---
 smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java |  355 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 244 insertions(+), 111 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
index 7de4f20..e299c66 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -1,18 +1,20 @@
 package com.smartor.service.impl;
 
+import com.ruoyi.othervisit.api.OtherVisitFacade;
+import com.ruoyi.inhospvisit.api.InhospVisitFacade;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.service.IConfigService;
+import com.ruoyi.common.core.service.dto.PatMedReq;
+import com.ruoyi.common.core.service.dto.PatMedRes;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.smartor.common.ScheduleSubtaskBuilder;
 import com.smartor.domain.*;
-import com.smartor.domain.DTO.PatMedInhospDTO;
-import com.smartor.domain.entity.ServiceSubtaskEntity;
+import com.ruoyi.inhospvisit.domain.PatMedInhospDTO;
 import com.smartor.mapper.*;
 import com.smartor.service.IPatMedInhospService;
 import lombok.extern.slf4j.Slf4j;
@@ -28,6 +30,31 @@
 import java.util.*;
 import java.util.stream.Collectors;
 
+import com.ruoyi.othervisit.domain.PatMedOperationItem;
+import com.ruoyi.inhospvisit.domain.PatMedInhospVO;
+import com.ruoyi.inhospvisit.domain.PatMedInhosp;
+import com.ruoyi.common.core.domain.entity.PatArchive;
+import com.ruoyi.task.domain.entity.ServiceSubtaskEntity;
+import com.ruoyi.task.domain.ServiceSubtask;
+import com.ruoyi.task.domain.ServiceTask;
+import com.ruoyi.task.domain.ServiceTaskdept;
+import com.ruoyi.task.domain.ServiceTaskdiag;
+import com.ruoyi.task.domain.ServiceTaskmedical;
+import com.ruoyi.task.domain.ServiceTaskoper;
+import com.ruoyi.task.domain.ServiceTaskRule;
+import com.ruoyi.task.domain.ServiceTaskSchedule;
+import com.ruoyi.task.domain.ServiceTaskScheduleDetail;
+import com.ruoyi.task.mapper.ServiceSubtaskMapper;
+import com.ruoyi.task.mapper.ServiceTaskdeptMapper;
+import com.ruoyi.task.mapper.ServiceTaskdiagMapper;
+import com.ruoyi.task.mapper.ServiceTaskMapper;
+import com.ruoyi.task.mapper.ServiceTaskmedicalMapper;
+import com.ruoyi.task.mapper.ServiceTaskoperMapper;
+import com.ruoyi.task.mapper.ServiceTaskRuleMapper;
+import com.ruoyi.task.mapper.ServiceTaskScheduleDetailMapper;
+import com.ruoyi.task.mapper.ServiceTaskScheduleMapper;
+import com.ruoyi.task.domain.ServiceSubtaskPreachform;
+import com.ruoyi.task.common.ScheduleSubtaskBuilder;
 /**
  * 鎮h�呬綇闄㈣褰昐ervice涓氬姟灞傚鐞�
  *
@@ -38,7 +65,13 @@
 @Service
 public class PatMedInhospServiceImpl implements IPatMedInhospService {
     @Autowired
-    private PatMedInhospMapper patMedInhospMapper;
+    private InhospVisitFacade inhospVisitFacade;
+
+    /**
+     * 鎵嬫湳鏁版嵁涓�寰嬬粡 ruoyi-othervisit 鐨勯棬闈㈠彇鐢紙璺ㄦā鍧楁暟鎹闂師鍒欙級銆�
+     */
+    @Autowired
+    private OtherVisitFacade otherVisitFacade;
     @Autowired
     private ServiceTaskdeptMapper serviceTaskdeptMapper;
     @Autowired
@@ -57,8 +90,6 @@
     private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
     @Autowired
     private ServiceTaskmedicalMapper serviceTaskmedicalMapper;
-    @Autowired
-    private PatMedOperationItemMapper patMedOperationItemMapper;
     @Autowired
     private ServiceTaskRuleMapper serviceTaskRuleMapper;
 
@@ -83,12 +114,12 @@
      */
     @Override
     public PatMedInhosp selectPatMedInhospByInhospid(Long inhospid) {
-        return patMedInhospMapper.selectPatMedInhospByInhospid(inhospid);
+        return inhospVisitFacade.selectPatMedInhospByInhospid(inhospid);
     }
 
     @Override
     public List<PatMedInhosp> selectPatMedInhosp(PatMedInhosp patMedInhosp) {
-        return patMedInhospMapper.selectPatMedInhosp(patMedInhosp);
+        return inhospVisitFacade.selectPatMedInhosp(patMedInhosp);
     }
 
     /**
@@ -99,6 +130,8 @@
      */
     @Override
     public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp) {
+        //鍏ラ櫌搴婁綅鎺掑簭鍙湪銆屽湪闄€�嶆煡璇紙cry=0锛変笅鐢熸晥锛屽叾瀹冩煡璇竴寰嬪拷鐣ワ紝淇濊瘉鍘熸湁鎺掑簭涓嶅彉
+        patMedInhosp.setBedSort(normalizeBedSort(patMedInhosp.getCry(), patMedInhosp.getBedSort()));
         if (patMedInhosp.getCry() != null && patMedInhosp.getCry() == 0) {
             patMedInhosp.setDeptcodeList(patMedInhosp.getLeaveldeptcodes());
             patMedInhosp.setHospitaldistrictcodeList(patMedInhosp.getLeavehospitaldistrictcodes());
@@ -113,12 +146,76 @@
             patMedInhosp.setInhospstate("3");
         }
 
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
-        for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
-            patMedInhosp1.setTagname(tagname);
-        }
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
+        fillTagname(patMedInhospList);
         return patMedInhospList;
+    }
+
+    /**
+     * 鎵归噺濉厖鎮h�呮爣绛�
+     * <p>
+     * 鍘熷疄鐜版槸姣忚璋冧竴娆� getTagnameBypatid锛孲QL 寰�杩旀鏁伴殢 pageSize 绾挎�у闀匡紱
+     * 杩欓噷鎸� patid 鍘婚噸鍚庡垎鎵逛竴娆℃煡鍥烇紝缁撴灉涓庨�愯鏌ヨ瀹屽叏涓�鑷达紙鎮h�呮棤鏍囩鏃朵粛涓� null锛夈��
+     *
+     * @param patMedInhospList 寰呭~鍏呯殑浣忛櫌璁板綍锛屽厑璁镐负绌�
+     */
+    private void fillTagname(List<PatMedInhosp> patMedInhospList) {
+        if (CollectionUtils.isEmpty(patMedInhospList)) {
+            return;
+        }
+        // LinkedHashSet 鍘婚噸鍚屾椂淇濇寔椤哄簭锛岄伩鍏� IN 鍒楄〃鍑虹幇閲嶅 patid
+        Set<Long> patids = new LinkedHashSet<>();
+        for (PatMedInhosp patMedInhosp : patMedInhospList) {
+            if (patMedInhosp.getPatid() != null) {
+                patids.add(patMedInhosp.getPatid());
+            }
+        }
+        if (patids.isEmpty()) {
+            return;
+        }
+
+        Map<Long, String> tagnameMap = new HashMap<>();
+        List<Long> patidList = new ArrayList<>(patids);
+        // 鍒嗙墖锛岄槻姝� IN 鍙傛暟杩囧
+        int batchSize = 1000;
+        for (int i = 0; i < patidList.size(); i += batchSize) {
+            List<Long> batch = patidList.subList(i, Math.min(i + batchSize, patidList.size()));
+            List<Map<String, Object>> rows = inhospVisitFacade.getTagnameByPatids(batch);
+            if (CollectionUtils.isEmpty(rows)) {
+                continue;
+            }
+            for (Map<String, Object> row : rows) {
+                Object patid = row.get("patid");
+                Object tagname = row.get("tagname");
+                if (patid != null) {
+                    tagnameMap.put(((Number) patid).longValue(), tagname == null ? null : tagname.toString());
+                }
+            }
+        }
+
+        for (PatMedInhosp patMedInhosp : patMedInhospList) {
+            if (patMedInhosp.getPatid() != null) {
+                patMedInhosp.setTagname(tagnameMap.get(patMedInhosp.getPatid()));
+            }
+        }
+    }
+
+    /**
+     * 褰掍竴鍖栧叆闄㈠簥浣嶆帓搴忓弬鏁�
+     * <p>
+     * asc / 1 -> asc锛堝簥浣嶆搴忥級锛宒esc / 2 -> desc锛堝簥浣嶅�掑簭锛夛紝鍏朵綑锛堝惈涓嶄紶锛�-> null锛堜笉鎺掑簭锛夈��
+     * 鍙銆屽湪闄€�嶆偅鑰呮煡璇紙cry=0锛夌敓鏁堬紝鍑洪櫌/杞绛夋煡璇㈠拷鐣ヨ鍙傛暟銆�
+     *
+     * @param cry     鍑哄叆闄㈡爣璇嗭細0鍏ラ櫌 1鍑洪櫌 2杞 3棰勫叆闄�
+     * @param bedSort 鍓嶇浼犲叆鐨勫簥浣嶆帓搴忓��
+     * @return 褰掍竴鍖栧悗鐨勬帓搴忓�硷紙asc / desc / null锛�
+     */
+    private String normalizeBedSort(Integer cry, String bedSort) {
+        if (cry == null || cry != 0 || StringUtils.isEmpty(bedSort)) return null;
+        String value = bedSort.trim().toLowerCase();
+        if ("asc".equals(value) || "1".equals(value)) return "asc";
+        if ("desc".equals(value) || "2".equals(value)) return "desc";
+        return null;
     }
 
     @Override
@@ -139,19 +236,6 @@
         return patMedInhospDTOList;
     }
 
-    @Override
-    public Map<String, Integer> queryPersonCount(PatServiceCount patServiceCount) {
-        if (patServiceCount.getInterval() == 1) {
-            //鍛�
-        } else if (patServiceCount.getInterval() == 2) {
-            //鏈�
-        } else if (patServiceCount.getInterval() == 3) {
-            //骞�
-        }
-
-        return null;
-    }
-
     /**
      * 鏌ヨ褰撳墠鐧婚檰浜鸿嚜宸憋紙鐥呭尯銆侀儴闂級鐨勬偅鑰呬綇闄㈣褰曞垪琛�
      *
@@ -159,7 +243,7 @@
      * @return
      */
     public List<PatMedInhosp> selectPatMedInhospListByCondition(PatMedInhospVO patMedInhospVO) {
-        return patMedInhospMapper.selectPatMedInhospListByCondition(patMedInhospVO);
+        return inhospVisitFacade.selectPatMedInhospListByCondition(patMedInhospVO);
     }
 
 
@@ -192,7 +276,7 @@
     public PatMedRes selectPatMedInhospListCount(PatMedReq patMedReq) {
         PatMedRes patMedRes = null;
         // 鑾峰彇褰撳墠鐧婚檰浜虹殑閮ㄩ棬鏉冮檺
-        patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);
+        patMedRes = inhospVisitFacade.selectPatMedInhospCount(patMedReq);
         return patMedRes;
     }
 
@@ -206,7 +290,7 @@
     public int insertPatMedInhosp(PatMedInhosp patMedInhosp) {
         patMedInhosp.setCreateTime(DateUtils.getNowDate());
         patMedInhosp.setUpdateTime(DateUtils.getNowDate());
-        return patMedInhospMapper.insertPatMedInhosp(patMedInhosp);
+        return inhospVisitFacade.insertPatMedInhosp(patMedInhosp);
     }
 
     /**
@@ -218,7 +302,7 @@
     @Override
     public int updatePatMedInhosp(PatMedInhosp patMedInhosp) {
         patMedInhosp.setUpdateTime(DateUtils.getNowDate());
-        return patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+        return inhospVisitFacade.updatePatMedInhosp(patMedInhosp);
     }
 
     /**
@@ -229,7 +313,7 @@
      */
     @Override
     public int deletePatMedInhospByInhospids(Long[] inhospids) {
-        return patMedInhospMapper.deletePatMedInhospByInhospids(inhospids);
+        return inhospVisitFacade.deletePatMedInhospByInhospids(inhospids);
     }
 
     /**
@@ -240,7 +324,7 @@
      */
     @Override
     public int deletePatMedInhospByInhospid(Long inhospid) {
-        return patMedInhospMapper.deletePatMedInhospByInhospid(inhospid);
+        return inhospVisitFacade.deletePatMedInhospByInhospid(inhospid);
     }
 
     /**
@@ -251,7 +335,7 @@
      */
     @Override
     public int deletePatMedInhospByInhospno(String inhospno) {
-        return patMedInhospMapper.deletePatMedInhospByInhospno(inhospno);
+        return inhospVisitFacade.deletePatMedInhospByInhospno(inhospno);
     }
 
     @Override
@@ -260,7 +344,7 @@
         pmks.setDeptcheckFlag("0");
         pmks.setInhospstate("1");
         pmks.setFuflag("1");
-        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks);
+        List<PatMedInhosp> patMedInhosps = inhospVisitFacade.selectPatMedInhospList(pmks);
 
         //1.鍏ラ櫌瀹f暀
         String helibrarySwitch = iSysConfigService.selectConfigByKey("in.helibrary.switch");
@@ -273,7 +357,7 @@
                 if (Objects.isNull(patArchive)) {
                     patMedInhosp1.setInDeptcheckFlag("2");
                     patMedInhosp1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
-                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                    inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                     continue;
                 }
                 try {
@@ -287,10 +371,10 @@
                     List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
                     //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
                     if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {
-                        PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+                        PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
                         patMedInhosp1.setInDeptcheckFlag("2");
                         patMedInhosp1.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + "璇ユ偅鑰呮墍鍦ㄧ瀹ゆ湭閰嶇疆鍏ラ櫌闀挎湡瀹f暀浠诲姟;" : "璇ユ偅鑰呮墍鍦ㄧ瀹ゆ湭閰嶇疆鍏ラ櫌闀挎湡瀹f暀浠诲姟;");
-                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                        inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                     } else {
                         for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) {
                             writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 4, config);
@@ -301,7 +385,7 @@
                     log.error("浜哄憳鍏ラ櫌绉戝澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
                     patMedInhosp1.setInDeptcheckFlag("2");
                     patMedInhosp1.setLongTaskReason("浜哄憳鍏ラ櫌绉戝澶勭悊鍑哄紓甯镐簡");
-                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                    inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 }
             }
 
@@ -310,14 +394,14 @@
             pmks.setInDeptcheckFlag(null);
             pmks.setInWardcheckFlag("0");
             pmks.setDeptcheckFlag(null);
-            List<PatMedInhosp> inPatMedInhospsWard = patMedInhospMapper.selectPatMedInhospList(pmks);
+            List<PatMedInhosp> inPatMedInhospsWard = inhospVisitFacade.selectPatMedInhospList(pmks);
             for (PatMedInhosp patMedInhosp1 : inPatMedInhospsWard) {
                 //鑾峰彇鎮h�呬俊鎭�
                 PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
                 if (Objects.isNull(patArchive)) {
                     patMedInhosp1.setInDeptcheckFlag("2");
                     patMedInhosp1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
-                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                    inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                     continue;
                 }
                 //鏍规嵁鎮h�呮墍鍦ㄧ梾鍖猴紝鑾峰彇璇ョ梾鍖虹殑鍏ラ櫌闀挎湡瀹f暀浠诲姟锛堜細鍑虹幇涓�涓棶棰橈紝绉戝鍜岀梾鍖哄彂鐨勫悓涓�涓ā鏉匡級
@@ -330,10 +414,10 @@
                 List<ServiceTaskdept> serviceTaskWardList = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskWard);
                 //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
                 if (CollectionUtils.isEmpty(serviceTaskWardList) || serviceTaskWardList.size() == 0) {
-                    PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+                    PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
                     patMedInhosp1.setInDeptcheckFlag("2");
                     patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + "璇ユ偅鑰呮墍鍦ㄧ梾鍖烘湭閰嶇疆鍏ラ櫌闀挎湡瀹f暀浠诲姟;");
-                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                    inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 } else {
                     for (ServiceTaskdept serviceTaskdept1 : serviceTaskWardList) {
                         writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 5, config);
@@ -389,7 +473,7 @@
         PatMedInhosp patMedInhosp = new PatMedInhosp();
         patMedInhosp.setDeptcheckFlag("0");
         patMedInhosp.setInhospstate("0");
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
         if (CollectionUtils.isNotEmpty(patMedInhospList) && patMedInhospList.size() > 0) {
             dealInHospInfo(patMedInhospList);
         }
@@ -458,7 +542,7 @@
                             patMedInhospVo.setLeaveldeptcodes(deptCodeList);
                             patMedInhospVo.setLeavehospitaldistrictcodes(wardCodeList);
                             patMedInhospVo.setIcd10codeList(icd10CodeList);
-                            List<PatMedInhosp> patList = patMedInhospMapper.selectPatMedInhospList(patMedInhospVo);
+                            List<PatMedInhosp> patList = inhospVisitFacade.selectPatMedInhospList(patMedInhospVo);
                             log.info("dealOutHospInfoBySchedule 浠诲姟缁勯殢璁�, taskid = {}, 鎵弿鎮h�呬汉鏁� {}", serviceTask.getTaskid(), patList.size());
 
                             for (PatMedInhosp patMedInhosp : patList) {
@@ -488,7 +572,7 @@
                                 PatMedInhosp flagUpd = new PatMedInhosp();
                                 flagUpd.setInhospid(patMedInhosp.getInhospid());
                                 flagUpd.setScheduleCheckFlag("1");
-                                patMedInhospMapper.updatePatMedInhosp(flagUpd);
+                                inhospVisitFacade.updatePatMedInhosp(flagUpd);
                             }
                         } else {
                             //浠诲姟缁� - 鎵嬫湳闅忚
@@ -500,7 +584,9 @@
                                 pmoi.setDeptCodes(deptCodeList);
                                 pmoi.setWardCodes(wardCodeList);
                                 pmoi.setOpLevelCodes(opLevelCodeList);
-                                List<PatMedOperationItem> patMedOperationItems = patMedOperationItemMapper.selectOperationItemList(pmoi);
+
+                                //姣忔鏌ヨ鍙煡鏈�澶х殑鎵嬫湳绛夌骇璁板綍
+                                List<PatMedOperationItem> patMedOperationItems = otherVisitFacade.selectOperationItemListMaxLevel(pmoi);
                                 for (PatMedOperationItem patMedOperationItem : patMedOperationItems) {
                                     PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOperationItem.getPatid());
                                     if (Objects.isNull(patArchive)) {
@@ -511,7 +597,7 @@
                                     patMedInhospVo.setScheduleCheckFlag("0");
                                     patMedInhospVo.setInhospstate("1");
                                     patMedInhospVo.setFuflag("1");
-                                    List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhospVo);
+                                    List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhospVo);
                                     if (CollectionUtils.isNotEmpty(patMedInhospList)) {
                                         ServiceTaskScheduleDetail scheduleDetailVo = new ServiceTaskScheduleDetail();
                                         scheduleDetailVo.setTaskid(serviceTask.getTaskid());
@@ -533,7 +619,7 @@
                                         PatMedInhosp flagUpd = new PatMedInhosp();
                                         flagUpd.setInhospid(patMedInhospList.get(0).getInhospid());
                                         flagUpd.setScheduleCheckFlag("1");
-                                        patMedInhospMapper.updatePatMedInhosp(flagUpd);
+                                        inhospVisitFacade.updatePatMedInhosp(flagUpd);
                                     }
                                 }
                             }
@@ -560,9 +646,9 @@
 
     @Override
     public List<PatMedInhosp> getDocAndPat(PatMedInhosp patMedInhosp) {
-        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 (StringUtils.isNotEmpty(patMedInhosp.getPatname()) || StringUtils.isNotEmpty(patMedInhosp.getNurseName()) || StringUtils.isNotEmpty(patMedInhosp.getDrname())) {
@@ -625,34 +711,34 @@
                 log.info("璇ユ偅鑰呰嵂鍝佸鏁欓暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}", taskid);
                 patMedInhosp1.setMedcheckFlag("2");
                 patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呰嵂鍝佸鏁欓暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 return;
             }
             if (type == 1) {
                 log.info("璇ユ偅鑰呭嚭闄㈤殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}", taskid);
                 patMedInhosp1.setDeptcheckFlag("2");
                 patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呯闄㈢瀹ら暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 return;
             } else if (type == 2) {
                 patMedInhosp1.setWardcheckFlag("2");
                 patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呯闄㈢梾鍖洪暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 return;
             } else if (type == 3) {
                 patMedInhosp1.setDiagcheckFlag("2");
                 patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呯柧鐥呴暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 return;
             } else if (type == 4) {
                 patMedInhosp1.setInDeptcheckFlag("2");
                 patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呭叆闄㈢瀹ら暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 return;
             } else if (type == 5) {
                 patMedInhosp1.setInWardcheckFlag("2");
                 patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呭叆闄㈢梾鍖洪暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 return;
             }
         } else {
@@ -815,7 +901,7 @@
                 if (type == 3) patMedInhosp2.setDiagcheckFlag("1");
                 if (type == 4) patMedInhosp2.setInDeptcheckFlag("1");
                 if (type == 5) patMedInhosp2.setInWardcheckFlag("1");
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp2);
             } else {
                 //鐢熸垚瀛愪换鍔″け璐ワ紝
                 log.info("鐢熸垚瀛愪换鍔″け璐erviceSubtask鐨則askid涓猴細{},patid涓猴細{}", serviceSubtask.getTaskid(), serviceSubtask.getPatid());
@@ -827,7 +913,7 @@
                 if (type == 4) patMedInhosp2.setInDeptcheckFlag("2");
                 if (type == 5) patMedInhosp2.setInWardcheckFlag("2");
                 patMedInhosp2.setRemark("鐢熸垚瀛愪换鍔″け璐� " + type);
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp2);
             }
         } catch (Exception e) {
             //鍑洪敊鍥炴粴浜嬪姟
@@ -839,7 +925,7 @@
             if (type == 3) patMedInhosp2.setDiagcheckFlag("2");
             if (type == 0) patMedInhosp2.setMedcheckFlag("2");
             patMedInhosp2.setRemark("鐢熸垚瀛愪换鍔℃姤閿欏洖婊� " + type);
-            patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
+            inhospVisitFacade.updatePatMedInhosp(patMedInhosp2);
             e.printStackTrace();
         }
     }
@@ -866,7 +952,7 @@
             log.info("璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓猴細{}", taskid);
             patMedOperationItem.setOpercheckFlag("2");
             patMedOperationItem.setLongTaskReason(" & 璇ユ墜鏈搴旀墜鏈瓑绾х殑闀挎湡浠诲姟涓嶅瓨鍦�,浠诲姟ID涓�:" + taskid +";");
-            patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
+            otherVisitFacade.updateOperationItem(patMedOperationItem);
             return;
         } else {
             serviceTask = serviceTasks.get(0);
@@ -889,7 +975,7 @@
         if(!active.equals("hzszlyy")){
             patMedInhosp.setSerialnum(patMedOperationItem.getSerialnum());
         }
-        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+        List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
 
         if (CollectionUtils.isEmpty(patMedInhospList)) {
             return;
@@ -964,7 +1050,7 @@
                 PatMedOperationItem patMedOperationItem2 = new PatMedOperationItem();
                 patMedOperationItem2.setId(patMedOperationItem.getId());
                 patMedOperationItem2.setOpercheckFlag("1");
-                patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
+                otherVisitFacade.updateOperationItem(patMedOperationItem2);
             } else {
                 //鐢熸垚瀛愪换鍔″け璐ワ紝
                 log.info("鐢熸垚瀛愪换鍔″け璐erviceSubtask鐨則askid涓猴細{},patid涓猴細{}", serviceSubtask.getTaskid(), serviceSubtask.getPatid());
@@ -973,7 +1059,7 @@
                 patMedOperationItem2.setOpercheckFlag("2");
                 patMedOperationItem2.setLongTaskReason("鐢熸垚瀛愪换鍔″け璐� 4;");
                 patMedOperationItem2.setUpdateTime(new Date());
-                patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
+                otherVisitFacade.updateOperationItem(patMedOperationItem2);
             }
         } catch (Exception e) {
             //鍑洪敊鍥炴粴浜嬪姟
@@ -985,7 +1071,7 @@
             patMedOperationItem2.setOpercheckFlag("2");
             patMedOperationItem2.setUpdateTime(new Date());
             patMedOperationItem2.setLongTaskReason("鐢熸垚瀛愪换鍔℃姤閿欏洖婊� 4;");
-            patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem2);
+            otherVisitFacade.updateOperationItem(patMedOperationItem2);
             e.printStackTrace();
         }
     }
@@ -1044,6 +1130,8 @@
 //        }
         ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
         serviceSubtask.setTaskid(serviceTask.getTaskid());
+        serviceSubtask.setOrgid(serviceTask.getOrgid());
+        serviceSubtask.setCampusid(serviceTask.getCampusid());
         if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
             serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
         serviceSubtask.setNurseId(patMedInhosp1.getNurseId());
@@ -1103,7 +1191,7 @@
             if (type != 4 && type != 5) {
                 patMedInhosp1.setDeptcheckFlag("2");
                 patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 璇ユ偅鑰呯柧鐥呭嚭闄㈡椂闂翠负绌�,鍑洪櫌璁板綍ID涓�:" + patMedInhosp1.getInhospid());
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 //濡傛灉鍑洪櫌鏃堕棿涓虹┖锛屽垯杩斿洖涓�涓柊瀵硅薄
                 return new ServiceSubtask();
             }
@@ -1155,6 +1243,8 @@
     private ServiceSubtask boxedServiceSubtaskForOp(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatMedOperationItem patMedOperationItem, PatArchive patArchive, String config) {
         ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
         serviceSubtask.setTaskid(serviceTask.getTaskid());
+        serviceSubtask.setOrgid(serviceTask.getOrgid());
+        serviceSubtask.setCampusid(serviceTask.getCampusid());
         if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
             serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
         serviceSubtask.setNurseId(patMedInhosp1.getNurseId());
@@ -1201,10 +1291,10 @@
         } else {
             patMedOperationItem.setOpercheckFlag("2");
             patMedOperationItem.setLongTaskReason("璇ユ偅鑰呮墜鏈嚭闄㈡椂闂翠负绌�,鎵嬫湳璇︽儏ID涓�:" + patMedOperationItem.getId() + ";");
-            patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
+            otherVisitFacade.updateOperationItem(patMedOperationItem);
 //            patMedInhosp1.setDeptcheckFlag("2");
 //            patMedInhosp1.setRemark(patMedInhosp1.getRemark() + "& 璇ユ偅鑰呮墜鏈嚭闄㈡椂闂翠负绌�,鍑洪櫌璁板綍ID涓�:" + patMedInhosp1.getInhospid());
-//            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+//            inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             //濡傛灉鍑洪櫌鏃堕棿涓虹┖锛屽垯杩斿洖涓�涓柊瀵硅薄
             return null;
         }
@@ -1297,7 +1387,8 @@
         pmoi.setOpercheckFlag("0");
         pmoi.setMainFlag("1");
 
-        List<PatMedOperationItem> patMedOperationItems = patMedOperationItemMapper.selectOperationItemList(pmoi);
+        //姣忔鏌ヨ鍙煡鏈�澶х殑鎵嬫湳绛夌骇璁板綍
+        List<PatMedOperationItem> patMedOperationItems = otherVisitFacade.selectOperationItemListMaxLevel(pmoi);
         log.info("dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鎵嬫湳鎮h�呬俊鎭細{}", CollectionUtils.isNotEmpty(patMedOperationItems) ? patMedOperationItems.size() : null);
 
         for (PatMedOperationItem opItem : patMedOperationItems) {
@@ -1334,11 +1425,11 @@
                 serviceTaskopers.addAll(serviceTaskopersWard);
                 //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
                 if (CollectionUtils.isEmpty(serviceTaskopers) || serviceTaskopers.size() == 0) {
-                    PatMedOperationItem patMedOperationItem = patMedOperationItemMapper.selectPatMedOperationItemById(opItem.getId());
+                    PatMedOperationItem patMedOperationItem = otherVisitFacade.selectOperationItemById(opItem.getId());
                     patMedOperationItem.setOpercheckFlag("2");
                     patMedOperationItem.setLongTaskReason("鎵�鎮g殑鎵嬫湳鏈厤缃暱鏈熶换鍔�;");
                     patMedOperationItem.setUpdateTime(new Date());
-                    patMedOperationItemMapper.updatePatMedOperationItem(patMedOperationItem);
+                    otherVisitFacade.updateOperationItem(patMedOperationItem);
                 } else {
                     for (ServiceTaskoper serviceTaskoper : serviceTaskopers) {
                         writeInSubTaskForOp(serviceTaskoper.getTaskId(), true, opItem, config);
@@ -1351,7 +1442,7 @@
                 opItem.setUpdateTime(new Date());
                 opItem.setOpercheckFlag("2");
                 opItem.setLongTaskReason("浜哄憳鎵嬫湳澶勭悊寮傚父");
-                patMedOperationItemMapper.updatePatMedOperationItem(opItem);
+                otherVisitFacade.updateOperationItem(opItem);
             }
         }
     }
@@ -1362,10 +1453,10 @@
         pmjb.setDiagcheckFlag("0");
         pmjb.setInhospstate("1");
         pmjb.setFuflag("1");
-        List<PatMedInhosp> patMedInhospJBs = patMedInhospMapper.selectPatMedInhospList(pmjb);
+        List<PatMedInhosp> patMedInhospJBs = inhospVisitFacade.selectPatMedInhospList(pmjb);
         log.info("dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鐤剧梾鎮h�呬俊鎭細{}", CollectionUtils.isNotEmpty(patMedInhospJBs) ? patMedInhospJBs.size() : null);
         for (PatMedInhosp patMedInhosp1 : patMedInhospJBs) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
 
@@ -1375,7 +1466,7 @@
             if (Objects.isNull(patArchive)) {
                 pmiJB.setDiagcheckFlag("2");
                 pmiJB.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
-                patMedInhospMapper.updatePatMedInhosp(pmiJB);
+                inhospVisitFacade.updatePatMedInhosp(pmiJB);
                 continue;
             }
             try {
@@ -1404,16 +1495,16 @@
 
                 //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
                 if (StringUtils.isNotEmpty(errorIcd)) {
-                    PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid());
+                    PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(pmiJB.getInhospid());
                     pmiJB.setDiagcheckFlag("2");
                     pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd);
-                    patMedInhospMapper.updatePatMedInhosp(pmiJB);
+                    inhospVisitFacade.updatePatMedInhosp(pmiJB);
                 } else if (CollectionUtils.isEmpty(serviceTaskdiags)) {
                     errorIcd = "璇ユ偅鑰呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟;";
-                    PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid());
+                    PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(pmiJB.getInhospid());
                     pmiJB.setDiagcheckFlag("2");
                     pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd);
-                    patMedInhospMapper.updatePatMedInhosp(pmiJB);
+                    inhospVisitFacade.updatePatMedInhosp(pmiJB);
                 } else {
                     int flag = 0;
                     for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) {
@@ -1429,10 +1520,10 @@
                     if (flag == 0) {
                         log.error("璇ョ瀹ゆ垨鐥呭尯瀵逛簬鎮h�呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟,鎮h�咃細{}", pmiJB.getInhospid());
                         errorIcd = "璇ョ瀹ゆ垨鐥呭尯瀵逛簬鎮h�呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟;";
-                        PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid());
+                        PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(pmiJB.getInhospid());
                         pmiJB.setDiagcheckFlag("2");
                         pmiJB.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorIcd : errorIcd);
-                        patMedInhospMapper.updatePatMedInhosp(pmiJB);
+                        inhospVisitFacade.updatePatMedInhosp(pmiJB);
                     }
 
                 }
@@ -1442,7 +1533,7 @@
                 log.error("浜哄憳鐤剧梾澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
                 pmiJB.setDiagcheckFlag("2");
                 pmiJB.setLongTaskReason("浜哄憳鐤剧梾澶勭悊寮傚父");
-                patMedInhospMapper.updatePatMedInhosp(pmiJB);
+                inhospVisitFacade.updatePatMedInhosp(pmiJB);
             }
         }
     }
@@ -1453,10 +1544,10 @@
         pmbq.setWardcheckFlag("0");
         pmbq.setInhospstate("1");
         pmbq.setFuflag("1");
-        List<PatMedInhosp> patMedInhospBQs = patMedInhospMapper.selectPatMedInhospList(pmbq);
+        List<PatMedInhosp> patMedInhospBQs = inhospVisitFacade.selectPatMedInhospList(pmbq);
         log.info("dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鐥呭尯鎮h�呬俊鎭細{}", CollectionUtils.isNotEmpty(patMedInhospBQs) ? patMedInhospBQs.size() : null);
         for (PatMedInhosp patMedInhosp1 : patMedInhospBQs) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
 
@@ -1465,7 +1556,7 @@
             if ("1".equals(pmiBQ1.getLeavehospitaldistrictcode()) && pmiBQ1.getDiagcheckFlag().equals("1")) {
                 pmiBQ1.setWardcheckFlag("2");
                 pmiBQ1.setLongTaskReason("鏍规嵁浜ゅ弶鐢熸垚闅忚浠诲姟瑙勫垯锛岀梾鍖轰换鍔″彲浠ヤ笉鐢ㄧ敓鎴�");
-                patMedInhospMapper.updatePatMedInhosp(pmiBQ1);
+                inhospVisitFacade.updatePatMedInhosp(pmiBQ1);
                 continue;
             }
 
@@ -1474,7 +1565,7 @@
             if (Objects.isNull(patArchive)) {
                 pmiBQ1.setWardcheckFlag("2");
                 pmiBQ1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
-                patMedInhospMapper.updatePatMedInhosp(pmiBQ1);
+                inhospVisitFacade.updatePatMedInhosp(pmiBQ1);
                 continue;
             }
             try {
@@ -1496,10 +1587,10 @@
                 }
                 //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
                 if (StringUtils.isNotEmpty(errorreason)) {
-                    PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiBQ1.getInhospid());
+                    PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(pmiBQ1.getInhospid());
                     pmiBQ1.setWardcheckFlag("2");
                     pmiBQ1.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorreason : errorreason);
-                    patMedInhospMapper.updatePatMedInhosp(pmiBQ1);
+                    inhospVisitFacade.updatePatMedInhosp(pmiBQ1);
                 } else {
                     for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) {
                         writeInSubTask(serviceTaskdept1.getTaskId(), true, pmiBQ1, patArchive, 2, config);
@@ -1511,7 +1602,7 @@
                 log.error("浜哄憳鐥呭尯澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
                 pmiBQ1.setWardcheckFlag("2");
                 pmiBQ1.setLongTaskReason("浜哄憳鐥呭尯澶勭悊寮傚父");
-                patMedInhospMapper.updatePatMedInhosp(pmiBQ1);
+                inhospVisitFacade.updatePatMedInhosp(pmiBQ1);
             }
         }
     }
@@ -1522,10 +1613,10 @@
         pmks.setDeptcheckFlag("0");
         pmks.setInhospstate("1");
         pmks.setFuflag("1");
-        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks);
+        List<PatMedInhosp> patMedInhosps = inhospVisitFacade.selectPatMedInhospList(pmks);
         log.info("dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌閮ㄩ棬鎮h�呬俊鎭細{}", CollectionUtils.isNotEmpty(patMedInhosps) ? patMedInhosps.size() : null);
         for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
-            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+            String tagname = inhospVisitFacade.getTagnameBypatid(patMedInhosp1.getPatid());
             patMedInhosp1.setTagname(tagname);
         }
 
@@ -1534,7 +1625,7 @@
             if ("1".equals(patMedInhosp1.getLeavehospitaldistrictcode()) && patMedInhosp1.getDiagcheckFlag().equals("1")) {
                 patMedInhosp1.setDeptcheckFlag("2");
                 patMedInhosp1.setLongTaskReason("鏍规嵁浜ゅ弶鐢熸垚闅忚浠诲姟瑙勫垯锛岄儴闂ㄤ换鍔″彲浠ヤ笉鐢ㄧ敓鎴�");
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 continue;
             }
             //鑾峰彇鎮h�呬俊鎭�
@@ -1542,7 +1633,7 @@
             if (Objects.isNull(patArchive)) {
                 patMedInhosp1.setDeptcheckFlag("2");
                 patMedInhosp1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 continue;
             }
             try {
@@ -1556,10 +1647,10 @@
                 List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
                 //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
                 if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {
-                    PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+                    PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
                     patMedInhosp1.setDeptcheckFlag("2");
                     patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + "璇ユ偅鑰呮墍鍦ㄧ瀹ゆ湭閰嶇疆绂婚櫌闀挎湡浠诲姟;");
-                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                    inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 } else {
                     for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) {
                         writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 1, config);
@@ -1571,7 +1662,7 @@
                 log.error("浜哄憳绉戝澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
                 patMedInhosp1.setDeptcheckFlag("2");
                 patMedInhosp1.setLongTaskReason("浜哄憳绉戝澶勭悊寮傚父");
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             }
         }
     }
@@ -1607,7 +1698,7 @@
         if (StringUtils.isNotEmpty(remark)) {
             updateObj.setRemark(remark + " (type=" + type + ")");
         }
-        patMedInhospMapper.updatePatMedInhosp(updateObj);
+        inhospVisitFacade.updatePatMedInhosp(updateObj);
     }
 
     /**
@@ -1622,7 +1713,7 @@
             if (Objects.isNull(patArchive)) {
                 patMedInhosp1.setDeptcheckFlag("2");
                 patMedInhosp1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                 continue;
             }
 
@@ -1768,7 +1859,7 @@
                 log.error("銆愬熀浜庤鍒欍�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
                 patMedInhosp1.setDeptcheckFlag("2");
                 patMedInhosp1.setLongTaskReason("鍩轰簬瑙勫垯澶勭悊寮傚父");
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             }
         }
     }
@@ -1791,12 +1882,12 @@
             List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
 
             if (CollectionUtils.isEmpty(serviceTaskdepts)) {
-                PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+                PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
                 patMedInhosp1.setDeptcheckFlag("2");
                 patMedInhosp1.setWardcheckFlag(patMedInhosp.getWardcheckFlag());
                 patMedInhosp1.setDiagcheckFlag(patMedInhosp.getDiagcheckFlag());
                 patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + "璇ユ偅鑰呮墍鍦ㄧ瀹ゆ湭閰嶇疆绂婚櫌闀挎湡浠诲姟;");
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             } else {
                 for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) {
                     writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 1, config);
@@ -1808,7 +1899,7 @@
             log.error("銆愮瀹や换鍔°�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
             patMedInhosp1.setDeptcheckFlag("2");
             patMedInhosp1.setLongTaskReason("绉戝浠诲姟澶勭悊寮傚父");
-            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
         }
         return generatedCount;
     }
@@ -1839,12 +1930,12 @@
             }
 
             if (StringUtils.isNotEmpty(errorreason)) {
-                PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+                PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
                 patMedInhosp1.setWardcheckFlag("2");
                 patMedInhosp1.setDeptcheckFlag(patMedInhosp.getDeptcheckFlag());
                 patMedInhosp1.setDiagcheckFlag(patMedInhosp.getDiagcheckFlag());
                 patMedInhosp1.setLongTaskReason(StringUtils.isNotEmpty(patMedInhosp.getLongTaskReason()) ? patMedInhosp.getLongTaskReason() + errorreason : errorreason);
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
             } else {
                 for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) {
                     writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 2, config);
@@ -1856,7 +1947,7 @@
             log.error("銆愮梾鍖轰换鍔°�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
             patMedInhosp1.setWardcheckFlag("2");
             patMedInhosp1.setLongTaskReason("鐥呭尯浠诲姟澶勭悊寮傚父");
-            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
         }
         return generatedCount;
     }
@@ -1879,10 +1970,10 @@
             if (active.equals("nhfy")) {
                 serviceTaskdiag.setIcd10name(patMedInhosp1.getLeavediagname());
                 if (StringUtils.isEmpty(patMedInhosp1.getLeavediagname())) {
-                    PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+                    PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
                     patMedInhosp1.setDiagcheckFlag("2");
                     patMedInhosp1.setLongTaskReason("璇ユ偅鑰呬富璇婃柇鍚嶇О涓虹┖;");
-                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                    inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
                     return 0;
                 }
             } else {
@@ -1892,10 +1983,10 @@
             List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagListByIcdName(serviceTaskdiag);
 
             if (CollectionUtils.isEmpty(serviceTaskdiags)) {
-                PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+                PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
                 patMedInhosp.setDiagcheckFlag("2");
                 patMedInhosp.setLongTaskReason("璇ユ偅鑰呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟;");
-                patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+                inhospVisitFacade.updatePatMedInhosp(patMedInhosp);
             } else {
                 int flag = 0;
                 for (ServiceTaskdiag serviceTaskdiag1 : serviceTaskdiags) {
@@ -1911,10 +2002,10 @@
                 }
                 if (flag == 0) {
                     log.error("璇ョ瀹ゆ垨鐥呭尯瀵逛簬鎮h�呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟,鎮h�咃細{}", patMedInhosp1.getInhospid());
-                    PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+                    PatMedInhosp patMedInhosp = inhospVisitFacade.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
                     patMedInhosp.setDiagcheckFlag("2");
                     patMedInhosp.setLongTaskReason("璇ョ瀹ゆ垨鐥呭尯瀵逛簬鎮h�呮墍鎮g柧鐥呮湭閰嶇疆闀挎湡浠诲姟;");
-                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+                    inhospVisitFacade.updatePatMedInhosp(patMedInhosp);
                 }
             }
         } catch (Exception e) {
@@ -1922,10 +2013,52 @@
             log.error("銆愮柧鐥呬换鍔°�戞偅鑰厈}澶勭悊寮傚父锛歿}", patMedInhosp1.getInhospid(), e.getMessage());
             patMedInhosp1.setDiagcheckFlag("2");
             patMedInhosp1.setLongTaskReason("鐤剧梾浠诲姟澶勭悊寮傚父");
-            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+            inhospVisitFacade.updatePatMedInhosp(patMedInhosp1);
         }
         return generatedCount;
     }
 
+    // ==========================================================================
+    // 鍑哄叆闄㈤殢璁挎ā鍧楀寲锛堢涓�鎵癸級鈥斺�� 3 涓繃娓℃湡鍏ュ彛锛堢函杞彂锛岄浂涓氬姟閫昏緫锛�
+    //
+    // 鈿狅笍 杩� 3 涓柟娉曟槸鍒绘剰鏂板鐨勶紝涓嶆槸璇姞锛�
+    //    瑙� IPatMedInhospService 閲屽悓鍚嶇殑鎺ュ彛澹版槑娉ㄩ噴锛屼互鍙�
+    //    sql/_probe/verify_step16_service_restore.py 鐨� expected_added 鏂█銆�
+    // ==========================================================================
+
+    /**
+     * 銆愯繃娓℃湡鐢ㄣ�戞墜鏈殢璁挎壂鎻� 鈥斺�� 涓� {@link #addOperationSubTask(String)} 瀹屽叏绛変环銆�
+     * <p>
+     * 鈿狅笍 {@code addOperationSubTask} 鍘熷疄鐜拌繑鍥� {@code void}锛屾墍浠ヨ繖閲屾寜"澶勭悊浜� 1 杞�"杩斿洖 1锛�
+     * 浠呯敤浜庢棩蹇楋紱<b>璋冪敤鏂逛笉寰椾緷璧栬杩斿洖鍊肩殑涓氬姟鍚箟</b>銆�
+     */
+    @Override
+    public int runOperationVisit(String config) {
+        addOperationSubTask(config);
+        return 1;
+    }
+
+    /**
+     * 銆愯繃娓℃湡鐢ㄣ�戠瀹ょ淮搴︽湭澶勭悊鐨勫湪闄㈡偅鑰呫��
+     * <p>
+     * 鏉′欢涓庡師 {@code dealOutHospInfo} 绗竴娈垫煡璇㈤�愬瓧涓�鑷达細
+     * {@code deptcheckFlag="0"} + {@code inhospstate="1"} + {@code fuflag="1"}銆�
+     */
+    @Override
+    public List<PatMedInhosp> selectPendingDeptPatientsForVisit() {
+        PatMedInhosp pmks = new PatMedInhosp();
+        pmks.setDeptcheckFlag("0");
+        pmks.setInhospstate("1");
+        pmks.setFuflag("1");
+        return inhospVisitFacade.selectPatMedInhospList(pmks);
+    }
+
+    /**
+     * 銆愯繃娓℃湡鐢ㄣ�戞妸涓�鏉″凡缁勮濂界殑瀛愪换鍔¤惤搴擄紙鍘� {@code serviceSubtaskMapper.insertServiceSubtask}锛夈��
+     */
+    @Override
+    public boolean persistSubtask(ServiceSubtask serviceSubtask) {
+        return serviceSubtaskMapper.insertServiceSubtask(serviceSubtask) == 1;
+    }
 
 }

--
Gitblit v1.9.3