From 3f8535e2eeab1463324438f28d2ef72d8f1049c9 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 15 四月 2026 11:05:36 +0800
Subject: [PATCH] Merge branch 'master' into master-手术随访

---
 smartor/src/main/java/com/smartor/domain/ServiceSubtask.java                               |    2 
 smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java |   60 ++--
 ruoyi-admin/src/main/resources/application-sltd.yml                                        |    2 
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java                         |   36 +
 smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java                      |   10 
 smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskCotinueCountVO.java              |   31 ++
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                         |   66 ++++
 ruoyi-admin/src/main/resources/application-xh.yml                                          |    2 
 smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java               |    2 
 smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java                |   54 +--
 smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml                           |  219 ++++------------
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java                               |   26 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java           |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java   |  101 ++++--
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java              |   90 +++++-
 smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java                         |   17 +
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java        |    5 
 ruoyi-admin/src/main/resources/application-ls.yml                                          |    2 
 18 files changed, 426 insertions(+), 301 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
index 67406f3..e9abbe2 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -1,11 +1,8 @@
 package com.ruoyi.web.controller.smartor;
 
 import com.github.pagehelper.ISelect;
-import com.github.pagehelper.Page;
 import com.ruoyi.common.annotation.AddOrgId;
 import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.CacheConstants;
-import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.HttpStatus;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -17,44 +14,35 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.enums.PreachFormEnum;
 import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.utils.reflect.ReflectUtils;
-import com.ruoyi.common.utils.uuid.IdUtils;
-import com.ruoyi.system.domain.SysConfig;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserDeptService;
 import com.smartor.domain.*;
+import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
 import com.smartor.domain.VO.ServiceSubtaskVO;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
-import com.smartor.mapper.PatMedInhospMapper;
-import com.smartor.mapper.PatMedOuthospMapper;
 import com.smartor.service.IServiceSubtaskRecordService;
 import com.smartor.service.IServiceSubtaskService;
 import com.smartor.service.IServiceTaskService;
-import com.smartor.service.impl.ServiceSubtaskServiceImpl;
-import com.sun.org.apache.bcel.internal.generic.NEW;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import net.bytebuddy.implementation.bytecode.Throw;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cache.annotation.Cacheable;
+import org.springframework.web.bind.WebDataBinder;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
-import java.text.DecimalFormat;
 import java.time.LocalDate;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -69,6 +57,11 @@
 @RestController
 @RequestMapping("/smartor/serviceSubtask")
 public class ServiceSubtaskController extends BaseController {
+    @InitBinder
+    public void initBinder(WebDataBinder binder) {
+        binder.setAutoGrowCollectionLimit(1024); // 鎴� 2048銆�4096 绛�
+    }
+
     @Autowired
     private IServiceSubtaskService serviceSubtaskService;
 
@@ -126,15 +119,18 @@
         // 鐩存帴浠庡凡鏈夎仛鍚堢粨鏋滄帹绠梩otal锛岄伩鍏嶅幓鎺夊垎椤靛悗鍐嶅叏閲忔煡涓�閬嶅ぇ琛�
         long total = 0L;
         try {
-            long wzx = map.get("wzx") != null ? ((Number) map.get("wzx")).longValue() : 0L;
-            long ysf = map.get("ysf") != null ? ((Number) map.get("ysf")).longValue() : 0L;
-            long dsf = map.get("dsf") != null ? ((Number) map.get("dsf")).longValue() : 0L;
-            long yc = map.get("yc") != null ? ((Number) map.get("yc")).longValue() : 0L;
-            long jg = map.get("jg") != null ? ((Number) map.get("jg")).longValue() : 0L;
-            long fssb = map.get("fssb") != null ? ((Number) map.get("fssb")).longValue() : 0L;
-            long yfs = map.get("yfs") != null ? ((Number) map.get("yfs")).longValue() : 0L;
-            long blq = map.get("blq") != null ? ((Number) map.get("blq")).longValue() : 0L;
-            total = wzx + ysf + dsf + yc + jg + fssb + yfs + blq;
+//                 * wzx: 鏈墽琛屾暟閲�
+//                    * ysf: 宸查殢璁挎暟閲�
+//                    * fssb: 鍙戦�佸け璐ユ暟閲�
+//                    * yfs: 宸插彂閫佹暟閲�
+//                    * dsf: 寰呴殢璁挎暟閲�
+
+//            long wzx = map.get("wzx") != null ? ((Number) map.get("wzx")).longValue() : 0L;
+//            long ysf = map.get("ysf") != null ? ((Number) map.get("ysf")).longValue() : 0L;
+//            long dsf = map.get("dsf") != null ? ((Number) map.get("dsf")).longValue() : 0L;
+//            long fssb = map.get("fssb") != null ? ((Number) map.get("fssb")).longValue() : 0L;
+            total = map.get("total") != null ? ((Number) map.get("total")).longValue() : 0L;
+
         } catch (Exception e) {
             // 鍏滃簳锛氬叏閲廲ount
             serviceSubtaskEntity.setPageNum(null);
@@ -221,24 +217,31 @@
     //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
     @Log(title = "鍗曚竴浠诲姟锛堥殢璁垮鏁欙級", businessType = BusinessType.EXPORT)
     @PostMapping("/patItemExport")
-    public void patItemExport(HttpServletResponse response, @RequestBody ServiceSubtaskEntity serviceSubtaskVO) {
+    public void patItemExport(HttpServletResponse response, ServiceSubtaskEntity serviceSubtaskVO) {
+        LoginUser loginUser = getLoginUser();
+        SysUser user = loginUser.getUser();
+        serviceSubtaskVO.setOrgid(user.getOrgid());
         List<ServiceSubtaskRes> serviceSubtaskList = null;
         if (serviceSubtaskVO != null) {
-            if (serviceSubtaskVO.getPageNum() != null && serviceSubtaskVO.getPageSize() != null)
-                PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
             serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);
         }
-        List<ServiceSubtaskExprot> serviceSubtaskExprots = null;
+        List<ServiceSubtaskExport> serviceSubtaskExports = null;
         if (!CollectionUtils.isEmpty(serviceSubtaskList)) {
-            serviceSubtaskExprots = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExprot.class);
-            for (ServiceSubtaskExprot serviceSubtaskExprot : serviceSubtaskExprots) {
-                String pf = PreachFormEnum.getDescByCode(serviceSubtaskExprot.getPreachform());
-                serviceSubtaskExprot.setPreachform(pf);
+            serviceSubtaskExports = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExport.class);
+            for (ServiceSubtaskExport serviceSubtaskExport : serviceSubtaskExports) {
+                String pf = PreachFormEnum.getDescByCode(serviceSubtaskExport.getPreachform());
+                serviceSubtaskExport.setPreachform(pf);
+
+                //璁$畻鍑洪櫌澶╂暟
+                if (!Objects.isNull(serviceSubtaskExport.getEndtime())) {
+                    Integer endDay = DateUtils.differentDaysByMillisecond(serviceSubtaskExport.getEndtime(), new Date());
+                    serviceSubtaskExport.setEndDay(endDay);
+                }
             }
 
         }
-        ExcelUtil<ServiceSubtaskExprot> util = new ExcelUtil<ServiceSubtaskExprot>(ServiceSubtaskExprot.class);
-        util.exportExcel(response, serviceSubtaskExprots, "鎮h�呴殢璁夸俊鎭〃鍗�");
+        ExcelUtil<ServiceSubtaskExport> util = new ExcelUtil<ServiceSubtaskExport>(ServiceSubtaskExport.class);
+        util.exportExcel(response, serviceSubtaskExports, "鎮h�呴殢璁夸俊鎭〃鍗�");
     }
 
 
@@ -556,9 +559,7 @@
     @PostMapping("/getSfStatisticsExport")
     public void export(HttpServletResponse response, ServiceSubtaskCountReq serviceSubtaskCountReq) {
         List<ServiceSubtaskStatistic> sfStatistics = serviceSubtaskService.getSfStatisticsExport(serviceSubtaskCountReq);
-
         ExcelUtil<ServiceSubtaskStatistic> util = new ExcelUtil<ServiceSubtaskStatistic>(ServiceSubtaskStatistic.class);
-
         String sheetName = "";
         String fileName = "";
         if (active.equals("ls") || active.equals("druid")) {
@@ -596,6 +597,30 @@
         }
         return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq));
     }
