From 55ede3cff5dbbbcb8675d1592a67f20d598d49e7 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 18 四月 2025 14:21:28 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java                            |   15 
 smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java           |  197 +++++++++++++++++
 smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java            |  300 ++++++++++++++++++--------
 smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml                       |   36 ++
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java                           |   11 +
 smartor/src/main/java/com/smartor/domain/PatMedInhosp.java                             |   16 +
 smartor/src/main/java/com/smartor/domain/ExternalInHospPatientDiagnoseInfo.java        |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java |   14 +
 ruoyi-admin/src/main/resources/application-druid.yml                                   |   14 
 smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml                      |   15 +
 smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java                   |    2 
 11 files changed, 492 insertions(+), 131 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java
index 7201cc7..997d368 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java
@@ -13,9 +13,11 @@
 import com.smartor.domain.PatMedInhospVO;
 import com.smartor.domain.PatMedReq;
 import com.smartor.service.IPatMedInhospService;
+import com.smartor.service.IPatMedOuthospService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -34,6 +36,13 @@
 public class PatMedInhospController extends BaseController {
     @Autowired
     private IPatMedInhospService patMedInhospService;
+
+    @Autowired
+    private IPatMedOuthospService iPatMedOuthospService;
+
+    @Value("${visitHosp}")
+    private Integer visitHosp;
+
 
     /**
      * 鏌ヨ鎮h�呬綇闄㈣褰曞垪琛�
@@ -177,6 +186,11 @@
 //    @GetMapping("/test")
 //    public void test() {
 //        patMedInhospService.dealOutHospInfo();
+//
+//        //闂ㄨ瘖琛�
+//        if (visitHosp != 1) {
+//            iPatMedOuthospService.dealOutpatientInfo();
+//        }
 //    }
 
 }
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index e65bd6c..33c712e 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -13,10 +13,10 @@
         #        鍏徃
         #        url: jdbc:mysql://192.168.2.9:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         #        涓芥按
-#        url: jdbc:mysql://127.0.0.1:3308/smartor-lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-#        username: smartor
-#        password: Smartor.2023
-#        driverClassName: com.mysql.cj.jdbc.Driver
+        #        url: jdbc:mysql://127.0.0.1:3308/smartor-lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        #        username: smartor
+        #        password: Smartor.2023
+        #        driverClassName: com.mysql.cj.jdbc.Driver
         #        # 鏂板崕
         #        url: jdbc:mysql://192.168.191.181:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         #        username: smartor
@@ -205,9 +205,6 @@
 #璇煶鍦板潃璁块棶鍓嶇紑(鍏徃)
 #voicePathPrefix: http://192.168.2.13:8095/profile/upload/vadio/
 
-#鍏佽鑷姩鐢熸垚浠诲姟
-createTaskServiceType: 2
-
 #绗釜灏忔椂鐢佃瘽鎷ㄦ墦鐨勪笂闄�
 phoneUpEveryHour: 12
 #鐢佃瘽姣忓ぉ缁撴潫鏃堕棿
@@ -221,3 +218,6 @@
 
 #admin绠$悊鍛榰serId
 isAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13
+
+#闅忚鍖婚櫌锛�1鏂板崕   2涓芥按
+visitHosp: 2
diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
index d704bd2..347f135 100644
--- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
@@ -72,6 +72,9 @@
     private IPatMedInhospService iPatMedInhospService;
 
     @Autowired
+    private IPatMedOuthospService iPatMedOuthospService;
+
+    @Autowired
     private IPatMedOperationService iPatMedOperationService;
 
     @Autowired
@@ -100,6 +103,9 @@
 
     @Value("${req_path}")
     private String req_path;
+
+    @Value("${visitHosp}")
+    private Integer visitHosp;
 
     @Autowired
     private ServiceTaskMapper serviceTaskMapper;
@@ -239,7 +245,12 @@
      * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃
      */
     public void dealOutHospInfo() {
+        //鍑洪櫌琛�
         iPatMedInhospService.dealOutHospInfo();
+        //闂ㄨ瘖琛�
+        if(visitHosp!=1) {
+            iPatMedOuthospService.dealOutpatientInfo();
+        }
     }
 
 
diff --git a/smartor/src/main/java/com/smartor/domain/ExternalInHospPatientDiagnoseInfo.java b/smartor/src/main/java/com/smartor/domain/ExternalInHospPatientDiagnoseInfo.java
index 9f6c70d..01e3df0 100644
--- a/smartor/src/main/java/com/smartor/domain/ExternalInHospPatientDiagnoseInfo.java
+++ b/smartor/src/main/java/com/smartor/domain/ExternalInHospPatientDiagnoseInfo.java
@@ -26,4 +26,7 @@
     @ApiModelProperty(value = "鐤剧梾缂栫爜")
     private String Icd10;
 
+    @ApiModelProperty(value = "鐤剧梾")
+    private String Icd10;
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java b/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
index e50b10a..6c4da5e 100644
--- a/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
+++ b/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
@@ -282,10 +282,20 @@
     private String inhospstate;
 
     /**
-     * 闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊
+     * 绉戝闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊
      */
-    @ApiModelProperty(value = "闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊鎴愬姛    2澶勭悊绉戝澶辫触  3澶勭悊鐤剧梾澶辫触")
-    private String checkFlag;
+    @ApiModelProperty(value = "闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊鎴愬姛    2澶勭悊澶辫触 ")
+    private String deptcheckFlag;
+    /**
+     * 鐥呭尯闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊
+     */
+    @ApiModelProperty(value = "鐥呭尯闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊鎴愬姛    2澶勭悊澶辫触 ")
+    private String wardcheckFlag;
+    /**
+     * 鐤剧梾闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊
+     */
+    @ApiModelProperty(value = "鐤剧梾闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊鎴愬姛    2澶勭悊澶辫触 ")
+    private String diagcheckFlag;
 
     /**
      * 骞撮緞
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java b/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java
index b859f64..6bc238c 100644
--- a/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java
+++ b/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java
@@ -1,15 +1,13 @@
 package com.smartor.domain;
 
-import java.util.Date;
-
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.core.domain.BaseEntity;
+
+import java.util.Date;
 
 /**
  * 鎮h�呴棬璇婅褰曞璞� pat_med_outhosp
@@ -197,6 +195,11 @@
     @ApiModelProperty(value = "鎵嬫満鍙�")
     private String telcode;
 
+    /**
+     * 鐤剧梾闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊
+     */
+    @ApiModelProperty(value = "鐤剧梾闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊鎴愬姛    2澶勭悊澶辫触 ")
+    private String diagcheckFlag;
 
 
     @JsonFormat(pattern = "yyyy-MM-dd")
diff --git a/smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java b/smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java
index 07518e4..2c9bc1a 100644
--- a/smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java
+++ b/smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java
@@ -67,4 +67,6 @@
 
     //閫氳繃鎮h�匢D鑾峰彇鍒版渶鏂扮殑deptcode
     public PatMedOuthosp getDeptCodeByPatId(PatMedOuthosp patMedOuthosp);
+
+    public Integer dealOutpatientInfo();
 }
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 0fa3131..c06dd26 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -28,8 +28,6 @@
 public class PatMedInhospServiceImpl implements IPatMedInhospService {
     @Autowired
     private PatMedInhospMapper patMedInhospMapper;
-    @Autowired
-    private ServiceCheckMapper serviceCheckMapper;
 
     @Autowired
     private ServiceTaskdeptMapper serviceTaskdeptMapper;
@@ -40,15 +38,7 @@
     @Autowired
     private PatArchiveMapper patArchiveMapper;
     @Autowired
-    private TemplateDeptMapper templateDeptMapper;
-    @Autowired
     private PatArchiveImportMapper patArchiveImportMapper;
-    @Autowired
-    private Icd10AssociationMapper icd10AssociationMapper;
-    @Autowired
-    private SvyTaskTemplateMapper svyTaskTemplateMapper;
-    @Autowired
-    private IvrTaskTemplateMapper ivrTaskTemplateMappte;
     @Autowired
     private ServiceTaskMapper serviceTaskMapper;
     @Autowired
@@ -56,13 +46,8 @@
     @Autowired
     private SysUserDeptMapper sysUserDeptMapper;
 
-    @Value("${createTaskServiceType}")
-    private List<String> createTaskServiceType;
-
-    //璁板綍闀挎湡浠诲姟鍩虹淇℃伅
-    List<IvrLibaTemplate> libaTemplates = new ArrayList<>();
-    List<IvrTaskTemplate> ivrTaskTemplates = new ArrayList<>();
-    List<ServiceTask> serviceTaskList = new ArrayList<>();
+    @Value("${visitHosp}")
+    private Integer visitHosp;
 
     /**
      * 鏌ヨ鎮h�呬綇闄㈣褰�
@@ -202,12 +187,16 @@
         return patMedInhospMapper.deletePatMedInhospByInhospno(inhospno);
     }
 
-
     @Override
     public int dealOutHospInfo() {
+        //瀹氫箟涓変釜鍙橀噺鐢ㄦ潵璁板綍锛岃繖涓偅鑰呮槸涓嶆槸涓変釜闅忚閮芥槸涓虹┖
+        Boolean deptIsNull = false;
+        Boolean wardIsNull = false;
+        Boolean diagIsNull = false;
+
         PatMedInhosp patMedInhosp = new PatMedInhosp();
-        //鑾峰彇闇�瑕佸嚭闄㈤殢璁匡紝鏈鐞嗙殑鏁版嵁
-        patMedInhosp.setCheckFlag("0");
+        //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁
+        patMedInhosp.setDeptcheckFlag("0");
         patMedInhosp.setInhospstate("1");
         patMedInhosp.setFuflag("1");
         List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
@@ -218,70 +207,76 @@
         }
 
         for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
-            //鍏堟牴鎹瀹ゅ幓service_check鏌ヨcheck_visit_flag鏄牴鎹�滅瀹も�濋殢璁匡紝杩樻槸鏍规嵁鈥滅涓�璇婃柇鈥濋殢璁�
-            ServiceCheck serviceCheck = new ServiceCheck();
-            serviceCheck.setDeptCode(patMedInhosp1.getDeptcode());
-            serviceCheck.setOrgid(patMedInhosp1.getOrgid());
-            List<ServiceCheck> serviceChecks = serviceCheckMapper.selectServiceCheckList(serviceCheck);
             //鑾峰彇鎮h�呬俊鎭�
             PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
             if (Objects.isNull(patArchive)) {
-                patMedInhosp1.setCheckFlag("2");
+                patMedInhosp1.setDeptcheckFlag("2");
+                patMedInhosp1.setWardcheckFlag("2");
+                patMedInhosp1.setDiagcheckFlag("2");
                 patMedInhosp1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
                 patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
                 continue;
             }
             try {
-                if (CollectionUtils.isEmpty(serviceChecks) || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 1 || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 3) {
-                    //鏍规嵁鎮h�呮墍鍦ㄧ瀹わ紝鑾峰彇璇ョ瀹ょ殑闀挎湡浠诲姟
-                    ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
+                //鏍规嵁鎮h�呮墍鍦ㄧ瀹わ紝鑾峰彇璇ョ瀹ょ殑闀挎湡浠诲姟
+                ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
+                serviceTaskdept.setLongtask(1L);
+                serviceTaskdept.setDeptCode(patMedInhosp1.getLeaveldeptcode());
+                serviceTaskdept.setDeptType("1");
+                List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
+                //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
+                if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {
+                    deptIsNull = true;
+                } else {
+                    for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) {
+                        writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 1);
+                    }
+                    patMedInhosp1.setDeptcheckFlag("1");
+                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+                }
+
+                //鏍规嵁鎮h�呮墍鍦ㄧ梾鍖猴紝鑾峰彇璇ョ梾鍖虹殑闀挎湡浠诲姟,鏂板崕鍖婚櫌鍙互鍏堜笉鐢ㄦ牴鎹梾鍖哄拰鐤剧梾鏉ュ仛
+                if (visitHosp != 1) {
                     serviceTaskdept.setLongtask(1L);
-                    serviceTaskdept.setDeptCode(patMedInhosp1.getLeaveldeptcode());
-                    serviceTaskdept.setServiceType("2");
-                    List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
-                    //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堟殏瀹氾紝灏嗗嚭鍏ラ櫌琛ㄧ殑check_flag璁剧疆涓�2  锛宭ong_task_reason 璁板綍鍘熷洜锛�
-                    if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {
-                        patMedInhosp1.setCheckFlag("2");
-                        patMedInhosp1.setLongTaskReason("璇ユ偅鑰呮墍鍦ㄧ瀹わ紝鏈厤缃暱鏈熶换鍔�;");
+                    serviceTaskdept.setDeptCode(patMedInhosp1.getLeavehospitaldistrictcode());
+                    serviceTaskdept.setDeptType("2");
+                    List<ServiceTaskdept> serviceTaskdeptList = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
+                    //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
+                    if (CollectionUtils.isEmpty(serviceTaskdeptList) || serviceTaskdeptList.size() == 0) {
+                        wardIsNull = true;
+                    } else {
+                        for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) {
+                            writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 2);
+                        }
+                        patMedInhosp1.setWardcheckFlag("1");
                         patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
-                        continue;
-                    } else if (serviceTaskdepts.size() > 1) {
-                        //濡傛灉鏌ヨ鍑哄涓换鍔★紝閭e氨鍙栫涓�涓紝骞跺湪鎮h�呭娉ㄤ竴涓�
-                        List<Long> tempList = serviceTaskdepts.stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());
-                        patMedInhosp1.setLongTaskReason("璇ユ偅鑰呮墍鍦ㄧ瀹わ紝鏈夊涓嚭闄㈤殢璁块暱鏈熶换鍔�:" + tempList);
-                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
-                        ServiceTaskdept serviceTaskdept1 = serviceTaskdepts.get(0);
-                        serviceTaskdepts = new ArrayList<>();
-                        serviceTaskdepts.add(serviceTaskdept1);
                     }
 
-                    writeInSubTask(serviceTaskdepts.get(0).getTaskId(), true, patMedInhosp1, patArchive);
-                }
-                if (serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 2 || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 3) {
-                    //涓芥按闇�瑕佹牴鎹闄㈢柧鐥呭璇ョ梾浜虹敓鎴愪竴娆¢殢璁�
-                    String[] split = patMedInhosp1.getIcd10code().split(",");
+                    // 鏍规嵁鎮h�呯殑鐤剧梾锛岃幏鍙栬鐤剧梾鐨勯暱鏈熶换鍔�
                     ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
                     serviceTaskdiag.setLongtask(1L);
-                    serviceTaskdiag.setIcd10code(split[0]);
-                    serviceTaskdiag.setServiceType("2");
+                    serviceTaskdiag.setIcd10code(patMedInhosp1.getLeaveldeptcode());
                     List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);
-                    PatMedInhosp patMedInhosp2 = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
-                    //濡傛灉鐤剧梾缂栫爜涓虹┖锛堟殏瀹氾紝灏嗗嚭鍏ラ櫌琛ㄧ殑check_flag璁剧疆涓�3  锛宭ong_task_reason 璁板綍鍘熷洜锛�
+                    //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
                     if (CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) {
-                        patMedInhosp1.setCheckFlag("3");
-                        patMedInhosp1.setLongTaskReason(patMedInhosp2.getLongTaskReason() + "璇ユ偅鑰呯殑绗竴鐤剧梾缂栫爜锛屾湭閰嶇疆闀挎湡浠诲姟;");
+                        diagIsNull = true;
+                    } else {
+
+                        for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) {
+                            writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 3);
+                        }
+                        patMedInhosp1.setDiagcheckFlag("1");
                         patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
-                        continue;
-                    } else if (serviceTaskdiags.size() > 1) {
-                        //濡傛灉鏌ヨ鍑哄涓换鍔★紝閭e氨鍙栫涓�涓紝骞跺湪鎮h�呭娉ㄤ竴涓�
-                        List<Long> tempList = serviceTaskdiags.stream().map(ServiceTaskdiag::getTaskId).collect(Collectors.toList());
-                        patMedInhosp1.setLongTaskReason(patMedInhosp2.getLongTaskReason() + "璇ユ偅鑰呯殑绗竴鐤剧梾缂栫爜锛屾湁澶氫釜鍑洪櫌闅忚闀挎湡浠诲姟:" + tempList);
-                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
-                        ServiceTaskdiag serviceTaskdiag1 = serviceTaskdiags.get(0);
-                        serviceTaskdiags = new ArrayList<>();
-                        serviceTaskdiags.add(serviceTaskdiag1);
                     }
-                    writeInSubTask(serviceTaskdiags.get(0).getTaskId(), false, patMedInhosp1, patArchive);
+                }
+
+                //涓変釜閮戒负绌猴紝娌℃硶闅忚浜�
+                if (diagIsNull == true && deptIsNull == true && wardIsNull == true) {
+                    patMedInhosp1.setDeptcheckFlag("2");
+                    patMedInhosp1.setWardcheckFlag("2");
+                    patMedInhosp1.setDiagcheckFlag("2");
+                    patMedInhosp1.setLongTaskReason("璇ユ偅鑰呮墍鍦ㄧ瀹ゃ�佺梾鍖� 鎴栨墍鎮g殑鐤剧梾锛屾湭閰嶇疆闀挎湡浠诲姟;");
+                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
                 }
 
             } catch (Exception e) {
@@ -291,7 +286,7 @@
         }
 
         //鑾峰彇鏈鐞嗗湪闄㈢殑鏁版嵁(濡傛灉鍒氬垰鍑洪櫌鐨勬偅鑰呮暟鎹殑鍑洪櫌鏃堕棿,鍦ㄤ笅闈㈡煡璇㈠嚭鐨勫叆闄㈡椂闂翠箣鍓�,閭d箣鍓嶇殑鍑洪櫌鎮h�呯殑鏁版嵁,涔熷緱鍋滄帀,鍥犱负鍙堝叆闄簡)
-        patMedInhosp.setCheckFlag("0");
+        patMedInhosp.setDeptcheckFlag("0");
         patMedInhosp.setInhospstate("0");
         List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
         for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
@@ -303,6 +298,108 @@
         }
         return 1;
     }
+
+//
+//    @Override
+//    public int dealOutHospInfo() {
+//        PatMedInhosp patMedInhosp = new PatMedInhosp();
+//        //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁
+//        patMedInhosp.setDeptcheckFlag("0");
+//        patMedInhosp.setInhospstate("1");
+//        patMedInhosp.setFuflag("1");
+//        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+//        log.error("dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鎮h�呬俊鎭細{}", patMedInhosps);
+//        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
+//            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+//            patMedInhosp1.setTagname(tagname);
+//        }
+//
+//        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
+//            //鍏堟牴鎹瀹ゅ幓service_check鏌ヨcheck_visit_flag鏄牴鎹�滅瀹も�濋殢璁匡紝杩樻槸鏍规嵁鈥滅涓�璇婃柇鈥濋殢璁�
+//            ServiceCheck serviceCheck = new ServiceCheck();
+//            serviceCheck.setDeptCode(patMedInhosp1.getDeptcode());
+//            serviceCheck.setOrgid(patMedInhosp1.getOrgid());
+//            List<ServiceCheck> serviceChecks = serviceCheckMapper.selectServiceCheckList(serviceCheck);
+//            //鑾峰彇鎮h�呬俊鎭�
+//            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());
+//            if (Objects.isNull(patArchive)) {
+//                patMedInhosp1.setDeptcheckFlag("2");
+//                patMedInhosp1.setLongTaskReason("鎮h�呭熀鏈俊鎭负绌�");
+//                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+//                continue;
+//            }
+//            try {
+//                if (CollectionUtils.isEmpty(serviceChecks) || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 1 || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 3) {
+//                    //鏍规嵁鎮h�呮墍鍦ㄧ瀹わ紝鑾峰彇璇ョ瀹ょ殑闀挎湡浠诲姟
+//                    ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
+//                    serviceTaskdept.setLongtask(1L);
+//                    serviceTaskdept.setDeptCode(patMedInhosp1.getLeaveldeptcode());
+//                    serviceTaskdept.setServiceType("2");
+//                    List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
+//                    //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堟殏瀹氾紝灏嗗嚭鍏ラ櫌琛ㄧ殑check_flag璁剧疆涓�2  锛宭ong_task_reason 璁板綍鍘熷洜锛�
+//                    if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {
+//                        patMedInhosp1.setDeptcheckFlag("2");
+//                        patMedInhosp1.setLongTaskReason("璇ユ偅鑰呮墍鍦ㄧ瀹わ紝鏈厤缃暱鏈熶换鍔�;");
+//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+//                        continue;
+//                    } else if (serviceTaskdepts.size() > 1) {
+//                        //濡傛灉鏌ヨ鍑哄涓换鍔★紝閭e氨鍙栫涓�涓紝骞跺湪鎮h�呭娉ㄤ竴涓�
+//                        List<Long> tempList = serviceTaskdepts.stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());
+//                        patMedInhosp1.setLongTaskReason("璇ユ偅鑰呮墍鍦ㄧ瀹わ紝鏈夊涓嚭闄㈤殢璁块暱鏈熶换鍔�:" + tempList);
+//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+//                        ServiceTaskdept serviceTaskdept1 = serviceTaskdepts.get(0);
+//                        serviceTaskdepts = new ArrayList<>();
+//                        serviceTaskdepts.add(serviceTaskdept1);
+//                    }
+//
+//                    writeInSubTask(serviceTaskdepts.get(0).getTaskId(), true, patMedInhosp1, patArchive);
+//                }
+//                if (serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 2 || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 3) {
+//                    //涓芥按闇�瑕佹牴鎹闄㈢柧鐥呭璇ョ梾浜虹敓鎴愪竴娆¢殢璁�
+//                    String[] split = patMedInhosp1.getIcd10code().split(",");
+//                    ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
+//                    serviceTaskdiag.setLongtask(1L);
+//                    serviceTaskdiag.setIcd10code(split[0]);
+//                    serviceTaskdiag.setServiceType("2");
+//                    List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);
+//                    PatMedInhosp patMedInhosp2 = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());
+//                    //濡傛灉鐤剧梾缂栫爜涓虹┖锛堟殏瀹氾紝灏嗗嚭鍏ラ櫌琛ㄧ殑check_flag璁剧疆涓�3  锛宭ong_task_reason 璁板綍鍘熷洜锛�
+//                    if (CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) {
+//                        patMedInhosp1.setDeptcheckFlag("3");
+//                        patMedInhosp1.setLongTaskReason(patMedInhosp2.getLongTaskReason() + "璇ユ偅鑰呯殑绗竴鐤剧梾缂栫爜锛屾湭閰嶇疆闀挎湡浠诲姟;");
+//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+//                        continue;
+//                    } else if (serviceTaskdiags.size() > 1) {
+//                        //濡傛灉鏌ヨ鍑哄涓换鍔★紝閭e氨鍙栫涓�涓紝骞跺湪鎮h�呭娉ㄤ竴涓�
+//                        List<Long> tempList = serviceTaskdiags.stream().map(ServiceTaskdiag::getTaskId).collect(Collectors.toList());
+//                        patMedInhosp1.setLongTaskReason(patMedInhosp2.getLongTaskReason() + "璇ユ偅鑰呯殑绗竴鐤剧梾缂栫爜锛屾湁澶氫釜鍑洪櫌闅忚闀挎湡浠诲姟:" + tempList);
+//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
+//                        ServiceTaskdiag serviceTaskdiag1 = serviceTaskdiags.get(0);
+//                        serviceTaskdiags = new ArrayList<>();
+//                        serviceTaskdiags.add(serviceTaskdiag1);
+//                    }
+//                    writeInSubTask(serviceTaskdiags.get(0).getTaskId(), false, patMedInhosp1, patArchive);
+//                }
+//
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//                log.error("浜哄憳澶勭悊鍑哄紓甯镐簡锛歿}", e.getMessage());
+//            }
+//        }
+//
+//        //鑾峰彇鏈鐞嗗湪闄㈢殑鏁版嵁(濡傛灉鍒氬垰鍑洪櫌鐨勬偅鑰呮暟鎹殑鍑洪櫌鏃堕棿,鍦ㄤ笅闈㈡煡璇㈠嚭鐨勫叆闄㈡椂闂翠箣鍓�,閭d箣鍓嶇殑鍑洪櫌鎮h�呯殑鏁版嵁,涔熷緱鍋滄帀,鍥犱负鍙堝叆闄簡)
+//        patMedInhosp.setDeptcheckFlag("0");
+//        patMedInhosp.setInhospstate("0");
+//        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+//        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {
+//            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());
+//            patMedInhosp1.setTagname(tagname);
+//        }
+//        if (CollectionUtils.isNotEmpty(patMedInhospList) && patMedInhospList.size() > 0) {
+//            dealInHospInfo(patMedInhospList);
+//        }
+//        return 1;
+//    }
 
     /**
      * 鑾峰彇鍑洪櫌锛屼綇闄紝闂ㄨ瘖鏈嶅姟浜烘
@@ -361,30 +458,21 @@
     }
 
     //灏嗘偅鑰呮斁鍒皊ubtask涓�
-    private void writeInSubTask(Long taskid, Boolean check, PatMedInhosp patMedInhosp1, PatArchive patArchive) {
+    private void writeInSubTask(Long taskid, Boolean check, PatMedInhosp patMedInhosp1, PatArchive patArchive, Integer type) {
         String longTaskReason = patMedInhosp1.getLongTaskReason();
         if (StringUtils.isEmpty(longTaskReason)) longTaskReason = "";
-//            Long taskid = std.getTaskId();
         ServiceTask st = new ServiceTask();
         st.setTaskid(taskid);
         st.setSendState(2L);
         List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
         if (CollectionUtils.isEmpty(serviceTasks)) {
             log.error("璇ユ偅鑰呭嚭闄㈤殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}", taskid);
-            patMedInhosp1.setCheckFlag("2");
+            patMedInhosp1.setDeptcheckFlag("2");
             patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呭嚭闄㈤殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
             patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
             return;
         }
         ServiceTask serviceTask = serviceTasks.get(0);
-        if (!createTaskServiceType.contains(serviceTask.getServiceType())) {
-            //涓嶆槸鍏佽鐨勬湇鍔$被鍨嬶紝鍒檆ontinue
-            log.error("璇ユ偅鑰呭嚭闄㈤殢璁块暱鏈熶换鍔$殑鏈嶅姟绫诲瀷涓嶅湪鑷姩鐢熸垚鐨勬湇鍔$被鍨嬪垪琛ㄤ腑,浠诲姟ID涓猴細{}", taskid);
-            patMedInhosp1.setCheckFlag("2");
-            patMedInhosp1.setLongTaskReason(longTaskReason + " & 璇ユ偅鑰呭嚭闄㈤殢璁块暱鏈熶换鍔$殑鏈嶅姟绫诲瀷涓嶅湪鑷姩鐢熸垚鐨勬湇鍔$被鍨嬪垪琛ㄤ腑,浠诲姟ID涓猴細" + taskid);
-            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
-            return;
-        }
         //灏佽serviceSubtask
         ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp1, patArchive);
         Integer i = 0;
@@ -394,6 +482,7 @@
             ServiceSubtaskVO subtask = new ServiceSubtaskVO();
             subtask.setPatid(patArchive.getId());
             subtask.setSendstate(2L);
+            subtask.setTaskid(taskid);
             List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask);
             log.error("璇ユ偅鑰呭緟鎵ц鐨勪换鍔�:{}", selectServiceSubtaskList);
             if (CollectionUtils.isNotEmpty(selectServiceSubtaskList) && selectServiceSubtaskList.size() > 0) {
@@ -402,25 +491,40 @@
                         //涓嶆槸闀挎湡浠诲姟锛屼笉澶勭悊
                         continue;
                     }
-                    if (serviceSubtask1.getEndtime().before(serviceSubtask.getEndtime())) {
-                        //濡傛灉褰撳墠寰幆鐨勫瓙浠诲姟鐨勫嚭闄㈡椂闂村湪鈥滃噯澶囨柊澧炵殑瀛愪换鍔♀�濈殑鍑洪櫌鏃堕棿涔嬪墠锛屽垯灏嗗惊鐜殑瀛愪换鍔″仠鎺�
+                    //type = 1鎴�2 琛ㄧず 鈥濈瀹ゃ�佺梾鍖衡��
+                    if (type == 1 || type == 2) {
+                        if (serviceSubtask1.getEndtime().before(serviceSubtask.getEndtime()) && serviceSubtask1.getServiceType().equals("2")) {
+                            //濡傛灉褰撳墠寰幆鐨勫瓙浠诲姟鐨勫嚭闄㈡椂闂村湪鈥滃噯澶囨柊澧炵殑瀛愪换鍔♀�濈殑鍑洪櫌鏃堕棿涔嬪墠锛屽垯灏嗗惊鐜殑瀛愪换鍔″仠鎺�
+                            serviceSubtask1.setSendstate(4L);
+                            serviceSubtask1.setRemark("鎮h�呭啀鍏ラ櫌");
+                            serviceSubtask1.setResult("error");
+                            serviceSubtask1.setFinishtime(new Date());
+                            serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy());
+                            serviceSubtask1.setUpdateTime(new Date());
+                            Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
+                            if (aBoolean) i = 1;
+                        } else {
+                            //鐩稿弽,鍒欏皢褰撴湁鐨勬暟鎹仠鎺�
+                            serviceSubtask.setResult("error");
+                            serviceSubtask.setFinishtime(new Date());
+                            serviceSubtask.setSendstate(4L);
+                            serviceSubtask.setRemark("褰撳墠鎮h�呭嚭闄㈡椂闂村悗鏈夊緟鎵ц鐨勫嚭闄㈤殢璁块暱鏈熶换鍔�");
+                            serviceSubtask.setCreateBy(serviceTask.getCreateBy());
+                            serviceSubtask.setCreateTime(new Date());
+                            i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+                        }
+                    } else if (type == 3) {
+                        //type=3 琛ㄧず鐤剧梾
+                        //灏嗕箣鍓嶇殑鍋滄帀
                         serviceSubtask1.setSendstate(4L);
-                        serviceSubtask1.setRemark("鎮h�呭啀鍏ラ櫌");
+                        serviceSubtask1.setRemark("鐤剧梾鎮h�呭啀鍏ラ櫌");
                         serviceSubtask1.setResult("error");
                         serviceSubtask1.setFinishtime(new Date());
                         serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy());
-                        serviceSubtask1.setUpdateTime(new Date());
-                        Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
-                        if (aBoolean) i = 1;
-                    } else {
-                        //鐩稿弽,鍒欏皢褰撴湁鐨勬暟鎹仠鎺�
-                        serviceSubtask.setResult("error");
-                        serviceSubtask.setFinishtime(new Date());
-                        serviceSubtask.setSendstate(4L);
-                        serviceSubtask.setRemark("褰撳墠鎮h�呭嚭闄㈡椂闂村悗鏈夊緟鎵ц鐨勫嚭闄㈤殢璁块暱鏈熶换鍔�");
-                        serviceSubtask.setCreateBy(serviceTask.getCreateBy());
-                        serviceSubtask.setCreateTime(new Date());
+                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
+                        //閲嶆柊鏂板瀛愪换鍔�
                         i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+
                     }
                 }
             } else {
@@ -450,17 +554,22 @@
             //灏哻heck_flag鏀规垚1锛堝凡澶勭悊锛�
             PatMedInhosp patMedInhosp2 = new PatMedInhosp();
             patMedInhosp2.setInhospid(patMedInhosp1.getInhospid());
-            patMedInhosp2.setCheckFlag("1");
+            if (type == 1) patMedInhosp2.setDeptcheckFlag("1");
+            if (type == 2) patMedInhosp2.setWardcheckFlag("1");
+            if (type == 3) patMedInhosp2.setDiagcheckFlag("1");
+
             patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
         } else {
             //鐢熸垚瀛愪换鍔″け璐ワ紝
             log.error("鐢熸垚瀛愪换鍔″け璐erviceSubtask涓猴細{}", serviceSubtask);
             PatMedInhosp patMedInhosp2 = new PatMedInhosp();
             patMedInhosp2.setInhospid(patMedInhosp1.getInhospid());
-            patMedInhosp2.setRemark("鐢熸垚瀛愪换鍔″け璐�");
+            if (type == 1) patMedInhosp2.setDeptcheckFlag("2");
+            if (type == 2) patMedInhosp2.setWardcheckFlag("2");
+            if (type == 3) patMedInhosp2.setDiagcheckFlag("2");
+            patMedInhosp2.setRemark("鐢熸垚瀛愪换鍔″け璐� " + type);
             patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);
         }
-
     }
 
     //灏佽serviceSubtask
@@ -538,7 +647,6 @@
                             serviceSubtask1.setResult("error");
                             serviceSubtask1.setFinishtime(new Date());
                             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
-//                            patMedInhosp1.setCheckFlag("1");
                         }
                     }
                 }
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 50cd264..8bc7444 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -1,21 +1,18 @@
 package com.smartor.service.impl;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
+import java.util.*;
 
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysUserDept;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.SecurityUtils;
-import com.smartor.domain.PatMedReq;
-import com.smartor.domain.PatMedRes;
-import com.smartor.mapper.SysUserDeptMapper;
+import com.ruoyi.common.utils.StringUtils;
+import com.smartor.domain.*;
+import com.smartor.mapper.*;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.smartor.mapper.PatMedOuthospMapper;
-import com.smartor.domain.PatMedOuthosp;
 import com.smartor.service.IPatMedOuthospService;
 import org.springframework.util.CollectionUtils;
 
@@ -25,6 +22,7 @@
  * @author smartor
  * @date 2023-03-04
  */
+@Slf4j
 @Service
 public class PatMedOuthospServiceImpl implements IPatMedOuthospService {
     @Autowired
@@ -32,6 +30,18 @@
 
     @Autowired
     private SysUserDeptMapper sysUserDeptMapper;
+
+    @Autowired
+    private ServiceSubtaskMapper serviceSubtaskMapper;
+
+    @Autowired
+    private ServiceTaskMapper serviceTaskMapper;
+
+    @Autowired
+    private ServiceTaskdiagMapper serviceTaskdiagMapper;
+
+    @Autowired
+    private PatArchiveMapper patArchiveMapper;
 
 
     /**
@@ -127,4 +137,173 @@
         }
         return patMedOuthosps.get(0);
     }
+
+    /**
+     * 闂ㄨ瘖鐥呬汉淇℃伅澶勭悊
+     *
+     * @return
+     */
+    @Override
+    public Integer dealOutpatientInfo() {
+        PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
+        patMedOuthosp.setDiagcheckFlag("0");
+        List<PatMedOuthosp> patMedOuthosps = selectPatMedOuthospList(patMedOuthosp);
+        for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) {
+            // 鏍规嵁鎮h�呯殑鐤剧梾锛岃幏鍙栬鐤剧梾鐨勯暱鏈熶换鍔�
+            ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
+            serviceTaskdiag.setLongtask(1L);
+            serviceTaskdiag.setIcd10code(patMedOuthosp1.getIcd10code());
+            List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);
+            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp1.getPatid());
+            //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
+            if (org.apache.commons.collections4.CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) {
+                patMedOuthosp1.setDiagcheckFlag("2");
+                patMedOuthosp1.setRemark("閫氳繃icd10,娌℃湁鎵惧埌闅忚浠诲姟ID");
+                patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp1);
+            } else {
+                for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) {
+                    writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedOuthosp1, patArchive);
+                }
+            }
+
+        }
+        return 1;
+    }
+
+    private void writeInSubTask(Long taskid, Boolean check, PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
+
+        ServiceTask st = new ServiceTask();
+        st.setTaskid(taskid);
+        st.setSendState(2L);
+        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
+        if (org.apache.commons.collections4.CollectionUtils.isEmpty(serviceTasks)) {
+            log.error("璇ユ偅鑰呯柧鐥呴殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}", taskid);
+            patMedOuthosp.setDiagcheckFlag("2");
+            patMedOuthosp.setRemark("璇ユ偅鑰呯柧鐥呴殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:" + taskid);
+            patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp);
+            return;
+        }
+        ServiceTask serviceTask = serviceTasks.get(0);
+        //灏佽serviceSubtask
+        ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedOuthosp, patArchive);
+        Integer i = 0;
+        //鍏堝垽鏂竴涓嬶紝鏄惁闇�瑕佹牎楠�
+        if (check) {
+            //鍦ㄦ柊澧炰箣鍓嶏紝鍏堥�氳繃鎮h�匢D锛宻endstate=2鏌ヨ涓�涓嬶紝鍦ㄦ墍鏈夐暱鏈熶换鍔′腑锛屾槸涓嶆槸杩樻湁璇ユ偅鑰呭緟鎵ц鐨勪换鍔★紝鏈夌殑璇�,姣旇緝涔嬪墠鐨別ndtime鏄惁灏忎簬褰撳墠鐨別ndtaime,濡傛灉涔嬪墠鐨勫皬浜庣幇鍦ㄧ殑锛屽垯鐩存帴灏嗕箣鍓嶇殑鍋滄帀锛堝師鍥犲啀鍏ラ櫌锛�
+            ServiceSubtaskVO subtask = new ServiceSubtaskVO();
+            subtask.setPatid(patArchive.getId());
+            subtask.setSendstate(2L);
+            subtask.setTaskid(taskid);
+            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask);
+            log.error("璇ユ偅鑰呭緟鎵ц鐨勪换鍔�:{}", selectServiceSubtaskList);
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(selectServiceSubtaskList) && selectServiceSubtaskList.size() > 0) {
+                for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {
+                    if (Objects.isNull(serviceSubtask1.getLongSendTime())) {
+                        //涓嶆槸闀挎湡浠诲姟锛屼笉澶勭悊
+                        continue;
+                    }
+
+                    //灏嗕箣鍓嶇殑鍋滄帀
+                    serviceSubtask1.setSendstate(4L);
+                    serviceSubtask1.setRemark("鐤剧梾鎮h�呭啀鍏ラ櫌");
+                    serviceSubtask1.setResult("error");
+                    serviceSubtask1.setFinishtime(new Date());
+                    serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy());
+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
+                    //閲嶆柊鏂板瀛愪换鍔�
+                    i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+
+                }
+            } else {
+                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
+                    serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
+                    serviceSubtask.setSendstate(4L);
+                    serviceSubtask.setResult("error");
+                    serviceSubtask.setFinishtime(new Date());
+                }
+                serviceSubtask.setCreateBy(serviceTask.getCreateBy());
+                serviceSubtask.setCreateTime(new Date());
+                i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+            }
+        } else {
+            if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
+                serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
+                serviceSubtask.setSendstate(4L);
+                serviceSubtask.setResult("error");
+                serviceSubtask.setFinishtime(new Date());
+
+            }
+            serviceSubtask.setCreateBy(serviceTask.getCreateBy());
+            serviceSubtask.setCreateTime(new Date());
+            i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+        }
+        if (i == 1) {
+            //灏哻heck_flag鏀规垚1锛堝凡澶勭悊锛�
+            PatMedOuthosp patMedOuthosp1 = new PatMedOuthosp();
+            patMedOuthosp1.setId(patMedOuthosp.getId());
+            patMedOuthosp1.setDiagcheckFlag("1");
+            patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp1);
+        } else {
+            //鐢熸垚瀛愪换鍔″け璐ワ紝
+            log.error("鐢熸垚瀛愪换鍔″け璐erviceSubtask涓猴細{}", serviceSubtask);
+            PatMedOuthosp pmo = new PatMedOuthosp();
+            pmo.setId(patMedOuthosp.getId());
+            pmo.setDiagcheckFlag("2");
+            pmo.setRemark("鐢熸垚瀛愪换鍔″け璐�");
+            patMedOuthospMapper.updatePatMedOuthosp(pmo);
+        }
+    }
+
+    //灏佽serviceSubtask
+    private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
+        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
+        serviceSubtask.setTaskid(serviceTask.getTaskid());
+        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
+            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
+        serviceSubtask.setDrcode(patMedOuthosp.getDrcode());
+        serviceSubtask.setDrname(patMedOuthosp.getDrname());
+        serviceSubtask.setDeptcode(patMedOuthosp.getDeptcode());
+        serviceSubtask.setDeptname(patMedOuthosp.getDeptname());
+        serviceSubtask.setTemplateid(serviceTask.getTemplateid());
+        serviceSubtask.setTemplatename(serviceTask.getTemplatename());
+        serviceSubtask.setPatid(patArchive.getId());
+        serviceSubtask.setSendname(patArchive.getName());
+        serviceSubtask.setSfzh(patArchive.getIdcardno());
+        serviceSubtask.setPhone(patArchive.getTelcode());
+        if (StringUtils.isBlank(patArchive.getTelcode())) serviceSubtask.setPhone(patArchive.getRelativetelcode());
+        serviceSubtask.setSex(patArchive.getSex());
+        serviceSubtask.setAge(patArchive.getAge());
+        serviceSubtask.setSendstate(2L);
+        serviceSubtask.setServiceType("3");
+        serviceSubtask.setPreachform(serviceTask.getPreachform());
+        serviceSubtask.setHospType("1");
+        serviceSubtask.setCreateTime(new Date());
+        serviceSubtask.setUpdateTime(new Date());
+        serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
+        serviceSubtask.setUpdateTime(new Date());
+        //璁剧疆鍙戦�佹椂闂�
+        if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L);
+        Date newDate = addDays(patMedOuthosp.getAdmitdate(), serviceTask.getSendDay().intValue());
+        serviceSubtask.setLongSendTime(newDate);
+        //鎮h�呭彂閫佹椂闂�
+        if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
+            String remark = patArchive.getNotrequiredreason();
+            serviceSubtask.setRemark(remark);
+            serviceSubtask.setResult("error");
+            serviceSubtask.setFinishtime(new Date());
+            //涓嶆墽琛�
+            serviceSubtask.setSendstate(4L);
+        }
+        return serviceSubtask;
+    }
+
+    private Date addDays(Date date, Integer days) {
+        if (days == null) {
+            days = 1;
+        }
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, days);
+        return calendar.getTime();
+    }
 }
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
index e17bbef..36d4062 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -47,7 +47,9 @@
         <result property="patname" column="patname"/>
         <result property="patno" column="patno"/>
         <result property="inhospstate" column="inhospstate"/>
