From 9526971c403417c1c007804f24884c443b9e6cd7 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 04 九月 2024 00:34:40 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateServiceImpl.java                  |   18 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/RSAPublicKeyExample.java                     |   22 
 smartor/src/main/java/com/smartor/mapper/SysUserDeptMapper.java                                |   72 
 smartor/src/main/java/com/smartor/domain/ThiedOutHospInfo.java                                 |  121 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskController.java              |   14 
 smartor/src/main/java/com/smartor/domain/SvyLibScript.java                                     |    5 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml                      |    9 
 smartor/src/main/resources/mapper/smartor/IvrLibaTargetoptionMapper.xml                        |    1 
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailVO.java                           |    2 
 smartor/src/main/java/com/smartor/domain/SvyTaskTemplateTargetoption.java                      |   22 
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java            |  220 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java         |   50 
 smartor/src/main/java/com/smartor/mapper/PatArchiveMapper.java                                 |    3 
 smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java                            |   20 
 ruoyi-admin/src/main/resources/application.yml                                                 |    8 
 smartor/src/main/java/com/smartor/domain/SvyTaskSingleVO.java                                  |    2 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java                          |   14 
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java                              |   39 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java                          |  208 +-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedOuthospController.java        |   20 
 smartor/src/main/java/com/smartor/service/ISvyTaskSingleService.java                           |   51 
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                                |   64 
 smartor/src/main/java/com/smartor/domain/ThiedOutHospCheckInfo.java                            |   74 
 smartor/src/main/java/com/smartor/domain/PatMedReq.java                                        |   59 
 smartor/src/main/java/com/smartor/mapper/PatMedOuthospMapper.java                              |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserDeptServiceImpl.java           |   94 +
 smartor/src/main/java/com/smartor/domain/SvyLibTemplateVO.java                                 |   10 
 smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java                           |   27 
 smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java                      |   36 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskSingleController.java        |   77 
 smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml                      |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserDeptService.java                   |   62 
 smartor/src/main/java/com/smartor/domain/XinHuaWXReq.java                                      |   64 
 smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java                             |    9 
 smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java                                 |    7 
 ruoyi-system/pom.xml                                                                           |    2 
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java                           |   33 
 smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml                                |    1 
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                             |   54 
 smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java                           |   18 
 smartor/src/main/java/com/smartor/mapper/PatMedInhospMapper.java                               |   13 
 smartor/src/main/java/com/smartor/service/IPatMedInhospService.java                            |   20 
 smartor/src/main/java/com/smartor/domain/SvyLibScriptOption.java                               |    3 
 ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java                                   |  157 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java               |  300 +-
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java       |   18 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java               |    4 
 smartor/src/main/java/com/smartor/domain/ServiceSubTaskQueryReq.java                           |    2 
 smartor/src/main/java/com/smartor/service/IServiceTaskService.java                             |    3 
 smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java                      |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java |   11 
 smartor/src/main/java/com/smartor/domain/ThiedInhospCheckInfo.java                             |   71 
 smartor/src/main/java/com/smartor/domain/IvrTaskTemplateTargetoption.java                      |   15 
 smartor/src/main/java/com/smartor/domain/PatMedRes.java                                        |   38 
 smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml                               |  276 ++
 smartor/src/main/resources/mapper/smartor/SvyLibTemplateScriptMapper.xml                       |   11 
 smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java                     |   17 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java                    |  258 +-
 smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java                    |    5 
 smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScript.java                            |   15 
 smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml                              |   20 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserDeptController.java           |  106 +
 smartor/src/main/java/com/smartor/domain/SvyLibTemplateTargetoption.java                       |   17 
 smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java                          |    8 
 smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml                |    7 
 smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml                                 |  157 +
 smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java                   |  265 +-
 ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java                         |  133 +
 ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java                                       |  159 +
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java                   |    2 
 smartor/src/main/java/com/smartor/domain/ServiceSubtask.java                                   |   29 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java                      |   15 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/CommonRes.java                         |   33 
 smartor/src/main/java/com/smartor/domain/PatArchive.java                                       |   50 
 smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java                   |   60 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUserDept.java                |   47 
 smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java                    |   65 
 smartor/src/main/resources/mapper/smartor/SvyLibScriptMapper.xml                               |    6 
 smartor/src/main/java/com/smartor/domain/ServiceSubTaskCacheReq.java                           |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java          |   36 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java               |   76 
 smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java                            |    8 
 smartor/src/main/resources/mapper/smartor/IvrTaskTemplateTargetoptionMapper.xml                |    7 
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java                                 |   78 
 smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java                          |  101 +
 smartor/src/main/resources/mapper/smartor/SvyTaskTemplateTargetoptionMapper.xml                |   19 
 smartor/src/main/java/com/smartor/domain/ThiedInhospInfo.java                                  |  446 +++++
 smartor/src/main/java/com/smartor/service/impl/PatFilterlistServiceImpl.java                   |    3 
 smartor/src/main/java/com/smartor/domain/SvyLibTemplateScript.java                             |   11 
 smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java                          |   12 
 smartor/src/main/resources/mapper/smartor/SvyLibTemplateMapper.xml                             |   20 
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java                             |    2 
 smartor/src/main/java/com/smartor/domain/PatMedInhosp.java                                     |    8 
 smartor/src/main/java/com/smartor/domain/SvyLibTemplate.java                                   |   11 
 smartor/src/main/resources/mapper/smartor/SvyLibTemplateTargetoptionMapper.xml                 |    8 
 smartor/src/main/java/com/smartor/domain/IvrLibaTargetoption.java                              |    7 
 smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml                                |  145 +
 ruoyi-admin/src/main/resources/application-druid.yml                                           |   18 
 smartor/src/main/resources/mapper/smartor/SvyTaskTemplateScriptMapper.xml                      |   20 
 smartor/src/main/resources/mapper/smartor/SvyLibTopicCategoryMapper.xml                        |    2 
 100 files changed, 3,887 insertions(+), 1,198 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 f2fedf4..089b629 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
@@ -1,11 +1,14 @@
 package com.ruoyi.web.component;
 
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.ServiceFromEnum;
 import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.http.HttpUtils;
 import com.ruoyi.web.task.PhoneTask;
 import com.smartor.common.SendService;
 import com.smartor.config.RobotPhoneUtils;
@@ -44,6 +47,9 @@
     @Value("${req_path}")
     private String req_path;
 
+    @Value("${thirdWXUrl}")
+    private String thirdWXUrl;
+
     @Autowired
     private IIvrTaskTemplateService ivrTaskTemplateService;
 
@@ -63,10 +69,10 @@
     private RobotPhoneUtils robotPhoneUtils;
 
     @Autowired
-    private SvyTaskMapper svyTaskMapper;
+    private ServiceTaskMapper svyTaskMapper;
 
     @Autowired
-    private SvyTaskSingleMapper svyTaskSingleMapper;
+    private ServiceSubtaskMapper serviceSubtaskMapper;
 
     @Autowired
     private ISvyTaskTemplateService iSvyTaskTemplateService;
@@ -103,7 +109,6 @@
             } else {
                 commonTaskcallMQ = mapper.readValue(content, CommonTaskcallMQ.class);
             }
-
             if (commonTaskcallMQ.getTaskType() == 1) {
                 //闅忚
                 sfHandle(commonTaskcallMQ, ip);
@@ -116,6 +121,11 @@
             }
             //澶勭悊瀹屾垚锛岀Щ闄edis
             redisCache.deleteObject(message.toString());
+            //灏嗙姸鎬佹敼鎴愬畬鎴�
+            ServiceTask serviceTask = new ServiceTask();
+            serviceTask.setTaskid(Long.valueOf(commonTaskcallMQ.getTaskid()));
+            serviceTask.setSendState(5);
+            svyTaskMapper.updateServiceTask(serviceTask);
 
         } catch (Exception e) {
             Integer integer = redisCache.getCacheObject(commonTaskcallMQ.getTaskid().toString());
@@ -138,6 +148,7 @@
      * @param commonTaskcallMQ
      */
     public void sfHandle(CommonTaskcallMQ commonTaskcallMQ, String ip) {
+        log.error("杩涢殢璁夸簡鍚楋紵{}", commonTaskcallMQ);
         //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
         ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
         if (ivrTask1.getStopState() != commonTaskcallMQ.getStopState()) {
@@ -159,7 +170,7 @@
 //                IvrTaskTemplateVO ivrTaskTemplateVO1 = ivrTaskTemplateService.selectInfoByCondition(ivrTaskTemplateVO);
 
                 //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
-                ServiceSubtask ivrTaskcall = new ServiceSubtask();
+                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();
                 ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
                 List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall);
                 if (descByCode.equals("鐢佃瘽")) {
@@ -174,7 +185,7 @@
                         if (commonTaskcallMQ.getSendType().equals("2")) {
                             //璇存槑鏄珛鍗冲彂閫�
                             String value = redisCache.getCacheObject("cache-0");
-                            ServiceSubtask serviceSubtask1 = new ServiceSubtask();
+                            ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();
                             serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());
                             List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);
                             for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
@@ -188,7 +199,7 @@
                         } else {
                             //闈炵珛鍗冲彂閫�
                             String value = redisCache.getCacheObject(key);
-                            ServiceSubtask serviceSubtask1 = new ServiceSubtask();
+                            ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();
                             serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());
                             List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);
                             for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
@@ -250,17 +261,20 @@
                     String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
                     for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
                         String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-                        SendMagParam sendMagParam = new SendMagParam();
-                        sendMagParam.setType("5");
-                        sendMagParam.setUrl(ip + ":" + req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
-                        log.info("閾炬帴瀹屾暣璺緞锛歿}", ip + ":" + req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
-                        //杩欎釜妯℃澘ID鍏堝啓姝伙紝鍚庨潰鍋氭垚鍙��
-                        sendMagParam.setTmpCode("oG3pJHPVWpE81DmZsua_2tKwgJ97r0qz37z56ns7NB4");
-                        Map map = new HashMap();
-                        map.put("first", ivrTask1.getTaskName());
-                        sendMagParam.setContent(JSON.toJSONString(map));
-                        sendMagParam.setOpenid(serviceSubtask.getOpenid());
-                        Boolean aBoolean = sendService.sendMsg(sendMagParam);
+//                        SendMagParam sendMagParam = new SendMagParam();
+//                        sendMagParam.setType("5");
+//                        sendMagParam.setUrl(ip + ":" + req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
+//                        log.info("閾炬帴瀹屾暣璺緞锛歿}", ip + ":" + req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
+//                        //杩欎釜妯℃澘ID鍏堝啓姝伙紝鍚庨潰鍋氭垚鍙��
+//                        sendMagParam.setTmpCode("oG3pJHPVWpE81DmZsua_2tKwgJ97r0qz37z56ns7NB4");
+//                        Map map = new HashMap();
+//                        map.put("first", ivrTask1.getTaskName());
+//                        sendMagParam.setContent(JSON.toJSONString(map));
+//                        sendMagParam.setOpenid(serviceSubtask.getOpenid());
+//                        Boolean aBoolean = sendService.sendMsg(sendMagParam);
+
+                        String url = ip + ":" + req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false";
+                        String wxCode = getWXCode(serviceSubtask.getIdcardno(), url);
 
                         //浠诲姟鍙戦�佽褰�
                         ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
@@ -269,7 +283,8 @@
                         serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
                         serviceSubtaskRecord.setPreachform("4");
                         serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-                        serviceSubtaskRecord.setResult(aBoolean == true ? "鎴愬姛" : "澶辫触");
+                        serviceSubtaskRecord.setResult("鎴愬姛");
+                        if (wxCode.equals("0")) serviceSubtaskRecord.setResult("澶辫触");
                         serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                     }
                 }
@@ -284,6 +299,7 @@
      * @param commonTaskcallMQ
      */
     private void xjHandle(CommonTaskcallMQ commonTaskcallMQ, String ip) {
+        log.error("杩涘鏁欎簡鍚楋紵{}", commonTaskcallMQ);
         //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
         ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
         if (ivrTask1.getStopState() != commonTaskcallMQ.getStopState()) {
@@ -307,7 +323,7 @@
                     ivrTaskTemplateVO1 = ivrTaskTemplateService.selectInfoByCondition(ivrTaskTemplateVO);
                 }
                 //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
-                ServiceSubtask ivrTaskcall = new ServiceSubtask();
+                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();
                 ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
                 List<ServiceSubtask> ivrTaskcalls = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall);
                 if (descByCode.equals("鐢佃瘽")) {
@@ -365,18 +381,22 @@
                     String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
                     for (ServiceSubtask ivrTaskSingle : ivrTaskcalls) {
                         String patid = rsaPublicKeyExample.encryptedData(ivrTaskSingle.getPatid().toString(), pub_key);
-                        SendMagParam sendMagParam = new SendMagParam();
-                        sendMagParam.setType("5");
-                        sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainxj?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
-                        log.info("閾炬帴瀹屾暣璺緞锛歿}", req_path + "/outsideChainxj?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
-                        //杩欎釜妯℃澘ID鍏堝啓姝伙紝鍚庨潰鍋氭垚鍙��
-                        sendMagParam.setTmpCode("oG3pJHPVWpE81DmZsua_2tKwgJ97r0qz37z56ns7NB4");
-                        Map map = new HashMap();
-                        map.put("first", ivrTask1.getTaskName());
-                        sendMagParam.setContent(JSON.toJSONString(map));
-                        sendMagParam.setOpenid(ivrTaskSingle.getOpenid());
-                        Boolean aBoolean = sendService.sendMsg(sendMagParam);
+//                        SendMagParam sendMagParam = new SendMagParam();
+//                        sendMagParam.setType("5");
+//                        sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainxj?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
+//                        log.info("閾炬帴瀹屾暣璺緞锛歿}", req_path + "/outsideChainxj?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
+//                        //杩欎釜妯℃澘ID鍏堝啓姝伙紝鍚庨潰鍋氭垚鍙��
+//                        sendMagParam.setTmpCode("oG3pJHPVWpE81DmZsua_2tKwgJ97r0qz37z56ns7NB4");
+//                        Map map = new HashMap();
+//                        map.put("first", ivrTask1.getTaskName());
+//                        sendMagParam.setContent(JSON.toJSONString(map));
+//                        sendMagParam.setOpenid(ivrTaskSingle.getOpenid());
+                        //鏂板崕鍖婚櫌鏈夎嚜宸辩殑鍏紬鍙峰彂閫佹帴鍙o紝鎴戜滑鐨勫厛涓嶇敤锛堝厛淇濈暀锛屽叾瀹冮」鐩彲浠ョ敤锛�
+//                        Boolean aBoolean = sendService.sendMsg(sendMagParam);
+//                        log.error("鏄惁鍙戦�佹垚鍔燂細{}", aBoolean);
 
+                        String url = ip + ":" + req_path + "/outsideChainxj?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false";
+                        String wxCode = getWXCode(ivrTaskSingle.getIdcardno(), url);
                         //浠诲姟鍙戦�佽褰�
                         ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                         serviceSubtaskRecord.setTaskid(ivrTaskSingle.getTaskid().toString());
@@ -384,7 +404,11 @@
                         serviceSubtaskRecord.setTasktype(ivrTaskSingle.getType());
                         serviceSubtaskRecord.setPreachform("4");
                         serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-                        serviceSubtaskRecord.setResult(aBoolean == true ? "鎴愬姛" : "澶辫触");
+                        serviceSubtaskRecord.setResult("鎴愬姛");
+                        if (!wxCode.equals("0")) {
+                            serviceSubtaskRecord.setResult("澶辫触");
+                        }
+
                         serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                     }
                 }
@@ -399,8 +423,11 @@
      * @param commonTaskcallMQ
      */
     private void wjHandle(CommonTaskcallMQ commonTaskcallMQ, String ip) {
+        log.error("杩涢棶鍗蜂簡鍚楋紵{}", commonTaskcallMQ);
         //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
-        SvyTask svyTask = svyTaskMapper.selectSvyTaskByTaskid(commonTaskcallMQ.getTaskid());
+        ServiceTask svyTask = svyTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
+        log.error("svyTask.getStopState()鐨勫�间负锛歿} 锛� commonTaskcallMQ.getStopState()鐨勫�间负锛歿}", svyTask.getStopState(), commonTaskcallMQ.getStopState());
+
         if (svyTask.getStopState() != commonTaskcallMQ.getStopState()) {
             //灏嗘秷鎭粠闃熷垪涓墧闄�
             return;
@@ -420,12 +447,13 @@
                 SvyTaskTemplateVO svyTaskTemplateVO1 = iSvyTaskTemplateService.selectInfoByCondition(svyTaskTemplateVO);
 
                 //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
-                SvyTaskSingle svyTaskSingle = new SvyTaskSingle();
-                svyTaskSingle.setTaskid(commonTaskcallMQ.getTaskid());
-                List<SvyTaskSingle> svyTaskSingles = svyTaskSingleMapper.selectSvyTaskSingleList(svyTaskSingle);
+                ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+                serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
+                List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+                log.error("selectServiceSubtaskList鏁版嵁鏄灏戯紵{}", selectServiceSubtaskList.size());
                 if (descByCode.equals("鐢佃瘽")) {
-                    for (SvyTaskSingle svyTaskSingle1 : svyTaskSingles) {
-                        SvyTask svyTask1 = svyTaskMapper.selectSvyTaskByTaskid(svyTaskSingle1.getTaskid());
+                    for (ServiceSubtask svyTaskSingle1 : selectServiceSubtaskList) {
+                        ServiceTask svyTask1 = svyTaskMapper.selectServiceTaskByTaskid(svyTaskSingle1.getTaskid());
                         if (svyTask1.getSendState() != null && svyTask1.getSendState().equals("3") || svyTask1.getSendState() != null && svyTask1.getSendState().equals("4")) {
                             //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩��
                             break;
@@ -449,21 +477,27 @@
                 } else if (descByCode.equals("鐭俊")) {
                     //鐭俊
                 } else if (descByCode.equals("鍏紬鍙�")) {
+                    log.error("杩涢棶鍗峰叕浼楀彿浜嗗悧锛焮}", descByCode);
                     //鍏紬鍙�
                     RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
                     String taskId = rsaPublicKeyExample.encryptedData(svyTask.getTaskid().toString(), pub_key);
-                    for (SvyTaskSingle svyTaskSingle1 : svyTaskSingles) {
+                    for (ServiceSubtask svyTaskSingle1 : selectServiceSubtaskList) {
                         String patid = rsaPublicKeyExample.encryptedData(svyTaskSingle1.getPatid().toString(), pub_key);
+                        String url = ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + svyTask.getTaskName() + "&param5=false";
+                        //杩欎釜鏄垜浠嚜宸辩殑寰俊鍏紬鍙峰彂閫佹柟寮忥紝
                         SendMagParam sendMagParam = new SendMagParam();
                         sendMagParam.setType("5");
-                        sendMagParam.setUrl(ip + ":" + req_path + "//outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + svyTask.getTaskName() + "&param5=false");
-                        log.info("閾炬帴瀹屾暣璺緞锛歿}", req_path + "//outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + svyTask.getTaskName() + "&param5=false");
+                        sendMagParam.setUrl(url);
+                        log.info("閾炬帴瀹屾暣璺緞锛歿}", req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + svyTask.getTaskName() + "&param5=false");
                         //杩欎釜妯℃澘ID鍏堝啓姝伙紝鍚庨潰鍋氭垚鍙��
                         sendMagParam.setTmpCode("oG3pJHPVWpE81DmZsua_2tKwgJ97r0qz37z56ns7NB4");
                         Map map = new HashMap();
                         map.put("first", svyTask.getTaskName());
                         sendMagParam.setContent(JSON.toJSONString(map));
+                        sendMagParam.setOpenid(svyTaskSingle1.getOpenid());
                         Boolean aBoolean = sendService.sendMsg(sendMagParam);
+                        log.error("鍙戦�佹垚鍔熶簡鍚楋紵{}", aBoolean);
+//                        String wxCode = getWXCode(svyTaskSingle1.getIdcardno(), url);
 
                         //浠诲姟鍙戦�佽褰�
                         ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
@@ -472,7 +506,10 @@
                         serviceSubtaskRecord.setTasktype(svyTaskSingle1.getType());
                         serviceSubtaskRecord.setPreachform("4");
                         serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-                        serviceSubtaskRecord.setResult(aBoolean == true ? "鎴愬姛" : "澶辫触");
+                        serviceSubtaskRecord.setResult("鎴愬姛");
+//                        if (!wxCode.equals("0")) {
+//                            serviceSubtaskRecord.setResult("澶辫触");
+//                        }
                         serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                     }
                 }
@@ -545,4 +582,18 @@
         return key;
     }
 
+    private String getWXCode(String idcard, String url) {
+        XinHuaWXReq xinHuaWXReq = new XinHuaWXReq();
+        xinHuaWXReq.setIdcard(idcard);
+        xinHuaWXReq.setUrl(url);
+        xinHuaWXReq.setKeyword1(null);
+        xinHuaWXReq.setKeyword2(null);
+        xinHuaWXReq.setKeyword3(null);
+        xinHuaWXReq.setKeyword4(null);
+        String result = HttpUtils.sendPost(thirdWXUrl, new Gson().toJson(xinHuaWXReq));
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        String code = (String) jsonObject.get("code");
+        return code;
+    }
+
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java
index 5e64552..9f1a04d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedInhospController.java
@@ -1,4 +1,4 @@
-package com.smartor.controller;
+package com.ruoyi.web.controller.smartor;
 
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
@@ -7,6 +7,7 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.smartor.domain.PatMedInhosp;
+import com.smartor.domain.PatMedReq;
 import com.smartor.service.IPatMedInhospService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -26,8 +27,7 @@
 @Api(description = "鎮h�呬綇闄㈣褰�")
 @RestController
 @RequestMapping("/smartor/patinhosp")
-public class PatMedInhospController extends BaseController
-{
+public class PatMedInhospController extends BaseController {
     @Autowired
     private IPatMedInhospService patMedInhospService;
 
@@ -37,11 +37,22 @@
     @ApiOperation("鏌ヨ鎮h�呬綇闄㈣褰曞垪琛�")
     @PreAuthorize("@ss.hasPermi('smartor:patinhosp:list')")
     @PostMapping("/selectPatMedInhospList")
-    public TableDataInfo selectPatMedInhosplist(@RequestBody  PatMedInhosp patMedInhosp)
-    {
+    public TableDataInfo selectPatMedInhosplist(@RequestBody PatMedInhosp patMedInhosp) {
         startPage();
         List<PatMedInhosp> list = patMedInhospService.selectPatMedInhospList(patMedInhosp);
         return getDataTable(list);
+    }
+
+    @PostMapping("/getDeptCodeByPatId")
+    @ApiOperation("鏌ヨ浣忋�佸嚭闄㈤儴闂ㄧ紪鐮侀�氳繃patId")
+    public AjaxResult getDeptCodeByPatId(@RequestBody PatMedInhosp patMedInhosp) {
+        return success(patMedInhospService.getDeptCodeByPatId(patMedInhosp));
+    }
+
+    @PostMapping("/selectPatMedInhospListCount")
+    @ApiOperation("鏌ヨ鍑恒�佸叆闄㈢湅鐥呬汉娆″拰浜烘暟")
+    public AjaxResult selectPatMedInhospListCount(PatMedReq patMedReq) {
+        return success(patMedInhospService.selectPatMedInhospListCount(patMedReq));
     }
 
     /**
@@ -51,8 +62,7 @@
     @PreAuthorize("@ss.hasPermi('smartor:patinhosp:export')")
     @Log(title = "鎮h�呬綇闄㈣褰�", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, PatMedInhosp patMedInhosp)
-    {
+    public void export(HttpServletResponse response, PatMedInhosp patMedInhosp) {
         List<PatMedInhosp> list = patMedInhospService.selectPatMedInhospList(patMedInhosp);
         ExcelUtil<PatMedInhosp> util = new ExcelUtil<PatMedInhosp>(PatMedInhosp.class);
         util.exportExcel(response, list, "鎮h�呬綇闄㈣褰曟暟鎹�");
@@ -64,8 +74,7 @@
     @ApiOperation("鑾峰彇鎮h�呬綇闄㈣褰曡缁嗕俊鎭�")
     @PreAuthorize("@ss.hasPermi('smartor:patinhosp:query')")
     @GetMapping(value = "/{inhospid}")
-    public AjaxResult getInfo(@PathVariable("inhospid") Long inhospid)
-    {
+    public AjaxResult getInfo(@PathVariable("inhospid") Long inhospid) {
         return success(patMedInhospService.selectPatMedInhospByInhospid(inhospid));
     }
 
@@ -76,8 +85,7 @@
     @PreAuthorize("@ss.hasPermi('smartor:patinhosp:add')")
     @Log(title = "鎮h�呬綇闄㈣褰�", businessType = BusinessType.INSERT)
     @PostMapping("/add")
-    public AjaxResult add(@RequestBody PatMedInhosp patMedInhosp)
-    {
+    public AjaxResult add(@RequestBody PatMedInhosp patMedInhosp) {
         return toAjax(patMedInhospService.insertPatMedInhosp(patMedInhosp));
     }
 
@@ -88,8 +96,7 @@
     @PreAuthorize("@ss.hasPermi('smartor:patinhosp:edit')")
     @Log(title = "鎮h�呬綇闄㈣褰�", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody PatMedInhosp patMedInhosp)
-    {
+    public AjaxResult edit(@RequestBody PatMedInhosp patMedInhosp) {
         return toAjax(patMedInhospService.updatePatMedInhosp(patMedInhosp));
     }
 
@@ -99,9 +106,20 @@
     @ApiOperation("鍒犻櫎鎮h�呬綇闄㈣褰�")
     @PreAuthorize("@ss.hasPermi('smartor:patinhosp:remove')")
     @Log(title = "鎮h�呬綇闄㈣褰�", businessType = BusinessType.DELETE)
-	@GetMapping("/remove/{inhospids}")
-    public AjaxResult remove(@PathVariable Long[] inhospids)
-    {
+    @GetMapping("/remove/{inhospids}")
+    public AjaxResult remove(@PathVariable Long[] inhospids) {
         return toAjax(patMedInhospService.deletePatMedInhospByInhospids(inhospids));
     }
+
+    /**
+     * 鍚勭瀹ゆ湇鍔′汉娆�
+     *
+     * @return
+     */
+    @ApiOperation("鍚勭瀹ゆ湇鍔′汉娆�")
+    @PostMapping("/getDeptRanking")
+    public TableDataInfo getDeptRanking(@RequestBody PatMedReq patMedReq) {
+        return getDataTable(patMedInhospService.getDeptRanking(patMedReq));
+    }
+
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedOuthospController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedOuthospController.java
index 7731e44..5bd4ab6 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedOuthospController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatMedOuthospController.java
@@ -4,6 +4,8 @@
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
+import com.smartor.domain.PatMedReq;
+import com.smartor.domain.PatMedRes;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
@@ -45,13 +47,29 @@
     @PreAuthorize("@ss.hasPermi('smartor:patouthosp:list')")
     @PostMapping("/selectPatMedOuthospList")
     @ApiOperation("鏌ヨ鎮h�呴棬璇婅褰曞垪琛�")
-    public TableDataInfo selectPatMedOuthosplist(@RequestBody  PatMedOuthosp patMedOuthosp) {
+    public TableDataInfo selectPatMedOuthosplist(@RequestBody PatMedOuthosp patMedOuthosp) {
         startPage();
         List<PatMedOuthosp> list = patMedOuthospService.selectPatMedOuthospList(patMedOuthosp);
         return getDataTable(list);
     }
 
     /**
+     * 鏌ヨ鎮h�呴棬璇婅褰曞垪琛�
+     */
+    @PostMapping("/selectPatMedOuthospCount")
+    @ApiOperation("鏌ヨ闂ㄨ瘖鐪嬬梾浜烘鍜屼汉鏁�")
+    public AjaxResult selectPatMedOuthospCount(@RequestBody PatMedReq patMedReq) {
+        PatMedRes patMedRes = patMedOuthospService.selectPatMedOuthospCount(patMedReq);
+        return success(patMedRes);
+    }
+
+    @PostMapping("/getDeptCodeByPatId")
+    @ApiOperation("鏌ヨ閮ㄩ棬缂栫爜閫氳繃userId")
+    public AjaxResult getDeptCodeByPatId(@RequestBody PatMedOuthosp patMedOuthosp) {
+        return success(patMedOuthospService.getDeptCodeByPatId(patMedOuthosp));
+    }
+
+    /**
      * 瀵煎嚭鎮h�呴棬璇婅褰曞垪琛�
      */
     @PreAuthorize("@ss.hasPermi('smartor:patouthosp:export')")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java
index 7ba7922..e9c70c4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java
@@ -6,10 +6,7 @@
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.smartor.domain.ServiceSubTaskAnswerReq;
-import com.smartor.domain.ServiceSubTaskCacheReq;
-import com.smartor.domain.ServiceSubTaskQueryReq;
-import com.smartor.domain.ServiceSubtaskAnswer;
+import com.smartor.domain.*;
 import com.smartor.service.IServiceSubtaskAnswerService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -115,6 +112,12 @@
         return toAjax(serviceSubtaskAnswerService.saveQuestionCache(serviceSubTaskCacheReq));
     }
 
+    @ApiOperation("鑾峰彇鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(澶栭摼)")
+    @PostMapping("/getQuestionCache")
+    public AjaxResult getQuestionCache(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {
+        return AjaxResult.success(serviceSubtaskAnswerService.getQuestionCache(serviceSubTaskCacheReq));
+    }
+
 
     @ApiOperation("鍖荤敓鏌ヨ鎮h�呴棶棰樼粨鏋�(澶栭摼)")
     @PostMapping("/selectPatQuestionResult")
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 5faa0b4..4f5fad2 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
@@ -56,8 +56,9 @@
     @PreAuthorize("@ss.hasPermi('system:taskcall:export')")
     @Log(title = "鍗曚竴浠诲姟锛堥殢璁垮鏁欙級", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, ServiceSubtask ivrTaskcall) {
-        List<ServiceSubtask> list = serviceSubtaskService.selectServiceSubtaskList(ivrTaskcall);
+    public void export(HttpServletResponse response, ServiceSubtask serviceSubtask) {
+        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);
+        List<ServiceSubtask> list = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO);
         ExcelUtil<ServiceSubtask> util = new ExcelUtil<ServiceSubtask>(ServiceSubtask.class);
         util.exportExcel(response, list, "鍗曚竴浠诲姟锛堥殢璁匡級鏁版嵁");
     }
@@ -93,8 +94,8 @@
     @PostMapping("/queryTaskByCondition")
     public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO ivrTaskcallVO) {
         //鏍规嵁鍏ュ弬鏌ヨ淇℃伅
-        ServiceSubtask ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, ServiceSubtask.class);
-        ServiceTaskVO ivrTaskVO = serviceSubtaskService.queryTaskByCondition(ivrTaskcall);
+        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, ServiceSubtask.class);
+        ServiceTaskVO ivrTaskVO = serviceSubtaskService.queryTaskByCondition(serviceSubtask);
         return success(ivrTaskVO);
     }
 
@@ -146,4 +147,13 @@
         return toAjax(serviceSubtaskService.saveQuestionAnswerPhone(serviceSubTaskDetailReq));
     }
 
+    /**
+     * 鑾峰彇姣忎釜鏈堢殑闅忚銆佸璇婇噺
+     */
+    @ApiOperation("鑾峰彇姣忎釜鏈堢殑闅忚銆佸璇婇噺")
+    @PostMapping("/getSfFzInfoEveryMonth")
+    public TableDataInfo getSfFzInfoEveryMonth(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        return getDataTable(serviceSubtaskService.getSfFzInfoEveryMonth(serviceSubtaskCountReq));
+    }
+
 }
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 8a872c2..f3b4d20 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
@@ -9,6 +9,7 @@
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.RSAPublicKeyExample;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.smartor.domain.*;
 import com.smartor.service.IServiceSubtaskService;
@@ -23,6 +24,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.net.URLDecoder;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -49,6 +51,9 @@
     @Value("${pri_key}")
     private String pri_key;
 
+    @Autowired
+    private RSAPublicKeyExample rsaPublicKeyExample;
+
     /**
      * 鏌ヨ璇煶浠诲姟鍒楄〃
      */
@@ -62,7 +67,7 @@
 
         if (CollectionUtils.isNotEmpty(serviceTaskVOS)) {
             for (ServiceTaskVO ServiceTaskVO : serviceTaskVOS) {
-                ServiceSubtask ServiceTaskcall = new ServiceSubtask();
+                ServiceSubtaskVO ServiceTaskcall = new ServiceSubtaskVO();
                 ServiceTaskcall.setTaskid(ServiceTaskVO.getTaskid());
                 List<ServiceSubtask> ServiceTaskcalls = iServiceTaskCallService.selectServiceSubtaskList(ServiceTaskcall);
                 if (CollectionUtils.isNotEmpty(ServiceTaskcalls)) {
@@ -153,9 +158,13 @@
     @ApiOperation("鍒犻櫎浠诲姟(鍖呮嫭瀹冨搴旂殑鎮h�呬俊鎭�)")
     @PreAuthorize("@ss.hasPermi('smartor:ServiceTask:remove')")
     @Log(title = "璇煶浠诲姟", businessType = BusinessType.DELETE)
-    @GetMapping("/remove/{removeTask}")
-    public AjaxResult removeTask(@PathVariable Long taskId) {
-        return toAjax(serviceTaskService.deleteServiceTaskByTaskid(taskId));
+    @GetMapping("/remove/{taskId}")
+    public AjaxResult removeTask(@PathVariable("taskId") String taskId) {
+        if (StringUtils.isEmpty(taskId)) {
+            AjaxResult.error("鍏ュ弬涓嶈兘涓虹┖");
+        }
+        Long tid = Long.valueOf(taskId);
+        return toAjax(serviceTaskService.deleteServiceTaskByTaskid(tid));
     }
 
     /**
@@ -165,12 +174,21 @@
      */
     @ApiOperation("閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅")
     @PostMapping("/getScriptInfoByCondition")
-    public TableDataInfo getScriptInfoByCondition(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) {
-        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-        Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam1(), pri_key));
-        Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam2(), pri_key));
+    public AjaxResult getScriptInfoByCondition(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) {
+        Long tid = null;
+        Long pid = null;
+        log.info("getScriptInfoByCondition鍏ュ弬涓猴細{}", serviceTaskScriptQues);
+        try {
+//            tid = Long.valueOf(rsaPublicKeyExample.decryptedData(URLDecoder.decode(serviceTaskScriptQues.getParam1(), "UTF-8"), pri_key));
+//            pid = Long.valueOf(rsaPublicKeyExample.decryptedData(URLDecoder.decode(serviceTaskScriptQues.getParam2(), "UTF-8"), pri_key));
+            tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam1(), pri_key));
+            pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam2(), pri_key));
+        } catch (Exception e) {
+            log.error("getScriptInfoByCondition鎶ラ敊浜嗭細{}", e.getMessage());
+        }
+
         log.info("tid鍜宲id鐨勫�间负锛歿},{}", tid, pid);
-        return getDataTable(serviceTaskService.getScriptInfoByCondition(tid, pid));
+        return success(serviceTaskService.getScriptInfoByCondition(tid, pid));
     }
 
 }
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 876adb6..d7e5ec9 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
@@ -11,6 +11,7 @@
 import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.smartor.domain.*;
+import com.smartor.service.IServiceSubtaskService;
 import com.smartor.service.ISvyTaskService;
 import com.smartor.service.ISvyTaskSingleService;
 import io.swagger.annotations.Api;
@@ -39,9 +40,14 @@
 public class SvyTaskController extends BaseController {
     @Autowired
     private ISvyTaskService svyTaskService;
+//
+//    @Autowired
+//    private ISvyTaskSingleService iSvyTaskSingleService;
 
     @Autowired
-    private ISvyTaskSingleService iSvyTaskSingleService;
+    private IServiceSubtaskService serviceSubtaskService;
+
+
 
     @Value("${pub_key}")
     private String pub_key;
@@ -61,9 +67,9 @@
         List<SvyTaskVO> svyTaskVOS = DtoConversionUtils.sourceToTarget(list, SvyTaskVO.class);
         if (CollectionUtils.isNotEmpty(svyTaskVOS)) {
             for (SvyTaskVO svyTaskVO : svyTaskVOS) {
-                SvyTaskSingle svyTaskSingle = new SvyTaskSingle();
-                svyTaskSingle.setTaskid(svyTaskVO.getTaskid());
-                List<SvyTaskSingle> svyTaskSingles = iSvyTaskSingleService.selectSvyTaskSingleList(svyTaskSingle);
+                ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+                serviceSubtaskVO.setTaskid(svyTaskVO.getTaskid());
+                List<ServiceSubtask> svyTaskSingles = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO);
                 if (CollectionUtils.isNotEmpty(svyTaskSingles)) {
                     //宸插彂閫�
                     long yfs = svyTaskSingles.stream().filter(svyTaskcall1 -> svyTaskcall1.getSendstate() != null && svyTaskcall1.getSendstate() == 3L).collect(Collectors.toList()).stream().count();
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskSingleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskSingleController.java
index f72d878..639975c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskSingleController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskSingleController.java
@@ -26,80 +26,12 @@
  * @author ruoyi
  * @date 2024-06-12
  */
-@Api(description = "鍗曚竴浠诲姟锛堥棶鍗凤級")
+@Api(description = "鍗曚竴浠诲姟锛堥棶鍗凤級(宸茬粡鎹㈡垚service_subtask)")
 @RestController
 @RequestMapping("/smartor/svysingle")
 public class SvyTaskSingleController extends BaseController {
     @Autowired
     private ISvyTaskSingleService svyTaskSingleService;
-
-    /**
-     * 鏌ヨ鍗曚竴浠诲姟锛堥棶鍗凤級鍒楄〃
-     */
-    @ApiOperation("鏌ヨ鍗曚竴浠诲姟锛堥棶鍗凤級鍒楄〃")
-    @PreAuthorize("@ss.hasPermi('system:single:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(SvyTaskSingle svyTaskSingle) {
-        startPage();
-        List<SvyTaskSingle> list = svyTaskSingleService.selectSvyTaskSingleList(svyTaskSingle);
-        return getDataTable(list);
-    }
-
-    /**
-     * 瀵煎嚭鍗曚竴浠诲姟锛堥棶鍗凤級鍒楄〃
-     */
-    @ApiOperation("瀵煎嚭鍗曚竴浠诲姟锛堥棶鍗凤級鍒楄〃")
-    @PreAuthorize("@ss.hasPermi('system:single:export')")
-    @Log(title = "鍗曚竴浠诲姟锛堥棶鍗凤級", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SvyTaskSingle svyTaskSingle) {
-        List<SvyTaskSingle> list = svyTaskSingleService.selectSvyTaskSingleList(svyTaskSingle);
-        ExcelUtil<SvyTaskSingle> util = new ExcelUtil<SvyTaskSingle>(SvyTaskSingle.class);
-        util.exportExcel(response, list, "鍗曚竴浠诲姟锛堥棶鍗凤級鏁版嵁");
-    }
-
-    /**
-     * 鑾峰彇鍗曚竴浠诲姟锛堥棶鍗凤級璇︾粏淇℃伅
-     */
-    @ApiOperation("鑾峰彇鍗曚竴浠诲姟锛堥棶鍗凤級璇︾粏淇℃伅")
-    @PreAuthorize("@ss.hasPermi('system:single:query')")
-    @GetMapping(value = "/getInfo/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id) {
-        return success(svyTaskSingleService.selectSvyTaskSingleById(id));
-    }
-
-    /**
-     * 鏂板鍗曚竴浠诲姟锛堥棶鍗凤級
-     */
-    @ApiOperation("鏂板鍗曚竴浠诲姟锛堥棶鍗凤級")
-    @PreAuthorize("@ss.hasPermi('system:single:add')")
-    @Log(title = "鍗曚竴浠诲姟锛堥棶鍗凤級", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    public AjaxResult add(@RequestBody SvyTaskSingle svyTaskSingle) {
-        return toAjax(svyTaskSingleService.insertSvyTaskSingle(svyTaskSingle));
-    }
-
-    /**
-     * 淇敼鍗曚竴浠诲姟锛堥棶鍗凤級
-     */
-    @ApiOperation("淇敼鍗曚竴浠诲姟锛堥棶鍗凤級")
-    @PreAuthorize("@ss.hasPermi('system:single:edit')")
-    @Log(title = "鍗曚竴浠诲姟锛堥棶鍗凤級", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    public AjaxResult edit(@RequestBody SvyTaskSingle svyTaskSingle) {
-        return toAjax(svyTaskSingleService.updateSvyTaskSingle(svyTaskSingle));
-    }
-
-    /**
-     * 鍒犻櫎鍗曚竴浠诲姟锛堥棶鍗凤級
-     */
-    @ApiOperation(" 鍒犻櫎鍗曚竴浠诲姟锛堥棶鍗凤級")
-    @PreAuthorize("@ss.hasPermi('system:single:remove')")
-    @Log(title = "鍗曚竴浠诲姟锛堥棶鍗凤級", businessType = BusinessType.DELETE)
-    @GetMapping("/remove/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids) {
-        return toAjax(svyTaskSingleService.deleteSvyTaskSingleByIds(ids));
-    }
 
     /**
      * 鏂板鎴栦慨鏀瑰垹闄ら棶鍗蜂换鍔�
@@ -111,7 +43,8 @@
         LoginUser loginUser = getLoginUser();
         SysUser user = loginUser.getUser();
         svyTaskVO.setCreateBy(user.getNickName());
-        return toAjax(svyTaskSingleService.insertOrUpdateSvyTask(svyTaskVO));
+        ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(svyTaskVO, ServiceTaskVO.class);
+        return toAjax(svyTaskSingleService.insertOrUpdateSvyTask(serviceTaskVO));
     }
 
     /**
@@ -121,8 +54,8 @@
     @PostMapping("/queryTaskByCondition")
     public AjaxResult queryTaskByCondition(@RequestBody SvyTaskSingleVO svyTaskSingleVO) {
         //鏍规嵁鍏ュ弬鏌ヨ淇℃伅
-        SvyTaskSingle svyTaskSingle = DtoConversionUtils.sourceToTarget(svyTaskSingleVO, SvyTaskSingle.class);
-        SvyTaskVO svyTaskVO = svyTaskSingleService.queryTaskByCondition(svyTaskSingle);
+        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(svyTaskSingleVO, ServiceSubtask.class);
+        ServiceTaskVO svyTaskVO = svyTaskSingleService.queryTaskByCondition(serviceSubtask);
         return success(svyTaskVO);
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
index 892587c..677e095 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
@@ -27,7 +27,7 @@
 
 /**
  * 閮ㄩ棬淇℃伅
- * 
+ *
  * @author ruoyi
  */
 @Api(description = "閮ㄩ棬淇℃伅")
@@ -68,7 +68,7 @@
      */
     @ApiOperation("鏍规嵁閮ㄩ棬缂栧彿鑾峰彇璇︾粏淇℃伅")
     @PreAuthorize("@ss.hasPermi('system:dept:query')")
-    @GetMapping(value = "/getInfo/{deptId}")
+    @GetMapping("/getInfo/{deptId}")
     public AjaxResult getInfo(@PathVariable Long deptId)
     {
         deptService.checkDeptDataScope(deptId);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 73a3604..0d69de3 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -34,8 +34,7 @@
  */
 @RestController
 @RequestMapping("/system/user")
-public class SysUserController extends BaseController
-{
+public class SysUserController extends BaseController {
     @Autowired
     private ISysUserService userService;
 
@@ -53,8 +52,7 @@
      */
     @PreAuthorize("@ss.hasPermi('system:user:list')")
     @GetMapping("/list")
-    public TableDataInfo list(SysUser user)
-    {
+    public TableDataInfo list(SysUser user) {
         startPage();
         List<SysUser> list = userService.selectUserList(user);
         return getDataTable(list);
@@ -63,8 +61,7 @@
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('system:user:export')")
     @PostMapping("/export")
-    public void export(HttpServletResponse response, SysUser user)
-    {
+    public void export(HttpServletResponse response, SysUser user) {
         List<SysUser> list = userService.selectUserList(user);
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         util.exportExcel(response, list, "鐢ㄦ埛鏁版嵁");
@@ -73,8 +70,7 @@
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.IMPORT)
     @PreAuthorize("@ss.hasPermi('system:user:import')")
     @PostMapping("/importData")
-    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
-    {
+    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         List<SysUser> userList = util.importExcel(file.getInputStream());
         String operName = getUsername();
@@ -83,8 +79,7 @@
     }
 
     @PostMapping("/importTemplate")
-    public void importTemplate(HttpServletResponse response)
-    {
+    public void importTemplate(HttpServletResponse response) {
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         util.importTemplateExcel(response, "鐢ㄦ埛鏁版嵁");
     }
@@ -93,16 +88,14 @@
      * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇璇︾粏淇℃伅
      */
     @PreAuthorize("@ss.hasPermi('system:user:query')")
-    @GetMapping(value = { "/", "/{userId}" })
-    public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId)
-    {
+    @GetMapping("/getInfo/{userId}")
+    public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) {
         userService.checkUserDataScope(userId);
         AjaxResult ajax = AjaxResult.success();
         List<SysRole> roles = roleService.selectRoleAll();
         ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
         ajax.put("posts", postService.selectPostAll());
-        if (StringUtils.isNotNull(userId))
-        {
+        if (StringUtils.isNotNull(userId)) {
             SysUser sysUser = userService.selectUserById(userId);
             ajax.put(AjaxResult.DATA_TAG, sysUser);
             ajax.put("postIds", postService.selectPostListByUserId(userId));
@@ -117,20 +110,12 @@
     @PreAuthorize("@ss.hasPermi('system:user:add')")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.INSERT)
     @PostMapping("/add")
-    public AjaxResult add(@Validated @RequestBody SysUser user)
-    {
-        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user)))
-        {
+    public AjaxResult add(@Validated @RequestBody SysUser user) {
+        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) {
             return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber())
-                && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
-        {
+        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
             return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail())
-                && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
-        {
+        } else if (StringUtils.isNotEmpty(user.getEmail()) && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
             return error("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
         }
         user.setCreateBy(getUsername());
@@ -144,22 +129,14 @@
     @PreAuthorize("@ss.hasPermi('system:user:edit')")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-    public AjaxResult edit(@Validated @RequestBody SysUser user)
-    {
+    public AjaxResult edit(@Validated @RequestBody SysUser user) {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
-        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user)))
-        {
+        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) {
             return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber())
-                && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
-        {
+        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
             return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail())
-                && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
-        {
+        } else if (StringUtils.isNotEmpty(user.getEmail()) && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
             return error("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪");
         }
         user.setUpdateBy(getUsername());
@@ -172,10 +149,8 @@
     @PreAuthorize("@ss.hasPermi('system:user:remove')")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.DELETE)
     @GetMapping("/remove/{userIds}")
-    public AjaxResult remove(@PathVariable Long[] userIds)
-    {
-        if (ArrayUtils.contains(userIds, getUserId()))
-        {
+    public AjaxResult remove(@PathVariable Long[] userIds) {
+        if (ArrayUtils.contains(userIds, getUserId())) {
             return error("褰撳墠鐢ㄦ埛涓嶈兘鍒犻櫎");
         }
         return toAjax(userService.deleteUserByIds(userIds));
@@ -187,8 +162,7 @@
     @PreAuthorize("@ss.hasPermi('system:user:resetPwd')")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
     @PostMapping("/resetPwd")
-    public AjaxResult resetPwd(@RequestBody SysUser user)
-    {
+    public AjaxResult resetPwd(@RequestBody SysUser user) {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
         user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
@@ -202,8 +176,7 @@
     @PreAuthorize("@ss.hasPermi('system:user:edit')")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
     @PostMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysUser user)
-    {
+    public AjaxResult changeStatus(@RequestBody SysUser user) {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
         user.setUpdateBy(getUsername());
@@ -215,8 +188,7 @@
      */
     @PreAuthorize("@ss.hasPermi('system:user:query')")
     @GetMapping("/authRole/{userId}")
-    public AjaxResult authRole(@PathVariable("userId") Long userId)
-    {
+    public AjaxResult authRole(@PathVariable("userId") Long userId) {
         AjaxResult ajax = AjaxResult.success();
         SysUser user = userService.selectUserById(userId);
         List<SysRole> roles = roleService.selectRolesByUserId(userId);
@@ -231,8 +203,7 @@
     @PreAuthorize("@ss.hasPermi('system:user:edit')")
     @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.GRANT)
     @PostMapping("/authRole")
-    public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
-    {
+    public AjaxResult insertAuthRole(Long userId, Long[] roleIds) {
         userService.checkUserDataScope(userId);
         userService.insertUserAuth(userId, roleIds);
         return success();
@@ -243,8 +214,7 @@
      */
     @PreAuthorize("@ss.hasPermi('system:user:list')")
     @GetMapping("/deptTree")
-    public AjaxResult deptTree(SysDept dept)
-    {
+    public AjaxResult deptTree(SysDept dept) {
         return success(deptService.selectDeptTreeList(dept));
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserDeptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserDeptController.java
new file mode 100644
index 0000000..938619b
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserDeptController.java
@@ -0,0 +1,106 @@
+package com.ruoyi.web.controller.system;
+
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUserDept;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.system.service.ISysUserDeptService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慍ontroller
+ *
+ * @author lihu
+ * @date 2024-08-29
+ */
+@Api("銆愯濉啓鍔熻兘鍚嶇О銆�")
+@RestController
+@RequestMapping("/smartor/userdept")
+public class SysUserDeptController extends BaseController
+{
+    @Autowired
+    private ISysUserDeptService sysUserDeptService;
+
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
+     */
+    @ApiOperation("鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�")
+    @PreAuthorize("@ss.hasPermi('smartor:dept:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(SysUserDept sysUserDept)
+    {
+        startPage();
+        List<SysUserDept> list = sysUserDeptService.selectSysUserDeptList(sysUserDept);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
+     */
+    @ApiOperation("瀵煎嚭銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�")
+    @PreAuthorize("@ss.hasPermi('smartor:dept:export')")
+    @Log(title = "銆愯濉啓鍔熻兘鍚嶇О銆�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, SysUserDept sysUserDept)
+    {
+        List<SysUserDept> list = sysUserDeptService.selectSysUserDeptList(sysUserDept);
+        ExcelUtil<SysUserDept> util = new ExcelUtil<SysUserDept>(SysUserDept.class);
+        util.exportExcel(response, list, "銆愯濉啓鍔熻兘鍚嶇О銆戞暟鎹�");
+    }
+
+    /**
+     * 鑾峰彇銆愯濉啓鍔熻兘鍚嶇О銆戣缁嗕俊鎭�
+     */
+    @ApiOperation("鑾峰彇銆愯濉啓鍔熻兘鍚嶇О銆戣缁嗕俊鎭�")
+    @PreAuthorize("@ss.hasPermi('smartor:dept:query')")
+    @GetMapping(value = "/getInfo/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(sysUserDeptService.selectSysUserDeptById(id));
+    }
+
+    /**
+     * 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    @PreAuthorize("@ss.hasPermi('smartor:dept:add')")
+    @Log(title = "銆愯濉啓鍔熻兘鍚嶇О銆�", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody SysUserDept sysUserDept)
+    {
+        return toAjax(sysUserDeptService.insertSysUserDept(sysUserDept));
+    }
+
+    /**
+     * 淇敼銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    @ApiOperation("淇敼銆愯濉啓鍔熻兘鍚嶇О銆�")
+    @PreAuthorize("@ss.hasPermi('smartor:dept:edit')")
+    @Log(title = "銆愯濉啓鍔熻兘鍚嶇О銆�", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    public AjaxResult edit(@RequestBody SysUserDept sysUserDept)
+    {
+        return toAjax(sysUserDeptService.updateSysUserDept(sysUserDept));
+    }
+
+    /**
+     * 鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    @ApiOperation("鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�")
+    @PreAuthorize("@ss.hasPermi('smartor:dept:remove')")
+    @Log(title = "銆愯濉啓鍔熻兘鍚嶇О銆�", businessType = BusinessType.DELETE)
+	@GetMapping("/remove/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(sysUserDeptService.deleteSysUserDeptByIds(ids));
+    }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java b/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java
index 95686f0..d9d78bd 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java
@@ -1,23 +1,172 @@
 package com.ruoyi.web.test;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.smartor.domain.ThiedInhospInfo;
 import org.junit.Test;
 
+import java.lang.reflect.Type;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
+import java.util.List;
 
 //@SpringBootTest
 //@RunWith(SpringRunner.class)
 public class MQTest {
 
 
+    String result="{\n" +
+            "    \"code\": \"0\",\n" +
+            "    \"message\": \"success\",\n" +
+            "    \"data\": {\n" +
+            "        \"result\": ["+
+            " {\n" +
+            "                \"admissDeptName\": \"娴嬭瘯绉戝\",\n" +
+            "                \"patiTypeId\": \"22\",\n" +
+            "                \"companyTelNum\": \"\",\n" +
+            "                \"currDeptCode\": \"1024\",\n" +
+            "                \"currWardCode\": \"1331\",\n" +
+            "                \"patiIdCardNo\": \"\",\n" +
+            "                \"PatiHomeAddr\": \"娴欐睙鐪佹澀宸炲競鎷卞鍖篭",\n" +
+            "                \"patiMediaId\": \"69674\",\n" +
+            "                \"admissBedNo\": \"\",\n" +
+            "                \"patiBirthday\": \"2009-03-03 00:00:00\",\n" +
+            "                \"Education\": null,\n" +
+            "                \"nationalityAddr\": \"\",\n" +
+            "                \"admissWardCode\": \"1331\",\n" +
+            "                \"doctId\": \"6af3708533e645edb10a655cabead79f\",\n" +
+            "                \"inpatientId\": \"2403000055\",\n" +
+            "                \"ProfessionId\": \"\",\n" +
+            "                \"admissWardId\": \"7f95c670151746bca580c866ae56cfeb\",\n" +
+            "                \"doctName\": \"娴嬭瘯鍖荤敓\",\n" +
+            "                \"currBedId\": \"7aeeb24077b1434d8f2b6ccb204f9159\",\n" +
+            "                \"diagName\": \"鍍礬",\n" +
+            "                \"currWardName\": \"娴嬭瘯鐥呭尯\",\n" +
+            "                \"totalAmount\": 0.00,\n" +
+            "                \"admissWardName\": \"娴嬭瘯鐥呭尯\",\n" +
+            "                \"contactPersonName\": null,\n" +
+            "                \"patiMediaNo\": \"024000070\",\n" +
+            "                \"patiIndex\": \"024000070\",\n" +
+            "                \"diagIcd10\": \"M20.200\",\n" +
+            "                \"admissDeptCode\": \"1024\",\n" +
+            "                \"patiRecordGender\": \"濂砛",\n" +
+            "                \"patiNatureId\": \"22\",\n" +
+            "                \"treateAge\": 15,\n" +
+            "                \"suggestAmount\": \"\",\n" +
+            "                \"contactPersonAddr\": null,\n" +
+            "                \"contactPersonPhone\": null,\n" +
+            "                \"admissBedId\": \"\",\n" +
+            "                \"treatAgeunit\": \"宀乗",\n" +
+            "                \"currBedNo\": \"T-003\",\n" +
+            "                \"PatiNation\": \"姹夋棌\",\n" +
+            "                \"patiRecordName\": \"鏃㈠線3-5\",\n" +
+            "                \"currDeptId\": \"416a047536b411e7bff40242ac103005\",\n" +
+            "                \"outWayName\": null,\n" +
+            "                \"RelationShip\": \"\",\n" +
+            "                \"admitFormId\": null,\n" +
+            "                \"patiNatureName\": \"闈炶璐﹀尰淇漒",\n" +
+            "                \"PatiNationality\": \"涓浗\",\n" +
+            "                \"outDate\": null,\n" +
+            "                \"admissDeptId\": \"416a047536b411e7bff40242ac103005\",\n" +
+            "                \"admissDate\": \"2024-03-05 14:33:00\",\n" +
+            "                \"currStatus\": 2,\n" +
+            "                \"DocName\": \"\",\n" +
+            "                \"patiTypeName\": \"闈炶璐﹀尰淇漒",\n" +
+            "                \"currDeptName\": \"娴嬭瘯绉戝\",\n" +
+            "                \"currWardId\": \"7f95c670151746bca580c866ae56cfeb\",\n" +
+            "                \"areaId\": \"\",\n" +
+            "                \"PatiMaritalStatus\": null,\n" +
+            "                \"PatiHomePhone\": \"\",\n" +
+            "                \"preoutDate\": null,\n" +
+            "                \"outWayId\": null,\n" +
+            "                \"inhospitalTimes\": 3,\n" +
+            "                \"patiRecordId\": \"69409\",\n" +
+            "                \"age\": \"15宀乗",\n" +
+            "                \"diagId\": \"314216\"\n" +
+            "            },\n" +
+            "            {\n" +
+            "                \"admissDeptName\": \"娴嬭瘯绉戝\",\n" +
+            "                \"patiTypeId\": \"22\",\n" +
+            "                \"companyTelNum\": \"\",\n" +
+            "                \"currDeptCode\": \"1024\",\n" +
+            "                \"currWardCode\": \"1331\",\n" +
+            "                \"patiIdCardNo\": \"330106198001030057\",\n" +
+            "                \"PatiHomeAddr\": \"娴欐睙鐪佹澀宸炲競瑗挎箹鍖篭",\n" +
+            "                \"patiMediaId\": \"69675\",\n" +
+            "                \"admissBedNo\": \"\",\n" +
+            "                \"patiBirthday\": \"1980-01-03 00:00:00\",\n" +
+            "                \"Education\": null,\n" +
+            "                \"nationalityAddr\": \"\",\n" +
+            "                \"admissWardCode\": \"1331\",\n" +
+            "                \"doctId\": \"7d3f0eaaec304bbfad8a8471998e38e4\",\n" +
+            "                \"inpatientId\": \"2403000056\",\n" +
+            "                \"ProfessionId\": \"\",\n" +
+            "                \"admissWardId\": \"7f95c670151746bca580c866ae56cfeb\",\n" +
+            "                \"doctName\": \"浣忛櫌鐥呭巻\",\n" +
+            "                \"currBedId\": \"377f94ca047e4786aef56a1ac22678b7\",\n" +
+            "                \"diagName\": \"鐦熺梾\",\n" +
+            "                \"currWardName\": \"娴嬭瘯鐥呭尯\",\n" +
+            "                \"totalAmount\": 0.00,\n" +
+            "                \"admissWardName\": \"娴嬭瘯鐥呭尯\",\n" +
+            "                \"contactPersonName\": \"\",\n" +
+            "                \"patiMediaNo\": \"024000071\",\n" +
+            "                \"patiIndex\": \"024000071\",\n" +
+            "                \"diagIcd10\": \"A01.03.01.\",\n" +
+            "                \"admissDeptCode\": \"1024\",\n" +
+            "                \"patiRecordGender\": \"鐢穃",\n" +
+            "                \"patiNatureId\": \"22\",\n" +
+            "                \"treateAge\": 44,\n" +
+            "                \"suggestAmount\": \"\",\n" +
+            "                \"contactPersonAddr\": \"\",\n" +
+            "                \"contactPersonPhone\": \"\",\n" +
+            "                \"admissBedId\": \"\",\n" +
+            "                \"treatAgeunit\": \"宀乗",\n" +
+            "                \"currBedNo\": \"T-006\",\n" +
+            "                \"PatiNation\": \"姹夋棌\",\n" +
+            "                \"patiRecordName\": \"鎷呬繚閲戦01\",\n" +
+            "                \"currDeptId\": \"416a047536b411e7bff40242ac103005\",\n" +
+            "                \"outWayName\": null,\n" +
+            "                \"RelationShip\": \"\",\n" +
+            "                \"admitFormId\": null,\n" +
+            "                \"patiNatureName\": \"闈炶璐﹀尰淇漒",\n" +
+            "                \"PatiNationality\": \"涓浗\",\n" +
+            "                \"outDate\": null,\n" +
+            "                \"admissDeptId\": \"416a047536b411e7bff40242ac103005\",\n" +
+            "                \"admissDate\": \"2024-03-07 14:04:00\",\n" +
+            "                \"currStatus\": 2,\n" +
+            "                \"DocName\": \"\",\n" +
+            "                \"patiTypeName\": \"闈炶璐﹀尰淇漒",\n" +
+            "                \"currDeptName\": \"娴嬭瘯绉戝\",\n" +
+            "                \"currWardId\": \"7f95c670151746bca580c866ae56cfeb\",\n" +
+            "                \"areaId\": \"\",\n" +
+            "                \"PatiMaritalStatus\": null,\n" +
+            "                \"PatiHomePhone\": \"\",\n" +
+            "                \"preoutDate\": null,\n" +
+            "                \"outWayId\": null,\n" +
+            "                \"inhospitalTimes\": 1,\n" +
+            "                \"patiRecordId\": \"69410\",\n" +
+            "                \"age\": \"44宀乗",\n" +
+            "                \"diagId\": \"1000040\"\n" +
+            "            }\n" +
+            "        ],\n" +
+            "        \"hasNext\": false\n" +
+            "    }\n" +
+            "}";
     @Test
     public void testSend22() {
-        LocalTime now = LocalTime.now();
-        System.out.println("褰撳墠鏃跺垎: " + now.format(DateTimeFormatter.ofPattern("hh:mm")));
+        Gson gson = new Gson();
+        JsonObject jsonObject = gson.fromJson(result, JsonObject.class);
+        JsonArray resultArray = jsonObject.getAsJsonObject("data").getAsJsonArray("result");
 
-        // 鑾峰彇涓嬩竴鍒嗛挓鐨勬椂鍒�
-        LocalTime nextMinute = now.plusMinutes(1);
-        System.out.println("涓嬩竴鍒嗛挓鐨勬椂鍒�: " + nextMinute.format(DateTimeFormatter.ofPattern("hh:mm")));
+        // 瀹氫箟 ResultItem 鐨勭被鍨�
+        Type resultType = new TypeToken<List<ThiedInhospInfo>>() {}.getType();
+        List<ThiedInhospInfo> resultList = gson.fromJson(resultArray, resultType);
+        System.out.println(resultList);
     }
 
 
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index cfc57dd..1919a44 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -1,4 +1,4 @@
-  # 鏁版嵁婧愰厤缃�
+# 鏁版嵁婧愰厤缃�
 spring:
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
@@ -10,9 +10,11 @@
         #        url: jdbc:mysql://127.0.0.1:3306/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         #        username: root
         #        password: 123456
-
+        #192.168.1.16:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         #        鍏徃
-        url: jdbc:mysql://192.168.1.16:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+#        url: jdbc:mysql://450scrp46939.vicp.fun:59876/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+#        url: jdbc:mysql://192.168.1.16:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        url: jdbc:mysql://127.0.0.1:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         username: smartor
         password: Smartor.2023
         driverClassName: com.mysql.cj.jdbc.Driver
@@ -90,6 +92,8 @@
   #寰俊鍏紬鍙风殑瀵嗛挜
 appid: wx1c5243d2337753f4
 appSecret: 84a2186a0d175e88345267c716516cd3
+#绗笁鏂瑰井淇″叕浼楀彿鍙戦�佸湴鍧�锛堟柊鍗庡尰闄級
+thirdWXUrl: http://192.16.4.220:8103/api
 
 #閽夐拤鐨勫瘑閽�
 dingAppid: dingn8iip5ubj7clrrsv
@@ -127,8 +131,9 @@
 
 pub_key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==
 #杩欎釜鏄悗绔殑绉侀挜锛岀敤涓嶅埌
-#pri_key_me: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==
-pri_key: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEApHTIe/StslZAT5Jzv8XClbrqox32pfaTrP5IOCRJ3FaH/UZsGgA/tsNBBEXq9eagqwPbJrjYfpdEtINcChrK4wIDAQABAkEAilDujdKshGGmlUZHs/NQRT6AOdDpsYxBiC4V76IVvQpw0IW6c4HGEvH4T+xRufika7/48L0eu0f06H+YtL5lgQIhANUd0a6oSsVxWifAjtKwMZcXD3OaIxQIQSCN4NT4VFY3AiEAxYxYrIhkIyg+UVw3WOSvBpXKxM4/WL9HRzkxDLvp2rUCIQCK23P8tgCJ5xJT5l3onw6goFDcBKkoazxsBqVgfjENPwIgWbuTd+OIYPPhwsE5ntZZrosSDO2GlsBkFzUiU59z7VUCIA0LL+9IFb+FWCl3DGTwIQ9SZYbv61T83LKjebUcSOfe
+pri_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==
+#鍓嶇绉侀挜锛堢敤涓嶅埌浜嗭級
+#pri_key: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEApHTIe/StslZAT5Jzv8XClbrqox32pfaTrP5IOCRJ3FaH/UZsGgA/tsNBBEXq9eagqwPbJrjYfpdEtINcChrK4wIDAQABAkEAilDujdKshGGmlUZHs/NQRT6AOdDpsYxBiC4V76IVvQpw0IW6c4HGEvH4T+xRufika7/48L0eu0f06H+YtL5lgQIhANUd0a6oSsVxWifAjtKwMZcXD3OaIxQIQSCN4NT4VFY3AiEAxYxYrIhkIyg+UVw3WOSvBpXKxM4/WL9HRzkxDLvp2rUCIQCK23P8tgCJ5xJT5l3onw6goFDcBKkoazxsBqVgfjENPwIgWbuTd+OIYPPhwsE5ntZZrosSDO2GlsBkFzUiU59z7VUCIA0LL+9IFb+FWCl3DGTwIQ9SZYbv61T83LKjebUcSOfe
 
 #浜岀淮鐮佽矾寰�
 qrpath: D:\qrcode
@@ -136,3 +141,6 @@
 #澶栭摼璇锋眰IP鍜岀鍙e彿
 req_path: 8096
 localIP: 192.168.1.10
+
+#鑾峰彇鎮h�呬俊鎭疷RL(鍗庡崜鎻愪緵)
+hosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index bd33b65..be3e019 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -72,13 +72,13 @@
   # redis 閰嶇疆
   redis:
     #    # 鍦板潃锛堜箟涔屼簩闄級
-    #    host: 127.0.0.1
-    #    port: 6020
+    host: 127.0.0.1
+    port: 6020
 
     # 鍦板潃锛堝叕鍙革級
     #    host: 116.62.18.175
-    host: 192.168.1.10
-    port: 6020
+#    host: 192.168.1.10
+#    port: 6020
     # 鏁版嵁搴撶储寮�
     database: 0
     # 瀵嗙爜
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/CommonRes.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/CommonRes.java
new file mode 100644
index 0000000..a672c3f
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/CommonRes.java
@@ -0,0 +1,33 @@
+package com.ruoyi.common.core.domain;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ApiModel("鍏叡杩斿洖浣�")
+public class CommonRes<T> implements Serializable {
+    private static final long serialVersionUID = -1L;
+
+    @ApiModelProperty(value = "杩斿洖鐮�", notes = "200: 璇锋眰鎴愬姛")
+    private int code;
+
+    @ApiModelProperty("杩斿洖鐮佹弿杩�")
+    private String msg;
+
+    @ApiModelProperty("杩斿洖鏁版嵁")
+    private T data;
+
+    @ApiModelProperty(value = "鎬昏褰曟暟", notes = "鍒嗛〉鎯呭喌涓嬩娇鐢�")
+    private String totalRecord;
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 53ad695..44bd409 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -3,6 +3,10 @@
 import java.util.Date;
 import java.util.List;
 import javax.validation.constraints.*;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
@@ -14,311 +18,313 @@
 
 /**
  * 鐢ㄦ埛瀵硅薄 sys_user
- * 
+ *
  * @author ruoyi
  */
-public class SysUser extends BaseEntity
-{
+@ApiModel(value = "SysUser", description = "鐢ㄦ埛瀵硅薄")
+public class SysUser extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-    /** 鐢ㄦ埛ID */
+    /**
+     * 鐢ㄦ埛ID
+     */
+    @ApiModelProperty(value = "涓婚敭")
     @Excel(name = "鐢ㄦ埛搴忓彿", cellType = ColumnType.NUMERIC, prompt = "鐢ㄦ埛缂栧彿")
     private Long userId;
 
-    /** 閮ㄩ棬ID */
+    /**
+     * 閮ㄩ棬ID
+     */
+    @ApiModelProperty(value = "閮ㄩ棬ID")
     @Excel(name = "閮ㄩ棬缂栧彿", type = Type.IMPORT)
     private Long deptId;
 
-    /** 鐢ㄦ埛璐﹀彿 */
+    /**
+     * 鐢ㄦ埛璐﹀彿
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛璐﹀彿")
     @Excel(name = "鐧诲綍鍚嶇О")
     private String userName;
 
-    /** 鐢ㄦ埛鏄电О */
+    /**
+     * 鐢ㄦ埛鏄电О
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛鏄电О")
     @Excel(name = "鐢ㄦ埛鍚嶇О")
     private String nickName;
 
-    /** 鐢ㄦ埛閭 */
+    /**
+     * 鐢ㄦ埛閭
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛閭")
     @Excel(name = "鐢ㄦ埛閭")
     private String email;
 
-    /** 鎵嬫満鍙风爜 */
+    /**
+     * 鎵嬫満鍙风爜
+     */
+    @ApiModelProperty(value = "鎵嬫満鍙风爜")
     @Excel(name = "鎵嬫満鍙风爜")
     private String phonenumber;
 
-    /** 鐢ㄦ埛鎬у埆 */
+    /**
+     * 鐢ㄦ埛鎬у埆
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛鎬у埆")
     @Excel(name = "鐢ㄦ埛鎬у埆", readConverterExp = "0=鐢�,1=濂�,2=鏈煡")
     private String sex;
 
-    /** 鐢ㄦ埛澶村儚 */
+    /**
+     * 鐢ㄦ埛澶村儚
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛澶村儚")
     private String avatar;
 
-    /** 瀵嗙爜 */
+    /**
+     * 瀵嗙爜
+     */
+    @ApiModelProperty(value = "瀵嗙爜")
     private String password;
 
-    /** 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛� */
+    /**
+     * 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛�
+     */
+    @ApiModelProperty(value = "甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛�")
     @Excel(name = "甯愬彿鐘舵��", readConverterExp = "0=姝e父,1=鍋滅敤")
     private String status;
 
-    /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */
+    /**
+     * 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛�
+     */
+    @ApiModelProperty(value = "鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛�")
     private String delFlag;
 
-    /** 鏈�鍚庣櫥褰旾P */
+    /**
+     * 鏈�鍚庣櫥褰旾P
+     */
+    @ApiModelProperty(value = "鏈�鍚庣櫥褰旾P")
     @Excel(name = "鏈�鍚庣櫥褰旾P", type = Type.EXPORT)
     private String loginIp;
 
-    /** 鏈�鍚庣櫥褰曟椂闂� */
+    /**
+     * 鏈�鍚庣櫥褰曟椂闂�
+     */
+    @ApiModelProperty(value = "鏈�鍚庣櫥褰曟椂闂�")
     @Excel(name = "鏈�鍚庣櫥褰曟椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
     private Date loginDate;
 
-    /** 閮ㄩ棬瀵硅薄 */
-    @Excels({
-        @Excel(name = "閮ㄩ棬鍚嶇О", targetAttr = "deptName", type = Type.EXPORT),
-        @Excel(name = "閮ㄩ棬璐熻矗浜�", targetAttr = "leader", type = Type.EXPORT)
-    })
+    /**
+     * 閮ㄩ棬瀵硅薄
+     */
+    @ApiModelProperty(value = "閮ㄩ棬瀵硅薄")
+    @Excels({@Excel(name = "閮ㄩ棬鍚嶇О", targetAttr = "deptName", type = Type.EXPORT), @Excel(name = "閮ㄩ棬璐熻矗浜�", targetAttr = "leader", type = Type.EXPORT)})
     private SysDept dept;
 
-    /** 瑙掕壊瀵硅薄 */
+    @ApiModelProperty(value = "閮ㄩ棬闆嗗悎")
+    private List<Long> depts;
+
+    /**
+     * 瑙掕壊瀵硅薄
+     */
+    @ApiModelProperty(value = "瑙掕壊瀵硅薄")
     private List<SysRole> roles;
 
-    /** 瑙掕壊缁� */
+    /**
+     * 瑙掕壊缁�
+     */
+    @ApiModelProperty(value = "瑙掕壊缁�")
     private Long[] roleIds;
 
-    /** 宀椾綅缁� */
+    /**
+     * 宀椾綅缁�
+     */
+    @ApiModelProperty(value = "宀椾綅缁�")
     private Long[] postIds;
 
-    /** 瑙掕壊ID */
+    /**
+     * 瑙掕壊ID
+     */
+    @ApiModelProperty(value = "瑙掕壊ID")
     private Long roleId;
 
-    public SysUser()
-    {
+    public SysUser() {
 
     }
 
-    public SysUser(Long userId)
-    {
+    public SysUser(Long userId) {
         this.userId = userId;
     }
 
-    public Long getUserId()
-    {
+    public Long getUserId() {
         return userId;
     }
 
-    public void setUserId(Long userId)
-    {
+    public void setUserId(Long userId) {
         this.userId = userId;
     }
 
-    public boolean isAdmin()
-    {
+    public boolean isAdmin() {
         return isAdmin(this.userId);
     }
 
-    public static boolean isAdmin(Long userId)
-    {
+    public static boolean isAdmin(Long userId) {
         return userId != null && 1L == userId;
     }
 
-    public Long getDeptId()
-    {
+    public Long getDeptId() {
         return deptId;
     }
 
-    public void setDeptId(Long deptId)
-    {
+    public void setDeptId(Long deptId) {
         this.deptId = deptId;
     }
 
     @Xss(message = "鐢ㄦ埛鏄电О涓嶈兘鍖呭惈鑴氭湰瀛楃")
     @Size(min = 0, max = 30, message = "鐢ㄦ埛鏄电О闀垮害涓嶈兘瓒呰繃30涓瓧绗�")
-    public String getNickName()
-    {
+    public String getNickName() {
         return nickName;
     }
 
-    public void setNickName(String nickName)
-    {
+    public void setNickName(String nickName) {
         this.nickName = nickName;
     }
 
     @Xss(message = "鐢ㄦ埛璐﹀彿涓嶈兘鍖呭惈鑴氭湰瀛楃")
     @NotBlank(message = "鐢ㄦ埛璐﹀彿涓嶈兘涓虹┖")
     @Size(min = 0, max = 30, message = "鐢ㄦ埛璐﹀彿闀垮害涓嶈兘瓒呰繃30涓瓧绗�")
-    public String getUserName()
-    {
+    public String getUserName() {
         return userName;
     }
 
-    public void setUserName(String userName)
-    {
+    public void setUserName(String userName) {
         this.userName = userName;
     }
 
     @Email(message = "閭鏍煎紡涓嶆纭�")
     @Size(min = 0, max = 50, message = "閭闀垮害涓嶈兘瓒呰繃50涓瓧绗�")
-    public String getEmail()
-    {
+    public String getEmail() {
         return email;
     }
 
-    public void setEmail(String email)
-    {
+    public void setEmail(String email) {
         this.email = email;
     }
 
     @Size(min = 0, max = 11, message = "鎵嬫満鍙风爜闀垮害涓嶈兘瓒呰繃11涓瓧绗�")
-    public String getPhonenumber()
-    {
+    public String getPhonenumber() {
         return phonenumber;
     }
 
-    public void setPhonenumber(String phonenumber)
-    {
+    public void setPhonenumber(String phonenumber) {
         this.phonenumber = phonenumber;
     }
 
-    public String getSex()
-    {
+    public String getSex() {
         return sex;
     }
 
-    public void setSex(String sex)
-    {
+    public void setSex(String sex) {
         this.sex = sex;
     }
 
-    public String getAvatar()
-    {
+    public String getAvatar() {
         return avatar;
     }
 
-    public void setAvatar(String avatar)
-    {
+    public void setAvatar(String avatar) {
         this.avatar = avatar;
     }
 
-    public String getPassword()
-    {
+    public String getPassword() {
         return password;
     }
 
-    public void setPassword(String password)
-    {
+    public void setPassword(String password) {
         this.password = password;
     }
 
-    public String getStatus()
-    {
+    public String getStatus() {
         return status;
     }
 
-    public void setStatus(String status)
-    {
+    public void setStatus(String status) {
         this.status = status;
     }
 
-    public String getDelFlag()
-    {
+    public String getDelFlag() {
         return delFlag;
     }
 
-    public void setDelFlag(String delFlag)
-    {
+    public void setDelFlag(String delFlag) {
         this.delFlag = delFlag;
     }
 
-    public String getLoginIp()
-    {
+    public String getLoginIp() {
         return loginIp;
     }
 
-    public void setLoginIp(String loginIp)
-    {
+    public void setLoginIp(String loginIp) {
         this.loginIp = loginIp;
     }
 
-    public Date getLoginDate()
-    {
+    public Date getLoginDate() {
         return loginDate;
     }
 
-    public void setLoginDate(Date loginDate)
-    {
+    public void setLoginDate(Date loginDate) {
         this.loginDate = loginDate;
     }
 
-    public SysDept getDept()
-    {
+    public SysDept getDept() {
         return dept;
     }
 
-    public void setDept(SysDept dept)
-    {
+    public void setDept(SysDept dept) {
         this.dept = dept;
     }
 
-    public List<SysRole> getRoles()
-    {
+    public List<SysRole> getRoles() {
         return roles;
     }
 
-    public void setRoles(List<SysRole> roles)
-    {
+    public void setRoles(List<SysRole> roles) {
         this.roles = roles;
     }
 
-    public Long[] getRoleIds()
-    {
+    public Long[] getRoleIds() {
         return roleIds;
     }
 
-    public void setRoleIds(Long[] roleIds)
-    {
+    public void setRoleIds(Long[] roleIds) {
         this.roleIds = roleIds;
     }
 
-    public Long[] getPostIds()
-    {
+    public Long[] getPostIds() {
         return postIds;
     }
 
-    public void setPostIds(Long[] postIds)
-    {
+    public void setPostIds(Long[] postIds) {
         this.postIds = postIds;
     }
 
-    public Long getRoleId()
-    {
+    public Long getRoleId() {
         return roleId;
     }
 
-    public void setRoleId(Long roleId)
-    {
+    public void setRoleId(Long roleId) {
         this.roleId = roleId;
+    }
+
+    public List<Long> getDepts() {
+        return depts;
+    }
+
+    public void setDepts(List<Long> depts) {
+        this.depts = depts;
     }
 
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("userId", getUserId())
-            .append("deptId", getDeptId())
-            .append("userName", getUserName())
-            .append("nickName", getNickName())
-            .append("email", getEmail())
-            .append("phonenumber", getPhonenumber())
-            .append("sex", getSex())
-            .append("avatar", getAvatar())
-            .append("password", getPassword())
-            .append("status", getStatus())
-            .append("delFlag", getDelFlag())
-            .append("loginIp", getLoginIp())
-            .append("loginDate", getLoginDate())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("remark", getRemark())
-            .append("dept", getDept())
-            .toString();
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("userId", getUserId()).append("deptId", getDeptId()).append("userName", getUserName()).append("nickName", getNickName()).append("email", getEmail()).append("phonenumber", getPhonenumber()).append("sex", getSex()).append("avatar", getAvatar()).append("password", getPassword()).append("status", getStatus()).append("delFlag", getDelFlag()).append("loginIp", getLoginIp()).append("loginDate", getLoginDate()).append("createBy", getCreateBy()).append("createTime", getCreateTime()).append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).append("remark", getRemark()).append("dept", getDept()).toString();
     }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUserDept.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUserDept.java
new file mode 100644
index 0000000..c168ce4
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUserDept.java
@@ -0,0 +1,47 @@
+package com.ruoyi.common.core.domain.entity;
+
+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;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆戝璞� sys_user_dept
+ *
+ * @author lihu
+ * @date 2024-08-29
+ */
+@Data
+@ApiModel("銆愯濉啓鍔熻兘鍚嶇О銆�")
+public class SysUserDept extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * $column.columnComment
+     */
+    @ApiModelProperty("$column.columnComment")
+    //鏁版嵁搴撹嚜澧炴敼鎴怈TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鐢ㄦ埛ID
+     */
+    @ApiModelProperty("鐢ㄦ埛ID")
+    @Excel(name = "鐢ㄦ埛ID")
+    private Long userId;
+
+    /**
+     * 閮ㄩ棬ID
+     */
+    @ApiModelProperty("閮ㄩ棬ID")
+    @Excel(name = "閮ㄩ棬ID")
+    private Long deptId;
+
+    /** 鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 2浠h〃鍒犻櫎锛� */
+    @ApiModelProperty("鍒犻櫎鏍囧織锛�0浠h〃瀛樺湪 1浠h〃鍒犻櫎锛�")
+    private Long delFlag;
+
+
+}
+
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/RSAPublicKeyExample.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/RSAPublicKeyExample.java
index fe651c0..2159f6d 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/RSAPublicKeyExample.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/RSAPublicKeyExample.java
@@ -4,6 +4,10 @@
 import org.springframework.stereotype.Component;
 
 import javax.crypto.Cipher;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.security.KeyFactory;
 import java.security.PrivateKey;
 import java.security.PublicKey;
@@ -54,8 +58,7 @@
      * @return
      */
     public String encryptedData(String plainText, String pub_key) {
-        String publicKeyString = "鍏挜鐨凚ase64缂栫爜瀛楃涓�"; // 鍓嶇浼犻�掔殑鍏挜瀛楃涓�
-        // 灏嗗叕閽ase64缂栫爜瀛楃涓茶浆鎹负PublicKey瀵硅薄
+        log.error("闇�瑕佸姞瀵嗙殑鏁版嵁锛歿}", plainText);
         try {
 
             byte[] publicKeyBytes = Base64.getDecoder().decode(pub_key);
@@ -70,7 +73,11 @@
 
             // 灏嗗姞瀵嗗悗鐨勬暟鎹浆鎹负Base64缂栫爜鐨勫瓧绗︿覆
             String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);
-            System.out.println("鍔犲瘑鍚庣殑鏁版嵁锛�" + encryptedText);
+            log.error("Base64鍔犲瘑鍚庣殑鏁版嵁锛歿}", encryptedText);
+            encryptedText = URLEncoder.encode(encryptedText, StandardCharsets.UTF_8.toString());
+            log.error("URLEncoder缂栫爜鍚庣殑鏁版嵁锛歿}", encryptedText);
+            String decodedString = URLDecoder.decode(encryptedText, "UTF-8");
+            log.error("URLEncoder瑙g爜鍚庣殑鏁版嵁锛歿}", decodedString);
             return encryptedText;
         } catch (Exception e) {
             log.error("鍔犲瘑澶辫触浜�:{}", e.getMessage());
@@ -78,5 +85,14 @@
         return null;
     }
 
+    public static void main(String[] args) {
+        String decodedString = null;
+        try {
+            decodedString = URLDecoder.decode("0902%E4%BB%BB%E5%8A%A1%E6%B5%8B%E8%AF%95--------", "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+        System.out.println(decodedString);
+    }
 
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
index e939194..ca9d650 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -11,12 +11,15 @@
 import java.net.URLConnection;
 import java.nio.charset.StandardCharsets;
 import java.security.cert.X509Certificate;
+import java.util.Map;
+import java.util.Objects;
 import javax.net.ssl.HostnameVerifier;
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLSession;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import com.ruoyi.common.constant.Constants;
@@ -24,11 +27,10 @@
 
 /**
  * 閫氱敤http鍙戦�佹柟娉�
- * 
+ *
  * @author ruoyi
  */
-public class HttpUtils
-{
+public class HttpUtils {
     private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
 
     /**
@@ -37,37 +39,33 @@
      * @param url 鍙戦�佽姹傜殑 URL
      * @return 鎵�浠h〃杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
      */
-    public static String sendGet(String url)
-    {
+    public static String sendGet(String url) {
         return sendGet(url, StringUtils.EMPTY);
     }
 
     /**
      * 鍚戞寚瀹� URL 鍙戦�丟ET鏂规硶鐨勮姹�
      *
-     * @param url 鍙戦�佽姹傜殑 URL
+     * @param url   鍙戦�佽姹傜殑 URL
      * @param param 璇锋眰鍙傛暟锛岃姹傚弬鏁板簲璇ユ槸 name1=value1&name2=value2 鐨勫舰寮忋��
      * @return 鎵�浠h〃杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
      */
-    public static String sendGet(String url, String param)
-    {
+    public static String sendGet(String url, String param) {
         return sendGet(url, param, Constants.UTF8);
     }
 
     /**
      * 鍚戞寚瀹� URL 鍙戦�丟ET鏂规硶鐨勮姹�
      *
-     * @param url 鍙戦�佽姹傜殑 URL
-     * @param param 璇锋眰鍙傛暟锛岃姹傚弬鏁板簲璇ユ槸 name1=value1&name2=value2 鐨勫舰寮忋��
+     * @param url         鍙戦�佽姹傜殑 URL
+     * @param param       璇锋眰鍙傛暟锛岃姹傚弬鏁板簲璇ユ槸 name1=value1&name2=value2 鐨勫舰寮忋��
      * @param contentType 缂栫爜绫诲瀷
      * @return 鎵�浠h〃杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
      */
-    public static String sendGet(String url, String param, String contentType)
-    {
+    public static String sendGet(String url, String param, String contentType) {
         StringBuilder result = new StringBuilder();
         BufferedReader in = null;
-        try
-        {
+        try {
             String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url;
 //            log.info("sendGet - {}", urlNameString);
             URL realUrl = new URL(urlNameString);
@@ -78,39 +76,24 @@
             connection.connect();
             in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
             String line;
-            while ((line = in.readLine()) != null)
-            {
+            while ((line = in.readLine()) != null) {
                 result.append(line);
             }
-        //    log.info("recv - {}", result);
-        }
-        catch (ConnectException e)
-        {
+            //    log.info("recv - {}", result);
+        } catch (ConnectException e) {
             log.error("璋冪敤HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
-        }
-        catch (SocketTimeoutException e)
-        {
+        } catch (SocketTimeoutException e) {
             log.error("璋冪敤HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
-        }
-        catch (IOException e)
-        {
+        } catch (IOException e) {
             log.error("璋冪敤HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             log.error("璋冪敤HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
-        }
-        finally
-        {
-            try
-            {
-                if (in != null)
-                {
+        } finally {
+            try {
+                if (in != null) {
                     in.close();
                 }
-            }
-            catch (Exception ex)
-            {
+            } catch (Exception ex) {
                 log.error("璋冪敤in.close Exception, url=" + url + ",param=" + param, ex);
             }
         }
@@ -120,17 +103,15 @@
     /**
      * 鍚戞寚瀹� URL 鍙戦�丳OST鏂规硶鐨勮姹�
      *
-     * @param url 鍙戦�佽姹傜殑 URL
+     * @param url   鍙戦�佽姹傜殑 URL
      * @param param 璇锋眰鍙傛暟锛岃姹傚弬鏁板簲璇ユ槸 name1=value1&name2=value2 鐨勫舰寮忋��
      * @return 鎵�浠h〃杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
      */
-    public static String sendPost(String url, String param)
-    {
+    public static String sendPost(String url, String param) {
         PrintWriter out = null;
         BufferedReader in = null;
         StringBuilder result = new StringBuilder();
-        try
-        {
+        try {
             log.info("sendPost - {}", url);
             URL realUrl = new URL(url);
             URLConnection conn = realUrl.openConnection();
@@ -146,58 +127,91 @@
             out.flush();
             in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
             String line;
-            while ((line = in.readLine()) != null)
-            {
+            while ((line = in.readLine()) != null) {
                 result.append(line);
             }
             log.info("recv - {}", result);
-        }
-        catch (ConnectException e)
-        {
+        } catch (ConnectException e) {
             log.error("璋冪敤HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
-        }
-        catch (SocketTimeoutException e)
-        {
+        } catch (SocketTimeoutException e) {
             log.error("璋冪敤HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
-        }
-        catch (IOException e)
-        {
+        } catch (IOException e) {
             log.error("璋冪敤HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             log.error("璋冪敤HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
-        }
-        finally
-        {
-            try
-            {
-                if (out != null)
-                {
+        } finally {
+            try {
+                if (out != null) {
                     out.close();
                 }
-                if (in != null)
-                {
+                if (in != null) {
                     in.close();
                 }
-            }
-            catch (IOException ex)
-            {
+            } catch (IOException ex) {
                 log.error("璋冪敤in.close Exception, url=" + url + ",param=" + param, ex);
             }
         }
         return result.toString();
     }
 
-    public static String sendSSLPost(String url, String param)
-    {
+    public static String sendPostByHeader(String url, String param, Map<String, String> headers) {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        StringBuilder result = new StringBuilder();
+        try {
+            log.info("sendPost - {}", url);
+            URL realUrl = new URL(url);
+            URLConnection conn = realUrl.openConnection();
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Accept-Charset", "utf-8");
+            conn.setRequestProperty("contentType", "utf-8");
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            if (!Objects.isNull(headers)) {
+                for (Map.Entry<String, String> entry : headers.entrySet()) {
+                    conn.setRequestProperty(entry.getKey(), entry.getValue());
+                }
+            }
+            out = new PrintWriter(conn.getOutputStream());
+            out.print(param);
+            out.flush();
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result.append(line);
+            }
+        } catch (ConnectException e) {
+            log.error("璋冪敤HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
+        } catch (SocketTimeoutException e) {
+            log.error("璋冪敤HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        } catch (IOException e) {
+            log.error("璋冪敤HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
+        } catch (Exception e) {
+            log.error("璋冪敤HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
+        } finally {
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                log.error("璋冪敤in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
+    public static String sendSSLPost(String url, String param) {
         StringBuilder result = new StringBuilder();
         String urlNameString = url + "?" + param;
-        try
-        {
+        try {
             log.info("sendSSLPost - {}", urlNameString);
             SSLContext sc = SSLContext.getInstance("SSL");
-            sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
+            sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
             URL console = new URL(urlNameString);
             HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
             conn.setRequestProperty("accept", "*/*");
@@ -214,61 +228,45 @@
             InputStream is = conn.getInputStream();
             BufferedReader br = new BufferedReader(new InputStreamReader(is));
             String ret = "";
-            while ((ret = br.readLine()) != null)
-            {
-                if (ret != null && !"".equals(ret.trim()))
-                {
+            while ((ret = br.readLine()) != null) {
+                if (ret != null && !"".equals(ret.trim())) {
                     result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));
                 }
             }
             log.info("recv - {}", result);
             conn.disconnect();
             br.close();
-        }
-        catch (ConnectException e)
-        {
+        } catch (ConnectException e) {
             log.error("璋冪敤HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
-        }
-        catch (SocketTimeoutException e)
-        {
+        } catch (SocketTimeoutException e) {
             log.error("璋冪敤HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
-        }
-        catch (IOException e)
-        {
+        } catch (IOException e) {
             log.error("璋冪敤HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             log.error("璋冪敤HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
         }
         return result.toString();
     }
 
-    private static class TrustAnyTrustManager implements X509TrustManager
-    {
+    private static class TrustAnyTrustManager implements X509TrustManager {
         @Override
-        public void checkClientTrusted(X509Certificate[] chain, String authType)
-        {
+        public void checkClientTrusted(X509Certificate[] chain, String authType) {
         }
 
         @Override
-        public void checkServerTrusted(X509Certificate[] chain, String authType)
-        {
+        public void checkServerTrusted(X509Certificate[] chain, String authType) {
         }
 
         @Override
-        public X509Certificate[] getAcceptedIssuers()
-        {
-            return new X509Certificate[] {};
+        public X509Certificate[] getAcceptedIssuers() {
+            return new X509Certificate[]{};
         }
     }
 
-    private static class TrustAnyHostnameVerifier implements HostnameVerifier
-    {
+    private static class TrustAnyHostnameVerifier implements HostnameVerifier {
         @Override
-        public boolean verify(String hostname, SSLSession session)
-        {
+        public boolean verify(String hostname, SSLSession session) {
             return true;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index 24175a7..0af0508 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -108,7 +108,7 @@
                 // 杩囨护璇锋眰
                 .authorizeRequests()
                 // 瀵逛簬鐧诲綍login 娉ㄥ唽register 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶
-                .antMatchers("/login", "/register", "/captchaImage", "/qrcode/generateStaticHtml", "/qrcode/getQRcode", "/qrcode/getFormDate", "/chat", "/system/file/admin/uploadFile", "/smartor/dingtalk/sendNotification", "/patient/read/patientInfo", "/socket", "/API_ESB_Service", "/API_ESB_Service/Run", "/magic/web/**", "/smartor/serviceSubtask/phoneCallBack", "/smartor/serviceSubtask/taskPull", "/smartor/serviceSubtask//phoneCallBackYQ", "/smartor/robot/callstatus", "/smartor/robot/aidialog", "/smartor/robot/cdrinfo", "/getToken", "/smartor/servicetask/getScriptInfoByCondition", "/smartor/serviceSubtask/saveQuestionAnswer").permitAll()
+                .antMatchers("/login", "/register", "/captchaImage", "/qrcode/generateStaticHtml", "/qrcode/getQRcode", "/qrcode/getFormDate", "/chat", "/system/file/admin/uploadFile", "/smartor/dingtalk/sendNotification", "/patient/read/patientInfo", "/socket", "/API_ESB_Service", "/API_ESB_Service/Run", "/magic/web/**", "/smartor/serviceSubtask/phoneCallBack", "/smartor/serviceSubtask/taskPull", "/smartor/serviceSubtask//phoneCallBackYQ", "/smartor/robot/callstatus", "/smartor/robot/aidialog", "/smartor/robot/cdrinfo", "/getToken", "/smartor/subtaskAnswer/getQuestionCache", "/smartor/subtaskAnswer/saveQuestionCache", "/smartor/servicetask/getScriptInfoByCondition", "/smartor/serviceSubtask/saveQuestionAnswer").permitAll()
                 // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂�
                 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll().antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                 // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
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 a28df21..b5cd718 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
@@ -1,21 +1,34 @@
 package com.ruoyi.quartz.task;
 
 import com.alibaba.fastjson2.JSON;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.reflect.TypeToken;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonArray;
+import com.google.gson.Gson;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.ServiceFromEnum;
 import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.http.HttpUtils;
 import com.smartor.common.SendService;
 import com.smartor.domain.*;
-import com.smartor.mapper.ServiceSubtaskMapper;
 import com.smartor.mapper.ServiceTaskMapper;
 import com.smartor.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.math.NumberUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import java.lang.reflect.Type;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 /**
@@ -64,6 +77,18 @@
     @Autowired
     IBaseSmsaccountService baseSmsaccountService;
 
+    @Autowired
+    IPatArchiveService patArchiveService;
+
+    @Autowired
+    IPatMedInhospService patMedInhospService;
+
+    @Autowired
+    IPatMedOuthospService patMedOuthospService;
+
+    @Value("${hosp_info_url}")
+    private String hospInfoUrl;
+
     public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {
         System.out.println(StringUtils.format("鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}", s, b, l, d, i));
     }
@@ -100,7 +125,8 @@
      */
     public void dealHisData() {
         //灏嗘偅鑰呬俊鎭�佸嚭闄€�侀棬璇婃暟鎹叏閮ㄩ噰闆�
-
+        getInHospInfo("0");
+        getInHospInfo("1");
 
         //璋冪敤dealOupHospInfo鏁版嵁澶勭悊鏂规硶锛屽鐞嗗畬鍚庯紝灏嗏�滃嚭闄㈣〃鐨刢heck_flag=1鈥�
         //鑾峰彇褰撳墠鏃ユ湡 锛堢簿纭埌澶╋級寰�鍓嶆帹鐩稿簲澶╂暟锛堝湪鎸囧畾鐨勫熀纭�妯℃澘涓壘瀵瑰簲鐨勫ぉ鏁帮級锛�
@@ -115,13 +141,13 @@
      */
     public void longTaskSend() {
         //鑾峰彇浠诲姟淇℃伅
-        ServiceTask st =new ServiceTask();
+        ServiceTask st = new ServiceTask();
         st.setDelFlag("0");
         st.setLongTask(1);
         List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);
         for (ServiceTask serviceTask : serviceTasks) {
             //閫氳繃taskId,鑾峰彇鏈墽琛岀殑瀛愪换鍔′俊鎭�
-            ServiceSubtask serviceSubtask = new ServiceSubtask();
+            ServiceSubtaskVO serviceSubtask = new ServiceSubtaskVO();
             serviceSubtask.setTaskid(serviceTask.getTaskid());
             serviceSubtask.setSendstate(2L);
             List<ServiceSubtask> selectServiceSubtaskList = iServiceSubtaskService.selectServiceSubtaskList(serviceSubtask);
@@ -177,7 +203,7 @@
                 String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
                 //杩欓噷鍙互鑰冭檻鐢ㄧ瓥鐣ユā寮忎紭鍖栦竴涓嬶紝涓嶇劧澶毦鐪嬩簡
                 //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
-                ServiceSubtask ivrTaskcall = new ServiceSubtask();
+                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();
                 ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
                 List<ServiceSubtask> selectServiceSubtaskList = iServiceSubtaskService.selectServiceSubtaskList(ivrTaskcall);
                 if (descByCode.equals("鐢佃瘽")) {
@@ -192,7 +218,7 @@
                         if (commonTaskcallMQ.getSendType().equals("2")) {
                             //璇存槑鏄珛鍗冲彂閫�
                             String value = redisCache.getCacheObject("cache-0");
-                            ServiceSubtask serviceSubtask1 = new ServiceSubtask();
+                            ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();
                             serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());
                             List<ServiceSubtask> selectServiceSubtaskList1 = iServiceSubtaskService.selectServiceSubtaskList(serviceSubtask1);
                             for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
@@ -206,7 +232,7 @@
                         } else {
                             //闈炵珛鍗冲彂閫�
                             String value = redisCache.getCacheObject(key);
-                            ServiceSubtask serviceSubtask1 = new ServiceSubtask();
+                            ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();
                             serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());
                             List<ServiceSubtask> selectServiceSubtaskList1 = iServiceSubtaskService.selectServiceSubtaskList(serviceSubtask1);
                             for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
@@ -297,6 +323,123 @@
         }
     }
 
+    /**
+     * 鑾峰嚭闄㈡偅鑰呬俊鎭�
+     * cry    鍑哄叆闄細 0 鍏ラ櫌   1 鍑洪櫌
+     */
+    private void getInHospInfo(String cry) {
+        // 鑾峰彇褰撳墠鏃ユ湡鍜屾椂闂�
+        LocalDateTime currentDateTime = LocalDateTime.now();
+        // 鑾峰彇鍓嶄竴澶╃殑鏃ユ湡鍜屾椂闂�
+        LocalDateTime previousDateTime = currentDateTime.minusDays(1);
+        // 瀹氫箟鏃ユ湡鏃堕棿鏍煎紡
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
+        Map<String, String> req = new HashMap<>();
+        if (cry.equals("1")) {
+            req.put("startTime", previousDateTime.format(formatter));
+            req.put("endTime", currentDateTime.format(formatter));
+            req.put("currStatus", "4");
+        } else if (cry.equals("0")) {
+            req.put("admissStartDate", previousDateTime.format(formatter));
+            req.put("admissEndDate", currentDateTime.format(formatter));
+            req.put("currStatus", "2");
+        }
+        Map<String, String> header = new HashMap<>();
+        header.put("x-hcsb-serviceno", "IS002347");
+        header.put("x-hcsb-version", "2.0");
+        header.put("x-hcsb-sourcesyscode", "14");
+        header.put("x-hcsb-token", "ArGE2JnHtxG/Zx5nrnGY4eOfMUJGGJokAJHigG1BrCY=");
+        header.put("x-hcsb-msgdate", currentDateTime.format(formatter));
+        String result = HttpUtils.sendPostByHeader(hospInfoUrl, new Gson().toJson(req), header);
+        //鏁版嵁瑙f瀽
+        Gson gson = new Gson();
+        JsonObject jsonObject = gson.fromJson(result, JsonObject.class);
+        JsonArray resultArray = jsonObject.getAsJsonObject("data").getAsJsonArray("result");
+        Type resultType = new TypeToken<List<ThiedInhospInfo>>() {
+        }.getType();
+        List<ThiedInhospInfo> thiedInhospInfoList = gson.fromJson(resultArray, resultType);
+        if (CollectionUtils.isNotEmpty(thiedInhospInfoList)) {
+            for (ThiedInhospInfo thiedInhospInfo : thiedInhospInfoList) {
+                //閫氳繃韬唤璇佸彿鏌ヨ璇ユ偅鑰呭湪鎮h�呰〃鏄惁瀛樺湪
+                PatArchive patArchive = new PatArchive();
+                patArchive.setIdcardno(thiedInhospInfo.getPatiIdCardNo());
+                List<PatArchive> patArchives = patArchiveService.selectPatArchiveList(patArchive);
+                if (CollectionUtils.isEmpty(patArchives)) {
+                    patArchive.setPatientno(thiedInhospInfo.getPatiMediaNo());
+                    patArchive.setSourcefrom(2);
+                    patArchive.setPattype("2");
+                    patArchive.setSex(thiedInhospInfo.getPatiRecordGender().equals("鐢�") ? 1L : 2L);
+                    patArchive.setNation(thiedInhospInfo.getPatiNation());
+                    patArchive.setNativePlace(thiedInhospInfo.getPatiNationality());
+                    patArchive.setPlaceOfResidence(thiedInhospInfo.getPatiHomeAddr());
+                    try {
+                        if (StringUtils.isNotEmpty(thiedInhospInfo.getPatiBirthday()))
+                            patArchive.setBirthdate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getPatiBirthday()));
+                    } catch (ParseException e) {
+                        e.printStackTrace();
+                    }
+                    String age = thiedInhospInfo.getAge().replaceAll("宀�", "");
+                    boolean creatable = NumberUtils.isCreatable(age);
+                    if (creatable) patArchive.setAge(StringUtils.isNotEmpty(age) ? Long.valueOf(age) : null);
+                    patArchive.setTelcode(thiedInhospInfo.getCompanyTelNum());
+                    patArchive.setRelativetelcode(thiedInhospInfo.getContactPersonPhone());
+                    patArchive.setDelFlag("0");
+                    patArchive.setCreateTime(new Date());
+                    patArchive.setUpdateTime(new Date());
+                    patArchive.setName(thiedInhospInfo.getPatiRecordName());
+                    patArchiveService.insertPatArchive(patArchive);
+                }
+                PatMedInhosp patMedInhosp = new PatMedInhosp();
+                patMedInhosp.setPatid(patArchive.getId());
+                patMedInhosp.setPatno(patArchive.getPatientno());
+                patMedInhosp.setPatname(patArchive.getName());
+                patMedInhosp.setSerialnum(thiedInhospInfo.getInpatientId());
+                if (cry.equals("0")) {
+                    patMedInhosp.setInhospstate("0");
+                } else if (cry.equals("1")) {
+                    patMedInhosp.setInhospstate("1");
+                }
+                patMedInhosp.setHospitalcode(thiedInhospInfo.getAreaId());
+                patMedInhosp.setIcd10code(thiedInhospInfo.getDiagIcd10());
+                patMedInhosp.setDiagname(thiedInhospInfo.getDiagName());
+                try {
+                    if (StringUtils.isNotEmpty(thiedInhospInfo.getAdmissDate()))
+                        patMedInhosp.setStarttime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getAdmissDate()));
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+                try {
+                    if (StringUtils.isNotEmpty(thiedInhospInfo.getOutDate()))
+                        patMedInhosp.setEndtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(thiedInhospInfo.getOutDate()));
+                } catch (ParseException e) {
+                    e.printStackTrace();
+                }
+                patMedInhosp.setDeptcode(thiedInhospInfo.getAdmissDeptId());
+                patMedInhosp.setDeptid(thiedInhospInfo.getAdmissDeptId());
+                patMedInhosp.setDeptname(thiedInhospInfo.getAdmissDeptName());
+                patMedInhosp.setBedNo(thiedInhospInfo.getAdmissBedNo());
+                patMedInhosp.setDelFlag("0");
+                patMedInhosp.setLeaveldeptcode(thiedInhospInfo.getCurrWardId());
+                patMedInhosp.setLeaveldeptname(thiedInhospInfo.getCurrWardName());
+                patMedInhosp.setLeavediagname(thiedInhospInfo.getDiagName());
+                patMedInhosp.setLeaveicd10code(thiedInhospInfo.getDiagIcd10());
+                patMedInhosp.setDrname(thiedInhospInfo.getDoctName());
+                if (cry.equals("0")) {
+                    patMedInhosp.setSchemestatus(1L);
+                } else if (cry.equals("1")) {
+                    patMedInhosp.setSchemestatus(2L);
+                }
+                patMedInhosp.setLeavehospitaldistrictcode(thiedInhospInfo.getCurrWardId());
+                patMedInhosp.setLeavehospitaldistrictid(thiedInhospInfo.getCurrWardId());
+                patMedInhosp.setLeavehospitaldistrictname(thiedInhospInfo.getCurrWardName());
+                patMedInhosp.setLeaveldeptid(thiedInhospInfo.getCurrDeptId());
+                patMedInhospService.insertPatMedInhosp(patMedInhosp);
+
+            }
+        }
+    }
+
+
     private String getKey() {
         Map<String, String> map = new HashMap<>();
         for (int i = 0; i < 6; i++) {
diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml
index 07e02ea..a0759e5 100644
--- a/ruoyi-system/pom.xml
+++ b/ruoyi-system/pom.xml
@@ -33,4 +33,4 @@
 
     </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserDeptService.java
new file mode 100644
index 0000000..e8802d9
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserDeptService.java
@@ -0,0 +1,62 @@
+package com.ruoyi.system.service;
+
+import com.ruoyi.common.core.domain.entity.SysUserDept;
+
+import java.util.List;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慡ervice鎺ュ彛
+ *
+ * @author lihu
+ * @date 2024-08-29
+ */
+public interface ISysUserDeptService
+{
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    public SysUserDept selectSysUserDeptById(Long id);
+
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
+     *
+     * @param sysUserDept 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆戦泦鍚�
+     */
+    public List<SysUserDept> selectSysUserDeptList(SysUserDept sysUserDept);
+
+    /**
+     * 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param sysUserDept 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    public int insertSysUserDept(SysUserDept sysUserDept);
+
+    /**
+     * 淇敼銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param sysUserDept 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    public int updateSysUserDept(SysUserDept sysUserDept);
+
+    /**
+     * 鎵归噺鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑銆愯濉啓鍔熻兘鍚嶇О銆戜富閿泦鍚�
+     * @return 缁撴灉
+     */
+    public int deleteSysUserDeptByIds(Long[] ids);
+
+    /**
+     * 鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆戜俊鎭�
+     *
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 缁撴灉
+     */
+    public int deleteSysUserDeptById(Long id);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserDeptServiceImpl.java
new file mode 100644
index 0000000..f1a1655
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserDeptServiceImpl.java
@@ -0,0 +1,94 @@
+package com.ruoyi.system.service.impl;
+
+import com.ruoyi.common.core.domain.entity.SysUserDept;
+import com.ruoyi.system.service.ISysUserDeptService;
+import com.smartor.mapper.SysUserDeptMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慡ervice涓氬姟灞傚鐞�
+ *
+ * @author lihu
+ * @date 2024-08-29
+ */
+@Service
+public class SysUserDeptServiceImpl implements ISysUserDeptService
+{
+    @Autowired
+    private SysUserDeptMapper sysUserDeptMapper;
+
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    @Override
+    public SysUserDept selectSysUserDeptById(Long id)
+    {
+        return sysUserDeptMapper.selectSysUserDeptById(id);
+    }
+
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
+     *
+     * @param sysUserDept 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    @Override
+    public List<SysUserDept> selectSysUserDeptList(SysUserDept sysUserDept)
+    {
+        return sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
+    }
+
+    /**
+     * 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param sysUserDept 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertSysUserDept(SysUserDept sysUserDept)
+    {
+        return sysUserDeptMapper.insertSysUserDept(sysUserDept);
+    }
+
+    /**
+     * 淇敼銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param sysUserDept 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateSysUserDept(SysUserDept sysUserDept)
+    {
+        return sysUserDeptMapper.updateSysUserDept(sysUserDept);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteSysUserDeptByIds(Long[] ids)
+    {
+        return sysUserDeptMapper.deleteSysUserDeptByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆戜俊鎭�
+     *
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteSysUserDeptById(Long id)
+    {
+        return sysUserDeptMapper.deleteSysUserDeptById(id);
+    }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index c312d89..79df621 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -1,19 +1,11 @@
 package com.ruoyi.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-import javax.validation.Validator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.entity.SysUserDept;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -22,26 +14,36 @@
 import com.ruoyi.system.domain.SysPost;
 import com.ruoyi.system.domain.SysUserPost;
 import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.mapper.SysPostMapper;
-import com.ruoyi.system.mapper.SysRoleMapper;
-import com.ruoyi.system.mapper.SysUserMapper;
-import com.ruoyi.system.mapper.SysUserPostMapper;
-import com.ruoyi.system.mapper.SysUserRoleMapper;
+import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
+import com.smartor.mapper.SysUserDeptMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.validation.Validator;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 鐢ㄦ埛 涓氬姟灞傚鐞�
- * 
+ *
  * @author ruoyi
  */
 @Service
-public class SysUserServiceImpl implements ISysUserService
-{
+public class SysUserServiceImpl implements ISysUserService {
     private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
 
     @Autowired
     private SysUserMapper userMapper;
+    @Autowired
+    private SysUserDeptMapper sysUserDeptMapper;
 
     @Autowired
     private SysRoleMapper roleMapper;
@@ -63,79 +65,86 @@
 
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
      */
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectUserList(SysUser user)
-    {
+    public List<SysUser> selectUserList(SysUser user) {
         return userMapper.selectUserList(user);
     }
 
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛�
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
      */
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectAllocatedList(SysUser user)
-    {
+    public List<SysUser> selectAllocatedList(SysUser user) {
         return userMapper.selectAllocatedList(user);
     }
 
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛�
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
      */
     @Override
     @DataScope(deptAlias = "d", userAlias = "u")
-    public List<SysUser> selectUnallocatedList(SysUser user)
-    {
+    public List<SysUser> selectUnallocatedList(SysUser user) {
         return userMapper.selectUnallocatedList(user);
     }
 
     /**
      * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴�
-     * 
+     *
      * @param userName 鐢ㄦ埛鍚�
      * @return 鐢ㄦ埛瀵硅薄淇℃伅
      */
     @Override
-    public SysUser selectUserByUserName(String userName)
-    {
+    public SysUser selectUserByUserName(String userName) {
+        SysUser sysUser = userMapper.selectUserByUserName(userName);
+        List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());
+        List<Long> deptIds = new ArrayList<>();
+        for (SysDept sysDept : sysDepts) {
+            deptIds.add(sysDept.getDeptId());
+        }
+        sysUser.setDepts(deptIds);
         return userMapper.selectUserByUserName(userName);
     }
 
     /**
      * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
      * @return 鐢ㄦ埛瀵硅薄淇℃伅
      */
     @Override
-    public SysUser selectUserById(Long userId)
-    {
-        return userMapper.selectUserById(userId);
+    public SysUser selectUserById(Long userId) {
+        SysUser sysUser = userMapper.selectUserById(userId);
+        List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());
+        List<Long> deptIds = new ArrayList<>();
+        for (SysDept sysDept : sysDepts) {
+            deptIds.add(sysDept.getDeptId());
+        }
+        sysUser.setDepts(deptIds);
+        return sysUser;
     }
 
     /**
      * 鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍
-     * 
+     *
      * @param userName 鐢ㄦ埛鍚�
      * @return 缁撴灉
      */
     @Override
-    public String selectUserRoleGroup(String userName)
-    {
+    public String selectUserRoleGroup(String userName) {
         List<SysRole> list = roleMapper.selectRolesByUserName(userName);
-        if (CollectionUtils.isEmpty(list))
-        {
+        if (CollectionUtils.isEmpty(list)) {
             return StringUtils.EMPTY;
         }
         return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(","));
@@ -143,16 +152,14 @@
 
     /**
      * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍
-     * 
+     *
      * @param userName 鐢ㄦ埛鍚�
      * @return 缁撴灉
      */
     @Override
-    public String selectUserPostGroup(String userName)
-    {
+    public String selectUserPostGroup(String userName) {
         List<SysPost> list = postMapper.selectPostsByUserName(userName);
-        if (CollectionUtils.isEmpty(list))
-        {
+        if (CollectionUtils.isEmpty(list)) {
             return StringUtils.EMPTY;
         }
         return list.stream().map(SysPost::getPostName).collect(Collectors.joining(","));
@@ -160,17 +167,15 @@
 
     /**
      * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public String checkUserNameUnique(SysUser user)
-    {
+    public String checkUserNameUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = userMapper.checkUserNameUnique(user.getUserName());
-        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -183,12 +188,10 @@
      * @return
      */
     @Override
-    public String checkPhoneUnique(SysUser user)
-    {
+    public String checkPhoneUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());
-        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -201,12 +204,10 @@
      * @return
      */
     @Override
-    public String checkEmailUnique(SysUser user)
-    {
+    public String checkEmailUnique(SysUser user) {
         Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = userMapper.checkEmailUnique(user.getEmail());
-        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
-        {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -214,33 +215,28 @@
 
     /**
      * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      */
     @Override
-    public void checkUserAllowed(SysUser user)
-    {
-        if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin())
-        {
+    public void checkUserAllowed(SysUser user) {
+        if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) {
             throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳鐢ㄦ埛");
         }
     }
 
     /**
      * 鏍¢獙鐢ㄦ埛鏄惁鏈夋暟鎹潈闄�
-     * 
+     *
      * @param userId 鐢ㄦ埛id
      */
     @Override
-    public void checkUserDataScope(Long userId)
-    {
-        if (!SysUser.isAdmin(SecurityUtils.getUserId()))
-        {
+    public void checkUserDataScope(Long userId) {
+        if (!SysUser.isAdmin(SecurityUtils.getUserId())) {
             SysUser user = new SysUser();
             user.setUserId(userId);
             List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);
-            if (StringUtils.isEmpty(users))
-            {
+            if (StringUtils.isEmpty(users)) {
                 throw new ServiceException("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛�");
             }
         }
@@ -248,16 +244,26 @@
 
     /**
      * 鏂板淇濆瓨鐢ㄦ埛淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
     @Transactional
-    public int insertUser(SysUser user)
-    {
+    public int insertUser(SysUser user) {
         // 鏂板鐢ㄦ埛淇℃伅
         int rows = userMapper.insertUser(user);
+        //鏂板鐢ㄦ埛涓庨儴闂ㄥ叧鑱�
+        if (!CollectionUtils.isEmpty(user.getDepts())) {
+            for (Long deptId : user.getDepts()) {
+                SysUserDept sysUserDep = new SysUserDept();
+                sysUserDep.setUserId(user.getUserId());
+                sysUserDep.setDeptId(deptId);
+                sysUserDep.setCreateTime(new Date());
+                sysUserDep.setUpdateTime(new Date());
+                sysUserDeptMapper.insertSysUserDept(sysUserDep);
+            }
+        }
         // 鏂板鐢ㄦ埛宀椾綅鍏宠仈
         insertUserPost(user);
         // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
@@ -267,26 +273,24 @@
 
     /**
      * 娉ㄥ唽鐢ㄦ埛淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public boolean registerUser(SysUser user)
-    {
+    public boolean registerUser(SysUser user) {
         return userMapper.insertUser(user) > 0;
     }
 
     /**
      * 淇敼淇濆瓨鐢ㄦ埛淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
     @Transactional
-    public int updateUser(SysUser user)
-    {
+    public int updateUser(SysUser user) {
         Long userId = user.getUserId();
         // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
         userRoleMapper.deleteUserRoleByUserId(userId);
@@ -296,109 +300,123 @@
         userPostMapper.deleteUserPostByUserId(userId);
         // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
         insertUserPost(user);
+        //鍒犻櫎鐢ㄦ埛涓庨儴闂ㄧ殑鍏宠仈
+        Long[] ids = {user.getUserId()};
+        //鏂板鐢ㄦ埛涓庨儴闂ㄥ叧鑱�
+        sysUserDeptMapper.deleteSysUserDeptByIds(ids);
+        if (!CollectionUtils.isEmpty(user.getDepts())) {
+            for ( Long deptId: user.getDepts()) {
+                SysUserDept sysUserDep = new SysUserDept();
+                sysUserDep.setUserId(user.getUserId());
+                sysUserDep.setDeptId(deptId);
+                //鏌ヨ鏄惁 宸茬粡鍏宠仈璇ラ儴闂�
+                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDep);
+                if (!CollectionUtils.isEmpty(sysUserDepts)) {
+                    SysUserDept sysUserDept = sysUserDepts.get(0);
+                    sysUserDept.setDelFlag(0L);
+                    sysUserDeptMapper.updateSysUserDept(sysUserDept);
+                    continue;
+                }
+                sysUserDep.setCreateTime(new Date());
+                sysUserDep.setUpdateTime(new Date());
+                sysUserDeptMapper.insertSysUserDept(sysUserDep);
+            }
+        }else {
+
+        }
         return userMapper.updateUser(user);
     }
 
     /**
      * 鐢ㄦ埛鎺堟潈瑙掕壊
-     * 
-     * @param userId 鐢ㄦ埛ID
+     *
+     * @param userId  鐢ㄦ埛ID
      * @param roleIds 瑙掕壊缁�
      */
     @Override
     @Transactional
-    public void insertUserAuth(Long userId, Long[] roleIds)
-    {
+    public void insertUserAuth(Long userId, Long[] roleIds) {
         userRoleMapper.deleteUserRoleByUserId(userId);
         insertUserRole(userId, roleIds);
     }
 
     /**
      * 淇敼鐢ㄦ埛鐘舵��
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public int updateUserStatus(SysUser user)
-    {
+    public int updateUserStatus(SysUser user) {
         return userMapper.updateUser(user);
     }
 
     /**
      * 淇敼鐢ㄦ埛鍩烘湰淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public int updateUserProfile(SysUser user)
-    {
+    public int updateUserProfile(SysUser user) {
         return userMapper.updateUser(user);
     }
 
     /**
      * 淇敼鐢ㄦ埛澶村儚
-     * 
+     *
      * @param userName 鐢ㄦ埛鍚�
-     * @param avatar 澶村儚鍦板潃
+     * @param avatar   澶村儚鍦板潃
      * @return 缁撴灉
      */
     @Override
-    public boolean updateUserAvatar(String userName, String avatar)
-    {
+    public boolean updateUserAvatar(String userName, String avatar) {
         return userMapper.updateUserAvatar(userName, avatar) > 0;
     }
 
     /**
      * 閲嶇疆鐢ㄦ埛瀵嗙爜
-     * 
+     *
      * @param user 鐢ㄦ埛淇℃伅
      * @return 缁撴灉
      */
     @Override
-    public int resetPwd(SysUser user)
-    {
+    public int resetPwd(SysUser user) {
         return userMapper.updateUser(user);
     }
 
     /**
      * 閲嶇疆鐢ㄦ埛瀵嗙爜
-     * 
+     *
      * @param userName 鐢ㄦ埛鍚�
      * @param password 瀵嗙爜
      * @return 缁撴灉
      */
     @Override
-    public int resetUserPwd(String userName, String password)
-    {
+    public int resetUserPwd(String userName, String password) {
         return userMapper.resetUserPwd(userName, password);
     }
 
     /**
      * 鏂板鐢ㄦ埛瑙掕壊淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛瀵硅薄
      */
-    public void insertUserRole(SysUser user)
-    {
+    public void insertUserRole(SysUser user) {
         this.insertUserRole(user.getUserId(), user.getRoleIds());
     }
 
     /**
      * 鏂板鐢ㄦ埛宀椾綅淇℃伅
-     * 
+     *
      * @param user 鐢ㄦ埛瀵硅薄
      */
-    public void insertUserPost(SysUser user)
-    {
+    public void insertUserPost(SysUser user) {
         Long[] posts = user.getPostIds();
-        if (StringUtils.isNotEmpty(posts))
-        {
+        if (StringUtils.isNotEmpty(posts)) {
             // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
             List<SysUserPost> list = new ArrayList<SysUserPost>(posts.length);
-            for (Long postId : posts)
-            {
+            for (Long postId : posts) {
                 SysUserPost up = new SysUserPost();
                 up.setUserId(user.getUserId());
                 up.setPostId(postId);
@@ -410,18 +428,15 @@
 
     /**
      * 鏂板鐢ㄦ埛瑙掕壊淇℃伅
-     * 
-     * @param userId 鐢ㄦ埛ID
+     *
+     * @param userId  鐢ㄦ埛ID
      * @param roleIds 瑙掕壊缁�
      */
-    public void insertUserRole(Long userId, Long[] roleIds)
-    {
-        if (StringUtils.isNotEmpty(roleIds))
-        {
+    public void insertUserRole(Long userId, Long[] roleIds) {
+        if (StringUtils.isNotEmpty(roleIds)) {
             // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
             List<SysUserRole> list = new ArrayList<SysUserRole>(roleIds.length);
-            for (Long roleId : roleIds)
-            {
+            for (Long roleId : roleIds) {
                 SysUserRole ur = new SysUserRole();
                 ur.setUserId(userId);
                 ur.setRoleId(roleId);
@@ -433,14 +448,13 @@
 
     /**
      * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛
-     * 
+     *
      * @param userId 鐢ㄦ埛ID
      * @return 缁撴灉
      */
     @Override
     @Transactional
-    public int deleteUserById(Long userId)
-    {
+    public int deleteUserById(Long userId) {
         // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
         userRoleMapper.deleteUserRoleByUserId(userId);
         // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃
@@ -450,16 +464,14 @@
 
     /**
      * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
-     * 
+     *
      * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
      * @return 缁撴灉
      */
     @Override
     @Transactional
-    public int deleteUserByIds(Long[] userIds)
-    {
-        for (Long userId : userIds)
-        {
+    public int deleteUserByIds(Long[] userIds) {
+        for (Long userId : userIds) {
             checkUserAllowed(new SysUser(userId));
             checkUserDataScope(userId);
         }
@@ -472,17 +484,15 @@
 
     /**
      * 瀵煎叆鐢ㄦ埛鏁版嵁
-     * 
-     * @param userList 鐢ㄦ埛鏁版嵁鍒楄〃
+     *
+     * @param userList        鐢ㄦ埛鏁版嵁鍒楄〃
      * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁
-     * @param operName 鎿嶄綔鐢ㄦ埛
+     * @param operName        鎿嶄綔鐢ㄦ埛
      * @return 缁撴灉
      */
     @Override
-    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName)
-    {
-        if (StringUtils.isNull(userList) || userList.size() == 0)
-        {
+    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {
+        if (StringUtils.isNull(userList) || userList.size() == 0) {
             throw new ServiceException("瀵煎叆鐢ㄦ埛鏁版嵁涓嶈兘涓虹┖锛�");
         }
         int successNum = 0;
@@ -490,23 +500,18 @@
         StringBuilder successMsg = new StringBuilder();
         StringBuilder failureMsg = new StringBuilder();
         String password = configService.selectConfigByKey("sys.user.initPassword");
-        for (SysUser user : userList)
-        {
-            try
-            {
+        for (SysUser user : userList) {
+            try {
                 // 楠岃瘉鏄惁瀛樺湪杩欎釜鐢ㄦ埛
                 SysUser u = userMapper.selectUserByUserName(user.getUserName());
-                if (StringUtils.isNull(u))
-                {
+                if (StringUtils.isNull(u)) {
                     BeanValidators.validateWithException(validator, user);
                     user.setPassword(SecurityUtils.encryptPassword(password));
                     user.setCreateBy(operName);
                     this.insertUser(user);
                     successNum++;
                     successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆鎴愬姛");
-                }
-                else if (isUpdateSupport)
-                {
+                } else if (isUpdateSupport) {
                     BeanValidators.validateWithException(validator, user);
                     checkUserAllowed(user);
                     checkUserDataScope(user.getUserId());
@@ -514,28 +519,21 @@
                     this.updateUser(user);
                     successNum++;
                     successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 鏇存柊鎴愬姛");
-                }
-                else
-                {
+                } else {
                     failureNum++;
                     failureMsg.append("<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 宸插瓨鍦�");
                 }
-            }
-            catch (Exception e)
-            {
+            } catch (Exception e) {
                 failureNum++;
                 String msg = "<br/>" + failureNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆澶辫触锛�";
                 failureMsg.append(msg + e.getMessage());
                 log.error(msg, e);
             }
         }
-        if (failureNum > 0)
-        {
+        if (failureNum > 0) {
             failureMsg.insert(0, "寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 " + failureNum + " 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細");
             throw new ServiceException(failureMsg.toString());
-        }
-        else
-        {
+        } else {
             successMsg.insert(0, "鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� " + successNum + " 鏉★紝鏁版嵁濡備笅锛�");
         }
         return successMsg.toString();
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index d86c444..78496be 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -4,7 +4,7 @@
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.system.mapper.SysUserMapper">
 
-    <resultMap type="SysUser" id="SysUserResult">
+    <resultMap type="com.ruoyi.common.core.domain.entity.SysUser" id="SysUserResult">
         <id     property="userId"       column="user_id"      />
         <result property="deptId"       column="dept_id"      />
         <result property="userName"     column="user_name"    />
@@ -26,8 +26,8 @@
         <association property="dept"    column="dept_id" javaType="SysDept" resultMap="deptResult" />
         <collection  property="roles"   javaType="java.util.List"           resultMap="RoleResult" />
     </resultMap>
-	
-    <resultMap id="deptResult" type="SysDept">
+
+    <resultMap id="deptResult" type="com.ruoyi.common.core.domain.entity.SysDept">
         <id     property="deptId"    column="dept_id"     />
         <result property="parentId"  column="parent_id"   />
         <result property="deptName"  column="dept_name"   />
@@ -36,8 +36,8 @@
         <result property="leader"    column="leader"      />
         <result property="status"    column="dept_status" />
     </resultMap>
-	
-    <resultMap id="RoleResult" type="SysRole">
+
+    <resultMap id="RoleResult" type="com.ruoyi.common.core.domain.entity.SysRole">
         <id     property="roleId"       column="role_id"        />
         <result property="roleName"     column="role_name"      />
         <result property="roleKey"      column="role_key"       />
@@ -45,9 +45,9 @@
         <result property="dataScope"     column="data_scope"    />
         <result property="status"       column="role_status"    />
     </resultMap>
-	
+
 	<sql id="selectUserVo">
-        select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, 
+        select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
         d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
         r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
         from sys_user u
@@ -55,7 +55,7 @@
 		    left join sys_user_role ur on u.user_id = ur.user_id
 		    left join sys_role r on r.role_id = ur.role_id
     </sql>
-    
+
     <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
 		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
@@ -84,8 +84,8 @@
 		<!-- 鏁版嵁鑼冨洿杩囨护 -->
 		${params.dataScope}
 	</select>
-	
-	<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
+
+	<select id="selectAllocatedList" parameterType="com.ruoyi.common.core.domain.entity.SysUser" resultMap="SysUserResult">
 	    select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
 	    from sys_user u
 			 left join sys_dept d on u.dept_id = d.dept_id
@@ -101,8 +101,8 @@
 		<!-- 鏁版嵁鑼冨洿杩囨护 -->
 		${params.dataScope}
 	</select>
-	
-	<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
+
+	<select id="selectUnallocatedList" parameterType="com.ruoyi.common.core.domain.entity.SysUser" resultMap="SysUserResult">
 	    select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
 	    from sys_user u
 			 left join sys_dept d on u.dept_id = d.dept_id
@@ -119,30 +119,30 @@
 		<!-- 鏁版嵁鑼冨洿杩囨护 -->
 		${params.dataScope}
 	</select>
-	
+
 	<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
 	    <include refid="selectUserVo"/>
 		where u.user_name = #{userName} and u.del_flag = '0'
 	</select>
-	
+
 	<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
 		<include refid="selectUserVo"/>
 		where u.user_id = #{userId}
 	</select>
-	
+
 	<select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
 		select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
 	</select>
-	
+
 	<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
 		select user_id, phonenumber from sys_user where phonenumber = #{phonenumber} and del_flag = '0' limit 1
 	</select>
-	
+
 	<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
 		select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
 	</select>
-	
-	<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
+
+	<insert id="insertUser" parameterType="com.ruoyi.common.core.domain.entity.SysUser" useGeneratedKeys="true" keyProperty="userId">
  		insert into sys_user(
  			<if test="userId != null and userId != 0">user_id,</if>
  			<if test="deptId != null and deptId != 0">dept_id,</if>
@@ -173,8 +173,8 @@
  			sysdate()
  		)
 	</insert>
-	
-	<update id="updateUser" parameterType="SysUser">
+
+	<update id="updateUser" parameterType="com.ruoyi.common.core.domain.entity.SysUser">
  		update sys_user
  		<set>
  			<if test="deptId != null and deptId != 0">dept_id = #{deptId},</if>
@@ -194,28 +194,28 @@
  		</set>
  		where user_id = #{userId}
 	</update>
-	
-	<update id="updateUserStatus" parameterType="SysUser">
+
+	<update id="updateUserStatus" parameterType="com.ruoyi.common.core.domain.entity.SysUser">
  		update sys_user set status = #{status} where user_id = #{userId}
 	</update>
-	
-	<update id="updateUserAvatar" parameterType="SysUser">
+
+	<update id="updateUserAvatar" parameterType="com.ruoyi.common.core.domain.entity.SysUser">
  		update sys_user set avatar = #{avatar} where user_name = #{userName}
 	</update>
-	
-	<update id="resetUserPwd" parameterType="SysUser">
+
+	<update id="resetUserPwd" parameterType="com.ruoyi.common.core.domain.entity.SysUser">
  		update sys_user set password = #{password} where user_name = #{userName}
 	</update>
-	
+
 	<delete id="deleteUserById" parameterType="Long">
  		update sys_user set del_flag = '2' where user_id = #{userId}
  	</delete>
- 	
+
  	<delete id="deleteUserByIds" parameterType="Long">
  		update sys_user set del_flag = '2' where user_id in
  		<foreach collection="array" item="userId" open="(" separator="," close=")">
  			#{userId}
-        </foreach> 
+        </foreach>
  	</delete>
-	
-</mapper> 
\ No newline at end of file
+
+</mapper>
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetoption.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetoption.java
index bc292f7..2e66f28 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetoption.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetoption.java
@@ -47,6 +47,13 @@
     @Excel(name = "绫诲埆鍚嶇О")
     private String categoryName;
 
+    /**
+     * 閫変腑鎻愮ず
+     */
+    @ApiModelProperty(value = "閫変腑鎻愮ず")
+    @Excel(name = "閫変腑鎻愮ず")
+    private String prompt;
+
     @ApiModelProperty(value = "鎸囨爣鍊�")
     @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
     private String targetvalue;
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java
index b9d1f8d..59ff3f7 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScript.java
@@ -1,5 +1,6 @@
 package com.smartor.domain;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -57,6 +58,13 @@
     private Long templateid;
 
     /**
+     * 鍒嗘暟
+     */
+    @Excel(name = "鍒嗘暟")
+    @ApiModelProperty(value = "鍒嗘暟")
+    private BigDecimal score;
+
+    /**
      * 璇濇湳ID
      */
     @ApiModelProperty(value = "璇濇湳ID")
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java
index 59dc22a..e75e9aa 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateScriptVO.java
@@ -56,6 +56,13 @@
     private String scriptPoint;
 
     /**
+     * 鍒嗘暟
+     */
+    @Excel(name = "鍒嗘暟")
+    @ApiModelProperty(value = "鍒嗘暟")
+    private Long score;
+
+    /**
      * 璇濇湳鍐呭
      */
     @Excel(name = "璇濇湳鍐呭")
@@ -77,6 +84,13 @@
     private String scriptVoice;
 
     /**
+     * 闂缁撴灉
+     */
+    @Excel(name = "闂缁撴灉")
+    @ApiModelProperty(value = "闂缁撴灉")
+    private String scriptResult;
+
+    /**
      * 鏃犲尮閰嶈瘽鏈�
      */
     @Excel(name = "鏃犲尮閰嶈瘽鏈�")
diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java
index dc32f40..63612d6 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTemplateTargetoption.java
@@ -7,6 +7,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -41,6 +42,13 @@
     @Excel(name = "鎸囨爣鍚嶇О")
     @ApiModelProperty(value = "鎸囨爣鍚嶇О")
     private String targetname;
+
+    /**
+     * 閫変腑鎻愮ず
+     */
+    @Excel(name = "閫変腑鎻愮ず")
+    @ApiModelProperty(value = "閫変腑鎻愮ず")
+    private String prompt;
 
     /**
      * 妯℃澘ID
@@ -140,6 +148,13 @@
     @ApiModelProperty(value = "鏄惁寮傚父鏍囪瘑")
     private Long isabnormal;
 
+    /**
+     * 鏄惁寮傚父鏍囪瘑
+     */
+    @Excel(name = "鏄惁寮傚父鏍囪瘑")
+    @ApiModelProperty(value = "鏄惁寮傚父鏍囪瘑")
+    private BigDecimal score;
+
 //    /**
 //     * 棰勮闃�鍊间笂闄�
 //     */
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java
index 871ca1a..37d584f 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScript.java
@@ -7,6 +7,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -17,7 +18,7 @@
  * @date 2024-05-13
  */
 @Data
-@ApiModel(value = "IvrTaskTemplateScript" , description = "闅忚浠诲姟妯$増闂璇濇湳搴撳璞�")
+@ApiModel(value = "IvrTaskTemplateScript", description = "闅忚浠诲姟妯$増闂璇濇湳搴撳璞�")
 public class IvrTaskTemplateScript extends BaseEntity {
 
     private static final long serialVersionUID = 1L;
@@ -34,6 +35,13 @@
     @Excel(name = "浠诲姟id")
     @ApiModelProperty(value = "浠诲姟id")
     private Long taskid;
+
+    /**
+     * 鍒嗘暟
+     */
+    @Excel(name = "鍒嗘暟")
+    @ApiModelProperty(value = "鍒嗘暟")
+    private BigDecimal score;
 
 
     /**
@@ -152,7 +160,7 @@
     /**
      * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
      */
-    @Excel(name = "鍊肩被鍨�" , readConverterExp = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
+    @Excel(name = "鍊肩被鍨�", readConverterExp = "鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級")
     @ApiModelProperty(value = "涓婚敭")
     private Long valueType;
 
@@ -173,7 +181,7 @@
      * 涓婁紶鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = " 涓婁紶鏃堕棿 " , width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = " 涓婁紶鏃堕棿 ", width = 30, dateFormat = "yyyy-MM-dd")
     @ApiModelProperty(value = "涓婁紶鏃堕棿")
     private Date uploadTime;
 
@@ -222,21 +230,21 @@
     /**
      * 鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級
      */
-    @Excel(name = "鍏跺畠鏁版嵁" , readConverterExp = "瀛�=鍌ㄥ彉閲�")
+    @Excel(name = "鍏跺畠鏁版嵁", readConverterExp = "瀛�=鍌ㄥ彉閲�")
     @ApiModelProperty(value = "鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級")
     private String otherdata;
 
     /**
      * 鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛�
      */
-    @Excel(name = "鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    " , readConverterExp = "缁�=浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧")
+    @Excel(name = "鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    ", readConverterExp = "缁�=浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧")
     @ApiModelProperty(value = "鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛�")
     private String isMust;
 
     /**
      * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級
      */
-    @Excel(name = "闂缁撴灉" , readConverterExp = "缁�=鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨�")
+    @Excel(name = "闂缁撴灉", readConverterExp = "缁�=鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨�")
     @ApiModelProperty(value = "闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級")
     private String questionResult;
 
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java
index 60d7a3a..17f9ef4 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java
@@ -7,6 +7,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -30,6 +31,13 @@
     private Long id;
 
     /**
+     * 鍒嗘暟
+     */
+    @Excel(name = "鍒嗘暟")
+    @ApiModelProperty(value = "鍒嗘暟")
+    private BigDecimal score;
+
+    /**
      * 浠诲姟id
      */
     @Excel(name = "浠诲姟id")
diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateTargetoption.java b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateTargetoption.java
index 64f0c46..23b2201 100644
--- a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateTargetoption.java
+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateTargetoption.java
@@ -1,5 +1,6 @@
 package com.smartor.domain;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -46,6 +47,13 @@
     private Long templateID;
 
     /**
+     * 鍒嗘暟
+     */
+    @Excel(name = "鍒嗘暟")
+    @ApiModelProperty(value = "鍒嗘暟")
+    private BigDecimal score;
+
+    /**
      * 鎸囨爣ID
      */
     @Excel(name = "鎸囨爣ID")
@@ -60,6 +68,13 @@
     private String targetname;
 
     /**
+     * 閫変腑鎻愮ず
+     */
+    @Excel(name = "閫変腑鎻愮ず")
+    @ApiModelProperty(value = "閫変腑鎻愮ず")
+    private String prompt;
+
+    /**
      * 妯℃澘鎸囨爣绫诲瀷
      */
     @Excel(name = "妯℃澘鎸囨爣绫诲瀷")
diff --git a/smartor/src/main/java/com/smartor/domain/PatArchive.java b/smartor/src/main/java/com/smartor/domain/PatArchive.java
index 31860dc..c981a65 100644
--- a/smartor/src/main/java/com/smartor/domain/PatArchive.java
+++ b/smartor/src/main/java/com/smartor/domain/PatArchive.java
@@ -31,6 +31,46 @@
     private Long id;
 
     /**
+     * 鐖禝D
+     */
+    @ApiModelProperty("鐖禝D")
+    private Long pid;
+
+    /**
+     * GUID
+     */
+    @ApiModelProperty("GUID")
+    private Long guid;
+
+    /**
+     * 濮撳悕
+     */
+    @ApiModelProperty("鎮h�呯紪鍙�")
+    @Excel(name = " 鎮h�呯紪鍙� ")
+    private String patientno;
+
+    /**
+     * 鏉ユ簮(1锛欻IS锛�2锛氭暟鎹钩鍙帮紱3锛氭枃浠跺鍏ワ級
+     */
+    @ApiModelProperty("鏉ユ簮(1锛欻IS锛�2锛氭暟鎹钩鍙帮紱3锛氭枃浠跺鍏ワ級")
+    @Excel(name = " 鏉ユ簮(1锛欻IS锛�2锛氭暟鎹钩鍙帮紱3锛氭枃浠跺鍏ワ級 ")
+    private int sourcefrom;
+
+    /**
+     * his绯荤粺鐨勬偅鑰卛d
+     */
+    @ApiModelProperty("his绯荤粺鐨勬偅鑰卛d")
+    @Excel(name = "his绯荤粺鐨勬偅鑰卛d")
+    private int patidHis;
+
+    /**
+     * his绯荤粺鐨勬偅鑰卛d
+     */
+    @ApiModelProperty("his绯荤粺鐨勬偅鑰卛d")
+    @Excel(name = "his绯荤粺鐨勬偅鑰卛d")
+    private String sdFlag;
+
+    /**
      * 濮撳悕
      */
     @ApiModelProperty("濮撳悕")
@@ -59,7 +99,6 @@
     @Excel(name = " 绫嶈疮 ")
     private String nativePlace;
 
-
     /**
      * 璇佷欢鍙风爜
      */
@@ -67,14 +106,12 @@
     @Excel(name = " 灞呬綇鍦� ")
     private String placeOfResidence;
 
-
     /**
      * 璇佷欢鍙风爜
      */
     @ApiModelProperty("鍑虹敓鍦�")
     @Excel(name = " 鍑虹敓鍦� ")
     private String birthplace;
-
 
     /**
      * 璇佷欢鍙风爜
@@ -105,13 +142,6 @@
     @ApiModelProperty("骞撮緞")
     @Excel(name = " 骞撮緞 ")
     private Long age;
-
-    /**
-     * 鏉ユ簮
-     */
-    @ApiModelProperty("鏉ユ簮")
-    @Excel(name = " 鏉ユ簮 ")
-    private Long sourcefrom;
 
     /**
      * 寤烘。鏃堕棿
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java b/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
index 587059d..dd4fa9d 100644
--- a/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
+++ b/smartor/src/main/java/com/smartor/domain/PatMedInhosp.java
@@ -205,7 +205,7 @@
      * 鐥呭尯ID
      */
     @ApiModelProperty(value = "鐥呭尯ID")
-    private Long hospitaldistrictid;
+    private String hospitaldistrictid;
 
     /**
      * 鍑洪櫌鐥呭尯缂栧彿
@@ -224,19 +224,19 @@
      * 鍑洪櫌鐥呭尯ID
      */
     @ApiModelProperty(value = "鍑洪櫌鐥呭尯ID")
-    private Long leavehospitaldistrictid;
+    private String leavehospitaldistrictid;
 
     /**
      * 鍏ラ櫌绉戝ID
      */
     @ApiModelProperty(value = "鍏ラ櫌绉戝ID")
-    private Long deptid;
+    private String deptid;
 
     /**
      * 鍑洪櫌绉戝ID
      */
     @ApiModelProperty(value = "鍑洪櫌绉戝ID")
-    private Long leaveldeptid;
+    private String leaveldeptid;
 
     /**
      * 鏂规鐘舵�佹搷浣滄椂闂�
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedReq.java b/smartor/src/main/java/com/smartor/domain/PatMedReq.java
new file mode 100644
index 0000000..9fdd46b
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/PatMedReq.java
@@ -0,0 +1,59 @@
+package com.smartor.domain;
+
+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.util.Date;
+import java.util.List;
+
+/**
+ * 浣忛櫌銆侀棬璇娿�佸嚭闄� 璇锋眰鍏ュ弬
+ *
+ * @author smartor
+ * @date 2023-03-04
+ */
+@ApiModel(value = "PatMedReq", description = "浣忛櫌銆侀棬璇娿�佸嚭闄㈣姹傚叆鍙傚璞�")
+@Data
+public class PatMedReq extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 闂ㄨ瘖(涓虹┖鍒欎笉鏌�)
+     */
+    @ApiModelProperty(value = "闂ㄨ瘖(涓虹┖鍒欎笉鏌�)")
+    private Integer mz;
+
+    /**
+     * 浣忛櫌(涓虹┖鍒欎笉鏌�)
+     */
+    @ApiModelProperty(value = "浣忛櫌(涓虹┖鍒欎笉鏌�)")
+    private Integer zy;
+
+    /**
+     * 鍑洪櫌(涓虹┖鍒欎笉鏌�)
+     */
+    @ApiModelProperty(value = "鍑洪櫌(涓虹┖鍒欎笉鏌�)")
+    private Integer cy;
+
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @ApiModelProperty(value = "寮�濮嬫椂闂�")
+    private Date startDate;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    private Date endDate;
+
+    /**
+     * 鏀寔澶氫釜绉戝
+     */
+    @ApiModelProperty(value = "绉戝")
+    private List<String> deptcodeList;
+}
diff --git a/smartor/src/main/java/com/smartor/domain/PatMedRes.java b/smartor/src/main/java/com/smartor/domain/PatMedRes.java
new file mode 100644
index 0000000..901e0c2
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/PatMedRes.java
@@ -0,0 +1,38 @@
+package com.smartor.domain;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 浣忛櫌銆侀棬璇娿�佸嚭闄� 璇锋眰鍏ュ弬
+ *
+ * @author smartor
+ * @date 2023-03-04
+ */
+@ApiModel(value = "PatMedRes", description = "浣忛櫌銆侀棬璇娿�佸嚭闄㈣姹傝繑鍙傚璞�")
+@Data
+public class PatMedRes {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 绉戝
+     */
+    @ApiModelProperty(value = "绉戝")
+    private String deptname;
+
+
+    /**
+     * 浜烘
+     */
+    @ApiModelProperty(value = "浜烘")
+    private Integer rc;
+
+    /**
+     * 浜烘暟
+     */
+    @ApiModelProperty(value = "浜烘暟")
+    private Integer rs;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java b/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java
index 3e70087..6a5d515 100644
--- a/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java
+++ b/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java
@@ -96,6 +96,13 @@
     private String deptName;
 
     /**
+     * 绉戝缂栫爜
+     */
+    @Excel(name = "绉戝缂栫爜")
+    @ApiModelProperty("绉戝缂栫爜")
+    private String deptCode;
+
+    /**
      * 绉戝
      */
     @Excel(name = "鍦板潃")
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubTaskCacheReq.java b/smartor/src/main/java/com/smartor/domain/ServiceSubTaskCacheReq.java
index 003caee..8287e7b 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubTaskCacheReq.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubTaskCacheReq.java
@@ -26,6 +26,6 @@
     private List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOList;
 
     @ApiModelProperty(value = "闂鍥炵瓟鏄庣粏(闂嵎)")
-    List<SvyTaskTemplateScriptVO> svyTaskTemplateScriptVOList;
+    List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS;
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubTaskQueryReq.java b/smartor/src/main/java/com/smartor/domain/ServiceSubTaskQueryReq.java
index dab5945..3970f37 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubTaskQueryReq.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubTaskQueryReq.java
@@ -31,7 +31,7 @@
      * 鎮h�匢D
      */
     @ApiModelProperty(value = "鎮h�匢D")
-    private Long patId;
+    private Long patid;
 
     /**
      * 棰樼洰ID
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
index 6fab3a3..44cdaaf 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
@@ -1,5 +1,6 @@
 package com.smartor.domain;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -94,6 +95,13 @@
     @Excel(name = "浠诲姟绫诲瀷(0閫氱煡銆�1瀹f暀銆�2闂ㄨ瘖銆�3鍑洪櫌銆�4澶嶈瘖銆�5浣撴銆�6闂嵎銆�7鍖绘妧鈥︹��)")
     @ApiModelProperty(value = "浠诲姟绫诲瀷(0閫氱煡銆�1瀹f暀銆�2闂ㄨ瘖銆�3鍑洪櫌銆�4澶嶈瘖銆�5浣撴銆�6闂嵎銆�7鍖绘妧鈥︹��)")
     private String type;
+
+    /**
+     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)
+     */
+    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)")
+    @ApiModelProperty(value = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)")
+    private String serviceType;
 
     /**
      * 妯℃澘ID
@@ -253,20 +261,6 @@
     private String orgid;
 
     /**
-     * 鐖禝D
-     */
-    @Excel(name = "鐖禝D")
-    @ApiModelProperty(value = "鐖禝D")
-    private Long pid;
-
-    /**
-     * GUID
-     */
-    @Excel(name = "GUID")
-    @ApiModelProperty(value = "GUID")
-    private String guid;
-
-    /**
      * 鏂囨湰鍙橀噺鍙傛暟
      */
     @Excel(name = "鏂囨湰鍙橀噺鍙傛暟")
@@ -402,6 +396,13 @@
     private Long libtemplateid;
 
     /**
+     * 鎬诲垎
+     */
+    @Excel(name = "鎬诲垎")
+    @ApiModelProperty(value = "鎬诲垎")
+    private BigDecimal score;
+
+    /**
      * 妯℃澘搴撴ā鐗堝悕绉�
      */
     @Excel(name = "妯℃澘搴撴ā鐗堝悕绉�")
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java
new file mode 100644
index 0000000..970dbfe
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java
@@ -0,0 +1,39 @@
+package com.smartor.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 鍚勭瀹ゅ畬鎴愰噺缁熻缁撴灉
+ *
+ * @author ruoyi
+ * @date 2024-02-02
+ */
+@ApiModel(value = "ServiceSubtaskCount", description = "鍚勭瀹ゅ畬鎴愰噺缁熻缁撴灉")
+@Data
+public class ServiceSubtaskCount {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "瀛愪换鍔D")
+    private Long subTaskId;
+
+    @ApiModelProperty(value = "鏈嶅姟绫诲瀷")
+    private Long serviceType;
+
+    @ApiModelProperty(value = "骞存湀")
+    private String month;
+
+    @ApiModelProperty(value = "鏁伴噺")
+    private Long count;
+
+    public ServiceSubtaskCount(String month, Long serviceType, Long count) {
+        this.serviceType = serviceType;
+        this.month = month;
+        this.count = count;
+    }
+}
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
new file mode 100644
index 0000000..fd6127e
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCountReq.java
@@ -0,0 +1,33 @@
+package com.smartor.domain;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鍚勭瀹ゅ畬鎴愰噺缁熻缁撴灉璇锋眰
+ *
+ * @author ruoyi
+ * @date 2024-02-02
+ */
+@ApiModel(value = "ServiceSubtaskCountReq", description = "鍚勭瀹ゅ畬鎴愰噺缁熻缁撴灉璇锋眰")
+@Data
+public class ServiceSubtaskCountReq {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "鐢ㄦ埛ID")
+    private Long userId;
+
+    @ApiModelProperty(value = "寮�濮嬫椂闂�")
+    private Date startTime;
+
+    @ApiModelProperty(value = "缁撴潫鏃堕棿")
+    private Date endTime;
+
+    @ApiModelProperty(value = "鏈嶅姟绫诲瀷")
+    private List<Long> serviceType;
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java
index 8475762..d000c1a 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java
@@ -150,7 +150,7 @@
     private String valueType;
 
 
-    @ApiModelProperty(value = "闂绫诲瀷")
+    @ApiModelProperty(value = "闂id")
     private Long scriptid;
 
     @ApiModelProperty(value = "閫夐」绛旀鐨勯檮鍔犱俊鎭�")
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailVO.java
index e308b4d..6b86cee 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailVO.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailVO.java
@@ -149,7 +149,7 @@
     private String valueType;
 
 
-    @ApiModelProperty(value = "闂绫诲瀷")
+    @ApiModelProperty(value = "闂id")
     private Long scriptid;
 
     @ApiModelProperty(value = "閫夐」绛旀鐨勯檮鍔犱俊鎭�")
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
index 9c88a3c..278e250 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
@@ -36,11 +36,25 @@
     private String sendname;
 
     /**
+     * 鍙戦�乁UID
+     */
+    @Excel(name = " 鍙戦�乁UID ")
+    @ApiModelProperty(value = "鍙戦�乁UID")
+    private String senduuid;
+
+    /**
      * 鎵嬫満鍙�
      */
     @Excel(name = " 鎵嬫満鍙� ")
     @ApiModelProperty(value = "鎵嬫満鍙�")
     private String phone;
+
+    /**
+     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)
+     */
+    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)")
+    @ApiModelProperty(value = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)")
+    private String serviceType;
 
     /**
      * 鎬у埆
@@ -278,6 +292,20 @@
     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")
@@ -341,29 +369,7 @@
     @Excel(name = "  鎮h�匢D")
     @ApiModelProperty(value = "鎮h�匢D")
     private Long patid;
-//
-//    /**
-//     * 鐤剧梾鍚嶇О
-//     */
-//    @Excel(name = "鐤剧梾鍚嶇О")
-//    @ApiModelProperty(value = "鐤剧梾鍚嶇О")
-//    private String icdName;
-//
-//    /**
-//     * 鐥呭巻鍙�
-//     */
-//    @Excel(name = "鐥呭巻鍙�")
-//    @ApiModelProperty(value = "鐥呭巻鍙�")
-//    private String medicalRecordNo;
-//
-//    /**
-//     * 瀹f暀鍐呭
-//     */
-//    @Excel(name = "瀹f暀鍐呭")
-//    @ApiModelProperty(value = "瀹f暀鍐呭")
-//    private String preachcontent;
-//
-//
+
     /**
      * 鍙戦�佹椂闂存
      */
@@ -413,15 +419,15 @@
     @Excel(name = "  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌   3.涓撶梾锛�")
     @ApiModelProperty(value = "灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌   3.涓撶梾锛�")
     private String hospType;
-//
-//    /**
-//     * 寰俊
-//     */
-//    @Excel(name = "  寰俊")
-//    @ApiModelProperty(value = "寰俊")
-//    private String wechat;
-//
-//
+
+    /**
+     * 寰俊
+     */
+    @Excel(name = "  寰俊")
+    @ApiModelProperty(value = "寰俊")
+    private String wechat;
+
+
     /**
      * 璇婃柇鍚嶇О
      */
@@ -449,4 +455,12 @@
     @Excel(name = "  鐥呮埧鍙�")
     @ApiModelProperty(value = "鐥呮埧鍙�")
     private String roomno;
+
+    /**
+     * 鎬诲垎
+     */
+    @Excel(name = "鎬诲垎")
+    @ApiModelProperty(value = "鎬诲垎")
+    private Long score;
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibScript.java b/smartor/src/main/java/com/smartor/domain/SvyLibScript.java
index dcc509f..d7cf734 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibScript.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibScript.java
@@ -1,5 +1,6 @@
 package com.smartor.domain;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -37,7 +38,7 @@
      * 棰樼洰绫诲瀷;鏋氫妇 1.鍗曢�� 2澶氶�� 3濉┖
      */
     @Excel(name = " 棰樼洰绫诲瀷;鏋氫妇 1.鍗曢�� 2澶氶�� 3濉┖ ")
-    @ApiModelProperty("棰樼洰绫诲瀷;鏋氫妇 1.鍗曢�� 2澶氶�� 3濉┖")
+    @ApiModelProperty("棰樼洰绫诲瀷;鏋氫妇 1.鍗曢�� 2澶氶�� 3濉┖ 4闂瓟  5鍏跺畠")
     private String scriptType = "";
 
     /**
@@ -162,7 +163,7 @@
     private String scoretype;
 
     @ApiModelProperty(value = "棰樼洰鍒嗗�硷細鏁板瓧1,2绛夛紱瀛楁瘝A銆丅锛孋锛孌绛夛紱")
-    private String score;
+    private BigDecimal score;
 
     @ApiModelProperty(value = "閫傜敤鐤剧梾")
     private String icd10Name;
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibScriptOption.java b/smartor/src/main/java/com/smartor/domain/SvyLibScriptOption.java
index 4fdb52b..d6486c9 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibScriptOption.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibScriptOption.java
@@ -1,5 +1,6 @@
 package com.smartor.domain;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -90,7 +91,7 @@
      * 鍒嗘暟
      */
     @ApiModelProperty(value = "鍒嗘暟")
-    private String score;
+    private BigDecimal score;
 
     /**
      * 鎻愮ず
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTemplate.java b/smartor/src/main/java/com/smartor/domain/SvyLibTemplate.java
index 8153ea4..c8b98d8 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibTemplate.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTemplate.java
@@ -170,7 +170,7 @@
      */
     @ApiModelProperty(value = "鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎")
     private Integer isoperation;
-    
+
     /**
      * 绉戝鍚嶇О
      */
@@ -226,6 +226,15 @@
     @ApiModelProperty(value = "鍒嗘暟绫诲瀷锛堟暟瀛楋紝瀛楁瘝锛岀瓑绾э級")
     private String scoreType;
 
+    @ApiModelProperty(value = "寮�鍦虹櫧")
+    private String prologue;
+
+    @ApiModelProperty(value = "鎸囧璇�")
+    private String instruction;
+
+    @ApiModelProperty(value = "缁撴潫璇�")
+    private String conclusion;
+
 
     public SvyLibTemplate() {
     }
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScript.java b/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScript.java
index e2fe218..9b96991 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScript.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScript.java
@@ -9,6 +9,7 @@
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -37,7 +38,6 @@
     private Long svyid;
 
 
-
     /**
      * 棰樼洰绫诲瀷;鏋氫妇 1.鍗曢�� 2澶氶�� 3濉┖ 4鍏跺畠
      */
@@ -51,6 +51,13 @@
     @Excel(name = " 棰樼洰Code ")
     @ApiModelProperty("棰樼洰Code")
     private String scriptno;
+
+    /**
+     * 閫変腑鎻愮ず
+     */
+    @Excel(name = " 閫変腑鎻愮ず ")
+    @ApiModelProperty("閫変腑鎻愮ず")
+    private String prompt;
 
     /**
      * 涓嬩竴涓棶棰樼紪鍙�
@@ -225,7 +232,7 @@
      */
     @Excel(name = "棰樼洰鍒嗗�硷細鏁板瓧1,2绛夛紱瀛楁瘝A銆丅锛孋锛孌绛夛紱")
     @ApiModelProperty("棰樼洰鍒嗗�硷細鏁板瓧1,2绛夛紱瀛楁瘝A銆丅锛孋锛孌绛夛紱")
-    private String score;
+    private BigDecimal score;
 
     /**
      * 棰樼洰涓婚
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java
index 8fdb17d..c87c052 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java
@@ -7,6 +7,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -29,13 +30,19 @@
     private Long id;
 
 
-
     /**
      * 閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)
      */
     @Excel(name = "閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)")
     @ApiModelProperty(value = "閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)")
     private String branchFlag;
+
+    /**
+     * 閫変腑鎻愮ず
+     */
+    @Excel(name = " 閫変腑鎻愮ず ")
+    @ApiModelProperty("閫変腑鎻愮ず")
+    private String prompt;
 
     /**
      * 閫夐」鍒嗘敮鐨勪笅涓�涓瘽鏈紪鍙�
@@ -238,7 +245,7 @@
      */
     @Excel(name = "棰樼洰鍒嗗�硷細鏁板瓧1,2绛夛紱瀛楁瘝A銆丅锛孋锛孌绛夛紱")
     @ApiModelProperty("棰樼洰鍒嗗�硷細鏁板瓧1,2绛夛紱瀛楁瘝A銆丅锛孋锛孌绛夛紱")
-    private String score;
+    private BigDecimal score;
 
     /**
      * 棰樼洰涓婚
@@ -247,5 +254,12 @@
     @ApiModelProperty("棰樼洰涓婚")
     private String scriptTopic;
 
+    /**
+     * 棰樼洰涓婚
+     */
+    @Excel(name = "棰樼洰缁撴灉")
+    @ApiModelProperty("棰樼洰缁撴灉")
+    private String scriptResult;
+
 
 }
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTemplateTargetoption.java b/smartor/src/main/java/com/smartor/domain/SvyLibTemplateTargetoption.java
index 2d3c71f..21f5c52 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibTemplateTargetoption.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTemplateTargetoption.java
@@ -1,5 +1,6 @@
 package com.smartor.domain;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -37,17 +38,18 @@
     private Long targetid;
 
     /**
+     * 鍒嗘暟
+     */
+    @Excel(name = "鍒嗘暟")
+    @ApiModelProperty(value = "鍒嗘暟")
+    private BigDecimal score;
+
+    /**
      * 鎸囨爣鍚嶇О
      */
     @Excel(name = "鎸囨爣鍚嶇О")
     @ApiModelProperty(value = "鎸囨爣鍚嶇О")
     private String targetname;
-    /**
-     * 鎸囨爣鍚嶇О
-     */
-    @Excel(name = "鍒嗘暟")
-    @ApiModelProperty(value = "鍒嗘暟")
-    private String score;
 
     /**
      * 妯℃澘ID
@@ -261,4 +263,7 @@
     @ApiModelProperty(value = "闄勪欢淇℃伅")
     private String appenddesc;
 
+    @ApiModelProperty(value = "閫変腑鎻愮ず")
+    private String prompt;
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTemplateVO.java b/smartor/src/main/java/com/smartor/domain/SvyLibTemplateVO.java
index 432e949..cc6954e 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibTemplateVO.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTemplateVO.java
@@ -232,6 +232,16 @@
     @ApiModelProperty(value = "鍒嗘暟绫诲瀷锛堟暟瀛楋紝瀛楁瘝锛岀瓑绾э級")
     private String scoreType;
 
+    @ApiModelProperty(value = "寮�鍦虹櫧")
+    private String prologue;
+
+    @ApiModelProperty(value = "鎸囧璇�")
+    private String instruction;
+
+    @ApiModelProperty(value = "缁撴潫璇�")
+    private String conclusion;
+
+
 
     public SvyLibTemplateVO() {
     }
diff --git a/smartor/src/main/java/com/smartor/domain/SvyTaskSingleVO.java b/smartor/src/main/java/com/smartor/domain/SvyTaskSingleVO.java
index 5562574..d7ed398 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyTaskSingleVO.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyTaskSingleVO.java
@@ -3,6 +3,7 @@
 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;
 
@@ -15,6 +16,7 @@
  * @date 2024-06-12
  */
 @Data
+@ApiModel(value = "SvyTaskSingleVO", description = "鍗曚竴浠诲姟锛堥棶鍗凤級瀵硅薄(宸茬粡鎹㈡垚ServiceSubTask)")
 public class SvyTaskSingleVO extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
diff --git a/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScript.java b/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScript.java
index 3eddcde..d6ea8e0 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScript.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScript.java
@@ -1,5 +1,6 @@
 package com.smartor.domain;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -24,6 +25,13 @@
      * 涓婚敭ID
      */
     private Long id;
+
+    /**
+     * 閫変腑鎻愮ず
+     */
+    @Excel(name = " 閫変腑鎻愮ず ")
+    @ApiModelProperty("閫変腑鎻愮ず")
+    private String prompt;
 
     /**
      * 浠诲姟id
@@ -62,6 +70,13 @@
     private String language;
 
     /**
+     * 鍒嗘暟
+     */
+    @Excel(name = "鍒嗘暟")
+    @ApiModelProperty(value = "鍒嗘暟")
+    private BigDecimal score;
+
+    /**
      * 绫诲埆鍚�
      */
     @ApiModelProperty(value = "绫诲埆鍚�")
diff --git a/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java
index deda792..0dfc9a9 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java
@@ -8,6 +8,7 @@
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -44,7 +45,7 @@
      * 妯℃澘璇濇湳缂栧彿
      */
     @ApiModelProperty(value = "妯℃澘璇濇湳缂栧彿")
-    private Long scriptno;
+    private String scriptno;
 
     /**
      * 妯℃澘ID
@@ -69,6 +70,13 @@
      */
     @ApiModelProperty(value = "璇█")
     private String language;
+
+    /**
+     * 鏄惁鍙敤 0鍙敤  1涓嶅彲鐢�
+     */
+    @Excel(name = "鏄惁鍙敤 0鍙敤  1涓嶅彲鐢�")
+    @ApiModelProperty("鏄惁鍙敤 0鍙敤  1涓嶅彲鐢�")
+    private String isavailable;
 
     /**
      * 绫诲埆鍚�
@@ -131,7 +139,21 @@
      * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級
      */
     @ApiModelProperty(value = "鍊肩被鍨�1=閫夐」,2=鏂囨湰,3=鏁板��")
-    private Long valueType;
+    private String valueType;
+
+    /**
+     * 鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�
+     */
+    @Excel(name = "鍥炲", readConverterExp = "鎸�=闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑")
+    @ApiModelProperty("鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛�")
+    private String reply;
+
+    /**
+     * 鍒嗗�肩被鍨嬶細1锛氭暟瀛楋紝2锛氱瓑绾�
+     */
+    @Excel(name = "鍒嗗�肩被鍨嬶細1锛氭暟瀛楋紝2锛氱瓑绾�")
+    @ApiModelProperty("鍒嗗�肩被鍨嬶細1锛氭暟瀛楋紝2锛氱瓑绾�")
+    private String scoretype;
 
     /**
      * 鎸囨爣閫夐」*
@@ -161,7 +183,7 @@
      * 涓嬩竴璇濇湳缂栧彿
      */
     @ApiModelProperty(value = "涓嬩竴璇濇湳缂栧彿")
-    private Long nextScriptno;
+    private String nextScriptno;
 
     /**
      * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級*
@@ -217,6 +239,79 @@
     private Long xh;
 
     /**
+     * 鍒嗘暟
+     */
+    @Excel(name = "鍒嗘暟")
+    @ApiModelProperty(value = "鍒嗘暟")
+    private BigDecimal score = BigDecimal.ZERO;
+
+    /**
+     * 閫変腑鎻愮ず
+     */
+    @Excel(name = " 閫変腑鎻愮ず ")
+    @ApiModelProperty("閫変腑鎻愮ず")
+    private String prompt;
+
+    /**
+     * 棰樼洰鏍囩
+     */
+    @Excel(name = "棰樼洰鏍囩")
+    @ApiModelProperty("棰樼洰鏍囩")
+    private String tag;
+
+    /**
+     * 鏄惁闅愯棌
+     */
+    @Excel(name = " 鏄惁闅愯棌 ")
+    @ApiModelProperty("鏄惁闅愯棌")
+    private Long ishide;
+
+    /**
+     * 閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3
+     */
+    @Excel(name = "閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    @ApiModelProperty("閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3")
+    private String suitway;
+
+
+    /**
+     * 棰樼洰鍥剧墖
+     */
+    @Excel(name = "棰樼洰鍥剧墖")
+    @ApiModelProperty("棰樼洰鍥剧墖")
+    private String scriptPicture;
+
+    /**
+     * 棰樼洰鍐呭
+     */
+    @Excel(name = "棰樼洰鍐呭")
+    @ApiModelProperty("棰樼洰鎻忚堪")
+    private String scriptDesc;
+
+    /**
+     * 鍒嗙被id
+     */
+    @Excel(name = "鍒嗙被id")
+    @ApiModelProperty("鍒嗙被id")
+    private Long categoryid;
+
+    /**
+     * 鏄惁蹇呭~   0蹇呭~   1涓嶅繀濉�
+     */
+    @Excel(name = " 鏄惁蹇呭~   0蹇呭~   1涓嶅繀濉�")
+    @ApiModelProperty("鏄惁蹇呭~   0蹇呭~   1涓嶅繀濉�")
+    private String ismandatory;
+
+
+    /**
+     * 鎺掑簭
+     */
+    @Excel(name = " 鎺掑簭 ")
+    @ApiModelProperty("鎺掑簭")
+    private Long sort;
+
+
+    /**
      * 璇濇湳閫夐」
      */
     @ApiModelProperty(value = "璇濇湳閫夐」")
diff --git a/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateTargetoption.java b/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateTargetoption.java
index dbb79a3..5439ba9 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateTargetoption.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateTargetoption.java
@@ -1,5 +1,7 @@
 package com.smartor.domain;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -50,6 +52,12 @@
      */
     @ApiModelProperty(value = "鎸囨爣鍚嶇О")
     private String targetname;
+
+    /**
+     * 閫変腑鎻愮ず
+     */
+    @ApiModelProperty(value = "閫変腑鎻愮ず")
+    private String prompt;
 
     /**
      * 妯℃澘鎸囨爣绫诲瀷
@@ -169,13 +177,15 @@
      * 姝e垯鍏抽敭瀛�(鍚�)
      */
     @ApiModelProperty(value = "姝e垯鍏抽敭瀛�(鍚�)闆嗗悎")
-    private List<String> nodynamiccruxs;
+    private List<String> nodynamiccruxs = new ArrayList<>();
+    ;
 
     /**
      * 姝e垯鍏抽敭瀛�(涓嶅惈)
      */
     @ApiModelProperty(value = "姝e垯鍏抽敭瀛�(涓嶅惈)闆嗗悎")
-    private List<String> dynamiccruxs;
+    private List<String> dynamiccruxs = new ArrayList<>();
+    ;
     /**
      * 姝e垯鍏抽敭瀛�(鍚�)
      */
@@ -192,7 +202,7 @@
      * 涓嬩竴棰�
      */
     @ApiModelProperty(value = "涓嬩竴棰�")
-    private Long nextQuestion;
+    private Integer nextQuestion;
 
     /**
      * 閫夐」鍥剧墖璺緞
@@ -226,6 +236,12 @@
     private String optionCode;
 
     /**
+     * 鍒嗘暟
+     */
+    @ApiModelProperty(value = "鍒嗘暟")
+    private BigDecimal score;
+
+    /**
      * 鏄惁鏄敤鎴烽�夋嫨鐨勯�夐」
      */
     @ApiModelProperty(value = "鏄惁鏄敤鎴烽�夋嫨鐨勯�夐」")
diff --git a/smartor/src/main/java/com/smartor/domain/ThiedInhospCheckInfo.java b/smartor/src/main/java/com/smartor/domain/ThiedInhospCheckInfo.java
new file mode 100644
index 0000000..9de1a2f
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/ThiedInhospCheckInfo.java
@@ -0,0 +1,71 @@
+package com.smartor.domain;
+
+
+import com.ruoyi.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 绗笁鏂瑰巶鍟嗕綇闄㈡鏌ヤ俊鎭�
+ *
+ * @author ruoyi
+ * @date 2024-9-02
+ */
+@Data
+@ApiModel("绗笁鏂瑰巶鍟嗗嚭銆佸叆闄俊鎭�")
+public class ThiedInhospCheckInfo {
+
+    private String hospitalId;//	闄㈠尯ID
+    private String patIndex;//	鐥呬汉涓荤储寮�
+    private String patId;//	灏辫瘖ID
+    private String reqCard;//	鐢宠鍗曞彿
+    private String patNo;//	灏辫瘖鍙�
+    private String patType;//	鐥呬汉绫诲瀷
+    private String patName;//	鐥呬汉濮撳悕
+    private String patSex;//	鎬у埆
+    private String patBirth;//	鍑虹敓鏃ユ湡
+    private String patAge;//	鐥呬汉骞撮緞
+    private String patAgeUnit;//	鐥呬汉骞撮緞鍗曚綅
+    private String chargeType;//	鏀惰垂绫诲瀷浠g爜
+    private String patDiag;//	涓村簥璇婃柇
+    private String patDiagIcd;//	璇婃柇ICD10浠g爜
+    private String patAddress;//	鐥呬汉鑱旂郴鍦板潃
+    private String patNation;//	鐥呬汉鍥界睄
+    private String patIdCardNo;//	鐥呬汉韬唤璇佸彿
+    private String patPhone;//	鐥呬汉鑱旂郴鐢佃瘽
+    private String patHeight;//	鐥呬汉韬珮
+    private String patWeight;//	鐥呬汉浣撻噸
+    private String patWardId;//	鐥呬汉鐥呭尯
+    private String patBedNo;//	搴婂彿
+    private String reqDeptId;//	寮�鍗曠瀹D
+    private String reqDeptName;//	寮�鍗曠瀹ゅ悕绉�
+    private String reqDocId;//	鐢宠鍖荤敓ID
+    private String reqDocName;//	鐢宠鍖荤敓濮撳悕
+    private String reqDocComm;//	鍖荤敓澶囨敞
+    private String staffNum;//	鐢宠鍖荤敓宸ュ彿
+    private String reqTime;//	鐢宠鏃堕棿
+    private String printUser;//	鎵撳嵃鑰�
+    private String printTime;//	鎵撳嵃鏃堕棿
+    private String sampleUser;//	閲囨牱鑰�
+    private String sampleTime;//	閲囨牱鏃堕棿
+    private String sendUsder;//	浜ゆ帴鎶ゅ+
+    private String sendTime;//	绉讳氦缁欐姢澹椂闂�
+    private String emerFlag;//	鍔犳�ユ爣蹇�
+    private String sampleTypeId;//	鏍锋湰绫诲瀷ID
+    private String sampleType;//	鏍囨湰绫诲瀷鍚嶇О
+    private String performDeptID;//	鎵ц绉戝ID
+    private String performDeptName;//	鎵ц绉戝鍚嶇О
+    private String requestId;//	鐢宠鍗曞敮涓�ID
+    private String reqItemCode;//	鐢宠椤圭洰浠g爜
+    private String reqItemName;//	鐢宠椤圭洰鍚嶇О
+    private String itemPrice;//	鐢宠椤圭洰鍗曚环
+    private String qty;//	鐢宠椤圭洰鏁伴噺
+    private String chargeFlag;//	璁′环鏍囧織
+    private String detailId;//	鐢宠鏄庣粏鍞竴ID
+    private String itemTypeCode;//	璇婄枟椤圭洰鍒嗙被
+    private String itemClassCode;//	璇婄枟椤圭洰澶х被
+    private String orderId;//	鐥呬汉鍖诲槺ID
+
+}
+
diff --git a/smartor/src/main/java/com/smartor/domain/ThiedInhospInfo.java b/smartor/src/main/java/com/smartor/domain/ThiedInhospInfo.java
new file mode 100644
index 0000000..72b6765
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/ThiedInhospInfo.java
@@ -0,0 +1,446 @@
+package com.smartor.domain;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.ruoyi.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 绗笁鏂瑰巶鍟嗗嚭銆佸叆闄俊鎭�
+ *
+ * @author ruoyi
+ * @date 2024-9-02
+ */
+@Data
+@ApiModel("绗笁鏂瑰巶鍟嗗嚭銆佸叆闄俊鎭�")
+public class ThiedInhospInfo {
+
+    /**
+     * 鏁版嵁绫诲瀷
+     */
+    @ApiModelProperty("鐥呬汉涓荤储寮�")
+    @Excel(name = "鐥呬汉涓荤储寮�")
+    private String patiIndex;
+
+    /**
+     * 鎮h�呭鍚�
+     */
+    @ApiModelProperty("鎮h�呭鍚�")
+    @Excel(name = "鎮h�呭鍚�")
+    private String patiRecordName;
+
+    private String patiRecordId;
+
+
+    private List Education;
+
+    /**
+     * 鎮h�呭鍚�
+     */
+    @ApiModelProperty("鎮h�呭鍚�")
+    @Excel(name = "鎮h�呭鍚�")
+    private String currDeptCode;
+
+    private String admissDeptCode;
+
+    /**
+     * 鐥呬汉浠嬭川搴忓彿
+     */
+    @ApiModelProperty("鐥呬汉浠嬭川搴忓彿")
+    @Excel(name = "鐥呬汉浠嬭川搴忓彿")
+    private String patiMediaId1;
+
+    /**
+     * 鐥呬汉浠嬭川鍙风爜
+     */
+    @ApiModelProperty("灏辫瘖鍗″彿")
+    @Excel(name = "灏辫瘖鍗″彿")
+    private String patiMediaNo;
+
+    /**
+     * 鐥呬汉浣忛櫌搴忓彿
+     */
+    @ApiModelProperty("鐥呬汉浣忛櫌搴忓彿")
+    @Excel(name = "鐥呬汉浣忛櫌搴忓彿")
+    private String inpatientId1;
+
+    /**
+     * 鎬у埆
+     */
+    @ApiModelProperty("鎬у埆")
+    @Excel(name = "鎬у埆")
+    private String patiRecordGender;
+
+    /**
+     * 骞撮緞
+     */
+    @ApiModelProperty("骞撮緞")
+    @Excel(name = "骞撮緞")
+    private String age;
+
+    /**
+     * 韬唤璇佸彿
+     */
+    @ApiModelProperty("韬唤璇佸彿")
+    @Excel(name = "韬唤璇佸彿")
+    private String patiIdCardNo;
+
+    /**
+     * 鍏ラ櫌鍗曞彿
+     */
+    @ApiModelProperty("鍏ラ櫌鍗曞彿")
+    @Excel(name = "鍏ラ櫌鍗曞彿")
+    private String admitFormId;
+
+    /**
+     * 寤鸿棰勪氦閲戦
+     */
+    @ApiModelProperty("寤鸿棰勪氦閲戦")
+    @Excel(name = "寤鸿棰勪氦閲戦")
+    private String suggestAmount;
+
+    /**
+     * 灏辫瘖鍗″彿
+     */
+    @ApiModelProperty("灏辫瘖鍗″彿")
+    @Excel(name = "灏辫瘖鍗″彿")
+    private String patiMediaId;
+
+    /**
+     * 鐥呬汉绫诲埆搴忓彿
+     */
+    @ApiModelProperty("鐥呬汉绫诲埆搴忓彿")
+    @Excel(name = "鐥呬汉绫诲埆搴忓彿")
+    private String patiTypeId1;
+
+    /**
+     * 鐥呬汉绫诲埆鍚嶇О
+     */
+    @ApiModelProperty("鐥呬汉绫诲埆鍚嶇О")
+    @Excel(name = "鐥呬汉绫诲埆鍚嶇О")
+    private String patiTypeName1;
+
+    /**
+     * 鍖讳繚绫诲瀷
+     */
+    @ApiModelProperty("鍖讳繚绫诲瀷")
+    @Excel(name = "鍖讳繚绫诲瀷")
+    private String patiTypeId;
+
+    /**
+     * 鏁版嵁绫诲瀷
+     */
+    @ApiModelProperty("鍖讳繚绫诲瀷鍚嶇О")
+    @Excel(name = "鍖讳繚绫诲瀷鍚嶇О")
+    private String patiTypeName;
+
+    /**
+     * 浣忛櫌鐘舵��
+     * 1-灏氭湭鍏ョ锛�2-宸茬粡鍏ョ锛�3-宸查鍑洪櫌锛�4-宸插嚭闄紱
+     */
+    @ApiModelProperty("浣忛櫌鐘舵��")
+    @Excel(name = "浣忛櫌鐘舵��")
+    private String currStatus;
+
+    /**
+     * 鏁版嵁绫诲瀷
+     */
+    @ApiModelProperty("闄㈠尯ID")
+    @Excel(name = "闄㈠尯ID")
+    private String areaId;
+
+    /**
+     * 鍏ラ櫌鐥呭尯ID
+     */
+    @ApiModelProperty("鍏ラ櫌鐥呭尯ID")
+    @Excel(name = "鍏ラ櫌鐥呭尯ID")
+    private String admissWardId;
+
+    /**
+     * 鍏ラ櫌鐥呭尯鍚嶇О
+     */
+    @ApiModelProperty("鍏ラ櫌鐥呭尯鍚嶇О")
+    @Excel(name = "鍏ラ櫌鐥呭尯鍚嶇О")
+    private String admissWardName;
+
+    private String admissWardCode;
+
+    /**
+     * 鍏ラ櫌绉戝ID
+     */
+    @ApiModelProperty("鍏ラ櫌绉戝ID")
+    @Excel(name = "鍏ラ櫌绉戝ID")
+    private String admissDeptId;
+
+    /**
+     * 鍏ラ櫌绉戝鍚嶇О
+     */
+    @ApiModelProperty("鍏ラ櫌绉戝鍚嶇О")
+    @Excel(name = "鍏ラ櫌绉戝鍚嶇О")
+    private String admissDeptName;
+
+    /**
+     * 鍏ラ櫌搴婁綅Id
+     */
+    @ApiModelProperty("鍏ラ櫌搴婁綅Id")
+    @Excel(name = "鍏ラ櫌搴婁綅Id")
+    private String admissBedId;
+
+    /**
+     * 鍏ラ櫌搴婁綅搴忓彿
+     */
+    @ApiModelProperty("鍏ラ櫌搴婁綅搴忓彿")
+    @Excel(name = "鍏ラ櫌搴婁綅搴忓彿")
+    private String admissBedNo;
+
+    /**
+     * 褰撳墠鐥呭尯ID
+     */
+    @ApiModelProperty("褰撳墠鐥呭尯ID")
+    @Excel(name = "褰撳墠鐥呭尯ID")
+    private String currWardId;
+
+    /**
+     * 褰撳墠鐥呭尯ID
+     */
+    @ApiModelProperty("褰撳墠鐥呭尯ID")
+    @Excel(name = "褰撳墠鐥呭尯ID")
+    private String currWardCode;
+
+    /**
+     * 褰撳墠鐥呭尯鍚嶇О
+     */
+    @ApiModelProperty("褰撳墠鐥呭尯鍚嶇О")
+    @Excel(name = "褰撳墠鐥呭尯鍚嶇О")
+    private String currWardName;
+
+    /**
+     * 褰撳墠绉戝ID
+     */
+    @ApiModelProperty("褰撳墠绉戝ID")
+    @Excel(name = "褰撳墠绉戝ID")
+    private String currDeptId;
+
+    /**
+     * 褰撳墠绉戝鍚嶇О
+     */
+    @ApiModelProperty("褰撳墠绉戝鍚嶇О")
+    @Excel(name = "褰撳墠绉戝鍚嶇О")
+    private String currDeptName;
+
+    /**
+     * 褰撳墠搴婁綅搴忓彿
+     */
+    @ApiModelProperty("褰撳墠搴婁綅搴忓彿")
+    @Excel(name = "褰撳墠搴婁綅搴忓彿")
+    private String currBedNo1;
+
+    /**
+     * 褰撳墠搴婁綅ID
+     */
+    @ApiModelProperty("褰撳墠搴婁綅ID")
+    @Excel(name = "褰撳墠搴婁綅ID")
+    private String currBedId;
+
+    /**
+     * 浣忛櫌鍙�
+     */
+    @ApiModelProperty("浣忛櫌鍙�")
+    @Excel(name = "浣忛櫌鍙�")
+    private String inpatientId;
+
+    /**
+     * 搴婂彿
+     */
+    @ApiModelProperty("搴婂彿")
+    @Excel(name = "搴婂彿")
+    private String currBedNo;
+
+    /**
+     * 鍏ラ櫌鏃堕棿
+     */
+    @ApiModelProperty("鍏ラ櫌鏃堕棿")
+    @Excel(name = "鍏ラ櫌鏃堕棿")
+    private String admissDate;
+
+    /**
+     * 寮�鍗曞尰鐢�
+     */
+    @ApiModelProperty("寮�鍗曞尰鐢�")
+    @Excel(name = "寮�鍗曞尰鐢�")
+    private String DocName;
+
+    /**
+     * 涓绘不鍖诲笀
+     */
+    @ApiModelProperty("涓绘不鍖诲笀")
+    @Excel(name = "涓绘不鍖诲笀")
+    private String doctName;
+    /**
+     * 涓绘不鍖诲笀
+     */
+    @ApiModelProperty("涓绘不鍖诲笀")
+    @Excel(name = "涓绘不鍖诲笀")
+    private String doctId;
+
+    /**
+     * 璇婃柇ID
+     */
+    @ApiModelProperty("璇婃柇ID")
+    @Excel(name = "璇婃柇ID")
+    private String diagId;
+
+    /**
+     * 璇婃柇ICD10鐮�
+     */
+    @ApiModelProperty("璇婃柇ICD10鐮�")
+    @Excel(name = "璇婃柇ICD10鐮�")
+    private String diagIcd10;
+
+
+    /**
+     * 璇婃柇鍚嶇О
+     */
+    @ApiModelProperty("璇婃柇鍚嶇О")
+    @Excel(name = "璇婃柇鍚嶇О")
+    private String diagName;
+    /**
+     * 鑱旂郴浜�
+     */
+    @ApiModelProperty("鑱旂郴鍦板潃")
+    @Excel(name = "鑱旂郴鍦板潃")
+    private String contactPersonAddr;
+    /**
+     * 鑱旂郴浜�
+     */
+    @ApiModelProperty("鑱旂郴浜�")
+    @Excel(name = "鑱旂郴浜�")
+    private String contactPersonName;
+
+    /**
+     * 鑱旂郴浜虹數璇�
+     */
+    @ApiModelProperty("鑱旂郴浜虹數璇�")
+    @Excel(name = "鑱旂郴浜虹數璇�")
+    private String contactPersonPhone;
+
+    /**
+     * 鏁版嵁绫诲瀷
+     */
+    @ApiModelProperty("鍥界睄")
+    @Excel(name = "鍥界睄")
+    private String PatiNationality;
+
+    private String NationalityAddr;
+
+    private String patiNatureId;
+
+    private String treateAge;
+    private String treatAgeunit;
+    private String patiNatureName;
+
+
+    /**
+     * 鏁版嵁绫诲瀷
+     */
+    @ApiModelProperty("鍥界睄")
+    @Excel(name = "鍥界睄")
+    private String patNatureId;
+    private String PatNation;
+
+
+    /**
+     * 姘戞棌
+     */
+    @ApiModelProperty("姘戞棌")
+    @Excel(name = "姘戞棌")
+    private String patiNation;
+    /**
+     * 鏁版嵁绫诲瀷
+     */
+    @ApiModelProperty("鑱屼笟")
+    @Excel(name = "鑱屼笟")
+    private String ProfessionId;
+
+    /**
+     * 濠氬Щ鐘舵��
+     */
+    @ApiModelProperty("濠氬Щ鐘舵��")
+    @Excel(name = "濠氬Щ鐘舵��")
+    private String PatiMaritalStatus;
+
+    /**
+     * 鐜颁綇鍦板潃
+     */
+    @JsonIgnoreProperties(ignoreUnknown = true)
+    @ApiModelProperty("鐜颁綇鍦板潃")
+    @Excel(name = "鐜颁綇鍦板潃")
+    private String patiHomeAddr;
+
+    private String patiHomePhone;
+
+    /**
+     * 鑱旂郴鐢佃瘽
+     */
+    @ApiModelProperty("鑱旂郴鐢佃瘽")
+    @Excel(name = "鑱旂郴鐢佃瘽")
+    private String companyTelNum;
+    /**
+     * 鏁版嵁绫诲瀷
+     */
+    @ApiModelProperty("鍑虹敓鏃ユ湡")
+    @Excel(name = "鍑虹敓鏃ユ湡")
+    private String patiBirthday;
+
+    /**
+     * 浣忛櫌娆℃暟
+     */
+    @ApiModelProperty("浣忛櫌娆℃暟")
+    @Excel(name = "浣忛櫌娆℃暟")
+    private String inhospitalTimes;
+
+    /**
+     * 鍑洪櫌鏂瑰紡搴忓彿
+     */
+    @ApiModelProperty("鍑洪櫌鏂瑰紡搴忓彿")
+    @Excel(name = "鍑洪櫌鏂瑰紡搴忓彿")
+    private String outWayId;
+
+    /**
+     * 鍑洪櫌鏂瑰紡鍚嶇О
+     */
+    @ApiModelProperty("鍑洪櫌鏂瑰紡鍚嶇О")
+    @Excel(name = "鍑洪櫌鏂瑰紡鍚嶇О")
+    private String outWayName;
+
+    /**
+     * 浣忛櫌鎬昏垂鐢�
+     */
+    @ApiModelProperty("浣忛櫌鎬昏垂鐢�")
+    @Excel(name = "浣忛櫌鎬昏垂鐢�")
+    private String totalAmount;
+
+    /**
+     * 棰勫鍑洪櫌鏃ユ湡
+     */
+    @ApiModelProperty("棰勫鍑洪櫌鏃ユ湡")
+    @Excel(name = "棰勫鍑洪櫌鏃ユ湡")
+    private String preoutDate;
+
+    /**
+     * 鐥呬汉鍑洪櫌鏃ユ湡
+     */
+    @ApiModelProperty("鐥呬汉鍑洪櫌鏃ユ湡")
+    @Excel(name = "鐥呬汉鍑洪櫌鏃ユ湡")
+    private String outDate;
+    private String RelationShip;
+
+
+}
+
diff --git a/smartor/src/main/java/com/smartor/domain/ThiedOutHospCheckInfo.java b/smartor/src/main/java/com/smartor/domain/ThiedOutHospCheckInfo.java
new file mode 100644
index 0000000..0c61d7e
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/ThiedOutHospCheckInfo.java
@@ -0,0 +1,74 @@
+package com.smartor.domain;
+
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 绗笁鏂瑰巶鍟嗛棬璇婃鏌ヤ俊鎭�
+ *
+ * @author ruoyi
+ * @date 2024-9-02
+ */
+@Data
+@ApiModel("绗笁鏂瑰巶鍟嗛棬璇婁俊鎭�")
+public class ThiedOutHospCheckInfo {
+
+    private String hospitalId;//	闄㈠尯ID
+    private String patIndex;//	鐥呬汉涓荤储寮�
+    private String patId;//	浣忛櫌ID
+    private String patNo;//	浣忛櫌鍙�
+    private String reqCard;//	鐢宠鍗曞彿
+    private String patType;//	鐥呬汉绫诲瀷
+    private String patName;//	鐥呬汉濮撳悕
+    private String patSex;//	鎬у埆
+    private String patBirth;//	鍑虹敓鏃ユ湡
+    private String patAge;//	鐥呬汉骞撮緞
+    private String patAgeUnit;//	鐥呬汉骞撮緞鍗曚綅
+    private String chargeType;//	鏀惰垂绫诲瀷浠g爜
+    private String patDiag;//	涓村簥璇婃柇
+    private String patDiagIcd;//	璇婃柇ICD10浠g爜
+    private String patAddress;//	鐥呬汉鑱旂郴鍦板潃
+    private String patNation;//	鐥呬汉鍥界睄
+    private String patIdCardNo;//	鐥呬汉韬唤璇佸彿
+    private String patPhone;//	鐥呬汉鑱旂郴鐢佃瘽
+    private String patHeight;//	鐥呬汉韬珮
+    private String patWeight;//	鐥呬汉浣撻噸
+    private String patWardId;//鐥呬汉鐥呭尯ID
+    private String patWardName;//	鐥呬汉鐥呭尯鍚嶇О
+    private String patDeptId;//	鐥呬汉绉戝ID
+    private String patDeptName;//鐥呬汉绉戝鍚嶇О
+    private String patBedNo;//	搴婂彿
+    private String reqDeptId;//	寮�鍗曠瀹D
+    private String reqDeptName;//;//	寮�鍗曠瀹ゅ悕绉�
+    private String reqDocId;//	鐢宠鍖荤敓ID
+    private String reqDocName;//	鐢宠鍖荤敓濮撳悕
+    private String reqDocComm;//	鍖荤敓澶囨敞
+    private String staffNum;//	鐢宠鍖荤敓宸ュ彿
+    private String reqTime;//	鐢宠鏃堕棿
+    private String printUser;//	鎵撳嵃鑰�
+    private String printTime;//	鎵撳嵃鏃堕棿
+    private String sampleUser;//	閲囨牱鑰�
+    private String sampleTime;//	閲囨牱鏃堕棿
+    private String sendUsder;//	浜ゆ帴鎶ゅ+
+    private String sendTime;//	绉讳氦缁欐姢澹椂闂�
+    private String emerFlag;//	鍔犳�ユ爣蹇�
+    private String sampleTypeId;//	鏍囨湰绫诲瀷ID
+    private String sampleType;//	鏍囨湰绫诲瀷鍚嶇О
+    private String performDeptID;//	鎵ц绉戝ID
+    private String performDeptName;//	鎵ц绉戝鍚嶇О
+    private String requestId;//	鐢宠鍗曞敮涓�ID
+    private String reqItemCode;//	鐢宠椤圭洰浠g爜
+    private String reqItemName;//	鐢宠椤圭洰鍚嶇О
+    private String itemPrice;//	鐢宠椤圭洰鍗曚环
+    private String qty;//	鐢宠椤圭洰鏁伴噺
+    private String chargeFlag;//	璁′环鏍囧織
+    private String detailId;//	鐢宠鏄庣粏鍞竴ID
+    private String itemTypeCode;//	璇婄枟椤圭洰鍒嗙被
+    private String itemClassCode;//	璇婄枟椤圭洰澶х被
+    private String orderId;//	鐥呬汉鍖诲槺ID
+    private String admissTimes;//	浣忛櫌娆℃暟
+    private String entryTime;//	鍏ラ櫌鏃堕棿
+
+}
+
diff --git a/smartor/src/main/java/com/smartor/domain/ThiedOutHospInfo.java b/smartor/src/main/java/com/smartor/domain/ThiedOutHospInfo.java
new file mode 100644
index 0000000..abf69a2
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/ThiedOutHospInfo.java
@@ -0,0 +1,121 @@
+package com.smartor.domain;
+
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 绗笁鏂瑰巶鍟嗛棬璇婁俊鎭�
+ *
+ * @author ruoyi
+ * @date 2024-9-02
+ */
+@Data
+@ApiModel("绗笁鏂瑰巶鍟嗛棬璇婁俊鎭�")
+public class ThiedOutHospInfo {
+
+    private String del;      //鍒犻櫎鏍囧織
+    private String creator;         //	鍒涘缓鑰�
+    private String createTime;      //鍒涘缓鏃堕棿
+    private String updater;     //	鏇存柊鑰�
+    private String updateTime;//鏇存柊鏃堕棿
+    private String treatID; //	鐥呬汉灏辫瘖搴忓彿
+    private String orgCode;//缁勭粐鏈烘瀯浠g爜
+    private String orgName;//缁勭粐鏈烘瀯鍚嶇О
+    private String treatDate;//	鐥呬汉灏辫瘖鏃ユ湡
+    private String departmentID;//	灏辫瘖绉戝浠g爜
+    private String hisDepartmentID;//	灏辫瘖绉戝浠g爜
+    private String departmentName;//	灏辫瘖绉戝鍚嶇О
+    private String doctorID;//	灏辫瘖鍖荤敓搴忓彿
+    private String doctorNum;//灏辫瘖鍖荤敓宸ュ彿
+    private String hisDoctorID;//灏辫瘖鍖荤敓搴忓彿
+    private String doctorName;//	灏辫瘖鍖荤敓鍚嶇О
+    private String patiRecordID;//鐥呬汉妗f搴忓彿
+    private String patiMediaID;//	鐥呬汉浠嬭川搴忓彿
+    private String patiMediaNum;//	鐥呬汉浠嬭川鍙风爜
+    private String patiTypeID;//	鐥呬汉绫诲埆搴忓彿
+    private String patiTypeName;//	鐥呬汉绫诲埆鍚嶇О
+    private String patiNatureID;//	鐥呬汉鎬ц川搴忓彿
+    private String patiNatureName;//	鐥呬汉鎬ц川鍚嶇О
+    private String patiName;//	鐥呬汉妗f濮撳悕
+    private String patiIndex;//	鐥呬汉涓荤储寮�
+    private String patiAge;//	灏辫瘖鐥呬汉骞撮緞
+    private String patiAgeUnit;//	鐥呬汉骞撮緞鍗曚綅
+    private String patiBirthday;//	鐥呬汉鍑虹敓鏃ユ湡
+    private String patiAddr;//	鐥呬汉浣忓潃
+    private String patiPhone;//	鐥呬汉鑱旂郴鐢佃瘽
+    private String patiSex;//	鐥呬汉妗f鎬у埆
+    private String patiIDCardno;//	鐥呬汉韬唤璇佸彿
+    private String patiSourceID;//鐥呬汉鏉ユ簮id
+    private String patiSource;//鐥呬汉鏉ユ簮
+    private String patiCompany;//	鐥呬汉鍗曚綅
+    private String specialPati;//	鐗规畩鐥呬汉绫诲瀷
+    private String treatStatus;//	鐥呬汉灏辫瘖鐘舵��
+    private String treatTimes;//	鐥呬汉灏辫瘖娆℃暟
+    private String visitFlag;//	鍒濊瘖澶嶈瘖鍒ゅ埆
+    private String regID;//	鎸傚彿璁板綍搴忓彿
+    private String goType;//	鐥呬汉灏辫瘖鍘诲悜
+    private String attackDate;//	鐥呬汉鍙戠梾鏃ユ湡
+    private String treatBeginDate;//灏辫瘖寮�濮嬫椂闂�
+    private String treatEndDate;//	灏辫瘖缁撴潫鏃堕棿
+    private String relateTreatID;//	瀵瑰簲灏辫瘖搴忓彿
+    private String treatChangeID;//	灏辫瘖鍙樺姩搴忓彿
+    private String infectious;//	浼犳煋鐥呯鍒ゅ埆
+    private String settleID;//缁撶畻绫诲埆搴忓彿
+    private String settleName;//	缁撶畻绫诲埆鍚嶇О
+    private String specialRemark;//	鐗规畩鐥呯
+    private String cycleID;//璇婄枟鍛ㄦ湡缂栫爜
+    private String transferID;//	杞瘖璁板綍搴忓彿
+    private String depositID;//	鐥呬汉浜ゆ搴忓彿
+    private String systemID;//绯荤粺妯″潡搴忓彿
+    private String operateType;//鎺ヨ瘖鎿嶄綔绫诲埆
+    private String emergency;//鏄惁鎬ヨ瘖鍒ゅ埆
+    private String emergencyRegisterID;//	鎬ヨ瘖鐧昏搴忓彿
+    private String doctorGroupID;//	鍖荤敓缁勫彿搴忓彿
+    private String doctorGroupName;//鍖荤敓缁勫彿鍚嶇О
+    private String interTreatID;//鎺ュ彛灏辫瘖搴忓彿
+    private String summaryTimes;//灏辫瘖灏忕粨娆℃暟
+    private String transportation;//浜ら�氬伐鍏�
+    private String evaluation;//璇勪及鍊�
+    private String diagIcd10;//璇婃柇ICD10
+    private String diagName;//璇婃柇鍚嶇О
+    private String nationCode;//姘戞棌缂栫爜
+    private String nation;//姘戞棌
+    private String citizenshipCode;//鍥界睄缂栫爜
+    private String citizenship;//鍥界睄
+    private String livingAddressCode;//	鐜颁綇鍧�缂栫爜
+    private String livingAddress;//	鐜颁綇鍧�
+    private String occupationCode;//浜虹兢鍒嗙被浠g爜
+    private String occupation;//	浜虹兢鍒嗙被
+    private String idcardTypeCode;//	璇佷欢绫诲瀷缂栫爜
+    private String idcardType;//	璇佷欢绫诲瀷
+    private String domicileCode;//	鎴风睄绫诲瀷缂栫爜
+    private String domicile;//	鎴风睄绫诲瀷
+    private String domicileAddressCode;//	鎴风睄缂栫爜
+    private String domicileAddress;//	鎴风睄
+    private String domicileAdrressDetails;//	鎴风睄璇︾粏鍦板潃
+    private String contacts;//	鑱旂郴浜�
+    private String contactsTel;//	鑱旂郴浜虹數璇�
+    private String mrCompletion;//	鐥呭巻瀹屾垚搴﹀瓧娈�
+    private String mrPrintFlag;//	鐥呭巻鎵撳嵃鏍囧織
+    private String syncFlag;//	灏辫瘖璁板綍鍚屾鏍囧織
+    private String patiHeight;//	韬珮
+    private String patiHeightUnit;//	韬珮鍗曚綅
+    private String patiWeight;//	浣撻噸
+    private String patiWeightUnit;//	浣撻噸鍗曚綅
+    private String zs;//	涓昏瘔
+    private String xbs;//	鐜扮梾鍙�
+    private String jws;//	鏃㈠線鍙�
+    private String breathe;//	鍛煎惛
+    private String breatheUnit;//	鍛煎惛鍗曚綅
+    private String ssy;//	鏀剁缉鍘�
+    private String ssyUnit;//	鏀剁缉鍘嬪崟浣�
+    private String szy;//	鑸掑紶鍘�
+    private String szyUnit;//	鑸掑紶鍘嬪崟浣�
+    private String temperature;//	浣撴俯
+    private String temperatureUnit;//	浣撴俯鍗曚綅
+    private String fzjc;//	杈呭姪妫�鏌�
+    private String tgjc;//	浣撴牸妫�鏌�
+
+}
+
diff --git a/smartor/src/main/java/com/smartor/domain/XinHuaWXReq.java b/smartor/src/main/java/com/smartor/domain/XinHuaWXReq.java
new file mode 100644
index 0000000..4269e8c
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/XinHuaWXReq.java
@@ -0,0 +1,64 @@
+package com.smartor.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鏂板崕鍖婚櫌鍏紬鍙峰叆鍙�
+ *
+ * @author lihu
+ * @date 2024-08-31
+ */
+@ApiModel(value = "XinHuaWXReq", description = "鏂板崕鍖婚櫌鍏紬鍙峰叆鍙�")
+@Data
+public class XinHuaWXReq {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鎺ュ彛鏈嶅姟鍚嶏紝鍥哄畾鍊�
+     */
+    @ApiModelProperty(value = "鎺ュ彛鏈嶅姟鍚嶏紝鍥哄畾鍊�")
+    private String service = "smarthos.yygh.ApiService.push";
+
+    /**
+     * 璇佷欢鍙�
+     */
+    @Excel(name = "  璇佷欢鍙�")
+    @ApiModelProperty(value = "璇佷欢鍙�")
+    private String idcard;
+
+    /**
+     * 璇︽儏鍦板潃
+     */
+    @Excel(name = "璇︽儏鍦板潃")
+    @ApiModelProperty(value = "璇︽儏鍦板潃")
+    private String url;
+
+
+    /**
+     * 鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦��
+     */
+    @ApiModelProperty(value = "闅忚椤圭洰")
+    private String keyword1;
+
+    /**
+     * 鎻愰啋鏃堕棿
+     */
+    @ApiModelProperty(value = "鎻愰啋鏃堕棿")
+    private String keyword2;
+
+    /**
+     * 鎻愰啋鍐呭
+     */
+    @ApiModelProperty(value = "鎻愰啋鍐呭")
+    private String keyword3;
+
+    /**
+     * 娉ㄦ剰浜嬮」
+     */
+    @ApiModelProperty(value = "娉ㄦ剰浜嬮」")
+    private String keyword4;
+
+}
diff --git a/smartor/src/main/java/com/smartor/mapper/PatArchiveMapper.java b/smartor/src/main/java/com/smartor/mapper/PatArchiveMapper.java
index f36b275..d7cf1ab 100644
--- a/smartor/src/main/java/com/smartor/mapper/PatArchiveMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/PatArchiveMapper.java
@@ -41,6 +41,8 @@
      */
     public int insertPatArchive(List<PatArchive> patArchives);
 
+    public int insertPatArchiveSingle(PatArchive patArchive);
+
     /**
      * 淇敼鎮h�呮。妗�
      *
@@ -64,7 +66,6 @@
      * @return 缁撴灉
      */
     public int deletePatArchiveByPatids(Long[] patids);
-
 
 
     public List<PatArchive> selectPatArchiveInfoByAllhosp(PatArchiveReq patArchive);
diff --git a/smartor/src/main/java/com/smartor/mapper/PatMedInhospMapper.java b/smartor/src/main/java/com/smartor/mapper/PatMedInhospMapper.java
index bb937b6..3179610 100644
--- a/smartor/src/main/java/com/smartor/mapper/PatMedInhospMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/PatMedInhospMapper.java
@@ -3,6 +3,8 @@
 import java.util.List;
 
 import com.smartor.domain.PatMedInhosp;
+import com.smartor.domain.PatMedReq;
+import com.smartor.domain.PatMedRes;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -60,4 +62,15 @@
      * @return 缁撴灉
      */
     public int deletePatMedInhospByInhospids(Long[] inhospids);
+
+    /**
+     * 鍑洪櫌銆佸叆闄汉鏁�
+     *
+     * @param patMedReq
+     * @return
+     */
+    public PatMedRes selectPatMedInhospCount(PatMedReq patMedReq);
+
+
+    public List<PatMedRes> getDeptRanking(PatMedReq patMedReq);
 }
diff --git a/smartor/src/main/java/com/smartor/mapper/PatMedOuthospMapper.java b/smartor/src/main/java/com/smartor/mapper/PatMedOuthospMapper.java
index bb1a18c..c5e0a27 100644
--- a/smartor/src/main/java/com/smartor/mapper/PatMedOuthospMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/PatMedOuthospMapper.java
@@ -1,7 +1,10 @@
 package com.smartor.mapper;
 
 import java.util.List;
+
 import com.smartor.domain.PatMedOuthosp;
+import com.smartor.domain.PatMedReq;
+import com.smartor.domain.PatMedRes;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -11,8 +14,7 @@
  * @date 2023-03-04
  */
 @Mapper
-public interface PatMedOuthospMapper
-{
+public interface PatMedOuthospMapper {
     /**
      * 鏌ヨ鎮h�呴棬璇婅褰�
      *
@@ -60,4 +62,6 @@
      * @return 缁撴灉
      */
     public int deletePatMedOuthospByIds(Long[] ids);
+
+    PatMedRes selectPatMedOuthospCount(PatMedReq patMedReq);
 }
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
index 447ab4c..79555b3 100644
--- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -1,6 +1,9 @@
 package com.smartor.mapper;
 
 import com.smartor.domain.ServiceSubtask;
+import com.smartor.domain.ServiceSubtaskCount;
+import com.smartor.domain.ServiceSubtaskCountReq;
+import com.smartor.domain.ServiceSubtaskVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -25,10 +28,10 @@
     /**
      * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級鍒楄〃
      *
-     * @param serviceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級
+     * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級
      * @return 鍗曚竴浠诲姟锛堥殢璁匡級闆嗗悎
      */
-    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtask serviceSubtask);
+    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);
 
     /**
      * 鏂板鍗曚竴浠诲姟锛堥殢璁匡級
@@ -64,4 +67,6 @@
      */
     public List<ServiceSubtask> getDataByTime(@Param("beganTime") String beganTime, @Param("endTime") String endTime);
 
+    public List<ServiceSubtaskCount> getSfFzInfoEveryMonth(ServiceSubtaskCountReq serviceSubtaskCountReq);
+
 }
diff --git a/smartor/src/main/java/com/smartor/mapper/SysUserDeptMapper.java b/smartor/src/main/java/com/smartor/mapper/SysUserDeptMapper.java
new file mode 100644
index 0000000..39b5ec2
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/mapper/SysUserDeptMapper.java
@@ -0,0 +1,72 @@
+package com.smartor.mapper;
+
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUserDept;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 銆愯濉啓鍔熻兘鍚嶇О銆慚apper鎺ュ彛
+ *
+ * @author lihu
+ * @date 2024-08-29
+ */
+@Mapper
+public interface SysUserDeptMapper {
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆�
+     */
+    public SysUserDept selectSysUserDeptById(Long id);
+
+    /**
+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
+     *
+     * @param sysUserDept 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆戦泦鍚�
+     */
+    public List<SysUserDept> selectSysUserDeptList(SysUserDept sysUserDept);
+
+    /**
+     * 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param sysUserDept 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    public int insertSysUserDept(SysUserDept sysUserDept);
+
+    /**
+     * 淇敼銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param sysUserDept 銆愯濉啓鍔熻兘鍚嶇О銆�
+     * @return 缁撴灉
+     */
+    public int updateSysUserDept(SysUserDept sysUserDept);
+
+    /**
+     * 鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
+     * @return 缁撴灉
+     */
+    public int deleteSysUserDeptById(Long id);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛ID鏌ヨ閮ㄩ棬淇℃伅
+     *
+     * @param id
+     * @return
+     */
+    public List<SysDept> selectDeptListByUserId(Long id);
+
+    /**
+     * 鎵归噺鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    public int deleteSysUserDeptByIds(Long[] ids);
+}
diff --git a/smartor/src/main/java/com/smartor/service/IPatMedInhospService.java b/smartor/src/main/java/com/smartor/service/IPatMedInhospService.java
index f1dd58b..c63c734 100644
--- a/smartor/src/main/java/com/smartor/service/IPatMedInhospService.java
+++ b/smartor/src/main/java/com/smartor/service/IPatMedInhospService.java
@@ -1,8 +1,12 @@
 package com.smartor.service;
 
-import java.util.List;
-
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.smartor.domain.PatMedInhosp;
+import com.smartor.domain.PatMedReq;
+import com.smartor.domain.PatMedRes;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 鎮h�呬綇闄㈣褰昐ervice鎺ュ彛
@@ -26,6 +30,10 @@
      * @return 鎮h�呬綇闄㈣褰曢泦鍚�
      */
     public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp);
+
+    public PatMedInhosp getDeptCodeByPatId(PatMedInhosp patMedInhosp);
+
+    public PatMedRes selectPatMedInhospListCount(PatMedReq patMedReq);
 
     /**
      * 鏂板鎮h�呬綇闄㈣褰�
@@ -66,4 +74,12 @@
      * @return 缁撴灉
      */
     public int dealOupHospInfo();
+
+    /**
+     * 鑾峰彇鍑洪櫌锛屼綇闄紝闂ㄨ瘖鏈嶅姟浜烘
+     *
+     * @param patMedReq
+     * @return
+     */
+    public List<PatMedRes> getDeptRanking(PatMedReq patMedReq);
 }
diff --git a/smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java b/smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java
index 6de62f6..07518e4 100644
--- a/smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java
+++ b/smartor/src/main/java/com/smartor/service/IPatMedOuthospService.java
@@ -1,19 +1,23 @@
 package com.smartor.service;
 
 import java.util.List;
+
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.smartor.domain.PatMedOuthosp;
+import com.smartor.domain.PatMedReq;
+import com.smartor.domain.PatMedRes;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * 鎮h�呴棬璇婅褰昐ervice鎺ュ彛
- * 
+ *
  * @author smartor
  * @date 2023-03-04
  */
-public interface IPatMedOuthospService 
-{
+public interface IPatMedOuthospService {
     /**
      * 鏌ヨ鎮h�呴棬璇婅褰�
-     * 
+     *
      * @param id 鎮h�呴棬璇婅褰曚富閿�
      * @return 鎮h�呴棬璇婅褰�
      */
@@ -21,7 +25,7 @@
 
     /**
      * 鏌ヨ鎮h�呴棬璇婅褰曞垪琛�
-     * 
+     *
      * @param patMedOuthosp 鎮h�呴棬璇婅褰�
      * @return 鎮h�呴棬璇婅褰曢泦鍚�
      */
@@ -29,7 +33,7 @@
 
     /**
      * 鏂板鎮h�呴棬璇婅褰�
-     * 
+     *
      * @param patMedOuthosp 鎮h�呴棬璇婅褰�
      * @return 缁撴灉
      */
@@ -37,7 +41,7 @@
 
     /**
      * 淇敼鎮h�呴棬璇婅褰�
-     * 
+     *
      * @param patMedOuthosp 鎮h�呴棬璇婅褰�
      * @return 缁撴灉
      */
@@ -45,7 +49,7 @@
 
     /**
      * 鎵归噺鍒犻櫎鎮h�呴棬璇婅褰�
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑鎮h�呴棬璇婅褰曚富閿泦鍚�
      * @return 缁撴灉
      */
@@ -53,9 +57,14 @@
 
     /**
      * 鍒犻櫎鎮h�呴棬璇婅褰曚俊鎭�
-     * 
+     *
      * @param id 鎮h�呴棬璇婅褰曚富閿�
      * @return 缁撴灉
      */
     public int deletePatMedOuthospById(Long id);
+
+    public PatMedRes selectPatMedOuthospCount(@RequestBody PatMedReq patMedReq);
+
+    //閫氳繃鎮h�匢D鑾峰彇鍒版渶鏂扮殑deptcode
+    public PatMedOuthosp getDeptCodeByPatId(PatMedOuthosp patMedOuthosp);
 }
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java
index c38e9f0..68ee4ea 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java
@@ -5,6 +5,7 @@
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 浠诲姟闂嵎闂閫夐」Service鎺ュ彛
@@ -77,6 +78,8 @@
      */
     public Integer saveQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq);
 
-    public List<ServiceSubtaskDetailVO> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq);
+    public List<SvyLibTemplateScriptVO> getQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq);
+
+    public Map<String, Object> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq);
 
 }
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
index 6f76ae8..a432fc5 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -23,10 +23,10 @@
     /**
      * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級鍒楄〃
      *
-     * @param ServiceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級
+     * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級
      * @return 鍗曚竴浠诲姟锛堥殢璁匡級闆嗗悎
      */
-    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtask ServiceSubtask);
+    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);
 
     /**
      * 鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅
@@ -99,4 +99,12 @@
 
     public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq);
 
+    /**
+     * 鑾峰彇闅忚銆佸璇婇噺
+     *
+     * @param serviceSubtaskCountReq
+     * @return
+     */
+    public List<ServiceSubtaskCount> getSfFzInfoEveryMonth(ServiceSubtaskCountReq serviceSubtaskCountReq);
+
 }
diff --git a/smartor/src/main/java/com/smartor/service/IServiceTaskService.java b/smartor/src/main/java/com/smartor/service/IServiceTaskService.java
index b3cec3f..fb07d63 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceTaskService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceTaskService.java
@@ -1,6 +1,7 @@
 package com.smartor.service;
 
 import java.util.List;
+import java.util.Map;
 
 import com.smartor.domain.IvrLibaTemplateScriptVO;
 import com.smartor.domain.ServiceTask;
@@ -67,7 +68,7 @@
      * @param patid
      * @return
      */
-    public List getScriptInfoByCondition(Long taskid, Long patid);
+    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid);
 
 
 }
diff --git a/smartor/src/main/java/com/smartor/service/ISvyTaskSingleService.java b/smartor/src/main/java/com/smartor/service/ISvyTaskSingleService.java
index aed624b..b507e11 100644
--- a/smartor/src/main/java/com/smartor/service/ISvyTaskSingleService.java
+++ b/smartor/src/main/java/com/smartor/service/ISvyTaskSingleService.java
@@ -1,5 +1,7 @@
 package com.smartor.service;
 
+import com.smartor.domain.ServiceSubtask;
+import com.smartor.domain.ServiceTaskVO;
 import com.smartor.domain.SvyTaskSingle;
 import com.smartor.domain.SvyTaskVO;
 
@@ -12,58 +14,13 @@
  * @date 2024-06-12
  */
 public interface ISvyTaskSingleService {
-    /**
-     * 鏌ヨ鍗曚竴浠诲姟锛堥棶鍗凤級
-     *
-     * @param id 鍗曚竴浠诲姟锛堥棶鍗凤級涓婚敭
-     * @return 鍗曚竴浠诲姟锛堥棶鍗凤級
-     */
-    public SvyTaskSingle selectSvyTaskSingleById(Long id);
 
-    /**
-     * 鏌ヨ鍗曚竴浠诲姟锛堥棶鍗凤級鍒楄〃
-     *
-     * @param svyTaskSingle 鍗曚竴浠诲姟锛堥棶鍗凤級
-     * @return 鍗曚竴浠诲姟锛堥棶鍗凤級闆嗗悎
-     */
-    public List<SvyTaskSingle> selectSvyTaskSingleList(SvyTaskSingle svyTaskSingle);
 
-    /**
-     * 鏂板鍗曚竴浠诲姟锛堥棶鍗凤級
-     *
-     * @param svyTaskSingle 鍗曚竴浠诲姟锛堥棶鍗凤級
-     * @return 缁撴灉
-     */
-    public int insertSvyTaskSingle(SvyTaskSingle svyTaskSingle);
-
-    /**
-     * 淇敼鍗曚竴浠诲姟锛堥棶鍗凤級
-     *
-     * @param svyTaskSingle 鍗曚竴浠诲姟锛堥棶鍗凤級
-     * @return 缁撴灉
-     */
-    public int updateSvyTaskSingle(SvyTaskSingle svyTaskSingle);
-
-    /**
-     * 鎵归噺鍒犻櫎鍗曚竴浠诲姟锛堥棶鍗凤級
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鍗曚竴浠诲姟锛堥棶鍗凤級涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    public int deleteSvyTaskSingleByIds(Long[] ids);
-
-    /**
-     * 鍒犻櫎鍗曚竴浠诲姟锛堥棶鍗凤級淇℃伅
-     *
-     * @param id 鍗曚竴浠诲姟锛堥棶鍗凤級涓婚敭
-     * @return 缁撴灉
-     */
-    public int deleteSvyTaskSingleById(Long id);
 
     /**
      * 鏂板鎴栦慨鏀瑰垹闄ら棶鍗蜂换鍔�
      */
-    public int insertOrUpdateSvyTask(SvyTaskVO svyTaskVO);
+    public int insertOrUpdateSvyTask(ServiceTaskVO serviceTaskVO);
 
-    public SvyTaskVO queryTaskByCondition(SvyTaskSingle svyTaskSingle);
+    public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask);
 }
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 668da8d..f0d46aa 100644
--- a/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
@@ -185,6 +185,9 @@
                     try {
                         Date date = sdf.parse(begantime);
                         milliseconds = date.getTime() - System.currentTimeMillis();
+                        if (milliseconds < 0) {
+                            milliseconds = 1000L;
+                        }
                         System.out.println("鏃ユ湡姣鏁帮細" + milliseconds);
                     } catch (Exception e) {
                         e.printStackTrace();
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 201e911..eae0749 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
@@ -1,13 +1,5 @@
 package com.smartor.service.impl;
 
-import java.io.FileOutputStream;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.stream.Collectors;
-
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.exception.base.BaseException;
@@ -16,7 +8,9 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.smartor.domain.*;
 import com.smartor.mapper.BaseTagMapper;
+import com.smartor.mapper.PatArchiveMapper;
 import com.smartor.mapper.PatArchivetagMapper;
+import com.smartor.service.IPatArchiveService;
 import com.smartor.service.IPatMedInhospService;
 import com.smartor.service.IPatMedOuthospService;
 import com.smartor.service.IPatMedPhysicalService;
@@ -24,14 +18,23 @@
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.poi.hssf.usermodel.HSSFDateUtil;
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.DataFormatter;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.smartor.mapper.PatArchiveMapper;
-import com.smartor.service.IPatArchiveService;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.io.FileOutputStream;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.stream.Collectors;
 
 /**
  * 鎮h�呮。妗圫ervice涓氬姟灞傚鐞�
@@ -96,15 +99,8 @@
     @Override
     public Integer insertPatArchive(PatArchive patArchive) {
         patArchive.setCreateTime(DateUtils.getNowDate());
-        List<PatArchive> patArchives = new ArrayList<>();
-        patArchives.add(patArchive);
-        patArchiveMapper.insertPatArchive(patArchives);
-        if (CollectionUtils.isNotEmpty(patArchives)) {
-            patArchives.get(0).getId();
-            log.info("鎮h�卛d涓�: {}", patArchives.get(0).getId());
-            return patArchives.get(0).getId().intValue();
-        }
-        return null;
+        patArchiveMapper.insertPatArchiveSingle(patArchive);
+        return patArchive.getId().intValue();
     }
 
     @Override
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 926de0e..5257579 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatFilterlistServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatFilterlistServiceImpl.java
@@ -3,6 +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.mapper.PatFilterlistMapper;
 import com.smartor.mapper.ServiceSubtaskMapper;
 import com.smartor.service.IPatFilterlistService;
@@ -58,7 +59,7 @@
     @Override
     public int insertPatFilterlist(PatFilterlist patFilterlist) {
         //鍏堟煡璇竴涓嬶紝璇ユ偅鑰呮槸鍚︽湁鎵ц鐨勪换鍔★紝濡傛灉鏈夌殑璇濓紝灏嗕换鍔℃殏鍋�
-        ServiceSubtask serviceSubtask = new ServiceSubtask();
+        ServiceSubtaskVO serviceSubtask = new ServiceSubtaskVO();
         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 27a3555..f3aa58c 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
@@ -2,12 +2,12 @@
 
 import java.time.LocalDate;
 import java.time.ZoneOffset;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.smartor.domain.*;
 import com.smartor.mapper.*;
@@ -45,6 +45,8 @@
 
     @Autowired
     private ServiceSubtaskMapper serviceSubtaskMapper;
+    @Autowired
+    private SysUserDeptMapper sysUserDeptMapper;
 
     //璁板綍闀挎湡浠诲姟鍩虹淇℃伅
     List<IvrLibaTemplate> libaTemplates = new ArrayList<>();
@@ -71,6 +73,49 @@
     @Override
     public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp) {
         return patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
+    }
+
+
+    @Override
+    public PatMedInhosp getDeptCodeByPatId(PatMedInhosp patMedInhosp) {
+        List<PatMedInhosp> patMedInhosps = selectPatMedInhospList(patMedInhosp);
+        if (!org.springframework.util.CollectionUtils.isEmpty(patMedInhosps)) {
+
+            if (patMedInhosp.getInhospstate().equals("0")) {
+                //鍏堝幓鎺夋椂闂翠负绌虹殑
+                patMedInhosps.removeIf(PatMedInhosp -> PatMedInhosp.getStarttime() == null);
+                Collections.sort(patMedInhosps, Comparator.comparing(PatMedInhosp::getStarttime).reversed());
+            } else if (patMedInhosp.getInhospstate().equals("1")) {
+                //鍏堝幓鎺夋椂闂翠负绌虹殑
+                patMedInhosps.removeIf(PatMedInhosp -> PatMedInhosp.getEndtime() == null);
+                Collections.sort(patMedInhosps, Comparator.comparing(PatMedInhosp::getEndtime).reversed());
+            }
+        }
+        if (patMedInhosps != null && patMedInhosps.size() > 0) return patMedInhosps.get(0);
+        else return null;
+    }
+
+    /**
+     * 鏌ヨ鍑哄叆闄汉娆�
+     *
+     * @param patMedReq
+     * @return
+     */
+    @Override
+    public PatMedRes selectPatMedInhospListCount(PatMedReq patMedReq) {
+        PatMedRes patMedRes = null;
+        // 鑾峰彇褰撳墠鐧婚檰浜虹殑閮ㄩ棬鏉冮檺
+        if (org.springframework.util.CollectionUtils.isEmpty(patMedReq.getDeptcodeList())) {
+            Long userId = SecurityUtils.getUserId();
+            List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(userId);
+            List<String> deptCode = new ArrayList<>();
+            for (SysDept sysDept : sysDepts) {
+                deptCode.add(sysDept.getDeptId().toString());
+            }
+            patMedReq.setDeptcodeList(deptCode);
+            patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);
+        }
+        return patMedRes;
     }
 
     /**
@@ -202,4 +247,18 @@
         }
         return 1;
     }
+
+    /**
+     * 鑾峰彇鍑洪櫌锛屼綇闄紝闂ㄨ瘖鏈嶅姟浜烘
+     *
+     * @param patMedReq
+     * @return
+     */
+    @Override
+    public List<PatMedRes> getDeptRanking(PatMedReq patMedReq) {
+
+        return patMedInhospMapper.getDeptRanking(patMedReq);
+    }
+
+
 }
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 f0f82f9..537374f 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -1,12 +1,23 @@
 package com.smartor.service.impl;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
+
+import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.core.domain.entity.SysUserDept;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.smartor.domain.PatMedReq;
+import com.smartor.domain.PatMedRes;
+import com.smartor.mapper.SysUserDeptMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.smartor.mapper.PatMedOuthospMapper;
 import com.smartor.domain.PatMedOuthosp;
 import com.smartor.service.IPatMedOuthospService;
+import org.springframework.util.CollectionUtils;
 
 /**
  * 鎮h�呴棬璇婅褰昐ervice涓氬姟灞傚鐞�
@@ -15,10 +26,13 @@
  * @date 2023-03-04
  */
 @Service
-public class PatMedOuthospServiceImpl implements IPatMedOuthospService
-{
+public class PatMedOuthospServiceImpl implements IPatMedOuthospService {
     @Autowired
     private PatMedOuthospMapper patMedOuthospMapper;
+
+    @Autowired
+    private SysUserDeptMapper sysUserDeptMapper;
+
 
     /**
      * 鏌ヨ鎮h�呴棬璇婅褰�
@@ -27,8 +41,7 @@
      * @return 鎮h�呴棬璇婅褰�
      */
     @Override
-    public PatMedOuthosp selectPatMedOuthospById(Long id)
-    {
+    public PatMedOuthosp selectPatMedOuthospById(Long id) {
         return patMedOuthospMapper.selectPatMedOuthospById(id);
     }
 
@@ -39,8 +52,7 @@
      * @return 鎮h�呴棬璇婅褰�
      */
     @Override
-    public List<PatMedOuthosp> selectPatMedOuthospList(PatMedOuthosp patMedOuthosp)
-    {
+    public List<PatMedOuthosp> selectPatMedOuthospList(PatMedOuthosp patMedOuthosp) {
         return patMedOuthospMapper.selectPatMedOuthospList(patMedOuthosp);
     }
 
@@ -51,8 +63,7 @@
      * @return 缁撴灉
      */
     @Override
-    public int insertPatMedOuthosp(PatMedOuthosp patMedOuthosp)
-    {
+    public int insertPatMedOuthosp(PatMedOuthosp patMedOuthosp) {
         patMedOuthosp.setCreateTime(DateUtils.getNowDate());
         patMedOuthosp.setUpdateTime(DateUtils.getNowDate());
         return patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp);
@@ -65,8 +76,7 @@
      * @return 缁撴灉
      */
     @Override
-    public int updatePatMedOuthosp(PatMedOuthosp patMedOuthosp)
-    {
+    public int updatePatMedOuthosp(PatMedOuthosp patMedOuthosp) {
         patMedOuthosp.setUpdateTime(DateUtils.getNowDate());
         return patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp);
     }
@@ -78,8 +88,7 @@
      * @return 缁撴灉
      */
     @Override
-    public int deletePatMedOuthospByIds(Long[] ids)
-    {
+    public int deletePatMedOuthospByIds(Long[] ids) {
         return patMedOuthospMapper.deletePatMedOuthospByIds(ids);
     }
 
@@ -90,8 +99,31 @@
      * @return 缁撴灉
      */
     @Override
-    public int deletePatMedOuthospById(Long id)
-    {
+    public int deletePatMedOuthospById(Long id) {
         return patMedOuthospMapper.deletePatMedOuthospById(id);
     }
+
+    @Override
+    public PatMedRes selectPatMedOuthospCount(PatMedReq patMedReq) {
+        // 鑾峰彇褰撳墠鐧婚檰浜虹殑閮ㄩ棬鏉冮檺
+        if (CollectionUtils.isEmpty(patMedReq.getDeptcodeList())) {
+            Long userId = SecurityUtils.getUserId();
+            List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(userId);
+            List<String> deptCode = new ArrayList<>();
+            for (SysDept sysDept : sysDepts) {
+                deptCode.add(sysDept.getDeptId().toString());
+            }
+            patMedReq.setDeptcodeList(deptCode);
+        }
+        return patMedOuthospMapper.selectPatMedOuthospCount(patMedReq);
+    }
+
+    @Override
+    public PatMedOuthosp getDeptCodeByPatId(PatMedOuthosp patMedOuthosp) {
+        List<PatMedOuthosp> patMedOuthosps = selectPatMedOuthospList(patMedOuthosp);
+        if (!CollectionUtils.isEmpty(patMedOuthosps)) {
+            Collections.sort(patMedOuthosps, Comparator.comparing(PatMedOuthosp::getAdmitdate).reversed());
+        }
+        return patMedOuthosps.get(0);
+    }
 }
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 d090405..ef20484 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -9,8 +9,10 @@
 import com.smartor.domain.*;
 import com.smartor.mapper.ServiceSubtaskAnswerMapper;
 import com.smartor.mapper.ServiceSubtaskDetailMapper;
+import com.smartor.mapper.ServiceSubtaskMapper;
 import com.smartor.mapper.SvyTaskTemplateTargetoptionMapper;
 import com.smartor.service.IServiceSubtaskAnswerService;
+import com.smartor.service.IServiceTaskService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
@@ -18,7 +20,9 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 浠诲姟闂嵎闂閫夐」Service涓氬姟灞傚鐞�
@@ -33,10 +37,16 @@
     private ServiceSubtaskAnswerMapper serviceSubtaskAnswerMapper;
 
     @Autowired
+    private ServiceSubtaskMapper serviceSubtaskMapper;
+
+    @Autowired
     private RedisCache redisCache;
 
     @Autowired
     private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;
+
+    @Autowired
+    private IServiceTaskService serviceTaskService;
 
     @Autowired
     private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper;
@@ -114,12 +124,15 @@
 
     @Override
     public Integer saveQuestionAnswer(ServiceSubTaskAnswerReq serviceSubTaskAnswerReq) {
+        Long tid = null;
+        Long pid = null;
+        Double score = null;
         Set<String> allKeys = redisCache.getAllKeys();
         if (ObjectUtils.isNotEmpty(serviceSubTaskAnswerReq)) {
             //闇�瑕佺珛鍗虫墽琛�
             RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-            Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam1(), pri_key));
-            Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam2(), pri_key));
+            tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam1(), pri_key));
+            pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam2(), pri_key));
             allKeys = new HashSet<>();
             allKeys.add(pid + "-" + tid + "-WJscriptCache");
         }
@@ -128,26 +141,53 @@
         for (String key : allKeys) {
             String[] split = key.split("-");
             if (key.contains("-WJscriptCache")) {
-                List<SvyTaskTemplateScriptVO> cacheList = redisCache.getCacheList(key);
+                List<SvyLibTemplateScriptVO> cacheList = redisCache.getCacheList(key);
+
                 for (int i = 0; i < cacheList.size(); i++) {
                     if (i == 0) {
-                        // 璇存槑鏄涓�棰�
-                        //灏嗙涓�棰樼殑淇℃伅鏀惧埌琛ㄤ腑
-                        nextScriptno = setWJInfo(cacheList.get(0), Long.valueOf(split[1]), Long.valueOf(split[0]));
-                    } else {
-                        for (SvyTaskTemplateScriptVO svyTaskTemplateScriptVO : cacheList) {
-                            if (svyTaskTemplateScriptVO.getId() == nextScriptno) {
-                                //灏嗙涓�棰樼殑淇℃伅鏀惧埌琛ㄤ腑
-                                setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));
-                                nextScriptno = Long.valueOf(cacheList.get(0).getNextScriptno());
+                        //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
+                        for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : cacheList) {
+                            if (svyLibTemplateScriptVO.getSort() == 1) {
+                                //璇存槑鏄涓�棰�
+                                SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(0), SvyTaskTemplateScriptVO.class);
+                                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = cacheList.get(0).getSvyLibTemplateTargetoptions();
+                                List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyLibTemplateTargetoptions, SvyTaskTemplateTargetoption.class);
+                                svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
+                                Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid);
+                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
+                                if (score == null) {
+                                    score = Double.valueOf(map.get("score"));
+                                } else {
+                                    score = score + Double.valueOf(map.get("score"));
+                                }
                             }
+                        }
 
+                    } else {
+                        SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), SvyTaskTemplateScriptVO.class);
+                        List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getSvyLibTemplateTargetoptions(), SvyTaskTemplateTargetoption.class);
+                        svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
+
+                        if (svyTaskTemplateScriptVO.getSort() == nextScriptno) {
+                            Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));
+                            nextScriptno = Long.valueOf(map.get("nextScriptNo"));
+                            if (score == null) {
+                                score = Double.valueOf(map.get("score"));
+                            } else {
+                                score = score + Double.valueOf(map.get("score"));
+                            }
                         }
                     }
                 }
             }
             //灏嗚key鍜寁alue浠巖edis涓紝鍒犻櫎
             redisCache.deleteObject(key);
+            ServiceSubtask serviceSubtask = new ServiceSubtask();
+            serviceSubtask.setTaskid(tid);
+            serviceSubtask.setPatid(pid);
+            serviceSubtask.setFinishtime(new Date());
+            if (score != null) serviceSubtask.setScore(BigDecimal.valueOf(score));
+            serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
         }
         return 1;
     }
@@ -164,35 +204,80 @@
         Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam1(), pri_key));
         Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam2(), pri_key));
         //闂嵎
-        redisCache.setCacheObject(pid + "-" + tid + "-WJscriptCache", serviceSubTaskCacheReq.getSvyTaskTemplateScriptVOList());
+        redisCache.deleteObject(pid + "-" + tid + "-WJscriptCache");
+        redisCache.setCacheList(pid + "-" + tid + "-WJscriptCache", serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS());
+        //璁剧疆杩囨湡鏃堕棿 3澶�
+        Long tims = Long.valueOf(3 * 24 * 3600);
+        redisCache.expire(pid + "-" + tid + "-WJscriptCache", tims);
         return 1;
     }
 
     @Override
-    public List<ServiceSubtaskDetailVO> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq) {
-        log.error("selectPatQuesTionResult鐨勫叆鍙備负锛歿}", serviceSubTaskQueryReq);
-        List<ServiceSubtaskDetailVO> serviceSubtaskDetailVOList = new ArrayList<>();
-        ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
-        serviceSubtaskDetail.setTaskid(serviceSubTaskQueryReq.getTaskid());
-        serviceSubtaskDetail.setPatid(serviceSubTaskQueryReq.getPatId());
-        serviceSubtaskDetail.setScriptid(serviceSubTaskQueryReq.getScriptid());
-        List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);
-        for (ServiceSubtaskDetail serviceSubtaskDetail1 : serviceSubtaskDetails) {
-            ServiceSubtaskDetailVO serviceSubtaskDetailVO = DtoConversionUtils.sourceToTarget(serviceSubtaskDetail1, ServiceSubtaskDetailVO.class);
-            SvyTaskTemplateTargetoption svyTaskTemplateTargetoption = new SvyTaskTemplateTargetoption();
-            svyTaskTemplateTargetoption.setScriptid(serviceSubtaskDetailVO.getScriptid());
-            svyTaskTemplateTargetoption.setTaskid(serviceSubtaskDetailVO.getTaskid());
-            List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateTargetoptionMapper.selectSvyTaskTemplateTargetoptionList(svyTaskTemplateTargetoption);
-            serviceSubtaskDetailVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-            serviceSubtaskDetailVOList.add(serviceSubtaskDetailVO);
-        }
-        return serviceSubtaskDetailVOList;
+    public List<SvyLibTemplateScriptVO> getQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq) {
+        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+        Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam1(), pri_key));
+        Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam2(), pri_key));
+        //闂嵎
+        List<SvyLibTemplateScriptVO> svyTaskTemplateScriptVOList = redisCache.getCacheList(pid + "-" + tid + "-WJscriptCache");
+        return svyTaskTemplateScriptVOList;
     }
 
-    private Long setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid) {
-        //涓嬮璺宠浆
-        Long nextScriptNo = null;
+    @Override
+    public Map<String, Object> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq) {
+        log.error("selectPatQuesTionResult鐨勫叆鍙備负锛歿}", serviceSubTaskQueryReq);
+        Map<String, Object> map = new HashMap<>();
 
+        Map<String, Object> scriptInfoByCondition = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid());
+        if (scriptInfoByCondition.get("type").equals("1")) {
+            List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList = (List) scriptInfoByCondition.get("script");
+            for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOList) {
+                String scriptResult = getScriptResult(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), ivrLibaTemplateScriptVO.getId());
+                ivrLibaTemplateScriptVO.setScriptResult(scriptResult);
+            }
+            map.put("scriptResult", ivrLibaTemplateScriptVOList);
+            map.put("taskName", scriptInfoByCondition.get("taskName"));
+            return map;
+        } else if (scriptInfoByCondition.get("type").equals("2")) {
+            List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOList = (List) scriptInfoByCondition.get("script");
+            for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOList) {
+                String scriptResult = getScriptResult(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), svyLibTemplateScriptVO.getId());
+                svyLibTemplateScriptVO.setScriptResult(scriptResult);
+            }
+            map.put("scriptResult", scriptInfoByCondition);
+            map.put("taskName", scriptInfoByCondition.get("taskName"));
+            return map;
+        } else if (scriptInfoByCondition.get("type").equals("3")) {
+            //瀹f暀涓嶉渶瑕佹煡鐪�
+            List<HeLibrary> heLibraryList = (List) scriptInfoByCondition.get("script");
+            map.put("scriptResult", heLibraryList);
+            map.put("taskName", scriptInfoByCondition.get("taskName"));
+            return map;
+        }
+
+        return null;
+    }
+
+    private String getScriptResult(Long tid, Long pid, Long sid) {
+        ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
+        serviceSubtaskDetail.setTaskid(tid);
+        serviceSubtaskDetail.setPatid(pid);
+        serviceSubtaskDetail.setScriptid(sid);
+        List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);
+        if (CollectionUtils.isNotEmpty(serviceSubtaskDetails)) {
+            return serviceSubtaskDetails.get(0).getAsrtext();
+        }
+        return "";
+    }
+
+    private Map<String, String> setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid) {
+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        serviceSubtaskVO.setTaskid(taskid);
+        serviceSubtaskVO.setPatid(patid);
+        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+
+        String score = "0";
+        //涓嬮璺宠浆
+        String nextScriptNo = null;
         ServiceSubtaskDetailVO serviceSubtaskDetailVO = new ServiceSubtaskDetailVO();
         List<ServiceSubtaskOptionAnswer> answerList = new ArrayList<>();
         if (svyTaskTemplateScriptVO.getScriptType().equals("1") || svyTaskTemplateScriptVO.getScriptType().equals("2")) {
@@ -200,45 +285,66 @@
             for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption : svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions()) {
                 //灏嗛棶棰橀�夐」璁板綍涓嬫潵
                 if (StringUtils.isEmpty(serviceSubtaskDetailVO.getTargetvalue())) {
-                    serviceSubtaskDetailVO.setTargetvalue(svyTaskTemplateTargetoption.getTargetvalue());
+                    serviceSubtaskDetailVO.setTargetvalue(svyTaskTemplateTargetoption.getOptioncontent());
                 } else {
-                    serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + "  " + svyTaskTemplateTargetoption.getTargetvalue());
+                    serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + "  " + svyTaskTemplateTargetoption.getOptioncontent());
                 }
-
-                if (svyTaskTemplateTargetoption.getIsUserOperation() == true) {
-                    //灏嗛�変腑鐨勭粨鏋滄斁鍒癮srtext涓�
-                    if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {
-                        serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateTargetoption.getTargetvalue());
-                    } else {
-                        //濡傛灉鏄閫夛紝绛旀闇�瑕佺敤 & 杩涜鎷兼帴
-                        serviceSubtaskDetailVO.setAsrtext(serviceSubtaskDetailVO.getAnswerps() + "&" + svyTaskTemplateTargetoption.getTargetvalue());
-                    }
-                    if (svyTaskTemplateScriptVO.getScriptType().equals("1") && svyTaskTemplateScriptVO.getBranchFlag().equals("1")) {
-                        //鏄崟閫夛紝骞朵笖鏄湁鍒嗘敮鐨�
-                        nextScriptNo = svyTaskTemplateTargetoption.getNextQuestion();
-                    } else {
-                        nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno();
-                    }
-                }
+//                if (svyTaskTemplateTargetoption.getIsUserOperation() == true) {
+//                    //灏嗛�変腑鐨勭粨鏋滄斁鍒癮srtext涓�
+//                    if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {
+//                        //鍜屽墠绔晢閲忥紝鍓嶇浼氬皢閫変腑鐨勭粨鏋滄洿鏂板埌闂涓�
+////                        serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateTargetoption.getTargetvalue());
+//                        serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());
+//                    } else {
+//                        //濡傛灉鏄閫夛紝绛旀闇�瑕佺敤 & 杩涜鎷兼帴(//鍜屽墠绔晢閲忥紝鍓嶇浼氬皢閫変腑鐨勭粨鏋滄洿鏂板埌闂涓�)
+////                        serviceSubtaskDetailVO.setAsrtext(serviceSubtaskDetailVO.getAnswerps() + "&" + svyTaskTemplateTargetoption.getTargetvalue());
+//                        serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());
+//                    }
+//                    if (svyTaskTemplateScriptVO.getScriptType().equals("1") && svyTaskTemplateScriptVO.getBranchFlag().equals("1")) {
+//                        //鏄崟閫夛紝骞朵笖鏄湁鍒嗘敮鐨�(鍜屽墠绔晢閲忥紝鍦ㄥ閾剧粨鏋滀繚瀛樻椂锛屼細灏嗛�変腑鐨勯�夐」涓婄殑璺宠浆鏇存柊鍒伴鐩笂)
+////                        nextScriptNo = svyTaskTemplateTargetoption.getNextQuestion().toString();
+//                        nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
+//                        score = svyTaskTemplateTargetoption.getScore().toString();
+//                    } else {
+//                        nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
+//                        score = svyTaskTemplateScriptVO.getScore().toString();
+//                    }
+//                }
             }
-            serviceSubtaskDetailVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions());
+            nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
+            if (svyTaskTemplateScriptVO.getScore() != null) {
+                score = String.valueOf(svyTaskTemplateScriptVO.getScore());
+            }
+            serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());
+//            if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {
+//                nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
+//            }
+//            serviceSubtaskDetailVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions());
         } else {
             //闈炲崟澶氶��
-            if (CollectionUtils.isNotEmpty(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions())) {
+            if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptResult())) {
                 serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());
-                nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno();
+                nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
+                if (svyTaskTemplateScriptVO.getScore() != null) {
+                    score = String.valueOf(svyTaskTemplateScriptVO.getScore());
+                }
             }
         }
+        serviceSubtaskDetailVO.setQuestiontext(svyTaskTemplateScriptVO.getScriptContent());
         serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid));
         serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));
         serviceSubtaskDetailVO.setScriptid(svyTaskTemplateScriptVO.getId());
         serviceSubtaskDetailVO.setValueType(svyTaskTemplateScriptVO.getScriptType());
-        serviceSubtaskDetailVO.setAsrtext(JSON.toJSONString(answerList));
         serviceSubtaskDetailVO.setComment(null);
         serviceSubtaskDetailVO.setCreateTime(new Date());
         serviceSubtaskDetailVO.setUpdateTime(new Date());
+        serviceSubtaskDetailVO.setSubId(selectServiceSubtaskList.get(0).getId());
         ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class);
         serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
-        return nextScriptNo;
+
+        Map<String, String> map = new HashMap<>();
+        map.put("nextScriptNo", nextScriptNo);
+        map.put("score", score);
+        return map;
     }
 }
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 861dcbb..774987e 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
@@ -40,6 +40,9 @@
     private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;
 
     @Autowired
+    private SvyTaskTemplateMapper svyTaskTemplateMapper;
+
+    @Autowired
     private PatArchiveMapper patArchiveMapper;
 
     @Autowired
@@ -136,7 +139,7 @@
     }
 
     @Override
-    public List getScriptInfoByCondition(Long taskid, Long patid) {
+    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid) {
         //閫氳繃浠诲姟ID鑾峰彇妯℃澘ID
         ServiceTask serviceTask = selectServiceTaskByTaskid(taskid);
         List info = new ArrayList();
@@ -148,7 +151,7 @@
             info = wjInfo(serviceTask, patid);
         } else {
             //瀹f暀
-            info = xjInfo(serviceTask.getTemplateid());
+            info = xjInfo(Long.valueOf(serviceTask.getLibtemplateid()));
         }
 
         //鍙鎵撳紑浜嗛〉闈紝灏辩畻鎴愬姛
@@ -158,8 +161,14 @@
         ServiceTaskSingle.setResult("success");
         ServiceTaskSingle.setFinishtime(new Date());
         serviceSubtaskMapper.updateServiceSubtaskByCondition(ServiceTaskSingle);
+        SvyTaskTemplate svyTaskTemplate = svyTaskTemplateMapper.selectSvyTaskTemplateBySvyid(serviceTask.getTemplateid());
+        Map<String, Object> map = new HashMap<>();
+        map.put("script", info);
+        map.put("revisitAfter", svyTaskTemplate.getConclusion());
+        map.put("type", serviceTask.getType());
+        map.put("taskName",serviceTask.getTaskName());
 
-        return info;
+        return map;
     }
 
     /**
@@ -232,7 +241,7 @@
     private List wjInfo(ServiceTask serviceTask, Long patid) {
         //閫氳繃妯℃澘ID鑾峰彇闂淇℃伅
         SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
-        svyLibTemplateScript.setId(Long.valueOf(serviceTask.getTemplateid()));
+        svyLibTemplateScript.setSvyid(Long.valueOf(serviceTask.getLibtemplateid()));
         svyLibTemplateScript.setDelFlag("0");
         List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
         if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) {
diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateServiceImpl.java
index ad115ec..e0f6288 100644
--- a/smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/SvyLibTemplateServiceImpl.java
@@ -56,7 +56,23 @@
         svyLibTemplateReq.setSvyid(svyLibTemplate.getSvyid());
         svyLibTemplateReq.setCategoryid(svyLibTemplate.getCategoryid());
         svyLibTemplateReq.setDescription(svyLibTemplate.getDescription());
-        return svyLibTemplateMapper.selectSvyLibTemplateList(svyLibTemplateReq);
+        List<SvyLibTemplate> svyLibTemplates = svyLibTemplateMapper.selectSvyLibTemplateList(svyLibTemplateReq);
+        for (SvyLibTemplate svyLibTemplate1 : svyLibTemplates) {
+            SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
+            svyLibTemplateScript.setSvyid(svyLibTemplate1.getSvyid());
+            List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
+            for (SvyLibTemplateScript svyLibTemplateScript1 : svyLibTemplateScripts) {
+                if (svyLibTemplateScript1.getScriptType().equals("1") || svyLibTemplateScript1.getScriptType().equals("2")) {
+                    SvyLibTemplateTargetoption svyLibTemplateTargetoption=new SvyLibTemplateTargetoption();
+                    svyLibTemplateTargetoption.setScriptid(svyLibTemplateScript1.getId());
+                    List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
+                    svyLibTemplateScript1.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
+                }
+            }
+            svyLibTemplate1.setSvyTemplateLibScripts(svyLibTemplateScripts);
+        }
+
+        return svyLibTemplates;
     }
 
     /**
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 e36678f..41bb49b 100644
--- a/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
@@ -8,7 +8,9 @@
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.smartor.domain.*;
+import com.smartor.mapper.ServiceSubtaskMapper;
 import com.smartor.mapper.SvyTaskSingleMapper;
+import com.smartor.service.IServiceTaskService;
 import com.smartor.service.ISvyTaskService;
 import com.smartor.service.ISvyTaskSingleService;
 import lombok.extern.slf4j.Slf4j;
@@ -31,147 +33,82 @@
 @Slf4j
 @Service
 public class SvyTaskSingleServiceImpl implements ISvyTaskSingleService {
-    @Autowired
-    private SvyTaskSingleMapper svyTaskSingleMapper;
+
 
     @Autowired
-    private ISvyTaskService svyTaskService;
+    private ServiceSubtaskMapper serviceSubtaskMapper;
 
-    /**
-     * 鏌ヨ鍗曚竴浠诲姟锛堥棶鍗凤級
-     *
-     * @param id 鍗曚竴浠诲姟锛堥棶鍗凤級涓婚敭
-     * @return 鍗曚竴浠诲姟锛堥棶鍗凤級
-     */
-    @Override
-    public SvyTaskSingle selectSvyTaskSingleById(Long id) {
-        return svyTaskSingleMapper.selectSvyTaskSingleById(id);
-    }
+    @Autowired
+    private IServiceTaskService iServiceTaskService;
 
-    /**
-     * 鏌ヨ鍗曚竴浠诲姟锛堥棶鍗凤級鍒楄〃
-     *
-     * @param svyTaskSingle 鍗曚竴浠诲姟锛堥棶鍗凤級
-     * @return 鍗曚竴浠诲姟锛堥棶鍗凤級
-     */
-    @Override
-    public List<SvyTaskSingle> selectSvyTaskSingleList(SvyTaskSingle svyTaskSingle) {
-        return svyTaskSingleMapper.selectSvyTaskSingleList(svyTaskSingle);
-    }
-
-    /**
-     * 鏂板鍗曚竴浠诲姟锛堥棶鍗凤級
-     *
-     * @param svyTaskSingle 鍗曚竴浠诲姟锛堥棶鍗凤級
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertSvyTaskSingle(SvyTaskSingle svyTaskSingle) {
-        svyTaskSingle.setCreateTime(DateUtils.getNowDate());
-        return svyTaskSingleMapper.insertSvyTaskSingle(svyTaskSingle);
-    }
-
-    /**
-     * 淇敼鍗曚竴浠诲姟锛堥棶鍗凤級
-     *
-     * @param svyTaskSingle 鍗曚竴浠诲姟锛堥棶鍗凤級
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateSvyTaskSingle(SvyTaskSingle svyTaskSingle) {
-        svyTaskSingle.setUpdateTime(DateUtils.getNowDate());
-        return svyTaskSingleMapper.updateSvyTaskSingle(svyTaskSingle);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎鍗曚竴浠诲姟锛堥棶鍗凤級
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鍗曚竴浠诲姟锛堥棶鍗凤級涓婚敭
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteSvyTaskSingleByIds(Long[] ids) {
-        return svyTaskSingleMapper.deleteSvyTaskSingleByIds(ids);
-    }
-
-    /**
-     * 鍒犻櫎鍗曚竴浠诲姟锛堥棶鍗凤級淇℃伅
-     *
-     * @param id 鍗曚竴浠诲姟锛堥棶鍗凤級涓婚敭
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteSvyTaskSingleById(Long id) {
-        return svyTaskSingleMapper.deleteSvyTaskSingleById(id);
-    }
 
     @Override
-    public int insertOrUpdateSvyTask(SvyTaskVO svyTaskVO) {
-        if (ObjectUtils.isEmpty(svyTaskVO)) {
+    public int insertOrUpdateSvyTask(ServiceTaskVO serviceTaskVO) {
+        if (ObjectUtils.isEmpty(serviceTaskVO)) {
             log.info("闂嵎浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
             throw new BaseException("闂嵎浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
         }
         Integer integer = 1;
-        SvyTask svyTask = DtoConversionUtils.sourceToTarget(svyTaskVO, SvyTask.class);
-        svyTask.setTextParam(JSON.toJSONString(svyTaskVO.getTextParamMap()));
-        if (svyTaskVO.getIsoperation() != null && svyTaskVO.getIsoperation() == 1) {
+        ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);
+        serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));
+        if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {
             //寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔�
-            if (ObjectUtils.isNotEmpty(svyTaskVO.getSendTimeSlot()))
-                svyTask.setSendTimeSlot(JSON.toJSONString(svyTaskVO.getSendTimeSlot()));
-            if (svyTask.getSendState() == null) svyTask.setSendState("1");
-            svyTask.setTemplateid(svyTaskVO.getLibtemplateid());
-            svyTaskService.insertSvyTask(svyTask);
+            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))
+                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
+            if (serviceTask.getSendState() == null) serviceTask.setSendState(1);
+            serviceTask.setTemplateid(serviceTaskVO.getLibtemplateid());
+            iServiceTaskService.insertServiceTask(serviceTask);
 
             //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓�
-            SvyTaskSingle svyTaskSingle = DtoConversionUtils.sourceToTarget(svyTaskVO, SvyTaskSingle.class);
-            svyTaskSingle.setTaskid(svyTask.getTaskid());
+            ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
+            serviceSubtask.setTaskid(serviceTask.getTaskid());
             //鏂板
-            if (CollectionUtils.isNotEmpty(svyTaskVO.getPatTaskRelevances())) {
-                for (PatTaskRelevance patTaskRelevance : svyTaskVO.getPatTaskRelevances()) {
+            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
+                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
                     //灏嗕换鍔′俊鎭柊澧炲埌闅忚鏈嶅姟琛ㄤ腑
-                    svyTaskSingle.setSendname(patTaskRelevance.getName());
-                    svyTaskSingle.setAge(patTaskRelevance.getAge());
-                    svyTaskSingle.setSfzh(patTaskRelevance.getSfzh());
-                    svyTaskSingle.setPhone(patTaskRelevance.getPhone());
-                    svyTaskSingle.setAddr(patTaskRelevance.getAddr());
-                    svyTaskSingle.setPatid(patTaskRelevance.getPatid());
-                    svyTaskSingle.setSendstate(1L);
-                    svyTaskSingle.setHospType(patTaskRelevance.getHospType());
-                    svyTaskSingle.setCreateTime(DateUtils.getNowDate());
-                    svyTaskSingleMapper.insertSvyTaskSingle(svyTaskSingle);
-                    integer = svyTaskSingle.getId().intValue();
+                    serviceSubtask.setSendname(patTaskRelevance.getName());
+                    serviceSubtask.setAge(patTaskRelevance.getAge());
+                    serviceSubtask.setSfzh(patTaskRelevance.getSfzh());
+                    serviceSubtask.setPhone(patTaskRelevance.getPhone());
+                    serviceSubtask.setAddr(patTaskRelevance.getAddr());
+                    serviceSubtask.setPatid(patTaskRelevance.getPatid());
+                    serviceSubtask.setSendstate(1L);
+                    serviceSubtask.setHospType(patTaskRelevance.getHospType());
+                    serviceSubtask.setCreateTime(DateUtils.getNowDate());
+                    serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+                    integer = serviceSubtask.getId().intValue();
                 }
             }
 
-        } else if (svyTaskVO.getIsoperation() != null && svyTaskVO.getIsoperation() == 2) {
+        } else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {
             //浠诲姟淇敼
-            if (ObjectUtils.isNotEmpty(svyTaskVO.getSendTimeSlot()))
-                svyTask.setSendTimeSlot(JSON.toJSONString(svyTaskVO.getSendTimeSlot()));
+            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))
+                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
             //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1
-            SvyTask svyTask1 = svyTaskService.selectSvyTaskByTaskid(svyTaskVO.getTaskid());
-            svyTask.setStopState(svyTask1.getStopState() + 1);
-            svyTask.setTemplateid(svyTaskVO.getLibtemplateid());
-            svyTaskService.updateSvyTask(svyTask);
+            ServiceTask serviceTask2 = iServiceTaskService.selectServiceTaskByTaskid(serviceTaskVO.getTaskid());
+            serviceTask2.setStopState(serviceTask.getStopState() + 1);
+            serviceTask2.setTemplateid(serviceTaskVO.getLibtemplateid());
+            iServiceTaskService.updateServiceTask(serviceTask2);
 
-            if (CollectionUtils.isNotEmpty(svyTaskVO.getPatTaskRelevances())) {
-                for (PatTaskRelevance patTaskRelevance : svyTaskVO.getPatTaskRelevances()) {
+            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
+                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
 
-                    SvyTaskSingle svyTaskSingle = DtoConversionUtils.sourceToTarget(svyTaskVO, SvyTaskSingle.class);
-                    svyTaskSingle.setSendname(patTaskRelevance.getName());
-                    svyTaskSingle.setAge(patTaskRelevance.getAge());
-                    svyTaskSingle.setSfzh(patTaskRelevance.getSfzh());
-                    svyTaskSingle.setPhone(patTaskRelevance.getPhone());
-                    svyTaskSingle.setAddr(patTaskRelevance.getAddr());
-                    svyTaskSingle.setPatid(patTaskRelevance.getPatid());
-                    svyTaskSingle.setHospType(patTaskRelevance.getHospType());
-                    svyTaskSingle.setCreateTime(DateUtils.getNowDate());
-                    svyTaskSingle.setTextParam(new Gson().toJson(svyTaskVO.getTextParamMap()));
+                    ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
+                    serviceSubtask.setSendname(patTaskRelevance.getName());
+                    serviceSubtask.setAge(patTaskRelevance.getAge());
+                    serviceSubtask.setSfzh(patTaskRelevance.getSfzh());
+                    serviceSubtask.setPhone(patTaskRelevance.getPhone());
+                    serviceSubtask.setAddr(patTaskRelevance.getAddr());
+                    serviceSubtask.setPatid(patTaskRelevance.getPatid());
+                    serviceSubtask.setHospType(patTaskRelevance.getHospType());
+                    serviceSubtask.setCreateTime(DateUtils.getNowDate());
+                    serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
                     if (patTaskRelevance.getIsoperation() != null) {
-                        optionHandle(svyTaskSingle, svyTaskVO.getTaskid(), patTaskRelevance.getIsoperation(), patTaskRelevance.getPatid());
+                        optionHandle(serviceSubtask, serviceTaskVO.getTaskid(), patTaskRelevance.getIsoperation(), patTaskRelevance.getPatid());
                     } else if (patTaskRelevance.getIsoperation() == null) {
-                        optionHandle(svyTaskSingle, svyTaskVO.getTaskid(), svyTaskVO.getIsoperation(), patTaskRelevance.getPatid());
+                        optionHandle(serviceSubtask, serviceTaskVO.getTaskid(), serviceTaskVO.getIsoperation(), patTaskRelevance.getPatid());
                     }
-                    integer = svyTaskSingle.getTaskid().intValue();
+                    integer = serviceSubtask.getTaskid().intValue();
                 }
             }
         }
@@ -179,79 +116,81 @@
     }
 
     @Override
-    public SvyTaskVO queryTaskByCondition(SvyTaskSingle svyTaskSingle) {
+    public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {
         //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚�
         List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
-        List<SvyTaskSingle> list = selectSvyTaskSingleList(svyTaskSingle);
-        if (CollectionUtils.isEmpty(list) || list.size() == 0) {
-            return new SvyTaskVO();
+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        serviceSubtaskVO.setTaskid(serviceSubtask.getTaskid());
+        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+        if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {
+            return new ServiceTaskVO();
         }
-        SvyTask svyTask = svyTaskService.selectSvyTaskByTaskid(svyTaskSingle.getTaskid());
+        ServiceTask serviceTask = iServiceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
         //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ivrTasksingleVO涓�
-        SvyTaskVO svyTaskVO = DtoConversionUtils.sourceToTarget(list.get(0), SvyTaskVO.class);
-        svyTaskVO.setShowDate(svyTask.getShowDate());
-        svyTaskVO.setShowTimeMorn(svyTask.getShowTimeMorn());
-        svyTaskVO.setShowTimeNoon(svyTask.getShowTimeNoon());
-        svyTaskVO.setShowTimeNight(svyTask.getShowTimeNight());
-        svyTaskVO.setPreachform(svyTask.getPreachform());
-        String sendTimeSlot = svyTask.getSendTimeSlot();
+        ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(selectServiceSubtaskList.get(0), ServiceTaskVO.class);
+        serviceTaskVO.setShowDate(serviceTask.getShowDate());
+        serviceTaskVO.setShowTimeMorn(serviceTask.getShowTimeMorn());
+        serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon());
+        serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight());
+        serviceTaskVO.setPreachform(serviceTask.getPreachform());
+        String sendTimeSlot = serviceTask.getSendTimeSlot();
         ObjectMapper objectMapper = new ObjectMapper();
         try {
             //鑾峰彇鍒板彂閫佹椂闂寸殑闆嗗悎
             if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {
                 List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);
-                svyTaskVO.setSendTimeSlot(taskSendTimeVOList);
-                svyTaskVO.setSendType(svyTask.getSendType());
+                serviceTaskVO.setSendTimeslot(taskSendTimeVOList);
+                serviceTaskVO.setSendType(serviceTask.getSendType());
             }
             //鏂囨湰鍙橀噺鍙傛暟
-            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(svyTask.getTextParam())) {
-                Map<String, Map<String, String>> textParam = objectMapper.readValue(svyTask.getTextParam(), Map.class);
-                svyTaskVO.setTextParam(textParam);
+            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(serviceTask.getTextParam())) {
+                Map<String, Map<String, String>> textParam = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
+                serviceTaskVO.setTextParam(textParam);
             }
         } catch (JsonProcessingException e) {
             e.printStackTrace();
         }
 
-        for (SvyTaskSingle svyTaskSingle1 : list) {
+        for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {
             PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
-            if (!svyTaskSingle1.getHospType().equals("2")) {
-                log.info("闅忚鏌ヨ涓嶄负鍑洪櫌锛寋}", svyTaskSingle1.getHospType());
+            if (!serviceSubtask1.getHospType().equals("2")) {
+                log.info("闅忚鏌ヨ涓嶄负鍑洪櫌锛寋}", serviceSubtask1.getHospType());
                 //鑾峰彇鍒版偅鑰呬俊鎭紝骞舵斁鍏ュ埌闆嗗悎涓�
-                patTaskRelevance.setName(svyTaskSingle1.getSendname());
-                patTaskRelevance.setAge(svyTaskSingle1.getAge());
-                patTaskRelevance.setSfzh(svyTaskSingle1.getSfzh());
-                patTaskRelevance.setPhone(svyTaskSingle1.getPhone());
-                patTaskRelevance.setAddr(svyTaskSingle1.getAddr());
-                patTaskRelevance.setDiagname(svyTaskSingle1.getDiagname());
-                patTaskRelevance.setPatid(svyTaskSingle1.getPatid());
-                patTaskRelevance.setSendStatus(svyTaskSingle1.getSendstate());
+                patTaskRelevance.setName(serviceSubtask1.getSendname());
+                patTaskRelevance.setAge(serviceSubtask1.getAge());
+                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
+                patTaskRelevance.setPhone(serviceSubtask1.getPhone());
+                patTaskRelevance.setAddr(serviceSubtask1.getAddr());
+                patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
+                patTaskRelevance.setPatid(serviceSubtask1.getPatid());
+                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
                 patTaskRelevances.add(patTaskRelevance);
             }
-            if (svyTaskSingle1.getHospType().equals("2")) {
-                log.info("闅忚鏌ヨ涓哄嚭闄紝{}", svyTaskSingle1.getHospType());
-                patTaskRelevance.setName(svyTaskSingle1.getSendname());
-                patTaskRelevance.setAge(svyTaskSingle1.getAge());
-                patTaskRelevance.setSfzh(svyTaskSingle1.getSfzh());
-                patTaskRelevance.setPhone(svyTaskSingle1.getPhone());
-                patTaskRelevance.setAddr(svyTaskSingle1.getAddr());
-                patTaskRelevance.setDeptName(svyTaskSingle1.getDeptname());
-                patTaskRelevance.setBedNo(svyTaskSingle1.getBedno());
-                patTaskRelevance.setDiagname(svyTaskSingle1.getDiagname());
-                patTaskRelevance.setPatid(svyTaskSingle1.getPatid());
-                patTaskRelevance.setSendStatus(svyTaskSingle1.getSendstate());
+            if (serviceSubtask1.getHospType().equals("2")) {
+                log.info("闅忚鏌ヨ涓哄嚭闄紝{}", serviceSubtask1.getHospType());
+                patTaskRelevance.setName(serviceSubtask1.getSendname());
+                patTaskRelevance.setAge(serviceSubtask1.getAge());
+                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
+                patTaskRelevance.setPhone(serviceSubtask1.getPhone());
+                patTaskRelevance.setAddr(serviceSubtask1.getAddr());
+                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
+                patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());
+                patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
+                patTaskRelevance.setPatid(serviceSubtask1.getPatid());
+                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
                 patTaskRelevances.add(patTaskRelevance);
             }
         }
 
-        svyTaskVO.setPatTaskRelevances(patTaskRelevances);
-        return svyTaskVO;
+        serviceTaskVO.setPatTaskRelevances(patTaskRelevances);
+        return serviceTaskVO;
     }
 
-    private void optionHandle(SvyTaskSingle svyTaskSingle, Long taskId, Integer isoperation, Long patid) {
+    private void optionHandle(ServiceSubtask serviceSubtask, Long taskId, Integer isoperation, Long patid) {
         if (isoperation == 1) {
-            svyTaskSingle.setSendstate(1L);
-            svyTaskSingleMapper.insertSvyTaskSingle(svyTaskSingle);
-        } else if (isoperation == 2) svyTaskSingleMapper.updateSvyTaskSingle(svyTaskSingle);
-        else if (isoperation == 3) svyTaskSingleMapper.deleteSvyTaskcallByCondition(taskId, patid);
+            serviceSubtask.setSendstate(1L);
+            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+        } else if (isoperation == 2) serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+        else if (isoperation == 3) serviceSubtaskMapper.deleteServiceSubtaskByCondition(taskId, patid);
     }
 }
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTargetoptionMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTargetoptionMapper.xml
index be5b525..469a4f5 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTargetoptionMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTargetoptionMapper.xml
@@ -35,6 +35,7 @@
         <result property="appendflag" column="appendflag"/>
         <result property="appenddesc" column="appenddesc"/>
         <result property="picturePath" column="picture_path"/>
+        <result property="prompt" column="prompt"/>
     </resultMap>
 
     <sql id="selectIvrLibaTargetoptionVo">
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
index 797ff99..5c6101a 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateScriptMapper.xml
@@ -45,6 +45,7 @@
         <result property="branchFlag" column="branch_flag"/>
         <result property="branchNextscriptno" column="branch_nextscriptno"/>
         <result property="sort" column="sort"/>
+        <result property="score" column="score"/>
     </resultMap>
 
     <sql id="selectIvrLibaTemplateScriptVo">
@@ -75,6 +76,7 @@
                script_topic,
                next_scriptno,
                otherdata,
+               score,
                is_must,
                playWavOnly,
                del_flag,
@@ -111,7 +113,8 @@
             <if test="noClearlyVoice != null  and noClearlyVoice != ''">and noClearlyVoice = #{noClearlyVoice}</if>
             <if test="nextScriptno != null  and nextScriptno != ''">and next_scriptno = #{nextScriptno}</if>
             <if test="branchFlag != null  and branchFlag != ''">and branch_flag = #{branchFlag}</if>
-            <if test="branchNextscriptno != null  and branchNextscriptno != ''">and branch_nextscriptno = #{branchNextscriptno}
+            <if test="branchNextscriptno != null  and branchNextscriptno != ''">and branch_nextscriptno =
+                #{branchNextscriptno}
             </if>
             <if test="categoryName != null  and categoryName != ''">and categoryName like concat('%', #{categoryName},
                 '%')
@@ -132,6 +135,7 @@
             <if test="isMust != null  and isMust != ''">and is_must = #{isMust}</if>
             <if test="scriptType != null">and script_type = #{scriptType}</if>
             <if test="sort != null">and sort = #{sort}</if>
+            <if test="score != null">and score = #{score}</if>
         </where>
     </select>
 
@@ -183,6 +187,7 @@
             <if test="branchFlag != null  and branchFlag != ''">branch_flag,</if>
             <if test="branchNextscriptno != null  and branchNextscriptno != ''">branch_nextscriptno,</if>
             <if test="sort != null ">sort,</if>
+            <if test="score != null ">score,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="scriptno != null">#{scriptno},</if>
@@ -223,6 +228,7 @@
             <if test="branchFlag != null  and branchFlag != ''">#{branchFlag},</if>
             <if test="branchNextscriptno != null  and branchNextscriptno != ''">#{branchNextscriptno},</if>
             <if test="sort != null ">#{sort},</if>
+            <if test="score != null ">#{score},</if>
         </trim>
     </insert>
 
@@ -265,6 +271,7 @@
             <if test="scriptType != null ">script_type = #{scriptType},</if>
             <if test="sort != null ">sort = #{sort},</if>
             <if test="branchFlag != null  and branchFlag != ''">branch_flag = #{branchFlag},</if>
+            <if test="score != null ">score = #{score},</if>
             <if test="branchNextscriptno != null  and branchNextscriptno != ''">branch_nextscriptno =
                 #{branchNextscriptno},
             </if>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml
index 491347f..c3a9963 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrLibaTemplateTargetoptionMapper.xml
@@ -36,11 +36,14 @@
         <result property="appendflag" column="appendflag"/>
         <result property="appenddesc" column="appenddesc"/>
         <result property="optionNo" column="option_no"/>
+        <result property="score" column="score"/>
+        <result property="prompt" column="prompt"/>
     </resultMap>
 
     <sql id="selectIvrLibaTemplateTargetoptionVo">
         select id,
                targetid,
+               score,
                appendflag,
                appenddesc,
                scriptid,
@@ -66,6 +69,7 @@
         <where>
             del_flag=0
             <if test="targetid != null ">and targetid = #{targetid}</if>
+            <if test="score != null ">and score = #{score}</if>
             <if test="targetname != null ">and targetname = #{targetname}</if>
             <if test="templateID != null ">and templateID = #{templateID}</if>
             <if test="scriptid != null ">and scriptid = #{scriptid}</if>
@@ -134,6 +138,7 @@
             <if test="appendflag != null">appendflag,</if>
             <if test="appenddesc != null">appenddesc,</if>
             <if test="optionNo != null">option_no,</if>
+            <if test="score != null">score,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="targetid != null">#{targetid},</if>
@@ -166,6 +171,7 @@
             <if test="appendflag != null">#{appendflag},</if>
             <if test="appenddesc != null">#{appenddesc},</if>
             <if test="optionNo != null">#{optionNo},</if>
+            <if test="score != null">#{score},</if>
         </trim>
     </insert>
 
@@ -202,6 +208,7 @@
             <if test="appendflag != null">appendflag = #{appendflag},</if>
             <if test="appenddesc != null">appenddesc = #{appenddesc},</if>
             <if test="optionNo != null">option_no = #{optionNo},</if>
+            <if test="score != null">score = #{score},</if>
         </trim>
         where id = #{id}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml
index 5da543e..482ccb9 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateScriptMapper.xml
@@ -44,6 +44,7 @@
         <result property="scriptType" column="script_type"/>
         <result property="scriptContent" column="script_content"/>
         <result property="sort" column="sort"/>
+        <result property="score" column="score"/>
     </resultMap>
 
     <sql id="selectIvrTaskTemplateScriptVo">
@@ -51,6 +52,7 @@
                taskid,
                sort,
                script_type,
+               score,
                branch_flag,
                branch_nextscriptno,
                next_scriptno,
@@ -75,6 +77,7 @@
         <include refid="selectIvrTaskTemplateScriptVo"/>
         <where>
             <if test="taskid != null ">and taskid = #{taskid}</if>
+            <if test="score != null ">and score = #{score}</if>
             <if test="sort != null ">and sort = #{sort}</if>
             <if test="templateID != null ">and templateID = #{templateID}</if>
             <if test="questionPoint != null  and questionPoint != ''">and questionPoint = #{questionPoint}</if>
@@ -161,6 +164,7 @@
             <if test="scriptContent != null  and scriptContent != ''">script_content,</if>
             <if test="sort != null ">sort,</if>
             <if test="nextScriptno != null  and nextScriptno != ''">next_scriptno,</if>
+            <if test="score != null ">score,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="taskid != null">#{taskid},</if>
@@ -201,6 +205,7 @@
             <if test="scriptContent != null  and scriptContent != ''">#{scriptContent},</if>
             <if test="sort != null">#{sort},</if>
             <if test="nextScriptno != null  and nextScriptno != ''">#{nextScriptno},</if>
+            <if test="score != null ">#{score},</if>
         </trim>
     </insert>
 
@@ -247,6 +252,7 @@
             <if test="scriptContent != null  and scriptContent != ''">script_content = #{scriptContent},</if>
             <if test="sort != null">sort = #{sort},</if>
             <if test="nextScriptno != null  and nextScriptno != ''">next_scriptno = #{nextScriptno},</if>
+            <if test="score != null">score = #{score},</if>
         </trim>
         where id = #{id}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateTargetoptionMapper.xml b/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateTargetoptionMapper.xml
index 08e78a5..4ee4208 100644
--- a/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateTargetoptionMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/IvrTaskTemplateTargetoptionMapper.xml
@@ -39,12 +39,15 @@
         <result property="appenddesc" column="appenddesc"/>
         <result property="optionCode" column="option_code"/>
         <result property="isUserOperation" column="is_user_operation"/>
+        <result property="score" column="score"/>
+        <result property="prompt" column="prompt"/>
     </resultMap>
 
     <sql id="selectIvrTaskTemplateTargetoptionVo">
         select id,
                taskid,
                templateID,
+               score,
                is_user_operation,
                appenddesc,
                targetid,
@@ -95,6 +98,7 @@
             <if test="appenddesc != null ">and appenddesc = #{appenddesc}</if>
             <if test="optionCode != null ">and option_code = #{optionCode}</if>
             <if test="isUserOperation != null ">and is_user_operation = #{isUserOperation}</if>
+            <if test="score != null ">and score = #{score}</if>
         </where>
     </select>
 
@@ -141,6 +145,7 @@
             <if test="appenddesc != null">appenddesc,</if>
             <if test="optionCode != null ">option_code,</if>
             <if test="isUserOperation != null ">is_user_operation,</if>
+            <if test="score != null ">score,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="taskid != null">#{taskid},</if>
@@ -176,6 +181,7 @@
             <if test="appenddesc != null">#{appenddesc},</if>
             <if test="optionCode != null ">#{optionCode},</if>
             <if test="isUserOperation != null ">#{isUserOperation},</if>
+            <if test="score != null ">#{score},</if>
         </trim>
     </insert>
 
@@ -215,6 +221,7 @@
             <if test="appenddesc != null">appenddesc = #{appenddesc},</if>
             <if test="optionCode != null ">option_code = #{optionCode},</if>
             <if test="isUserOperation != null ">is_user_operation = #{isUserOperation},</if>
+            <if test="score != null ">score = #{score},</if>
 
         </trim>
         where id = #{id}
diff --git a/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml b/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml
index e8e8dc2..8018494 100644
--- a/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml
@@ -6,6 +6,12 @@
 
     <resultMap type="com.smartor.domain.PatArchive" id="PatArchiveResult">
         <result property="id" column="id"/>
+        <result property="patientno" column="patientno"/>
+        <result property="sourcefrom" column="sourcefrom"/>
+        <result property="patidHis" column="patid_his"/>
+        <result property="sdFlag" column="sd_flag"/>
+        <result property="pattype" column="pattype"/>
+        <result property="viptype" column="viptype"/>
         <result property="name" column="name"/>
         <result property="sex" column="sex"/>
         <result property="nation" column="nation"/>
@@ -35,11 +41,13 @@
         <result property="pattype" column="pattype"/>
         <result property="bedNo" column="bedno"/>
         <result property="inhosptime" column="inhosptime"/>
-        <result property="viptype" column="viptype"/>
     </resultMap>
 
     <sql id="selectPatArchiveVo">
         select id,
+               patientno,
+               patid_his,
+               sd_flag,
                name,
                sex,
                idcardno,
@@ -82,6 +90,9 @@
             <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
             <if test="viptype != null ">and viptype = #{viptype}</if>
             <if test="pattype != null ">and pattype = #{pattype}</if>
+            <if test="patientno != null ">and patientno = #{patientno}</if>
+            <if test="patidHis != null ">and patid_his = #{patidHis}</if>
+            <if test="sdFlag != null ">and sd_flag = #{sdFlag}</if>
         </where>
     </select>
 
@@ -89,6 +100,9 @@
     <select id="patInfoByContion" parameterType="com.smartor.domain.PatArchiveReq" resultMap="PatArchiveResult">
         select
         a.id,
+        a.patientno,
+        a.patid_his,
+        a.sd_flag,
         a.name,
         a.sex,
         c.tagname as tag,
@@ -120,62 +134,88 @@
         where id = #{id} and del_flag=0
     </select>
 
-    <insert id="insertPatArchive">
-        <!--        insert into pat_archive-->
-        <!--        <trim prefix="(" suffix=")" suffixOverrides=",">-->
-        <!--            name,-->
-        <!--            sex,-->
-        <!--            iccardno-->
-        <!--&lt;!&ndash;            <if test="birthdate != null">birthdate,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="age != null">age,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="sourcefrom != null">sourcefrom,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="archivetime != null">archivetime,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="archiveby != null">archiveby,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="telcode != null">telcode,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="relativetelcode != null">relativetelcode,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="iccardtype != null">iccardtype,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="orgid != null">orgid,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="openid != null">openid,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="delFlag != null and delFlag != ''">del_flag,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="updateBy != null">update_by,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="updateTime != null">update_time,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="createBy != null">create_by,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="createTime != null">create_time,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="isupload != null">isupload,</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;            <if test="uploadTime != null">upload_time,</if>&ndash;&gt;-->
-        <!--        </trim>-->
-        <!--        <trim prefix="values (" suffix=")" suffixOverrides=",">-->
-        <!--            <foreach item="item" index="index" collection="list" separator=",">-->
-        <!--                <if test="name != null">#{item.name},</if>-->
-        <!--                <if test="sex != null">#{item.sex},</if>-->
-        <!--                <if test="iccardno != null">#{item.iccardno},</if>-->
-        <!--&lt;!&ndash;                <if test="birthdate != null">#{birthdate},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="age != null">#{item.age},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="sourcefrom != null">#{item.sourcefrom},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="archivetime != null">#{item.archivetime},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="archiveby != null">#{item.archiveby},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="telcode != null">#{item.telcode},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="relativetelcode != null">#{item.relativetelcode},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="iccardtype != null">#{item.iccardtype},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="orgid != null">#{item.orgid},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="openid != null">#{item.openid},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="delFlag != null and delFlag != ''">#{item.delFlag},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="updateBy != null">#{item.updateBy},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="updateTime != null">#{item.updateTime},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="createBy != null">#{item.createBy},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="createTime != null">#{item.createTime},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="isupload != null">#{item.isupload},</if>&ndash;&gt;-->
-        <!--&lt;!&ndash;                <if test="uploadTime != null">#{item.uploadTime},</if>&ndash;&gt;-->
-        <!--            </foreach>-->
-        <!--        </trim>-->
+    <insert id="insertPatArchiveSingle" parameterType="com.smartor.domain.PatArchive" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into pat_archive
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="patientno != null">patientno,</if>
+            <if test="patidHis != null">patid_his,</if>
+            <if test="sdFlag != null">sd_flag,</if>
+            <if test="pattype != null">pattype,</if>
+            <if test="viptype != null">viptype,</if>
+            <if test="name != null">name,</if>
+            <if test="sex != null">sex,</if>
+            <if test="nation != null">nation,</if>
+            <if test="nativePlace != null">native_place,</if>
+            <if test="placeOfResidence != null">place_of_residence,</if>
+            <if test="birthplace != null">birthplace,</if>
+            <if test="idcardno != null">idcardno,</if>
+            <if test="dduserid != null">dduserid,</if>
+            <if test="pid != null">pid,</if>
+            <if test="guid != null">guid,</if>
+            <if test="birthdate != null">birthdate,</if>
+            <if test="age != null">age,</if>
+            <if test="sourcefrom != null">sourcefrom,</if>
+            <if test="archivetime != null">archivetime,</if>
+            <if test="archiveby != null">archiveby,</if>
+            <if test="telcode != null">telcode,</if>
+            <if test="relativetelcode != null">relativetelcode,</if>
+            <if test="idcardtype != null">idcardtype,</if>
+            <if test="orgid != null">orgid,</if>
+            <if test="openid != null">openid,</if>
+            <if test="delFlag != null and delFlag != ''">del_flag,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="isupload != null">isupload,</if>
+            <if test="uploadTime != null">upload_time,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="patientno != null">#{patientno},</if>
+            <if test="patidHis != null">#{patidHis},</if>
+            <if test="sdFlag != null">#{sdFlag},</if>
+            <if test="pattype != null">#{pattype},</if>
+            <if test="viptype != null">#{>viptype},</if>
+            <if test="name != null">#{name},</if>
+            <if test="sex != null">#{sex},</if>
+            <if test="nation != null">#{nation},</if>
+            <if test="nativePlace != null">#{nativePlace},</if>
+            <if test="placeOfResidence != null">#{placeOfResidence},</if>
+            <if test="birthplace != null">#{birthplace},</if>
+            <if test="idcardno != null">#{idcardno},</if>
+            <if test="dduserid != null">#{dduserid},</if>
+            <if test="pid != null">#{pid},</if>
+            <if test="guid != null">#{guid},</if>
+            <if test="birthdate != null">#{birthdate},</if>
+            <if test="age != null">#{age},</if>
+            <if test="sourcefrom != null">#{sourcefrom},</if>
+            <if test="archivetime != null">#{archivetime},</if>
+            <if test="archiveby != null">#{archiveby},</if>
+            <if test="telcode != null">#{telcode},</if>
+            <if test="relativetelcode != null">#{relativetelcode},</if>
+            <if test="idcardtype != null">#{idcardtype},</if>
+            <if test="orgid != null">#{orgid},</if>
+            <if test="openid != null">#{openid},</if>
+            <if test="delFlag != null and delFlag != ''">#{delFlag},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="isupload != null">#{isupload},</if>
+            <if test="uploadTime != null">#{uploadTime},</if>
+        </trim>
+    </insert>
 
+    <insert id="insertPatArchive">
         insert into
         pat_archive(name,viptype,sex,idcardno,birthdate,place_of_residence,age,sourcefrom,archivetime,archiveby,telcode,relativetelcode,idcardtype,orgid,openid,dduserid,update_by,update_time
-        ,create_by,create_time,isupload,upload_time,pattype,nation,birthplace,native_place) values
+        ,create_by,create_time,isupload,upload_time,pattype,nation,birthplace,native_place,patientno,patid_his,sd_flag)
+        values
         <foreach item="item" index="index" collection="list" separator=",">
             (#{item.name},#{item.viptype},#{item.sex},#{item.idcardno},#{item.birthdate},#{item.placeOfResidence},#{item.age},#{item.sourcefrom},#{item.archivetime},#{item.archiveby}
             ,#{item.telcode},#{item.archiveby},#{item.idcardtype},#{item.orgid},#{item.openid},#{item.dduserid},#{item.updateBy},
-            #{item.updateTime},#{item.createBy},#{item.createTime},#{item.isupload},#{item.uploadTime},#{item.pattype},#{item.nation},#{item.birthplace},#{item.nativePlace}
+            #{item.updateTime},#{item.createBy},#{item.createTime},#{item.isupload},#{item.uploadTime},#{item.pattype},#{item.nation},#{item.birthplace},#{item.nativePlace},#{item.patientno},#{item.patidHis},#{item.sdFlag}
             )
         </foreach>
     </insert>
@@ -206,6 +246,9 @@
             <if test="isupload != null">isupload = #{isupload},</if>
             <if test="uploadTime != null">upload_time = #{uploadTime},</if>
             <if test="viptype != null">viptype = #{viptype},</if>
+            <if test="viptype != null">patientno = #{patientno},</if>
+            <if test="viptype != null">patid_his = #{patidHis},</if>
+            <if test="viptype != null">sd_flag = #{sdFlag},</if>
         </trim>
         where id = #{id}
     </update>
@@ -228,6 +271,9 @@
 
         SELECT
         a.id,
+        a.patid_his,
+        a.sd_flag,
+        a.patientno,
         a.NAME,
         a.sex,
         a.nation,
@@ -281,6 +327,9 @@
 
         select
         a.id,
+        a.patid_his,
+        a.sd_flag,
+        a.patientno,
         a.NAME,
         d.deptname,
         a.sex,
@@ -369,6 +418,9 @@
 
         select
         a.id,
+        a.patid_his,
+        a.sd_flag,
+        a.patientno,
         d.deptname,
         a.name,
         a.sex,
@@ -443,6 +495,9 @@
         select
         a.id,
         a.name,
+        a.patid_his,
+        a.sd_flag,
+        a.patientno,
         a.sex,
         d.deptname,
         a.nation,
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
index a9510ce..373f395 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
@@ -1,74 +1,127 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.smartor.mapper.PatMedInhospMapper">
 
     <resultMap type="com.smartor.domain.PatMedInhosp" id="PatMedInhospResult">
-        <result property="inhospid"    column="inhospid"    />
-        <result property="inhospno"    column="inhospno"    />
-        <result property="serialnum"    column="serialnum"    />
-        <result property="hospitalname"    column="hospitalname"    />
-        <result property="hospitalcode"    column="hospitalcode"    />
-        <result property="hospitaldistrictcode"    column="hospitaldistrictcode"    />
-        <result property="hospitaldistrictname"    column="hospitaldistrictname"    />
-        <result property="icd10code"    column="icd10code"    />
-        <result property="diagname"    column="diagname"    />
-        <result property="starttime"    column="starttime"    />
-        <result property="endtime"    column="endtime"    />
-        <result property="deptcode"    column="deptcode"    />
-        <result property="deptname"    column="deptname"    />
-        <result property="roomno"    column="roomno"    />
-        <result property="bedNo"    column="bed_no"    />
-        <result property="orgid"    column="orgid"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="updateBy"    column="update_by"    />
-        <result property="updateTime"    column="update_time"    />
-        <result property="createBy"    column="create_by"    />
-        <result property="createTime"    column="create_time"    />
-        <result property="isupload"    column="isupload"    />
-        <result property="uploadTime"    column="upload_time"    />
-        <result property="patid"    column="patid"    />
-        <result property="leavediagname"    column="leavediagname"    />
-        <result property="leaveicd10code"    column="leaveicd10code"    />
-        <result property="drcode"    column="drcode"    />
-        <result property="drname"    column="drname"    />
-        <result property="schemestatus"    column="schemestatus"    />
-        <result property="generalschemestatus"    column="generalschemestatus"    />
-        <result property="leaveldeptcode"    column="leaveldeptcode"    />
-        <result property="leaveldeptname"    column="leaveldeptname"    />
-        <result property="hospitaldistrictid"    column="hospitaldistrictid"    />
-        <result property="leavehospitaldistrictcode"    column="leavehospitaldistrictcode"    />
-        <result property="leavehospitaldistrictname"    column="leavehospitaldistrictname"    />
-        <result property="leavehospitaldistrictid"    column="leavehospitaldistrictid"    />
-        <result property="deptid"    column="deptid"    />
-        <result property="leaveldeptid"    column="leaveldeptid"    />
-        <result property="schemetime"    column="schemetime"    />
-        <result property="patname"    column="patname"    />
-        <result property="patno"    column="patno"    />
-        <result property="inhospstate"    column="inhospstate"    />
-        <result property="checkFlag"    column="check_flag"    />
+        <result property="inhospid" column="inhospid"/>
+        <result property="inhospno" column="inhospno"/>
+        <result property="serialnum" column="serialnum"/>
+        <result property="hospitalname" column="hospitalname"/>
+        <result property="hospitalcode" column="hospitalcode"/>
+        <result property="hospitaldistrictcode" column="hospitaldistrictcode"/>
+        <result property="hospitaldistrictname" column="hospitaldistrictname"/>
+        <result property="icd10code" column="icd10code"/>
+        <result property="diagname" column="diagname"/>
+        <result property="starttime" column="starttime"/>
+        <result property="endtime" column="endtime"/>
+        <result property="deptcode" column="deptcode"/>
+        <result property="deptname" column="deptname"/>
+        <result property="roomno" column="roomno"/>
+        <result property="bedNo" column="bed_no"/>
+        <result property="orgid" column="orgid"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="isupload" column="isupload"/>
+        <result property="uploadTime" column="upload_time"/>
+        <result property="patid" column="patid"/>
+        <result property="leavediagname" column="leavediagname"/>
+        <result property="leaveicd10code" column="leaveicd10code"/>
+        <result property="drcode" column="drcode"/>
+        <result property="drname" column="drname"/>
+        <result property="schemestatus" column="schemestatus"/>
+        <result property="generalschemestatus" column="generalschemestatus"/>
+        <result property="leaveldeptcode" column="leaveldeptcode"/>
+        <result property="leaveldeptname" column="leaveldeptname"/>
+        <result property="hospitaldistrictid" column="hospitaldistrictid"/>
+        <result property="leavehospitaldistrictcode" column="leavehospitaldistrictcode"/>
+        <result property="leavehospitaldistrictname" column="leavehospitaldistrictname"/>
+        <result property="leavehospitaldistrictid" column="leavehospitaldistrictid"/>
+        <result property="deptid" column="deptid"/>
+        <result property="leaveldeptid" column="leaveldeptid"/>
+        <result property="schemetime" column="schemetime"/>
+        <result property="patname" column="patname"/>
+        <result property="patno" column="patno"/>
+        <result property="inhospstate" column="inhospstate"/>
+        <result property="checkFlag" column="check_flag"/>
     </resultMap>
 
     <sql id="selectPatMedInhospVo">
-        select inhospid,patname,check_flag,inhospstate,patno,inhospno, serialnum, hospitalname, hospitalcode, hospitaldistrictcode, hospitaldistrictname, icd10code, diagname, starttime, endtime, deptcode, deptname, roomno, bed_no, orgid, del_flag, update_by, update_time, create_by, create_time, isupload, upload_time, patid, leavediagname, leaveicd10code, drcode, drname, schemestatus, generalschemestatus, leaveldeptcode, leaveldeptname, hospitaldistrictid, leavehospitaldistrictcode, leavehospitaldistrictname, leavehospitaldistrictid, deptid, leaveldeptid, schemetime from pat_med_inhosp
+        select inhospid,
+               patname,
+               check_flag,
+               inhospstate,
+               patno,
+               inhospno,
+               serialnum,
+               hospitalname,
+               hospitalcode,
+               hospitaldistrictcode,
+               hospitaldistrictname,
+               icd10code,
+               diagname,
+               starttime,
+               endtime,
+               deptcode,
+               deptname,
+               roomno,
+               bed_no,
+               orgid,
+               del_flag,
+               update_by,
+               update_time,
+               create_by,
+               create_time,
+               isupload,
+               upload_time,
+               patid,
+               leavediagname,
+               leaveicd10code,
+               drcode,
+               drname,
+               schemestatus,
+               generalschemestatus,
+               leaveldeptcode,
+               leaveldeptname,
+               hospitaldistrictid,
+               leavehospitaldistrictcode,
+               leavehospitaldistrictname,
+               leavehospitaldistrictid,
+               deptid,
+               leaveldeptid,
+               schemetime
+        from pat_med_inhosp
     </sql>
 
     <select id="selectPatMedInhospList" parameterType="com.smartor.domain.PatMedInhosp" resultMap="PatMedInhospResult">
         <include refid="selectPatMedInhospVo"/>
         <where>
-            <if test="hospitalname != null  and hospitalname != ''"> and hospitalname like concat('%', #{hospitalname}, '%')</if>
-            <if test="patname != null  and patname != ''"> and patname like concat('%', #{patname}, '%')</if>
-            <if test="hospitaldistrictname != null  and hospitaldistrictname != ''"> and hospitaldistrictname like concat('%', #{hospitaldistrictname}, '%')</if>
-            <if test="endtime != null "> and endtime = #{endtime}</if>
-            <if test="patno != null "> and patno = #{patno}</if>
-            <if test="checkFlag != null "> and check_flag = #{checkFlag}</if>
-            <if test="inhospstate != null "> and inhospstate = #{inhospstate}</if>
-            <if test="schemestatus != null "> and schemestatus = #{schemestatus}</if>
-            <if test="leavediagname != null  and leavediagname != ''"> and leavediagname like concat('%', #{leavediagname}, '%')</if>
-            <if test="drname != null  and drname != ''"> and drname like concat('%', #{drname}, '%')</if>
-            <if test="leaveldeptname != null  and leaveldeptname != ''"> and leaveldeptname like concat('%', #{leaveldeptname}, '%')</if>
-            <if test="leavehospitaldistrictname != null  and leavehospitaldistrictname != ''"> and leavehospitaldistrictname like concat('%', #{leavehospitaldistrictname}, '%')</if>
+            <if test="hospitalname != null  and hospitalname != ''">and hospitalname like concat('%', #{hospitalname},
+                '%')
+            </if>
+            <if test="patname != null  and patname != ''">and patname like concat('%', #{patname}, '%')</if>
+            <if test="hospitaldistrictname != null  and hospitaldistrictname != ''">and hospitaldistrictname like
+                concat('%', #{hospitaldistrictname}, '%')
+            </if>
+            <if test="endtime != null ">and endtime = #{endtime}</if>
+            <if test="patno != null ">and patno = #{patno}</if>
+            <if test="checkFlag != null ">and check_flag = #{checkFlag}</if>
+            <if test="inhospstate != null ">and inhospstate = #{inhospstate}</if>
+            <if test="schemestatus != null ">and schemestatus = #{schemestatus}</if>
+            <if test="leavediagname != null  and leavediagname != ''">and leavediagname like concat('%',
+                #{leavediagname}, '%')
+            </if>
+            <if test="drname != null  and drname != ''">and drname like concat('%', #{drname}, '%')</if>
+            <if test="leaveldeptname != null  and leaveldeptname != ''">and leaveldeptname like concat('%',
+                #{leaveldeptname}, '%')
+            </if>
+            <if test="leavehospitaldistrictname != null  and leavehospitaldistrictname != ''">and
+                leavehospitaldistrictname like concat('%', #{leavehospitaldistrictname}, '%')
+            </if>
         </where>
         order by update_time desc
     </select>
@@ -78,7 +131,8 @@
         where inhospid = #{inhospid}
     </select>
 
-    <insert id="insertPatMedInhosp" parameterType="com.smartor.domain.PatMedInhosp" useGeneratedKeys="true" keyProperty="inhospid">
+    <insert id="insertPatMedInhosp" parameterType="com.smartor.domain.PatMedInhosp" useGeneratedKeys="true"
+            keyProperty="inhospid">
         insert into pat_med_inhosp
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="serialnum != null">serialnum,</if>
@@ -122,7 +176,7 @@
             <if test="patno != null">patno,</if>
             <if test="inhospstate != null">inhospstate,</if>
             <if test="checkFlag != null">check_flag,</if>
-         </trim>
+        </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="serialnum != null">#{serialnum},</if>
             <if test="hospitalname != null">#{hospitalname},</if>
@@ -165,7 +219,7 @@
             <if test="patno != null">#{patno},</if>
             <if test="inhospstate != null">#{inhospstate},</if>
             <if test="checkFlag != null">#{checkFlag},</if>
-         </trim>
+        </trim>
     </insert>
 
     <update id="updatePatMedInhosp" parameterType="com.smartor.domain.PatMedInhosp">
@@ -217,7 +271,9 @@
     </update>
 
     <delete id="deletePatMedInhospByInhospid" parameterType="Long">
-        delete from pat_med_inhosp where inhospid = #{inhospid}
+        delete
+        from pat_med_inhosp
+        where inhospid = #{inhospid}
     </delete>
 
     <delete id="deletePatMedInhospByInhospids" parameterType="String">
@@ -226,4 +282,100 @@
             #{inhospid}
         </foreach>
     </delete>
+
+    <select id="getDeptRanking" parameterType="com.smartor.domain.PatMedReq" resultType="com.smartor.domain.PatMedRes">
+        SELECT deptname, COUNT(1) AS rc
+        FROM (
+        <if test="mz != null">
+            SELECT deptname
+            FROM pat_med_outhosp
+            <where>
+                del_flag=0
+                <if test="deptcodeList != null">
+                    and deptcode in
+                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                        #{deptcode}
+                    </foreach>
+                </if>
+            </where>
+        </if>
+        <if test="mz != null and zy != null">
+            UNION ALL
+        </if>
+        <if test="zy != null">
+            SELECT deptname
+            FROM pat_med_inhosp
+            <where>
+                del_flag=0
+                and inhospstate=0
+                <if test="deptcodeList != null">
+                    and deptcode in
+                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                        #{deptcode}
+                    </foreach>
+                </if>
+            </where>
+        </if>
+        <if test="cy != null and zy != null">
+            UNION ALL
+            SELECT deptname
+            FROM pat_med_inhosp
+            <where>
+                del_flag=0
+                and inhospstate=1
+                <if test="deptcodeList != null">
+                    and deptcode in
+                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                        #{deptcode}
+                    </foreach>
+                </if>
+            </where>
+        </if>
+        <if test="mz != null and zy != null and cy==null">
+            UNION ALL
+            SELECT deptname
+            FROM pat_med_inhosp
+            <where>
+                del_flag=0
+                and inhospstate=1
+                <if test="deptcodeList != null">
+                    and deptcode in
+                    <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                        #{deptcode}
+                    </foreach>
+                </if>
+            </where>
+        </if>
+        ) AS combined
+        GROUP BY deptname;
+
+
+    </select>
+    <select id="selectPatMedInhospCount" parameterType="com.smartor.domain.PatMedReq"
+            resultType="com.smartor.domain.PatMedRes">
+        SELECT
+        COUNT(1) AS rc,
+        COUNT(DISTINCT patid) AS rs
+        FROM
+        pat_med_inhosp
+        <where>
+            del_flag=0
+            <if test="zy != null">
+                and inhospstate=0
+                and date_format(starttime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')
+                and date_format(starttime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
+            </if>
+            <if test="cy != null">
+                and inhospstate=1
+                and date_format(endtime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')
+                and date_format(endtime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
+            </if>
+            <if test="deptcodeList != null">
+                and deptcode in
+                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                    #{deptcode}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
index 688dfaf..3813194 100644
--- a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
@@ -192,4 +192,24 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectPatMedOuthospCount" parameterType="com.smartor.domain.PatMedReq"
+            resultType="com.smartor.domain.PatMedRes">
+        SELECT
+        COUNT(id) AS rc,
+        COUNT(DISTINCT patid) AS rs
+        FROM
+        pat_med_outhosp
+        <where>
+            del_flag=0
+            and date_format(admitdate,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')
+            and date_format(admitdate,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
+            <if test="deptcodeList != null">
+                and deptcode in
+                <foreach collection="deptcodeList" item="deptcode" open="(" separator="," close=")">
+                    #{deptcode}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 31dd9dc..b91d5d2 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -56,6 +56,15 @@
         <result property="libtemplateid" column="libtemplateid"/>
         <result property="openid" column="openid"/>
         <result property="longSendTime" column="long_send_time"/>
+        <result property="serviceType" column="service_type"/>
+        <result property="score" column="score"/>
+    </resultMap>
+
+    <resultMap type="com.smartor.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2">
+        <result property="month" column="month"/>
+        <result property="serviceType" column="service_type"/>
+        <result property="subTaskId" column="subTaskId"/>
+
     </resultMap>
 
     <sql id="selectServiceSubtaskVo">
@@ -63,9 +72,11 @@
                hosp_type,
                long_send_time,
                openid,
+               service_type,
                libtemplateid,
                libtemplatename,
                hospno,
+               score,
                phone,
                sex,
                age,
@@ -114,7 +125,7 @@
         from service_subtask
     </sql>
 
-    <select id="selectServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtask"
+    <select id="selectServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
             resultMap="ServiceSubtaskResult">
         <include refid="selectServiceSubtaskVo"/>
         <where>
@@ -123,6 +134,7 @@
             <if test="phone != null  and phone != ''">and phone = #{phone}</if>
             <if test="sex != null  and sex != ''">and sex = #{sex}</if>
             <if test="age != null ">and age = #{age}</if>
+            <if test="serviceType != null ">and service_type = #{serviceType}</if>
             <if test="patid != null ">and patid = #{patid}</if>
             <if test="sfzh != null  and sfzh != ''">and sfzh = #{sfzh}</if>
             <if test="addr != null  and addr != ''">and addr = #{addr}</if>
@@ -160,6 +172,9 @@
             <if test="openid != null ">and openid = #{openid}</if>
             <if test="longSendTime != null ">and long_send_time = #{longSendTime}</if>
             <if test="sendstate != null ">and sendstate = #{sendstate}</if>
+            <if test="score != null">
+                and score = #{score}
+            </if>
         </where>
         order by update_time desc,id desc
     </select>
@@ -223,7 +238,8 @@
             <if test="patid != null ">patid,</if>
             <if test="openid != null ">openid,</if>
             <if test="longSendTime != null ">long_send_time,</if>
-
+            <if test="serviceType != null ">service_type,</if>
+            <if test="score != null ">score,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="sendname != null">#{sendname},</if>
@@ -276,7 +292,8 @@
             <if test="patid != null ">#{patid},</if>
             <if test="openid != null ">#{openid},</if>
             <if test="longSendTime != null ">#{longSendTime},</if>
-
+            <if test="serviceType != null ">#{serviceType},</if>
+            <if test="score != null ">#{score},</if>
         </trim>
     </insert>
 
@@ -334,6 +351,8 @@
             <if test="openid != null ">openid = #{openid},</if>
             <if test="longSendTime != null ">long_send_time = #{longSendTime},</if>
             <if test="sendstate != null ">sendstate = #{sendstate},</if>
+            <if test="serviceType != null ">service_type = #{serviceType},</if>
+            <if test="score != null ">score = #{score},</if>
         </trim>
         where id = #{id}
     </update>
@@ -391,6 +410,9 @@
             <if test="patid != null ">patid = #{patid},</if>
             <if test="openid != null ">openid = #{openid},</if>
             <if test="longSendTime != null ">long_send_time = #{longSendTime},</if>
+            <if test="serviceType != null ">service_type = #{serviceType},</if>
+            <if test="score != null ">score = #{score},</if>
+
         </trim>
         where patid = #{patid} and taskid = #{taskid}
     </update>
@@ -460,7 +482,9 @@
                roomno,
                admindate,
                patid,
+               service_type,
                deptname,
+               score,
                diagname
         FROM service_subtask,
              JSON_TABLE(send_time_slot, '$[*]' COLUMNS (
@@ -472,5 +496,29 @@
           AND del_flag = 0
     </select>
 
+    <!--    鑾峰彇闅忚闂ㄨ瘖姣忔湀鐨勬暟閲�-->
+    <select id="getSfFzInfoEveryMonth" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
+            resultMap="ServiceSubtaskResult2">
+        SELECT DATE_FORMAT(st.finishtime, '%Y-%m') AS month,
+              st.service_type as service_type,
+		      st.id as subTaskId,
+    COUNT(*) AS count
+        FROM
+            service_subtask st
+            JOIN
+            sys_user_dept dd
+        ON dep.dept_id = dd.dept_id
+        WHERE
+            dd.user_id =#{userId}
+          AND st.finishtime IS NOT NULL
+          and DATE_FORMAT(st.finishtime
+            , '%Y-%m') &gt;= #{startTime}
+          and DATE_FORMAT(st.finishtime
+            , '%Y-%m') &lt;= #{endTime}
+        GROUP BY
+            month, st.service_type, st.id
+        ORDER BY
+            month, st.service_type, st.id;
+    </select>
 
 </mapper>
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml
index ec7a1dc..3610ac4 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceTaskMapper.xml
@@ -96,6 +96,7 @@
     <select id="selectServiceTaskList" parameterType="com.smartor.domain.ServiceTask" resultMap="ServiceTaskResult">
         <include refid="selectServiceTaskVo"/>
         <where>
+            del_flag=0
             <if test="taskName != null  and taskName != ''">and task_name like concat('%', #{taskName}, '%')</if>
             <if test="sendTimeSlot != null  and sendTimeSlot != ''">and send_time_slot like concat('%', #{sendTimeSlot},
                 '%')
diff --git a/smartor/src/main/resources/mapper/smartor/SvyLibScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyLibScriptMapper.xml
index 827c2ef..f04e25a 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyLibScriptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyLibScriptMapper.xml
@@ -135,7 +135,7 @@
             <if test="valueType != null and valueType!=''">value_type,</if>
             <if test="reply != null and reply!=''">otherdata,</if>
             <if test="scoretype != null and scoretype!=''">scoretype,</if>
-            <if test="score != null and score!=''">score,</if>
+            <if test="score != null ">score,</if>
             <if test="icd10Name != null and icd10Name!=''">icd10_name,</if>
             <if test="picturePath != null  and picturePath != ''">picture_path,</if>
             <if test="scriptTopic != null  and scriptTopic != ''">script_topic,</if>
@@ -168,7 +168,7 @@
             <if test="valueType != null and valueType!=''">#{valueType},</if>
             <if test="reply != null and reply!=''">#{therdata},</if>
             <if test="scoretype != null and scoretype!=''">#{scoretype},</if>
-            <if test="score != null and score!=''">#{score},</if>
+            <if test="score != null ">#{score},</if>
             <if test="icd10Name != null and icd10Name!=''">#{icd10Name},</if>
             <if test="picturePath != null  and picturePath != ''">#{picturePath},</if>
             <if test="scriptTopic != null  and scriptTopic != ''">#{scriptTopic},</if>
@@ -205,7 +205,7 @@
             <if test="valueType != null and valueType!=''">value_type = #{valueType},</if>
             <if test="reply != null and reply!=''">therdata =#{therdata},</if>
             <if test="scoretype != null and scoretype!=''">scoretype = #{scoretype},</if>
-            <if test="score != null and score!=''">score = #{score},</if>
+            <if test="score != null">score = #{score},</if>
             <if test="icd10Name != null and icd10Name!=''">icd10_name = #{icd10Name},</if>
             <if test="picturePath != null  and picturePath != ''">picture_path = #{picturePath},</if>
             <if test="scriptTopic != null  and scriptTopic != ''">script_topic = #{scriptTopic},</if>
diff --git a/smartor/src/main/resources/mapper/smartor/SvyLibTemplateMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyLibTemplateMapper.xml
index 58fa041..e348d2d 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyLibTemplateMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyLibTemplateMapper.xml
@@ -34,11 +34,17 @@
         <result property="reply" column="reply"/>
         <result property="scriptScore" column="script_score"/>
         <result property="scoreType" column="score_type"/>
+        <result property="prologue" column="prologue"/>
+        <result property="instruction" column="instruction"/>
+        <result property="conclusion" column="conclusion"/>
     </resultMap>
 
     <sql id="selectSvyLibTemplateVo">
         select svyid,
                categoryid,
+               instruction,
+               prologue,
+               conclusion,
                value_type,
                reply,
                score_type,
@@ -73,6 +79,9 @@
             resultMap="SvyLibTemplateResult">
         SELECT
         a.svyid,
+        a.conclusion,
+        a.instruction,
+        a.prologue,
         a.categoryid,
         a.svycode,
         a.svyname,
@@ -113,7 +122,7 @@
             <if test="categoryid != null ">and a.categoryid = #{categoryid}</if>
             <if test="svyid != null ">and a.svyid = #{svyid}</if>
             <if test="svyname != null  and svyname != ''">and a.svyname like concat('%', #{svyname}, '%')</if>
-            <if test="description != null  and description != ''">and  b.icd10name like concat('%', #{description}, '%')
+            <if test="description != null  and description != ''">and b.icd10name like concat('%', #{description}, '%')
             </if>
         </where>
         order by a.create_time desc
@@ -156,6 +165,9 @@
             <if test="reply != null">reply,</if>
             <if test="scriptScore != null">script_score,</if>
             <if test="scoreType != null">score_type,</if>
+            <if test="conclusion != null">conclusion,</if>
+            <if test="instruction != null">instruction,</if>
+            <if test="prologue != null">prologue,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="categoryid != null">#{categoryid},</if>
@@ -186,6 +198,9 @@
             <if test="reply != null">#{reply},</if>
             <if test="scriptScore != null">#{scriptScore},</if>
             <if test="scoreType != null">#{scoreType},</if>
+            <if test="conclusion != null">#{conclusion},</if>
+            <if test="instruction != null">#{instruction},</if>
+            <if test="prologue != null">#{prologue},</if>
         </trim>
     </insert>
 
@@ -220,6 +235,9 @@
             <if test="reply != null">reply = #{reply},</if>
             <if test="scriptScore != null">script_score = #{scriptScore},</if>
             <if test="scoreType != null">score_type = #{scoreType},</if>
+            <if test="conclusion != null">conclusion=#{conclusion},</if>
+            <if test="instruction != null">instruction=#{instruction},</if>
+            <if test="prologue != null">prologue=#{prologue},</if>
         </trim>
         where svyid = #{svyid}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/SvyLibTemplateScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyLibTemplateScriptMapper.xml
index 72dea58..7d84eb7 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyLibTemplateScriptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyLibTemplateScriptMapper.xml
@@ -44,6 +44,7 @@
         <result property="targetname" column="targetname"/>
         <result property="targettype" column="targettype"/>
         <result property="targetoptions" column="targetoptions"/>
+        <result property="prompt" column="prompt"/>
     </resultMap>
 
     <sql id="selectSvyLibTemplateScriptVo">
@@ -51,6 +52,8 @@
                script_type,
                targetid,
                targetname,
+               score,
+               prompt,
                targettype,
                targetoptions,
                scriptid,
@@ -80,7 +83,7 @@
                suitway,
                script_picture,
                script_topic,
-               isavailable, language, otherdata, value_type, reply, scoretype, score
+               isavailable, language, otherdata, value_type, reply, scoretype
         from svy_lib_template_script
     </sql>
 
@@ -103,6 +106,7 @@
             <if test="uploadTime != null ">and upload_time = #{uploadTime}</if>
             <if test="pid != null ">and pid = #{pid}</if>
             <if test="guid != null  and guid != ''">and guid = #{guid}</if>
+            <if test="prompt != null  and prompt != ''">and prompt = #{prompt}</if>
             <if test="categoryid != null ">and categoryid = #{categoryid}</if>
             <if test="scriptContent != null  and scriptContent != ''">and script_content = #{scriptContent}</if>
             <if test="suitway != null  and suitway != ''">and suitway = #{suitway}</if>
@@ -112,7 +116,6 @@
             <if test="valueType != null  and valueType != ''">and value_type = #{valueType}</if>
             <if test="reply != null  and reply != ''">and reply = #{reply}</if>
             <if test="scoretype != null  and scoretype != ''">and scoretype = #{scoretype}</if>
-            <if test="score != null  and score != ''">and score = #{score}</if>
             <if test="scriptTopic != null  and scriptTopic != ''">and script_topic = #{scriptTopic}</if>
             <if test="svyid != null  ">and svyid = #{svyid}</if>
             <if test="branchFlag != null  and branchFlag != ''">and branch_flag = #{branchFlag}</if>
@@ -123,6 +126,7 @@
             <if test="targetname != null  and targetname != ''">and targetname = #{targetname}</if>
             <if test="targettype != null  and targettype != ''">and targettype = #{targettype}</if>
             <if test="targetoptions != null  and targetoptions != ''">and targetoptions = #{targetoptions}</if>
+            <if test="score != null">and score = #{score}</if>
         </where>
     </select>
 
@@ -173,6 +177,7 @@
             <if test="targetname != null  and targetname != ''">targetname,</if>
             <if test="targettype != null  and targettype != ''">targettype,</if>
             <if test="targetoptions != null  and targetoptions != ''">targetoptions,</if>
+            <if test="prompt != null  and prompt != ''">prompt,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="nextScriptno != null">#{nextScriptno},</if>
@@ -213,6 +218,7 @@
             <if test="targetname != null  and targetname != ''">#{targetname},</if>
             <if test="targettype != null  and targettype != ''">#{targettype},</if>
             <if test="targetoptions != null  and targetoptions != ''">#{targetoptions},</if>
+            <if test="prompt != null  and prompt != ''">#{prompt},</if>
         </trim>
     </insert>
 
@@ -259,6 +265,7 @@
             <if test="targetname != null  and targetname != ''">targetname = #{targetname},</if>
             <if test="targettype != null  and targettype != ''">targettype = #{targettype},</if>
             <if test="targetoptions != null  and targetoptions != ''">targetoptions = #{targetoptions},</if>
+            <if test="prompt != null  and prompt != ''">prompt = #{prompt},</if>
         </trim>
         where id = #{id}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/SvyLibTemplateTargetoptionMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyLibTemplateTargetoptionMapper.xml
index 505218f..a2e5521 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyLibTemplateTargetoptionMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyLibTemplateTargetoptionMapper.xml
@@ -40,12 +40,14 @@
         <result property="appendflag" column="appendflag"/>
         <result property="appenddesc" column="appenddesc"/>
         <result property="optionNo" column="option_no"/>
+        <result property="prompt" column="prompt"/>
     </resultMap>
 
     <sql id="selectSvyLibTemplateTargetoptionVo">
         select id,
                groupid,
                score,
+               prompt,
                option_no,
                appendflag,
                appenddesc,
@@ -78,6 +80,7 @@
                 '%')
             </if>
             <if test="scriptid != null ">and scriptid = #{scriptid}</if>
+            <if test="prompt != null ">and prompt = #{prompt}</if>
             <if test="templateID != null ">and templateID = #{templateID}</if>
             <if test="targettype != null  and targettype != ''">and targettype = #{targettype}</if>
             <if test="targetid != null ">and targetid = #{targetid}</if>
@@ -101,7 +104,7 @@
             <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
             <if test="pid != null ">and pid = #{pid}</if>
             <if test="guid != null  and guid != ''">and guid = #{guid}</if>
-            <if test="score != null  and score != ''">and score = #{score}</if>
+            <if test="score != null">and score = #{score}</if>
             <if test="picturePath != null  and picturePath != ''">and picture_path = #{picturePath}</if>
             <if test="appendflag != null">and appendflag = #{appendflag}</if>
             <if test="appenddesc != null">and appenddesc = #{appenddesc}</if>
@@ -152,6 +155,7 @@
             <if test="appendflag != null">appendflag,</if>
             <if test="appenddesc != null">appenddesc,</if>
             <if test="optionNo != null">option_no,</if>
+            <if test="prompt != null">prompt,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="groupid != null">#{groupid},</if>
@@ -188,6 +192,7 @@
             <if test="appendflag != null">#{appendflag},</if>
             <if test="appenddesc != null">#{appenddesc},</if>
             <if test="optionNo != null">#{optionNo},</if>
+            <if test="prompt != null">#{prompt},</if>
         </trim>
     </insert>
 
@@ -228,6 +233,7 @@
             <if test="appendflag != null">appendflag = #{appendflag},</if>
             <if test="appenddesc != null">appenddesc = #{appenddesc},</if>
             <if test="optionNo != null">option_no = #{optionNo},</if>
+            <if test="prompt != null">prompt = #{prompt},</if>
         </trim>
         where id = #{id}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/SvyLibTopicCategoryMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyLibTopicCategoryMapper.xml
index 620c32f..c14ba52 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyLibTopicCategoryMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyLibTopicCategoryMapper.xml
@@ -113,7 +113,7 @@
     <update id="deleteSvyLibScriptCategoryById" parameterType="Long">
         update svy_lib_script_category
         <trim prefix="SET" suffixOverrides=",">
-            <if test="delFlag != null">del_flag = ,</if>
+            <if test="delFlag != null">del_flag = 1,</if>
         </trim>
         where id = #{id}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateScriptMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateScriptMapper.xml
index ec1c80a..1f9b4dd 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateScriptMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateScriptMapper.xml
@@ -40,14 +40,18 @@
         <result property="branchNextscriptno" column="branch_nextscriptno"/>
         <result property="targettype" column="targettype"/>
         <result property="targetname" column="targetname"/>
+        <result property="score" column="score"/>
+        <result property="prompt" column="prompt"/>
 
     </resultMap>
 
     <sql id="selectSvyTaskTemplateScriptVo">
         select id,
                sort,
+               prompt,
                branch_flag,
                branch_nextscriptno,
+               score,
                script_desc,
                targetname,
                targettype,
@@ -90,8 +94,10 @@
             <if test="picturePath != null  and picturePath != ''">and picture_path = #{picturePath}</if>
             <if test="scriptTopic != null  and scriptTopic != ''">and script_topic = #{scriptTopic}</if>
             <if test="branchFlag != null  and branchFlag != ''">and branch_flag = #{branchFlag}</if>
-            <if test="targetname != null  and targetname != ''">and targetname = #{branchFtargetnamelag}</if>
+            <if test="targetname != null  and targetname != ''">and targetname = #{targetname}</if>
             <if test="targettype != null  and targettype != ''">and targettype = #{targettype}</if>
+            <if test="score != null ">and score = #{score}</if>
+            <if test="prompt != null ">and prompt = #{prompt}</if>
             <if test="branchNextscriptno != null  and branchNextscriptno != ''">and branch_nextscriptno =
                 #{branchNextscriptno}
             </if>
@@ -104,7 +110,7 @@
     </select>
 
     <insert id="insertSvyTaskTemplateScript" parameterType="com.smartor.domain.SvyTaskTemplateScript"
-            useGeneratedKeys="true" keyProperty="ID">
+            useGeneratedKeys="true" keyProperty="id">
         insert into svy_task_template_script
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="taskid != null">taskid,</if>
@@ -141,6 +147,8 @@
             <if test="branchNextscriptno != null  and branchNextscriptno != ''">branch_nextscriptno,</if>
             <if test="targetname != null  and targetname != ''">targetname,</if>
             <if test="targettype != null  and targettype != ''">targettype,</if>
+            <if test="score != null ">score,</if>
+            <if test="prompt != null ">prompt,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="taskid != null">#{taskid},</if>
@@ -175,8 +183,10 @@
             <if test="scriptTopic != null">#{scriptTopic},</if>
             <if test="branchFlag != null  and branchFlag != ''">#{branchFlag},</if>
             <if test="branchNextscriptno != null  and branchNextscriptno != ''">#{branchNextscriptno},</if>
-            <if test="targetname != null  and targetname != ''">#{branchFtargetnamelag},</if>
+            <if test="targetname != null  and targetname != ''">#{targetname},</if>
             <if test="targettype != null  and targettype != ''">#{targettype},</if>
+            <if test="score != null ">#{score},</if>
+            <if test="prompt != null ">#{prompt},</if>
         </trim>
     </insert>
 
@@ -217,8 +227,10 @@
             <if test="branchNextscriptno != null  and branchNextscriptno != ''">branch_nextscriptno =
                 #{branchNextscriptno},
             </if>
-            <if test="targetname != null  and targetname != ''">targetname = #{branchFtargetnamelag},</if>
+            <if test="targetname != null  and targetname != ''">targetname = #{targetname},</if>
             <if test="targettype != null  and targettype != ''">targettype = #{targettype},</if>
+            <if test="score != null">score = #{score},</if>
+            <if test="prompt != null">prompt = #{prompt},</if>
         </trim>
         where id = #{d}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateTargetoptionMapper.xml b/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateTargetoptionMapper.xml
index f0cf721..e8dfe48 100644
--- a/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateTargetoptionMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/SvyTaskTemplateTargetoptionMapper.xml
@@ -40,11 +40,16 @@
         <result property="optionCode" column="option_code"/>
         <result property="appendflag" column="appendflag"/>
         <result property="appenddesc" column="appenddesc"/>
+        <result property="score" column="score"/>
+        <result property="score" column="score"/>
+        <result property="prompt" column="prompt"/>
     </resultMap>
 
     <sql id="selectSvyTaskTemplateTargetoptionVo">
         select id,
                option_code,
+               score,
+               prompt,
                appendflag,
                appenddesc,
                taskid,
@@ -65,6 +70,8 @@
         <include refid="selectSvyTaskTemplateTargetoptionVo"/>
         <where>
             <if test="taskid != null ">and taskid = #{taskid}</if>
+            <if test="score != null ">and score = #{score}</if>
+            <if test="prompt != null ">and prompt = #{prompt}</if>
             <if test="templateID != null ">and templateID = #{templateID}</if>
             <if test="targetid != null ">and targetid = #{targetid}</if>
             <if test="targetname != null  and targetname != ''">and targetname like concat('%', #{targetname}, '%')</if>
@@ -142,6 +149,8 @@
             <if test="optionCode != null">option_code,</if>
             <if test="appendflag != null">appendflag,</if>
             <if test="appenddesc != null">appenddesc,</if>
+            <if test="score != null">score,</if>
+            <if test="prompt != null">prompt,</if>
 
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -176,9 +185,11 @@
             <if test="dynamiccruxs != null">#{dynamiccruxsJson},</if>
             <if test="nextQuestion != null">#{nextQuestion},</if>
             <if test="picturePath != null">#{picturePath},</if>
-            <if test="optionCode != null">#{optionCode}</if>
-            <if test="appendflag != null">#{appendflag}</if>
-            <if test="appenddesc != null">#{appenddesc}</if>
+            <if test="optionCode != null">#{optionCode},</if>
+            <if test="appendflag != null">#{appendflag},</if>
+            <if test="appenddesc != null">#{appenddesc},</if>
+            <if test="score != null">#{score},</if>
+            <if test="prompt != null">#{prompt},</if>
 
         </trim>
     </insert>
@@ -220,6 +231,8 @@
             <if test="optionCode != null">option_code = #{optionCode},</if>
             <if test="appendflag != null">appendflag = #{appendflag},</if>
             <if test="appenddesc != null">appenddesc = #{appenddesc},</if>
+            <if test="score != null">score = #{score},</if>
+            <if test="prompt != null">score = #{prompt},</if>
         </trim>
         where id = #{id}
     </update>
diff --git a/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml b/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml
new file mode 100644
index 0000000..d1f1939
--- /dev/null
+++ b/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.smartor.mapper.SysUserDeptMapper">
+
+    <resultMap type="com.ruoyi.common.core.domain.entity.SysUserDept" id="SysUserDeptResult">
+        <result property="id" column="id"/>
+        <result property="userId" column="user_id"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <resultMap id="deptResult" type="com.ruoyi.common.core.domain.entity.SysDept">
+        <id property="deptId" column="dept_id"/>
+        <result property="parentId" column="parent_id"/>
+        <result property="deptName" column="dept_name"/>
+        <result property="ancestors" column="ancestors"/>
+        <result property="orderNum" column="order_num"/>
+        <result property="leader" column="leader"/>
+        <result property="status" column="dept_status"/>
+    </resultMap>
+
+    <sql id="selectSysUserDeptVo">
+        select id, user_id, dept_id, del_flag, create_time, update_time
+        from sys_user_dept
+    </sql>
+
+    <select id="selectSysUserDeptList" parameterType="com.ruoyi.common.core.domain.entity.SysUserDept"
+            resultMap="SysUserDeptResult">
+        <include refid="selectSysUserDeptVo"/>
+        <where>
+            <if test="userId != null ">
+                and user_id = #{userId}
+            </if>
+            <if test="deptId != null ">
+                and dept_id = #{deptId}
+            </if>
+            <if test="delFlag != null ">
+                and del_flag = #{delFlag}
+            </if>
+            <if test="createTime != null ">
+                and create_time = #{createTime}
+            </if>
+            <if test="updateTime != null ">
+                and update_time = #{updateTime}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectSysUserDeptById" parameterType="Long"
+            resultMap="SysUserDeptResult">
+        <include refid="selectSysUserDeptVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertSysUserDept" parameterType="com.ruoyi.common.core.domain.entity.SysUserDept"
+            useGeneratedKeys="true" keyProperty="id">
+        insert into sys_user_dept
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="userId != null">user_id,
+            </if>
+            <if test="deptId != null">dept_id,
+            </if>
+            <if test="delFlag != null ">
+                del_flag,
+            </if>
+            <if test="createTime != null ">
+                create_time,
+            </if>
+            <if test="updateTime != null ">
+                update_time,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="userId != null">#{userId},
+            </if>
+            <if test="deptId != null">#{deptId},
+            </if>
+            <if test="delFlag != null ">
+                #{delFlag},
+            </if>
+            <if test="createTime != null ">
+                #{createTime},
+            </if>
+            <if test="updateTime != null ">
+                #{updateTime},
+            </if>
+        </trim>
+    </insert>
+
+    <update id="updateSysUserDept" parameterType="com.ruoyi.common.core.domain.entity.SysUserDept">
+        update sys_user_dept
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="userId != null">user_id =
+                #{userId},
+            </if>
+            <if test="deptId != null">dept_id =
+                #{deptId},
+            </if>
+            <if test="delFlag != null ">
+                del_flag = #{delFlag},
+            </if>
+            <if test="createTime != null ">
+                create_time = #{createTime},
+            </if>
+            <if test="updateTime != null ">
+                update_time = #{updateTime},
+            </if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <update id="deleteSysUserDeptById" parameterType="Long">
+        update sys_user_dept
+        <trim prefix="SET" suffixOverrides=",">
+            del_flag =1
+        </trim>
+        where id = #{id}
+    </update>
+
+    <select id="selectDeptListByUserId" resultMap="deptResult">
+        select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status
+        from sys_dept d
+                 left join sys_user_dept ud on d.dept_id = ud.dept_id
+        where ud.user_id = #{userId}
+          and ud.del_flag = 0
+          and d.del_flag = 0
+    </select>
+    <update id="deleteSysUserDeptByIds" parameterType="String">
+        update sys_user_dept
+        <trim prefix="SET" suffixOverrides=",">
+            del_flag =1,
+            update_time = sysdate()
+        </trim>
+        where user_id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+
+</mapper>

--
Gitblit v1.9.3