From 459aa78c84cf552ebea6ef056d978c2531d71ac8 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 06 三月 2026 17:14:27 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/domain/ServiceSubtask.java                               |   15 
 smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java |   10 
 smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java             |    3 
 smartor/src/main/java/com/smartor/common/DistinctByProperty.java                           |   24 
 smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java                  |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskController.java          |    3 
 smartor/pom.xml                                                                            |    4 
 smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java               |    5 
 smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java                |    5 
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java         |   92 +++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java          |   91 --
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java              |  223 ++++----
 smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java                 |    9 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java      |   11 
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskRes.java                            |  575 +++++++++-------------
 smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java                         |   19 
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java        |    9 
 smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java                             |   17 
 smartor/src/main/java/com/smartor/service/impl/PatFilterlistServiceImpl.java               |    4 
 smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java                      |   11 
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                         |   97 +++
 smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskVO.java                          |   23 
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java  |    4 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java                               |   82 ++-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java   |   71 +-
 smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java               |    7 
 smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java                  |   24 
 ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java                     |    3 
 smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java                  |    9 
 29 files changed, 824 insertions(+), 629 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
index 0281b14..7fbb938 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -24,6 +24,7 @@
 import com.ruoyi.system.service.ISysConfigService;
 import com.smartor.common.LSHospTokenUtil;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import com.smartor.service.IBaseSmsaccountService;
 import com.smartor.service.IServiceOutPathService;
@@ -187,7 +188,7 @@
         ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
 
         //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
         serviceSubtaskVO.setSendstate(2L);
         List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtaskVO);
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 1d3a419..c24c121 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
@@ -25,6 +25,8 @@
 import com.ruoyi.system.domain.SysConfig;
 import com.ruoyi.system.service.ISysConfigService;
 import com.smartor.domain.*;
+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;
@@ -96,14 +98,17 @@
 //        }
 
         serviceSubtaskVO.setPageNum(PageUtils.getOffset(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize()));
-        List<ServiceSubtask> serviceSubtaskList = null;
+        List<ServiceSubtaskRes> serviceSubtaskList = null;
         LoginUser loginUser = getLoginUser();
         SysUser user = loginUser.getUser();
         serviceSubtaskVO.setOrgid(user.getOrgid());
+        ServiceSubtaskEntity serviceSubtaskEntity = null;
         if (serviceSubtaskVO != null) {
-            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);
+            serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
+            serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
+            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskEntity);
         }
-        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+        for (ServiceSubtaskRes serviceSubtask : serviceSubtaskList) {
             ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
             serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
             serviceSubtaskRecord.setOrgid(serviceSubtask.getOrgid());
@@ -116,14 +121,14 @@
         }
 
 //      patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
-        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
+        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
         map.put("serviceSubtaskList", serviceSubtaskList);
         List<Map<String, Object>> list = new ArrayList<>();
         list.add(map);
 
         serviceSubtaskVO.setPageNum(null);
         serviceSubtaskVO.setPageSize(null);
-        List<ServiceSubtask> serviceSubtasks = serviceSubtaskService.patItem(serviceSubtaskVO);
+        List<ServiceSubtaskRes> serviceSubtasks = serviceSubtaskService.patItem(serviceSubtaskEntity);
 
         return getDataTable3(CollectionUtils.isNotEmpty(serviceSubtasks) ? serviceSubtasks.size() : 0L, list);
     }
@@ -136,6 +141,10 @@
     @PostMapping("/patItemCount")
     public Map<String, Object> patItemCount(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
         Map<String, Object> map = new HashMap<>();
+
+        ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
+        serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
+
         // 閫氳繃redis璁板綍缁撴灉
         Map<String, Object> redisMap = new HashMap<>();
         LoginUser loginUser = getLoginUser();
@@ -151,11 +160,11 @@
             redisMap = redisCache.getCacheObject(userId + "patItemCount");
             //璁板綍鏄惁鏈夊彲鐢ㄧ紦瀛�
             Boolean redisFlag = false;
-            ServiceSubtaskVO oldCondition = null;
+            ServiceSubtaskEntity oldCondition = null;
             if (MapUtils.isNotEmpty(redisMap)) {
-                oldCondition = (ServiceSubtaskVO) redisMap.get("searchCondition");
+                oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
                 // 姣旇緝鏌ヨ鏉′欢鏄惁涓�鑷�
-                if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskVO)) {
+                if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskEntity)) {
                     // 鏉′欢涓�鑷达紝浣跨敤缂撳瓨
                     redisFlag = true;
                     map = redisMap;
@@ -165,8 +174,8 @@
 
             // 濡傛灉娌℃湁缂撳瓨鎴栬�呮潯浠朵笉涓�鑷达紝閲嶆柊鏌ヨ
             if (!redisFlag) {
-                map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
-                map.put("searchCondition", serviceSubtaskVO);
+                map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
+                map.put("searchCondition", serviceSubtaskEntity);
                 redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
             }
         }
@@ -179,7 +188,7 @@
      * 姣旇緝涓や釜ServiceSubtaskVO鐨勬煡璇㈡潯浠舵槸鍚︿竴鑷�
      * 浣跨敤鍙嶅皠姣旇緝鎵�鏈夊瓧娈碉紝鎺掗櫎鍒嗛〉鍙傛暟鍜屾棤鍏冲瓧娈�
      */
-    private boolean isSameCondition(ServiceSubtaskVO oldCondition, ServiceSubtaskVO newCondition) {
+    private boolean isSameCondition(ServiceSubtaskEntity oldCondition, ServiceSubtaskEntity newCondition) {
         // 浣跨敤ReflectUtils鐨勯�氱敤鏂规硶姣旇緝锛屾帓闄ゅ垎椤靛弬鏁扮瓑鏃犲叧瀛楁
         return ReflectUtils.equalsAllFields(oldCondition, newCondition,
                 // 鎺掗櫎鐨勫瓧娈碉細鍒嗛〉鍙傛暟銆佸簭鍒楀寲ID銆佹椂闂存埑绛�
@@ -193,8 +202,8 @@
     //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
     @Log(title = "鍗曚竴浠诲姟锛堥殢璁垮鏁欙級", businessType = BusinessType.EXPORT)
     @PostMapping("/patItemExport")
-    public void patItemExport(HttpServletResponse response, ServiceSubtaskVO serviceSubtaskVO) {
-        List<ServiceSubtask> serviceSubtaskList = null;
+    public void patItemExport(HttpServletResponse response, ServiceSubtaskEntity serviceSubtaskVO) {
+        List<ServiceSubtaskRes> serviceSubtaskList = null;
         if (serviceSubtaskVO != null) {
             if (serviceSubtaskVO.getPageNum() != null && serviceSubtaskVO.getPageSize() != null)
                 PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
@@ -223,9 +232,12 @@
     @PostMapping("/patItemByCondition")
     public TableDataInfo patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
         List<ServiceSubtask> serviceSubtaskList = null;
-        if (serviceSubtaskVO != null) {
-            PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
-            serviceSubtaskList = serviceSubtaskService.patItem2(serviceSubtaskVO);
+        ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
+        serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
+        if (serviceSubtaskEntity != null) {
+            PageUtils.startPageByPost(serviceSubtaskEntity.getPageNum(), serviceSubtaskEntity.getPageSize());
+
+            serviceSubtaskList = serviceSubtaskService.patItem2(serviceSubtaskEntity);
         }
         for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
             ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
@@ -235,7 +247,7 @@
         }
 //      patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
 //      Map<String, Object> map = patItemCount(serviceSubtaskVO);
-        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
+        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskEntity);
 
         map.put("serviceSubtaskList", serviceSubtaskList);
         List<Map<String, Object>> list = new ArrayList<>();
@@ -246,7 +258,7 @@
             public void doSelect() {
                 serviceSubtaskVO.setPageNum(null);
                 serviceSubtaskVO.setPageSize(null);
-                serviceSubtaskService.patItem2(serviceSubtaskVO);
+                serviceSubtaskService.patItem2(serviceSubtaskEntity);
             }
         });
         return getDataTable2(total, list);
@@ -259,7 +271,7 @@
     @Log(title = "鍗曚竴浠诲姟锛堥殢璁垮鏁欙級", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     public void export(HttpServletResponse response, ServiceSubtask serviceSubtask) {
-        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);
+        ServiceSubtaskEntity serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskEntity.class);
         List<ServiceSubtask> list = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO);
         ExcelUtil<ServiceSubtask> util = new ExcelUtil<ServiceSubtask>(ServiceSubtask.class);
         util.exportExcel(response, list, "鍗曚竴浠诲姟锛堥殢璁匡級鏁版嵁");
@@ -272,9 +284,11 @@
     @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/querySubtaskList")
     public AjaxResult querySubtaskList(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
-        PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
-        serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO);
-        return success(serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO));
+        ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
+        serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
+        PageUtils.startPageByPost(serviceSubtaskEntity.getPageNum(), serviceSubtaskEntity.getPageSize());
+        serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskEntity);
+        return success(serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskEntity));
     }
 
 
@@ -285,9 +299,11 @@
     @Log(title = "鍐嶆闅忚鏁版嵁鏌ヨ", businessType = BusinessType.EXPORT)
     @PostMapping("/querySubtaskListAgain")
     public TableDataInfo querySubtaskListAgain(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
-        PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
-        serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskVO);
-        return getDataTable(serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskVO));
+        ServiceSubtaskEntity serviceSubtaskEntity = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtaskEntity.class);
+        serviceSubtaskEntity.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
+        PageUtils.startPageByPost(serviceSubtaskEntity.getPageNum(), serviceSubtaskEntity.getPageSize());
+        serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskEntity);
+        return getDataTable(serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskEntity));
     }
 
 
@@ -400,9 +416,10 @@
     @ApiOperation("鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅")
     @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
     @PostMapping("/queryTaskByCondition")
-    public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO ivrTaskcallVO) {
+    public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
         //鏍规嵁鍏ュ弬鏌ヨ淇℃伅
-        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, ServiceSubtask.class);
+        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceSubtaskVO, ServiceSubtask.class);
+        serviceSubtask.setContinueContent(ObjectUtils.isNotEmpty(serviceSubtaskVO.getContinueContent()) ? serviceSubtaskVO.getContinueContent().toString() : null);
         ServiceTaskVO ivrTaskVO = serviceSubtaskService.queryTaskByCondition(serviceSubtask);
         return success(ivrTaskVO);
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
index 94d81fc..4d2a0c8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
@@ -14,6 +14,7 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.service.IServiceSubtaskService;
 import com.smartor.service.IServiceTaskService;
 import io.swagger.annotations.Api;
@@ -73,13 +74,13 @@
 
         List<Long> taskIds = list.stream().map(ServiceTask::getTaskid).collect(Collectors.toList());
 
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-        serviceSubtaskVO.setTaskIds(taskIds);
-        serviceSubtaskVO.setStartOutHospTime(serviceTask.getStartOutHospTime());
-        serviceSubtaskVO.setEndOutHospTime(serviceTask.getEndOutHospTime());
+        ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
+        serviceSubtaskEntity.setTaskIds(taskIds);
+        serviceSubtaskEntity.setStartOutHospTime(serviceTask.getStartOutHospTime());
+        serviceSubtaskEntity.setEndOutHospTime(serviceTask.getEndOutHospTime());
         // 鎵归噺鏌ヨ鎵�鏈夊瓙浠诲姟
         Map<String, List<ServiceSubtask>> subtaskMap = iServiceSubtaskService
-                .selectServiceSubtaskList(serviceSubtaskVO)
+                .selectServiceSubtaskList(serviceSubtaskEntity)
                 .stream()
                 .filter(subtask -> subtask.getTaskid() != null)  // 娣诲姞杩囨护
                 .collect(Collectors.groupingBy(subtask -> Optional.of(subtask.getTaskid().toString()).orElse("Unknown")));
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskController.java
index 8d2e056..1b63503 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskController.java
@@ -13,6 +13,7 @@
 import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.service.IServiceSubtaskService;
 import com.smartor.service.ISvyTaskService;
 import com.smartor.service.ISvyTaskSingleService;