+
+
+
+    /**
+     * 寤剁画鎶ょ悊缁熻
+     */
+    @ApiOperation("寤剁画鎶ょ悊缁熻")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/getContinueNerseCount")
+    public AjaxResult getContinueNerseCount(@RequestBody ServiceSubtaskCotinueCountVO serviceSubtaskCotinueCountVO) {
+        SysUser user = getLoginUser().getUser();
+        serviceSubtaskCotinueCountVO.setOrgid(user.getOrgid());
+        serviceSubtaskCotinueCountVO.setCampusid(user.getCampusid());
+        boolean hasDistrict = !CollectionUtils.isEmpty(serviceSubtaskCotinueCountVO.getLeavehospitaldistrictcodes());
+        boolean hasDept = !CollectionUtils.isEmpty(serviceSubtaskCotinueCountVO.getDeptcodes());
+        if (hasDistrict && hasDept) {
+            return error("鐥呭尯Code闆嗗悎涓庣瀹ode闆嗗悎浜掓枼锛屼笉鑳藉悓鏃朵紶鍏�");
+        }
+        return success(serviceSubtaskService.getContinueNurseCount(serviceSubtaskCotinueCountVO));
+    }
+
+
+
+
 
     /**
      * 鑾峰彇闅忚鍒嗙被缁熻鏄庣粏
@@ -712,4 +737,6 @@
         }
         return map;
     }
+
+
 }
diff --git a/ruoyi-admin/src/main/resources/application-ls.yml b/ruoyi-admin/src/main/resources/application-ls.yml
index 5c3fb84..43de361 100644
--- a/ruoyi-admin/src/main/resources/application-ls.yml
+++ b/ruoyi-admin/src/main/resources/application-ls.yml
@@ -11,7 +11,7 @@
         #        username: smartor
         #        password: Smartor.2023
         #        driverClassName: com.mysql.cj.jdbc.Driver
-        url: jdbc:mysql://9.209.1.5:2883/smartor-lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://9.209.1.5:2883/smartor-lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&connectTimeout=60000&socketTimeout=120000
         username: root@sfxx#other_cluster02
         password: Y5oapyS8
         driverClassName: com.mysql.cj.jdbc.Driver
diff --git a/ruoyi-admin/src/main/resources/application-sltd.yml b/ruoyi-admin/src/main/resources/application-sltd.yml
index d14aafb..e8fd437 100644
--- a/ruoyi-admin/src/main/resources/application-sltd.yml
+++ b/ruoyi-admin/src/main/resources/application-sltd.yml
@@ -7,7 +7,7 @@
       # 涓诲簱鏁版嵁婧�
       master:
         #        鐪佺珛鍚屽痉
-        url: jdbc:mysql://192.88.117.237:3306/smartor_sltd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://192.88.117.237:3306/smartor_sltd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&connectTimeout=60000&socketTimeout=120000
         username: root
         password: Smartor.2023
         driverClassName: com.mysql.cj.jdbc.Driver
diff --git a/ruoyi-admin/src/main/resources/application-xh.yml b/ruoyi-admin/src/main/resources/application-xh.yml
index fbeb09e..272f63c 100644
--- a/ruoyi-admin/src/main/resources/application-xh.yml
+++ b/ruoyi-admin/src/main/resources/application-xh.yml
@@ -7,7 +7,7 @@
       # 涓诲簱鏁版嵁婧�
       master:
         #   鏂板崕
-        url: jdbc:mysql://192.168.191.181:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://192.168.191.181:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&connectTimeout=60000&socketTimeout=120000
         username: smartor
         password: Smartor.2023
         driverClassName: com.mysql.cj.jdbc.Driver
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 d33e19d..cddb8c3 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
@@ -319,7 +319,6 @@
                     serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
                     serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
                     List<String> list = new ArrayList<>();
-//                    list.add("FH0108.02");
                     list.add("FH0109.22");
                     list.add("FH0109.23");
                     list.add("FH0109.53");
@@ -577,20 +576,20 @@
                 //2鍒ゆ柇涓�涓嬶紝褰撳墠鐨剆ort鏄笉鏄瓑浜庨渶瑕佹墽琛岀殑鎬讳釜鏁帮紝濡傛灉绛変簬鐨勮瘽锛岃鏄庢槸鏈�鍚庝竴涓紝鐩存帴灏唖ervuce_subtask鐨勭姸鎬佹敼鎴�5锛屾墽琛屽け璐ュ氨琛屼簡
                 Long cs = currentSort.get();
                 if (cs.equals(serviceSubtaskPreachforms.size())) {
-                    if(serviceSubtask.getPreachform().equals("1")){
+                    if (serviceSubtask.getPreachform().equals("1")) {
                         serviceSubtask.setSendstate(7L);
                         serviceSubtask.setRemark("澶勭悊琛ュ伩浠诲姟,褰撳墠澶勭悊鏈�鍚庤ˉ鍋� 浜哄伐瓒呮椂");
-                    }else {
+                    } else {
                         serviceSubtask.setSendstate(5L);
                         serviceSubtask.setRemark("澶勭悊琛ュ伩浠诲姟,褰撳墠澶勭悊鏈�鍚庤ˉ鍋匡紝鍏ㄩ儴鎵ц澶辫触");
                     }
 
                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                     //淇敼鍙戦�佹柟寮忕殑鐘舵�佷负澶辫触
-                    if(serviceSubtaskPreachform.getPreachform().equals("1")){
+                    if (serviceSubtaskPreachform.getPreachform().equals("1")) {
                         serviceSubtaskPreachform.setSendstate("7");
                         serviceSubtaskPreachform.setId(id.get());
-                    }else {
+                    } else {
                         serviceSubtaskPreachform.setSendstate("5");
                         serviceSubtaskPreachform.setId(id.get());
                     }
@@ -1018,8 +1017,9 @@
                     //璇存槑鍏ㄥ彂閫佸け璐ヤ簡
                     serviceSubtask.setSendstate(5L);
                     log.error("getSendPreachform鏂规硶 妫�鏌ユ槸鍚︽墍鏈塻endstate涓嶇瓑浜�9, 鍏ㄥけ璐ヤ簡");
+                    serviceSubtask.setRemark("鎵�鏈夊彂閫佹柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
                     //浜哄伐鍙戦�佽秴鏃�
-                    if(ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")){
+                    if (ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                         serviceSubtask.setSendstate(7L);
                         serviceSubtask.setRemark("浜哄伐鍙戦�佽秴鏃�");
                     }
@@ -1105,7 +1105,7 @@
             subtaskPreachform.setSendstate("5");
             subtaskPreachform.setId(id.get());
             //浜哄伐鍙戦�佽秴鏃�
-            if(ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")){
+            if (ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                 subtaskPreachform.setSendstate("7");
                 subtaskPreachform.setRemark("浜哄伐鍙戦�佽秴鏃�");
             }
@@ -1233,7 +1233,7 @@
                 if (failSendstate.equals("2")) serviceSubtaskPreachform1.setSendstate("9");
             }
             serviceSubtaskPreachform1.setRemark(remark);
-            if(ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")){
+            if (ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")) {
                 serviceSubtaskPreachform1.setSendstate("7");
                 serviceSubtaskPreachform1.setRemark("浜哄伐鍙戦�佽秴鏃�");
             }
@@ -1241,16 +1241,18 @@
 
             //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
             if (serviceSubtaskPreachform1.getSort() == sspCount.size()) {
-                if(ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")){
+                if (ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")) {
                     serviceSubtask.setCurrentPreachform(preachform);
                     serviceSubtask.setSendstate(7L);
                     serviceSubtask.setRemark("浜哄伐鍙戦�佽秴鏃�");
                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                     return true;
-                }else {
+                } else {
                     if (failSendstate.equals("4") || failSendstate.equals("5")) {
                         serviceSubtask.setCurrentPreachform(preachform);
                         serviceSubtask.setSendstate(5L);
+                        log.error("setSuccessPreachForm鏂规硶锛屽綋鍓嶇殑preachform宸茬粡鏄渶鍚庝竴涓簡锛屽叏閮ㄦ墽琛屽け璐�");
+                        serviceSubtask.setRemark("鎵�鏈夊彂閫佹柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
                         //serviceSubtask.setRemark("setSuccessPreachForm鏂规硶锛屽綋鍓嶇殑preachform宸茬粡鏄渶鍚庝竴涓簡锛屽叏閮ㄦ墽琛屽け璐�");
                         serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                         return true;
@@ -1265,10 +1267,10 @@
         //灏嗕笅涓�娆$殑闅忚鏃堕棿涓庡綋鍓嶆墽琛屾柟寮忚褰曚竴涓�
         serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
         serviceSubtask.setCurrentPreachform(preachform);
-        if(ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")){
+        if (ObjectUtils.isNotEmpty(preachform) && preachform.equals("1")) {
             serviceSubtask.setSendstate(7L);
             serviceSubtask.setRemark("浜哄伐鍙戦�佽秴鏃�");
-        }else {
+        } else {
             serviceSubtask.setSendstate(3L);
         }
         if (serviceSubtask.getType().equals("3") || serviceSubtask.getType().equals("4")) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index f0d170c..9fd4e80 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -330,7 +330,7 @@
                     questionnaireCategorys.add(map);
                 }
             }
-            satisfactionCategories.put("questionnaireCategorys", CollectionUtils.isEmpty(questionnaireCategorys) ? null : questionnaireCategorys);
+            satisfactionCategories.put("questionnaireCategorys", questionnaireCategorys);
 
             //璁剧疆褰撳墠鐢ㄦ埛鐨勫0闊抽棶棰樺垎绫诲拰闂嵎闂鍒嗙被
             sysUser.setSatisfactionCategories(satisfactionCategories);
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
index c541fcd..04180ce 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
@@ -653,7 +653,7 @@
     @ApiModelProperty(value = "寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊; 3宸插鐞�")
     private Integer isabnormal;
 
-    @ApiModelProperty(value = "缁х画鏍囪瘑")
+    @ApiModelProperty(value = "缁х画鏍囪瘑:1鍚� 2鏄�")
     private Integer continueFlag;
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExprot.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
similarity index 74%
rename from smartor/src/main/java/com/smartor/domain/ServiceSubtaskExprot.java
rename to smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
index 5cd4e75..ffd4a0a 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExprot.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskExport.java
@@ -8,8 +8,6 @@
 import lombok.Data;
 
 import java.util.Date;
-import java.util.List;
-import java.util.Map;
 
 /**
  * 鍗曚竴浠诲姟锛堥殢璁匡級瀵硅薄 ivr_taskcall
@@ -17,9 +15,9 @@
  * @author ruoyi
  * @date 2024-02-02
  */