-        <result property="checkFlag" column="check_flag"/>
+        <result property="deptcheckFlag" column="deptcheck_flag"/>
+        <result property="wardcheckFlag" column="wardcheck_flag"/>
+        <result property="diagcheckFlag" column="diagcheck_flag"/>
         <result property="age" column="age"/>
         <result property="sex" column="sex"/>
         <result property="telcode" column="telcode"/>
@@ -88,7 +90,9 @@
                out_way_name,
                nurse_id,
                nurse_name,
-               check_flag,
+               deptcheck_flag,
+               wardcheck_flag,
+               diagcheck_flag,
                inhospstate,
                patno,
                long_task_reason,
@@ -143,7 +147,9 @@
         b.patname,
         b.out_way_id,
         b.out_way_name,
-        b.check_flag,
+        b.deptcheck_flag,
+        b.wardcheck_flag,
+        b.diagcheck_flag,
         b.inhospstate,
         b.patno,
         b.inhospno,
@@ -243,7 +249,9 @@
             <if test="patno != null ">and b.patno = #{patno}</if>
             <if test="nurseId != null ">and b.nurse_id = #{nurseId}</if>
             <if test="nurseName != null and nurseName != ''">and b.nurse_name = #{nurseName}</if>
-            <if test="checkFlag != null ">and b.check_flag = #{checkFlag}</if>
+            <if test="deptcheckFlag != null ">and b.deptcheck_flag = #{deptcheckFlag}</if>
+            <if test="wardcheckFlag != null ">and b.wardcheck_flag = #{wardcheckFlag}</if>
+            <if test="diagcheckFlag != null ">and b.diagcheck_flag = #{diagcheckFlag}</if>
             <if test="cry != null and cry == 0 ">and b.endtime is null</if>
             <if test="cry != null and cry == 1 ">and b.endtime is not null</if>
             <if test="inhospstate != null ">and b.inhospstate = #{inhospstate}</if>