@@ -69,7 +70,7 @@
         List<SvyTaskVO> svyTaskVOS = DtoConversionUtils.sourceToTarget(list, SvyTaskVO.class);
         if (CollectionUtils.isNotEmpty(svyTaskVOS)) {
             for (SvyTaskVO svyTaskVO : svyTaskVOS) {
-                ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+                ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
                 serviceSubtaskVO.setTaskid(svyTaskVO.getTaskid());
                 List<ServiceSubtask> svyTaskSingles = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO);
                 if (CollectionUtils.isNotEmpty(svyTaskSingles)) {
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index d51991f..fc8b79d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -7,7 +7,6 @@
 import com.ruoyi.common.core.domain.entity.SysUserDept;
 import com.ruoyi.common.core.domain.model.LoginBody;
 import com.ruoyi.common.exception.base.BaseException;
-import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.web.service.SysLoginService;
@@ -17,17 +16,14 @@
 import com.ruoyi.system.service.ISysMenuService;
 import com.smartor.mapper.SysUserDeptMapper;
 import com.smartor.service.IServiceSLTDHealthcareRecordService;
-import com.smartor.service.impl.ServiceSLTDHealthcareRecordServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.view.RedirectView;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -57,21 +53,6 @@
     @Autowired
     private IServiceSLTDHealthcareRecordService iServiceSLTDHealthcareRecordService;
 
-
-    @Value("${pri_key}")
-    private String pri_key;
-
-    @Value("${isEncryp}")
-    private Integer isEncryp;
-
-
-    @Value("${sltd_pub_path}")
-    private String sltdPubPath;
-
-
-    @Value("${spring.profiles.active}")
-    private String active;
-
     @Autowired
     private SysUserDeptMapper sysUserDeptMapper;
 
@@ -94,7 +75,7 @@
     /**
      * 鐧诲綍鏂规硶
      *
-     * @param loginBody 鐧诲綍淇℃伅
+     * @param map 鐧诲綍淇℃伅
      * @return 缁撴灉
      */
     @PostMapping("/test")
@@ -116,53 +97,37 @@
      */
 //    @IpWhitelist
     @GetMapping("/SSOLogin")
-    public RedirectView SSOLogin(@RequestParam(required = false) String userName, @RequestParam(required = false) String orgid, @RequestParam(required = false) String campusid, @RequestParam(required = false) String deptId, @RequestParam(required = false) String token) {
+    public RedirectView SSOLogin(@RequestParam(required = false) String userName,
+                                 @RequestParam(required = false) String orgid,
+                                 @RequestParam(required = false) String campusid,
+                                 @RequestParam(required = false) String deptId,
+                                 String token) {
         if (StringUtils.isEmpty(userName) && StringUtils.isEmpty(token)) {
             throw new BaseException("鍙傛暟涓嶈兘涓虹┖");
-        }
-        log.info("--------杩涙柟娉曚簡鍚�?{}", token);
-        // 閲嶅畾鍚戝湴鍧�瀵硅薄(閲嶅畾鍚戝湴鍧�
-        RedirectView redirectView = new RedirectView();
-//        if (active.equals("sltd")) {
-//            Map<String, String> headers = buildRequestHeaders();
-//            Map<String, String> requestParams = new HashMap<>();
-//            requestParams.put("token", token);
-//            String reqData = HttpUtil.postFormRequest(sltdPubPath + "/checkSsoTokenId", requestParams, headers, null);
-//            log.info("銆�-----杩斿洖鐨勭粨鏋滀负銆戯細{}", reqData);
-//            if (StringUtils.isEmpty(reqData)) {
-//                throw new BaseException("token楠岃瘉澶辫触");
-//            }
-//
-//            Map<String, Object> map = JSONObject.parseObject(reqData, Map.class);
-//            if (ObjectUtils.isEmpty(map) || (Integer) map.get("code") != 200) {
-//                throw new BaseException("token楠岃瘉澶辫触");
-//            }
-//
-//            Map<String, Object> data = (Map<String, Object>) map.get("data");
-//            //鍛樺伐缂栫爜
-//            userName = (String) data.get("accountNo");
-//        }
-        log.info("銆�-----------userName鐨勫�间负锛歿}銆�", userName);
-        // 鐢熸垚浠ょ墝
-        if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(orgid)) {
-            throw new BaseException("鐢ㄦ埛鍚嶆垨缁勭粐鏈烘瀯鎴栭儴闂ㄤ笉鑳戒负绌�");
-        }
-        if (isEncryp != null && isEncryp == 1) {
-            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-            userName = rsaPublicKeyExample.decryptedData(userName, pri_key);
-        }
-        if (StringUtils.isEmpty(deptId)) deptId = "null";
-        String token2 = loginService.loginByUserName(userName + "&" + orgid + "&" + deptId + "&" + campusid);
-        if (StringUtils.isEmpty(token2)) {
-            throw new BaseException("鐧婚檰澶辫触");
         }
 
         String path = sysConfigService.selectConfigByKey("sys.qddz");
         if (StringUtils.isEmpty(path)) {
             throw new BaseException("璇烽厤缃墠绔湴鍧�");
         }
-        log.info("鍗曠偣鐧婚檰閲嶅畾鍚戝湴鍧�涓猴細{}", path + "/loginSSO?token=" + token2 + "&orgid=" + orgid + "&orgname=''" + "&ZuHuID=''&deptCode=''");
-        redirectView.setUrl(path + "/loginSSO?token=" + token2 + "&orgid=" + orgid + "&orgname=null" + "&ZuHuID=null&deptCode=null");
+
+        String loginToken = loginService.ssoLogin(userName, orgid, deptId, campusid, token);
+        if (StringUtils.isEmpty(loginToken)) {
+            log.error("銆怱SO鐧诲綍銆戠櫥褰曞け璐ワ紝userName={}, orgid={}", userName, orgid);
+            return buildRedirect(path + "/login");
+        }
+
+        String redirectUrl = path + "/loginSSO?token=" + loginToken + "&orgid=" + orgid + "&orgname=null&ZuHuID=null&deptCode=null";
+        log.info("銆怱SO鐧诲綍銆戦噸瀹氬悜鍦板潃锛歿}", redirectUrl);
+        return buildRedirect(redirectUrl);
+    }
+
+    /**
+     * 鏋勫缓閲嶅畾鍚戣鍥�
+     */
+    private RedirectView buildRedirect(String url) {
+        RedirectView redirectView = new RedirectView();
+        redirectView.setUrl(url);
         redirectView.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
         return redirectView;
     }
@@ -227,13 +192,5 @@
     @GetMapping("/getDept/{orgid}")
     public AjaxResult getDept(@PathVariable String orgid) {
         return AjaxResult.success(sysDeptService.selectDept(orgid));
-    }
-
-
-    private Map<String, String> buildRequestHeaders() {
-        Map<String, String> headers = new HashMap<>();
-//        headers.put("Content-Type", "application/json");
-        headers.put("app-key", ServiceSLTDHealthcareRecordServiceImpl.APP_KEY);
-        return headers;
     }
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index 4bd18fc..b13fa65 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -2,9 +2,14 @@
 
 import javax.annotation.Resource;
 
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.utils.HttpUtil;
+import com.ruoyi.common.utils.RSAPublicKeyExample;
+import com.smartor.service.impl.ServiceSLTDHealthcareRecordServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -30,6 +35,9 @@
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * 鐧诲綍鏍¢獙鏂规硶
  *
@@ -52,6 +60,21 @@
 
     @Autowired
     private ISysConfigService configService;
+
+    @Autowired
+    private RSAPublicKeyExample rsaPublicKeyExample;
+
+    @Value("${pri_key}")
+    private String priKey;
+
+    @Value("${isEncryp}")
+    private Integer isEncryp;
+
+    @Value("${sltd_pub_path}")
+    private String sltdPubPath;
+
+    @Value("${spring.profiles.active}")
+    private String active;
 
     /**
      * 鐧诲綍楠岃瘉
@@ -95,6 +118,75 @@
     }
 
 
+    /**
+     * SSO 鍗曠偣鐧诲綍涓氬姟澶勭悊
+     * <p>
+     * 1. 濡傛灉鏄� sltd 鐜锛屽厛閫氳繃 SSO token 鎹㈠彇鍛樺伐璐﹀彿
+     * 2. RSA 瑙e瘑 userName锛堣嫢寮�鍚姞瀵嗭級
+     * 3. 鏍规嵁 userName + orgid + deptId + campusid 鐢熸垚鐧诲綍 token
+     *
+     * @param userName 鐢ㄦ埛鍚嶏紙鍙兘涓虹┖锛屽鏋� sltd 妯″紡鍒欎粠 token 涓幏鍙栵級
+     * @param orgid    缁勭粐鏈烘瀯ID
+     * @param deptId   閮ㄩ棬ID
+     * @param campusid 鏍″尯 ID
+     * @param token    SLTD SSO token锛堜粎 sltd 鐜涓嬩娇鐢級
+     * @return 鐧诲綍鎴愬姛鍚庣殑 JWT token锛屽け璐ヨ繑鍥� null
+     */
+    public String ssoLogin(String userName, String orgid, String deptId, String campusid, String token) {
+        // sltd 鐜锛氶�氳繃 SSO token 鑾峰彇鍛樺伐璐﹀彿
+        if ("sltd".equals(active)) {
+            userName = resolveUserNameBySltdToken(token);
+            if (userName == null) {
+                return null;
+            }
+        }
+
+        log.info("銆怱SO鐧诲綍銆憉serName={}", userName);
+
+        if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(orgid)) {
+            log.error("銆怱SO鐧诲綍銆戠敤鎴峰悕鎴栫粍缁囨満鏋勪笉鑳戒负绌�");
+            return null;
+        }
+
+        // RSA 瑙e瘑鐢ㄦ埛鍚�
+        if (isEncryp != null && isEncryp == 1) {
+            userName = rsaPublicKeyExample.decryptedData(userName, priKey);
+        }
+
+        if (StringUtils.isEmpty(deptId)) deptId = "null";
+        if (StringUtils.isEmpty(campusid)) campusid = "null";
+        return loginByUserName(userName + "&" + orgid + "&" + deptId + "&" + campusid);
+    }
+
+    /**
+     * 璋冪敤鐪佺珛鍚屽痉鎺ュ彛锛岄�氳繃 SSO token 鑾峰彇鍛樺伐璐﹀彿
+     *
+     * @param token SLTD SSO token
+     * @return 鍛樺伐璐﹀彿锛岄獙璇佸け璐ヨ繑鍥� null
+     */
+    private String resolveUserNameBySltdToken(String token) {
+        Map<String, String> headers = new HashMap<>();
+        headers.put("app-key", ServiceSLTDHealthcareRecordServiceImpl.APP_KEY);
+        Map<String, String> requestParams = new HashMap<>();
+        requestParams.put("token", token);
+        String reqData = HttpUtil.postFormRequest(sltdPubPath + "/checkSsoTokenId", requestParams, headers, null);
+        log.info("銆怱LTD token 楠岃瘉銆戝搷搴旂粨鏋滐細{}", reqData);
+
+        if (StringUtils.isEmpty(reqData)) {
+            log.error("銆怱LTD token 楠岃瘉銆戝搷搴斾负绌猴紝楠岃瘉澶辫触");
+            return null;
+        }
+
+        Map<String, Object> map = JSONObject.parseObject(reqData, Map.class);
+        if (ObjectUtils.isEmpty(map) || (Integer) map.get("code") != 200) {
+            log.error("銆怱LTD token 楠岃瘉銆戝搷搴旂爜寮傚父锛岄獙璇佸け璐�");
+            return null;
+        }
+
+        Map<String, Object> data = (Map<String, Object>) map.get("data");
+        return (String) data.get("accountNo");
+    }
+
     public String loginByUserName(String userName) {
         SysUser sysUser = userService.selectUserByUserNameAndDeptId(userName);
         log.info("---------sysUser鐨勫�间负:{}", sysUser);
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
index 5fc01ad..f95d141 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
@@ -48,10 +48,8 @@
         } else if (StringUtils.isEmpty(user.getOrgid()) || StringUtils.isEmpty(split[1]) || !user.getOrgid().trim().equals(split[1].trim())) {
             log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶆槸鏈尰闄㈠笎鍙凤細{}", username, split[1]);
             throw new ServiceException("瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿锛�" + split[0] + " 涓嶆槸鏈尰闄㈢殑");
-        } else if (StringUtils.isEmpty(user.getCampusid()) || StringUtils.isEmpty(split[2]) || !user.getCampusid().trim().equals(split[2].trim())) {
-            log.info("鐧诲綍鐢ㄦ埛锛歿} 涓嶆槸鏈櫌鍖哄笎鍙凤細{}", username, split[1]);
-            throw new ServiceException("瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿锛�" + split[0] + " 涓嶆槸鏈櫌鍖哄笎鍙�");
         }
+//-0/-85#4-                                                              
 
         passwordService.validate(user);
 
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 ae799e1..ae3294c 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
@@ -20,6 +20,7 @@
 import com.ruoyi.system.service.ISysConfigService;
 import com.smartor.common.LSHospTokenUtil;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import com.smartor.service.*;
 import lombok.extern.slf4j.Slf4j;
@@ -305,11 +306,9 @@
                     }
                     log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滅敤鎴蜂俊鎭�濈粨鏉熼噰闆嗘暟鎹細{}", aBoolean);
                 }
-
                 // 鐪佺珛鍚屽痉鏁版嵁閲囬泦
                 for (Long cid : campusidList) {
                     log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滈鍏ラ櫌鈥濆紑濮嬮噰闆嗘暟鎹紝闄㈠尯锛歿}", cid);
-                    String yesterday = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                     String nowTime = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
                     ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO();
                     serviceSLTDInhospReqVO.setOrgId("20001001");
@@ -340,19 +339,19 @@
                     serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                     log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滃叆闄⑩�濈祼鏉熼噰闆嗘暟鎹紝闄㈠尯锛歿}", cid);
 
-                    log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濆紑濮嬮噰闆嗘暟鎹紝闄㈠尯锛歿}", cid);
-                    serviceSLTDInhospReqVO.setStartHeadTime(null);
-                    serviceSLTDInhospReqVO.setStartTailTime(null);
-                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
-                    serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
-                    serviceSLTDInhospReqVO.setStatusList(null);
-                    List<String> list1 = new ArrayList<>();
-                    list1.add("FH0108.01");
-                    list1.add("FH0108.03");
-                    serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
-                    log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濋噰闆嗘暟鎹叆鍙傦細{}", serviceSLTDInhospReqVO);
-                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
-                    log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濇潫閲囬泦鏁版嵁锛岄櫌鍖猴細{}", cid);
+//                    log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濆紑濮嬮噰闆嗘暟鎹紝闄㈠尯锛歿}", cid);
+//                    serviceSLTDInhospReqVO.setStartHeadTime(null);
+//                    serviceSLTDInhospReqVO.setStartTailTime(null);
+//                    serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
+//                    serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
+//                    serviceSLTDInhospReqVO.setStatusList(null);
+//                    List<String> list1 = new ArrayList<>();
+//                    list1.add("FH0108.01");
+//                    list1.add("FH0108.03");
+//                    serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
+//                    log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濋噰闆嗘暟鎹叆鍙傦細{}", serviceSLTDInhospReqVO);
+//                    serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
+//                    log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濇潫閲囬泦鏁版嵁锛岄櫌鍖猴細{}", cid);
 
                     log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滃嚭闄⑩�濆紑濮嬮噰闆嗘暟鎹紝闄㈠尯锛歿}", cid);
                     serviceSLTDInhospReqVO.setStartHeadTime(null);
@@ -370,10 +369,45 @@
                     serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
                     log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滃嚭闄⑩�濇潫閲囬泦鏁版嵁锛岄櫌鍖猴細{}", cid);
                 }
+
             } catch (Exception e) {
                 log.error("銆恉ealHisData銆戠渷绔嬪悓寰锋暟鎹噰闆嗗紓甯�", e);
             }
         }