-@ApiModel(value = "ServiceSubtaskExprot", description = "鍗曚竴闅忚浠诲姟鍏ュ弬")
+@ApiModel(value = "ServiceSubtaskExport", description = "鍗曚竴闅忚浠诲姟鍏ュ弬")
 @Data
-public class ServiceSubtaskExprot extends BaseEntity {
+public class ServiceSubtaskExport extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
     /**
@@ -32,21 +30,21 @@
     /**
      * 鍙戦�佷汉
      */
-    @Excel(name = " 鍙戦�佷汉 ")
+    @Excel(name = " 濮撳悕 ")
     @ApiModelProperty(value = "鍙戦�佷汉")
     private String sendname;
 
     /**
-     * 鍒涘缓鑰�
+     * 鍙戦�佺姸鎬�
      */
-    @Excel(name = "闅忚浜�")
-    private String updateBy;
+    @Excel(name = " 浠诲姟鐘舵�� ")
+    @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴� 7 瓒呮椂(浜哄伐)")
+    private Long sendstate;
 
     /**
      * 瀹屾垚鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = " 瀹屾垚鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
     @ApiModelProperty(value = "瀹屾垚鏃堕棿")
     private Date finishtime;
 
@@ -54,9 +52,16 @@
      * 鍑洪櫌鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = " 鍑洪櫌鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = " 鍑洪櫌鏃ユ湡 ", width = 30, dateFormat = "yyyy-MM-dd")
     @ApiModelProperty(value = "鍑洪櫌鏃堕棿")
     private Date endtime;
+
+    /**
+     * 搴旈殢璁挎棩鏈�
+     */
+    @Excel(name = "搴旈殢璁挎棩鏈�",dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "搴旈殢璁挎棩鏈�")
+    private Date visitTime;
 
 
     /**
@@ -66,6 +71,15 @@
     @ApiModelProperty(value = "鍖荤敓濮撳悕")
     private String drname;
 
+    /**
+     * 闅忚浜哄憳
+     */
+    @Excel(name = "闅忚浜哄憳")
+    private String updateBy;
+
+    @Excel(name = "鍑洪櫌澶╂暟", suffix = "澶�")
+    @ApiModelProperty(value = "鍑洪櫌澶╂暟")
+    private Integer endDay;
 
     /**
      * 韬唤璇佸彿
@@ -117,8 +131,8 @@
     /**
      * 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚�
      */
-    @Excel(name = "浠诲姟鎵ц鏂瑰紡")
     @ApiModelProperty(value = "浠诲姟褰㈠紡(1,浜哄伐 2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴� 7.鏀粯瀹濆皬绋嬪簭  8.鏅鸿兘鏈哄櫒浜�  9.閽夐拤   10.瀵煎叆)")
+    @Excel(name = "浠诲姟鎵ц鏂瑰紡")
     private String preachform;
 
 
diff --git a/smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskCotinueCountVO.java b/smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskCotinueCountVO.java
new file mode 100644
index 0000000..dded55c
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskCotinueCountVO.java
@@ -0,0 +1,31 @@
+package com.smartor.domain.VO;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 寤剁画鎶ょ悊缁熻璇锋眰
+ *
+ * @author ls
+ * @date 2026-04-11
+ */
+@ApiModel(value = "ServiceSubtaskCotinueCountVO", description = "寤剁画鎶ょ悊缁熻璇锋眰")
+@Data
+public class ServiceSubtaskCotinueCountVO {
+
+    @ApiModelProperty(value = "鐥呭尯Code闆嗗悎")
+    private List<String> leavehospitaldistrictcodes;
+
+    @ApiModelProperty(value = "绉戝Code闆嗗悎")
+    private List<String> deptcodes;
+
+    @ApiModelProperty("鏈烘瀯缂栫爜")
+    private String orgid;
+
+    @ApiModelProperty("闄㈠尯缂栫爜")
+    private String campusid;
+
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
index 38234c8..3bb4019 100644
--- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -2,6 +2,7 @@
 
 import com.smartor.domain.*;
 import com.smartor.domain.VO.PatSatisfactionReqVO;
+import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.domain.entity.ServiceSubtaskSatisfactionEntity;
 import org.apache.ibatis.annotations.MapKey;
@@ -194,4 +195,20 @@
 
     List<Long> querySendCount(ServiceSubtaskSatisfactionEntity serviceSubtaskSatisfactionEntity);
 
+    /**
+     * 鎸夌梾鍖哄垎缁勭粺璁″欢缁姢鐞嗘暟閲�
+     *
+     * @param vo 鏌ヨ鏉′欢
+     * @return 姣忎釜鐥呭尯鐨勭粺璁$粨鏋�
+     */
+    List<Map<String, Object>> getContinueNurseCount(ServiceSubtaskCotinueCountVO vo);
+
+    /**
+     * 鎸夌瀹ゅ垎缁勭粺璁″欢缁姢鐞嗘暟閲�
+     *
+     * @param vo 鏌ヨ鏉′欢
+     * @return 姣忎釜绉戝鐨勭粺璁$粨鏋�
+     */
+    List<Map<String, Object>> getContinueNurseCountByDept(ServiceSubtaskCotinueCountVO vo);
+
 }
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
index 83f15bb..4bf23c9 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -3,6 +3,7 @@
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.smartor.domain.*;
 import com.smartor.domain.ServiceSubtask;
+import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
 import org.springframework.web.bind.annotation.RequestBody;
 
@@ -149,4 +150,13 @@
     public List<ServiceSubtaskDiagname> convertToDiagnameList(List<ServiceSubtask> subtaskList) ;
 
     public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity);