@@ -300,7 +308,9 @@
         b.out_way_name,
         b.nurse_id,
         b.nurse_name,
-        b.check_flag,
+        b.deptcheckFlag,
+        b.diagcheckFlag,
+        b.wardcheckFlag,
         b.inhospstate,
         b.patno,
         b.inhospno,
@@ -369,7 +379,9 @@
             <if test="nurseId != null ">and b.nurse_id = #{nurseId}</if>
             <if test="nurseName != null ">and b.nurse_name = #{nurseName}</if>
             <if test="patno != null ">and b.patno = #{patno}</if>
-            <if test="checkFlag != null ">and b.check_flag = #{checkFlag}</if>
+            <if test="diagcheckFlag != null ">and b.diagcheck_flag = #{diagcheckFlag}</if>
+            <if test="deptcheckFlag != null ">and b.deptcheck_flag = #{deptcheckFlag}</if>
+            <if test="wardcheckFlag != null ">and b.wardcheck_flag = #{wardcheckFlag}</if>
             <if test="inhospstate != null ">and b.inhospstate = #{inhospstate}</if>
             <if test="schemestatus != null ">and b.schemestatus = #{schemestatus}</if>
             <if test="leavediagname != null  and leavediagname != ''">and b.leavediagname like concat('%',
@@ -451,7 +463,9 @@
             <if test="patname!= null">patname,</if>
             <if test="patno != null">patno,</if>
             <if test="inhospstate != null">inhospstate,</if>
-            <if test="checkFlag != null">check_flag,</if>
+            <if test="deptcheckFlag != null">deptcheck_flag,</if>
+            <if test="wardcheckFlag != null">wardcheck_flag,</if>
+            <if test="diagcheckFlag != null">diagcheck_flag,</if>
             <if test="longTaskReason != null">long_task_reason,</if>
             <if test="nurseId != null ">nurse_id,</if>
             <if test="nurseName != null ">nurse_name,</if>
@@ -511,7 +525,9 @@
             <if test="patname!= null">#{patname},</if>
             <if test="patno != null">#{patno},</if>
             <if test="inhospstate != null">#{inhospstate},</if>
-            <if test="checkFlag != null">#{checkFlag},</if>
+            <if test="deptcheckFlag != null">#{deptcheckFlag},</if>
+            <if test="wardcheckFlag != null">#{wardcheckFlag},</if>
+            <if test="diagcheckFlag != null">#{diagcheckFlag},</if>
             <if test="longTaskReason != null">#{longTaskReason},</if>
             <if test="nurseId != null ">#{nurseId},</if>
             <if test="nurseName != null ">#{nurseName},</if>
@@ -575,7 +591,9 @@
             <if test="patname!= null">patname = #{patname},</if>
             <if test="patno != null">patno = #{patno},</if>
             <if test="inhospstate != null">inhospstate = #{inhospstate},</if>
-            <if test="checkFlag != null">check_flag = #{checkFlag},</if>
+            <if test="deptcheckFlag != null">deptcheck_flag = #{deptcheckFlag},</if>
+            <if test="wardcheckFlag != null">wardcheck_flag = #{wardcheckFlag},</if>
+            <if test="diagcheckFlag != null">diagcheck_flag = #{diagcheckFlag},</if>
             <if test="longTaskReason != null">long_task_reason = #{longTaskReason},</if>
             <if test="nurseId != null ">nurse_id = #{nurseId},</if>
             <if test="nurseName != null ">nurse_name = #{nurseName},</if>
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
index f103c31..6b2edb7 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
@@ -34,12 +34,16 @@
         <result property="patname" column="patname"/>
         <result property="guid" column="guid"/>
         <result property="patno" column="patno"/>
+        <result property="diagcheckFlag" column="diagcheck_flag"/>
+        <result property="remark" column="remark"/>
     </resultMap>
 
     <sql id="selectPatMedOuthospVo">
         select id,
                outhospno,
+               diagcheck_flag,
                patno,
+               remark,
                serialnum,
                patid,
                hospitalname,
@@ -73,7 +77,9 @@
             resultMap="PatMedOuthospResult">
         select
         pmo.id,
+        pmo.remark,
         pmo.outhospno,
+        pmo.diagcheck_flag,
         pmo.patno,
         pmo.serialnum,
         pmo.patid,
@@ -106,7 +112,7 @@
         from pat_med_outhosp pmo left join pat_archive pa on pmo.patid = pa.id
         <where>
             pmo.del_flag=0
-            and pmo.orgid =#{orgid}
+            <if test="orgid != null ">and pmo.orgid = #{orgid}</if>
             <if test="hospitalname != null  and hospitalname != ''">and pmo.hospitalname like concat('%',
                 #{hospitalname},
                 '%')
@@ -131,6 +137,7 @@
             <if test="patno != null ">and pmo.patno = #{patno}</if>
             <if test="orgid != null  and orgid != ''">and pmo.orgid = #{orgid}</if>
             <if test="outhospno != null  and outhospno != ''">and pmo.outhospno = #{outhospno}</if>
+            <if test="diagcheckFlag != null  and diagcheckFlag != ''">and pmo.diagcheck_flag = #{diagcheckFlag}</if>
         </where>
         order by pmo.update_time desc
     </select>
@@ -172,6 +179,8 @@
             <if test="patname != null">patname,</if>
             <if test="guid != null">guid,</if>
             <if test="patno != null">patno,</if>
+            <if test="diagcheckFlag != null">diagcheck_flag,</if>
+            <if test="remark != null">remark,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="serialnum != null">#{serialnum},</if>
@@ -202,6 +211,8 @@
             <if test="patname != null">#{patname},</if>
             <if test="guid != null">#{guid},</if>
             <if test="patno != null">#{patno},</if>
+            <if test="diagcheckFlag != null">#{diagcheckFlag},</if>
+            <if test="remark != null">#{remark},</if>
         </trim>
     </insert>
 
@@ -236,6 +247,8 @@
             <if test="patname != null">patname = #{patname},</if>
             <if test="guid != null">guid = #{guid},</if>
             <if test="patno != null">patno = #{patno},</if>
+            <if test="diagcheckFlag != null">diagcheck_flag = #{diagcheckFlag},</if>
+            <if test="remark != null">remark = #{remark},</if>
         </trim>
         where id = #{id}
     </update>

--
Gitblit v1.9.3