+    }
+
+    public void dealHisDataSLTD() {
+        log.info("銆恉ealHisData銆戝紑濮嬫墽琛孒IS鏁版嵁閲囬泦浠诲姟");
+
+        try {
+            LocalDate startDate = LocalDate.of(2025, 11, 1);
+            LocalDate endDate = LocalDate.of(2026, 2, 27);
+
+            // 鐪佺珛鍚屽痉鏁版嵁閲囬泦
+//            String nowTime = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) {
+                String nowTime = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO();
+                serviceSLTDInhospReqVO.setOrgId("20001001");
+                serviceSLTDInhospReqVO.setCampusId(30001002L);
+                log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濆紑濮嬮噰闆嗘暟鎹紝闄㈠尯锛歿}", "30001002");
+                serviceSLTDInhospReqVO.setStartHeadTime(null);
+                serviceSLTDInhospReqVO.setStartTailTime(null);
+                serviceSLTDInhospReqVO.setEncounterTimeStart(nowTime);
+                serviceSLTDInhospReqVO.setEncounterTimeEnd(nowTime);
+                serviceSLTDInhospReqVO.setStatusList(null);
+                List<String> list1 = new ArrayList<>();
+                list1.add("FH0108.01");
+                list1.add("FH0108.03");
+                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
+                log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濋噰闆嗘暟鎹叆鍙傦細{}", serviceSLTDInhospReqVO);
+                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
+                log.debug("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濇潫閲囬泦鏁版嵁锛岄櫌鍖猴細{}", "30001002");
+            }
+        } catch (Exception e) {
+            log.error("銆恉ealHisData銆戠渷绔嬪悓寰锋暟鎹噰闆嗗紓甯�", e);
+        }
+
     }
 
     /**
@@ -465,7 +499,7 @@
             commonTaskcallMQ.setSendType("2");
 
             //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
-            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
             serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
             serviceSubtaskVO.setSendstate(2L);
             serviceSubtaskVO.setVisitTime(new Date());
@@ -482,7 +516,7 @@
      */
     public void compensateTask() {
         //鑾峰彇鍒皊endstate=3 骞朵笖 visit_time涓哄皬浜庣瓑浜庝粖澶╃殑subtask
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setSendstate(3L);
         serviceSubtaskVO.setVisitTime(new Date());
         List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.getCompensateServiceSubtaskList(serviceSubtaskVO);
@@ -840,12 +874,12 @@
                     serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
                     serviceSubtaskRecord.setResult("success");
                     Boolean wxCodeSuccess = false;
-                    if(active.equals("hzszlyy")){
-                        if(!map.isEmpty() && map.get("success") != null){
+                    if (active.equals("hzszlyy")) {
+                        if (!map.isEmpty() && map.get("success") != null) {
                             wxCodeSuccess = (boolean) map.get("success");
                         }
-                    }else {
-                        if(!map.isEmpty() && map.get("succ") != null){
+                    } else {
+                        if (!map.isEmpty() && map.get("succ") != null) {
                             wxCodeSuccess = (boolean) map.get("succ");
                         }
                     }
@@ -960,10 +994,8 @@
                 //鑾峰彇褰撳墠鍙戦�佹柟寮�
                 ServiceSubtaskPreachform currentServiceSubtaskPreachform = serviceSubtaskPreachforms.stream().filter(item -> item.getSort().equals(currentSort.get())).findFirst().orElse(new ServiceSubtaskPreachform());
                 //褰撳墠鍙戦�佹柟寮忎负寰俊鐨勶紝涓斾笅涓�鍙戦�佹柟寮忎负鐭俊鐨勶紝寰俊鍙戦�佺姸鎬佷负宸插彂閫併�佸凡棰嗗彇鐨勶紝璺宠繃鐭俊姝ラ
-                if (currentServiceSubtaskPreachform.getPreachform().equals("5")
-                        && (currentServiceSubtaskPreachform.getSendstate().equals("2")
-                        || currentServiceSubtaskPreachform.getSendstate().equals("3"))) {
-                    if(StringUtils.isNotEmpty(nextPreachform) && nextPreachform.equals("2")){
+                if (currentServiceSubtaskPreachform.getPreachform().equals("5") && (currentServiceSubtaskPreachform.getSendstate().equals("2") || currentServiceSubtaskPreachform.getSendstate().equals("3"))) {
+                    if (StringUtils.isNotEmpty(nextPreachform) && nextPreachform.equals("2")) {
                         log.error("銆恠fHandlle銆戝井淇″凡鍙戦�侊紝鐭俊涓嶅彂閫侊紝璺宠浆浜哄伐");
                         setSuccessPreachForm(serviceSubtask, "-1", "寰俊宸插彂閫侊紝鐭俊涓嶅彂閫侊紝璺宠浆浜哄伐", "6");
                         //璺宠繃鐭俊锛屾墽琛屼笅涓�姝�
diff --git a/smartor/pom.xml b/smartor/pom.xml
index 2a8bfb2..a77af5a 100644
--- a/smartor/pom.xml
+++ b/smartor/pom.xml
@@ -135,6 +135,10 @@
             <artifactId>jsch</artifactId>
             <version>0.1.54</version>
         </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
     </dependencies>
 
 
diff --git a/smartor/src/main/java/com/smartor/common/DistinctByProperty.java b/smartor/src/main/java/com/smartor/common/DistinctByProperty.java
new file mode 100644
index 0000000..66032fd
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/common/DistinctByProperty.java
@@ -0,0 +1,24 @@
+package com.smartor.common;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * 鍘婚噸宸ュ叿绫�
+ */
+public class DistinctByProperty {
+
+    // 鍒涘缓鍘婚噸宸ュ叿鏂规硶锛屾牴鎹泦鍚堜腑涓婂睘鎬�
+    public static <T> List<T> distinctByProperty(
+            List<T> list,
+            Function<? super T, ?> keyExtractor) {
+
+        Set<Object> seen = new HashSet<>();
+        return list.stream()
+                .filter(item -> seen.add(keyExtractor.apply(item)))
+                .collect(Collectors.toList());
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java b/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java
index 92bb225..659e4e4 100644
--- a/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java
+++ b/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java
@@ -1,5 +1,6 @@
 package com.smartor.domain;
 
+import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
@@ -319,4 +320,20 @@
     @Excel(name = " 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿")
     @ApiModelProperty(value = "闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿")
     private Date longSendTime;
+
+
+    @ApiModelProperty(value = "缁х画鏍囪瘑")
+    private Integer continueFlag;
+
+    @ApiModelProperty(value = "缁х画鏃堕棿鐜板湪")
+    private Date continueTimeNow;
+
+    @ApiModelProperty(value = "缁х画鍐呭")
+    private JSONObject continueContent;
+
+    @ApiModelProperty(value = "缁х画娆℃暟")
+    private Integer continueCount;
+
+    @ApiModelProperty(value = "缁х画鏃堕棿涓嬫")
+    private Date continueTimeNext;
 }
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
index 1032473..aca8029 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
@@ -652,4 +652,19 @@
 
     @ApiModelProperty(value = "寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊; 3宸插鐞�")
     private Integer isabnormal;
+
+    @ApiModelProperty(value = "缁х画鏍囪瘑")
+    private Integer continueFlag;
+
+    @ApiModelProperty(value = "缁х画鏃堕棿鐜板湪")
+    private Date continueTimeNow;
+
+    @ApiModelProperty(value = "缁х画鍐呭")
+    private String continueContent;
+
+    @ApiModelProperty(value = "缁х画娆℃暟")
+    private Integer continueCount;
+
+    @ApiModelProperty(value = "缁х画鏃堕棿涓嬫")
+    private Date continueTimeNext;
 }
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskRes.java
similarity index 68%
copy from smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
copy to smartor/src/main/java/com/smartor/domain/ServiceSubtaskRes.java
index 912f1ac..fb7cb2f 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskRes.java
@@ -1,33 +1,38 @@
 package com.smartor.domain;
 
+import com.alibaba.fastjson.JSONObject;
 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 java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 /**
- * 鍗曚竴浠诲姟锛堥殢璁匡級瀵硅薄 ivr_taskcall
+ * 鍗曚竴浠诲姟锛堥殢璁匡級瀵硅薄 ivr_tasksingle
  *
  * @author ruoyi
  * @date 2024-02-02
  */
-@ApiModel(value = "ServiceSubtaskVO", description = "鍗曚竴闅忚浠诲姟鍏ュ弬")
+@ApiModel(value = "ServiceSubtask", description = "鍗曚竴闅忚浠诲姟")
 @Data
-public class ServiceSubtaskVO extends BaseEntity {
+public class ServiceSubtaskRes extends PatArchive {
     private static final long serialVersionUID = 1L;
 
     /**
-     *
+     * 涓婚敭
      */
-    @ApiModelProperty(value = "涓婚敭id")
-    private Long subId;
+    @ApiModelProperty(value = "涓婚敭")
+    private Long id;
 
+    /**
+     * 浠诲姟ID
+     */
+    @ApiModelProperty(value = "浠诲姟ID")
+    private Long taskid;
 
     /**
      * 绗笁鏂逛换鍔D
@@ -36,50 +41,63 @@
     private String taskGuid;
 
     /**
-     * 闅忚娆℃暟
+     * 鍑洪櫌鐥呬汉璁板綍ID
      */
-    @ApiModelProperty(value = "闅忚娆℃暟")
-    private Integer visitCount;
+    @ApiModelProperty(value = "鍑洪櫌鐥呬汉璁板綍ID")
+    private Long inhospid;
 
     /**
-     * 澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡
+     * 鐖禝D
      */
-    @ApiModelProperty(value = "澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡")
-    private Integer visitNotice;
+    @Excel(name = "鐖禝D")
+    @ApiModelProperty(value = "鐖禝D")
+    private Long pid;
 
     /**
-     * 鏄惁鍦ㄦ闅忚锛�1鍚�    2鏄�
+     * 澶囨敞
      */
-    @ApiModelProperty(value = "鏄惁鍦ㄦ闅忚锛�1鏄�    2鍚�")
-    private Integer isVisitAgain;
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
 
     /**
-     * 鎮h�匢D
+     * 澶囨敞
      */
-    @Excel(name = "  鎮h�匢D")
-    @ApiModelProperty(value = "鎮h�匢D")
-    private String patguid;
+    @ApiModelProperty(value = "")
+    private String guid;
+
+    /**
+     * 寮傚父鏍囪瘑
+     */
+    @ApiModelProperty(value = "寮傚父鏍囪瘑锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊")
+    @Excel(name = " 寮傚父鏍囪瘑:0缁胯壊锛�1绾㈣壊锛�2榛勮壊 ")
+    private String excep;
+
+    /**
+     * 鍑洪櫌鏃堕棿
+     */
+    @ApiModelProperty(value = "鍑洪櫌鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endtime;
+
+    /**
+     * 鍏ラ櫌鏃堕棿
+     */
+    @ApiModelProperty(value = "鍏ラ櫌鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date starttime;
+
+    /**
+     * 鏄惁鎻愪氦
+     */
+    @ApiModelProperty(value = "鏄惁鎻愪氦锛�0鏈彁浜�   1宸叉彁浜�")
+    private Long submit;
 
     /**
      * 鍙戦�佷汉
      */
-    @Excel(name = " 鍙戦�佷汉 ")
-    @ApiModelProperty(value = "鍙戦�佷汉")
+    @Excel(name = " 鍙戦�佷汉锛堟偅鑰咃級 ")
+    @ApiModelProperty(value = "鍙戦�佷汉锛堟偅鑰咃級")
     private String sendname;
-
-    /**
-     * 鍙戦�乁UID
-     */
-    @Excel(name = " 鍙戦�乁UID ")
-    @ApiModelProperty(value = "鍙戦�乁UID")
-    private String senduuid;
-
-    /**
-     * 鍙戝鐞嗘剰瑙侊細1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫閫乁UID
-     */
-    @Excel(name = " 澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫 ")
-    @ApiModelProperty(value = "澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫")
-    private String suggest;
 
     /**
      * 鎵嬫満鍙�
@@ -89,18 +107,18 @@
     private String phone;
 
     /**
-     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)
+     * 鎵嬫満鍙�
      */
-    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)")
-    @ApiModelProperty(value = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)")
-    private String serviceType;
+    @Excel(name = " 鎵嬫満鍙� ")
+    @ApiModelProperty(value = "鎵嬫満鍙�")
+    private String openid;
 
     /**
      * 鎬у埆
      */
     @Excel(name = "  鎬у埆")
     @ApiModelProperty(value = "鎬у埆")
-    private String sex;
+    private Long sex;
 
     /**
      * 骞撮緞
@@ -108,13 +126,6 @@
     @Excel(name = " 骞撮緞 ")
     @ApiModelProperty(value = "骞撮緞")
     private Long age;
-
-    /**
-     * 骞撮緞
-     */
-    @Excel(name = " 鍑洪櫌鐥呬汉璁板綍ID ")
-    @ApiModelProperty(value = "鍑洪櫌鐥呬汉璁板綍ID")
-    private Long inhospid;
 
     /**
      * 韬唤璇佸彿
@@ -140,19 +151,16 @@
     /**
      * 浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)
      */
-    @Excel(name = "浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)")
-    @ApiModelProperty(value = "浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)")
+    @Excel(name = "浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶锛堥殢璁匡級  2锛岄棶鍗凤紱3锛岄�氱煡锛堝鏁欙級")
+    @ApiModelProperty(value = "浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶锛堥殢璁匡級  2锛岄棶鍗凤紱3锛屽鏁欙紱 4.閫氱煡)")
     private String type;
 
     /**
-     * 浠诲姟ID
+     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)
      */
-    @Excel(name = " 浠诲姟ID ")
-    @ApiModelProperty(value = "浠诲姟ID")
-    private Long taskid;
-
-    @ApiModelProperty(value = "浠诲姟Id闆嗗悎")
-    private List<Long> taskIds;
+    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿 16璇鹃闅忚")
+    @ApiModelProperty(value = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿  16璇鹃闅忚")
+    private String serviceType;
 
     /**
      * 妯℃澘ID
@@ -162,52 +170,18 @@
     private Long templateid;
 
     /**
-     * 妯℃澘ID
-     */
-    @Excel(name = "  妯$増搴撴ā鏉縄D")
-    @ApiModelProperty(value = "妯$増搴撴ā鏉縄D")
-    private Long libtemplateid;
-
-    /**
-     * 妯℃澘ID
-     */
-    @Excel(name = "  妯℃澘搴撴ā鏉垮悕绉�")
-    @ApiModelProperty(value = "妯℃澘搴撴ā鏉垮悕绉�")
-    private String libtemplatename;
-
-    /**
      * 妯℃澘鍚�
      */
     @Excel(name = " 妯℃澘鍚� ")
-    @ApiModelProperty(value = "妯℃澘鍚�")
+    @ApiModelProperty(value = "鎷夊彇鏃堕棿")
     private String templatename;
 
     /**
-     * 鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦��
+     * 鍙戝鐞嗘剰瑙侊細1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫閫乁UID
      */
-    @ApiModelProperty(value = "鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鍗冲埢鍙戦��")
-    private String sendType;
-
-    /**
-     * 鍑洪櫌鏃堕棿
-     */
-    @ApiModelProperty(value = "鍑洪櫌鏃堕棿")
-    private Date inhosptime;
-
-    /**
-     * 鍖荤敓缂栫爜
-     */
-    @Excel(name = "  鍖荤敓缂栫爜")
-    @ApiModelProperty(value = "鍖荤敓缂栫爜")
-    private String drcode;
-
-    /**
-     * 鍖荤敓濮撳悕
-     */
-    @Excel(name = "  鍖荤敓濮撳悕")
-    @ApiModelProperty(value = "鍖荤敓濮撳悕")
-    private String drname;
-
+    @Excel(name = " 澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫 ")
+    @ApiModelProperty(value = "澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫")
+    private String suggest;
 
     /**
      * 鍙戦�佹棩鏈�
@@ -216,6 +190,14 @@
     @Excel(name = " 鍙戦�佹棩鏈� ", width = 30, dateFormat = "yyyy-MM-dd")
     @ApiModelProperty(value = "鍙戦�佹棩鏈�")
     private Date senddate;
+
+    /**
+     * 鏂扮殑鍒涘缓鏃堕棿锛堢敤鏉ュ仛鏌ヨ鍙傛暟鐢級
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = " 鍙戦�佹棩鏈� ", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty(value = "鏂扮殑鍒涘缓鏃堕棿")
+    private Date createTimeNew;
 
     /**
      * 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒�
@@ -262,33 +244,37 @@
     /**
      * 鍙戦�佺姸鎬�
      */
-    @Excel(name = " 鍙戦�佺姸鎬� ")
+//    @Excel(name = " 鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴怽") ")
     @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴�")
     private Long sendstate;
 
     /**
-     * 鍙戦�佺姸鎬�
+     * 鏆傚仠鐘� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1
      */
-    @Excel(name = " 鍙戦�佺姸鎬侀泦鍚� ")
-    @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴�")
-    private List<Long> sendstates;
+//    @Excel(name = " 鏆傚仠鐘� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1 ")
+    @ApiModelProperty(value = "鏆傚仠鐘� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1")
+    private Long stopState;
 
+    /**
+     * 鍙戦�乁UID
+     */
+//    @Excel(name = " 鍙戦�乁UID ")
+    @ApiModelProperty(value = "鍙戦�乁UID")
+    private String senduuid;
 
     /**
      * 缁撴灉
      */
-    @Excel(name = " 缁撴灉 ")
+//    @Excel(name = " 缁撴灉 ")
     @ApiModelProperty(value = "缁撴灉")
     private String result;
 
     /**
      * 瀹屾垚鏃堕棿
      */
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = " 瀹屾垚鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "瀹屾垚鏃堕棿")
     private Date finishtime;
-
 
     /**
      * 灏辫瘖璁板綍缂栧彿
@@ -296,7 +282,6 @@
     @Excel(name = " 灏辫瘖璁板綍缂栧彿 ")
     @ApiModelProperty(value = "灏辫瘖璁板綍缂栧彿")
     private Long recordid;
-
 
     /**
      * 褰撳墠閲嶆嫧娆℃暟
@@ -314,31 +299,25 @@
     private Date pulltime;
 
     /**
-     *
-     */
-    @Excel(name = " bqsms ")
-    @ApiModelProperty(value = "bqsms")
-    private Long bqsms;
-
-    /**
-     * bhsms
-     */
-    @Excel(name = " bhsms ")
-    @ApiModelProperty(value = "bhsms")
-    private Long bhsms;
-
-    /**
      * 閮ㄩ棬code
      */
     @Excel(name = "  閮ㄩ棬code")
     @ApiModelProperty(value = "閮ㄩ棬code")
     private String deptcode;
+
     /**
-     * 閮ㄩ棬code
+     * 鍖荤敓缂栫爜
      */
-    @Excel(name = "  閮ㄩ棬code")
-    @ApiModelProperty(value = "閮ㄩ棬code闆嗗悎")
-    private List<String> leaveldeptcodes;
+    @Excel(name = "  鍖荤敓缂栫爜")
+    @ApiModelProperty(value = "鍖荤敓缂栫爜")
+    private String drcode;
+
+    /**
+     * 鍖荤敓濮撳悕
+     */
+    @Excel(name = "  鍖荤敓濮撳悕")
+    @ApiModelProperty(value = "鍖荤敓濮撳悕")
+    private String drname;
 
     /**
      * 鏍囩鐘舵��
@@ -361,34 +340,6 @@
     private Long isupload;
 
     /**
-     * 鎮h�匢D
-     */
-    @Excel(name = "鎮h�匢D")
-    @ApiModelProperty(value = "鎮h�匢D")
-    private String patientid;
-
-    /**
-     * 鎮h�呭鍚�
-     */
-    @Excel(name = "鎮h�呭鍚�")
-    @ApiModelProperty(value = "鎮h�呭鍚�")
-    private String patientname;
-
-    /**
-     * 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿
-     */
-    @Excel(name = " 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿")
-    @ApiModelProperty(value = "闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿")
-    private Date longSendTime;
-
-    /**
-     * openid
-     */
-    @Excel(name = "openid")
-    @ApiModelProperty(value = "openid")
-    private String openid;
-
-    /**
      * 涓婁紶鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
@@ -404,67 +355,53 @@
     private String orgid;
 
     /**
-     * 鐖禝D
-     */
-    @Excel(name = "鐖禝D")
-    @ApiModelProperty(value = "鐖禝D")
-    private Long pid;
-
-    /**
-     * GUID
-     */
-    @Excel(name = "GUID")
-    @ApiModelProperty(value = "GUID")
-    private String guid;
-
-    /**
-     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎
-     */
-    @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
-    private Integer isoperation;
-
-    /**
      * 鏂囨湰鍙橀噺鍙傛暟
      */
     @Excel(name = "鏂囨湰鍙橀噺鍙傛暟")
     @ApiModelProperty(value = "鏂囨湰鍙橀噺鍙傛暟")
-    private Map<String, Map<String, String>> textParam;
-
+    private String textParam;
 
     /**
-     * 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚�
+     * 瀹f暀褰㈠紡 : 1,鐭俊銆�2,绾夸笅銆�3,璇煶銆�4,瑙嗛銆�5,绾歌川  6.閾炬帴  7.閽夐拤   8.寰俊
      */
-    @Excel(name = " 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚�")
-    @ApiModelProperty(value = "瀹f暀褰㈠紡 : 1,鏂囨湰銆�2,鍥剧墖銆�3,璇煶銆�4,瑙嗛銆�5,娣峰悎")
+    @Excel(name = " 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤")
+    @ApiModelProperty("瀹f暀褰㈠紡 : 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤")
     private String preachform;
 
     /**
      * 褰撳墠鍙戦�佹柟寮�
      */
     @Excel(name = " 褰撳墠鍙戦�佹柟寮�")
-    @ApiModelProperty(value = "褰撳墠鍙戦�佹柟寮�")
+    @ApiModelProperty("褰撳墠鍙戦�佹柟寮�")
     private String currentPreachform;
-
 
     /**
      * 搴婂彿
      */
     @Excel(name = "搴婂彿")
     @ApiModelProperty(value = "搴婂彿")
-    private Long bedNo;
+    private String bedNo;
 
     /**
-     * 鎮h�匢D
+     * pageNum
      */
-    @Excel(name = "  鎮h�匢D")
-    @ApiModelProperty(value = "鎮h�匢D")
-    private Long patid;
+    @Excel(name = "pageNum")
+    @ApiModelProperty(value = "pageNum")
+    private Integer pageNum;
 
     /**
-     * 鍙戦�佹椂闂存
+     * pageSize
      */
-    @ApiModelProperty(value = "鍙戦�佹椂闂存 ")
-    private List<TaskSendTimeVO> sendTimeslot;
+    @Excel(name = "pageSize")
+    @ApiModelProperty(value = "pageSize")
+    private Integer pageSize;
+
+
+    /**
+     * 鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦��
+     */
+    @ApiModelProperty(value = "鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦��")
+    private String sendType;
 
     /**
      * 浠诲姟鍚嶇О
@@ -495,7 +432,6 @@
     @ApiModelProperty(value = "闅忚浜虹紪鍙�")
     private String operatorNo;
 
-
     /**
      * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�
      */
@@ -506,9 +442,10 @@
     /**
      * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛�
      */
-    @Excel(name = "  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌   3.涓撶梾锛�")
-    @ApiModelProperty(value = "灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌   3.涓撶梾锛�")
+    @Excel(name = "  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛�")
+    @ApiModelProperty(value = "灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌 3.涓撶梾 4.澶栭儴瀵煎叆 5鎬ヨ瘖銆�5浣忛櫌銆�7浣撴锛�")
     private String hospType;
+
 
     /**
      * 寰俊
@@ -517,13 +454,32 @@
     @ApiModelProperty(value = "寰俊")
     private String wechat;
 
+    /**
+     * 鍑洪櫌璇婃柇缂栫爜
+     */
+    @Excel(name = "  鍑洪櫌璇婃柇缂栫爜")
+    @ApiModelProperty(value = "鍑洪櫌璇婃柇缂栫爜")
+    private String leaveicd10code;
+    /**
+     * 鍑洪櫌璇婃柇鍚嶇О
+     */
+    @Excel(name = "  鍑洪櫌璇婃柇鍚嶇О")
+    @ApiModelProperty(value = "鍑洪櫌璇婃柇鍚嶇О")
+    private String leavediagname;
 
     /**
-     * 璇婃柇鍚嶇О
+     * 鎮h�匢D
      */
-    @Excel(name = "  璇婃柇鍚嶇О")
-    @ApiModelProperty(value = "璇婃柇鍚嶇О")
-    private String diagname;
+    @Excel(name = "  鎮h�匢D")
+    @ApiModelProperty(value = "鎮h�匢D")
+    private Long patid;
+
+    /**
+     * 鎮h�匢D
+     */
+    @Excel(name = "  鎮h�匢D")
+    @ApiModelProperty(value = "鎮h�匢D")
+    private String patguid;
 
     /**
      * 绉戝鍚嶇О
@@ -531,14 +487,15 @@
     @Excel(name = "绉戝鍚嶇О")
     @ApiModelProperty(value = "绉戝鍚嶇О")
     private String deptname;
-//
-//    /**
-//     * 灏辫瘖鏃ユ湡
-//     */
-//    @Excel(name = " 灏辫瘖鏃ユ湡")
-//    @ApiModelProperty(value = "灏辫瘖鏃ユ湡")
-//    private Date admindate;
-//
+
+    /**
+     * 灏辫瘖鏃ユ湡
+     */
+    @Excel(name = " 灏辫瘖鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "灏辫瘖鏃ユ湡")
+    private Date admindate;
+
     /**
      * 鐥呮埧鍙�
      */
@@ -547,45 +504,33 @@
     private String roomno;
 
     /**
+     * 妯℃澘搴撴ā鐗圛D
+     */
+    @Excel(name = "妯℃澘搴撴ā鐗圛D")
+    @ApiModelProperty(value = "妯℃澘搴撴ā鐗圛D")
+    private Long libtemplateid;
+
+    /**
      * 鎬诲垎
      */
     @Excel(name = "鎬诲垎")
     @ApiModelProperty(value = "鎬诲垎")
-    private Long score;
+    private BigDecimal score;
+
+    /**
+     * 妯℃澘搴撴ā鐗堝悕绉�
+     */
+    @Excel(name = "妯℃澘搴撴ā鐗堝悕绉�")
+    @ApiModelProperty(value = "妯℃澘搴撴ā鐗堝悕绉�")
+    private String libtemplatename;
 
 
     /**
-     * 鏄惁鎻愪氦
+     * 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿
      */
-    @ApiModelProperty(value = "鏄惁鎻愪氦锛�0鏈彁浜�   1宸叉彁浜�")
-    private Long submit;
-
-
-    /**
-     * 鍑洪櫌鐥呭尯缂栧彿
-     */
-    @ApiModelProperty(value = "鍑洪櫌鐥呭尯缂栧彿")
-    private String leavehospitaldistrictcode;
-
-    /**
-     * 鍑洪櫌鐥呭尯缂栧彿
-     */
-    @ApiModelProperty(value = "鍑洪櫌鐥呭尯闆嗗悎")
-    private List<String> leavehospitaldistrictcodes;
-
-    /**
-     * 鍑洪櫌鐥呭尯鍚嶇О
-     */
-    @ApiModelProperty(value = "鍑洪櫌鐥呭尯鍚嶇О")
-    @Excel(name = " 鍑洪櫌鐥呭尯鍚嶇О ")
-    private String leavehospitaldistrictname;
-
-    /**
-     * 璇婃柇鍚嶇О
-     */
-    @Excel(name = "  绂婚櫌璇婃柇鍚嶇О")
-    @ApiModelProperty(value = "绂婚櫌璇婃柇鍚嶇О")
-    private String leavediagname;
+    @Excel(name = " 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿")
+    @ApiModelProperty(value = "闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿")
+    private Date longSendTime;
 
     /**
      * 璐d换鎶ゅ+缂栫爜
@@ -602,47 +547,35 @@
     private String nurseName;
 
     /**
-     * 寮傚父鏍囪瘑
+     * 鍑洪櫌鐥呭尯缂栧彿
      */
-    @ApiModelProperty(value = "寮傚父鏍囪瘑")
-    @Excel(name = " 寮傚父鏍囪瘑 ")
-    private String excep;
+    @ApiModelProperty(value = "鍑洪櫌鐥呭尯缂栧彿")
+    private String leavehospitaldistrictcode;
 
     /**
-     * 澶囨敞
+     * 鍑洪櫌鐥呭尯鍚嶇О
      */
-    @ApiModelProperty(value = "澶囨敞")
-    private String remark;
-
+    @ApiModelProperty(value = "鍑洪櫌鐥呭尯鍚嶇О")
+    @Excel(name = " 鍑洪櫌鐥呭尯鍚嶇О ")
+    private String leavehospitaldistrictname;
 
     /**
-     * 鍑洪櫌鏃堕棿
+     * 鍑洪櫌鐥呭尯缂栧彿
      */
-    @ApiModelProperty(value = "鍑洪櫌鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date endtime;
+    @ApiModelProperty(value = "鍑洪櫌鐥呭尯缂栧彿闆嗗悎")
+    private List<String> leavehospitaldistrictcodes;
 
     /**
-     * 鍏ラ櫌鏃堕棿
+     * 鍑洪櫌鐥呭尯缂栧彿
      */
-    @ApiModelProperty(value = "鍏ラ櫌鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date starttime;
+    @ApiModelProperty(value = "鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎")
+    private List<String> leaveldeptcodes;
 
+    @ApiModelProperty(value = "鍙戦�佽鎯�")
+    private List<ServiceSubtaskRecord> serviceSubtaskRecordList;
 
-    /**
-     * pageNum
-     */
-    @Excel(name = "pageNum")
-    @ApiModelProperty(value = "pageNum")
-    private Integer pageNum;
-
-    /**
-     * pageSize
-     */
-    @Excel(name = "pageSize")
-    @ApiModelProperty(value = "pageSize")
-    private Integer pageSize;
+    @ApiModelProperty(value = "url")
+    private String url;
 
     /**
      * 鎮h�呮潵婧�
@@ -651,65 +584,22 @@
     private String patfrom;
 
     /**
-     * 缁忕鍖荤敓缂栫爜
+     * 闅忚娆℃暟
      */
-    @ApiModelProperty(value = "缁忕鍖荤敓缂栫爜")
-    private String managementDoctorCode;
+    @ApiModelProperty(value = "闅忚娆℃暟")
+    private Integer visitCount;
 
     /**
-     * 缁忕鍖荤敓
+     * 澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡
      */
-    @ApiModelProperty(value = "缁忕鍖荤敓")
-    private String managementDoctor;
+    @ApiModelProperty(value = "澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡")
+    private Integer visitNotice;
 
     /**
-     * 寮�濮嬪嚭闄㈡棩鏈�
+     * 鏄惁鍦ㄦ闅忚锛�1鍚�    2鏄�
      */
-    @ApiModelProperty(value = "寮�濮嬪嚭闄㈡棩鏈�")
-    private Date startOutHospTime;
-
-    /**
-     * 寮�濮嬪彂閫佹棩鏈�
-     */
-    @ApiModelProperty(value = "寮�濮嬪彂閫佹棩鏈�")
-    private Date startSendDateTime;
-
-    /**
-     * 缁撴潫鍙戦�佹棩鏈�
-     */
-    @ApiModelProperty(value = "缁撴潫鍙戦�佹棩鏈�")
-    private Date endSendDateTime;
-
-    /**
-     * 缁撴潫鍑洪櫌鏃ユ湡
-     */
-    @ApiModelProperty(value = "缁撴潫鍑洪櫌鏃ユ湡")
-    private Date endOutHospTime;
-
-    /**
-     * 绉戝涓庣梾鍖虹殑鏌ヨ鏄痮r杩樻槸and:   1:and(榛樿)     2:or
-     */
-    @ApiModelProperty(value = "绉戝涓庣梾鍖虹殑鏌ヨ鏄痮r杩樻槸and:   1:and(榛樿)     2:or  ")
-    private String deptOrDistrict = "1";
-
-    /**
-     * 鍒涘缓寮�濮嬫椂闂�
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createStartTime;
-
-    /**
-     * 鍒涘缓缁撴潫鏃堕棿
-     */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createEndTime;
-
-    /**
-     * 鎺掑簭锛堬級
-     */
-    @ApiModelProperty(value = "鎺掑簭锛�0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭) ")
-    private Integer sort;
-
+    @ApiModelProperty(value = "鏄惁鍦ㄦ闅忚锛�1鏄�    2鍚�")
+    private Integer isVisitAgain;
 
     /**
      * 鎮h�呬笂娆¢殢璁跨殑subId
@@ -718,6 +608,7 @@
     private Integer upid;
 
     @ApiModelProperty(value = "闅忚鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date visitTime;
 
     /**
@@ -726,32 +617,54 @@
     @ApiModelProperty(value = "闅忚鏂瑰紡")
     private String visitType;
 
+
     @ApiModelProperty(value = "闅忚閮ㄩ棬缂栫爜")
     private String visitDeptCode;
 
     @ApiModelProperty(value = "闅忚閮ㄩ棬鍚嶇О")
     private String visitDeptName;
 
-    @ApiModelProperty(value = "寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊;3宸插鐞�")
-    private Integer isabnormal;
-
     @ApiModelProperty(value = "闅忚閮ㄩ棬缂栫爜闆嗗悎")
     private List<String> visitDeptCodes;
 
     /**
-     * 鍒嗙粍key
+     * pageNum
      */
-    @ApiModelProperty(value = "鍒嗙粍key")
-    private String groupKey;
-    /**
-     * 鍒嗙粍code闆嗗悎
-     */
-    @ApiModelProperty(value = "鍒嗙粍code闆嗗悎")
-    private List<String> groupKeyList;
+    @Excel(name = "pn")
+    @ApiModelProperty(value = "pn")
+    private Integer pn;
 
-//    /**
-//     * 鏃ユ湡闄愬埗 鐩墠鐢卞墠绔帶鍒�
-//     */
-//    @ApiModelProperty(value = "鏃ユ湡闄愬埗锛�0鍏ㄩ儴鏈嶅姟    1鎴褰撳墠鏃ユ湡")
-//    private String dateLimit;
+    /**
+     * pageSize
+     */
+    @Excel(name = "ps")
+    @ApiModelProperty(value = "ps")
+    private Integer ps;
+
+    @ApiModelProperty(value = "缁忕鍖荤敓缂栫爜")
+    private String managementDoctorCode;
+
+    @ApiModelProperty(value = "缁忕鍖荤敓")
+    private String managementDoctor;
+
+    @ApiModelProperty(value = "闅忚鎯呭喌:1姝e父璇煶,2鎮h�呮嫆鎺ユ垨鎷掕,3闈㈣鎴栬�呮帴璇�,4寰俊闅忚,5闅忚鐢佃瘽涓嶆纭�,6琚繃婊�,7鍏跺畠")
+    private Integer taskSituation;
+
+    @ApiModelProperty(value = "寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊; 3宸插鐞�")
+    private Integer isabnormal;
+
+    @ApiModelProperty(value = "缁х画鏍囪瘑")
+    private Integer continueFlag;
+
+    @ApiModelProperty(value = "缁х画鏃堕棿鐜板湪")
+    private Date continueTimeNow;
+
+    @ApiModelProperty(value = "缁х画鍐呭")
+    private JSONObject continueContent;
+
+    @ApiModelProperty(value = "缁х画娆℃暟")
+    private Integer continueCount;
+
+    @ApiModelProperty(value = "缁х画鏃堕棿涓嬫")
+    private Date continueTimeNext;
 }
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java b/smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskVO.java
similarity index 96%
rename from smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
rename to smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskVO.java
index 912f1ac..bbe67dc 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
+++ b/smartor/src/main/java/com/smartor/domain/VO/ServiceSubtaskVO.java
@@ -1,8 +1,10 @@
-package com.smartor.domain;
+package com.smartor.domain.VO;
 
+import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
+import com.smartor.domain.TaskSendTimeVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,7 +19,8 @@
  * @author ruoyi
  * @date 2024-02-02
  */
-@ApiModel(value = "ServiceSubtaskVO", description = "鍗曚竴闅忚浠诲姟鍏ュ弬")
+
+@ApiModel(value = "ServiceSubtaskEntity", description = "鍗曚竴闅忚浠诲姟鍏ュ弬")
 @Data
 public class ServiceSubtaskVO extends BaseEntity {
     private static final long serialVersionUID = 1L;
@@ -743,6 +746,22 @@
      */
     @ApiModelProperty(value = "鍒嗙粍key")
     private String groupKey;
+
+    @ApiModelProperty(value = "缁х画鏍囪瘑")
+    private Integer continueFlag;
+
+    @ApiModelProperty(value = "缁х画鏃堕棿鐜板湪")
+    private Date continueTimeNow;
+
+    @ApiModelProperty(value = "缁х画鍐呭")
+    private JSONObject continueContent;
+
+    @ApiModelProperty(value = "缁х画娆℃暟")
+    private Integer continueCount;
+
+    @ApiModelProperty(value = "缁х画鏃堕棿涓嬫")
+    private Date continueTimeNext;
+
     /**
      * 鍒嗙粍code闆嗗悎
      */
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java b/smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
similarity index 95%
copy from smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
copy to smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
index 912f1ac..8ccf853 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
+++ b/smartor/src/main/java/com/smartor/domain/entity/ServiceSubtaskEntity.java
@@ -1,8 +1,9 @@
-package com.smartor.domain;
+package com.smartor.domain.entity;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
+import com.smartor.domain.TaskSendTimeVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -17,9 +18,10 @@
  * @author ruoyi
  * @date 2024-02-02
  */
-@ApiModel(value = "ServiceSubtaskVO", description = "鍗曚竴闅忚浠诲姟鍏ュ弬")
+
+@ApiModel(value = "ServiceSubtaskEntity", description = "鍗曚竴闅忚浠诲姟鍏ュ弬")
 @Data
-public class ServiceSubtaskVO extends BaseEntity {
+public class ServiceSubtaskEntity extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
     /**
@@ -743,6 +745,22 @@
      */
     @ApiModelProperty(value = "鍒嗙粍key")
     private String groupKey;
+
+    @ApiModelProperty(value = "缁х画鏍囪瘑")
+    private Integer continueFlag;
+
+    @ApiModelProperty(value = "缁х画鏃堕棿鐜板湪")
+    private Date continueTimeNow;
+
+    @ApiModelProperty(value = "缁х画鍐呭")
+    private String continueContent;
+
+    @ApiModelProperty(value = "缁х画娆℃暟")
+    private Integer continueCount;
+
+    @ApiModelProperty(value = "缁х画鏃堕棿涓嬫")
+    private Date continueTimeNext;
+
     /**
      * 鍒嗙粍code闆嗗悎
      */
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
index 6d3b69c..cc20b7e 100644
--- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -1,6 +1,7 @@
 package com.smartor.mapper;
 
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -30,24 +31,24 @@
      * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級
      * @return 鍗曚竴浠诲姟锛堥殢璁匡級闆嗗悎
      */
-    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);
+    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskEntity serviceSubtaskVO);
 
     /**
      * 鐢ㄤ簬琛ュ伩鏌ヨ
-     * @param serviceSubtaskVO
+     * @param ServiceSubtaskEntity
      * @return
      */
-    public List<ServiceSubtask> getCompensateServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);
+    public List<ServiceSubtask> getCompensateServiceSubtaskList(ServiceSubtaskEntity serviceSubtaskVO);
 
     public List<ServiceSubtask> selectServiceSubtaskByDiagname(ServiceSubtask serviceSubtask);
 
-    public List<ServiceSubtask> queryServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);
+    public List<ServiceSubtask> queryServiceSubtaskList(ServiceSubtaskEntity serviceSubtaskVO);
 
-    public List<ServiceSubtask> selectServiceSubtaskBySendstate(ServiceSubtaskVO serviceSubtaskVO);
+    public List<ServiceSubtask> selectServiceSubtaskBySendstate(ServiceSubtaskEntity serviceSubtaskVO);
 
-    public List<ServiceSubtask> selectServiceSubtaskListByCreateTime(ServiceSubtaskVO serviceSubtaskVO);
+    public List<ServiceSubtask> selectServiceSubtaskListByCreateTime(ServiceSubtaskEntity serviceSubtaskVO);
 
-    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO);
+    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskEntity serviceSubtaskVO);
 
     public List<Integer> selectSendstateByCondition(ServiceSubtask serviceSubtask);
 
@@ -74,7 +75,7 @@
      * @return
      */
     @MapKey("groupKey")
-    public Map<String, Map<String,Object>> selectTimelyRateBatch(ServiceSubtaskVO ServiceSubtaskvo);
+    public Map<String, Map<String,Object>> selectTimelyRateBatch(ServiceSubtaskEntity ServiceSubtaskvo);
     /**
      * 闅忚鍙婃椂鐜囪鎯�
      *
@@ -163,6 +164,6 @@
      *         blq: 涓嶇悊鐫暟閲�
      *         yc: 寮傚父鏁伴噺
      */
-    public Map<String, Object> countByCondition(ServiceSubtaskVO serviceSubtaskVO);
+    public Map<String, Object> countByCondition(ServiceSubtaskEntity serviceSubtaskVO);
 
 }
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
index 4a55058..68443df 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.entity.ServiceSubtaskEntity;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
@@ -31,9 +32,9 @@
      * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級
      * @return 鍗曚竴浠诲姟锛堥殢璁匡級闆嗗悎
      */
-    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);
+    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskEntity serviceSubtaskVO);
 
-    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO);
+    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskEntity serviceSubtaskVO);
 
     /**
      * 鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅
@@ -46,11 +47,11 @@
     /**
      * 鏌ヨ鎮h�呴殢璁夸俊鎭�
      */
-    public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO);
+    public List<ServiceSubtaskRes> patItem(ServiceSubtaskEntity serviceSubtaskEntity);
 
-    public List<ServiceSubtask> patItem2(ServiceSubtaskVO serviceSubtaskVO);
+    public List<ServiceSubtask> patItem2(ServiceSubtaskEntity serviceSubtaskEntity);
 
-    public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO);
+    public Map<String, Object> patItemCount(ServiceSubtaskEntity serviceSubtaskEntity);
 
     /**
      * 鏂板鍗曚竴浠诲姟锛堥殢璁匡級
diff --git a/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
index 5abb4e2..0ce8c04 100644
--- a/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
@@ -8,6 +8,7 @@
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.ServiceSubtaskMapper;
 import com.smartor.service.CommonTaskService;
 import com.smartor.service.IServiceTaskService;
@@ -73,7 +74,7 @@
             serviceTask.setSendState(sendTaskVO.getSendState());
             int i = ivrTaskService.updateServiceTask(serviceTask);
             //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
-            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
             serviceSubtaskVO.setTaskid(serviceTask.getTaskid());
             serviceSubtaskVO.setSendstate(2L);
             List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
@@ -175,7 +176,7 @@
             serviceTask.setSendState(sendTaskVO.getSendState());
             int i = iServiceTaskService.updateServiceTask(serviceTask);
             //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
-            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
             serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
             serviceSubtaskVO.setSendstate(2L);
             List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
@@ -281,7 +282,7 @@
             serviceTask.setSendState(sendTaskVO.getSendState());
             iServiceTaskService.updateServiceTask(serviceTask);
             //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
-            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
             serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
             serviceSubtaskVO.setSendstate(2L);
             List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
@@ -404,7 +405,7 @@
     private void updateServiceSubtask(Long taskId, Date date) {
         log.info("-------777杩涙潵浜嗗悧?{}",taskId);
         //鍙杩涘叆闃熷垪灏辩畻寰呭彂閫�
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setTaskid(taskId);
         serviceSubtaskVO.setSendstate(1L);
         List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
index f9a5cb8..9a0e2cf 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
@@ -7,6 +7,7 @@
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import com.smartor.service.IPatArchiveService;
 import com.smartor.service.IPatMedInhospService;
@@ -160,7 +161,7 @@
             patArchiveMapper.updatePatArchive(patArchive);
             if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
                 //涓嶉渶瑕佹湇鍔′簡锛岄渶瑕侀�氳繃patid鍜宻endstate=2鎴栬�卻endstate=1鍘绘煡璇竴涓嬶紝service_subtask閲屾槸鍚︽湁姝e湪鎵ц鐨勪换鍔★紝鏈夌殑璇濓紝绔嬪嵆鍋滀簡
-                ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+                ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
                 serviceSubtaskVO.setPatid(patArchive.getId());
                 serviceSubtaskVO.setSendstate(2L);
                 List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatFilterlistServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatFilterlistServiceImpl.java
index 5257579..cda7e2d 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatFilterlistServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatFilterlistServiceImpl.java
@@ -3,7 +3,7 @@
 import com.ruoyi.common.utils.DateUtils;
 import com.smartor.domain.PatFilterlist;
 import com.smartor.domain.ServiceSubtask;
-import com.smartor.domain.ServiceSubtaskVO;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.PatFilterlistMapper;
 import com.smartor.mapper.ServiceSubtaskMapper;
 import com.smartor.service.IPatFilterlistService;
@@ -59,7 +59,7 @@
     @Override
     public int insertPatFilterlist(PatFilterlist patFilterlist) {
         //鍏堟煡璇竴涓嬶紝璇ユ偅鑰呮槸鍚︽湁鎵ц鐨勪换鍔★紝濡傛灉鏈夌殑璇濓紝灏嗕换鍔℃殏鍋�
-        ServiceSubtaskVO serviceSubtask = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity();
         serviceSubtask.setPatid(patFilterlist.getPatid());
         serviceSubtask.setDelFlag("0");
         List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask);
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 509e42b..a6bc74a 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -9,6 +9,7 @@
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import com.smartor.service.IPatMedInhospService;
 import lombok.extern.slf4j.Slf4j;
@@ -752,7 +753,7 @@
             //鍏堝垽鏂竴涓嬶紝鏄惁闇�瑕佹牎楠�
             if (check && (Objects.isNull(serviceSubtask.getTaskSituation()) || serviceSubtask.getTaskSituation() != 6)) {
                 //鍦ㄦ柊澧炰箣鍓嶏紝鍏堥�氳繃鎮h�匢D锛宻endstate=2鏌ヨ涓�涓嬶紝鍦ㄦ墍鏈夐暱鏈熶换鍔′腑锛屾槸涓嶆槸杩樻湁璇ユ偅鑰呭緟鎵ц鐨勪换鍔★紝鏈夌殑璇�,姣旇緝涔嬪墠鐨別ndtime鏄惁灏忎簬褰撳墠鐨別ndtaime,濡傛灉涔嬪墠鐨勫皬浜庣幇鍦ㄧ殑锛屽垯鐩存帴灏嗕箣鍓嶇殑鍋滄帀锛堝師鍥犲啀鍏ラ櫌锛�
-                ServiceSubtaskVO subtask = new ServiceSubtaskVO();
+                ServiceSubtaskEntity subtask = new ServiceSubtaskEntity();
                 subtask.setPatid(patArchive.getId());
                 subtask.setSendstate(2L);
                 subtask.setTaskid(taskid);
@@ -1049,7 +1050,7 @@
         for (PatMedInhosp patMedInhosp1 : patMedInhospList) {
             try {
                 //鑾峰彇褰撳墠鍏ラ櫌鎮h�呯殑寰呮墽琛岀殑鍑洪櫌瀛愪换鍔¢殢璁夸俊鎭�
-                ServiceSubtaskVO subtask = new ServiceSubtaskVO();
+                ServiceSubtaskEntity subtask = new ServiceSubtaskEntity();
                 subtask.setPatid(patMedInhosp1.getPatid());
                 subtask.setSendstate(2L);
                 List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask);
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 473c457..1095668 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -13,6 +13,7 @@
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -88,7 +89,7 @@
                     patMedOuthosp1.setTelcode(patArchive.getTelcode());
                     patMedOuthosp1.setIdcardno(patArchive.getIdcardno());
                 }
-                ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+                ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
                 serviceSubtaskVO.setPatid(patMedOuthosp1.getPatid());
                 List<Long> sendstates = new ArrayList<>();
                 sendstates.add(1L);
@@ -303,7 +304,7 @@
         //鍏堝垽鏂竴涓嬶紝鏄惁闇�瑕佹牎楠�
         if (check) {
             //鍦ㄦ柊澧炰箣鍓嶏紝鍏堥�氳繃鎮h�匢D锛宻endstate=2鏌ヨ涓�涓嬶紝鍦ㄦ墍鏈夐暱鏈熶换鍔′腑锛屾槸涓嶆槸杩樻湁璇ユ偅鑰呭緟鎵ц鐨勪换鍔★紝鏈夌殑璇�,姣旇緝涔嬪墠鐨別ndtime鏄惁灏忎簬褰撳墠鐨別ndtaime,濡傛灉涔嬪墠鐨勫皬浜庣幇鍦ㄧ殑锛屽垯鐩存帴灏嗕箣鍓嶇殑鍋滄帀锛堝師鍥犲啀鍏ラ櫌锛�
-            ServiceSubtaskVO subtask = new ServiceSubtaskVO();
+            ServiceSubtaskEntity subtask = new ServiceSubtaskEntity();
             subtask.setPatid(patArchive.getId());
             subtask.setSendstate(2L);
             subtask.setTaskid(taskid);
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
index e8e0b1b..3882848 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java
@@ -10,6 +10,7 @@
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import com.smartor.service.IServiceExternalService;
 import lombok.extern.slf4j.Slf4j;
@@ -824,7 +825,7 @@
             int i = patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);
 
             //鍙栨秷鍑洪櫌锛屽氨涓嶉渶瑕佹湇鍔′簡锛岄渶瑕侀�氳繃patid鍜宻endstate=2鎴栬�卻endstate=1鍘绘煡璇竴涓嬶紝service_subtask閲屾槸鍚︽湁姝e湪鎵ц鐨勪换鍔★紝鏈夌殑璇濓紝绔嬪嵆鍋滀簡
-            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
             serviceSubtaskVO.setPatid(patMedInhosp1.getPatid());
             serviceSubtaskVO.setSendstate(2L);
             List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
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 1d3a0a4..2ae5675 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -10,6 +10,7 @@
 import com.ruoyi.common.core.domain.entity.SysUserRole;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.http.HttpUtils;
+import com.smartor.common.DistinctByProperty;
 import com.smartor.domain.*;
 import com.smartor.mapper.*;
 import com.smartor.service.IPatArchiveService;
@@ -30,6 +31,8 @@
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -484,7 +487,7 @@
 
     private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {
         List<PatMedOuthosp> batchList = new ArrayList<>();
-        
+
         for (ServiceSLTDInhospResDTO dto : resultList) {
             if (Objects.isNull(dto)) {
                 continue;
@@ -493,12 +496,15 @@
             PatMedOuthosp patMedOuthosp = buildPatMedOuthosp(dto, patArchive);
             batchList.add(patMedOuthosp);
         }
-        
+
         // 鎵归噺鎻掑叆锛岃嚜鍔ㄥ拷鐣ラ噸澶�
         if (CollectionUtils.isNotEmpty(batchList)) {
             try {
+                //杩欓噷鐢ㄨ嚜鍔ㄥ拷鐣ラ噸澶嶄細鏈夐棶棰橈紝濡傛灉琛ㄩ噸鏂板缓锛宻erialnum绱㈠紩浼氫涪澶便�傚氨鏃犳硶鍘婚噸锛屾墍浠ヨ繕鏄渶瑕佸唴瀛橀噷鍘婚噸
+                batchList = DistinctByProperty.distinctByProperty(batchList, PatMedOuthosp::getSerialnum);
                 int insertCount = patMedOuthospMapper.batchInsertIgnore(batchList);
                 log.info("鎵归噺鎻掑叆闂ㄦ�ヨ瘖璁板綍锛屾�绘暟锛歿}, 瀹為檯鎻掑叆锛歿}", batchList.size(), insertCount);
+
             } catch (Exception e) {
                 log.error("鎵归噺鎻掑叆闂ㄦ�ヨ瘖璁板綍澶辫触", e);
                 // 闄嶇骇涓洪�愭潯鎻掑叆
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 4b0e5c3..302bb8b 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -9,6 +9,7 @@
 import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.StringUtils;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import com.smartor.service.IServiceSubtaskAnswerService;
 import com.smartor.service.IServiceTaskService;
@@ -272,7 +273,7 @@
             redisCache.deleteObject(key);
 
             //鏌ヨ鍑鸿浠诲姟涓鍦ㄦ墽琛岀殑鎮h�呬俊鎭�
-            ServiceSubtaskVO ssVO = new ServiceSubtaskVO();
+            ServiceSubtaskEntity ssVO = new ServiceSubtaskEntity();
             ssVO.setTaskid(tid);
             ssVO.setPatid(pid);
 //            ssVO.setSendstate(3L);
@@ -540,7 +541,7 @@
                 subId = Long.valueOf(serviceSubTaskCacheReq.getParam6());
 
         }
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setTaskid(tid);
         serviceSubtaskVO.setPatid(pid);
         serviceSubtaskVO.setSubId(subId);
@@ -645,7 +646,7 @@
 
     private Map<String, String> setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid) {
         log.error("-----svyTaskTemplateScriptVO鐨勫�间负锛歿}", svyTaskTemplateScriptVO);
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setTaskid(taskid);
         serviceSubtaskVO.setPatid(patid);
         List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
@@ -799,7 +800,7 @@
     }
 
     private Map<String, String> setSFInfo(IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, Long taskid, Long patid) {
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setTaskid(taskid);
         serviceSubtaskVO.setPatid(patid);
         List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
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 5842e9d..44461fa 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -1,5 +1,6 @@
 package com.smartor.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson2.JSON;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
@@ -12,6 +13,7 @@
 import com.smartor.common.FtpService;
 import com.smartor.config.PhoneUtils;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import com.smartor.service.*;
 import com.sun.org.apache.bcel.internal.generic.NEW;
@@ -167,27 +169,27 @@
     /**
      * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級鍒楄〃
      *
-     * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級
+     * @param serviceSubtaskEntity 鍗曚竴浠诲姟锛堥殢璁匡級
      * @return 鍗曚竴浠诲姟锛堥殢璁匡級
      */
     @Override
-    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO) {
-        return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskEntity serviceSubtaskEntity) {
+        return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity);
     }
 
-    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO) {
-        return serviceSubtaskMapper.selectServiceSubtaskListAgain(serviceSubtaskVO);
+    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskEntity serviceSubtaskEntity) {
+        return serviceSubtaskMapper.selectServiceSubtaskListAgain(serviceSubtaskEntity);
     }
 
     @Override
     public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {
         //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚�
         List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
-        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);
+        ServiceSubtaskEntity serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskEntity.class);
         List<ServiceSubtask> list = selectServiceSubtaskList(serviceSubtaskVO);
 
         ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-        if(ObjectUtils.isEmpty(serviceTask)){
+        if (ObjectUtils.isEmpty(serviceTask)) {
             log.error("鎵句笉鍒板搴旂殑serviceTask, orgid锛歿}, taskid: {}", serviceSubtask.getOrgid(), serviceSubtask.getTaskid());
             return null;
         }
@@ -231,8 +233,7 @@
         } catch (JsonProcessingException e) {
             e.printStackTrace();
         }