+
+    /**
+     * 鎸夌梾鍖烘垨绉戝缁熻寤剁画鎶ょ悊鏁伴噺
+     * 閮戒笉浼犳椂鍚屾椂鎸夌梾鍖哄拰绉戝鍚勭粺璁′竴閬�
+     *
+     * @param vo 鏌ヨ鏉′欢锛坙eavehospitaldistrictcodes 涓� deptcodes 浜掓枼锛�
+     * @return noContinueCount銆丆ontinueCount 鍙� detail 鍒楄〃
+     */
+    Map<String, Object> getContinueNurseCount(ServiceSubtaskCotinueCountVO vo);
     }
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 142cb85..45fca1c 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -146,16 +146,6 @@
     public PatMedRes selectPatMedInhospListCount(PatMedReq patMedReq) {
         PatMedRes patMedRes = null;
         // 鑾峰彇褰撳墠鐧婚檰浜虹殑閮ㄩ棬鏉冮檺
-        if (org.springframework.util.CollectionUtils.isEmpty(patMedReq.getDeptcodeList())) {
-//            Long userId = SecurityUtils.getUserId();
-//            List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(userId);
-//            List<String> deptCode = new ArrayList<>();
-//            for (SysDept sysDept : sysDepts) {
-//                deptCode.add(sysDept.getDeptId().toString());
-//            }
-//            patMedReq.setDeptcodeList(deptCode);
-//            patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);
-        }
         patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);
         return patMedRes;
     }
@@ -441,6 +431,7 @@
 
     /**
      * 澶氱淮搴﹂殢璁�
+     *
      * @param config
      * @return
      */
@@ -479,14 +470,12 @@
      * 鎸夌淮搴︽壘鍒版墍鏈夊尮閰嶉暱鏈熶换鍔★紝鎵归噺鐢熸垚 subtask
      * type: 1=绉戝, 2=鐥呭尯, 3=鐤剧梾
      */
-    private void processTasksByDimension(PatMedInhosp patMedInhosp1,
-            PatArchive patArchive,
-            String config, int type) {
+    private void processTasksByDimension(PatMedInhosp patMedInhosp1, PatArchive patArchive, String config, int type) {
         List<Long> matchedTaskIds = findMatchingTaskIds(patMedInhosp1, type);
 
         if (CollectionUtils.isEmpty(matchedTaskIds)) {
-                String reason = getDimensionReason(type);
-                markFlagAsNoConfig(patMedInhosp1, type, reason);
+            String reason = getDimensionReason(type);
+            markFlagAsNoConfig(patMedInhosp1, type, reason);
             return;
         }
 
@@ -496,11 +485,11 @@
         }
     }
 
-    private String getDimensionReason(int type){
+    private String getDimensionReason(int type) {
         switch (type) {
             case 1: { // 绉戝
                 return "鏈壘鍒扮瀹ゅ尮閰嶇殑闀挎湡浠诲姟";
-                 }
+            }
             case 2: { // 鐥呭尯
                 return "鏈壘鍒扮梾鍖哄尮閰嶇殑闀挎湡浠诲姟";
             }
@@ -511,9 +500,7 @@
         return "澶氱淮闀挎湡浠诲姟-鍖归厤绫诲瀷涓虹┖";
     }
 
-    private void markFlagAsNoConfig(PatMedInhosp patMedInhosp,
-                                    int type,
-                                    String reason){
+    private void markFlagAsNoConfig(PatMedInhosp patMedInhosp, int type, String reason) {
         switch (type) {
             case 1: { // 绉戝
                 patMedInhosp.setDeptcheckFlag("2");
@@ -537,14 +524,14 @@
 
     }
 
-    private void markAllFlagsAsError(PatMedInhosp patMedInhosp,
-                                    String reason){
+    private void markAllFlagsAsError(PatMedInhosp patMedInhosp, String reason) {
         patMedInhosp.setDeptcheckFlag("2");
         patMedInhosp.setWardcheckFlag("2");
         patMedInhosp.setDiagcheckFlag("2");
         patMedInhosp.setRemark(reason);
         patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
     }
+
     /**
      * 鏍规嵁缁村害绫诲瀷鏌ヨ鍖归厤鐨勯暱鏈熶换鍔� ID 鍒楄〃
      */
@@ -556,8 +543,7 @@
                 query.setDeptCode(patMedInhosp1.getLeaveldeptcode());
                 query.setDeptType("1");
                 query.setOrgid(patMedInhosp1.getOrgid());
-                return serviceTaskdeptMapper.selectServiceTaskdeptList(query)
-                        .stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());
+                return serviceTaskdeptMapper.selectServiceTaskdeptList(query).stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());
             }
             case 2: { // 鐥呭尯
                 ServiceTaskdept query = new ServiceTaskdept();
@@ -565,8 +551,7 @@
                 query.setDeptCode(patMedInhosp1.getLeavehospitaldistrictcode());
                 query.setDeptType("2");
                 query.setOrgid(patMedInhosp1.getOrgid());
-                return serviceTaskdeptMapper.selectServiceTaskdeptList(query)
-                        .stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());
+                return serviceTaskdeptMapper.selectServiceTaskdeptList(query).stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());
             }
             case 3: { // 鐤剧梾
                 if (StringUtils.isEmpty(patMedInhosp1.getLeaveicd10code())) return Collections.emptyList();
@@ -574,8 +559,7 @@
                 query.setLongtask(1L);
                 query.setIcd10code(patMedInhosp1.getLeaveicd10code());
                 query.setOrgid(patMedInhosp1.getOrgid());
-                return serviceTaskdiagMapper.selectServiceTaskdiagList(query)
-                        .stream().map(ServiceTaskdiag::getTaskId).collect(Collectors.toList());
+                return serviceTaskdiagMapper.selectServiceTaskdiagList(query).stream().map(ServiceTaskdiag::getTaskId).collect(Collectors.toList());
             }
         }
         return Collections.emptyList();