-        List<ServiceSubtaskPreachform> serviceSubtaskPreachformLists =
-                    serviceSubtaskPreachformMapper.selectBySubtask(serviceSubtask);
+        List<ServiceSubtaskPreachform> serviceSubtaskPreachformLists = serviceSubtaskPreachformMapper.selectBySubtask(serviceSubtask);
         for (ServiceSubtask serviceSubtask1 : list) {
             PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
             if (!serviceSubtask1.getHospType().equals("2")) {
@@ -289,9 +290,7 @@
             }
 
             //鑾峰彇璇ユ偅鑰呮墍鏈夌殑鎵ц鐘舵��
-            List<ServiceSubtaskPreachform> serviceSubtaskPreachformList =
-                serviceSubtaskPreachformLists.stream().filter((item -> item.getSubid().equals(serviceSubtask1.getId())
-                            && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
+            List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream().filter((item -> item.getSubid().equals(serviceSubtask1.getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
             List<Map<String, Object>> resultList = serviceSubtaskPreachformList.stream().map(item -> {
                 Map<String, Object> map = new HashMap<>();
                 map.put("sort", item.getSort());
@@ -310,17 +309,23 @@
     }
 
     @Override
-    public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) {
-        List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
-        return selectServiceSubtaskList;
+    public List<ServiceSubtaskRes> patItem(ServiceSubtaskEntity serviceSubtaskEntity) {
+        List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskEntity);
+
+        List<ServiceSubtaskRes> serviceSubtaskResList = new ArrayList<>();
+        for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+            ServiceSubtaskRes serviceSubtaskRes = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskRes.class);
+            serviceSubtaskRes.setContinueContent(JSONObject.parseObject(serviceSubtask.getContinueContent()));
+        }
+        return serviceSubtaskResList;
     }
 
     @Override
-    public List<ServiceSubtask> patItem2(ServiceSubtaskVO serviceSubtaskVO) {
+    public List<ServiceSubtask> patItem2(ServiceSubtaskEntity serviceSubtaskEntity) {
         List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();
-        for (Long sendstate : serviceSubtaskVO.getSendstates()) {
-            serviceSubtaskVO.setSendstate(sendstate);
-            List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+        for (Long sendstate : serviceSubtaskEntity.getSendstates()) {
+            serviceSubtaskEntity.setSendstate(sendstate);
+            List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity);
             serviceSubtaskList.addAll(serviceSubtasks);
         }
         return serviceSubtaskList;
@@ -370,15 +375,15 @@
      * 2. 鎬ц兘鎻愬崌 10-100 鍊嶏紙鍙栧喅浜庢暟鎹噺锛�
      * 3. 闄嶄綆鍐呭瓨鍗犵敤鍜岀綉缁滀紶杈�
      *
-     * @param serviceSubtaskVO 鏌ヨ鏉′欢
+     * @param serviceSubtaskEntity 鏌ヨ鏉′欢
      * @return 鍚勭姸鎬佺粺璁$粨鏋�
      */
     @Override
-    public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) {
+    public Map<String, Object> patItemCount(ServiceSubtaskEntity serviceSubtaskEntity) {
         // 鐩存帴璋冪敤鏁版嵁搴撶粺璁℃柟娉曪紝鍦ㄦ暟鎹簱灞傚畬鎴愯仛鍚堣绠�
-        Map<String, Object> result = serviceSubtaskMapper.countByCondition(serviceSubtaskVO);
+        Map<String, Object> result = serviceSubtaskMapper.countByCondition(serviceSubtaskEntity);
         // 澶勭悊绌哄紓甯�
-        if(MapUtils.isEmpty(result)){
+        if (MapUtils.isEmpty(result)) {
             result = new HashMap<>();
         }
         // 纭繚鎵�鏈� key 閮芥湁鍊硷紝閬垮厤绌烘寚閽堝紓甯�
@@ -424,18 +429,18 @@
 
         if (patMedInhospList.size() > 0) {
             serviceSubtask1.setIsVisitAgain(2);
-            serviceSubtask1.setRemark(serviceSubtask1.getRemark()+";鎮h�呭啀鍏ラ櫌浜�");
+            serviceSubtask1.setRemark(serviceSubtask1.getRemark() + ";鎮h�呭啀鍏ラ櫌浜�");
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
             return "鏃犻渶鍐嶆闅忚锛屾偅鑰呭啀鍏ラ櫌浜�";
         } else if (serviceSubtask1.getSendstate() == 4L) {
             serviceSubtask1.setIsVisitAgain(2);
-            serviceSubtask1.setRemark(serviceSubtask1.getRemark()+";鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц");
+            serviceSubtask1.setRemark(serviceSubtask1.getRemark() + ";鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц");
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
             return "鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц";
         } else if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
             serviceSubtask1.setIsVisitAgain(2);
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
-            serviceSubtask1.setRemark(serviceSubtask1.getRemark()+";鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟");
+            serviceSubtask1.setRemark(serviceSubtask1.getRemark() + ";鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟");
             return "鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟";
         } else if (ObjectUtils.isNotEmpty(serviceSubtask1.getIsVisitAgain()) && serviceSubtask1.getIsVisitAgain() == 2) {
             return "鏃犻渶鍐嶆闅忚锛岃浠诲姟宸茬粡鍐嶆闅忚杩囦簡";
@@ -671,6 +676,11 @@
                     serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
                     serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
+                    serviceSubtask.setContinueContent(ObjectUtils.isNotEmpty(patTaskRelevance.getContinueContent()) ? patTaskRelevance.getContinueContent().toString() : null);
+                    serviceSubtask.setContinueCount(patTaskRelevance.getContinueCount());
+                    serviceSubtask.setContinueFlag(patTaskRelevance.getContinueFlag());
+                    serviceSubtask.setContinueTimeNext(patTaskRelevance.getContinueTimeNext());
+                    serviceSubtask.setContinueTimeNow(patTaskRelevance.getContinueTimeNow());
                     serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                     serviceSubtask.setUpdateBy(serviceTask.getCreateBy());
                     serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
@@ -706,7 +716,7 @@
             //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1
             ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
             //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
-            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
             serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
             serviceSubtaskVO.setSendstate(2L);
             List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
@@ -888,6 +898,11 @@
                     serviceSubtask.setDrcode(patTaskRelevance.getDrcode());
                     serviceSubtask.setInhosptime(patTaskRelevance.getInhosptime());
                     serviceSubtask.setHospType(patTaskRelevance.getHospType());
+                    serviceSubtask.setContinueContent(ObjectUtils.isNotEmpty(patTaskRelevance.getContinueContent()) ? patTaskRelevance.getContinueContent().toString() : null);
+                    serviceSubtask.setContinueCount(patTaskRelevance.getContinueCount());
+                    serviceSubtask.setContinueFlag(patTaskRelevance.getContinueFlag());
+                    serviceSubtask.setContinueTimeNext(patTaskRelevance.getContinueTimeNext());
+                    serviceSubtask.setContinueTimeNow(patTaskRelevance.getContinueTimeNow());
                     serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
                     serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
@@ -912,7 +927,7 @@
                 }
             }
             // 鏈夊彲鑳戒細鎶婂彂閫侀『搴忎篃淇敼浜嗭紙闇�瑕佹牴鎹畉askId灏嗘墍鏈夌殑sendstate锛�=4,5,6鐨剆ubTask鎷夊嚭鏉ワ紝杩涜淇敼涓�涓嬶級
-            ServiceSubtaskVO ssVo = new ServiceSubtaskVO();
+            ServiceSubtaskEntity ssVo = new ServiceSubtaskEntity();
             ssVo.setTaskid(serviceTaskVO.getTaskid());
             ssVo.setDelFlag("0");
             List<Long> ssList = new ArrayList<>();
@@ -1699,7 +1714,7 @@
                             redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid(), count + 1, 120, TimeUnit.MINUTES);
 
                         phoneCallBackYQVO.setType("text");
-                        phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext())?ivrTaskTemplateScriptVO.getIvrtext():ivrTaskTemplateScriptVO.getScriptContent()));
+                        phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent()));
                     }
                 }
 
@@ -1999,7 +2014,7 @@
             RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
             Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam1(), pri_key));
             Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam2(), pri_key));
-            ServiceSubtaskVO ivrTaskSingle = new ServiceSubtaskVO();
+            ServiceSubtaskEntity ivrTaskSingle = new ServiceSubtaskEntity();
             ivrTaskSingle.setTaskid(tid);
             ivrTaskSingle.setPatid(pid);
             List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ivrTaskSingle);
@@ -2252,8 +2267,7 @@
         List<String> groupKeyList = serviceSubtaskMapper.getSfStatisticsGroupKey(serviceSubtaskCountReq);
         serviceSubtaskCountReq.setGroupKeyList(groupKeyList);
         List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
-        switch (groupKey)
-        {
+        switch (groupKey) {
             case "deptcode":
                 collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptcode()).orElse("Unknown")));
                 break;
@@ -2275,10 +2289,10 @@
                 continue;
             }
             ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList, serviceSubtaskCountReq.getFollowUpCountStyle());
-            if(ObjectUtils.isNotEmpty(jsRates)){
+            if (ObjectUtils.isNotEmpty(jsRates)) {
                 Map<String, Object> jsRateMap = jsRates.get(collectKey);
                 BigDecimal jsRate = new BigDecimal("0");
-                if(ObjectUtils.isNotEmpty(jsRateMap) && ObjectUtils.isNotEmpty(jsRateMap.get("rate"))){
+                if (ObjectUtils.isNotEmpty(jsRateMap) && ObjectUtils.isNotEmpty(jsRateMap.get("rate"))) {
                     jsRate = new BigDecimal(jsRateMap.get("rate").toString());
                 }
                 Double jsRateDouble = (jsRate.setScale(4, RoundingMode.HALF_UP)).doubleValue();
@@ -2294,24 +2308,25 @@
 
     /**
      * 闅忚缁熻-鍙婃椂鐜囩粺璁�
+     *
      * @param serviceSubtaskCountReq
      * @param collect
      * @return
      */
-    public  Map<String, Map<String, Object>> getSsRateForSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq, Map<String, List<ServiceSubtask>> collect){
-        if(ObjectUtils.isEmpty(serviceSubtaskCountReq)){
+    public Map<String, Map<String, Object>> getSsRateForSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq, Map<String, List<ServiceSubtask>> collect) {
+        if (ObjectUtils.isEmpty(serviceSubtaskCountReq)) {
             return null;
         }
         String groupKey = serviceSubtaskCountReq.getGroupKey();
-        if(StringUtils.isEmpty(groupKey)){
+        if (StringUtils.isEmpty(groupKey)) {
             return null;
         }
         List<String> groupKeyList = new ArrayList<>(collect.keySet());
-        if(ObjectUtils.isEmpty(groupKeyList)){
+        if (ObjectUtils.isEmpty(groupKeyList)) {
             return null;
         }
         //鍙婃椂鐜囩粺璁�
-        ServiceSubtaskVO ssRate = new ServiceSubtaskVO();
+        ServiceSubtaskEntity ssRate = new ServiceSubtaskEntity();
         ssRate.setOrgid(serviceSubtaskCountReq.getOrgid());
         ssRate.setStarttime(serviceSubtaskCountReq.getStartTime());
         ssRate.setEndtime(serviceSubtaskCountReq.getEndTime());
@@ -2321,11 +2336,12 @@
         ssRate.setGroupKey(groupKey);
         ssRate.setGroupKeyList(groupKeyList);
         Map<String, Map<String, Object>> jsRates = new HashMap<>();
-        if(!collect.isEmpty()){
+        if (!collect.isEmpty()) {
             jsRates = serviceSubtaskMapper.selectTimelyRateBatch(ssRate);
         }
         return jsRates;
     }
+
     @Override
     public List<ServiceSubtaskStatistic> getSfStatisticsExport(ServiceSubtaskCountReq serviceSubtaskCountReq) {
         List<ServiceSubtaskStatistic> sfStatistics = getSfStatistics(serviceSubtaskCountReq);
@@ -2424,7 +2440,6 @@
     }
 
 
-
     /**
      * 鑾峰彇婊℃剰搴﹂鐩�婚噺
      * type : 1-绉戝   2鐥呭尯
@@ -2465,7 +2480,7 @@
                     List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
                     if (CollectionUtils.isNotEmpty(ivrTaskTemplateScripts)) {
                         //闇�瑕佸厛璁$畻鍑哄彂閫侀噺锛屽啀涔樹互鍗曚釜闂埜婊℃剰搴﹂鐩暟閲忥紝寰楀埌婊℃剰搴﹂鐩�婚噺锛堝寘鍚簡鏈仛鐨勶級
-                        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+                        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
                         serviceSubtaskVO.setTaskid(serviceTask.getTaskid());
                         List<Long> sendstates = new ArrayList<>(Arrays.asList(3L, 5L, 6L));
                         serviceSubtaskVO.setSendstates(sendstates);
@@ -2484,11 +2499,11 @@
                     svyTaskTemplateScript.setCategoryid(svyCategoryid);
                     List<SvyTaskTemplateScript> svyTaskTemplateScriptList = svyTaskTemplateScriptService.selectSvyTaskTemplateScriptList(svyTaskTemplateScript);
                     if (CollectionUtils.isNotEmpty(svyTaskTemplateScriptList)) {
-                        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-                        serviceSubtaskVO.setTaskid(serviceTask.getTaskid());
+                        ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
+                        serviceSubtaskEntity.setTaskid(serviceTask.getTaskid());
                         List<Long> sendstates = new ArrayList<>(Arrays.asList(3L, 5L, 6L));
-                        serviceSubtaskVO.setSendstates(sendstates);
-                        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskBySendstate(serviceSubtaskVO);
+                        serviceSubtaskEntity.setSendstates(sendstates);
+                        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskBySendstate(serviceSubtaskEntity);
                         if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
                             int mydtmzlCount = svyTaskTemplateScriptList.size() * serviceSubtaskList.size();
                             mydtmzlsum.add(new BigDecimal(mydtmzlCount));
@@ -2555,7 +2570,7 @@
         //璁板綍鍐嶆寰呴殢璁胯鎯�
         List<ServiceSubtask> pendingFollowUpAgainInfo = new ArrayList<>();
         //璁板綍鍐嶆闅忚鎴愬姛璇︽儏
-        List<ServiceSubtask> followUpSuccessAgainInfo= new ArrayList<>();
+        List<ServiceSubtask> followUpSuccessAgainInfo = new ArrayList<>();
         //璁板綍鍐嶆闅忚澶辫触璇︽儏
         List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>();
         //璁板綍棣栨闅忚浜哄伐璇︽儏
@@ -2563,13 +2578,13 @@
         //璁板綍棣栨闅忚鐭俊璇︽儏
         List<ServiceSubtask> smsAgainInfo = new ArrayList<>();
         //璁板綍棣栨闅忚寰俊璇︽儏
-        List<ServiceSubtask> wechatAgainInfo= new ArrayList<>();
+        List<ServiceSubtask> wechatAgainInfo = new ArrayList<>();
 
         for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
             //鏃犻渶闅忚浜烘
             if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
                 serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);
-                if (serviceSubtask.getTaskSituation() !=null && serviceSubtask.getTaskSituation() == 6) {
+                if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 6) {
                     serviceSubtaskStatistic.setFilterCount(serviceSubtaskStatistic.getFilterCount() + 1L);
                     filterServiceSubtasks.add(serviceSubtask);
                 }
@@ -2599,55 +2614,45 @@
                 /**
                  * 涓嶅悓缁熻鏂瑰紡涓嬩笉鍚岀殑闅忚鎴愬姛鏁� 鍙傛暟 followUpCountStyle 鎺у埗
                  */
-                if(StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")){
+                if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
                     //棣栨闅忚鎴愬姛
                     if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6L)) {
                         serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                         followUpSuccessInfo.add(serviceSubtask);
                     }
                     //棣栨闅忚浜哄伐 (涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null
-                            && !serviceSubtask.getSendstate().equals(4L)
-                            && serviceSubtask.getPreachform().equals("1")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
                         serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                         manualInfo.add(serviceSubtask);
                     }
                     //棣栨闅忚鐭俊(涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null
-                            && !serviceSubtask.getSendstate().equals(4L)
-                            && serviceSubtask.getPreachform().equals("4")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
                         serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                         smsInfo.add(serviceSubtask);
                     }
                     //棣栨闅忚寰俊(涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null
-                            && !serviceSubtask.getSendstate().equals(4L)
-                            && serviceSubtask.getPreachform().equals("5")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
                         serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                         wechatInfo.add(serviceSubtask);
                     }
-                }else {
+                } else {
                     //棣栨闅忚鎴愬姛 - 缁熻鏃跺�欏姞涓婁笉鎵ц鐨勶紝宸插彂閫佺殑
-                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L)
-                            || serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
+                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L) || serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
                         serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                         followUpSuccessInfo.add(serviceSubtask);
                     }
                     //棣栨闅忚浜哄伐 (缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null