@@ -741,13 +725,12 @@
     }
 
     /**
-     *
-     * @param taskid 浠诲姟id
-     * @param check 鏄惁闇�瑕佹牎楠�
+     * @param taskid        浠诲姟id
+     * @param check         鏄惁闇�瑕佹牎楠�
      * @param patMedInhosp1 鐥呬汉鍑哄叆闄俊鎭�
-     * @param patArchive 鐥呬汉淇℃伅
-     * @param type 闅忚绫诲瀷(1-绉戝锛�2-鐥呭尯锛�3-鐤剧梾锛�
-     * @param config 閰嶇疆淇℃伅 visit.early.day
+     * @param patArchive    鐥呬汉淇℃伅
+     * @param type          闅忚绫诲瀷(1-绉戝锛�2-鐥呭尯锛�3-鐤剧梾锛�
+     * @param config        閰嶇疆淇℃伅 visit.early.day
      */
     //灏嗘偅鑰呮斁鍒皊ubtask涓�
     private void writeInSubTask(Long taskid, Boolean check, PatMedInhosp patMedInhosp1, PatArchive patArchive, Integer type, String config) {
@@ -1304,8 +1287,7 @@
                         }
                         //鏅畞 鍑洪櫌棣栨锛�7澶╋級闅忚涓�瀹氳鍋�
                         boolean firstVisit = false;