-                            && serviceSubtask.getPreachform().equals("1")) {
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                         serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                         manualInfo.add(serviceSubtask);
                     }
                     //棣栨闅忚鐭俊(缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null
-                            && serviceSubtask.getPreachform().equals("4")) {
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                         serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                         smsInfo.add(serviceSubtask);
                     }
                     //棣栨闅忚寰俊(缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null
-                            && serviceSubtask.getPreachform().equals("5")) {
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                         serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                         wechatInfo.add(serviceSubtask);
                     }
@@ -2682,56 +2687,45 @@
                 /**
                  * 涓嶅悓缁熻鏂瑰紡涓嬩笉鍚岀殑闅忚鎴愬姛鏁� 鍙傛暟 followUpCountStyle 鎺у埗
                  */
-                if(StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")){
+                if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
                     //鍐嶆闅忚鎴愬姛
                     if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
                         serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
                         followUpSuccessAgainInfo.add(serviceSubtask);
                     }
                     //鍐嶆闅忚浜哄伐(涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null
-                            && !serviceSubtask.getSendstate().equals(4L)
-                            && serviceSubtask.getPreachform().equals("1")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
                         serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                         manualAgainInfo.add(serviceSubtask);
                     }
                     //鍐嶆闅忚鐭俊(涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null
-                            && !serviceSubtask.getSendstate().equals(4L)
-                            && serviceSubtask.getPreachform().equals("4")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
                         serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                         smsAgainInfo.add(serviceSubtask);
                     }
                     //鍐嶆闅忚寰俊(涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null
-                            && !serviceSubtask.getSendstate().equals(4L)
-                            && serviceSubtask.getPreachform().equals("5")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
                         serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                         wechatAgainInfo.add(serviceSubtask);
                     }
-                }else {
+                } else {
                     //鍐嶆闅忚鎴愬姛
-                    if (serviceSubtask.getSendstate() != null &&
-                            (serviceSubtask.getSendstate().equals(1L) || serviceSubtask.getSendstate().equals(6L) ||
-                            serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
+                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(1L) || serviceSubtask.getSendstate().equals(6L) || serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
                         serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
                         followUpSuccessAgainInfo.add(serviceSubtask);
                     }
                     //鍐嶆闅忚浜哄伐(缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null
-                            && serviceSubtask.getPreachform().equals("1")) {
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
                         serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                         manualAgainInfo.add(serviceSubtask);
                     }
                     //鍐嶆闅忚鐭俊(缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null
-                            && serviceSubtask.getPreachform().equals("4")) {
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
                         serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                         smsAgainInfo.add(serviceSubtask);
                     }
                     //鍐嶆闅忚寰俊(缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null
-                            && serviceSubtask.getPreachform().equals("5")) {
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
                         serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                         wechatAgainInfo.add(serviceSubtask);
                     }
@@ -2919,7 +2913,7 @@
 
         //鑾峰彇闅忚缁熻
         List<Long> subTaskIds = new ArrayList<>();
-        if(ObjectUtils.isNotEmpty(serviceSubtaskList)){
+        if (ObjectUtils.isNotEmpty(serviceSubtaskList)) {
             subTaskIds = serviceSubtaskList.stream().map(ServiceSubtask::getId)      // 鎻愬彇瀛楁
                     .filter(Objects::nonNull)       // 杩囨护 null 鍊�
                     .filter(id -> ObjectUtils.isNotEmpty(id))  // 杩囨护绌哄瓧绗︿覆锛堝彲閫夛級
@@ -3208,8 +3202,7 @@
         List<String> groupKeyList = serviceSubtaskMapper.getSfStatisticsGroupKey(serviceSubtaskCountReq);
         serviceSubtaskCountReq.setGroupKeyList(groupKeyList);
         List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
-        switch (groupKey)
-        {
+        switch (groupKey) {
             case "deptcode":
                 collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptcode()).orElse("Unknown")));
                 break;
@@ -3231,10 +3224,10 @@
                 continue;
             }
             ServiceSubtaskStatistic statistic = getStatisticCategory(serviceSubtaskList, serviceSubtaskCountReq);
-            if(ObjectUtils.isNotEmpty(jsRates)){
+            if (ObjectUtils.isNotEmpty(jsRates)) {
                 Map<String, Object> jsRateMap = jsRates.get(collectKey);
                 BigDecimal jsRate = new BigDecimal("0");
-                if(ObjectUtils.isNotEmpty(jsRateMap) && ObjectUtils.isNotEmpty(jsRateMap.get("rate"))){
+                if (ObjectUtils.isNotEmpty(jsRateMap) && ObjectUtils.isNotEmpty(jsRateMap.get("rate"))) {
                     jsRate = new BigDecimal(jsRateMap.get("rate").toString());
                 }
                 Double jsRateDouble = (jsRate.setScale(4, RoundingMode.HALF_UP)).doubleValue();
@@ -3254,14 +3247,14 @@
                 BigDecimal finishedSum = new BigDecimal(0);
                 //瀹屾垚姣斾緥
                 Double finishedPercentage = null;
-                if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyCount())){
+                if (ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyCount())) {
                     finishedSum = new BigDecimal(serviceSubtaskStatistic.getJoyCount());
                 }
 
-                if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyAllCount())){
+                if (ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyAllCount())) {
                     sum = new BigDecimal(serviceSubtaskStatistic.getJoyAllCount());
                 }
-                if(sum.intValue() != 0){
+                if (sum.intValue() != 0) {
                     finishedPercentage = finishedSum.divide(sum, 2, RoundingMode.HALF_UP).doubleValue();
                 }
                 serviceSubtaskStatistic.setJoyAllCount(sum.intValue());
@@ -3279,7 +3272,7 @@
         List<ServiceSubtaskScriptCount> allCounts = new ArrayList<>();
         List<ServiceSubtaskScriptCount> allItemCounts = new ArrayList<>();
         String type = serviceSubtaskCountReq.getType();
-        if(ObjectUtils.isEmpty(type)){
+        if (ObjectUtils.isEmpty(type)) {
             //鏌ヨ璇煶缁熻鏄庣粏
             serviceSubtaskCountReq.setType("1");
             List<ServiceSubtaskScriptCount> ivyCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq);
@@ -3294,26 +3287,24 @@
             allCounts.addAll(svyCounts);
             allItemCounts.addAll(ivyItemCounts);
             allItemCounts.addAll(svyItemCounts);
-        }else {
+        } else {
             allCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq);
             allItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq);
         }
 