-                        if (serviceSubtask1.getOrgid().equals("47255004333112711A1001")
-                                && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
+                        if (serviceSubtask1.getOrgid().equals("47255004333112711A1001") && serviceSubtask1.getVisitCount() != null && serviceSubtask1.getVisitCount() == 1) {
                             firstVisit = true;
                         }
                         if (!firstVisit) {
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 f5bd02f..73c1cca 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -181,7 +181,7 @@
         if (org.apache.commons.lang3.StringUtils.isNotBlank(patMedOuthosp.getSerialnum())) {
             int exists = patMedOuthospMapper.countBySerialnum(targetTable, patMedOuthosp.getSerialnum());
             if (exists > 0) {
-                log.debug("[insert] serialnum={} 宸插瓨鍦ㄤ簬琛� {}锛岃烦杩囨彃鍏�", patMedOuthosp.getSerialnum(), targetTable);
+                log.info("[insert] serialnum={} 宸插瓨鍦ㄤ簬琛� {}锛岃烦杩囨彃鍏�", patMedOuthosp.getSerialnum(), targetTable);
                 return 0;
             }
         }
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
index 119a6da..55b34de 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -457,11 +457,21 @@
     }
 
     private void processResultList(List<ServiceSLTDInhospResDTO> resultList, List<String> types, String cry, String campusId) {
-        for (String type : types)
+        // 闂ㄨ瘖(FH0108.01)鍜屾�ヨ瘖(FH0108.03)鍦ㄤ笟鍔′笂鏄悓涓�绫绘暟鎹紝鍏辩敤鍚屼竴涓� resultList銆�
+        // 鑻� types 鍚屾椂鍖呭惈涓よ�咃紝outHospitalDate 浼氳璋冪敤涓ゆ瀵艰嚧閲嶅鍏ュ簱銆�
+        // 鍥犳鍙 types 涓惈鏈変换鎰忎竴涓棬鎬ヨ瘖绫诲瀷锛屽氨鍙鐞嗕竴娆°��
+        boolean outpProcessed = false;
+        for (String type : types) {
             switch (type) {
                 case "FH0108.01":
-                    log.info("銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹�");
-                    outHospitalDate(resultList);
+                case "FH0108.03":
+                    if (!outpProcessed) {
+                        log.info("銆恜arseResponseData銆戣В鏋愰棬鎬ヨ瘖鏁版嵁锛宼ypes={}", types);
+                        outHospitalDate(resultList);
+                        outpProcessed = true;
+                    } else {
+                        log.info("銆恜arseResponseData銆戦棬鎬ヨ瘖鏁版嵁宸插鐞嗭紝璺宠繃 type={}", type);
+                    }
                     break;
                 case "FH0109.26":
                     log.info("銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹�");
@@ -483,14 +493,11 @@
                     log.info("銆恜arseResponseData銆戣В鏋愰浣忛櫌锛堝叾浠栵級鏁版嵁");
                     inHospitalDate(resultList, cry);
                     break;
-//                case "FH0108.03":
-//                    log.info("銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁");
-//                    outHospitalDate(resultList);
-//                    break;
                 default:
                     log.warn("銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}", type);
                     break;
             }
+        }
     }
 
     private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {
@@ -607,37 +614,38 @@
             }
 
         } else if (cry.equals("1")) {
-//           鍑洪櫌鏁版嵁澶勭悊
-            if (CollectionUtils.isEmpty(existingInhosps)) {
-                //濡傛灉涓虹┖锛岃鍏堝垽鏂紝棰勫叆闄㈡槸鍚︽湁鍊硷紝鏈夊�肩殑璇濆垯鏇存柊
+            // 鍑洪櫌鏁版嵁澶勭悊
+            if (CollectionUtils.isNotEmpty(existingInhosps)) {
+                // 宸插瓨鍦ㄥ嚭闄㈣褰曪紝鐩存帴鏇存柊锛堜繚鎸佹渶鏂版暟鎹級
+                patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid());
+                patMedInhospService.updatePatMedInhosp(patMedInhosp);
+                log.info("鍑洪櫌璁板綍宸插瓨鍦紝鎵ц鏇存柊锛歴erialnum={}, orgid={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid());
+            } else {
+                // 涓嶅瓨鍦ㄥ嚭闄㈣褰曪紝鍏堟煡棰勫叆闄紙state=3锛夛紝鍐嶆煡鍏ラ櫌锛坰tate=0锛�
                 queryInhosp.setInhospstate("3");
-                log.info("-----patMedInhospList杩涙潵浜嗕笉锛熷叆鍙備负锛歿}", queryInhosp);
+                log.info("-----鏌ヨ棰勫叆闄㈣褰曪紝鍏ュ弬涓猴細{}", queryInhosp);
                 List<PatMedInhosp> patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
-                log.info("----patMedInhospList杩涙潵浜嗕笉锛熻繑鍙備负锛歿}", CollectionUtils.isEmpty(patMedInhospList) ? null : patMedInhospList.get(0).getSerialnum());
+                log.info("----棰勫叆闄㈡煡璇㈢粨鏋滐細{}", CollectionUtils.isEmpty(patMedInhospList) ? "绌�" : patMedInhospList.get(0).getSerialnum());
                 if (CollectionUtils.isNotEmpty(patMedInhospList)) {
-                    //濡傛灉棰勫叆闄笉涓虹┖锛屽垯杩涜淇敼
+                    // 瀛樺湪棰勫叆闄㈣褰曪紝鏇存柊涓哄嚭闄㈢姸鎬�
+                    patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
                     patMedInhospService.updatePatMedInhosp(patMedInhosp);
+                    log.info("鐢遍鍏ラ櫌鏇存柊涓哄嚭闄細serialnum={}", patMedInhosp.getSerialnum());
                 } else {
-                    //濡傛灉鍏ラ櫌涓嶄负绌猴紝鍒欒繘琛屼慨鏀�
+                    // 鍐嶆煡鍏ラ櫌璁板綍锛坰tate=0锛�
                     queryInhosp.setInhospstate("0");
                     patMedInhospList = patMedInhospService.selectPatMedInhosp(queryInhosp);
+                    log.debug("鍏ラ櫌鏌ヨ缁撴灉锛歿}", CollectionUtils.isEmpty(patMedInhospList) ? "绌�" : patMedInhospList.size());
                     if (CollectionUtils.isNotEmpty(patMedInhospList)) {
+                        // 瀛樺湪鍏ラ櫌璁板綍锛屾洿鏂颁负鍑洪櫌鐘舵��
+                        patMedInhosp.setInhospid(patMedInhospList.get(0).getInhospid());
                         patMedInhospService.updatePatMedInhosp(patMedInhosp);
-                    }
-                }
-
-                //濡傛灉閮戒负绌猴紝鍒欒繘琛屾柊澧�
-                if (CollectionUtils.isEmpty(patMedInhospList)) {
-                    //濡傛灉鍏ラ櫌涓嶄负绌猴紝鍒欒繘琛屼慨鏀�
-                    queryInhosp.setInhospstate("0");
-                    log.debug("鍑洪櫌queryInhosp鍏ュ弬涓猴細{}", queryInhosp);
-                    List<PatMedInhosp> patMedInhosps = patMedInhospService.selectPatMedInhosp(queryInhosp);
-                    log.debug("鍑洪櫌patMedInhospList杩斿弬涓猴細{}", CollectionUtils.isEmpty(patMedInhosps) ? null : patMedInhosps.size());
-                    if (CollectionUtils.isNotEmpty(patMedInhosps)) {
-                        patMedInhospService.updatePatMedInhosp(patMedInhosp);
+                        log.info("鐢卞叆闄㈡洿鏂颁负鍑洪櫌锛歴erialnum={}", patMedInhosp.getSerialnum());
                     } else {
+                        // 棰勫叆闄㈠拰鍏ラ櫌鍧囦笉瀛樺湪锛岀洿鎺ユ柊澧炲嚭闄㈣褰�
                         try {
                             patMedInhospService.insertPatMedInhosp(patMedInhosp);
+                            log.info("鏂板鍑洪櫌璁板綍锛歴erialnum={}", patMedInhosp.getSerialnum());
                         } catch (org.springframework.dao.DuplicateKeyException e) {
                             log.warn("鍑洪櫌璁板綍宸插瓨鍦紝璺宠繃锛歴erialnum={}, orgid={}, state={}", patMedInhosp.getSerialnum(), patMedInhosp.getOrgid(), patMedInhosp.getInhospstate());
                         }
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
index dc66c55..8b43b97 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -431,6 +431,7 @@
             List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ssVO);
 
             ServiceSubtask serviceSubtask = new ServiceSubtask();
+            serviceSubtask.setId(subid);
             serviceSubtask.setTaskid(tid);
             serviceSubtask.setPatid(pid);
             serviceSubtask.setSubmit(1L);
@@ -847,7 +848,9 @@
         serviceSubtaskDetailVO.setCreateTime(new Date());
         serviceSubtaskDetailVO.setUpdateTime(new Date());
         serviceSubtaskDetailVO.setTemplateType(2);
-        serviceSubtaskDetailVO.setLibTemplateid(CollectionUtils.isNotEmpty(selectServiceSubtaskList) ? selectServiceSubtaskList.get(0).getLibtemplateid().intValue() : null);
+        serviceSubtaskDetailVO.setLibTemplateid(CollectionUtils.isNotEmpty(selectServiceSubtaskList) ?
+                (ObjectUtils.isNotEmpty(selectServiceSubtaskList.get(0).getLibtemplateid()) ?
+                        selectServiceSubtaskList.get(0).getLibtemplateid().intValue() : null): null);
         if (ObjectUtils.isNotEmpty(serviceTask)) {
             serviceSubtaskDetailVO.setGuid(serviceTask.getGuid());
             serviceSubtaskDetailVO.setOrgid(serviceTask.getOrgid());
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index 8e623b3..61869a6 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -13,6 +13,7 @@
 import com.smartor.common.FtpService;
 import com.smartor.config.PhoneUtils;
 import com.smartor.domain.*;
+import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import com.smartor.service.*;
@@ -411,18 +412,18 @@
         // 澶勭悊绌哄紓甯�
         if (MapUtils.isEmpty(result)) {
             result = new HashMap<>();
+            // 纭繚鎵�鏈� key 閮芥湁鍊硷紝閬垮厤绌烘寚閽堝紓甯�
+            // MyBatis 鐨� SUM 鍦ㄦ病鏈夊尮閰嶈鏃朵細杩斿洖 null
+            result.putIfAbsent("wzx", 0);
+            result.putIfAbsent("ysf", 0);
+            result.putIfAbsent("yc", 0);
+            result.putIfAbsent("jg", 0);
+            result.putIfAbsent("fssb", 0);
+            result.putIfAbsent("yfs", 0);
+            result.putIfAbsent("blq", 0);
+            result.putIfAbsent("dsf", 0);
+            result.putIfAbsent("total", 0);
         }
-        // 纭繚鎵�鏈� key 閮芥湁鍊硷紝閬垮厤绌烘寚閽堝紓甯�
-        // MyBatis 鐨� SUM 鍦ㄦ病鏈夊尮閰嶈鏃朵細杩斿洖 null
-        result.putIfAbsent("wzx", 0);
-        result.putIfAbsent("ysf", 0);
-        result.putIfAbsent("yc", 0);
-        result.putIfAbsent("jg", 0);
-        result.putIfAbsent("fssb", 0);
-        result.putIfAbsent("yfs", 0);
-        result.putIfAbsent("blq", 0);
-        result.putIfAbsent("dsf", 0);
-
         return result;
     }
 
@@ -1982,7 +1983,7 @@
 //        if (existSize > 0) return pullTaskVOList;
         int count = 0;
         long size = listOps.size("cache-0");
-        log.error("---------鎵撶數璇濅箣鍓嶇紦瀛樹腑鐨勬暟鎹噺锛歿}", size);
+        log.info("---------鎵撶數璇濅箣鍓嶇紦瀛樹腑鐨勬暟鎹噺锛歿}", size);
         if (size > 0) {
             //phoneCount()  閫氳繃缁欏嚭鐨勬瘡涓皬鏃堕渶瑕佹墦鍑虹殑鐢佃瘽閲忥紝绠楀嚭鍒版櫄涓�8鐐逛竴鐐硅兘鎵撳嚭澶氬皯涓數璇濓紝鑾峰彇鍒版�婚噺
             //濡傛灉闇�瑕佺珛鍗虫墽琛岀殑鏁版嵁閲忓ぇ浜庝竴澶╄鎵ц鐨勪笂闄愶紝鍒欏彧鍙栦笂闄愮殑鏁伴噺锛屽叾瀹冪殑鍒欐斁鍥瀝edis涓�
@@ -2031,7 +2032,7 @@
             }
         }
 //        if (existList.size() != 0) redisCache.setCacheListRight("cache-exist", existList);
-        log.error("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null);
+        log.info("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null);
         return pullTaskVOList;
     }
 
@@ -3847,7 +3848,7 @@
             if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
                 serviceSubtask.setCurrentPreachform(preachform);
                 serviceSubtask.setSendstate(5L);
-//                serviceSubtask.setRemark("setFailPreachForm鏂规硶 褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛屽叏澶辫触浜�");
+                serviceSubtask.setRemark("鎵�鏈夊彂閫佹柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
                 serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                 return true;
             }
@@ -4017,4 +4018,65 @@
     public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity) {
         return serviceSubtaskMapper.getCurrentUserServiceSubtaskCount(entity);
     }
+
+    @Override
+    public Map<String, Object> getContinueNurseCount(ServiceSubtaskCotinueCountVO vo) {
+        boolean hasDistrict = !CollectionUtils.isEmpty(vo.getLeavehospitaldistrictcodes());
+        boolean hasDept = !CollectionUtils.isEmpty(vo.getDeptcodes());
+
+        List<Map<String, Object>> districtRows;
+        List<Map<String, Object>> deptRows;
+
+        if (hasDistrict) {
+            // 鍙紶浜嗙梾鍖猴細浠呮寜鐥呭尯缁村害缁熻
+            districtRows = serviceSubtaskMapper.getContinueNurseCount(vo);
+            deptRows = Collections.emptyList();
+        } else if (hasDept) {
+            // 鍙紶浜嗙瀹わ細浠呮寜绉戝缁村害缁熻
+            districtRows = Collections.emptyList();
+            deptRows = serviceSubtaskMapper.getContinueNurseCountByDept(vo);
+        } else {
+            // 閮芥湭浼狅細鐥呭尯鍜岀瀹ゅ悇缁熻涓�閬�
+            districtRows = serviceSubtaskMapper.getContinueNurseCount(vo);
+            deptRows = serviceSubtaskMapper.getContinueNurseCountByDept(vo);
+        }
+
+        long totalNoContinue = 0L;
+        long totalContinue = 0L;
+        List<Map<String, Object>> detail = new ArrayList<>();
+
+        for (Map<String, Object> row : districtRows) {
+            String groupName = row.get("groupName") == null
+                    ? (row.get("groupCode") == null ? "" : row.get("groupCode").toString())
+                    : row.get("groupName").toString();
+            long noCnt = row.get("noContinueCnt") == null ? 0L : Long.parseLong(row.get("noContinueCnt").toString());
+            long yesCnt = row.get("continueCnt") == null ? 0L : Long.parseLong(row.get("continueCnt").toString());
+            totalNoContinue += noCnt;
+            totalContinue += yesCnt;
+            Map<String, Object> item = new LinkedHashMap<>();
+            item.put("鏈欢缁璤" + groupName, noCnt);
+            item.put("宸插欢缁璤"+groupName, yesCnt);
+            detail.add(item);
+        }
+
+        for (Map<String, Object> row : deptRows) {
+            String groupName = row.get("groupName") == null
+                    ? (row.get("groupCode") == null ? "" : row.get("groupCode").toString())
+                    : row.get("groupName").toString();
+            long noCnt = row.get("noContinueCnt") == null ? 0L : Long.parseLong(row.get("noContinueCnt").toString());
+            long yesCnt = row.get("continueCnt") == null ? 0L : Long.parseLong(row.get("continueCnt").toString());
+            totalNoContinue += noCnt;
+            totalContinue += yesCnt;
+            Map<String, Object> item = new LinkedHashMap<>();
+            item.put("鏈欢缁璤" + groupName, noCnt);
+            item.put("宸插欢缁璤" + groupName, yesCnt);
+            detail.add(item);
+        }
+
+        Map<String, Object> result = new LinkedHashMap<>();
+        result.put("鏈欢缁�绘暟閲�", totalNoContinue);
+        result.put("宸插欢缁�绘暟閲�", totalContinue);
+        result.put("璇︽儏", detail);
+        return result;
+    }
 }
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
index d6a5473..24f8484 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -854,167 +854,74 @@
 
     <select id="selectPatMedInhospCount" parameterType="com.smartor.domain.PatMedReq"
             resultType="com.smartor.domain.PatMedRes">
-        SELECT SUM( rs ) AS rs,
-        SUM( rc ) AS rc,
-        SUM( scsf ) AS scsf,
-        SUM( zcsf ) AS zcsf,
-        SUM( zbsf ) AS zbsf
+        SELECT SUM(rc) AS rc,
+               SUM(rs) AS rs,
+               SUM(scsf) AS scsf,
+               SUM(zcsf) AS zcsf,
+               SUM(zbsf) AS zbsf
         FROM (
-        <!-- 鍑洪櫌浜烘-->
-        SELECT
-        COUNT(1) AS rc,
-        0 AS rs,
-        0 AS scsf,
-        0 AS zcsf,
-        0 AS zbsf
-        FROM
-        pat_med_inhosp
-        JOIN
-        pat_archive ON pat_archive.id = pat_med_inhosp.patid
-        where 1=1
-        and pat_med_inhosp.del_flag=0
-        <if test="orgid != null and orgid != ''">
-            and pat_med_inhosp.orgid = #{orgid}
-        </if>
-        AND pat_archive.idcardno IS NOT NULL
-        <if test="zy != null">
-            and pat_med_inhosp.inhospstate=0
-            and date_format(pat_med_inhosp.starttime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')
-            and date_format(pat_med_inhosp.starttime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
-            <if test="deptcodeList != null   and deptcodeList.size() > 0">
-                and pat_med_inhosp.deptcode in
+            <!-- 鍑洪櫌浜烘锛氬幓鎺� date_format 鍖呰锛屼娇鏃ユ湡瀛楁绱㈠紩鐢熸晥 -->
+            SELECT
+                COUNT(1) AS rc,
+                0 AS rs,
+                0 AS scsf,
+                0 AS zcsf,
+                0 AS zbsf
+            FROM pat_med_inhosp
+            JOIN pat_archive ON pat_archive.id = pat_med_inhosp.patid
+            WHERE pat_med_inhosp.del_flag = 0
+            <if test="orgid != null and orgid != ''">
+                AND pat_med_inhosp.orgid = #{orgid}
+            </if>
+            AND pat_archive.idcardno IS NOT NULL
+            <if test="zy != null">
+                AND pat_med_inhosp.inhospstate = 0
+                AND pat_med_inhosp.starttime &gt;= #{startDate}
+                AND pat_med_inhosp.starttime &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
+                <if test="deptcodeList != null and deptcodeList.size() > 0">
+                    AND pat_med_inhosp.deptcode IN
+                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                        #{deptcode}
+                    </foreach>
+                </if>
+            </if>
+            <if test="cy != null">
+                AND pat_med_inhosp.inhospstate = 1
+                AND pat_med_inhosp.endtime &gt;= #{startDate}
+                AND pat_med_inhosp.endtime &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
+                <if test="deptcodeList != null and deptcodeList.size() > 0">
+                    AND pat_med_inhosp.leaveldeptcode IN
+                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                        #{deptcode}
+                    </foreach>
+                </if>
+            </if>
+            UNION ALL
+            <!-- 闅忚鏈嶅姟/棣栨/鍐嶆/涓撶梾闅忚锛氬悎骞朵负鍗曟鎵弿锛岀敤鏉′欢鑱氬悎浠f浛4涓� UNION ALL -->
+            SELECT
+                0 AS rc,
+                COUNT(1) AS rs,
+                SUM(CASE WHEN service_type = 2 AND visit_count = 1 THEN 1 ELSE 0 END) AS scsf,
+                SUM(CASE WHEN service_type = 2 AND visit_count > 1  THEN 1 ELSE 0 END) AS zcsf,
+                SUM(CASE WHEN service_type = 13                      THEN 1 ELSE 0 END) AS zbsf
+            FROM service_subtask
+            WHERE del_flag = 0
+            AND service_type IN (2, 13)
+            <if test="orgid != null and orgid != ''">
+                AND orgid = #{orgid}
+            </if>
+            <if test="startDate != null">
+                AND visit_time &gt;= #{startDate}
+            </if>
+            <if test="endDate != null">
+                AND visit_time &lt; DATE_ADD(#{endDate}, INTERVAL 1 DAY)
+            </if>
+            <if test="deptcodeList != null and deptcodeList.size() > 0">
+                AND deptcode IN
                 <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
                     #{deptcode}
                 </foreach>
             </if>
-        </if>
-        <if test="cy != null">
-            and pat_med_inhosp.inhospstate=1
-            and date_format(pat_med_inhosp.endtime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')
-            and date_format(pat_med_inhosp.endtime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
-            <if test="deptcodeList != null   and deptcodeList.size() > 0">
-                and pat_med_inhosp.leaveldeptcode in
-                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                    #{deptcode}
-                </foreach>
-            </if>
-        </if>
-        <!-- 闅忚鏈嶅姟浜烘暟 -->
-        union all
-        select
-        0 AS rc,
-        count(1) AS rs,
-        0 AS scsf,
-        0 AS zcsf,
-        0 AS zbsf
-        FROM
-        service_subtask
-        where 1=1
-        and del_flag = 0
-        and service_type=2
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="startDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
-        </if>
-        <if test="endDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
-        </if>
-        <if test="deptcodeList != null   and deptcodeList.size() > 0">
-            and deptcode in
-            <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                #{deptcode}
-            </foreach>
-        </if>
-        <!-- 棣栨闅忚浜烘暟 -->
-        union all
-        select
-        0 AS rc,
-        0 AS rs,
-        count(1) AS scsf,
-        0 AS zcsf,
-        0 AS zbsf
-        FROM
-        service_subtask
-        where 1=1
-        and del_flag = 0
-        and service_type=2
-        and visit_count is not null
-        and visit_count = 1
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="startDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
-        </if>
-        <if test="endDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
-        </if>
-        <if test="deptcodeList != null   and deptcodeList.size() > 0">
-            and deptcode in
-            <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                #{deptcode}
-            </foreach>
-        </if>
-        <!-- 鍐嶆闅忚浜烘暟 -->
-        union all
-        select
-        0 AS rc,
-        0 AS rs,
-        0 AS scsf,
-        count(1) AS zcsf,
-        0 AS zbsf
-        FROM
-        service_subtask
-        where 1=1
-        and del_flag = 0
-        and service_type=2
-        and visit_count is not null
-        and visit_count > 1
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="startDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
-        </if>
-        <if test="endDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
-        </if>
-        <if test="deptcodeList != null   and deptcodeList.size() > 0">
-            and deptcode in
-            <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                #{deptcode}
-            </foreach>
-        </if>
-        <!-- 涓撶梾闅忚浜烘暟 -->
-        union all
-        select
-        0 AS rc,
-        0 AS rs,
-        0 AS scsf,
-        0 AS zcsf,
-        count(1) AS zbsf
-        FROM
-        service_subtask
-        where 1=1
-        and del_flag = 0
-        and service_type=13
-        <if test="orgid != null and orgid != ''">
-            and orgid = #{orgid}
-        </if>
-        <if test="startDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )
-        </if>
-        <if test="endDate != null">
-            AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')
-        </if>
-        <if test="deptcodeList != null   and deptcodeList.size() > 0">
-            and deptcode in
-            <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
-                #{deptcode}
-            </foreach>
-        </if>
         ) AS combined_data
     </select>
 
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 9f7cb36..5a778bf 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -265,7 +265,7 @@
     <select id="selectServiceSubtaskList" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
             resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>
-        where  del_flag = 0
+        where del_flag = 0
         <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
         <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow,jdbcType=TIMESTAMP}</if>
         <if test="continueCount != null ">and continue_count = #{continueCount}</if>
@@ -1243,6 +1243,9 @@
             <if test="continueContent != null ">continue_content = #{continueContent},</if>
         </trim>
         where patid = #{patid} and taskid = #{taskid}
+        <if test="id != null ">
+            and id = #{id}
+        </if>
     </update>
 
     <update id="updateServiceSubtaskByTaskGuid" parameterType="com.smartor.domain.ServiceSubtask">
@@ -2132,7 +2135,8 @@
         SUM(CASE WHEN sendstate = 2 THEN 1 ELSE 0 END) AS dsf,
         SUM(CASE WHEN sendstate = 1 THEN 1 ELSE 0 END) AS blq,
         SUM(CASE WHEN excep IS NOT NULL AND excep = '1' THEN 1 ELSE 0 END) AS yc,
-        SUM(CASE WHEN excep IS NOT NULL AND excep = '2' THEN 1 ELSE 0 END) AS jg
+        SUM(CASE WHEN excep IS NOT NULL AND excep = '2' THEN 1 ELSE 0 END) AS jg,
+        COUNT(1) as total
         FROM service_subtask
         where 1=1
         and del_flag = 0
@@ -2418,4 +2422,62 @@
         </if>
     </select>
 
+    <!--
+        鎸夌梾鍖烘垨绉戝鍒嗙粍缁熻 continue_flag 鏁伴噺
+        浼犱簡 leavehospitaldistrictcodes 鈫� 鎸夌梾鍖虹淮搴�
+        浼犱簡 deptcodes              鈫� 鎸夌瀹ょ淮搴�
+        閮戒笉浼�                     鈫� 鎸夌梾鍖虹淮搴︾粺璁″叏閲�
+    -->
+    <!-- 鎸夌梾鍖哄垎缁勭粺璁″欢缁姢鐞嗘暟閲� -->
+    <select id="getContinueNurseCount"
+            parameterType="com.smartor.domain.VO.ServiceSubtaskCotinueCountVO"
+            resultType="java.util.Map">
+        SELECT
+        leavehospitaldistrictcode AS groupCode,
+        leavehospitaldistrictname AS groupName,
+        SUM(CASE WHEN continue_flag = 1 THEN 1 ELSE 0 END) AS noContinueCnt,
+        SUM(CASE WHEN continue_flag = 2 THEN 1 ELSE 0 END) AS continueCnt
+        FROM service_subtask
+        WHERE del_flag = 0
+        AND continue_flag IN (1, 2)
+        AND leavehospitaldistrictcode IS NOT NULL AND leavehospitaldistrictcode != ''
+        <if test="orgid != null and orgid != ''">
+            AND orgid = #{orgid}
+        </if>
+        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+            AND leavehospitaldistrictcode IN
+            <foreach collection="leavehospitaldistrictcodes" item="code" open="(" separator="," close=")">
+                #{code}
+            </foreach>
+        </if>
+        GROUP BY leavehospitaldistrictcode, leavehospitaldistrictname
+        ORDER BY groupCode
+    </select>
+
+    <!-- 鎸夌瀹ゅ垎缁勭粺璁″欢缁姢鐞嗘暟閲� -->
+    <select id="getContinueNurseCountByDept"
+            parameterType="com.smartor.domain.VO.ServiceSubtaskCotinueCountVO"
+            resultType="java.util.Map">
+        SELECT
+        deptcode AS groupCode,
+        deptname AS groupName,
+        SUM(CASE WHEN continue_flag = 1 THEN 1 ELSE 0 END) AS noContinueCnt,
+        SUM(CASE WHEN continue_flag = 2 THEN 1 ELSE 0 END) AS continueCnt
+        FROM service_subtask
+        WHERE del_flag = 0
+        AND continue_flag IN (1, 2)
+        AND deptcode IS NOT NULL AND deptcode != ''
+        <if test="orgid != null and orgid != ''">
+            AND orgid = #{orgid}
+        </if>
+        <if test="deptcodes != null and deptcodes.size() > 0">
+            AND deptcode IN
+            <foreach collection="deptcodes" item="code" open="(" separator="," close=")">
+                #{code}
+            </foreach>
+        </if>
+        GROUP BY deptcode, deptname
+        ORDER BY groupCode
+    </select>
+
 </mapper>

--
Gitblit v1.9.3