-        for(ServiceSubtaskScriptCount count : allCounts){
+        for (ServiceSubtaskScriptCount count : allCounts) {
             Map<String, ServiceSubtaskScriptCount> itemCountMap = new HashMap<>();
             //闂嵎鍔犱笂绌虹櫧閫夐」
-            if(ObjectUtils.isNotEmpty(count.getTemplateid())
-                    && ObjectUtils.isNotEmpty(count.getSubtaskType())
-                    && count.getSubtaskType().equals("2")){
+            if (ObjectUtils.isNotEmpty(count.getTemplateid()) && ObjectUtils.isNotEmpty(count.getSubtaskType()) && count.getSubtaskType().equals("2")) {
                 SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = new SvyTaskTemplateScriptVO();
                 svyTaskTemplateScriptVO.setId(count.getScriptid());
                 svyTaskTemplateScriptVO.setOrgid(serviceSubtaskCountReq.getOrgid());
                 SvyTaskTemplateScriptVO svyTaskTemplateScriptResultVo = svyTaskTemplateScriptService.selectInfoByCondition(svyTaskTemplateScriptVO);
-                if(ObjectUtils.isNotEmpty(svyTaskTemplateScriptResultVo)){
+                if (ObjectUtils.isNotEmpty(svyTaskTemplateScriptResultVo)) {
                     List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptResultVo.getSvyTaskTemplateTargetoptions();
-                    if(ObjectUtils.isNotEmpty(svyTaskTemplateTargetoptions)){
+                    if (ObjectUtils.isNotEmpty(svyTaskTemplateTargetoptions)) {
                         //濉叆绌虹櫧淇℃伅
-                        svyTaskTemplateTargetoptions.forEach(targetoption ->{
+                        svyTaskTemplateTargetoptions.forEach(targetoption -> {
                             ServiceSubtaskScriptCount emptyCount = new ServiceSubtaskScriptCount();
                             emptyCount.setScriptid(count.getScriptid());
                             emptyCount.setScriptContent(count.getScriptContent());
@@ -3326,14 +3317,14 @@
                             emptyCount.setChosenQuantity(0);
                             emptyCount.setChosenPercentage("0.0");
                             emptyCount.setOptionText(targetoption.getOptioncontent());
-                            itemCountMap.put(targetoption.getOptioncontent(),emptyCount);
+                            itemCountMap.put(targetoption.getOptioncontent(), emptyCount);
                         });
                     }
                 }
             }
-            allItemCounts.forEach(itemCount ->{
-                if(ObjectUtils.isNotEmpty(count.getScriptid()) && ObjectUtils.isNotEmpty(itemCount.getScriptid())){
-                    if(count.getScriptid().equals(itemCount.getScriptid())){
+            allItemCounts.forEach(itemCount -> {
+                if (ObjectUtils.isNotEmpty(count.getScriptid()) && ObjectUtils.isNotEmpty(itemCount.getScriptid())) {
+                    if (count.getScriptid().equals(itemCount.getScriptid())) {
                         //鏀惧叆缁熻淇℃伅
                         itemCount.setScriptContent(count.getScriptContent());
                         itemCount.setScriptType(count.getScriptType());
@@ -3343,9 +3334,9 @@
                         itemCount.setCompletedPercentage(count.getCompletedPercentage());
                         itemCount.setTemplateid(count.getTemplateid());
                         //璁$畻閫夋嫨姣斾緥
-                        int chosenQuantity = ObjectUtils.isNotEmpty(itemCount.getChosenQuantity())?itemCount.getChosenQuantity():0;
+                        int chosenQuantity = ObjectUtils.isNotEmpty(itemCount.getChosenQuantity()) ? itemCount.getChosenQuantity() : 0;
                         int completedQuantity = itemCount.getCompletedQuantity();
-                        if(ObjectUtils.isNotEmpty(completedQuantity) && completedQuantity != 0){
+                        if (ObjectUtils.isNotEmpty(completedQuantity) && completedQuantity != 0) {
                             BigDecimal chosenPercentage = (new BigDecimal(chosenQuantity)).divide(new BigDecimal(completedQuantity), 2, RoundingMode.HALF_UP);
                             itemCount.setChosenPercentage(chosenPercentage.toString());
                         }
@@ -3355,7 +3346,7 @@
             });
             List<ServiceSubtaskScriptCount> itemCounts = new ArrayList<>(itemCountMap.values());
             count.setDetails(itemCounts);
-            result.put(count.getScriptid().toString(),count);
+            result.put(count.getScriptid().toString(), count);
         }
         return result;
     }
@@ -3369,8 +3360,7 @@
      * @return
      */
     public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
-        log.info("setFailPreachForm 闅忚娴佺▼澶勭悊 serviceSubtask:{}, preachform:{}, remark:{}, failSendstate:{}",
-                serviceSubtask, preachform, remark, failSendstate);
+        log.info("setFailPreachForm 闅忚娴佺▼澶勭悊 serviceSubtask:{}, preachform:{}, remark:{}, failSendstate:{}", serviceSubtask, preachform, remark, failSendstate);
         //灏嗙姸鎬佽缃负澶辫触
         ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
         serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
@@ -3437,6 +3427,7 @@
 
     /**
      * 璁$畻鎬昏琛�
+     *
      * @param statistics 缁熻鏁版嵁鍒楄〃
      * @return 鎬昏琛屾暟鎹�
      */
@@ -3544,8 +3535,8 @@
             diagname.setLongSendTime(subtask.getLongSendTime());
             diagname.setEndtime(subtask.getEndtime());
             //璁$畻鍑洪櫌澶╂暟
-            if(!Objects.isNull(diagname.getEndtime())){
-                Integer endDay = DateUtils.differentDaysByMillisecond(diagname.getEndtime(),new Date());
+            if (!Objects.isNull(diagname.getEndtime())) {
+                Integer endDay = DateUtils.differentDaysByMillisecond(diagname.getEndtime(), new Date());
                 diagname.setEndDay(endDay);
             }
             diagname.setSfzh(subtask.getSfzh());
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
index 30bdff6..b341968 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
@@ -10,6 +10,7 @@
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.http.HttpUtils;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import com.smartor.domain.*;
@@ -169,7 +170,7 @@
         serviceSubtask.setTaskid(taskid);
 
         //鏌ヨ瀛愪换鍔�
-        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);
+        ServiceSubtaskEntity serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskEntity.class);
         List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
         for (ServiceSubtask ss : serviceSubtaskList) {
             log.error("sfSend闇�瑕佺Щ闄ょ殑subId涓猴細{}", ss.getId().toString());
@@ -231,7 +232,7 @@
     @Override
     public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom) {
         Map<String, Object> map = new HashMap<>();
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setPatid(patid);
         serviceSubtaskVO.setTaskid(taskid);
         serviceSubtaskVO.setSendstate(3L);
@@ -338,7 +339,7 @@
         }
 
         //鍒ゆ柇涓�涓嬩粖澶╂槸鍚﹀凡缁忓仛杩囬锛屽仛杩囧氨涓嶈鍐嶅仛浜�
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setTaskid(taskid);
         serviceSubtaskVO.setPatid(patArchive.getId());
         serviceSubtaskVO.setVisitTime(new Date());
@@ -468,7 +469,7 @@
     private List wjInfo(ServiceTask serviceTask, Long patid, Boolean isFinish, String patfrom) {
         //鐢ㄦ埛鐐瑰嚮浜嗗閾撅紝灏辩畻浠栭鍙栦簡
         //杩欐牱鍋氫細鏈変竴涓棶棰橈紝濡傛灉鍥哄畾浠诲姟锛屼細鍑虹幇涓�涓换鍔¢噷锛屾湁澶氫釜璇ユ偅鑰�
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setTaskid(serviceTask.getTaskid());
         serviceSubtaskVO.setPatid(patid);
         List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
index 543439b..17bb6a6 100644
--- a/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
@@ -12,6 +12,7 @@
 import com.smartor.common.LSHospTokenUtil;
 import com.smartor.common.LyraTokenUtil;
 import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.BaseOrganizationMapper;
 import com.smartor.mapper.ServiceSubtaskMapper;
 import com.smartor.service.IServiceTaskService;
@@ -98,7 +99,7 @@
             iServiceTaskService.updateServiceTask(serviceTask2);
 
             //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
-            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+            ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
             serviceSubtaskVO.setTaskid(serviceTask2.getTaskid());
             serviceSubtaskVO.setSendstate(2L);
             List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
@@ -152,7 +153,7 @@
     public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {
         //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚�
         List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setTaskid(serviceSubtask.getTaskid());
         List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
         if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {
@@ -283,7 +284,7 @@
         serviceSubtask.setCreateTime(new Date());
         serviceSubtask.setLeavehospitaldistrictcode(serviceTaskVO.getDistrictcode());
         //鍏堟煡璇竴閬嶏紝璇askGuid鏄惁瀛樺湪
-        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
         serviceSubtaskVO.setTaskGuid(serviceTaskVO.getTaskguid());
         List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
         if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 954b1c9..244dfa8 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -87,6 +87,11 @@
         <result property="currentPreachform" column="current_preachform"/>
         <result property="taskSituation" column="task_situation"/>
         <result property="isabnormal" column="isabnormal"/>
+        <result property="continueFlag" column="continue_flag"/>
+        <result property="continueTimeNow" column="continue_time_now"/>
+        <result property="continueContent" column="continue_content"/>
+        <result property="continueCount" column="continue_count"/>
+        <result property="continueTimeNext" column="continue_time_next"/>
     </resultMap>
 
     <resultMap type="com.smartor.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2">
@@ -202,11 +207,16 @@
                visit_type,
                management_doctor,
                management_doctor_code,
+               continue_flag,
+               continue_time_now,
+               continue_content,
+               continue_count,
+               continue_time_next,
                task_situation
         from service_subtask
     </sql>
 
-    <select id="selectServiceSubtaskBySendstate" parameterType="com.smartor.domain.ServiceSubtaskVO"
+    <select id="selectServiceSubtaskBySendstate" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
             resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>
         where 1=1
@@ -215,6 +225,10 @@
             and orgid = #{orgid}
         </if>
         <if test="taskid != null ">and taskid = #{taskid}</if>
+        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow}</if>
+        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext}</if>
         <if test="serviceType != null ">and service_type = #{serviceType}</if>
         <if test="patid != null ">and patid = #{patid}</if>
         <if test="sendstates!=null">
@@ -226,7 +240,7 @@
         </if>
     </select>
 
-    <select id="queryServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
+    <select id="queryServiceSubtaskList" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
             resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>
         where 1=1
@@ -239,15 +253,22 @@
             AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d')
         </if>
         <if test="sendstate != null ">and sendstate = #{sendstate}</if>
-
+        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow}</if>
+        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext}</if>
     </select>
 
 
-    <select id="selectServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
+    <select id="selectServiceSubtaskList" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
             resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>
         where 1=1
         and del_flag = 0
+        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow}</if>
+        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext}</if>
         <if test="sendname != null  and sendname != ''">and sendname like concat('%', #{sendname}, '%')</if>
         <if test="phone != null  and phone != ''">and phone = #{phone}</if>
         <if test="leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''">and
@@ -412,7 +433,7 @@
         <if test="sort != null  and sort==8">order by visit_time desc</if>
         <if test="pageSize != null  and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if>
     </select>
-    <select id="getCompensateServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
+    <select id="getCompensateServiceSubtaskList" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
             resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>
         where del_flag = 0
@@ -423,9 +444,13 @@
             AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d')
         </if>
         <if test="sendstate != null ">and sendstate = #{sendstate}</if>
+        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow}</if>
+        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext}</if>
     </select>
 
-    <select id="selectServiceSubtaskListByCreateTime" parameterType="com.smartor.domain.ServiceSubtaskVO"
+    <select id="selectServiceSubtaskListByCreateTime" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
             resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>
         where del_flag = 0
@@ -448,11 +473,15 @@
         <if test="managementDoctor != null">and management_doctor = #{managementDoctor}</if>
         <if test="currentPreachform != null">and current_preachform = #{currentPreachform}</if>
         <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
+        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow}</if>
+        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext}</if>
 
     </select>
 
 
-    <select id="selectServiceSubtaskListAgain" parameterType="com.smartor.domain.ServiceSubtaskVO"
+    <select id="selectServiceSubtaskListAgain" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity"
             resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>
         where 1=1
@@ -505,7 +534,10 @@
         <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if>
         <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
         <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if>
-
+        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow}</if>
+        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext}</if>
     </select>
 
     <select id="selectSendstateByCondition" parameterType="com.smartor.domain.ServiceSubtask" resultType="Integer">
@@ -640,6 +672,10 @@
         <if test="taskName != null">and task_name like concat('%',#{taskName}, '%')</if>
         <if test="sendstate != null">and sendstate = #{sendstate}</if>
         <if test="orgid != null">and orgid =#{orgid}</if>
+        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow}</if>
+        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext}</if>
         GROUP BY sendname,sendstate,starttime,endtime,nurse_name,phone,sex,task_name,leavediagname,visit_time ORDER BY
         visit_time
         <if test="pageSize != null  and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if>
@@ -733,6 +769,11 @@
             <if test="currentPreachform != null">current_preachform,</if>
             <if test="taskSituation != null">task_situation,</if>
             <if test="isabnormal != null">isabnormal,</if>
+            <if test="continueFlag != null ">continue_flag,</if>
+            <if test="continueTimeNow != null ">continue_time_now,</if>
+            <if test="continueCount != null ">continue_count,</if>
+            <if test="continueTimeNext != null ">continue_time_next,</if>
+            <if test="continueContent != null ">continue_content,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="sendname != null">#{sendname},</if>
@@ -819,6 +860,11 @@
             <if test="currentPreachform != null">#{currentPreachform},</if>
             <if test="taskSituation != null">#{taskSituation},</if>
             <if test="isabnormal != null">#{isabnormal},</if>
+            <if test="continueFlag != null ">#{continueFlag},</if>
+            <if test="continueTimeNow != null ">#{continueTimeNow},</if>
+            <if test="continueCount != null ">#{continueCount},</if>
+            <if test="continueTimeNext != null ">#{continueTimeNext},</if>
+            <if test="continueContent != null ">#{continueContent},</if>
         </trim>
     </insert>
 
@@ -910,6 +956,11 @@
             <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
             <if test="taskSituation != null">task_situation=#{taskSituation},</if>
             <if test="isabnormal != null">isabnormal=#{isabnormal},</if>
+            <if test="continueFlag != null ">continue_flag = #{continueFlag},</if>
+            <if test="continueTimeNow != null ">continue_time_now = #{continueTimeNow},</if>
+            <if test="continueCount != null ">continue_count = #{continueCount},</if>
+            <if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext},</if>
+            <if test="continueContent != null ">continue_content = #{continueContent},</if>
         </trim>
         where id = #{id}
     </update>
@@ -1002,6 +1053,11 @@
             <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
             <if test="taskSituation != null">task_situation=#{taskSituation},</if>
             <if test="isabnormal != null">isabnormal=#{isabnormal},</if>
+            <if test="continueFlag != null ">continue_flag = #{continueFlag},</if>
+            <if test="continueTimeNow != null ">continue_time_now = #{continueTimeNow},</if>
+            <if test="continueCount != null ">continue_count = #{continueCount},</if>
+            <if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext},</if>
+            <if test="continueContent != null ">continue_content = #{continueContent},</if>
         </trim>
         where 1=1
         <if test="patid != null ">and patid = #{patid}</if>
@@ -1098,6 +1154,11 @@
             <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
             <if test="taskSituation != null">task_situation=#{taskSituation},</if>
             <if test="isabnormal != null">isabnormal=#{isabnormal},</if>
+            <if test="continueFlag != null ">continue_flag = #{continueFlag},</if>
+            <if test="continueTimeNow != null ">continue_time_now = #{continueTimeNow},</if>
+            <if test="continueCount != null ">continue_count = #{continueCount},</if>
+            <if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext},</if>
+            <if test="continueContent != null ">continue_content = #{continueContent},</if>
         </trim>
         where patid = #{patid} and taskid = #{taskid}
     </update>
@@ -1189,6 +1250,11 @@
             <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
             <if test="taskSituation != null">task_situation=#{taskSituation},</if>
             <if test="isabnormal != null">isabnormal=#{isabnormal},</if>
+            <if test="continueFlag != null ">continue_flag = #{continueFlag},</if>
+            <if test="continueTimeNow != null ">continue_time_now = #{continueTimeNow},</if>
+            <if test="continueCount != null ">continue_count = #{continueCount},</if>
+            <if test="continueTimeNext != null ">continue_time_next = #{continueTimeNext},</if>
+            <if test="continueContent != null ">continue_content = #{continueContent},</if>
         </trim>
         where task_guid = #{taskGuid} and task_name = #{taskName}
     </update>
@@ -1243,6 +1309,11 @@
         send_type,
         recordid,
         exrecallcount,
+        continue_flag,
+        continue_time_now,
+        continue_content,
+        continue_count,
+        continue_time_next,
         task_situation
         from service_subtask
         where 1=1
@@ -1278,6 +1349,10 @@
         <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
         <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>
         <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
+        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow}</if>
+        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext}</if>
         <!-- 鐩墠鍙粺璁¤闊冲拰闂嵎 -->
         <if test="type != null">
             and type = #{type}
@@ -1330,6 +1405,10 @@
         <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
         <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>
         <if test="isabnormal != null">and isabnormal = #{isabnormal}</if>
+        <if test="continueFlag != null ">and continue_flag = #{continueFlag}</if>
+        <if test="continueTimeNow != null ">and continue_time_now = #{continueTimeNow}</if>
+        <if test="continueCount != null ">and continue_count = #{continueCount}</if>
+        <if test="continueTimeNext != null ">and continue_time_next = #{continueTimeNext}</if>
         <!-- 鐩墠鍙粺璁¤闊冲拰闂嵎 -->
         <if test="type != null">
             and type = #{type}
@@ -2003,7 +2082,7 @@
     </select>
 
     <!-- 浼樺寲鐨勭粺璁℃煡璇細鐩存帴鍦ㄦ暟鎹簱灞傚畬鎴愯仛鍚堣绠� -->
-    <select id="countByCondition" parameterType="com.smartor.domain.ServiceSubtaskVO" resultType="map">
+    <select id="countByCondition" parameterType="com.smartor.domain.entity.ServiceSubtaskEntity" resultType="map">
         SELECT
         SUM(CASE WHEN sendstate = 4 THEN 1 ELSE 0 END) AS wzx,
         SUM(CASE WHEN sendstate != 4 AND sendstate != 2 THEN 1 ELSE 0 END) AS ysf,

--
Gitblit v1.9.3