From 9dd748e0352f31b6255be2860c177db0d20ac40e Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 21 十月 2025 14:41:35 +0800
Subject: [PATCH] Merge branch 'master' into 0929-master

---
 /dev/null                                                                          |   12 ---
 smartor/src/main/java/com/smartor/domain/ServiceSubtask.java                       |    3 
 ruoyi-admin/src/main/resources/application-hzszlyy.yml                             |    4 
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java              |   19 ++++
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java      |   21 ++++
 ruoyi-admin/pom.xml                                                                |    6 -
 ruoyi-admin/src/main/resources/application-druid.yml                               |   40 +++------
 smartor/src/main/java/com/smartor/domain/smsVO.java                                |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java |    9 ++
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                 |   10 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java       |   62 ++++++++++++--
 11 files changed, 130 insertions(+), 59 deletions(-)

diff --git "a/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_25_19_00_\133Changes\135/shelved.patch" "b/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_25_19_00_\133Changes\135/shelved.patch"
deleted file mode 100644
index 4292250..0000000
--- "a/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_25_19_00_\133Changes\135/shelved.patch"
+++ /dev/null
@@ -1,7361 +0,0 @@
-Index: ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.common.core.redis;\r\n\r\nimport java.util.*;\r\nimport java.util.concurrent.TimeUnit;\r\nimport java.util.stream.Collectors;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.data.redis.connection.DataType;\r\nimport org.springframework.data.redis.core.*;\r\nimport org.springframework.stereotype.Component;\r\n\r\n/**\r\n * spring redis 宸ュ叿绫籠r\n *\r\n * @author ruoyi\r\n **/\r\n@SuppressWarnings(value = {\"unchecked\", \"rawtypes\"})\r\n@Component\r\npublic class RedisCache {\r\n    @Autowired\r\n    public RedisTemplate redisTemplate;\r\n\r\n    /**\r\n     * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛塡r\n     *\r\n     * @param key   缂撳瓨鐨勯敭鍊糪r\n     * @param value 缂撳瓨鐨勫�糪r\n     */\r\n    public <T> void setCacheObject(final String key, final T value) {\r\n        redisTemplate.opsForValue().set(key, value);\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛塡r\n     *\r\n     * @param key      缂撳瓨鐨勯敭鍊糪r\n     * @param value    缂撳瓨鐨勫�糪r\n     * @param timeout  鏃堕棿\r\n     * @param timeUnit 鏃堕棿棰楃矑搴r\n     */\r\n    public <T> void setCacheObject(final String key, final T value, final long timeout, final TimeUnit timeUnit) {\r\n        redisTemplate.opsForValue().set(key, value, timeout, timeUnit);\r\n    }\r\n\r\n    /**\r\n     * 璁剧疆鏈夋晥鏃堕棿\r\n     *\r\n     * @param key     Redis閿甛r\n     * @param timeout 瓒呮椂鏃堕棿\r\n     * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触\r\n     */\r\n    public boolean expire(final String key, final long timeout) {\r\n        return expire(key, timeout, TimeUnit.SECONDS);\r\n    }\r\n\r\n    /**\r\n     * 璁剧疆鏈夋晥鏃堕棿\r\n     *\r\n     * @param key     Redis閿甛r\n     * @param timeout 瓒呮椂鏃堕棿\r\n     * @param unit    鏃堕棿鍗曚綅\r\n     * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触\r\n     */\r\n    public boolean expire(final String key, final long timeout, final TimeUnit unit) {\r\n        return redisTemplate.expire(key, timeout, unit);\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鏈夋晥鏃堕棿\r\n     *\r\n     * @param key Redis閿甛r\n     * @return 鏈夋晥鏃堕棿\r\n     */\r\n    public long getExpire(final String key) {\r\n        return redisTemplate.getExpire(key);\r\n    }\r\n\r\n    /**\r\n     * 鍒ゆ柇 key鏄惁瀛樺湪\r\n     *\r\n     * @param key 閿甛r\n     * @return true 瀛樺湪 false涓嶅瓨鍦╘r\n     */\r\n    public Boolean hasKey(String key) {\r\n        return redisTemplate.hasKey(key);\r\n    }\r\n\r\n    /**\r\n     * 鑾峰緱缂撳瓨鐨勫熀鏈璞°�俓r\n     *\r\n     * @param key 缂撳瓨閿�糪r\n     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁\r\n     */\r\n    public <T> T getCacheObject(final String key) {\r\n        ValueOperations<String, T> operation = redisTemplate.opsForValue();\r\n        return operation.get(key);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鍗曚釜瀵硅薄\r\n     *\r\n     * @param key\r\n     */\r\n    public boolean deleteObject(final String key) {\r\n        return redisTemplate.delete(key);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎闆嗗悎瀵硅薄\r\n     *\r\n     * @param collection 澶氫釜瀵硅薄\r\n     * @return\r\n     */\r\n    public boolean deleteObject(final Collection collection) {\r\n        return redisTemplate.delete(collection) > 0;\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨List鏁版嵁\r\n     *\r\n     * @param key      缂撳瓨鐨勯敭鍊糪r\n     * @param dataList 寰呯紦瀛樼殑List鏁版嵁\r\n     * @return 缂撳瓨鐨勫璞r\n     */\r\n    public <T> long setCacheListRight(final String key, final List<T> dataList) {\r\n        Long count = redisTemplate.opsForList().rightPushAll(key, dataList);\r\n        return count == null ? 0 : count;\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨List鏁版嵁\r\n     *\r\n     * @param key      缂撳瓨鐨勯敭鍊糪r\n     * @param dataList 寰呯紦瀛樼殑List鏁版嵁(杩欓噷濡傛灉鏂板鐨勮瘽锛屾槸寰�澶撮儴鏂板)\r\n     * @return 缂撳瓨鐨勫璞r\n     */\r\n    public <T> long setCacheListLeft(final String key, final List<T> dataList) {\r\n        Long count = redisTemplate.opsForList().leftPushAll(key, dataList);\r\n        return count == null ? 0 : count;\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨List鏁版嵁\r\n     *\r\n     * @param cacheKey 缂撳瓨鐨勯敭鍊糪r\n     * @param list     寰呯紦瀛樼殑List鏁版嵁(杩欓噷濡傛灉鏂板鐨勮瘽锛屾槸寰�澶撮儴鏂板)骞跺幓閲峔r\n     * @return 缂撳瓨鐨勫璞r\n     */\r\n    public void setCacheListLeftAndDistinct(String cacheKey, List<String> list) {\r\n        // 妫�鏌� key 绫诲瀷\r\n        DataType keyType = redisTemplate.type(cacheKey);\r\n        if (keyType != DataType.NONE && keyType != DataType.LIST) {\r\n            // 濡傛灉宸茬粡瀛樺湪浣嗕笉鏄� list 绫诲瀷锛屽垹闄ゅ畠锛堟垨鐩存帴鎶涘紓甯镐篃鍙級\r\n            redisTemplate.delete(cacheKey);\r\n        }\r\n\r\n        ListOperations<String, String> listOps = redisTemplate.opsForList();\r\n        List<String> existingValues = listOps.range(cacheKey, 0, -1);\r\n\r\n        List<String> newValues = list.stream().filter(value -> !existingValues.contains(value)).collect(Collectors.toList());\r\n\r\n        if (!newValues.isEmpty()) {\r\n            listOps.leftPushAll(cacheKey, newValues);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * 鑾峰緱缂撳瓨鐨刲ist瀵硅薄\r\n     *\r\n     * @param key 缂撳瓨鐨勯敭鍊糪r\n     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁\r\n     */\r\n    public <T> List<T> getCacheList(final String key) {\r\n        return redisTemplate.opsForList().range(key, 0, -1);\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨Set\r\n     *\r\n     * @param key     缂撳瓨閿�糪r\n     * @param dataSet 缂撳瓨鐨勬暟鎹甛r\n     * @return 缂撳瓨鏁版嵁鐨勫璞r\n     */\r\n    public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet) {\r\n        BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);\r\n        Iterator<T> it = dataSet.iterator();\r\n        while (it.hasNext()) {\r\n            setOperation.add(it.next());\r\n        }\r\n        return setOperation;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰緱缂撳瓨鐨剆et\r\n     *\r\n     * @param key\r\n     * @return\r\n     */\r\n    public <T> Set<T> getCacheSet(final String key) {\r\n        return redisTemplate.opsForSet().members(key);\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨Map\r\n     *\r\n     * @param key\r\n     * @param dataMap\r\n     */\r\n    public <T> void setCacheMap(final String key, final Map<String, T> dataMap) {\r\n        if (dataMap != null) {\r\n            redisTemplate.opsForHash().putAll(key, dataMap);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鎵�鏈塳ey\r\n     *\r\n     * @return\r\n     */\r\n    public Set<String> getAllKeys() {\r\n        return redisTemplate.keys(\"*\");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰緱缂撳瓨鐨凪ap\r\n     *\r\n     * @param key\r\n     * @return\r\n     */\r\n    public <T> Map<String, T> getCacheMap(final String key) {\r\n        return redisTemplate.opsForHash().entries(key);\r\n    }\r\n\r\n    /**\r\n     * 寰�Hash涓瓨鍏ユ暟鎹甛r\n     *\r\n     * @param key   Redis閿甛r\n     * @param hKey  Hash閿甛r\n     * @param value 鍊糪r\n     */\r\n    public <T> void setCacheMapValue(final String key, final String hKey, final T value) {\r\n        redisTemplate.opsForHash().put(key, hKey, value);\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇Hash涓殑鏁版嵁\r\n     *\r\n     * @param key  Redis閿甛r\n     * @param hKey Hash閿甛r\n     * @return Hash涓殑瀵硅薄\r\n     */\r\n    public <T> T getCacheMapValue(final String key, final String hKey) {\r\n        HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash();\r\n        return opsForHash.get(key, hKey);\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇澶氫釜Hash涓殑鏁版嵁\r\n     *\r\n     * @param key   Redis閿甛r\n     * @param hKeys Hash閿泦鍚圽r\n     * @return Hash瀵硅薄闆嗗悎\r\n     */\r\n    public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys) {\r\n        return redisTemplate.opsForHash().multiGet(key, hKeys);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎Hash涓殑鏌愭潯鏁版嵁\r\n     *\r\n     * @param key  Redis閿甛r\n     * @param hKey Hash閿甛r\n     * @return 鏄惁鎴愬姛\r\n     */\r\n    public boolean deleteCacheMapValue(final String key, final String hKey) {\r\n        return redisTemplate.opsForHash().delete(key, hKey) > 0;\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎缂撳瓨LIST涓殑鏌愪釜鏁版嵁\r\n     *\r\n     * @param key           Redis閿甛r\n     * @param valueToRemove 闇�瑕佸垹闄ょ殑鍊糪r\n     * @return Long 澶т簬0琛ㄧず鍒犻櫎浜嗗嚑涓紝绛変簬0琛ㄧず娌℃湁鍒犻櫎锛屽皬浜�0琛ㄧず鍦ㄦ墽琛屽垹闄ゆ搷浣滄椂鍙戠敓浜嗛敊璇痋r\n     */\r\n    public Long removeElementFromList(String key, String valueToRemove) {\r\n        ListOperations<String, String> listOps = redisTemplate.opsForList();\r\n        Long remove = listOps.remove(key, 0, valueToRemove);\r\n        return remove;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰緱缂撳瓨鐨勫熀鏈璞″垪琛╘r\n     *\r\n     * @param pattern 瀛楃涓插墠缂�\r\n     * @return 瀵硅薄鍒楄〃\r\n     */\r\n    public Collection<String> keys(final String pattern) {\r\n        return redisTemplate.keys(pattern);\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
---- a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java	(date 1758797042805)
-@@ -30,6 +30,10 @@
-         redisTemplate.opsForValue().set(key, value);
-     }
- 
-+    public <T> void setCacheList(final String key, final List<T> values) {
-+        redisTemplate.opsForList().rightPushAll(key, values);
-+    }
-+
-     /**
-      * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛�
-      *
-@@ -299,4 +303,13 @@
-     public Collection<String> keys(final String pattern) {
-         return redisTemplate.keys(pattern);
-     }
-+
-+    /**
-+     * 鑾峰彇褰撳墠key鍊肩殑鏁伴噺
-+     * @param key
-+     * @return
-+     */
-+    public Long getListSize(String key) {
-+        return redisTemplate.opsForList().size(key);
-+    }
- }
-Index: ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.quartz.task;\r\n\r\nimport com.alibaba.fastjson2.JSONObject;\r\nimport com.fasterxml.jackson.databind.JsonNode;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.enums.MsgLSEnum;\r\nimport com.ruoyi.common.enums.ServiceFromEnum;\r\nimport com.ruoyi.common.enums.VisitSendStateEnum;\r\nimport com.ruoyi.common.enums.WxGZHEnum;\r\nimport com.ruoyi.common.utils.HttpUtil;\r\nimport com.ruoyi.common.utils.OkHttpExample;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.http.HttpUtils;\r\nimport com.ruoyi.common.utils.sms.smsUtils;\r\nimport com.ruoyi.quartz.service.ICollectHISService;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.smartor.common.LSHospTokenUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.HeLibraryMapper;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport com.smartor.mapper.ServiceTaskMapper;\r\nimport com.smartor.mapper.SysUserImportMapper;\r\nimport com.smartor.service.*;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Component;\r\n\r\nimport java.io.IOException;\r\nimport java.net.URLEncoder;\r\nimport java.nio.charset.StandardCharsets;\r\nimport java.nio.file.Files;\r\nimport java.nio.file.Paths;\r\nimport java.security.MessageDigest;\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.time.LocalTime;\r\nimport java.time.ZoneId;\r\nimport java.time.format.DateTimeFormatter;\r\nimport java.util.*;\r\nimport java.util.stream.Collectors;\r\n\r\nimport static cn.hutool.core.convert.Convert.toHex;\r\n\r\n/**\r\n * 瀹氭椂浠诲姟璋冨害娴嬭瘯\r\n *\r\n * @author ruoyi\r\n */\r\n@Slf4j\r\n@Component(\"ryTask\")\r\npublic class RyTask {\r\n    @Autowired\r\n    private IServiceThirdDataService iServiceThirdDataService;\r\n\r\n    @Autowired\r\n    private IServiceOutPathService iServiceOutPathService;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskAnswerService serviceSubtaskAnswerService;\r\n\r\n    @Autowired\r\n    private IPatMedInhospService iPatMedInhospService;\r\n\r\n    @Autowired\r\n    private IPatMedOuthospService iPatMedOuthospService;\r\n\r\n    @Autowired\r\n    private IPatMedOperationService iPatMedOperationService;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskService iServiceSubtaskService;\r\n\r\n    @Autowired\r\n    private IServicePatientTempService iServicePatientTempService;\r\n\r\n    @Autowired\r\n    private IHNGatherPatArchiveService ihnGatherPatArchiveService;\r\n\r\n    @Autowired\r\n    private SysUserImportMapper sysUserImportMapper;\r\n\r\n    @Autowired\r\n    private HeLibraryMapper heLibraryMapper;\r\n\r\n    @Autowired\r\n    private ICollectHISService ichService;\r\n\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n\r\n    @Value(\"${localIP}\")\r\n    private String localIP;\r\n\r\n    @Value(\"${xhsmsPath}\")\r\n    private String xhsmsPath;\r\n\r\n    @Value(\"${xhsmsAccount}\")\r\n    private String xhsmsAccount;\r\n\r\n    @Value(\"${xhsmsPwd}\")\r\n    private String xhsmsPwd;\r\n\r\n    @Value(\"${pub_key}\")\r\n    private String pub_key;\r\n\r\n    @Value(\"${req_path}\")\r\n    private String req_path;\r\n\r\n    @Value(\"${visitHosp}\")\r\n    private Integer visitHosp;\r\n\r\n    @Autowired\r\n    private ServiceTaskMapper serviceTaskMapper;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskRecordService serviceSubtaskRecordService;\r\n\r\n    @Autowired\r\n    IBaseSmsaccountService baseSmsaccountService;\r\n\r\n    @Autowired\r\n    IPatArchiveService patArchiveService;\r\n\r\n\r\n    @Autowired\r\n    IPatMedOuthospService patMedOuthospService;\r\n\r\n    @Autowired\r\n    ISvyTaskTemplateService svyTaskTemplateService;\r\n\r\n    @Autowired\r\n    IIvrTaskTemplateService iIvrTaskTemplateService;\r\n\r\n    @Autowired\r\n    IXHGatherPatArchiveService ixhGatherPatArchiveService;\r\n\r\n    @Autowired\r\n    ICollectHISService icollectHis;\r\n\r\n\r\n    @Value(\"${appid}\")\r\n    private String appid;\r\n\r\n    @Value(\"${server.port}\")\r\n    private String port;\r\n\r\n\r\n    @Value(\"${spring.profiles.active}\")\r\n    private String active;\r\n\r\n    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {\r\n        System.out.println(StringUtils.format(\"鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}\", s, b, l, d, i));\r\n    }\r\n\r\n    public void ryParams(String params) {\r\n        System.out.println(\"鎵ц鏈夊弬鏂规硶锛歕" + params);\r\n    }\r\n\r\n    public void ryNoParams() {\r\n        System.out.println(\"鎵ц鏃犲弬鏂规硶\");\r\n    }\r\n\r\n    public void importData() {\r\n        String filePath = \"C:\\\\Users\\\\86176\\\\Desktop\\\\鏂板缓鏂囨湰鏂囨。 4.txt\"; // 鏇挎崲涓轰綘鐨勬枃浠惰矾寰刓r\n\r\n        try {\r\n            // 璇诲彇鏂囦欢鍐呭\r\n            String jsonContent = new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);\r\n\r\n            // 鍒涘缓ObjectMapper瀵硅薄\r\n            ObjectMapper objectMapper = new ObjectMapper();\r\n            // 瑙f瀽JSON涓篔sonNode\r\n            JsonNode rootNode = objectMapper.readTree(jsonContent);\r\n            // 鑾峰彇resultList\r\n            JsonNode resultListNode = rootNode.path(\"results\").path(\"resultList\");\r\n            // 閬嶅巻resultList涓殑姣忎釜瀵硅薄\r\n            for (JsonNode item : resultListNode) {\r\n\r\n                SysUserImport person = objectMapper.treeToValue(item, SysUserImport.class);\r\n                person.setStaffPhoto(\"\");\r\n                sysUserImportMapper.insertSysUserImport(person);\r\n\r\n            }\r\n\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n    }\r\n\r\n    public void analysisData() {\r\n        System.out.println(\"---------------------------\");\r\n        //鏁版嵁瑙f瀽\r\n        ServiceThirdData serviceThirdData = new ServiceThirdData();\r\n        serviceThirdData.setDataType(\"ADT^A03\");\r\n        serviceThirdData.setIsDeal(0);\r\n        serviceThirdData.setCreateTime(new Date());\r\n        iServiceThirdDataService.queryList(serviceThirdData);\r\n\r\n    }\r\n\r\n    /**\r\n     * 瀹氭椂澶勭悊澶栭摼鐨勬暟鎹甛r\n     */\r\n    public void runServiceSubTaskAnswer() {\r\n        serviceSubtaskAnswerService.saveQuestionAnswer(null, 0L);\r\n    }\r\n\r\n\r\n    /**\r\n     * 澶勭悊HIS鏁版嵁閲囬泦\r\n     * 瀹氭椂浠诲姟锛氶噰闆嗘偅鑰呬俊鎭�佸嚭闄€�侀棬璇婃暟鎹甛r\n     */\r\n    public void dealHisData() {\r\n        log.info(\"銆恉ealHisData銆戝紑濮嬫墽琛孒IS鏁版嵁閲囬泦浠诲姟\");\r\n        // 鑾峰彇鏄ㄥぉ0鐐瑰埌浠婂ぉ0鐐圭殑鏃堕棿鑼冨洿\r\n        LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN);\r\n        LocalDateTime yesterdayZero = todayZero.minusDays(1);\r\n        log.info(\"銆恉ealHisData銆戦噰闆嗘椂闂磋寖鍥达細{} ~ {}\", yesterdayZero, todayZero);\r\n\r\n        if (active.trim().equals(\"xh\")) {\r\n            try {\r\n                // 閲囬泦鍏ラ櫌鏁版嵁\r\n                log.info(\"銆恉ealHisData銆戞柊鍗庡紑濮嬮噰闆嗗叆闄㈡暟鎹甛");\r\n                ixhGatherPatArchiveService.getInHospDataGather(\"0\", yesterdayZero, todayZero);\r\n                log.info(\"銆恉ealHisData銆戞柊鍗庡叆闄㈡暟鎹噰闆嗗畬鎴怽");\r\n\r\n                // 閲囬泦鍑洪櫌鏁版嵁\r\n                log.info(\"銆恉ealHisData銆戞柊鍗庡紑濮嬮噰闆嗗嚭闄㈡暟鎹甛");\r\n                ixhGatherPatArchiveService.getInHospDataGather(\"1\", yesterdayZero, todayZero);\r\n                log.info(\"銆恉ealHisData銆戞柊鍗庡嚭闄㈡暟鎹噰闆嗗畬鎴怽");\r\n\r\n            } catch (Exception e) {\r\n                log.error(\"銆恉ealHisData銆戞柊鍗庢暟鎹噰闆嗗紓甯竆", e);\r\n            }\r\n        } else if (active.trim().equals(\"hn\")) {\r\n            try {\r\n                // 娌冲崡鏁版嵁閲囬泦\r\n                HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();\r\n                log.info(\"銆恉ealHisData銆戞渤鍗楀紑濮嬮噰闆嗘暟鎹甛");\r\n                ihnGatherPatArchiveService.hnDataGather(hnDataGatherVO);\r\n                log.info(\"銆恉ealHisData銆戞渤鍗楃粨鏉熼噰闆嗘暟鎹甛");\r\n            } catch (Exception e) {\r\n                log.error(\"銆恉ealHisData銆戞渤鍗楁暟鎹噰闆嗗紓甯竆", e);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 杩欎釜鍙槸鏂板崕涓存椂浣跨敤锛屽钩鏃剁敤涓嶅埌\r\n     */\r\n    public void dealHisData2() {\r\n        //灏嗘偅鑰呬俊鎭�佸嚭鍏ラ櫌鏁版嵁鍏ㄩ儴閲囬泦\r\n        // 鎸囧畾鐨勫紑濮嬫棩鏈焅r\n        LocalDate endDate = LocalDate.of(2025, 3, 3);\r\n        // 褰撳墠鏃ユ湡\r\n        LocalDate currentDate = LocalDate.now();\r\n        // 瀹氫箟鏃ユ湡鏍煎紡\r\n        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(\"yyyy-MM-dd \");\r\n\r\n        // 浠庡紑濮嬫棩鏈熷埌褰撳墠鏃ユ湡閫愬ぉ鎵撳嵃\r\n        for (LocalDate date = endDate; !date.isAfter(currentDate); date = date.plusDays(1)) {\r\n            System.out.println(date.format(formatter));\r\n            ixhGatherPatArchiveService.getInHospDataGather(\"0\", date.minusDays(1).atStartOfDay(), date.atStartOfDay());\r\n            ixhGatherPatArchiveService.getInHospDataGather(\"1\", date.minusDays(1).atStartOfDay(), date.atStartOfDay());\r\n        }\r\n\r\n    }\r\n\r\n    /**\r\n     * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃\r\n     */\r\n    public void dealOutHospInfo() {\r\n        if (port.equals(\"8095\")) {\r\n            //鍑洪櫌琛╘r\n            iPatMedInhospService.dealOutHospInfo();\r\n            //闂ㄨ瘖琛╘r\n            if (visitHosp != 1) {\r\n                iPatMedOuthospService.dealOutpatientInfo();\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * 澶勭悊鎵嬫湳淇℃伅锛岃繘鍏ュ瓙浠诲姟琛╘r\n     */\r\n    public void dealOperationInfo() {\r\n        if (port.equals(\"8095\")) iPatMedOperationService.dealOperationInfo();\r\n\r\n    }\r\n\r\n    /**\r\n     * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃(寰俊灏忕▼搴�)\r\n     */\r\n    public void dealOutHospInfoXHC() {\r\n        if (port.equals(\"8095\")) {\r\n            PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n            //鑾峰彇鏈鐞嗙殑鏁版嵁\r\n            List<ServicePatientTemp> servicePatientTemps = iServicePatientTempService.selectServicePatientTempList(new ServicePatientTemp());\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * 闀挎湡浠诲姟鎵ц\r\n     */\r\n    public void longTaskSend() {\r\n        //鑾峰彇浠诲姟淇℃伅\r\n        ServiceTask st = new ServiceTask();\r\n        st.setDelFlag(\"0\");\r\n        st.setLongTask(1);\r\n        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);\r\n        log.info(\"銆恖ongTaskSend銆戣幏鍙栧埌{}涓暱鏈熶换鍔", serviceTasks.size());\r\n        for (ServiceTask serviceTask : serviceTasks) {\r\n            CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ();\r\n            commonTaskcallMQ.setTaskid(serviceTask.getTaskid());\r\n            commonTaskcallMQ.setPreachform(serviceTask.getPreachform());\r\n            commonTaskcallMQ.setSendType(\"2\");\r\n            sfHandlle(commonTaskcallMQ, localIP);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鍒ゆ柇鏃ユ湡鏄惁鏄粖澶‐r\n     *\r\n     * @param date\r\n     * @return\r\n     */\r\n    public boolean isDateToday(Date date) {\r\n        if (date == null) {\r\n            return false;\r\n        }\r\n        // 灏� Date 杞负 LocalDate\r\n        LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();\r\n        // 鑾峰彇浠婂ぉ鐨� LocalDate\r\n        LocalDate today = LocalDate.now();\r\n        // 濡傛灉鏃ユ湡鏃╀簬鎴栫瓑浜庝粖澶╋紝杩斿洖 true\r\n        return !localDate.isAfter(today);\r\n    }\r\n\r\n    public void sfHandlle(CommonTaskcallMQ commonTaskcallMQ, String ip) {\r\n        log.info(\"銆恠fHandlle銆戝紑濮嬪鐞嗕换鍔★紝浠诲姟ID锛歿}\", commonTaskcallMQ.getTaskid());\r\n        //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜哱r\n        ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());\r\n\r\n        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {\r\n            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖\r\n            String[] split = commonTaskcallMQ.getPreachform().split(\",\");\r\n            log.info(\"銆恠fHandlle銆戜换鍔″彂閫佹柟寮忥細{}\", Arrays.toString(split));\r\n            for (String serviceFrom : split) {\r\n                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));\r\n                //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭痋r\n                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();\r\n                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());\r\n                ivrTaskcall.setSendstate(2L);\r\n                List<ServiceSubtask> subtaskList = iServiceSubtaskService.selectServiceSubtaskList(ivrTaskcall);\r\n                //涓芥按鏈夌殑鍖婚櫌杩樻病娉曞仛闀挎湡浠诲姟闅忚\r\n                List<ServiceSubtask> subtaskList2 = new ArrayList<>();\r\n                if (visitHosp == 2) {\r\n                    try {\r\n                        for (ServiceSubtask serviceSubtask : subtaskList) {\r\n                            Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid());\r\n\r\n                            if (b) subtaskList2.add(serviceSubtask);\r\n                        }\r\n                    } catch (Exception e) {\r\n                        log.error(\"-------闀挎湡浠诲姟寮傚父涓猴細\", e);\r\n                        continue;\r\n                    }\r\n//                    for (ServiceSubtask serviceSubtask : subtaskList) {\r\n//                        Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid());\r\n//\r\n//                        if (b) subtaskList2.add(serviceSubtask);\r\n//                    }\r\n                    subtaskList = subtaskList2;\r\n                }\r\n\r\n                // 鎸夌収 endtime 绂诲綋鍓嶆椂闂存渶杩戠殑鎺掑簭\r\n                List<ServiceSubtask> selectServiceSubtaskList = subtaskList.stream().sorted(Comparator.comparing(subtask -> Math.abs(subtask.getEndtime().getTime() - new Date().getTime()))).collect(Collectors.toList());\r\n\r\n                if (descByCode.equals(\"鐢佃瘽\")) {\r\n                    String value = \"\";\r\n                    List<String> list = new ArrayList<>();\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        ServiceTask ivrTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                        if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {\r\n                            //濡備綍浠诲姟琚玕"鏆傚仠\"鎴朶"缁堟\"\r\n                            break;\r\n                        }\r\n                        if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {\r\n                            serviceSubtask.setRemark(\"鎵嬫満鍙蜂负绌篭");\r\n                            serviceSubtask.setSendstate(4L);\r\n                            serviceSubtask.setResult(\"error\");\r\n//                            serviceSubtask.setFinishtime(new Date());\r\n                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n                            continue;\r\n                        }\r\n                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());\r\n                        //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝   displayNo涓嶇煡閬撴�庝箞閰嶇疆)\r\n                        if (dateToday) {\r\n                            list.add(serviceSubtask.getId().toString());\r\n                            //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓媆r\n                            String uuid = UUID.randomUUID().toString();\r\n                            serviceSubtask.setResult(\"success\");\r\n                            serviceSubtask.setRemark(\"闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔焅");\r\n                            serviceSubtask.setGuid(uuid);\r\n                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                            //浠诲姟鍙戦�佽褰昞r\n                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                            serviceSubtaskRecord.setUuid(uuid);\r\n                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                            serviceSubtaskRecord.setPreachform(\"3\");\r\n                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                            serviceSubtaskRecord.setRemark(\"闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔焅");\r\n                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n\r\n                        }\r\n                    }\r\n                    //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑\r\n                    if (list.size() > 0) {\r\n//                        redisCache.setCacheListLeft(\"cache-0\", list);\r\n                        redisCache.setCacheListLeftAndDistinct(\"cache-0\", list);\r\n                        log.info(\"銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}\", list.size());\r\n                    }\r\n                } else if (descByCode.equals(\"澶氬獟浣揬")) {\r\n                    //澶氬獟浣揬r\n                } else if (descByCode.equals(\"绾歌川\")) {\r\n                    //绾歌川\r\n                } else if (descByCode.equals(\"寰俊灏忕▼搴廫")) {\r\n                    //寰俊灏忕▼搴廫r\n                    log.info(\"銆恠fHandlle銆戝鐞嗗井淇″皬绋嬪簭浠诲姟锛屼换鍔′俊鎭細{}\", ivrTask1);\r\n                    if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {\r\n                        //璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨刓r\n                        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n                        serviceSubtaskVO.setTaskid(ivrTask1.getTaskid());\r\n                        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n                        //杩欓噷闇�瑕佹牴鎹韩浠借瘉鍘婚噸\r\n                        List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>();\r\n                        aa:\r\n                        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                            for (ServiceSubtask ss : serviceSubtaskListFilter) {\r\n                                if (ss.getSfzh().equals(serviceSubtask.getSfzh())) {\r\n                                    continue aa;\r\n                                }\r\n                            }\r\n                            serviceSubtaskListFilter.add(serviceSubtask);\r\n                        }\r\n                        for (ServiceSubtask serviceSubtask : serviceSubtaskListFilter) {\r\n                            //灏嗗瓙浠诲姟ID鍒犻櫎 銆乻endstate鏀规垚3\r\n                            serviceSubtask.setSendstate(3L);\r\n                            serviceSubtask.setId(null);\r\n                            serviceSubtask.setFinishtime(null);\r\n                            serviceSubtask.setCreateTime(new Date());\r\n                            serviceSubtask.setUpdateTime(new Date());\r\n                            //澶勭悊閲嶅鏂板闂锛屽厛鏌ヤ竴涓嬩粖澶╂槸涓嶆槸鏈夋柊澧炶繃锛屾柊澧炶繃灏变笉鏂板浜哱r\n                            ServiceSubtaskVO ssvo = new ServiceSubtaskVO();\r\n                            LocalDate today = LocalDate.now();\r\n                            LocalTime startOfDay = LocalTime.of(0, 0, 0);\r\n                            LocalTime endOfDay = LocalTime.of(23, 59, 59);\r\n                            Date startOfDayDate = Date.from(today.atTime(startOfDay).atZone(ZoneId.systemDefault()).toInstant());\r\n                            Date endOfDayDate = Date.from(today.atTime(endOfDay).atZone(ZoneId.systemDefault()).toInstant());\r\n                            ssvo.setCreateStartTime(startOfDayDate);\r\n                            ssvo.setCreateEndTime(endOfDayDate);\r\n                            ssvo.setCreateBy(serviceSubtask.getCreateBy());\r\n                            ssvo.setSendname(serviceSubtask.getSendname());\r\n                            ssvo.setSfzh(serviceSubtask.getSfzh());\r\n                            List<ServiceSubtask> serviceSubtaskListByCreateTime = serviceSubtaskMapper.selectServiceSubtaskListByCreateTime(ssvo);\r\n                            if (CollectionUtils.isEmpty(serviceSubtaskListByCreateTime))\r\n                                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n                        }\r\n                    }\r\n                } else if (descByCode.equals(\"鐭俊\")) {\r\n                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        log.info(\"銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}\", serviceSubtask.getPatid());\r\n                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());\r\n                        if (dateToday) {\r\n                            try {\r\n                                //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦�乗r\n                                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());\r\n                                if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == \"1\") {\r\n                                    //涓嶉渶瑕佸彂閫乗r\n                                    serviceSubtask.setResult(\"error\");\r\n                                    serviceSubtask.setRemark(patArchive.getNotrequiredreason());\r\n                                    serviceSubtask.setSendstate(4L);\r\n                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);\r\n                                    continue;\r\n                                }\r\n                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);\r\n                                String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);\r\n                                SendMagParam sendMagParam = new SendMagParam();\r\n                                sendMagParam.setType(\"4\");\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setParam3(ivrTask1.getTaskName());\r\n                                serviceOutPath.setParam6(subId);\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                //鍏堝垽鏂竴涓嬪彂鐨勬槸涓嶆槸瀹f暀\r\n                                if (!\"3\".equals(serviceSubtask.getType())) {\r\n                                    sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                    sendMagParam.setUrl(ip + \":\" + req_path + \"/wt?p=\" + format);\r\n                                    sendMagParam.setContent(\"銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"濉啓銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                } else {\r\n                                    HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());\r\n                                    if (\"2\".equals(heLibrary.getHetype())) {\r\n                                        sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                        sendMagParam.setContent(heLibrary.getPreachcontent());\r\n                                    }\r\n                                }\r\n                                String isSuccess = null;\r\n                                if (visitHosp == 1) {\r\n                                    Map<String, String> req = new HashMap<>();\r\n                                    req.put(\"phone\", sendMagParam.getPhone());\r\n                                    req.put(\"content\", sendMagParam.getContent());\r\n                                    isSuccess = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));\r\n                                } else if (visitHosp == 2) {\r\n                                    String url = configService.selectConfigByKey(\"token.360\",serviceSubtask.getOrgid());\r\n                                    //涓芥按鐨勭煭淇″彂閫佹柟寮廫r\n                                    Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());\r\n                                    String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(),url);\r\n                                    if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get(\"address\"))) {\r\n                                        ServiceSubtask ss = new ServiceSubtask();\r\n                                        ss.setResult(\"error\");\r\n                                        ss.setRemark(\"鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�\");\r\n                                        ss.setSendstate(5L);\r\n                                        ss.setId(serviceSubtask.getId());\r\n//                                        ss.setFinishtime(new Date());\r\n                                        serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                        continue;\r\n                                    }\r\n                                    log.info(\"銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}\", map.get(\"address\"), sendMagParam, serviceSubtask.getOrgid());\r\n                                    String dxCode = getDXCode(map.get(\"address\"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get(\"sendPersonId\"), map.get(\"sendPersonName\"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);\r\n                                    log.info(\"銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}\", dxCode);\r\n                                    ObjectMapper objectMapper = new ObjectMapper();\r\n                                    Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);\r\n                                    String code = textParam.get(\"Code\").toString();\r\n                                    if (code.equals(\"0\")) {\r\n                                        isSuccess = \"true\";\r\n                                    }\r\n                                }else if (visitHosp == 3) {//甯備竴鍖婚櫌\r\n                                    String content=sendMagParam.getContent().replace(\"銆愭柊鍗庡尰闄€�慭",\"\");\r\n                                    smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,sendMagParam.getPhone(),content);\r\n                                }\r\n                                //浠诲姟鍙戦�佽褰昞r\n                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                                serviceSubtaskRecord.setPreachform(\"4\");\r\n                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                                serviceSubtaskRecord.setResult(\"success\");\r\n                                if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals(\"true\"))\r\n                                    serviceSubtaskRecord.setResult(\"error\");\r\n                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n\r\n                                //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬乗r\n                                serviceSubtask.setSendstate(3L);\r\n                                if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals(\"true\")) {\r\n                                    serviceSubtask.setResult(\"success\");\r\n                                    serviceSubtask.setRemark(\"鐭俊鍙戦�佹垚鍔焅");\r\n                                } else {\r\n                                    serviceSubtask.setResult(\"error\");\r\n                                    serviceSubtask.setSendstate(5L);\r\n                                    serviceSubtask.setRemark(\"鐭俊鍙戦�佸け璐");\r\n                                }\r\n                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);\r\n                            } catch (Exception e) {\r\n                                String guid = UUID.randomUUID().toString();\r\n                                log.error(\"銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}\", e.getMessage(), guid);\r\n                                serviceSubtask.setResult(\"error\");\r\n                                serviceSubtask.setRemark(\"绯荤粺閿欒\");\r\n                                serviceSubtask.setSendstate(5L);\r\n                                serviceSubtask.setGuid(guid);\r\n                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);\r\n                            }\r\n                        }\r\n                    }\r\n                } else if (descByCode.equals(\"鍏紬鍙穃")) {\r\n                    log.info(\"銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}\", ivrTask1);\r\n                    //鍏紬鍙穃r\n                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());\r\n                        if (dateToday) {\r\n                            try {\r\n                                //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦�乗r\n                                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());\r\n                                if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == \"1\") {\r\n                                    //涓嶉渶瑕佸彂閫乗r\n                                    serviceSubtask.setResult(\"error\");\r\n                                    serviceSubtask.setRemark(patArchive.getNotrequiredreason());\r\n                                    serviceSubtask.setSendstate(4L);\r\n                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);\r\n                                    continue;\r\n                                }\r\n                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);\r\n                                String url = null;\r\n                                url = ip + \":\" + req_path + \"/outsideChainwt?param1=\" + taskId + \"&param2=\" + patid + \"&param3=\" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + \"&param5=false\";\r\n\r\n                                //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D\r\n                                List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());\r\n                                if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {\r\n                                    ServiceSubtask ss = new ServiceSubtask();\r\n                                    ss.setResult(\"error\");\r\n                                    ss.setRemark(\"璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫乗");\r\n                                    ss.setSendstate(5L);\r\n                                    ss.setId(serviceSubtask.getId());\r\n                                    serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                    continue;\r\n                                }\r\n\r\n                                if (StringUtils.isEmpty(patArchive.getPatidHis())) {\r\n                                    ServiceSubtask ss = new ServiceSubtask();\r\n                                    ss.setResult(\"error\");\r\n                                    ss.setRemark(\"鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖\");\r\n                                    ss.setSendstate(5L);\r\n                                    ss.setId(serviceSubtask.getId());\r\n                                    serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                    continue;\r\n                                }\r\n                                String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx);\r\n\r\n                                Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);\r\n                                //浠诲姟鍙戦�佽褰昞r\n                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                                serviceSubtaskRecord.setPreachform(\"4\");\r\n                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                                serviceSubtaskRecord.setResult(\"success\");\r\n                                if (!map.isEmpty() && (Boolean) map.get(\"succ\") == false)\r\n                                    serviceSubtaskRecord.setResult(\"error\");\r\n                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n\r\n                                //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬乗r\n                                serviceSubtask.setSendstate(3L);\r\n                                if ((Boolean) map.get(\"succ\") == true) {\r\n                                    serviceSubtask.setResult(\"success\");\r\n                                } else {\r\n                                    log.error(\"銆恠fHandlle銆戝叕浼楀彿鍙戦�佸け璐ワ紝鎮h�呬俊鎭細{}锛岄敊璇俊鎭細{}\", serviceSubtask, map.get(\"msg\"));\r\n                                    serviceSubtask.setResult(\"error\");\r\n                                    serviceSubtask.setSendstate(5L);\r\n                                    serviceSubtask.setRemark(map.get(\"msg\").toString());\r\n                                }\r\n                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);\r\n                            } catch (Exception e) {\r\n                                String guid = UUID.randomUUID().toString();\r\n                                log.error(\"銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}\", e.getMessage(), guid);\r\n                                serviceSubtask.setResult(\"error\");\r\n                                serviceSubtask.setRemark(\"绯荤粺閿欒\");\r\n                                serviceSubtask.setSendstate(5L);\r\n                                serviceSubtask.setGuid(guid);\r\n                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛塡r\n            }\r\n        }\r\n    }\r\n\r\n    private String getKey() {\r\n        Map<String, String> map = new HashMap<>();\r\n        for (int i = 0; i < 6; i++) {\r\n            Boolean aBoolean = redisCache.hasKey(\"cache-\" + i);\r\n            if (!aBoolean) {\r\n                redisCache.setCacheObject(\"cache-\" + i, \"\");\r\n                map.put(\"cache-\" + i, \"\");\r\n            } else {\r\n                map.put(\"cache-\" + i, redisCache.getCacheObject(\"cache-\" + i));\r\n            }\r\n        }\r\n\r\n        String key = null;\r\n        String value = \"\";\r\n        for (Map.Entry<String, String> entry : map.entrySet()) {\r\n            if (StringUtils.isEmpty(value)) {\r\n                value = entry.getValue();\r\n                key = entry.getKey();\r\n            } else {\r\n                if (entry.getValue().split(\",\").length < value.split(\",\").length) {\r\n                    value = entry.getValue();\r\n                    key = entry.getKey();\r\n                }\r\n            }\r\n        }\r\n        return key;\r\n    }\r\n\r\n    private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) {\r\n        Map<String, Object> map = new LinkedHashMap<>();\r\n\r\n        Map<String, Object> YeWuXX = new LinkedHashMap<>();\r\n        Map<String, Object> DuanXinXX = new LinkedHashMap<>();\r\n        DuanXinXX.put(\"ShouJiHM\", ShouJiHM);\r\n        DuanXinXX.put(\"FaSongNR\", FaSongNR);\r\n        DuanXinXX.put(\"FaSongRID\", FaSongRID);\r\n        DuanXinXX.put(\"FaSongRXM\", FaSongRXM);\r\n        YeWuXX.put(\"DuanXinXX\", DuanXinXX);\r\n\r\n        map.put(\"XiaoXiTou\", headerMap);\r\n        map.put(\"YeWuXX\", YeWuXX);\r\n\r\n        String body = new Gson().toJson(map);\r\n\r\n//        String result = HttpUtils.sendPost(address, body);\r\n        String result = null;\r\n        try {\r\n            result = OkHttpExample.sendPostRequest(address, body, token);\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n        log.info(\"銆恎etDXCode銆戠煭淇″彂閫佺粨鏋滐細{}\", result);\r\n\r\n        JSONObject jsonObject = JSONObject.parseObject(result);\r\n        String code = (String) jsonObject.toString();\r\n        return code;\r\n    }\r\n\r\n\r\n    private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String setPatientname, String setPatientid, List<String> wxqqxx) {\r\n        XinHuaWXReq xinHuaWXReq = new XinHuaWXReq();\r\n        xinHuaWXReq.setIdcard(idcard);\r\n        xinHuaWXReq.setUrl(url);\r\n        xinHuaWXReq.setPatientid(setPatientid);\r\n        xinHuaWXReq.setPatientname(setPatientname);\r\n        xinHuaWXReq.setMobile(phone);\r\n        xinHuaWXReq.setMedcardno(null);\r\n        xinHuaWXReq.setTitlename(taskName);\r\n        xinHuaWXReq.setContent(taskDesc);\r\n        xinHuaWXReq.setAppid(wxqqxx.get(1));\r\n        log.info(\"銆恎etWXCode銆戝井淇″叕浼楀彿璇锋眰鍙傛暟锛歿}\", xinHuaWXReq);\r\n        String body = new Gson().toJson(xinHuaWXReq);\r\n        String encode = encode(wxqqxx.get(2).concat(body));\r\n        Map<String, String> headerMap = new HashMap<>();\r\n        headerMap.put(\"sign\", encode);\r\n        String result = HttpUtils.sendPostByHeader(wxqqxx.get(3), body, headerMap);\r\n\r\n        JSONObject jsonObject = JSONObject.parseObject(result);\r\n        String code = (String) jsonObject.toString();\r\n        return code;\r\n    }\r\n\r\n\r\n    public String encode(String arg) {\r\n        if (arg == null) {\r\n            arg = \"\";\r\n        }\r\n        MessageDigest md5 = null;\r\n        try {\r\n            md5 = MessageDigest.getInstance(\"MD5\");\r\n            md5.update(arg.getBytes(\"UTF-8\"));\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n        return toHex(md5.digest());\r\n    }\r\n\r\n    public void collectHIS() {\r\n        try {\r\n            // HIS鏁版嵁閲囬泦\r\n            log.info(\"銆恉ealHisData銆慔IS寮�濮嬮噰闆嗘暟鎹甛");\r\n            ichService.sync();\r\n            log.info(\"銆恉ealHisData銆慔IS缁撴潫閲囬泦鏁版嵁\");\r\n        } catch (Exception e) {\r\n            log.error(\"銆恉ealHisData銆慔IS鏁版嵁閲囬泦寮傚父\", e);\r\n        }\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java	(date 1758791994998)
-@@ -5,9 +5,9 @@
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.google.gson.Gson;
- import com.ruoyi.common.core.redis.RedisCache;
-+import com.ruoyi.common.dx.MessageSend;
- import com.ruoyi.common.enums.MsgLSEnum;
- import com.ruoyi.common.enums.ServiceFromEnum;
--import com.ruoyi.common.enums.VisitSendStateEnum;
- import com.ruoyi.common.enums.WxGZHEnum;
- import com.ruoyi.common.utils.HttpUtil;
- import com.ruoyi.common.utils.OkHttpExample;
-@@ -19,10 +19,7 @@
- import com.ruoyi.system.service.ISysConfigService;
- import com.smartor.common.LSHospTokenUtil;
- import com.smartor.domain.*;
--import com.smartor.mapper.HeLibraryMapper;
--import com.smartor.mapper.ServiceSubtaskMapper;
--import com.smartor.mapper.ServiceTaskMapper;
--import com.smartor.mapper.SysUserImportMapper;
-+import com.smartor.mapper.*;
- import com.smartor.service.*;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.collections4.CollectionUtils;
-@@ -82,6 +79,9 @@
-     @Autowired
-     private IHNGatherPatArchiveService ihnGatherPatArchiveService;
- 
-+    @Autowired
-+    private IServiceSLTDHealthcareRecordService serviceSLTDHealthcareRecordService;
-+
-     @Autowired
-     private SysUserImportMapper sysUserImportMapper;
- 
-@@ -94,7 +94,6 @@
-     @Autowired
-     private ISysConfigService configService;
- 
--
-     @Value("${localIP}")
-     private String localIP;
- 
-@@ -147,6 +146,9 @@
-     @Autowired
-     IXHGatherPatArchiveService ixhGatherPatArchiveService;
- 
-+    @Autowired
-+    ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
-+
-     @Autowired
-     ICollectHISService icollectHis;
- 
-@@ -251,11 +253,60 @@
-                 // 娌冲崡鏁版嵁閲囬泦
-                 HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();
-                 log.info("銆恉ealHisData銆戞渤鍗楀紑濮嬮噰闆嗘暟鎹�");
-+                Date startTime = Date.from(yesterdayZero.atZone(ZoneId.systemDefault()).toInstant());
-+                Date endTime = Date.from(todayZero.atZone(ZoneId.systemDefault()).toInstant());
-+
-+                hnDataGatherVO.setStartTime(startTime);
-+                hnDataGatherVO.setEndTime(endTime);
-                 ihnGatherPatArchiveService.hnDataGather(hnDataGatherVO);
-                 log.info("銆恉ealHisData銆戞渤鍗楃粨鏉熼噰闆嗘暟鎹�");
-             } catch (Exception e) {
-                 log.error("銆恉ealHisData銆戞渤鍗楁暟鎹噰闆嗗紓甯�", e);
-             }
-+        } else if (active.trim().equals("sltd")) {
-+            try {
-+                // 鐪佺珛鍚屽痉鏁版嵁閲囬泦
-+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃叆闄⑩�濆紑濮嬮噰闆嗘暟鎹�");
-+                String yesterday = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-+                ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO();
-+                serviceSLTDInhospReqVO.setOrgId("20001001");
-+                serviceSLTDInhospReqVO.setCampusId(30001002L);
-+                serviceSLTDInhospReqVO.setStartHeadTime(yesterday);
-+                serviceSLTDInhospReqVO.setStartTailTime(yesterday);
-+                List<String> list = new ArrayList<>();
-+                list.add("FH0108.02");
-+                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list);
-+                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
-+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃叆闄⑩�濈祼鏉熼噰闆嗘暟鎹�");
-+
-+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濆紑濮嬮噰闆嗘暟鎹�");
-+                serviceSLTDInhospReqVO.setStartHeadTime(null);
-+                serviceSLTDInhospReqVO.setStartTailTime(null);
-+                serviceSLTDInhospReqVO.setEncounterTimeStart(yesterday);
-+                serviceSLTDInhospReqVO.setEncounterTimeEnd(yesterday);
-+                List<String> list1 = new ArrayList<>();
-+                list1.add("FH0108.01");
-+                list1.add("FH0108.03");
-+                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
-+                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
-+                log.info("銆恉ealHisData銆戞渤鍗楃粨鈥滈棬鎬ヨ瘖鈥濇潫閲囬泦鏁版嵁");
-+
-+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃嚭闄⑩�濆紑濮嬮噰闆嗘暟鎹�");
-+                serviceSLTDInhospReqVO.setStartHeadTime(null);
-+                serviceSLTDInhospReqVO.setStartTailTime(null);
-+                serviceSLTDInhospReqVO.setEncounterTimeStart(null);
-+                serviceSLTDInhospReqVO.setEncounterTimeEnd(null);
-+                serviceSLTDInhospReqVO.setPreOutHospitalHeadDate(yesterday);
-+                serviceSLTDInhospReqVO.setPreOutHospitalTailDate(yesterday);
-+                List<String> list2 = new ArrayList<>();
-+                list2.add("FH0108.02");
-+                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list2);
-+                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
-+                log.info("銆恉ealHisData銆戞渤鍗楃粨鈥滃嚭闄⑩�濇潫閲囬泦鏁版嵁");
-+
-+            } catch (Exception e) {
-+                log.error("銆恉ealHisData銆戠渷绔嬪悓寰锋暟鎹噰闆嗗紓甯�", e);
-+            }
-         }
-     }
- 
-@@ -330,9 +381,69 @@
-             commonTaskcallMQ.setTaskid(serviceTask.getTaskid());
-             commonTaskcallMQ.setPreachform(serviceTask.getPreachform());
-             commonTaskcallMQ.setSendType("2");
--            sfHandlle(commonTaskcallMQ, localIP);
-+
-+            //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
-+            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-+            serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
-+            serviceSubtaskVO.setSendstate(2L);
-+            serviceSubtaskVO.setVisitTime(new Date());
-+            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.queryServiceSubtaskList(serviceSubtaskVO);
-+            for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
-+                sfHandlle(serviceSubtask);
-+            }
-+
-         }
-     }
-+
-+    /**
-+     * 澶勭悊琛ュ伩浠诲姟
-+     */
-+    public void compensateTask() {
-+        //鑾峰彇鍒皊endstate=3 骞朵笖 visit_time涓轰粖澶╃殑subtask
-+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-+        serviceSubtaskVO.setSendstate(3L);
-+        serviceSubtaskVO.setVisitTime(new Date());
-+        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-+        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-+            //鏍规嵁褰撳墠鐨勬墽琛屾柟寮忥紝鑾峰彇涓嬩竴绉嶆墽琛屾柟寮�
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+            serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+            //鑾峰彇褰撳墠鎵ц鏂瑰紡鐨勫簭鍙�
-+            Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
-+            Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst();
-+            if (currentSort.isPresent()) {
-+                //1鍏堟鏌ヤ竴涓嬶紝鏄笉鏄湁鎵ц鐘舵�佹槸瀹屾垚鐨勶紙鎬曚箣鍓嶅凡缁忔湁瀹岀殑浜嗭紝娌℃湁灏唖ervuce_subtask鐨勭姸鎬佹敼鎴愬姛锛岃繖閲屽啀妫�鏌ヤ竴涓嬶級
-+                boolean finishState = serviceSubtaskPreachforms.stream().allMatch(item -> item.getSendstate().equals("9"));
-+                if (finishState) {
-+                    serviceSubtask.setSendstate(6L);
-+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                    continue;
-+                }
-+
-+                //2鍒ゆ柇涓�涓嬶紝褰撳墠鐨剆ort鏄笉鏄瓑浜庨渶瑕佹墽琛岀殑鎬讳釜鏁帮紝濡傛灉绛変簬鐨勮瘽锛岃鏄庢槸鏈�鍚庝竴涓紝鐩存帴灏唖ervuce_subtask鐨勭姸鎬佹敼鎴�5锛屾墽琛屽け璐ュ氨琛屼簡
-+                Long cs = currentSort.get();
-+                if (cs.equals(serviceSubtaskPreachforms.size())) {
-+                    serviceSubtask.setSendstate(5L);
-+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                    //淇敼鍙戦�佹柟寮忕殑鐘舵�佷负澶辫触
-+                    serviceSubtaskPreachform.setSendstate("5");
-+                    serviceSubtaskPreachform.setId(id.get());
-+                    serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform);
-+                    continue;
-+                }
-+
-+                //3.涓嶆槸鏈�鍚庝竴涓紝鑾峰彇鍒颁笅涓�涓墽琛屾柟寮�(鍥犱负閮芥槸鍦ㄤ粖澶╂墽琛岋紝閭e氨鐩存帴鍙戝嚭鍘诲氨瀹屼簡)
-+                sfHandlle(serviceSubtask);
-+
-+            }
-+
-+        }
-+
-+    }
-+
- 
-     /**
-      * 鍒ゆ柇鏃ユ湡鏄惁鏄粖澶�
-@@ -352,367 +463,314 @@
-         return !localDate.isAfter(today);
-     }
- 
--    public void sfHandlle(CommonTaskcallMQ commonTaskcallMQ, String ip) {
--        log.info("銆恠fHandlle銆戝紑濮嬪鐞嗕换鍔★紝浠诲姟ID锛歿}", commonTaskcallMQ.getTaskid());
--        //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
--        ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
--
--        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {
--            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖
--            String[] split = commonTaskcallMQ.getPreachform().split(",");
--            log.info("銆恠fHandlle銆戜换鍔″彂閫佹柟寮忥細{}", Arrays.toString(split));
--            for (String serviceFrom : split) {
--                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
--                //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
--                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();
--                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
--                ivrTaskcall.setSendstate(2L);
--                List<ServiceSubtask> subtaskList = iServiceSubtaskService.selectServiceSubtaskList(ivrTaskcall);
--                //涓芥按鏈夌殑鍖婚櫌杩樻病娉曞仛闀挎湡浠诲姟闅忚
--                List<ServiceSubtask> subtaskList2 = new ArrayList<>();
--                if (visitHosp == 2) {
--                    try {
--                        for (ServiceSubtask serviceSubtask : subtaskList) {
--                            Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid());
--
--                            if (b) subtaskList2.add(serviceSubtask);
--                        }
--                    } catch (Exception e) {
--                        log.error("-------闀挎湡浠诲姟寮傚父涓猴細", e);
--                        continue;
--                    }
--//                    for (ServiceSubtask serviceSubtask : subtaskList) {
--//                        Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid());
--//
--//                        if (b) subtaskList2.add(serviceSubtask);
--//                    }
--                    subtaskList = subtaskList2;
--                }
-+    public void sfHandlle(ServiceSubtask serviceSubtask) {
-+        //杩欓噷闇�瑕佹牴鎹韩浠借瘉鍘婚噸(缁欏井淇″皬绋嬪簭鐨勫浐瀹氫换鍔$敤鐨�)
-+        List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>();
-+        ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+        //鑾峰彇鍙戦�佹柟寮�
-+        String sendPreachform = getSendPreachform(serviceSubtaskPreachform, serviceSubtask);
-+        if (sendPreachform.equals("-1") || serviceSubtask.getSendstate() == 6 || serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 4) {
-+            //璇存槑宸茬粡鍏ㄩ儴閬嶅巻瀹屼簡锛屽綋鍓嶇殑鎵ц鏂瑰紡搴忓彿鏄渶鍚庝竴涓簡   鎴栬��  璇ユ偅鑰呭凡缁忛殢璁跨粨鏉燂紙鎴愬姛鎴栧け璐ヤ簡鎴栦笉鎵ц锛�
-+            return;
-+        }
-+        //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
-+        PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
-+        if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
-+            //涓嶉渶瑕佸彂閫�
-+            serviceSubtask.setResult("鎮h�呬笉闇�瑕侀殢璁�");
-+            serviceSubtask.setRemark(patArchive.getNotrequiredreason());
-+            serviceSubtask.setSendstate(4L);
-+            iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
-+            return;
-+        }
- 
--                // 鎸夌収 endtime 绂诲綋鍓嶆椂闂存渶杩戠殑鎺掑簭
--                List<ServiceSubtask> selectServiceSubtaskList = subtaskList.stream().sorted(Comparator.comparing(subtask -> Math.abs(subtask.getEndtime().getTime() - new Date().getTime()))).collect(Collectors.toList());
--
--                if (descByCode.equals("鐢佃瘽")) {
--                    String value = "";
--                    List<String> list = new ArrayList<>();
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        ServiceTask ivrTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
--                        if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
--                            //濡備綍浠诲姟琚�"鏆傚仠"鎴�"缁堟"
--                            break;
--                        }
--                        if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
--                            serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
--                            serviceSubtask.setSendstate(4L);
--                            serviceSubtask.setResult("error");
--//                            serviceSubtask.setFinishtime(new Date());
--                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--                            continue;
--                        }
--                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
--                        //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝   displayNo涓嶇煡閬撴�庝箞閰嶇疆)
--                        if (dateToday) {
--                            list.add(serviceSubtask.getId().toString());
--                            //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
--                            String uuid = UUID.randomUUID().toString();
--                            serviceSubtask.setResult("success");
--                            serviceSubtask.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�");
--                            serviceSubtask.setGuid(uuid);
--                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--
--                            //浠诲姟鍙戦�佽褰�
--                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                            serviceSubtaskRecord.setUuid(uuid);
--                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                            serviceSubtaskRecord.setPreachform("3");
--                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                            serviceSubtaskRecord.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�");
--                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--
--                        }
--                    }
--                    //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑
--                    if (list.size() > 0) {
--//                        redisCache.setCacheListLeft("cache-0", list);
--                        redisCache.setCacheListLeftAndDistinct("cache-0", list);
--                        log.info("銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}", list.size());
--                    }
--                } else if (descByCode.equals("澶氬獟浣�")) {
--                    //澶氬獟浣�
--                } else if (descByCode.equals("绾歌川")) {
--                    //绾歌川
--                } else if (descByCode.equals("寰俊灏忕▼搴�")) {
--                    //寰俊灏忕▼搴�
--                    log.info("銆恠fHandlle銆戝鐞嗗井淇″皬绋嬪簭浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
--                    if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {
--                        //璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨�
--                        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
--                        serviceSubtaskVO.setTaskid(ivrTask1.getTaskid());
--                        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
--                        //杩欓噷闇�瑕佹牴鎹韩浠借瘉鍘婚噸
--                        List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>();
--                        aa:
--                        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
--                            for (ServiceSubtask ss : serviceSubtaskListFilter) {
--                                if (ss.getSfzh().equals(serviceSubtask.getSfzh())) {
--                                    continue aa;
--                                }
--                            }
--                            serviceSubtaskListFilter.add(serviceSubtask);
--                        }
--                        for (ServiceSubtask serviceSubtask : serviceSubtaskListFilter) {
--                            //灏嗗瓙浠诲姟ID鍒犻櫎 銆乻endstate鏀规垚3
--                            serviceSubtask.setSendstate(3L);
--                            serviceSubtask.setId(null);
--                            serviceSubtask.setFinishtime(null);
--                            serviceSubtask.setCreateTime(new Date());
--                            serviceSubtask.setUpdateTime(new Date());
--                            //澶勭悊閲嶅鏂板闂锛屽厛鏌ヤ竴涓嬩粖澶╂槸涓嶆槸鏈夋柊澧炶繃锛屾柊澧炶繃灏变笉鏂板浜�
--                            ServiceSubtaskVO ssvo = new ServiceSubtaskVO();
--                            LocalDate today = LocalDate.now();
--                            LocalTime startOfDay = LocalTime.of(0, 0, 0);
--                            LocalTime endOfDay = LocalTime.of(23, 59, 59);
--                            Date startOfDayDate = Date.from(today.atTime(startOfDay).atZone(ZoneId.systemDefault()).toInstant());
--                            Date endOfDayDate = Date.from(today.atTime(endOfDay).atZone(ZoneId.systemDefault()).toInstant());
--                            ssvo.setCreateStartTime(startOfDayDate);
--                            ssvo.setCreateEndTime(endOfDayDate);
--                            ssvo.setCreateBy(serviceSubtask.getCreateBy());
--                            ssvo.setSendname(serviceSubtask.getSendname());
--                            ssvo.setSfzh(serviceSubtask.getSfzh());
--                            List<ServiceSubtask> serviceSubtaskListByCreateTime = serviceSubtaskMapper.selectServiceSubtaskListByCreateTime(ssvo);
--                            if (CollectionUtils.isEmpty(serviceSubtaskListByCreateTime))
--                                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
--                        }
--                    }
--                } else if (descByCode.equals("鐭俊")) {
--                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
--                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        log.info("銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}", serviceSubtask.getPatid());
--                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
--                        if (dateToday) {
--                            try {
--                                //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
--                                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
--                                if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
--                                    //涓嶉渶瑕佸彂閫�
--                                    serviceSubtask.setResult("error");
--                                    serviceSubtask.setRemark(patArchive.getNotrequiredreason());
--                                    serviceSubtask.setSendstate(4L);
--                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
--                                    continue;
--                                }
--                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
--                                String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
--                                SendMagParam sendMagParam = new SendMagParam();
--                                sendMagParam.setType("4");
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setParam3(ivrTask1.getTaskName());
--                                serviceOutPath.setParam6(subId);
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                //鍏堝垽鏂竴涓嬪彂鐨勬槸涓嶆槸瀹f暀
--                                if (!"3".equals(serviceSubtask.getType())) {
--                                    sendMagParam.setPhone(serviceSubtask.getPhone());
--                                    sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format);
--                                    sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
--                                } else {
--                                    HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
--                                    if ("2".equals(heLibrary.getHetype())) {
--                                        sendMagParam.setPhone(serviceSubtask.getPhone());
--                                        sendMagParam.setContent(heLibrary.getPreachcontent());
--                                    }
--                                }
--                                String isSuccess = null;
--                                if (visitHosp == 1) {
--                                    Map<String, String> req = new HashMap<>();
--                                    req.put("phone", sendMagParam.getPhone());
--                                    req.put("content", sendMagParam.getContent());
--                                    isSuccess = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
--                                } else if (visitHosp == 2) {
--                                    String url = configService.selectConfigByKey("token.360",serviceSubtask.getOrgid());
--                                    //涓芥按鐨勭煭淇″彂閫佹柟寮�
--                                    Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
--                                    String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(),url);
--                                    if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
--                                        ServiceSubtask ss = new ServiceSubtask();
--                                        ss.setResult("error");
--                                        ss.setRemark("鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�");
--                                        ss.setSendstate(5L);
--                                        ss.setId(serviceSubtask.getId());
--//                                        ss.setFinishtime(new Date());
--                                        serviceSubtaskMapper.updateServiceSubtask(ss);
--                                        continue;
--                                    }
--                                    log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}", map.get("address"), sendMagParam, serviceSubtask.getOrgid());
--                                    String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);
--                                    log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}", dxCode);
--                                    ObjectMapper objectMapper = new ObjectMapper();
--                                    Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
--                                    String code = textParam.get("Code").toString();
--                                    if (code.equals("0")) {
--                                        isSuccess = "true";
--                                    }
--                                }else if (visitHosp == 3) {//甯備竴鍖婚櫌
--                                    String content=sendMagParam.getContent().replace("銆愭柊鍗庡尰闄€��","");
--                                    smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,sendMagParam.getPhone(),content);
--                                }
--                                //浠诲姟鍙戦�佽褰�
--                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                                serviceSubtaskRecord.setPreachform("4");
--                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                                serviceSubtaskRecord.setResult("success");
--                                if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true"))
--                                    serviceSubtaskRecord.setResult("error");
--                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+        String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(sendPreachform));
-+        if (descByCode.equals("鐢佃瘽")) {
-+            List<String> list = new ArrayList<>();
-+            ServiceTask ivrTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-+            if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
-+                //濡備綍浠诲姟琚�"鏆傚仠"鎴�"缁堟"
-+                return;
-+            }
-+
-+            if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
-+                setSuccessPreachForm(serviceSubtask, sendPreachform, "鎵嬫満鍙蜂负绌�", "4");
-+                return;
-+            }
-+            boolean dateToday = isDateToday(serviceSubtask.getVisitTime());
-+            //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝   displayNo涓嶇煡閬撴�庝箞閰嶇疆)
-+            if (dateToday) {
-+                list.add(serviceSubtask.getId().toString());
-+                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                setSuccessPreachForm(serviceSubtask, sendPreachform, "闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�", "2");
-+                //浠诲姟鍙戦�佽褰�
-+                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                serviceSubtaskRecord.setPreachform("3");
-+                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                serviceSubtaskRecord.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�");
-+                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+            }
-+            //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑
-+            if (list.size() > 0) {
-+                redisCache.setCacheListLeftAndDistinct("cache-0", list);
-+                log.info("銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}", list.size());
-+            }
-+        } else if (descByCode.equals("寰俊灏忕▼搴�")) {
-+            //寰俊灏忕▼搴�
-+            log.info("銆恠fHandlle銆戝鐞嗗井淇″皬绋嬪簭浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
-+            if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {
-+                //璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨�
-+                //鍒ゆ柇鎮h�呰繃婊ら泦鍚堜腑锛屾槸鍚﹀瓨鍦ㄥ綋鍓嶆墽琛屾偅鑰呯殑韬唤璇�
-+                boolean continutFlag = false;
-+                for (ServiceSubtask ss : serviceSubtaskListFilter) {
-+                    if (ss.getSfzh().equals(serviceSubtask.getSfzh())) {
-+                        continutFlag = true;
-+                    }
-+                }
-+                //濡傛灉瀛樺湪褰撳墠鎵ц鎮h�呯殑韬唤璇侊紝鍒欎笉鎵ц璇ユ偅鑰呬簡
-+                if (continutFlag) {
-+                    return;
-+                }
-+
-+                //灏嗗瓙浠诲姟ID鍒犻櫎 銆乻endstate鏀规垚3锛堝惊鐜换鍔″氨鏄繖鏍凤級
-+                serviceSubtask.setSendstate(3L);
-+                serviceSubtask.setId(null);
-+                serviceSubtask.setFinishtime(null);
-+                serviceSubtask.setCreateTime(new Date());
-+                serviceSubtask.setUpdateTime(new Date());
-+                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
-+
-+                //灏嗗綋鍓嶈鎵ц鐨勬偅鑰呮斁鍒拌繃婊ゆ偅鑰呴泦鍚堜腑
-+                serviceSubtaskListFilter.add(serviceSubtask);
-+            }
-+        } else if (descByCode.equals("鐭俊")) {
-+            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+            String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
-+            log.info("銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}", serviceSubtask.getPatid());
-+            boolean dateToday = isDateToday(serviceSubtask.getVisitTime());
-+            if (dateToday) {
-+                try {
-+                    String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-+                    String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
-+                    SendMagParam sendMagParam = new SendMagParam();
-+                    sendMagParam.setType("4");
-+                    ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                    serviceOutPath.setParam1(taskId);
-+                    serviceOutPath.setParam2(patid);
-+                    serviceOutPath.setParam3(ivrTask1.getTaskName());
-+                    serviceOutPath.setParam6(subId);
-+                    serviceOutPath.setCreateTime(new Date());
-+                    iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                    String format = String.format("%03X", serviceOutPath.getId());
-+                    serviceOutPath.setRadix(format);
-+                    serviceOutPath.setUpdateTime(new Date());
-+                    iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                    //鍏堝垽鏂竴涓嬪彂鐨勬槸涓嶆槸瀹f暀
-+                    if (!"3".equals(serviceSubtask.getType())) {
-+                        sendMagParam.setPhone(serviceSubtask.getPhone());
-+                        sendMagParam.setUrl(localIP + ":" + req_path + "/wt?p=" + format);
-+                        sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
-+                    } else {
-+                        HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
-+                        if ("2".equals(heLibrary.getHetype())) {
-+                            sendMagParam.setPhone(serviceSubtask.getPhone());
-+                            sendMagParam.setContent(heLibrary.getPreachcontent());
-+                        }
-+                    }
-+                    String isSuccess = null;
-+                    if (visitHosp == 1) {
-+                        Map<String, String> req = new HashMap<>();
-+                        req.put("phone", sendMagParam.getPhone());
-+                        req.put("content", sendMagParam.getContent());
-+                        isSuccess = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
-+                    } else if (visitHosp == 2) {
-+                        String url = configService.selectConfigByKey("token.360", serviceSubtask.getOrgid());
-+                        //涓芥按鐨勭煭淇″彂閫佹柟寮�
-+                        Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
-+                        String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(), url);
-+                        if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
-+                            setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�", "5");
-+                            return;
-+                        }
-+                        log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}", map.get("address"), sendMagParam, serviceSubtask.getOrgid());
-+                        String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);
-+                        log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}", dxCode);
-+                        ObjectMapper objectMapper = new ObjectMapper();
-+                        Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
-+                        String code = textParam.get("Code").toString();
-+                        if (code.equals("0")) {
-+                            isSuccess = "true";
-+                        }
-+                    } else if (visitHosp == 4) {
-+                        //鐪佺珛鍚屽痉鐨勭煭淇″彂閫佹柟寮�
-+                        JSONObject data = MessageSend.sendMsg(sendMagParam.getContent(), "2", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
-+                        String code = data.get("code").toString();
-+                        if (StringUtils.isNotEmpty(code) && code.equals("00000")) {
-+                            isSuccess = "true";
-+                        }
-+                    } else if (visitHosp == 3) {//甯備竴鍖婚櫌
-+                        String content = sendMagParam.getContent().replace("銆愭柊鍗庡尰闄€��", "");
-+                        String result = smsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, sendMagParam.getPhone(), content);
-+                        //杩欓噷闇�瑕佹牴鎹畆esult杩斿洖鐨勫�煎幓鍒ゆ柇锛屾槸鍚︽垚鍔燂紝鐒跺悗灏嗗�艰祴鍊肩粰isSuccess
-+
-+
-+
-+
-+                    }
-+                    //浠诲姟鍙戦�佽褰�
-+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                    serviceSubtaskRecord.setPreachform("4");
-+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                    serviceSubtaskRecord.setResult("success");
-+                    if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true"))
-+                        serviceSubtaskRecord.setResult("error");
-+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
- 
--                                //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
--                                serviceSubtask.setSendstate(3L);
--                                if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true")) {
--                                    serviceSubtask.setResult("success");
--                                    serviceSubtask.setRemark("鐭俊鍙戦�佹垚鍔�");
--                                } else {
--                                    serviceSubtask.setResult("error");
--                                    serviceSubtask.setSendstate(5L);
--                                    serviceSubtask.setRemark("鐭俊鍙戦�佸け璐�");
--                                }
--                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
--                            } catch (Exception e) {
--                                String guid = UUID.randomUUID().toString();
--                                log.error("銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
--                                serviceSubtask.setResult("error");
--                                serviceSubtask.setRemark("绯荤粺閿欒");
--                                serviceSubtask.setSendstate(5L);
--                                serviceSubtask.setGuid(guid);
--                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
--                            }
--                        }
--                    }
--                } else if (descByCode.equals("鍏紬鍙�")) {
--                    log.info("銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
--                    //鍏紬鍙�
--                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
--                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
--                        if (dateToday) {
--                            try {
--                                //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
--                                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
--                                if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
--                                    //涓嶉渶瑕佸彂閫�
--                                    serviceSubtask.setResult("error");
--                                    serviceSubtask.setRemark(patArchive.getNotrequiredreason());
--                                    serviceSubtask.setSendstate(4L);
--                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
--                                    continue;
--                                }
--                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
--                                String url = null;
--                                url = ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false";
-+                    //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
-+                    serviceSubtask.setSendstate(3L);
-+                    if (StringUtils.isNotEmpty(isSuccess) && isSuccess.equals("true")) {
-+                        serviceSubtask.setResult("success");
-+                        serviceSubtask.setRemark("鐭俊鍙戦�佹垚鍔�");
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佹垚鍔�", "2");
-+                    } else {
-+                        serviceSubtask.setResult("error");
-+                        serviceSubtask.setRemark("鐭俊鍙戦�佸け璐�");
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
-+                    }
-+                } catch (Exception e) {
-+                    String guid = UUID.randomUUID().toString();
-+                    log.error("銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
-+                    setSuccessPreachForm(serviceSubtask, sendPreachform, "闀挎湡浠诲姟鐭俊鍙戦�佸け璐�:绯荤粺閿欒", "5");
-+                }
-+            }
-+
-+        } else if (descByCode.equals("鍏紬鍙�")) {
-+            log.info("銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
-+            //鍏紬鍙�
-+            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+            String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
-+            boolean dateToday = isDateToday(serviceSubtask.getVisitTime());
-+            if (dateToday) {
-+                try {
-+                    String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-+                    String url = null;
-+                    url = localIP + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false";
- 
--                                //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
--                                List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
--                                if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
--                                    ServiceSubtask ss = new ServiceSubtask();
--                                    ss.setResult("error");
--                                    ss.setRemark("璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�");
--                                    ss.setSendstate(5L);
--                                    ss.setId(serviceSubtask.getId());
--                                    serviceSubtaskMapper.updateServiceSubtask(ss);
--                                    continue;
--                                }
-+                    //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
-+                    List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
-+                    if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戣鏈烘瀯鐨勫叕浼楀彿閰嶇疆淇℃伅涓嶅叏锛屾棤娉曢�氳繃鍏紬鍙峰彂閫�", "4");
-+                        return;
-+                    }
- 
--                                if (StringUtils.isEmpty(patArchive.getPatidHis())) {
--                                    ServiceSubtask ss = new ServiceSubtask();
--                                    ss.setResult("error");
--                                    ss.setRemark("鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖");
--                                    ss.setSendstate(5L);
--                                    ss.setId(serviceSubtask.getId());
--                                    serviceSubtaskMapper.updateServiceSubtask(ss);
--                                    continue;
--                                }
--                                String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx);
-+                    if (StringUtils.isEmpty(patArchive.getPatidHis())) {
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖", "5");
-+                        return;
-+                    }
-+                    String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx);
- 
--                                Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
--                                //浠诲姟鍙戦�佽褰�
--                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                                serviceSubtaskRecord.setPreachform("4");
--                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                                serviceSubtaskRecord.setResult("success");
--                                if (!map.isEmpty() && (Boolean) map.get("succ") == false)
--                                    serviceSubtaskRecord.setResult("error");
--                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                    Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
-+                    //浠诲姟鍙戦�佽褰�
-+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                    serviceSubtaskRecord.setPreachform("4");
-+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                    serviceSubtaskRecord.setResult("success");
-+                    if (!map.isEmpty() && (Boolean) map.get("succ") == false) serviceSubtaskRecord.setResult("error");
-+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
- 
--                                //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
--                                serviceSubtask.setSendstate(3L);
--                                if ((Boolean) map.get("succ") == true) {
--                                    serviceSubtask.setResult("success");
--                                } else {
--                                    log.error("銆恠fHandlle銆戝叕浼楀彿鍙戦�佸け璐ワ紝鎮h�呬俊鎭細{}锛岄敊璇俊鎭細{}", serviceSubtask, map.get("msg"));
--                                    serviceSubtask.setResult("error");
--                                    serviceSubtask.setSendstate(5L);
--                                    serviceSubtask.setRemark(map.get("msg").toString());
--                                }
--                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
--                            } catch (Exception e) {
--                                String guid = UUID.randomUUID().toString();
--                                log.error("銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
--                                serviceSubtask.setResult("error");
--                                serviceSubtask.setRemark("绯荤粺閿欒");
--                                serviceSubtask.setSendstate(5L);
--                                serviceSubtask.setGuid(guid);
--                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
--                            }
--                        }
-+                    //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
-+                    serviceSubtask.setSendstate(3L);
-+                    if ((Boolean) map.get("succ") == true) {
-+                        serviceSubtask.setResult("success");
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佹垚鍔�", "2");
-+                    } else {
-+                        log.error("銆恠fHandlle銆戝叕浼楀彿鍙戦�佸け璐ワ紝鎮h�呬俊鎭細{}锛岄敊璇俊鎭細{}", serviceSubtask, map.get("msg"));
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佸け璐�", "5");
-+                    }
-+                } catch (Exception e) {
-+                    String guid = UUID.randomUUID().toString();
-+                    log.error("銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
-+                    setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛�" + e.getMessage(), "5");
-+                }
-+            }
-+        }
-+
-+    }
-+
-+
-+    private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) {
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(subid);
-+        serviceSubtaskPreachform.setTaskid(taskid);
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            String compensateTime = serviceSubtaskPreachforms.get(0).getCompensateTime();
-+            int hoursToAdd = Integer.valueOf(compensateTime) * 24;
-+            Calendar calendar = Calendar.getInstance();
-+            calendar.setTime(visitTime);
-+            calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd);
-+            Date newDate = calendar.getTime();
-+            return newDate;
-+        }
-+        return visitTime;
-+    }
-+
-+    private String getSendPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform, ServiceSubtask serviceSubtask) {
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        // 鎯呭喌1锛歝urrentPreachform涓虹┖锛屽彇sort涓�1鐨刾reachform
-+        if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
-+            return serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
-+        }
-+
-+        // 鎯呭喌2锛歝urrentPreachform涓嶄负绌猴紝鎵句笅涓�涓猻ort
-+        Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
-+
-+        if (currentSort.isPresent()) {
-+            // 妫�鏌ユ槸鍚︽墍鏈塻endstate涓嶇瓑浜�9
-+            boolean allSendStateNot1AndNot9 = serviceSubtaskPreachforms.stream().allMatch(item -> !item.getSendstate().equals("9"));
-+
-+            // 褰搒ort绛変簬鍒楄〃size鏃讹紝骞朵笖鎵�鏈塻endstate閮戒笉绛変簬9锛屽垯杩斿洖-1
-+            if (currentSort.get().equals((long) serviceSubtaskPreachforms.size())) {
-+                if (allSendStateNot1AndNot9) {
-+                    //璇存槑鍏ㄥ彂閫佸け璐ヤ簡
-+                    serviceSubtask.setSendstate(5L);
-+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                    //淇敼鍙戦�佺姸鎬�
-+                    Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst();
-+                    if (id.isPresent()) {
-+                        ServiceSubtaskPreachform subtaskPreachform = new ServiceSubtaskPreachform();
-+                        subtaskPreachform.setSendstate("5");
-+                        subtaskPreachform.setId(id.get());
-+                        serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(subtaskPreachform);
-                     }
-                 }
--                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
-+                return "-1";
-             }
--        }
--    }
- 
--    private String getKey() {
--        Map<String, String> map = new HashMap<>();
--        for (int i = 0; i < 6; i++) {
--            Boolean aBoolean = redisCache.hasKey("cache-" + i);
--            if (!aBoolean) {
--                redisCache.setCacheObject("cache-" + i, "");
--                map.put("cache-" + i, "");
--            } else {
--                map.put("cache-" + i, redisCache.getCacheObject("cache-" + i));
--            }
-+            // 褰搒ort绛変簬鍒楄〃size鏃讹紝涓嬩竴涓猻ort涓�-1
-+            Long nextSort = currentSort.get() + 1;
-+
-+            // 鎵惧埌涓嬩竴涓猻ort瀵瑰簲鐨刾reachform
-+            return serviceSubtaskPreachforms.stream().filter(item -> nextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse("-1");
-         }
- 
--        String key = null;
--        String value = "";
--        for (Map.Entry<String, String> entry : map.entrySet()) {
--            if (StringUtils.isEmpty(value)) {
--                value = entry.getValue();
--                key = entry.getKey();
--            } else {
--                if (entry.getValue().split(",").length < value.split(",").length) {
--                    value = entry.getValue();
--                    key = entry.getKey();
--                }
--            }
--        }
--        return key;
-+        return null;
-     }
-+
- 
-     private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) {
-         Map<String, Object> map = new LinkedHashMap<>();
-@@ -793,4 +851,48 @@
-             log.error("銆恉ealHisData銆慔IS鏁版嵁閲囬泦寮傚父", e);
-         }
-     }
-+
-+    public Boolean setSuccessPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+        List<ServiceSubtaskPreachform> sspCount = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        serviceSubtaskPreachform.setPreachform(preachform);
-+        //1:鏈彂閫佺姸鎬�
-+        serviceSubtaskPreachform.setSendstate("1");
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
-+            serviceSubtaskPreachform1.setSendstate(failSendstate);
-+            serviceSubtaskPreachform1.setRemark(remark);
-+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
-+
-+            //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
-+            if (serviceSubtaskPreachform1.getSort() == sspCount.size()) {
-+                if (failSendstate.equals("4") || failSendstate.equals("5")) {
-+                    serviceSubtask.setCurrentPreachform(preachform);
-+                    serviceSubtask.setSendstate(5L);
-+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                    return true;
-+                }
-+            }
-+        } else {
-+            log.error("銆愬畾鏃朵换鍔′腑璇ユ偅鑰呮病鏈夋煡璇㈠埌灞炰簬浠栫殑鍙戦�佹柟寮忥紝subid锛歿},prechform:{},orgid:{}銆�", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid());
-+            return false;
-+        }
-+        //灏嗕笅涓�娆$殑闅忚鏃堕棿涓庡綋鍓嶆墽琛屾柟寮忚褰曚竴涓�
-+        serviceSubtask.setVisitTime(
-+
-+                getNextVisitTime(serviceSubtask.getId(), serviceSubtask.
-+
-+                        getTaskid(), serviceSubtask.
-+
-+                        getVisitTime()));
-+        serviceSubtask.setCurrentPreachform(preachform);
-+        serviceSubtask.setSendstate(3L);
-+        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+        return true;
-+    }
- }
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.component;\r\n\r\nimport com.alibaba.fastjson2.JSONObject;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.GsonBuilder;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.enums.MsgLSEnum;\r\nimport com.ruoyi.common.enums.ServiceFromEnum;\r\nimport com.ruoyi.common.enums.WxGZHEnum;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.HttpUtil;\r\nimport com.ruoyi.common.utils.OkHttpExample;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.http.HttpUtils;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.smartor.common.LSHospTokenUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.HeLibraryMapper;\r\nimport com.smartor.mapper.PatArchiveMapper;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport com.smartor.mapper.ServiceTaskMapper;\r\nimport com.smartor.service.IBaseSmsaccountService;\r\nimport com.smartor.service.IServiceOutPathService;\r\nimport com.smartor.service.IServiceSubtaskRecordService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.data.redis.connection.Message;\r\nimport org.springframework.data.redis.listener.KeyExpirationEventMessageListener;\r\nimport org.springframework.data.redis.listener.RedisMessageListenerContainer;\r\nimport org.springframework.stereotype.Component;\r\n\r\nimport java.io.IOException;\r\nimport java.security.MessageDigest;\r\nimport java.util.*;\r\nimport java.util.concurrent.ExecutorService;\r\nimport java.util.concurrent.Executors;\r\nimport java.util.concurrent.TimeUnit;\r\n\r\nimport static cn.hutool.core.convert.Convert.toHex;\r\n\r\n@Slf4j\r\n@Component//鐩戝惉姝ら槦鍒梊r\npublic class RedisMqReceiver extends KeyExpirationEventMessageListener {\r\n\r\n    @Value(\"${phonePath}\")\r\n    private String phonePath;\r\n\r\n    @Value(\"${pub_key}\")\r\n    private String pub_key;\r\n\r\n    @Value(\"${localIP}\")\r\n    private String localIP;\r\n\r\n    @Value(\"${req_path}\")\r\n    private String req_path;\r\n\r\n    @Autowired\r\n    private IServiceOutPathService iServiceOutPathService;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper ivrTaskcallMapper;\r\n\r\n    @Autowired\r\n    private HeLibraryMapper heLibraryMapper;\r\n\r\n    @Autowired\r\n    private ServiceTaskMapper ivrTaskMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    @Autowired\r\n    private ServiceTaskMapper svyTaskMapper;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskRecordService serviceSubtaskRecordService;\r\n\r\n    @Autowired\r\n    IBaseSmsaccountService baseSmsaccountService;\r\n\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n    @Value(\"${xhsmsPath}\")\r\n    private String xhsmsPath;\r\n\r\n    @Value(\"${visitHosp}\")\r\n    private Integer visitHosp;\r\n\r\n    @Value(\"${server.port}\")\r\n    private String port;\r\n\r\n    // 鍒涘缓鍥哄畾澶у皬鐨勭嚎绋嬫睜\r\n    private static final ExecutorService executorService = Executors.newFixedThreadPool(10);\r\n\r\n    public RedisMqReceiver(RedisMessageListenerContainer listenerContainer) {\r\n        super(listenerContainer);\r\n    }\r\n\r\n    @Override\r\n    public void onMessage(Message message, byte[] pattern) {\r\n        log.info(\"鐩戝惉Redis key杩囨湡锛宬ey锛歿}锛宑hannel锛歿}\", message.toString(), new String(pattern));\r\n        String ip = localIP;\r\n        log.info(\"鏈満鐨勭綉缁淚P涓�:{}\", ip);\r\n        String content = message.toString();\r\n        //鍒ゆ柇鏄笉鏄换鍔′俊鎭紝濡傛灉涓嶆槸锛岀洿鎺ヨ繑鍥烇紝涓嶉渶瑕佹墽琛孿r\n        if (!content.contains(\"taskid\") || !port.equals(\"8095\")) {\r\n            log.error(\"涓嶆槸浠诲姟淇℃伅\");\r\n            return;\r\n        }\r\n        CommonTaskcallMQ commonTaskcallMQ = null;\r\n        try {\r\n            ObjectMapper mapper = new ObjectMapper();\r\n            if (!content.startsWith(\"{\")) {\r\n                commonTaskcallMQ = mapper.readValue(\"{\" + content + \"}\", CommonTaskcallMQ.class);\r\n            } else {\r\n                commonTaskcallMQ = mapper.readValue(content, CommonTaskcallMQ.class);\r\n            }\r\n            if (commonTaskcallMQ != null) tsakHandle(commonTaskcallMQ, ip, commonTaskcallMQ.getTaskType());\r\n\r\n            //澶勭悊瀹屾垚锛岀Щ闄edis\r\n            redisCache.deleteObject(message.toString());\r\n            //灏嗙姸鎬佹敼鎴愬畬鎴怽r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(Long.valueOf(commonTaskcallMQ.getTaskid()));\r\n            serviceTask.setSendState(5L);\r\n            serviceTask.setFail(1L);\r\n            svyTaskMapper.updateServiceTask(serviceTask);\r\n        } catch (Exception e) {\r\n            Integer integer = redisCache.getCacheObject(commonTaskcallMQ.getTaskid().toString());\r\n            if (integer != null && integer == 3) {\r\n                redisCache.deleteObject(message.toString());\r\n                ServiceTask serviceTask = new ServiceTask();\r\n                serviceTask.setTaskid(Long.valueOf(commonTaskcallMQ.getTaskid().toString()));\r\n                serviceTask.setFail(0L);\r\n                svyTaskMapper.updateServiceTask(serviceTask);\r\n                //灏嗘秷鎭粠闃熷垪涓垹闄r\n            } else if (integer == null) {\r\n                redisCache.setCacheObject(commonTaskcallMQ.getTaskid().toString(), 1, 120, TimeUnit.MINUTES);\r\n            } else {\r\n                redisCache.setCacheObject(commonTaskcallMQ.getTaskid().toString(), integer + 1, 120, TimeUnit.MINUTES);\r\n            }\r\n            log.error(\"============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!==============  {}\", e.getMessage());\r\n            redisCache.setCacheObject(message.toString(), message.toString(), 60, TimeUnit.SECONDS);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 浠诲姟澶勭悊\r\n     *\r\n     * @param commonTaskcallMQ\r\n     */\r\n    public void tsakHandle(CommonTaskcallMQ commonTaskcallMQ, String ip, Integer type) {\r\n        log.info(\"杩涗换鍔′簡鍚楋紵{}\", commonTaskcallMQ);\r\n        //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜哱r\n        ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());\r\n\r\n//        if (ivrTask1.getStopState() != commonTaskcallMQ.getStopState()) {\r\n//            //灏嗘秷鎭粠闃熷垪涓墧闄r\n//            return;\r\n//        }\r\n\r\n        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {\r\n            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖\r\n            String[] split = commonTaskcallMQ.getPreachform().split(\",\");\r\n            log.info(\"split鐨勫�间负锛歿}\", split);\r\n\r\n            //瀹氫箟涓�涓泦鍚堬紝鐢ㄤ笌瀛樻病鏈夋墽琛岀殑瀛愪换鍔D\r\n            List<Long> subIds = new ArrayList<>();\r\n            //涓存椂瀛樻病鏈夋墽琛岀殑瀛愪换鍔D\r\n            List<Long> lssubIds = new ArrayList<>();\r\n            //鏄惁灏嗗叏閮ㄦ偅鑰呰�呭彂閫佸畬\r\n            Boolean isSend = false;\r\n\r\n            aa:\r\n            for (String serviceFrom : split) {\r\n                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));\r\n                if (isSend == true) {\r\n                    break aa;\r\n                }\r\n\r\n                //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭痋r\n                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();\r\n                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());\r\n                ivrTaskcall.setSendstate(1L);\r\n                List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall);\r\n                if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {\r\n                    continue;\r\n                }\r\n                if (descByCode.equals(\"鐢佃瘽\")) {\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        //鍏堝垽鏂竴涓嬶紝subIds鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛屽彧鎵цsubIds閲岀殑鎮h�匼r\n                        if (CollectionUtils.isNotEmpty(subIds)) {\r\n                            boolean contains = subIds.contains(serviceSubtask.getId());\r\n                            //濡傛灉contains涓嶄负true,璇存槑褰撳墠鐨勬偅鑰呭凡缁忓彂閫佹垚鍔燂紝鐩存帴寰幆涓嬩竴涓汉灏辫\r\n                            if (!contains) continue;\r\n                        }\r\n\r\n                        try {\r\n                            ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {\r\n                                //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩�漒r\n                                break;\r\n                            }\r\n                            //鑾峰彇鍒皏alue鍊兼渶灏戠殑key\r\n                            String key = getKey();\r\n                            if (commonTaskcallMQ.getSendType().equals(\"2\")) {\r\n                                //璇存槑鏄珛鍗冲彂閫乗r\n                                ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();\r\n                                serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());\r\n                                log.info(\"缂撳瓨涓璼erviceSubtask1鐨勫�间负锛歿}\", serviceSubtask1);\r\n                                List<String> list = new ArrayList<>();\r\n                                List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);\r\n                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {\r\n                                    list.add(serviceSubtask2.getId().toString());\r\n                                }\r\n                                log.info(\"缂撳瓨涓璫ache-0鐨勫�间负锛歿}\", list);\r\n//                                redisCache.setCacheListLeft(\"cache-0\", list);\r\n                                redisCache.setCacheListLeftAndDistinct(\"cache-0\", list);\r\n                            } else {\r\n                                //闈炵珛鍗冲彂閫乗r\n                                ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();\r\n                                serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());\r\n                                List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);\r\n                                List<String> list = new ArrayList<>();\r\n                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {\r\n                                    list.add(serviceSubtask2.getId().toString());\r\n                                }\r\n//                                redisCache.setCacheListLeft(key, list);\r\n                                redisCache.setCacheListLeftAndDistinct(key, list);\r\n                            }\r\n                        } catch (Exception exception) {\r\n                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                            serviceSubtaskRecord.setPreachform(\"3\");\r\n                            serviceSubtaskRecord.setResult(\"fail\");\r\n                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                            serviceSubtaskRecord.setRemark(\"闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐");\r\n                            log.error(\"闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐ワ細{}\", exception.getMessage());\r\n                            lssubIds.add(serviceSubtask.getId());\r\n                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                            continue;\r\n                        }\r\n                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓媆r\n                        String uuid = UUID.randomUUID().toString();\r\n                        serviceSubtask.setResult(\"success\");\r\n                        serviceSubtask.setRemark(\"闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔焅");\r\n                        serviceSubtask.setGuid(uuid);\r\n                        serviceSubtask.setSendstate(3L);\r\n                        serviceSubtask.setFinishtime(new Date());\r\n                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                        //浠诲姟鍙戦�佽褰昞r\n                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                        serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                        serviceSubtaskRecord.setUuid(uuid);\r\n                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                        serviceSubtaskRecord.setPreachform(\"3\");\r\n                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                        serviceSubtaskRecord.setRemark(\"闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔焅");\r\n                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                    }\r\n                    if (CollectionUtils.isEmpty(lssubIds)) {\r\n                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜哱r\n                        isSend = true;\r\n                    }\r\n                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓璡r\n                    subIds.clear();\r\n                    subIds.addAll(lssubIds);\r\n                    lssubIds.clear();\r\n                } else if (descByCode.equals(\"澶氬獟浣揬")) {\r\n                    //澶氬獟浣揬r\n                    continue;\r\n                } else if (descByCode.equals(\"绾歌川\")) {\r\n                    //绾歌川\r\n                    continue;\r\n                } else if (descByCode.equals(\"鐭俊\")) {\r\n                    //鐭俊\r\n                    //瀵箄rl涓袱涓弬鏁板姞瀵哱r\n                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);\r\n\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        //鍏堝垽鏂竴涓嬶紝subIds鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛屽彧鎵цsubIds閲岀殑鎮h�匼r\n                        if (CollectionUtils.isNotEmpty(subIds)) {\r\n                            boolean contains = subIds.contains(serviceSubtask.getId());\r\n                            //濡傛灉contains涓嶄负true,璇存槑褰撳墠鐨勬偅鑰呭凡缁忓彂閫佹垚鍔燂紝鐩存帴寰幆涓嬩竴涓汉灏辫\r\n                            if (!contains) continue;\r\n                        }\r\n\r\n                        try {\r\n                            String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);\r\n                            String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);\r\n                            SendMagParam sendMagParam = new SendMagParam();\r\n                            sendMagParam.setType(\"4\");\r\n                            if (type == 1) {\r\n                                //闅忚\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setParam6(subId);\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n//                                sendMagParam.setUrl(ip + \":\" + req_path + \"/followvisit/particty?param1=\" + taskId + \"&param2=\" + patid + \"&param5=false\");\r\n                                //杞垚16杩涘埗\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                sendMagParam.setUrl(ip + \":\" + req_path + \"/sf?p=\" + format);\r\n                                if (visitHosp == 2) {\r\n                                    sendMagParam.setContent(\"鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                } else if (visitHosp == 1) {\r\n                                    sendMagParam.setContent(\"銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"濉啓銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                }\r\n\r\n                            } else if (type == 2) {\r\n                                //闂埜锛堥棶棰橈級\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setParam6(subId);\r\n//                                serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()));\r\n                                serviceOutPath.setParam3(ivrTask1.getTaskName());\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n//                                sendMagParam.setUrl(ip + \":\" + req_path + \"/outsideChainwt?param1=\" + taskId + \"&param2=\" + patid + \"&param3=\" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + \"&param5=false\");\r\n                                sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                sendMagParam.setUrl(ip + \":\" + req_path + \"/wt?p=\" + format);\r\n                                if (serviceSubtask.getOrgid().equals(\"47255004333112711A1001\")) {\r\n                                    sendMagParam.setContent(\"銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                } else if (serviceSubtask.getOrgid().equals(\"47255004333112711A1001\")) {\r\n                                    sendMagParam.setContent(\"銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                } else\r\n                                    sendMagParam.setContent(\"銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"濉啓銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                            } else if (type == 3) {\r\n                                //瀹f暀\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setParam6(subId);\r\n                                serviceOutPath.setParam3(ivrTask1.getTaskName());\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                //闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡\r\n                                HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());\r\n                                if (heLibrary.getHetype().equals(\"1\")) {\r\n                                    sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                    sendMagParam.setUrl(ip + \":\" + req_path + \"/xj?p=\" + format);\r\n                                    if (serviceSubtask.getOrgid().equals(\"47255004333112711A1001\")) {\r\n                                        sendMagParam.setContent(\"銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                    } else if (serviceSubtask.getOrgid().equals(\"47255004333112711A1001\")) {\r\n                                        sendMagParam.setContent(\"銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                    } else\r\n                                        sendMagParam.setContent(\"銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                } else {\r\n                                    //閫氱煡\r\n                                    sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                    sendMagParam.setContent(heLibrary.getPreachcontent());\r\n                                }\r\n                            }\r\n                            //鐭俊杩橀渶瑕佹ā鏉縗r\n                            String s = null;\r\n                            if (visitHosp == 1) {\r\n                                //鏂板崕鐨勭煭淇″彂閫佹柟寮廫r\n                                Map<String, String> req = new HashMap<>();\r\n                                req.put(\"phone\", sendMagParam.getPhone());\r\n                                req.put(\"content\", sendMagParam.getContent());\r\n                                s = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));\r\n                            } else if (visitHosp == 2) {\r\n                                String url = configService.selectConfigByKey(\"token.360\",serviceSubtask.getOrgid());\r\n                                //涓芥按鐨勭煭淇″彂閫佹柟寮廫r\n                                Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());\r\n                                String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(),url);\r\n                                log.info(\"-----------token鐨勫�间负锛歿}\", token);\r\n                                if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get(\"address\"))) {\r\n                                    ServiceSubtask ss = new ServiceSubtask();\r\n                                    ss.setResult(\"error\");\r\n                                    ss.setRemark(\"鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�\");\r\n                                    ss.setSendstate(5L);\r\n                                    ss.setId(serviceSubtask.getId());\r\n//                                    ss.setFinishtime(new Date());\r\n                                    serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                    continue;\r\n                                }\r\n                                log.info(\"---------mq涓芥按鐭俊鍙戦�佸叆鍙俛ddress锛歿},  sendMagParam:{},  orgid:{}-------\", map.get(\"address\"), sendMagParam, serviceSubtask.getOrgid());\r\n                                String dxCode = getDXCode(map.get(\"address\"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get(\"sendPersonId\"), map.get(\"sendPersonName\"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);\r\n                                log.info(\"---------涓芥按鐭俊鍙戦�佺粨鏋滐細{}-------\", dxCode);\r\n                                ObjectMapper objectMapper = new ObjectMapper();\r\n                                Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);\r\n                                String code = textParam.get(\"Code\").toString();\r\n                                if (code.equals(\"0\")) {\r\n                                    s = \"true\";\r\n                                } else {\r\n                                    throw new BaseException(null);\r\n                                }\r\n                            }\r\n                            if (s.equals(\"true\")) {\r\n                                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓媆r\n                                String uuid = UUID.randomUUID().toString();\r\n                                serviceSubtask.setResult(\"success\");\r\n                                serviceSubtask.setRemark(\"鐭俊鍙戦�佹垚鍔焅");\r\n                                serviceSubtask.setGuid(uuid);\r\n                                serviceSubtask.setSendstate(3L);\r\n                                serviceSubtask.setFinishtime(new Date());\r\n                                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                                //浠诲姟鍙戦�佽褰昞r\n                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                                serviceSubtaskRecord.setUuid(uuid);\r\n                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                                serviceSubtaskRecord.setPreachform(\"5\");\r\n                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                                serviceSubtaskRecord.setResult(\"success\");\r\n                                serviceSubtaskRecord.setRemark(\"鐭俊鍙戦�佹垚鍔焅");\r\n                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                                log.error(\"serviceSubtaskRecord淇濆瓨鎴愬姛浜嗗悧锛燂細{}\", serviceSubtaskRecord);\r\n                            }\r\n                        } catch (Exception e) {\r\n                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                            serviceSubtaskRecord.setPreachform(\"4\");\r\n                            serviceSubtaskRecord.setResult(\"fail\");\r\n                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                            serviceSubtaskRecord.setRemark(\"鐭俊鍙戦�佸け璐");\r\n                            log.error(\"鐭俊鍙戦�佸け璐ワ細{}\", e.getMessage());\r\n                            lssubIds.add(serviceSubtask.getId());\r\n                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                            continue;\r\n                        }\r\n\r\n\r\n                    }\r\n                    if (CollectionUtils.isEmpty(lssubIds)) {\r\n                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜哱r\n                        isSend = true;\r\n                    }\r\n                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓璡r\n                    subIds.clear();\r\n                    subIds.addAll(lssubIds);\r\n                    lssubIds.clear();\r\n                } else if (descByCode.equals(\"鍏紬鍙穃")) {\r\n                    //鍏紬鍙穃r\n                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);\r\n                        try {\r\n                            SendMagParam sendMagParam = new SendMagParam();\r\n                            sendMagParam.setType(\"5\");\r\n                            String url = null;\r\n                            Boolean aBoolean = false;\r\n                            if (type == 1) {\r\n                                //闅忚\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                url = ip + \":\" + req_path + \"/sf?p=\" + format;\r\n                            } else if (type == 2) {\r\n                                //闂埜\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n//                                serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()));\r\n                                serviceOutPath.setParam3(ivrTask1.getTaskName());\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                url = ip + \":\" + req_path + \"/wt?p=\" + format;\r\n                            } else if (type == 3) {\r\n                                //瀹f暀\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setParam3(ivrTask1.getTaskName());\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                url = ip + \":\" + req_path + \"/xj?p=\" + format;\r\n                            }\r\n                            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid());\r\n                            if (StringUtils.isEmpty(patArchive.getPatidHis())) {\r\n                                ServiceSubtask ss = new ServiceSubtask();\r\n                                ss.setResult(\"error\");\r\n                                ss.setRemark(\"鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖\");\r\n                                ss.setSendstate(5L);\r\n                                ss.setId(serviceSubtask.getId());\r\n//                                ss.setFinishtime(new Date());\r\n                                serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                continue;\r\n                            }\r\n\r\n                            //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D\r\n                            log.error(\"鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D锛歿}\", patArchive.getOrgid());\r\n                            List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());\r\n                            if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {\r\n                                ServiceSubtask ss = new ServiceSubtask();\r\n                                ss.setResult(\"error\");\r\n                                ss.setRemark(\"璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫乗");\r\n                                ss.setSendstate(5L);\r\n                                ss.setId(serviceSubtask.getId());\r\n//                                ss.setFinishtime(new Date());\r\n                                serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                continue;\r\n                            }\r\n\r\n\r\n                            String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskName(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(), wxqqxx);\r\n                            log.error(\"wxCode鐨勫�间负:{}\", wxCode);\r\n                            Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);\r\n                            log.error(\"map鐨勫�间负:{}\", map);\r\n                            if (!map.isEmpty()) {\r\n                                serviceSubtask.setResult(\"success\");\r\n                                serviceSubtask.setSendstate(3L);\r\n                                log.error(\"aBoolean鐨勫�间负:{}\", aBoolean);\r\n                                if (map.get(\"succ\").toString().equals(\"true\")) {\r\n                                    aBoolean = true;\r\n                                }\r\n                                if (aBoolean == false) {\r\n                                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                                    serviceSubtaskRecord.setPreachform(\"5\");\r\n                                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                                    serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get(\"msg\")) ? map.get(\"msg\").toString() : null);\r\n                                    lssubIds.add(serviceSubtask.getId());\r\n                                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                                    continue;\r\n                                }\r\n                            }\r\n                        } catch (Exception e) {\r\n                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                            serviceSubtaskRecord.setPreachform(\"5\");\r\n                            serviceSubtaskRecord.setResult(\"fail\");\r\n                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                            serviceSubtaskRecord.setRemark(\"鍏紬鍙峰彂閫佸け璐");\r\n                            log.error(\"鍏紬鍙峰彂閫佸け璐ワ細{}\", e.getMessage());\r\n                            lssubIds.add(serviceSubtask.getId());\r\n                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                            continue;\r\n                        }\r\n                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓媆r\n                        String uuid = UUID.randomUUID().toString();\r\n                        serviceSubtask.setResult(\"success\");\r\n                        serviceSubtask.setRemark(\"鍏紬鍙峰彂閫佹垚鍔焅");\r\n                        serviceSubtask.setGuid(uuid);\r\n                        serviceSubtask.setSendstate(3L);\r\n                        serviceSubtask.setFinishtime(new Date());\r\n                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                        //浠诲姟鍙戦�佽褰昞r\n                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                        serviceSubtaskRecord.setUuid(uuid);\r\n                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                        serviceSubtaskRecord.setPreachform(\"5\");\r\n                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                        serviceSubtaskRecord.setResult(\"success\");\r\n                        serviceSubtaskRecord.setRemark(\"鍏紬鍙峰彂閫佹垚鍔焅");\r\n                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                    }\r\n                    if (CollectionUtils.isEmpty(lssubIds)) {\r\n                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜哱r\n                        isSend = true;\r\n                    }\r\n                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓璡r\n                    subIds.clear();\r\n                    subIds.addAll(lssubIds);\r\n                    lssubIds.clear();\r\n                }\r\n                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛塡r\n            }\r\n            if (CollectionUtils.isNotEmpty(subIds)) {\r\n                //濡傛灉鍏ㄩ儴鐨勫彂閫佹柟寮忛兘鍙戝畬浜嗭紝杩樻湁鏄湭鍙戦�佺殑,闇�瑕佸幓subTask琛ㄤ腑锛岃褰曚竴涓嬶紝鍙戦�佸け璐r\n                for (Long id : subIds) {\r\n                    ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n                    serviceSubtask.setResult(\"error\");\r\n                    serviceSubtask.setRemark(\"鍙戦�佸け璐");\r\n                    serviceSubtask.setSendstate(5L);\r\n                    serviceSubtask.setId(id);\r\n//                    serviceSubtask.setFinishtime(new Date());\r\n                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n                }\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    //    /**\r\n//     * 鏈哄櫒浜虹涓�鍙ヨ瘽璇煶\r\n//     * concurrency = \"50\"  骞跺彂鏁颁负50\r\n//     */\r\n//    @RabbitListener(queues = \"ob_queue\", concurrency = \"50\")\r\n//    public void obVisit(String content, Message message, Channel channel) throws IOException {\r\n//        try {\r\n//            IvrTaskcallPhoneMQ commonTaskcallMQ = null;\r\n//            ObjectMapper mapper = new ObjectMapper();\r\n//            commonTaskcallMQ = mapper.readValue(content, IvrTaskcallPhoneMQ.class);\r\n//            //鍒ゆ柇鎮h�呮槸鍚﹀凡缁忔帴鐢佃瘽\r\n//            String str = redisCache.getCacheObject(commonTaskcallMQ.getUuid() + \"state_id\");\r\n//            System.out.println(\"-----------------\" + str);\r\n//            if (StringUtils.isNotEmpty(str) && str.equals(\"0\")) {\r\n//                //鎮h�呭凡缁忔帴鍚簡鐢佃瘽\r\n//                new PhoneUtils().ttsPlayback(commonTaskcallMQ.getScript(), commonTaskcallMQ.getUuid());\r\n//            } else if (StringUtils.isNotEmpty(str) && str.equals(\"-10\")) {\r\n//                //杩欎釜璇存槑,宸茬粡鎵撲簡鎸囧畾閬嶆暟杩樻槸娌℃湁浜烘帴锛屽彲浠ュ皢娑堟伅浠庨槦鍒椾腑绉婚櫎浜哱r\n//                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);\r\n//                return;\r\n//            } else {\r\n//                //杩涜闃熷垪灏鹃儴锛岃繘琛屼笅涓�娆℃牎楠孿r\n////                channel.basicRecover(false);\r\n//                channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);\r\n//                System.out.println(\"++++++++++++++++++++++\" + str);\r\n//                return;\r\n//            }\r\n//            //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛塡r\n//            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);\r\n//        } catch (Exception e) {\r\n//            log.error(\"============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!==============\");\r\n//            log.error(e.getMessage());\r\n//            channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);\r\n//        }\r\n//    }\r\n    private String getKey() {\r\n        Map<String, String> map = new HashMap<>();\r\n        for (int i = 0; i < 6; i++) {\r\n            Boolean aBoolean = redisCache.hasKey(\"cache-\" + i);\r\n            if (!aBoolean) {\r\n                redisCache.setCacheObject(\"cache-\" + i, \"\");\r\n                map.put(\"cache-\" + i, \"\");\r\n            } else {\r\n                map.put(\"cache-\" + i, redisCache.getCacheObject(\"cache-\" + i));\r\n            }\r\n        }\r\n\r\n        String key = null;\r\n        String value = \"\";\r\n        for (Map.Entry<String, String> entry : map.entrySet()) {\r\n            if (StringUtils.isEmpty(value)) {\r\n                value = entry.getValue();\r\n                key = entry.getKey();\r\n            } else {\r\n                if (entry.getValue().split(\",\").length < value.split(\",\").length) {\r\n                    value = entry.getValue();\r\n                    key = entry.getKey();\r\n                }\r\n            }\r\n        }\r\n        return key;\r\n    }\r\n\r\n    private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String patientname, String setPatientid, List<String> wxqqxx) {\r\n        XinHuaWXReq xinHuaWXReq = new XinHuaWXReq();\r\n        xinHuaWXReq.setIdcard(idcard);\r\n        xinHuaWXReq.setUrl(url);\r\n        xinHuaWXReq.setPatientid(setPatientid);\r\n        xinHuaWXReq.setPatientname(patientname);\r\n        xinHuaWXReq.setMobile(phone);\r\n        xinHuaWXReq.setMedcardno(null);\r\n        xinHuaWXReq.setTitlename(taskName);\r\n        xinHuaWXReq.setContent(taskDesc);\r\n        xinHuaWXReq.setAppid(wxqqxx.get(1));\r\n        log.error(\"-----寰俊鍏紬鍙风殑鍑哄弬涓�----锛歿}\", xinHuaWXReq);\r\n//         new Gson().toJson(xinHuaWXReq);\r\n        GsonBuilder gb = new GsonBuilder();\r\n        gb.disableHtmlEscaping();\r\n        String body = gb.create().toJson(xinHuaWXReq);\r\n\r\n        log.error(\"encode鐨勫叆鍙備负wxqqxx 锛歿},   body:{}\", wxqqxx.get(2), body);\r\n        String encode = encode(wxqqxx.get(2).concat(body));\r\n        log.error(\"--------encode鐨勫�间负锛歿}-----\", encode);\r\n        Map<String, String> headerMap = new HashMap<>();\r\n        headerMap.put(\"sign\", encode);\r\n        String result = HttpUtils.sendPostByHeader(wxqqxx.get(3), body, headerMap);\r\n        log.error(\"--------result鐨勫�间负锛歿}-----\", result);\r\n\r\n        JSONObject jsonObject = JSONObject.parseObject(result);\r\n        String code = (String) jsonObject.toString();\r\n        return code;\r\n    }\r\n\r\n\r\n    private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) {\r\n        Map<String, Object> map = new LinkedHashMap<>();\r\n\r\n        Map<String, Object> YeWuXX = new LinkedHashMap<>();\r\n        Map<String, Object> DuanXinXX = new LinkedHashMap<>();\r\n        DuanXinXX.put(\"ShouJiHM\", ShouJiHM);\r\n        DuanXinXX.put(\"FaSongNR\", FaSongNR);\r\n        DuanXinXX.put(\"FaSongRID\", FaSongRID);\r\n        DuanXinXX.put(\"FaSongRXM\", FaSongRXM);\r\n        YeWuXX.put(\"DuanXinXX\", DuanXinXX);\r\n\r\n        map.put(\"XiaoXiTou\", headerMap);\r\n        map.put(\"YeWuXX\", YeWuXX);\r\n\r\n        String body = new Gson().toJson(map);\r\n\r\n//        String result = HttpUtils.sendPost(address, body);\r\n        String result = null;\r\n        try {\r\n            result = OkHttpExample.sendPostRequest(address, body, token);\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n        log.error(\"--------result鐨勫�间负锛歿}-----\", result);\r\n\r\n        JSONObject jsonObject = JSONObject.parseObject(result);\r\n        String code = (String) jsonObject.toString();\r\n        return code;\r\n    }\r\n\r\n\r\n    public String encode(String arg) {\r\n        if (arg == null) {\r\n            arg = \"\";\r\n        }\r\n        MessageDigest md5 = null;\r\n        try {\r\n            md5 = MessageDigest.getInstance(\"MD5\");\r\n            md5.update(arg.getBytes(\"UTF-8\"));\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n        return toHex(md5.digest());\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java	(date 1758797248381)
-@@ -5,6 +5,7 @@
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- import com.ruoyi.common.core.redis.RedisCache;
-+import com.ruoyi.common.dx.MessageSend;
- import com.ruoyi.common.enums.MsgLSEnum;
- import com.ruoyi.common.enums.ServiceFromEnum;
- import com.ruoyi.common.enums.WxGZHEnum;
-@@ -17,10 +18,7 @@
- import com.ruoyi.system.service.ISysConfigService;
- import com.smartor.common.LSHospTokenUtil;
- import com.smartor.domain.*;
--import com.smartor.mapper.HeLibraryMapper;
--import com.smartor.mapper.PatArchiveMapper;
--import com.smartor.mapper.ServiceSubtaskMapper;
--import com.smartor.mapper.ServiceTaskMapper;
-+import com.smartor.mapper.*;
- import com.smartor.service.IBaseSmsaccountService;
- import com.smartor.service.IServiceOutPathService;
- import com.smartor.service.IServiceSubtaskRecordService;
-@@ -36,6 +34,8 @@
- 
- import java.io.IOException;
- import java.security.MessageDigest;
-+import java.time.LocalDateTime;
-+import java.time.format.DateTimeFormatter;
- import java.util.*;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
-@@ -65,6 +65,7 @@
-     @Autowired
-     private ServiceSubtaskMapper ivrTaskcallMapper;
- 
-+
-     @Autowired
-     private HeLibraryMapper heLibraryMapper;
- 
-@@ -83,15 +84,15 @@
-     @Autowired
-     private ServiceSubtaskMapper serviceSubtaskMapper;
- 
-+    @Autowired
-+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
-+
-     @Autowired
-     private IServiceSubtaskRecordService serviceSubtaskRecordService;
- 
-     @Autowired
-     IBaseSmsaccountService baseSmsaccountService;
- 
--    @Autowired
--    private ISysConfigService configService;
--
-     @Value("${xhsmsPath}")
-     private String xhsmsPath;
- 
-@@ -101,6 +102,9 @@
-     @Value("${server.port}")
-     private String port;
- 
-+    @Autowired
-+    private ISysConfigService configService;
-+
-     // 鍒涘缓鍥哄畾澶у皬鐨勭嚎绋嬫睜
-     private static final ExecutorService executorService = Executors.newFixedThreadPool(10);
- 
-@@ -166,535 +170,550 @@
-         //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
-         ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
- 
--//        if (ivrTask1.getStopState() != commonTaskcallMQ.getStopState()) {
--//            //灏嗘秷鎭粠闃熷垪涓墧闄�
--//            return;
--//        }
--
--        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {
--            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖
--            String[] split = commonTaskcallMQ.getPreachform().split(",");
--            log.info("split鐨勫�间负锛歿}", split);
--
--            //瀹氫箟涓�涓泦鍚堬紝鐢ㄤ笌瀛樻病鏈夋墽琛岀殑瀛愪换鍔D
--            List<Long> subIds = new ArrayList<>();
--            //涓存椂瀛樻病鏈夋墽琛岀殑瀛愪换鍔D
--            List<Long> lssubIds = new ArrayList<>();
--            //鏄惁灏嗗叏閮ㄦ偅鑰呰�呭彂閫佸畬
--            Boolean isSend = false;
--
--            aa:
--            for (String serviceFrom : split) {
--                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
--                if (isSend == true) {
--                    break aa;
--                }
--
--                //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
--                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();
--                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
--                ivrTaskcall.setSendstate(1L);
--                List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall);
--                if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {
--                    continue;
--                }
--                if (descByCode.equals("鐢佃瘽")) {
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        //鍏堝垽鏂竴涓嬶紝subIds鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛屽彧鎵цsubIds閲岀殑鎮h��
--                        if (CollectionUtils.isNotEmpty(subIds)) {
--                            boolean contains = subIds.contains(serviceSubtask.getId());
--                            //濡傛灉contains涓嶄负true,璇存槑褰撳墠鐨勬偅鑰呭凡缁忓彂閫佹垚鍔燂紝鐩存帴寰幆涓嬩竴涓汉灏辫
--                            if (!contains) continue;
--                        }
--
--                        try {
--                            ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
--                            if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
--                                //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩��
--                                break;
--                            }
--                            //鑾峰彇鍒皏alue鍊兼渶灏戠殑key
--                            String key = getKey();
--                            if (commonTaskcallMQ.getSendType().equals("2")) {
--                                //璇存槑鏄珛鍗冲彂閫�
--                                ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();
--                                serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());
--                                log.info("缂撳瓨涓璼erviceSubtask1鐨勫�间负锛歿}", serviceSubtask1);
--                                List<String> list = new ArrayList<>();
--                                List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);
--                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
--                                    list.add(serviceSubtask2.getId().toString());
--                                }
--                                log.info("缂撳瓨涓璫ache-0鐨勫�间负锛歿}", list);
--//                                redisCache.setCacheListLeft("cache-0", list);
--                                redisCache.setCacheListLeftAndDistinct("cache-0", list);
--                            } else {
--                                //闈炵珛鍗冲彂閫�
--                                ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();
--                                serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());
--                                List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);
--                                List<String> list = new ArrayList<>();
--                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
--                                    list.add(serviceSubtask2.getId().toString());
--                                }
--//                                redisCache.setCacheListLeft(key, list);
--                                redisCache.setCacheListLeftAndDistinct(key, list);
--                            }
--                        } catch (Exception exception) {
--                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                            serviceSubtaskRecord.setPreachform("3");
--                            serviceSubtaskRecord.setResult("fail");
--                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                            serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐�");
--                            log.error("闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐ワ細{}", exception.getMessage());
--                            lssubIds.add(serviceSubtask.getId());
--                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                            continue;
--                        }
--                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
--                        String uuid = UUID.randomUUID().toString();
--                        serviceSubtask.setResult("success");
--                        serviceSubtask.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�");
--                        serviceSubtask.setGuid(uuid);
--                        serviceSubtask.setSendstate(3L);
--                        serviceSubtask.setFinishtime(new Date());
--                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+        //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
-+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-+        serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
-+        serviceSubtaskVO.setSendstate(2L);
-+        List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtaskVO);
-+
-+        for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
-+            //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
-+            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid());
-+            if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
-+                //涓嶉渶瑕佸彂閫�
-+                serviceSubtask.setResult("鎮h�呬笉闇�瑕侀殢璁�");
-+                serviceSubtask.setRemark(patArchive.getNotrequiredreason());
-+                serviceSubtask.setSendstate(4L);
-+                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                continue;
-+            }
-+
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+            //鑾峰彇鍙戦�佹柟寮�
-+            String sendPreachform = getSendPreachform(serviceSubtaskPreachform, serviceSubtask);
-+            if (sendPreachform.equals("-1") || serviceSubtask.getSendstate() == 6 || serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 4) {
-+                //璇存槑宸茬粡鍏ㄩ儴閬嶅巻瀹屼簡锛屽綋鍓嶇殑鎵ц鏂瑰紡搴忓彿鏄渶鍚庝竴涓簡   鎴栬��  璇ユ偅鑰呭凡缁忛殢璁跨粨鏉燂紙鎴愬姛鎴栧け璐ヤ簡鎴栦笉鎵ц锛�
-+                continue;
-+            }
-+
-+
-+            String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(sendPreachform));
-+            if (descByCode.equals("鐢佃瘽")) {
-+                try {
-+                    ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-+                    if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
-+                        //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩��
-+                        break;
-+                    }
-+                    if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
-+                        serviceSubtask.setCurrentPreachform(sendPreachform);
-+                        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
-+                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                        setFailPreachForm(serviceSubtask, sendPreachform, "鎵嬫満鍙蜂负绌�", "4");
-+                        continue;
-+                    }
-+
-+                    //鑾峰彇鍒皏alue鍊兼渶灏戠殑key
-+                    String key = getKey();
-+                    if (commonTaskcallMQ.getSendType().equals("2")) {
-+                        //璇存槑鏄珛鍗冲彂閫�
-+                        List<String> list = new ArrayList<>();
-+                        list.add(serviceSubtask.getId().toString());
-+                        log.info("缂撳瓨涓璫ache-0鐨勫�间负锛歿}", list);
-+                        redisCache.setCacheListLeftAndDistinct("cache-0", list);
-+                    } else {
-+                        //闈炵珛鍗冲彂閫�
-+                        List<String> list = new ArrayList<>();
-+                        list.add(serviceSubtask.getId().toString());
-+                        redisCache.setCacheListLeftAndDistinct(key, list);
-+                    }
-+                } catch (Exception exception) {
-+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                    serviceSubtaskRecord.setPreachform("3");
-+                    serviceSubtaskRecord.setResult("fail");
-+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                    serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐�");
-+                    log.error("闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐ワ細{}", exception.getMessage());
-+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                    //灏嗙數璇濈姸鎬佽缃负澶辫触
-+                    setFailPreachForm(serviceSubtask, sendPreachform, "闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐�", "5");
-+
-+                    continue;
-+                }
-+                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                setFailPreachForm(serviceSubtask, sendPreachform, "闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�", "2");
- 
--                        //浠诲姟鍙戦�佽褰�
--                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                        serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                        serviceSubtaskRecord.setUuid(uuid);
--                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                        serviceSubtaskRecord.setPreachform("3");
--                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                        serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�");
--                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                    }
--                    if (CollectionUtils.isEmpty(lssubIds)) {
--                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜�
--                        isSend = true;
--                    }
--                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓�
--                    subIds.clear();
--                    subIds.addAll(lssubIds);
--                    lssubIds.clear();
--                } else if (descByCode.equals("澶氬獟浣�")) {
--                    //澶氬獟浣�
--                    continue;
--                } else if (descByCode.equals("绾歌川")) {
--                    //绾歌川
--                    continue;
--                } else if (descByCode.equals("鐭俊")) {
--                    //鐭俊
--                    //瀵箄rl涓袱涓弬鏁板姞瀵�
--                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
--                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
-+                //浠诲姟鍙戦�佽褰�
-+                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                serviceSubtaskRecord.setPreachform("3");
-+                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�");
-+                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+
-+            } else if (descByCode.equals("鐭俊")) {
-+                //鐭俊
-+                //瀵箄rl涓袱涓弬鏁板姞瀵�
-+                RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+                String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
- 
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        //鍏堝垽鏂竴涓嬶紝subIds鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛屽彧鎵цsubIds閲岀殑鎮h��
--                        if (CollectionUtils.isNotEmpty(subIds)) {
--                            boolean contains = subIds.contains(serviceSubtask.getId());
--                            //濡傛灉contains涓嶄负true,璇存槑褰撳墠鐨勬偅鑰呭凡缁忓彂閫佹垚鍔燂紝鐩存帴寰幆涓嬩竴涓汉灏辫
--                            if (!contains) continue;
--                        }
-+                if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
-+                    setFailPreachForm(serviceSubtask, sendPreachform, "鎵嬫満鍙蜂负绌�", "4");
-+                    continue;
-+                }
- 
--                        try {
--                            String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
--                            String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
--                            SendMagParam sendMagParam = new SendMagParam();
--                            sendMagParam.setType("4");
--                            if (type == 1) {
--                                //闅忚
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setParam6(subId);
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                try {
-+                    String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-+                    String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
-+                    SendMagParam sendMagParam = new SendMagParam();
-+                    sendMagParam.setType("4");
-+                    if (type == 1) {
-+                        //闅忚
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setParam6(subId);
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
- //                                sendMagParam.setUrl(ip + ":" + req_path + "/followvisit/particty?param1=" + taskId + "&param2=" + patid + "&param5=false");
--                                //杞垚16杩涘埗
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                sendMagParam.setPhone(serviceSubtask.getPhone());
--                                sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
--                                if (visitHosp == 2) {
--                                    sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                } else if (visitHosp == 1) {
--                                    sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
--                                }
-+                        //杞垚16杩涘埗
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        sendMagParam.setPhone(serviceSubtask.getPhone());
-+                        sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
-+                        if (visitHosp == 2) {
-+                            sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                        } else if (visitHosp == 1) {
-+                            sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
-+                        }
- 
--                            } else if (type == 2) {
--                                //闂埜锛堥棶棰橈級
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setParam6(subId);
-+                    } else if (type == 2) {
-+                        //闂埜锛堥棶棰橈級
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setParam6(subId);
- //                                serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()));
--                                serviceOutPath.setParam3(ivrTask1.getTaskName());
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        serviceOutPath.setParam3(ivrTask1.getTaskName());
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
- //                                sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false");
--                                sendMagParam.setPhone(serviceSubtask.getPhone());
--                                sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format);
--                                if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
--                                    sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
--                                    sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                } else
--                                    sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
--                            } else if (type == 3) {
--                                //瀹f暀
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setParam6(subId);
--                                serviceOutPath.setParam3(ivrTask1.getTaskName());
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                //闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡
--                                HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
--                                if (heLibrary.getHetype().equals("1")) {
--                                    sendMagParam.setPhone(serviceSubtask.getPhone());
--                                    sendMagParam.setUrl(ip + ":" + req_path + "/xj?p=" + format);
--                                    if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
--                                        sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                    } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
--                                        sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                    } else
--                                        sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                } else {
--                                    //閫氱煡
--                                    sendMagParam.setPhone(serviceSubtask.getPhone());
--                                    sendMagParam.setContent(heLibrary.getPreachcontent());
--                                }
--                            }
--                            //鐭俊杩橀渶瑕佹ā鏉�
--                            String s = null;
--                            if (visitHosp == 1) {
--                                //鏂板崕鐨勭煭淇″彂閫佹柟寮�
--                                Map<String, String> req = new HashMap<>();
--                                req.put("phone", sendMagParam.getPhone());
--                                req.put("content", sendMagParam.getContent());
--                                s = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
--                            } else if (visitHosp == 2) {
--                                String url = configService.selectConfigByKey("token.360",serviceSubtask.getOrgid());
--                                //涓芥按鐨勭煭淇″彂閫佹柟寮�
--                                Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
--                                String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(),url);
--                                log.info("-----------token鐨勫�间负锛歿}", token);
--                                if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
--                                    ServiceSubtask ss = new ServiceSubtask();
--                                    ss.setResult("error");
--                                    ss.setRemark("鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�");
--                                    ss.setSendstate(5L);
--                                    ss.setId(serviceSubtask.getId());
--//                                    ss.setFinishtime(new Date());
--                                    serviceSubtaskMapper.updateServiceSubtask(ss);
--                                    continue;
--                                }
--                                log.info("---------mq涓芥按鐭俊鍙戦�佸叆鍙俛ddress锛歿},  sendMagParam:{},  orgid:{}-------", map.get("address"), sendMagParam, serviceSubtask.getOrgid());
--                                String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);
--                                log.info("---------涓芥按鐭俊鍙戦�佺粨鏋滐細{}-------", dxCode);
--                                ObjectMapper objectMapper = new ObjectMapper();
--                                Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
--                                String code = textParam.get("Code").toString();
--                                if (code.equals("0")) {
--                                    s = "true";
--                                } else {
--                                    throw new BaseException(null);
--                                }
--                            }
--                            if (s.equals("true")) {
--                                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
--                                String uuid = UUID.randomUUID().toString();
--                                serviceSubtask.setResult("success");
--                                serviceSubtask.setRemark("鐭俊鍙戦�佹垚鍔�");
--                                serviceSubtask.setGuid(uuid);
--                                serviceSubtask.setSendstate(3L);
--                                serviceSubtask.setFinishtime(new Date());
--                                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--
--                                //浠诲姟鍙戦�佽褰�
--                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                                serviceSubtaskRecord.setUuid(uuid);
--                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                                serviceSubtaskRecord.setPreachform("5");
--                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                                serviceSubtaskRecord.setResult("success");
--                                serviceSubtaskRecord.setRemark("鐭俊鍙戦�佹垚鍔�");
--                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                                log.error("serviceSubtaskRecord淇濆瓨鎴愬姛浜嗗悧锛燂細{}", serviceSubtaskRecord);
--                            }
--                        } catch (Exception e) {
--                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                            serviceSubtaskRecord.setPreachform("4");
--                            serviceSubtaskRecord.setResult("fail");
--                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                            serviceSubtaskRecord.setRemark("鐭俊鍙戦�佸け璐�");
--                            log.error("鐭俊鍙戦�佸け璐ワ細{}", e.getMessage());
--                            lssubIds.add(serviceSubtask.getId());
--                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                            continue;
--                        }
-+                        sendMagParam.setPhone(serviceSubtask.getPhone());
-+                        sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format);
-+                        if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
-+                            sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                        } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
-+                            sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                        } else sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
-+                    } else if (type == 3) {
-+                        //瀹f暀
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setParam6(subId);
-+                        serviceOutPath.setParam3(ivrTask1.getTaskName());
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        //闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡
-+                        HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
-+                        if (heLibrary.getHetype().equals("1")) {
-+                            sendMagParam.setPhone(serviceSubtask.getPhone());
-+                            sendMagParam.setUrl(ip + ":" + req_path + "/xj?p=" + format);
-+                            if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
-+                                sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                            } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
-+                                sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                            } else
-+                                sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                        } else {
-+                            //閫氱煡
-+                            sendMagParam.setPhone(serviceSubtask.getPhone());
-+                            sendMagParam.setContent(heLibrary.getPreachcontent());
-+                        }
-+                    }
-+
-+                    //鐭俊杩橀渶瑕佹ā鏉�
-+                    String s = null;
-+                    if (visitHosp == 1) {
-+                        //鏂板崕鐨勭煭淇″彂閫佹柟寮�
-+                        Map<String, String> req = new HashMap<>();
-+                        req.put("phone", sendMagParam.getPhone());
-+                        req.put("content", sendMagParam.getContent());
-+                        s = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
-+                    } else if (visitHosp == 2) {
-+                        String url = configService.selectConfigByKey("token.360", serviceSubtask.getOrgid());
-+                        //涓芥按鐨勭煭淇″彂閫佹柟寮�
-+                        Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
-+                        String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(), url);
-+                        log.info("-----------token鐨勫�间负锛歿}", token);
-+                        if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
-+                            serviceSubtask.setCurrentPreachform(sendPreachform);
-+                            serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
-+                            setFailPreachForm(serviceSubtask, descByCode, "鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�", "5");
-+                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                            continue;
-+                        }
-+                        log.info("---------mq涓芥按鐭俊鍙戦�佸叆鍙俛ddress锛歿},  sendMagParam:{},  orgid:{}-------", map.get("address"), sendMagParam, serviceSubtask.getOrgid());
-+                        String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);
-+                        log.info("---------涓芥按鐭俊鍙戦�佺粨鏋滐細{}-------", dxCode);
-+                        ObjectMapper objectMapper = new ObjectMapper();
-+                        Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
-+                        String code = textParam.get("Code").toString();
-+                        if (code.equals("0")) {
-+                            s = "true";
-+                        } else {
-+                            setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
-+                            throw new BaseException("鐭俊鍙戦�佸け璐�");
-+                        }
-+                    } else if (visitHosp == 3) {
-+                        //鐪佺珛鍚屽痉鐨勭煭淇″彂閫佹柟寮�
-+                        JSONObject data = MessageSend.sendMsg(sendMagParam.getContent(), "2", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
-+                        String code = data.get("code").toString();
-+                        if (StringUtils.isNotEmpty(code) && code.equals("00000")) {
-+                            s = "true";
-+                        } else {
-+                            setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
-+                            throw new BaseException("鐭俊鍙戦�佸け璐�");
-+                        }
-+                    }
-+                    if (s.equals("true")) {
-+                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                        setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佹垚鍔�", "2");
-+                        //浠诲姟鍙戦�佽褰�
-+                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                        serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                        serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                        serviceSubtaskRecord.setPreachform("5");
-+                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                        serviceSubtaskRecord.setResult("success");
-+                        serviceSubtaskRecord.setRemark("鐭俊鍙戦�佹垚鍔�");
-+                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                        log.error("serviceSubtaskRecord淇濆瓨鎴愬姛浜嗗悧锛燂細{}", serviceSubtaskRecord);
-+                    } else {
-+                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                        setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
-+                    }
-+                } catch (Exception e) {
-+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                    serviceSubtaskRecord.setPreachform("4");
-+                    serviceSubtaskRecord.setResult("fail");
-+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                    serviceSubtaskRecord.setRemark("鐭俊鍙戦�佸け璐�");
-+                    log.error("鐭俊鍙戦�佸け璐ワ細{}", e.getMessage());
-+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                    setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
-+                    continue;
-+                }
- 
--
--                    }
--                    if (CollectionUtils.isEmpty(lssubIds)) {
--                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜�
--                        isSend = true;
--                    }
--                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓�
--                    subIds.clear();
--                    subIds.addAll(lssubIds);
--                    lssubIds.clear();
--                } else if (descByCode.equals("鍏紬鍙�")) {
--                    //鍏紬鍙�
--                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
--                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
--                        try {
--                            SendMagParam sendMagParam = new SendMagParam();
--                            sendMagParam.setType("5");
--                            String url = null;
--                            Boolean aBoolean = false;
--                            if (type == 1) {
--                                //闅忚
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                url = ip + ":" + req_path + "/sf?p=" + format;
--                            } else if (type == 2) {
--                                //闂埜
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--//                                serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()));
--                                serviceOutPath.setParam3(ivrTask1.getTaskName());
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                url = ip + ":" + req_path + "/wt?p=" + format;
--                            } else if (type == 3) {
--                                //瀹f暀
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setParam3(ivrTask1.getTaskName());
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                url = ip + ":" + req_path + "/xj?p=" + format;
--                            }
--                            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid());
--                            if (StringUtils.isEmpty(patArchive.getPatidHis())) {
--                                ServiceSubtask ss = new ServiceSubtask();
--                                ss.setResult("error");
--                                ss.setRemark("鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖");
--                                ss.setSendstate(5L);
--                                ss.setId(serviceSubtask.getId());
--//                                ss.setFinishtime(new Date());
--                                serviceSubtaskMapper.updateServiceSubtask(ss);
--                                continue;
--                            }
-+            } else if (descByCode.equals("鍏紬鍙�")) {
-+                //鍏紬鍙�
-+                RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+                String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
-+                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-+
-+                try {
-+                    SendMagParam sendMagParam = new SendMagParam();
-+                    sendMagParam.setType("5");
-+                    String url = null;
-+                    Boolean aBoolean = false;
-+                    if (type == 1) {
-+                        //闅忚
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        url = ip + ":" + req_path + "/sf?p=" + format;
-+                    } else if (type == 2) {
-+                        //闂埜
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setParam3(ivrTask1.getTaskName());
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        url = ip + ":" + req_path + "/wt?p=" + format;
-+                    } else if (type == 3) {
-+                        //瀹f暀
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setParam3(ivrTask1.getTaskName());
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        url = ip + ":" + req_path + "/xj?p=" + format;
-+                    }
-+                    if (StringUtils.isEmpty(patArchive.getPatidHis())) {
-+                        serviceSubtask.setCurrentPreachform(sendPreachform);
-+                        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
-+                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                        //澶辫触璁板綍
-+                        setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖", "5");
-+                        continue;
-+                    }
- 
--                            //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
--                            log.error("鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D锛歿}", patArchive.getOrgid());
--                            List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
--                            if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
--                                ServiceSubtask ss = new ServiceSubtask();
--                                ss.setResult("error");
--                                ss.setRemark("璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�");
--                                ss.setSendstate(5L);
--                                ss.setId(serviceSubtask.getId());
--//                                ss.setFinishtime(new Date());
--                                serviceSubtaskMapper.updateServiceSubtask(ss);
--                                continue;
--                            }
-+                    //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
-+                    log.error("鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D锛歿}", patArchive.getOrgid());
-+                    List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
-+                    if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
-+                        serviceSubtask.setCurrentPreachform(sendPreachform);
-+                        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
-+                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+
-+                        //澶辫触璁板綍
-+                        setFailPreachForm(serviceSubtask, sendPreachform, "璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�", "5");
-+                        continue;
-+                    }
- 
- 
--                            String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskName(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(), wxqqxx);
--                            log.error("wxCode鐨勫�间负:{}", wxCode);
--                            Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
--                            log.error("map鐨勫�间负:{}", map);
--                            if (!map.isEmpty()) {
--                                serviceSubtask.setResult("success");
--                                serviceSubtask.setSendstate(3L);
--                                log.error("aBoolean鐨勫�间负:{}", aBoolean);
--                                if (map.get("succ").toString().equals("true")) {
--                                    aBoolean = true;
--                                }
--                                if (aBoolean == false) {
--                                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                                    serviceSubtaskRecord.setPreachform("5");
--                                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                                    serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get("msg")) ? map.get("msg").toString() : null);
--                                    lssubIds.add(serviceSubtask.getId());
--                                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                                    continue;
--                                }
--                            }
--                        } catch (Exception e) {
--                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                            serviceSubtaskRecord.setPreachform("5");
--                            serviceSubtaskRecord.setResult("fail");
--                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                            serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佸け璐�");
--                            log.error("鍏紬鍙峰彂閫佸け璐ワ細{}", e.getMessage());
--                            lssubIds.add(serviceSubtask.getId());
--                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                            continue;
--                        }
--                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
--                        String uuid = UUID.randomUUID().toString();
--                        serviceSubtask.setResult("success");
--                        serviceSubtask.setRemark("鍏紬鍙峰彂閫佹垚鍔�");
--                        serviceSubtask.setGuid(uuid);
--                        serviceSubtask.setSendstate(3L);
--                        serviceSubtask.setFinishtime(new Date());
--                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--
--                        //浠诲姟鍙戦�佽褰�
--                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                        serviceSubtaskRecord.setUuid(uuid);
--                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                        serviceSubtaskRecord.setPreachform("5");
--                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                        serviceSubtaskRecord.setResult("success");
--                        serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佹垚鍔�");
--                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                    }
--                    if (CollectionUtils.isEmpty(lssubIds)) {
--                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜�
--                        isSend = true;
--                    }
--                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓�
--                    subIds.clear();
--                    subIds.addAll(lssubIds);
--                    lssubIds.clear();
--                }
--                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
--            }
--            if (CollectionUtils.isNotEmpty(subIds)) {
--                //濡傛灉鍏ㄩ儴鐨勫彂閫佹柟寮忛兘鍙戝畬浜嗭紝杩樻湁鏄湭鍙戦�佺殑,闇�瑕佸幓subTask琛ㄤ腑锛岃褰曚竴涓嬶紝鍙戦�佸け璐�
--                for (Long id : subIds) {
--                    ServiceSubtask serviceSubtask = new ServiceSubtask();
--                    serviceSubtask.setResult("error");
--                    serviceSubtask.setRemark("鍙戦�佸け璐�");
-+                    String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskName(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(), wxqqxx);
-+                    log.error("wxCode鐨勫�间负:{}", wxCode);
-+                    Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
-+                    log.error("map鐨勫�间负:{}", map);
-+                    if (!map.isEmpty()) {
-+                        serviceSubtask.setResult("success");
-+                        serviceSubtask.setSendstate(3L);
-+                        log.error("aBoolean鐨勫�间负:{}", aBoolean);
-+                        if (map.get("succ").toString().equals("true")) {
-+                            aBoolean = true;
-+                        }
-+                        if (aBoolean == false) {
-+                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                            serviceSubtaskRecord.setPreachform("5");
-+                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                            serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get("msg")) ? map.get("msg").toString() : null);
-+                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                            //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                            setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�", "5");
-+                            continue;
-+                        }
-+                    }
-+                } catch (Exception e) {
-+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                    serviceSubtaskRecord.setPreachform("5");
-+                    serviceSubtaskRecord.setResult("fail");
-+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                    serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佸け璐�");
-+                    log.error("鍏紬鍙峰彂閫佸け璐ワ細{}", e.getMessage());
-+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                    //澶辫触璁板綍
-+                    setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�", "5");
-+                    continue;
-+                }
-+                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佹垚鍔�", "2");
-+                //浠诲姟鍙戦�佽褰�
-+                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                serviceSubtaskRecord.setPreachform("5");
-+                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                serviceSubtaskRecord.setResult("success");
-+                serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佹垚鍔�");
-+                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+
-+            }
-+        }
-+
-+    }
-+
-+    private Date getNextVisitTime(Long subid, Long taskid, Date visitTime, String currentPreachform) {
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(subid);
-+        serviceSubtaskPreachform.setTaskid(taskid);
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            Optional<String> ct = serviceSubtaskPreachforms.stream().filter(item -> currentPreachform.equals(item.getPreachform())).map(ServiceSubtaskPreachform::getCompensateTime).findFirst();
-+            String compensateTime = "0";
-+            if (ct.isPresent()) compensateTime = ct.get();
-+            int hoursToAdd = Integer.valueOf(compensateTime) * 24;
-+            Calendar calendar = Calendar.getInstance();
-+            calendar.setTime(visitTime);
-+            calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd);
-+            Date newDate = calendar.getTime();
-+            return newDate;
-+        }
-+        return visitTime;
-+    }
-+
-+    private String getSendPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform, ServiceSubtask serviceSubtask) {
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        // 鎯呭喌1锛歝urrentPreachform涓虹┖锛屽彇sort涓�1鐨刾reachform
-+        if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
-+            return serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
-+        }
-+
-+        // 鎯呭喌2锛歝urrentPreachform涓嶄负绌猴紝鎵句笅涓�涓猻ort
-+        Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
-+
-+        if (currentSort.isPresent()) {
-+            // 妫�鏌ユ槸鍚︽墍鏈塻endstate涓嶇瓑浜�9
-+            boolean allSendStateNot1AndNot9 = serviceSubtaskPreachforms.stream().allMatch(item -> !item.getSendstate().equals("9"));
-+
-+            // 褰搒ort绛変簬鍒楄〃size鏃讹紝骞朵笖鎵�鏈塻endstate閮戒笉绛変簬9锛屽垯杩斿洖-1
-+            if (currentSort.get().equals((long) serviceSubtaskPreachforms.size())) {
-+                if (allSendStateNot1AndNot9) {
-+                    //璇存槑鍏ㄥ彂閫佸け璐ヤ簡
-                     serviceSubtask.setSendstate(5L);
--                    serviceSubtask.setId(id);
--//                    serviceSubtask.setFinishtime(new Date());
-                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-                 }
-+                return "-1";
-             }
-+
-+            // 褰搒ort绛変簬鍒楄〃size鏃讹紝涓嬩竴涓猻ort涓�-1
-+            Long nextSort = currentSort.get() + 1;
-+
-+            // 鎵惧埌涓嬩竴涓猻ort瀵瑰簲鐨刾reachform
-+            return serviceSubtaskPreachforms.stream().filter(item -> nextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
-         }
- 
-+        return null;
-     }
- 
--    //    /**
--//     * 鏈哄櫒浜虹涓�鍙ヨ瘽璇煶
--//     * concurrency = "50"  骞跺彂鏁颁负50
--//     */
--//    @RabbitListener(queues = "ob_queue", concurrency = "50")
--//    public void obVisit(String content, Message message, Channel channel) throws IOException {
--//        try {
--//            IvrTaskcallPhoneMQ commonTaskcallMQ = null;
--//            ObjectMapper mapper = new ObjectMapper();
--//            commonTaskcallMQ = mapper.readValue(content, IvrTaskcallPhoneMQ.class);
--//            //鍒ゆ柇鎮h�呮槸鍚﹀凡缁忔帴鐢佃瘽
--//            String str = redisCache.getCacheObject(commonTaskcallMQ.getUuid() + "state_id");
--//            System.out.println("-----------------" + str);
--//            if (StringUtils.isNotEmpty(str) && str.equals("0")) {
--//                //鎮h�呭凡缁忔帴鍚簡鐢佃瘽
--//                new PhoneUtils().ttsPlayback(commonTaskcallMQ.getScript(), commonTaskcallMQ.getUuid());
--//            } else if (StringUtils.isNotEmpty(str) && str.equals("-10")) {
--//                //杩欎釜璇存槑,宸茬粡鎵撲簡鎸囧畾閬嶆暟杩樻槸娌℃湁浜烘帴锛屽彲浠ュ皢娑堟伅浠庨槦鍒椾腑绉婚櫎浜�
--//                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
--//                return;
--//            } else {
--//                //杩涜闃熷垪灏鹃儴锛岃繘琛屼笅涓�娆℃牎楠�
--////                channel.basicRecover(false);
--//                channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
--//                System.out.println("++++++++++++++++++++++" + str);
--//                return;
--//            }
--//            //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
--//            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
--//        } catch (Exception e) {
--//            log.error("============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!==============");
--//            log.error(e.getMessage());
--//            channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
--//        }
--//    }
--    private String getKey() {
--        Map<String, String> map = new HashMap<>();
--        for (int i = 0; i < 6; i++) {
--            Boolean aBoolean = redisCache.hasKey("cache-" + i);
--            if (!aBoolean) {
--                redisCache.setCacheObject("cache-" + i, "");
--                map.put("cache-" + i, "");
--            } else {
--                map.put("cache-" + i, redisCache.getCacheObject("cache-" + i));
--            }
--        }
--
--        String key = null;
--        String value = "";
--        for (Map.Entry<String, String> entry : map.entrySet()) {
--            if (StringUtils.isEmpty(value)) {
--                value = entry.getValue();
--                key = entry.getKey();
--            } else {
--                if (entry.getValue().split(",").length < value.split(",").length) {
--                    value = entry.getValue();
--                    key = entry.getKey();
--                }
-+
-+    /**
-+     * @param serviceSubtask
-+     * @param preachform
-+     * @param remark
-+     * @param failSendstate
-+     * @return
-+     */
-+    public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
-+        //灏嗙姸鎬佽缃负澶辫触
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+        //鑾峰彇璇ユ偅鑰呯殑鍙戦�佹柟寮忔�绘暟
-+        List<ServiceSubtaskPreachform> spSize = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        serviceSubtaskPreachform.setPreachform(preachform);
-+        //1:鏈彂閫佺姸鎬�
-+        serviceSubtaskPreachform.setSendstate("1");
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
-+            serviceSubtaskPreachform1.setSendstate(failSendstate);
-+            serviceSubtaskPreachform1.setRemark(remark);
-+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
-+            //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡,骞朵笖鏈杩樻槸鍙戦�佸け璐ワ紝閭g洿鎺ュ皢serviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
-+            if (serviceSubtaskPreachform1.getSort() == spSize.size()) {
-+                if (serviceSubtaskPreachform1.getSort() == spSize.size()) {
-+                    if (failSendstate.equals("4") || failSendstate.equals("5")) {
-+                        serviceSubtask.setCurrentPreachform(preachform);
-+                        serviceSubtask.setSendstate(5L);
-+                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                        return true;
-+                    }
-+                }
-+            }
-+        } else {
-+            log.error("銆怣Q涓鎮h�呮病鏈夋煡璇㈠埌灞炰簬浠栫殑鍙戦�佹柟寮忥紝subid锛歿},prechform:{},orgid:{}銆�", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid());
-+            return false;
-+        }
-+
-+        serviceSubtask.setCurrentPreachform(preachform);
-+        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
-+        serviceSubtask.setSendstate(3L);
-+        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+        return true;
-+    }
-+
-+    private String getKey() {
-+        String targetKey = null;
-+        long minSize = Long.MAX_VALUE;
-+
-+        for (int i = 1; i < 6; i++) {
-+            String key = "cache-" + i;
-+
-+            // 鑾峰彇 list 鐨勯暱搴︼紙鍗� value 鐨勫厓绱犱釜鏁帮級
-+            Long size = redisCache.getListSize(key);
-+            if (size == null) {
-+                size = 0L; // 濡傛灉 key 涓嶅瓨鍦紝璁や负鏄� 0
-             }
-+
-+            // 鍙栨渶灏忓��
-+            if (size < minSize) {
-+                minSize = size;
-+                targetKey = key;
-+            }
-         }
--        return key;
-+        return targetKey;
-     }
-+
-+//    private String getKey() {
-+//        Map<String, List> map = new HashMap<>();
-+//        for (int i = 0; i < 6; i++) {
-+//            Boolean aBoolean = redisCache.hasKey("cache-" + i);
-+//            if (!aBoolean) {
-+//                redisCache.setCacheList("cache-" + i, new ArrayList<String>());
-+//                map.put("cache-" + i, new ArrayList<String>());
-+//            } else {
-+//                map.put("cache-" + i, redisCache.getCacheObject("cache-" + i));
-+//            }
-+//        }
-+//
-+//        String key = null;
-+//        List<String> value = new ArrayList<String>();
-+//        for (Map.Entry<String, List> entry : map.entrySet()) {
-+//            if (CollectionUtils.isEmpty(value)) {
-+//                value = entry.getValue();
-+//                key = entry.getKey();
-+//            } else {
-+//                value = entry.getValue();
-+//                key = entry.getKey();
-+//            }
-+//        }
-+//        return key;
-+//    }
- 
-     private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String patientname, String setPatientid, List<String> wxqqxx) {
-         XinHuaWXReq xinHuaWXReq = new XinHuaWXReq();
-Index: smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.reflect.TypeToken;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.http.HttpUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.PatMedOuthospMapper;\r\nimport com.smartor.mapper.SysUser2Mapper;\r\nimport com.smartor.mapper.SysUserImportMapper;\r\nimport com.smartor.service.IPatArchiveService;\r\nimport com.smartor.service.IPatMedInhospService;\r\nimport com.smartor.service.IServiceSLTDHealthcareRecordService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.lang.reflect.Array;\r\nimport java.lang.reflect.Type;\r\nimport java.text.ParseException;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.*;\r\n\r\n@Slf4j\r\n@Service\r\npublic class ServiceSLTDHealthcareRecordServiceImpl implements IServiceSLTDHealthcareRecordService {\r\n\r\n    private static final String DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\r\n    private static final String APP_KEY = \"ak-zUMiOWhqXiJQWPB1pCbz0pjr\";\r\n\r\n    @Autowired\r\n    private IPatArchiveService patArchiveService;\r\n\r\n    @Autowired\r\n    private IPatMedInhospService patMedInhospService;\r\n\r\n    @Autowired\r\n    private PatMedOuthospMapper patMedOuthospMapper;\r\n\r\n    @Autowired\r\n    private SysUser2Mapper sysUser2Mapper;\r\n\r\n    @Value(\"${sltd_pub_path}\")\r\n    private String sltdPubPath;\r\n\r\n    @Override\r\n    public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {\r\n        log.info(\"銆恞ueryHealthcareRecordList銆戝紑濮嬭皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙o紝璇锋眰鍙傛暟锛歿}\", reqVO);\r\n        try {\r\n            Map<String, Object> requestParams = buildRequestParams(reqVO);\r\n            Map<String, String> headers = buildRequestHeaders();\r\n            String result = HttpUtils.sendPostByHeader(sltdPubPath + \"osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList\", new Gson().toJson(requestParams), headers);\r\n            log.info(\"銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滐細{}\", result);\r\n\r\n            String cry = determineCry(reqVO);\r\n            return parseResponseData(result, reqVO.getHealthcareRecordTypeList().get(0), cry);\r\n        } catch (Exception e) {\r\n            log.error(\"銆恞ueryHealthcareRecordList銆戣皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙e紓甯革紝璇锋眰鍙傛暟锛歿}\", reqVO, e);\r\n            throw new RuntimeException(\"璋冪敤鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨ鎺ュ彛澶辫触\", e);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param reqVO\r\n     * @return\r\n     */\r\n    @Override\r\n    public Boolean queryHospUserInfoList(ServiceSLTDInhospReqVO reqVO) {\r\n        Map<String, Object> requestParams = buildRequestParams(reqVO);\r\n        Map<String, String> headers = buildRequestHeaders();\r\n        String result = HttpUtils.sendPostByHeader(sltdPubPath + \"osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList\", new Gson().toJson(requestParams), headers);\r\n        log.info(\"銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滐細{}\", result);\r\n        List<Map<String, Object>> dataList = getDataList(result);\r\n        for (Map<String, Object> dataItem : dataList) {\r\n            SysUser sysUser = new SysUser();\r\n            sysUser.setUserName(getStringValue(dataItem, \"accountNo\"));\r\n            sysUser.setNickName(getStringValue(dataItem, \"name\"));\r\n            List diagnosisObjList = (List<?>) dataItem.get(\"qualifications\");\r\n            if (CollectionUtils.isNotEmpty(diagnosisObjList)) {\r\n                for (Object diagnosis : diagnosisObjList) {\r\n                    if (diagnosis instanceof Map) {\r\n                        Map<String, Object> diagnosisMap = (Map<String, Object>) diagnosis;\r\n                        String professionalTitleName = getStringValue(diagnosisMap, \"professionalTitleName\");\r\n                        if (professionalTitleName.contains(\"鍖诲笀\")) sysUser.setUserType(\"鍖荤敓\");\r\n                        if (professionalTitleName.contains(\"鎶")) sysUser.setUserType(\"鎶ゅ+\");\r\n                        sysUser.setTitle(getStringValue(diagnosisMap, \"professionalTitleName\"));\r\n                    }\r\n                }\r\n            }\r\n            sysUser.setDeptCode(getStringValue(dataItem, \"accountNo\"));\r\n            sysUser.setDeptName(getStringValue(dataItem, \"personnelDeptName\"));\r\n            sysUser.setPhonenumber(getStringValue(dataItem, \"telephone\"));\r\n            //璁剧疆鎬у埆\r\n            String genderName = getStringValue(dataItem, \"genderName\");\r\n            if (\"鐢穃".equals(genderName)) sysUser.setSex(\"0\");\r\n            else if (\"濂砛".equals(genderName)) sysUser.setSex(\"1\");\r\n            else sysUser.setSex(\"2\");\r\n\r\n            sysUser.setCreateTime(new Date());\r\n            sysUser.setUpdateTime(new Date());\r\n            sysUser.setUpdateBy(\"admin\");\r\n            sysUser.setCreateBy(\"admin\");\r\n\r\n            sysUser2Mapper.insertUser(sysUser);\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    private String determineCry(ServiceSLTDInhospReqVO reqVO) {\r\n        if (reqVO.getHealthcareRecordTypeList().contains(\"FH0108.02\")) {\r\n            if (reqVO.getStartHeadTime() != null && reqVO.getStartTailTime() != null) {\r\n                return \"0\";\r\n            } else if (reqVO.getPreOutHospitalHeadDate() != null && reqVO.getPreOutHospitalTailDate() != null) {\r\n                return \"1\";\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private Map<String, Object> buildRequestParams(ServiceSLTDInhospReqVO reqVO) {\r\n        Map<String, Object> params = new HashMap<>();\r\n        if (reqVO.getOrgId() != null) {\r\n            params.put(\"orgId\", Long.parseLong(reqVO.getOrgId()));\r\n        }\r\n        if (reqVO.getCampusIds() != null) {\r\n            params.put(\"campusIds\", reqVO.getCampusIds());\r\n        }\r\n        if (reqVO.getStartHeadTime() != null) {\r\n            params.put(\"startHeadTime\", reqVO.getStartHeadTime());\r\n        }\r\n        if (reqVO.getStartTailTime() != null) {\r\n            params.put(\"startTailTime\", reqVO.getStartTailTime());\r\n        }\r\n        if (reqVO.getHealthcareRecordTypeList() != null && !reqVO.getHealthcareRecordTypeList().isEmpty()) {\r\n            params.put(\"healthcareRecordTypeList\", reqVO.getHealthcareRecordTypeList());\r\n        }\r\n        params.put(\"subjectCode\", reqVO.getPatientName());\r\n        params.put(\"healthcareRecordNo\", reqVO.getHealthcareRecordNo());\r\n        params.put(\"orgSubjectCode\", reqVO.getIdCardNo());\r\n        if (reqVO.getDeptIdList() != null && !reqVO.getDeptIdList().isEmpty()) {\r\n            params.put(\"deptDimensions\", reqVO.getDeptIdList());\r\n        }\r\n        params.put(\"serviceScopes\", null);\r\n        params.put(\"inpatientArea\", null);\r\n        params.put(\"status\", reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty() ? reqVO.getStatusList() : null);\r\n        return params;\r\n    }\r\n\r\n    private Map<String, String> buildRequestHeaders() {\r\n        Map<String, String> headers = new HashMap<>();\r\n        headers.put(\"Content-Type\", \"application/json\");\r\n        headers.put(\"app-key\", APP_KEY);\r\n        return headers;\r\n    }\r\n\r\n    private List<ServiceSLTDInhospResDTO> parseResponseData(String result, String type, String cry) {\r\n        try {\r\n\r\n            List<Map<String, Object>> dataList = getDataList(result);\r\n            List<ServiceSLTDInhospResDTO> resultList = new ArrayList<>();\r\n            for (Map<String, Object> dataItem : dataList) {\r\n                resultList.add(convertToDTO(dataItem));\r\n            }\r\n            log.info(\"銆恜arseResponseData銆戞垚鍔熻В鏋恵}鏉″仴搴疯褰曟暟鎹甛", resultList.size());\r\n\r\n            processResultList(resultList, type, cry);\r\n            return resultList;\r\n        } catch (Exception e) {\r\n            log.error(\"銆恜arseResponseData銆戣В鏋愬搷搴旀暟鎹紓甯革紝鍝嶅簲鍐呭锛歿}\", result, e);\r\n            throw new RuntimeException(\"瑙f瀽鍝嶅簲鏁版嵁澶辫触\", e);\r\n        }\r\n    }\r\n\r\n    public List<Map<String, Object>> getDataList(String result) {\r\n        Gson gson = new Gson();\r\n        Type mapType = new TypeToken<Map<String, Object>>() {\r\n        }.getType();\r\n        Map<String, Object> responseMap = gson.fromJson(result, mapType);\r\n\r\n        Number codeObj = (Number) responseMap.get(\"code\");\r\n        if (codeObj == null || codeObj.intValue() != 200) {\r\n            log.error(\"銆恜arseResponseData銆戞帴鍙h繑鍥炲け璐ワ紝鍝嶅簲鐮侊細{}锛屽搷搴斿唴瀹癸細{}\", codeObj, result);\r\n            throw new RuntimeException(\"鎺ュ彛璋冪敤澶辫触锛屽搷搴旂爜锛歕" + codeObj);\r\n        }\r\n\r\n        Object dataObj = responseMap.get(\"data\");\r\n        if (dataObj == null) {\r\n            log.warn(\"銆恜arseResponseData銆戞帴鍙h繑鍥炴暟鎹负绌篭");\r\n            return new ArrayList<>();\r\n        }\r\n\r\n        String dataJson = gson.toJson(dataObj);\r\n        Type listType = new TypeToken<List<Map<String, Object>>>() {\r\n        }.getType();\r\n        List<Map<String, Object>> dataList = gson.fromJson(dataJson, listType);\r\n        return dataList;\r\n    }\r\n\r\n    private void processResultList(List<ServiceSLTDInhospResDTO> resultList, String type, String cry) {\r\n        switch (type) {\r\n            case \"FH0108.01\":\r\n                log.info(\"銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹甛");\r\n                outHospitalDate(resultList);\r\n                break;\r\n            case \"FH0108.02\":\r\n                log.info(\"銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹甛");\r\n                inHospitalDate(resultList, cry);\r\n                break;\r\n            case \"FH0108.03\":\r\n                log.info(\"銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁\");\r\n                outHospitalDate(resultList);\r\n                break;\r\n            default:\r\n                log.warn(\"銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}\", type);\r\n                break;\r\n        }\r\n    }\r\n\r\n    private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {\r\n        for (ServiceSLTDInhospResDTO dto : resultList) {\r\n            PatArchive patArchive = processPatientArchive(dto);\r\n            PatMedOuthosp patMedOuthosp = buildPatMedOuthosp(dto, patArchive);\r\n            patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp);\r\n        }\r\n        return true;\r\n    }\r\n\r\n    private PatMedOuthosp buildPatMedOuthosp(ServiceSLTDInhospResDTO dto, PatArchive patArchive) {\r\n        PatMedOuthosp patMedOuthosp = new PatMedOuthosp();\r\n        patMedOuthosp.setOuthospno(dto.getHealthcareRecordNo());\r\n        patMedOuthosp.setSerialnum(dto.getHealthcareRecordNo());\r\n        patMedOuthosp.setPatid(patArchive.getId());\r\n        patMedOuthosp.setPatname(patArchive.getName());\r\n        patMedOuthosp.setPatno(patArchive.getPatientno());\r\n        patMedOuthosp.setDeptcode(\"\" + dto.getDeptId());\r\n        patMedOuthosp.setDeptname(dto.getDeptName());\r\n        patMedOuthosp.setDiagname(dto.getDiagnosisName());\r\n        patMedOuthosp.setIcd10code(dto.getDiagnosisCode());\r\n        patMedOuthosp.setDrcode(\"\" + dto.getDoctorId());\r\n        patMedOuthosp.setDrname(dto.getDoctorName());\r\n        patMedOuthosp.setAdmitdate(parseDate(dto.getLastEncounterTime()));\r\n        patMedOuthosp.setSchemestatus(1L);\r\n        patMedOuthosp.setMainsuit(dto.getDiagnosisName());\r\n        patMedOuthosp.setHpi(null);\r\n        patMedOuthosp.setCreateTime(new Date());\r\n        return patMedOuthosp;\r\n    }\r\n\r\n    private Date parseDate(String dateStr) {\r\n        try {\r\n            return new SimpleDateFormat(DATE_FORMAT).parse(dateStr);\r\n        } catch (ParseException e) {\r\n            log.warn(\"銆恜arseDate銆戣В鏋愭棩鏈熷け璐ワ細{}\", dateStr, e);\r\n            return null;\r\n        }\r\n    }\r\n\r\n    private Boolean inHospitalDate(List<ServiceSLTDInhospResDTO> resultList, String cry) {\r\n        for (ServiceSLTDInhospResDTO dto : resultList) {\r\n            PatArchive patArchive = processPatientArchive(dto);\r\n            processPatientInhospInfo(dto, patArchive, cry);\r\n        }\r\n        return true;\r\n    }\r\n\r\n    private void processPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry) {\r\n        PatMedInhosp patMedInhosp = buildPatientInhospInfo(dto, patArchive, cry);\r\n        PatMedInhosp queryInhosp = new PatMedInhosp();\r\n        queryInhosp.setPatno(patArchive.getPatientno());\r\n        queryInhosp.setSerialnum(patMedInhosp.getSerialnum());\r\n        List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhospList(queryInhosp);\r\n\r\n        if (CollectionUtils.isNotEmpty(existingInhosps)) {\r\n            patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid());\r\n            patMedInhospService.updatePatMedInhosp(patMedInhosp);\r\n            log.debug(\"銆恜rocessPatientInhospInfo銆戞洿鏂颁綇闄俊鎭紝鎮h�呯紪鍙凤細{}锛屾祦姘村彿锛歿}\", patArchive.getPatientno(), patMedInhosp.getSerialnum());\r\n        } else {\r\n            patMedInhospService.insertPatMedInhosp(patMedInhosp);\r\n            log.debug(\"銆恜rocessPatientInhospInfo銆戞柊澧炰綇闄俊鎭紝鎮h�呯紪鍙凤細{}锛屾祦姘村彿锛歿}\", patArchive.getPatientno(), patMedInhosp.getSerialnum());\r\n        }\r\n    }\r\n\r\n    private PatMedInhosp buildPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry) {\r\n        PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n        patMedInhosp.setPatid(patArchive.getId());\r\n        patMedInhosp.setPatno(patArchive.getPatientno());\r\n        patMedInhosp.setPatname(patArchive.getName());\r\n        patMedInhosp.setNurseId(dto.getChiefNurseId() == null ? \"\" : dto.getChiefNurseId().toString());\r\n        patMedInhosp.setNurseName(dto.getChiefNurseName());\r\n        patMedInhosp.setSerialnum(dto.getHealthcareRecordNo());\r\n        patMedInhosp.setFuflag(\"1\");\r\n        patMedInhosp.setInhospstate(\"0\".equals(cry) ? \"0\" : \"1\");\r\n        patMedInhosp.setHospitalcode(dto.getOrgId());\r\n        patMedInhosp.setBedNo(dto.getBedNumber());\r\n        patMedInhosp.setStarttime(parseDate(dto.getStartTime()));\r\n        patMedInhosp.setEndtime(parseDate(dto.getPreOutHospitalDate()));\r\n\r\n        if (\"1\".equals(cry)) {\r\n            setDischargeInfo(patMedInhosp, dto);\r\n        } else {\r\n            setAdmissionInfo(patMedInhosp, dto);\r\n        }\r\n\r\n        patMedInhosp.setDrname(dto.getDoctorName());\r\n        patMedInhosp.setDrcode(\"\" + dto.getDoctorId());\r\n        patMedInhosp.setSchemestatus(\"0\".equals(cry) ? 1L : 2L);\r\n        patMedInhosp.setDelFlag(\"0\");\r\n        patMedInhosp.setOrgid(\"1\");\r\n        return patMedInhosp;\r\n    }\r\n\r\n    private void setDischargeInfo(PatMedInhosp patMedInhosp, ServiceSLTDInhospResDTO dto) {\r\n        patMedInhosp.setLeaveldeptcode(\"\" + dto.getDeptId());\r\n        patMedInhosp.setLeaveldeptname(dto.getDeptName());\r\n        patMedInhosp.setLeavediagname(dto.getMainDischargeDiagnosis() == null ? null : dto.getMainDischargeDiagnosis().getDiagnosisDictName());\r\n        patMedInhosp.setLeaveicd10code(dto.getMainDischargeDiagnosis() == null ? null : dto.getMainDischargeDiagnosis().getDiagnosisDictCode());\r\n        patMedInhosp.setOutWayId(null);\r\n        patMedInhosp.setOutWayName(null);\r\n        patMedInhosp.setLeavehospitaldistrictid(\"\" + dto.getAreaId());\r\n        patMedInhosp.setLeavehospitaldistrictcode(\"\" + dto.getAreaId());\r\n        patMedInhosp.setLeavehospitaldistrictname(dto.getAreaName());\r\n        patMedInhosp.setLeaveldeptid(\"\" + dto.getDeptId());\r\n    }\r\n\r\n    private void setAdmissionInfo(PatMedInhosp patMedInhosp, ServiceSLTDInhospResDTO dto) {\r\n        patMedInhosp.setDeptcode(\"\" + dto.getDeptId());\r\n        patMedInhosp.setDeptname(dto.getDeptName());\r\n        patMedInhosp.setDiagname(dto.getAdmissionDiagnosisName());\r\n        patMedInhosp.setIcd10code(dto.getAdmissionDiagnosisCode());\r\n        patMedInhosp.setHospitaldistrictid(\"\" + dto.getAreaId());\r\n        patMedInhosp.setHospitaldistrictcode(\"\" + dto.getAreaId());\r\n        patMedInhosp.setHospitaldistrictname(dto.getAreaName());\r\n    }\r\n\r\n    private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) {\r\n        PatArchive queryArchive = new PatArchive();\r\n        queryArchive.setIdcardno(dto.getIdCardNo().trim());\r\n        List<PatArchive> existingArchives = patArchiveService.selectPatArchiveList(queryArchive);\r\n\r\n        PatArchive patArchive = buildPatientArchive(dto);\r\n\r\n        if (CollectionUtils.isEmpty(existingArchives)) {\r\n            patArchiveService.insertPatArchive(patArchive);\r\n            log.debug(\"銆恜rocessPatientArchive銆戞柊澧炴偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}\", patArchive.getPatientno());\r\n        } else {\r\n            patArchive.setId(existingArchives.get(0).getId());\r\n            patArchiveService.updateArchive(patArchive);\r\n            log.debug(\"銆恜rocessPatientArchive銆戞洿鏂版偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}\", patArchive.getPatientno());\r\n        }\r\n\r\n        return patArchive;\r\n    }\r\n\r\n    private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto) {\r\n        PatArchive patArchive = new PatArchive();\r\n        patArchive.setPatientno(dto.getMedicalRecordNo());\r\n        patArchive.setIdcardno(dto.getIdCardNo().trim());\r\n        patArchive.setName(dto.getPatientName());\r\n        patArchive.setSourcefrom(2);\r\n        patArchive.setPattype(\"2\");\r\n        patArchive.setSex(\"鐢穃".equals(dto.getGender()) ? 1L : 2L);\r\n        patArchive.setNation(dto.getNation());\r\n        patArchive.setNativePlace(dto.getNativePlace());\r\n        patArchive.setPlaceOfResidence(dto.getAddress());\r\n        patArchive.setBirthdate(parseDate(dto.getBirthday()));\r\n        patArchive.setTelcode(dto.getPhone());\r\n        if (CollectionUtils.isNotEmpty(dto.getResidentContactInfos())) {\r\n            patArchive.setRelativetelcode(dto.getResidentContactInfos().get(0).getTelecom());\r\n        }\r\n        patArchive.setDelFlag(\"0\");\r\n        patArchive.setCreateTime(new Date());\r\n        patArchive.setUpdateTime(new Date());\r\n        return patArchive;\r\n    }\r\n\r\n    private ServiceSLTDInhospResDTO convertToDTO(Map<String, Object> dataItem) {\r\n        ServiceSLTDInhospResDTO dto = new ServiceSLTDInhospResDTO();\r\n        dto.setOrgId(getStringValue(dataItem, \"orgId\"));\r\n        dto.setHealthcareRecordId(getLongValue(dataItem, \"healthcareRecordId\"));\r\n        dto.setHealthcareRecordNo(getStringValue(dataItem, \"healthcareRecordNo\"));\r\n        dto.setPatientId(getLongValue(dataItem, \"patientId\"));\r\n        dto.setPatientName(getStringValue(dataItem, \"patientName\"));\r\n        dto.setPinyin(getStringValue(dataItem, \"pinyin\"));\r\n        dto.setNation(getStringValue(dataItem, \"nation\"));\r\n        dto.setIdCardNo(getStringValue(dataItem, \"idCardNo\"));\r\n        dto.setHealthcareRecordTimes(getIntegerValue(dataItem, \"healthcareRecordTimes\"));\r\n        dto.setHospitalizationNumber(getIntegerValue(dataItem, \"hospitalizationNumber\"));\r\n        dto.setMedicalCardId(getLongValue(dataItem, \"medicalCardId\"));\r\n        dto.setMedicalCardType(getStringValue(dataItem, \"medicalCardType\"));\r\n        dto.setMedicalCardTypeName(getStringValue(dataItem, \"medicalCardTypeName\"));\r\n        dto.setMedicalCardNo(getStringValue(dataItem, \"medicalCardNo\"));\r\n        dto.setMedicalRecordNo(getStringValue(dataItem, \"medicalRecordNo\"));\r\n        dto.setGender(getStringValue(dataItem, \"gender\"));\r\n        dto.setGenderCode(getStringValue(dataItem, \"genderCode\"));\r\n        dto.setAge(getStringValue(dataItem, \"age\"));\r\n        dto.setBirthday(getStringValue(dataItem, \"birthday\"));\r\n        dto.setPhone(getStringValue(dataItem, \"phone\"));\r\n        dto.setEducation(getStringValue(dataItem, \"education\"));\r\n        dto.setEducationCode(getStringValue(dataItem, \"educationCode\"));\r\n        dto.setNeonatal(getBooleanValue(dataItem, \"neonatal\"));\r\n        dto.setMarriage(getStringValue(dataItem, \"marriage\"));\r\n        dto.setMarriageCode(getStringValue(dataItem, \"marriageCode\"));\r\n        dto.setOccupationType(getStringValue(dataItem, \"occupationType\"));\r\n        dto.setOccupationTypeCode(getStringValue(dataItem, \"occupationTypeCode\"));\r\n        dto.setNativePlace(getStringValue(dataItem, \"nativePlace\"));\r\n        dto.setAreaId(getLongValue(dataItem, \"areaId\"));\r\n        dto.setAreaName(getStringValue(dataItem, \"areaName\"));\r\n        dto.setRoomId(getLongValue(dataItem, \"roomId\"));\r\n        dto.setRoomNumber(getStringValue(dataItem, \"roomNumber\"));\r\n        dto.setBedId(getLongValue(dataItem, \"bedId\"));\r\n        dto.setBedNumber(getStringValue(dataItem, \"bedNumber\"));\r\n        dto.setEncounterTime(getStringValue(dataItem, \"encounterTime\"));\r\n        dto.setStartTime(getStringValue(dataItem, \"startTime\"));\r\n        dto.setPreOutHospitalDate(getStringValue(dataItem, \"preOutHospitalDate\"));\r\n        dto.setLastEncounterTime(getStringValue(dataItem, \"lastEncounterTime\"));\r\n        dto.setDiagnosisCode(getStringValue(dataItem, \"diagnosisCode\"));\r\n        dto.setDiagnosisName(getStringValue(dataItem, \"diagnosisName\"));\r\n        dto.setHealthcareRecordStatus(getStringValue(dataItem, \"healthcareRecordStatus\"));\r\n        dto.setHealthcareType(getStringValue(dataItem, \"healthcareType\"));\r\n        dto.setDeptId(getLongValue(dataItem, \"deptId\"));\r\n        dto.setDeptName(getStringValue(dataItem, \"deptName\"));\r\n        dto.setDoctorId(getLongValue(dataItem, \"doctorId\"));\r\n        dto.setDoctorName(getStringValue(dataItem, \"doctorName\"));\r\n        dto.setHealthcarePeriodId(getLongValue(dataItem, \"healthcarePeriodId\"));\r\n        dto.setChiefNurseId(getLongValue(dataItem, \"chiefNurseId\"));\r\n        dto.setChiefNurseName(getStringValue(dataItem, \"chiefNurseName\"));\r\n        dto.setCostCategoryName(getStringValue(dataItem, \"costCategoryName\"));\r\n        dto.setCostCategoryCode(getStringValue(dataItem, \"costCategoryCode\"));\r\n        dto.setCostNatureName(getStringValue(dataItem, \"costNatureName\"));\r\n        dto.setCostNatureCode(getStringValue(dataItem, \"costNatureCode\"));\r\n        dto.setFurtherConsultationStatus(getIntegerValue(dataItem, \"furtherConsultationStatus\"));\r\n\r\n        Object contactsObj = dataItem.get(\"residentContactInfos\");\r\n        if (contactsObj instanceof List) {\r\n            dto.setResidentContactInfos(parseContacts((List<?>) contactsObj));\r\n        }\r\n\r\n        Object diagnosisObj = dataItem.get(\"diagnosisList\");\r\n        if (diagnosisObj instanceof List) {\r\n            dto.setDiagnosisList(parseDiagnosis((List<?>) diagnosisObj));\r\n        }\r\n\r\n        return dto;\r\n    }\r\n\r\n    private List<ServiceSLTDContactsResDTO> parseContacts(List<?> contactsList) {\r\n        List<ServiceSLTDContactsResDTO> contacts = new ArrayList<>();\r\n        for (Object contactObj : contactsList) {\r\n            if (contactObj instanceof Map) {\r\n                Map<String, Object> contactMap = (Map<String, Object>) contactObj;\r\n                ServiceSLTDContactsResDTO contact = new ServiceSLTDContactsResDTO();\r\n                contact.setName(getStringValue(contactMap, \"name\"));\r\n                contact.setRelationshipCode(getStringValue(contactMap, \"relationshipCode\"));\r\n                contact.setRelationship(getStringValue(contactMap, \"relationship\"));\r\n                contact.setTelecom(getStringValue(contactMap, \"telecom\"));\r\n                contact.setCurrentAddress(getStringValue(contactMap, \"currentAddress\"));\r\n                contacts.add(contact);\r\n            }\r\n        }\r\n        return contacts;\r\n    }\r\n\r\n    private List<ServiceSLTDDiagnosisResDTO> parseDiagnosis(List<?> diagnosisList) {\r\n        List<ServiceSLTDDiagnosisResDTO> diagnosis = new ArrayList<>();\r\n        for (Object diagnosisObj : diagnosisList) {\r\n            if (diagnosisObj instanceof Map) {\r\n                Map<String, Object> diagnosisMap = (Map<String, Object>) diagnosisObj;\r\n                ServiceSLTDDiagnosisResDTO diag = new ServiceSLTDDiagnosisResDTO();\r\n                diag.setDiagnosisDictCode(getStringValue(diagnosisMap, \"diagnosisDictCode\"));\r\n                diag.setDiagnosisDictName(getStringValue(diagnosisMap, \"diagnosisDictName\"));\r\n                diag.setDiagnosisCategory(getStringValue(diagnosisMap, \"diagnosisCategory\"));\r\n                diag.setRecordType(getIntegerValue(diagnosisMap, \"recordType\"));\r\n                diag.setIsMainDiagnosis(getIntegerValue(diagnosisMap, \"isMainDiagnosis\"));\r\n                diagnosis.add(diag);\r\n            }\r\n        }\r\n        return diagnosis;\r\n    }\r\n\r\n    private String getStringValue(Map<String, Object> map, String key) {\r\n        Object value = map.get(key);\r\n        return value != null ? value.toString() : null;\r\n    }\r\n\r\n    private Long getLongValue(Map<String, Object> map, String key) {\r\n        Object value = map.get(key);\r\n        if (value == null) return null;\r\n        if (value instanceof Number) {\r\n            return ((Number) value).longValue();\r\n        }\r\n        try {\r\n            return Long.parseLong(value.toString());\r\n        } catch (NumberFormatException e) {\r\n            return null;\r\n        }\r\n    }\r\n\r\n    private Integer getIntegerValue(Map<String, Object> map, String key) {\r\n        Object value = map.get(key);\r\n        if (value == null) return null;\r\n        if (value instanceof Number) {\r\n            return ((Number) value).intValue();\r\n        }\r\n        try {\r\n            return Integer.parseInt(value.toString());\r\n        } catch (NumberFormatException e) {\r\n            return null;\r\n        }\r\n    }\r\n\r\n    private Boolean getBooleanValue(Map<String, Object> map, String key) {\r\n        Object value = map.get(key);\r\n        if (value == null) return null;\r\n        if (value instanceof Boolean) {\r\n            return (Boolean) value;\r\n        }\r\n        return Boolean.parseBoolean(value.toString());\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java	(date 1758797474854)
-@@ -2,24 +2,28 @@
- 
- import com.google.gson.Gson;
- import com.google.gson.reflect.TypeToken;
-+import com.ruoyi.common.core.domain.entity.SysDept;
- import com.ruoyi.common.core.domain.entity.SysUser;
-+import com.ruoyi.common.core.domain.entity.SysUserDept;
-+import com.ruoyi.common.core.domain.entity.SysUserRole;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.common.utils.http.HttpUtils;
- import com.smartor.domain.*;
--import com.smartor.mapper.PatMedOuthospMapper;
--import com.smartor.mapper.SysUser2Mapper;
--import com.smartor.mapper.SysUserImportMapper;
-+import com.smartor.mapper.*;
- import com.smartor.service.IPatArchiveService;
- import com.smartor.service.IPatMedInhospService;
- import com.smartor.service.IServiceSLTDHealthcareRecordService;
-+import com.sun.org.apache.bcel.internal.generic.NEW;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.collections4.CollectionUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
-+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
- import org.springframework.stereotype.Service;
- 
- import java.lang.reflect.Array;
- import java.lang.reflect.Type;
-+import java.math.BigDecimal;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
-@@ -29,7 +33,7 @@
- public class ServiceSLTDHealthcareRecordServiceImpl implements IServiceSLTDHealthcareRecordService {
- 
-     private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
--    private static final String APP_KEY = "ak-zUMiOWhqXiJQWPB1pCbz0pjr";
-+    public static final String APP_KEY = "ak-zUMiOWhqXiJQWPB1pCbz0pjr";
- 
-     @Autowired
-     private IPatArchiveService patArchiveService;
-@@ -43,26 +47,129 @@
-     @Autowired
-     private SysUser2Mapper sysUser2Mapper;
- 
-+    @Autowired
-+    private SysDept2Mapper sysDeptMapper;
-+
-+    @Autowired
-+    private SysUserDeptMapper sysUserDeptMapper;
-+
-+    @Autowired
-+    private SysUserRole2Mapper sysUserRoleMapper;
-+
-     @Value("${sltd_pub_path}")
-     private String sltdPubPath;
- 
-+    @Value("${userPwd}")
-+    private String userPwd;
-+
-     @Override
-     public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {
--        log.info("銆恞ueryHealthcareRecordList銆戝紑濮嬭皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙o紝璇锋眰鍙傛暟锛歿}", reqVO);
-         try {
-+            log.info("銆恞ueryHealthcareRecordList銆戝紑濮嬭皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙o紝璇锋眰鍙傛暟锛歿}", reqVO);
-             Map<String, Object> requestParams = buildRequestParams(reqVO);
-             Map<String, String> headers = buildRequestHeaders();
-+
-             String result = HttpUtils.sendPostByHeader(sltdPubPath + "osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList", new Gson().toJson(requestParams), headers);
-             log.info("銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滐細{}", result);
- 
-             String cry = determineCry(reqVO);
--            return parseResponseData(result, reqVO.getHealthcareRecordTypeList().get(0), cry);
-+            return parseResponseData(result, reqVO.getHealthcareRecordTypeList(), cry, reqVO.getCampusId());
-         } catch (Exception e) {
-             log.error("銆恞ueryHealthcareRecordList銆戣皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙e紓甯革紝璇锋眰鍙傛暟锛歿}", reqVO, e);
-             throw new RuntimeException("璋冪敤鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨ鎺ュ彛澶辫触", e);
-         }
-     }
- 
-+
-+    /**
-+     * 閲囬泦绉戝鐥呭尯淇℃伅
-+     *
-+     * @param serviceSLTDDeptReqVO
-+     * @return 鍙傝��
-+     * {
-+     * "orgId": 20001001,
-+     * "campusIds": 30001002,
-+     * "unitIds": null,
-+     * "relationType": null,
-+     * "searchText": null,
-+     * "status": 1
-+     * }
-+     */
-+    @Override
-+    public Boolean queryDeptWardAreaInfoList(ServiceSLTDDeptReqVO serviceSLTDDeptReqVO) {
-+        log.info("銆恞ueryDeptWardAreaInfoList銆戝紑濮嬭皟鐢ㄧ渷绔嬪悓寰风瀹ょ梾鍖烘煡璇㈡帴鍙o紝璇锋眰鍙傛暟锛歿}", serviceSLTDDeptReqVO);
-+        try {
-+            Map<String, Object> params = new HashMap<>();
-+            if (serviceSLTDDeptReqVO.getOrgId() != null) {
-+                params.put("orgId", Long.parseLong(serviceSLTDDeptReqVO.getOrgId()));
-+            }
-+            if (serviceSLTDDeptReqVO.getCampusIds() != null) {
-+                params.put("campusIds", serviceSLTDDeptReqVO.getCampusIds());
-+            }
-+            params.put("subjectCode", serviceSLTDDeptReqVO.getSubjectCode());
-+            params.put("orgSubjectCode", serviceSLTDDeptReqVO.getOrgSubjectCode());
-+
-+            params.put("deptDimensions", serviceSLTDDeptReqVO.getDeptDimensions());
-+
-+            params.put("serviceScopes", serviceSLTDDeptReqVO.getServiceScopes());
-+            params.put("inpatientArea", serviceSLTDDeptReqVO.getInpatientArea());
-+            params.put("status", serviceSLTDDeptReqVO.getStatus());
-+
-+
-+            Map<String, String> headers = buildRequestHeaders();
-+            String result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/dept/queryDeptList", new Gson().toJson(params), headers);
-+            log.info("銆恞ueryDeptWardAreaInfoList銆戞帴鍙e搷搴旂粨鏋滐細{}", result);
-+            List<Map<String, Object>> dataList = getDataList(result);
-+            log.info("-----------dataList鎺ュ彛鍝嶅簲缁撴灉锛歿}", dataList.size());
-+            for (Map<String, Object> dataItem : dataList) {
-+                SysDept sysDept = new SysDept();
-+                sysDept.setOrgid("" + serviceSLTDDeptReqVO.getCampusIds().get(0));
-+                sysDept.setHisDeptId("" + getLongValue(dataItem, "deptId"));
-+                sysDept.setHisParentId(getStringValue(dataItem, "parentDeptId"));
-+                //閫氳繃his鐨勭埗绉戝ID鍘绘壘鍒扮瀹D,濉厖parentId
-+                if (StringUtils.isNotEmpty(getStringValue(dataItem, "parentDeptId"))) {
-+                    SysDept sd = new SysDept();
-+                    sd.setHisDeptId(getStringValue(dataItem, "parentDeptId"));
-+                    sd.setOrgid(getStringValue(dataItem, "orgId"));
-+                    List<SysDept> sysDepts = sysDeptMapper.selectDeptList(sd);
-+                    if (CollectionUtils.isNotEmpty(sysDepts)) {
-+                        SysDept sysDept1 = sysDepts.get(0);
-+                        sysDept.setParentId(sysDept1.getDeptId());
-+                        sysDept.setParentName(sysDept1.getDeptName());
-+                    }
-+                }
-+                sysDept.setDeptName(getStringValue(dataItem, "deptName"));
-+                Integer inpatientArea = getIntegerValue(dataItem, "inpatientArea");
-+                if (inpatientArea != null && inpatientArea == 0) sysDept.setDeptType("1");
-+                else if (inpatientArea != null && inpatientArea == 1) sysDept.setDeptType("2");
-+                sysDept.setLeader("");
-+                Integer status = getIntegerValue(dataItem, "status");
-+                if (status != null & status == 0) sysDept.setStatus("1");
-+                if (status != null & status == 1) sysDept.setStatus("0");
-+                sysDept.setType("");
-+                sysDept.setDeptCode("" + getLongValue(dataItem, "deptId"));
-+                sysDept.setCreateBy(null);
-+                sysDept.setCreateTime(new Date());
-+                sysDept.setUpdateTime(new Date());
-+                sysDept.setUpdateBy(null);
-+
-+                SysDept sysDept1 = sysDeptMapper.selectDeptByCode(sysDept.getDeptCode(), sysDept.getOrgid());
-+                if (Objects.isNull(sysDept1)) {
-+                    int i = sysDeptMapper.insertDept(sysDept);
-+                    log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁鏂板鎴愬姛锛歿}", i);
-+                } else {
-+                    sysDept.setDeptId(sysDept1.getDeptId());
-+                    int i = sysDeptMapper.updateDept(sysDept);
-+                    log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁淇敼鎴愬姛04锛歿}", i);
-+                }
-+            }
-+        } catch (Exception e) {
-+            e.printStackTrace();
-+        }
-+        return true;
-+    }
-+
-+
-     /**
-      * 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅
-      *
-@@ -73,11 +180,14 @@
-     public Boolean queryHospUserInfoList(ServiceSLTDInhospReqVO reqVO) {
-         Map<String, Object> requestParams = buildRequestParams(reqVO);
-         Map<String, String> headers = buildRequestHeaders();
--        String result = HttpUtils.sendPostByHeader(sltdPubPath + "osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList", new Gson().toJson(requestParams), headers);
-+        String result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/staff/queryStaffList", new Gson().toJson(requestParams), headers);
-         log.info("銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滐細{}", result);
-         List<Map<String, Object>> dataList = getDataList(result);
-         for (Map<String, Object> dataItem : dataList) {
-             SysUser sysUser = new SysUser();
-+            if (StringUtils.isEmpty(getStringValue(dataItem, "accountNo"))) {
-+                continue;
-+            }
-             sysUser.setUserName(getStringValue(dataItem, "accountNo"));
-             sysUser.setNickName(getStringValue(dataItem, "name"));
-             List diagnosisObjList = (List<?>) dataItem.get("qualifications");
-@@ -86,15 +196,21 @@
-                     if (diagnosis instanceof Map) {
-                         Map<String, Object> diagnosisMap = (Map<String, Object>) diagnosis;
-                         String professionalTitleName = getStringValue(diagnosisMap, "professionalTitleName");
--                        if (professionalTitleName.contains("鍖诲笀")) sysUser.setUserType("鍖荤敓");
--                        if (professionalTitleName.contains("鎶�")) sysUser.setUserType("鎶ゅ+");
-+                        if (professionalTitleName.contains("鍖诲笀")) {
-+                            sysUser.setUserType("鍖荤敓");
-+                            sysUser.setSearchscope("1");
-+                        }
-+                        if (professionalTitleName.contains("鎶�")) {
-+                            sysUser.setUserType("鎶ゅ+");
-+                            sysUser.setSearchscope("2");
-+                        }
-                         sysUser.setTitle(getStringValue(diagnosisMap, "professionalTitleName"));
-                     }
-                 }
-             }
--            sysUser.setDeptCode(getStringValue(dataItem, "accountNo"));
--            sysUser.setDeptName(getStringValue(dataItem, "personnelDeptName"));
-+
-             sysUser.setPhonenumber(getStringValue(dataItem, "telephone"));
-+            sysUser.setUserCode(getStringValue(dataItem, "jobNumber"));
-             //璁剧疆鎬у埆
-             String genderName = getStringValue(dataItem, "genderName");
-             if ("鐢�".equals(genderName)) sysUser.setSex("0");
-@@ -105,8 +221,61 @@
-             sysUser.setUpdateTime(new Date());
-             sysUser.setUpdateBy("admin");
-             sysUser.setCreateBy("admin");
-+            sysUser.setCreateBy("admin");
-+            sysUser.setOrgid(reqVO.getCampusId().toString());
-+            BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
-+            sysUser.setPassword(passwordEncoder.encode(userPwd));
- 
-             sysUser2Mapper.insertUser(sysUser);
-+
-+            // 澶勭悊鐢ㄦ埛涓庨儴闂ㄧ殑鍏崇郴
-+            List personnelDepts = (List<?>) dataItem.get("personnelDepts");
-+            if (CollectionUtils.isEmpty(personnelDepts)) {
-+                continue;
-+            }
-+
-+            List<List<String>> deptInfoList = new ArrayList<>();
-+            List<List<String>> hospInfoList = new ArrayList<>();
-+            for (Object personnelDept : personnelDepts) {
-+                if (personnelDept instanceof Map) {
-+                    Map<String, Object> personnelDeptMap = (Map<String, Object>) personnelDept;
-+//                    Long hisDeptId = (Long) personnelDeptMap.get("deptId");
-+                    String hisDeptId = getStringValue(personnelDeptMap, "deptId");
-+                    //鍦ㄨ繖閲岋紝hisDeptId灏辨槸deptCode
-+                    SysDept sysDept = sysDeptMapper.selectDeptByCode(hisDeptId, reqVO.getCampusId().toString());
-+                    if (Objects.isNull(sysDept)) continue;
-+                    SysUserDept sysUserDept = new SysUserDept();
-+                    sysUserDept.setUserId(sysUser.getUserId());
-+                    sysUserDept.setDeptType(sysDept.getDeptType());
-+                    sysUserDept.setDeptId(sysDept.getDeptId());
-+                    sysUserDept.setDeptCode(sysDept.getDeptCode());
-+                    sysUserDept.setDeptName(sysDept.getDeptName());
-+                    sysUserDept.setOrgid(sysDept.getOrgid());
-+                    sysUserDept.setCreateTime(new Date());
-+                    sysUserDept.setDelFlag(0L);
-+                    sysUserDeptMapper.insertSysUserDept(sysUserDept);
-+                    if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("1")) {
-+                        hospInfoList.add(Arrays.asList(sysDept.getDeptCode()));
-+                    } else if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("2")) {
-+                        deptInfoList.add(Arrays.asList(sysDept.getDeptCode()));
-+                    }
-+                }
-+            }
-+            //灏嗛儴闂ㄦ垜鐥呭尯鏀惧埌鎸囧畾瀛楁涓�
-+            Gson gson = new Gson();
-+            sysUser.setHospInfo(gson.toJson(hospInfoList));
-+            sysUser.setDeptInfo(gson.toJson(deptInfoList));
-+            sysUser2Mapper.updateUser(sysUser);
-+
-+            //璁剧疆涓�涓粯璁よ鑹诧紙鍖荤敓瑙掕壊锛�
-+            List<SysUserRole> userRoleList = new ArrayList();
-+            SysUserRole sur = new SysUserRole();
-+            sur.setUserId(sysUser.getUserId());
-+            sur.setRoleId(3L);
-+            sur.setOrgid(sysUser.getOrgid());
-+            userRoleList.add(sur);
-+            sysUserRoleMapper.batchUserRole(userRoleList);
-+
-         }
- 
-         return true;
-@@ -116,7 +285,7 @@
-         if (reqVO.getHealthcareRecordTypeList().contains("FH0108.02")) {
-             if (reqVO.getStartHeadTime() != null && reqVO.getStartTailTime() != null) {
-                 return "0";
--            } else if (reqVO.getPreOutHospitalHeadDate() != null && reqVO.getPreOutHospitalTailDate() != null) {
-+            } else if (StringUtils.isNotEmpty(reqVO.getPreOutHospitalHeadDate()) && StringUtils.isNotEmpty(reqVO.getPreOutHospitalTailDate())) {
-                 return "1";
-             }
-         }
-@@ -128,8 +297,8 @@
-         if (reqVO.getOrgId() != null) {
-             params.put("orgId", Long.parseLong(reqVO.getOrgId()));
-         }
--        if (reqVO.getCampusIds() != null) {
--            params.put("campusIds", reqVO.getCampusIds());
-+        if (reqVO.getCampusId() != null) {
-+            params.put("campusId", reqVO.getCampusId());
-         }
-         if (reqVO.getStartHeadTime() != null) {
-             params.put("startHeadTime", reqVO.getStartHeadTime());
-@@ -137,6 +306,18 @@
-         if (reqVO.getStartTailTime() != null) {
-             params.put("startTailTime", reqVO.getStartTailTime());
-         }
-+        if (reqVO.getEncounterTimeStart() != null) {
-+            params.put("encounterTimeStart", reqVO.getEncounterTimeStart());
-+        }
-+        if (reqVO.getEncounterTimeEnd() != null) {
-+            params.put("encounterTimeEnd", reqVO.getEncounterTimeEnd());
-+        }
-+        if (reqVO.getPreOutHospitalHeadDate() != null) {
-+            params.put("preOutHospitalHeadDate", reqVO.getPreOutHospitalHeadDate());
-+        }
-+        if (reqVO.getPreOutHospitalTailDate() != null) {
-+            params.put("preOutHospitalTailDate", reqVO.getPreOutHospitalTailDate());
-+        }
-         if (reqVO.getHealthcareRecordTypeList() != null && !reqVO.getHealthcareRecordTypeList().isEmpty()) {
-             params.put("healthcareRecordTypeList", reqVO.getHealthcareRecordTypeList());
-         }
-@@ -148,7 +329,7 @@
-         }
-         params.put("serviceScopes", null);
-         params.put("inpatientArea", null);
--        params.put("status", reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty() ? reqVO.getStatusList() : null);
-+        params.put("status", reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty() ? reqVO.getStatusList().get(0) : null);
-         return params;
-     }
- 
-@@ -159,7 +340,7 @@
-         return headers;
-     }
- 
--    private List<ServiceSLTDInhospResDTO> parseResponseData(String result, String type, String cry) {
-+    private List<ServiceSLTDInhospResDTO> parseResponseData(String result, List<String> types, String cry, Long orgid) {
-         try {
- 
-             List<Map<String, Object>> dataList = getDataList(result);
-@@ -169,7 +350,7 @@
-             }
-             log.info("銆恜arseResponseData銆戞垚鍔熻В鏋恵}鏉″仴搴疯褰曟暟鎹�", resultList.size());
- 
--            processResultList(resultList, type, cry);
-+            processResultList(resultList, types, cry, orgid);
-             return resultList;
-         } catch (Exception e) {
-             log.error("銆恜arseResponseData銆戣В鏋愬搷搴旀暟鎹紓甯革紝鍝嶅簲鍐呭锛歿}", result, e);
-@@ -182,16 +363,16 @@
-         Type mapType = new TypeToken<Map<String, Object>>() {
-         }.getType();
-         Map<String, Object> responseMap = gson.fromJson(result, mapType);
--
--        Number codeObj = (Number) responseMap.get("code");
--        if (codeObj == null || codeObj.intValue() != 200) {
--            log.error("銆恜arseResponseData銆戞帴鍙h繑鍥炲け璐ワ紝鍝嶅簲鐮侊細{}锛屽搷搴斿唴瀹癸細{}", codeObj, result);
--            throw new RuntimeException("鎺ュ彛璋冪敤澶辫触锛屽搷搴旂爜锛�" + codeObj);
-+        Number codeNum = (Number) responseMap.get("code");
-+        String code = BigDecimal.valueOf(codeNum.longValue()).toPlainString();
-+        if (StringUtils.isEmpty(code) || !code.equals("200")) {
-+            log.error("銆恜arseResponseData銆戞帴鍙h繑鍥炲け璐ワ紝鍝嶅簲鐮侊細{}锛屽搷搴斿唴瀹癸細{}", code, result);
-+            throw new RuntimeException("鎺ュ彛璋冪敤澶辫触锛屽搷搴旂爜锛�" + code);
-         }
- 
-         Object dataObj = responseMap.get("data");
-         if (dataObj == null) {
--            log.warn("銆恜arseResponseData銆戞帴鍙h繑鍥炴暟鎹负绌�");
-+            log.info("銆恜arseResponseData銆戞帴鍙h繑鍥炴暟鎹负绌�");
-             return new ArrayList<>();
-         }
- 
-@@ -202,36 +383,38 @@
-         return dataList;
-     }
- 
--    private void processResultList(List<ServiceSLTDInhospResDTO> resultList, String type, String cry) {
--        switch (type) {
--            case "FH0108.01":
--                log.info("銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹�");
--                outHospitalDate(resultList);
--                break;
--            case "FH0108.02":
--                log.info("銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹�");
--                inHospitalDate(resultList, cry);
--                break;
--            case "FH0108.03":
--                log.info("銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁");
--                outHospitalDate(resultList);
--                break;
--            default:
--                log.warn("銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}", type);
--                break;
--        }
-+    private void processResultList(List<ServiceSLTDInhospResDTO> resultList, List<String> types, String cry, Long orgid) {
-+        for (String type : types)
-+            switch (type) {
-+                case "FH0108.01":
-+                    log.info("銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹�");
-+                    outHospitalDate(resultList, orgid);
-+                    break;
-+                case "FH0108.02":
-+                    log.info("銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹�");
-+                    inHospitalDate(resultList, cry, orgid);
-+                    break;
-+                case "FH0108.03":
-+                    log.info("銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁");
-+                    outHospitalDate(resultList, orgid);
-+                    break;
-+                default:
-+                    log.warn("銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}", type);
-+                    break;
-+            }
-     }
- 
--    private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {
-+    private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList, Long orgid) {
-         for (ServiceSLTDInhospResDTO dto : resultList) {
--            PatArchive patArchive = processPatientArchive(dto);
--            PatMedOuthosp patMedOuthosp = buildPatMedOuthosp(dto, patArchive);
-+            if (Objects.isNull(dto)) continue;
-+            PatArchive patArchive = processPatientArchive(dto, orgid);
-+            PatMedOuthosp patMedOuthosp = buildPatMedOuthosp(dto, patArchive, orgid);
-             patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp);
-         }
-         return true;
-     }
- 
--    private PatMedOuthosp buildPatMedOuthosp(ServiceSLTDInhospResDTO dto, PatArchive patArchive) {
-+    private PatMedOuthosp buildPatMedOuthosp(ServiceSLTDInhospResDTO dto, PatArchive patArchive, Long orgid) {
-         PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
-         patMedOuthosp.setOuthospno(dto.getHealthcareRecordNo());
-         patMedOuthosp.setSerialnum(dto.getHealthcareRecordNo());
-@@ -249,10 +432,14 @@
-         patMedOuthosp.setMainsuit(dto.getDiagnosisName());
-         patMedOuthosp.setHpi(null);
-         patMedOuthosp.setCreateTime(new Date());
-+        patMedOuthosp.setOrgid("" + orgid);
-         return patMedOuthosp;
-     }
- 
-     private Date parseDate(String dateStr) {
-+        if (StringUtils.isEmpty(dateStr)) {
-+            return null;
-+        }
-         try {
-             return new SimpleDateFormat(DATE_FORMAT).parse(dateStr);
-         } catch (ParseException e) {
-@@ -261,21 +448,25 @@
-         }
-     }
- 
--    private Boolean inHospitalDate(List<ServiceSLTDInhospResDTO> resultList, String cry) {
-+    private Boolean inHospitalDate(List<ServiceSLTDInhospResDTO> resultList, String cry, Long orgid) {
-         for (ServiceSLTDInhospResDTO dto : resultList) {
--            PatArchive patArchive = processPatientArchive(dto);
--            processPatientInhospInfo(dto, patArchive, cry);
-+            if (Objects.isNull(dto)) continue;
-+            PatArchive patArchive = processPatientArchive(dto, orgid);
-+            processPatientInhospInfo(dto, patArchive, cry, orgid);
-         }
-         return true;
-     }
- 
--    private void processPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry) {
--        PatMedInhosp patMedInhosp = buildPatientInhospInfo(dto, patArchive, cry);
-+    private void processPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry, Long orgid) {
-+        PatMedInhosp patMedInhosp = buildPatientInhospInfo(dto, patArchive, cry, orgid);
-         PatMedInhosp queryInhosp = new PatMedInhosp();
-         queryInhosp.setPatno(patArchive.getPatientno());
-         queryInhosp.setSerialnum(patMedInhosp.getSerialnum());
-+        queryInhosp.setOrgid("" + orgid);
-+        log.info("----------------杩欓噷鐨勫叆鍙備负锛歿}", queryInhosp);
-         List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhospList(queryInhosp);
- 
-+        log.info("----------------杩欓噷鐨勮繑鍙備负锛歿}", existingInhosps);
-         if (CollectionUtils.isNotEmpty(existingInhosps)) {
-             patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid());
-             patMedInhospService.updatePatMedInhosp(patMedInhosp);
-@@ -286,7 +477,8 @@
-         }
-     }
- 
--    private PatMedInhosp buildPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry) {
-+    private PatMedInhosp buildPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry, Long orgid) {
-+        log.info("----------------buildPatientInhospInfo杩欓噷杩涙潵浜嗗悧锛焮}", cry);
-         PatMedInhosp patMedInhosp = new PatMedInhosp();
-         patMedInhosp.setPatid(patArchive.getId());
-         patMedInhosp.setPatno(patArchive.getPatientno());
-@@ -295,7 +487,8 @@
-         patMedInhosp.setNurseName(dto.getChiefNurseName());
-         patMedInhosp.setSerialnum(dto.getHealthcareRecordNo());
-         patMedInhosp.setFuflag("1");
--        patMedInhosp.setInhospstate("0".equals(cry) ? "0" : "1");
-+        if ("0".equals(cry)) patMedInhosp.setInhospstate("0");
-+        if ("1".equals(cry)) patMedInhosp.setInhospstate("1");
-         patMedInhosp.setHospitalcode(dto.getOrgId());
-         patMedInhosp.setBedNo(dto.getBedNumber());
-         patMedInhosp.setStarttime(parseDate(dto.getStartTime()));
-@@ -311,7 +504,7 @@
-         patMedInhosp.setDrcode("" + dto.getDoctorId());
-         patMedInhosp.setSchemestatus("0".equals(cry) ? 1L : 2L);
-         patMedInhosp.setDelFlag("0");
--        patMedInhosp.setOrgid("1");
-+        patMedInhosp.setOrgid("" + orgid);
-         return patMedInhosp;
-     }
- 
-@@ -338,12 +531,12 @@
-         patMedInhosp.setHospitaldistrictname(dto.getAreaName());
-     }
- 
--    private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) {
-+    private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto, Long orgid) {
-         PatArchive queryArchive = new PatArchive();
--        queryArchive.setIdcardno(dto.getIdCardNo().trim());
-+        queryArchive.setIdcardno(StringUtils.isEmpty(dto.getIdCardNo()) ? "" + dto.getMedicalCardId() : dto.getIdCardNo().trim());
-         List<PatArchive> existingArchives = patArchiveService.selectPatArchiveList(queryArchive);
- 
--        PatArchive patArchive = buildPatientArchive(dto);
-+        PatArchive patArchive = buildPatientArchive(dto, orgid);
- 
-         if (CollectionUtils.isEmpty(existingArchives)) {
-             patArchiveService.insertPatArchive(patArchive);
-@@ -357,10 +550,10 @@
-         return patArchive;
-     }
- 
--    private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto) {
-+    private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto, Long orgid) {
-         PatArchive patArchive = new PatArchive();
--        patArchive.setPatientno(dto.getMedicalRecordNo());
--        patArchive.setIdcardno(dto.getIdCardNo().trim());
-+        patArchive.setPatientno("" + dto.getPatientId());
-+        patArchive.setIdcardno(StringUtils.isEmpty(dto.getIdCardNo()) ? "" + dto.getMedicalCardId() : dto.getIdCardNo().trim());
-         patArchive.setName(dto.getPatientName());
-         patArchive.setSourcefrom(2);
-         patArchive.setPattype("2");
-@@ -376,6 +569,7 @@
-         patArchive.setDelFlag("0");
-         patArchive.setCreateTime(new Date());
-         patArchive.setUpdateTime(new Date());
-+        patArchive.setOrgid("" + orgid);
-         return patArchive;
-     }
- 
-@@ -485,7 +679,12 @@
- 
-     private String getStringValue(Map<String, Object> map, String key) {
-         Object value = map.get(key);
--        return value != null ? value.toString() : null;
-+        if (value == null) {
-+            return null;
-+        }
-+
-+        // 鍙鐞嗘暟瀛楃被鍨嬶紝閬垮厤绉戝璁℃暟娉�
-+        return value instanceof Number ? new BigDecimal(value.toString()).toPlainString() : value.toString();
-     }
- 
-     private Long getLongValue(Map<String, Object> map, String key) {
-Index: smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.alibaba.fastjson2.JSON;\r\nimport com.fasterxml.jackson.core.JsonProcessingException;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.*;\r\nimport com.smartor.common.FtpService;\r\nimport com.smartor.config.PhoneUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.*;\r\nimport com.smartor.service.*;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.data.redis.core.ListOperations;\r\nimport org.springframework.data.redis.core.RedisTemplate;\r\nimport org.springframework.stereotype.Service;\r\nimport org.springframework.transaction.annotation.Transactional;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.math.RoundingMode;\r\nimport java.text.DecimalFormat;\r\nimport java.text.SimpleDateFormat;\r\nimport java.time.Duration;\r\nimport java.time.LocalDate;\r\nimport java.time.LocalTime;\r\nimport java.time.ZoneId;\r\nimport java.time.format.DateTimeFormatter;\r\nimport java.util.*;\r\nimport java.util.concurrent.TimeUnit;\r\nimport java.util.regex.Matcher;\r\nimport java.util.regex.Pattern;\r\nimport java.util.stream.Collectors;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥殢璁匡級Service涓氬姟灞傚鐞哱r\n *\r\n * @author ruoyi\r\n * @date 2024-02-02\r\n */\r\n@Slf4j\r\n@Service\r\npublic class ServiceSubtaskServiceImpl implements IServiceSubtaskService {\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;\r\n\r\n    @Autowired\r\n    private IServiceTaskService serviceTaskService;\r\n\r\n    @Autowired\r\n    private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;\r\n\r\n    @Autowired\r\n    private IvrTaskVisitResultMapper serviceTaskVisitResultMapper;\r\n\r\n    @Autowired\r\n    private IServiceTaskdeptService serviceTaskdeptService;\r\n\r\n    @Autowired\r\n    private IServiceTaskdiagService serviceTaskdiagService;\r\n\r\n    @Autowired\r\n    private IServiceTaskoperService serviceTaskoperService;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    @Autowired\r\n    private IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper;\r\n\r\n    @Autowired\r\n    private IIvrTaskTemplateService ivrTaskTemplateService;\r\n\r\n    @Autowired\r\n    private ISvyTaskTemplateService svyTaskTemplateService;\r\n\r\n    @Autowired\r\n    private IIvrTaskTemplateScriptService iIvrTaskTemplateScriptService;\r\n\r\n    @Autowired\r\n    private IServiceOutPathService iServiceOutPathService;\r\n\r\n    @Autowired\r\n    private FtpService ftpService;\r\n\r\n    @Autowired\r\n    private PatMedInhospMapper patMedInhospMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n\r\n    @Value(\"${pri_key}\")\r\n    private String pri_key;\r\n\r\n    @Value(\"${pub_key}\")\r\n    private String pub_key;\r\n\r\n    @Value(\"${ASRCallBackPath}\")\r\n    private String ASRCallBackPath;\r\n\r\n    @Autowired\r\n    private RedisTemplate redisTemplate;\r\n\r\n    @Value(\"${hangup}\")\r\n    private String hangup;\r\n\r\n    @Value(\"${app_key_yq}\")\r\n    private String app_key_yq;\r\n\r\n    @Value(\"${ruoyi.profile}\")\r\n    private String profile;\r\n\r\n    @Value(\"${voicePathPrefix}\")\r\n    private String voicePathPrefix;\r\n\r\n    @Value(\"${localIP}\")\r\n    private String localIP;\r\n\r\n    @Value(\"${req_path}\")\r\n    private String req_path;\r\n\r\n    @Value(\"${xhsmsPath}\")\r\n    private String xhsmsPath;\r\n\r\n    @Value(\"${phoneUpEveryHour}\")\r\n    private Integer phoneUpEveryHour;\r\n    @Value(\"${phoneEndHour}\")\r\n    private Integer phoneEndHour;\r\n\r\n    /**\r\n     * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param id 鍗曚竴浠诲姟锛堥殢璁匡級涓婚敭\r\n     * @return 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     */\r\n    @Override\r\n    public ServiceSubtask selectServiceSubtaskById(Long id) {\r\n        return serviceSubtaskMapper.selectServiceSubtaskById(id);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級鍒楄〃\r\n     *\r\n     * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     */\r\n    @Override\r\n    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO) {\r\n        return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n    }\r\n\r\n    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO) {\r\n        return serviceSubtaskMapper.selectServiceSubtaskListAgain(serviceSubtaskVO);\r\n    }\r\n\r\n    @Override\r\n    public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {\r\n        //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚圽r\n        List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();\r\n        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);\r\n        List<ServiceSubtask> list = selectServiceSubtaskList(serviceSubtaskVO);\r\n\r\n        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n        if (CollectionUtils.isEmpty(list) || list.size() == 0) {\r\n            return DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);\r\n        }\r\n\r\n\r\n        //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ServiceSubtaskVO涓璡r\n        ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);\r\n        serviceTaskVO.setShowDate(serviceTask.getShowDate());\r\n        serviceTaskVO.setShowTimeMorn(serviceTask.getShowTimeMorn());\r\n        serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon());\r\n        serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight());\r\n        serviceTaskVO.setPreachform(serviceTask.getPreachform());\r\n        String sendTimeSlot = serviceTask.getSendTimeSlot();\r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        try {\r\n            //鑾峰彇鍒板彂閫佹椂闂寸殑闆嗗悎\r\n            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {\r\n                List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);\r\n                serviceTaskVO.setSendTimeslot(taskSendTimeVOList);\r\n                serviceTaskVO.setSendType(serviceTask.getSendType());\r\n            }\r\n            //鏂囨湰鍙橀噺鍙傛暟\r\n            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(serviceTask.getTextParam())) {\r\n                Map<String, Map<String, String>> textParam = objectMapper.readValue(serviceTask.getTextParam(), Map.class);\r\n                serviceTaskVO.setTextParam(textParam);\r\n            }\r\n        } catch (JsonProcessingException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n        for (ServiceSubtask serviceSubtask1 : list) {\r\n            PatTaskRelevance patTaskRelevance = new PatTaskRelevance();\r\n            if (!serviceSubtask1.getHospType().equals(\"2\")) {\r\n                log.info(\"闅忚鏌ヨ涓嶄负鍑洪櫌锛寋}\", serviceSubtask1.getHospType());\r\n                //鑾峰彇鍒版偅鑰呬俊鎭紝骞舵斁鍏ュ埌闆嗗悎涓璡r\n                patTaskRelevance.setName(serviceSubtask1.getSendname());\r\n                patTaskRelevance.setAge(serviceSubtask1.getAge());\r\n                patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime());\r\n                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());\r\n                patTaskRelevance.setPhone(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setTelcode(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setAddr(serviceSubtask1.getAddr());\r\n                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());\r\n                patTaskRelevance.setPatid(serviceSubtask1.getPatid());\r\n                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());\r\n                patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode());\r\n                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());\r\n                patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode());\r\n                patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname());\r\n                patTaskRelevance.setInhosptime(serviceSubtask1.getInhosptime());\r\n                patTaskRelevance.setDrname(serviceSubtask1.getDrname());\r\n                patTaskRelevance.setDrcode(serviceSubtask1.getDrcode());\r\n                patTaskRelevance.setEndtime(serviceSubtask1.getEndtime());\r\n                patTaskRelevance.setNurseId(serviceSubtask1.getNurseId());\r\n                patTaskRelevance.setNurseName(serviceSubtask1.getNurseName());\r\n                patTaskRelevances.add(patTaskRelevance);\r\n            }\r\n            if (serviceSubtask1.getHospType().equals(\"2\")) {\r\n                log.info(\"闅忚鏌ヨ涓哄嚭闄紝{}\", serviceSubtask1.getHospType());\r\n                patTaskRelevance.setName(serviceSubtask1.getSendname());\r\n                patTaskRelevance.setAge(serviceSubtask1.getAge());\r\n                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());\r\n                patTaskRelevance.setPhone(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setTelcode(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime());\r\n                patTaskRelevance.setAddr(serviceSubtask1.getAddr());\r\n                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());\r\n                patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode());\r\n                patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());\r\n                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());\r\n                patTaskRelevance.setPatid(serviceSubtask1.getPatid());\r\n                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());\r\n                patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode());\r\n                patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname());\r\n                patTaskRelevance.setInhosptime(serviceSubtask1.getInhosptime());\r\n                patTaskRelevance.setStarttime(serviceSubtask1.getStarttime());\r\n                patTaskRelevance.setDrname(serviceSubtask1.getDrname());\r\n                patTaskRelevance.setDrcode(serviceSubtask1.getDrcode());\r\n                patTaskRelevance.setEndtime(serviceSubtask1.getEndtime());\r\n                patTaskRelevance.setStarttime(serviceSubtask1.getStarttime());\r\n                patTaskRelevance.setNurseId(serviceSubtask1.getNurseId());\r\n                patTaskRelevance.setNurseName(serviceSubtask1.getNurseName());\r\n                patTaskRelevances.add(patTaskRelevance);\r\n            }\r\n        }\r\n\r\n        serviceTaskVO.setPatTaskRelevances(patTaskRelevances);\r\n        return serviceTaskVO;\r\n    }\r\n\r\n    @Override\r\n    public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) {\r\n        List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);\r\n        return selectServiceSubtaskList;\r\n    }\r\n\r\n    @Override\r\n    public List<ServiceSubtask> patItem2(ServiceSubtaskVO serviceSubtaskVO) {\r\n        List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();\r\n        for (Long sendstate : serviceSubtaskVO.getSendstates()) {\r\n            serviceSubtaskVO.setSendstate(sendstate);\r\n            List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskList.addAll(serviceSubtasks);\r\n        }\r\n        return serviceSubtaskList;\r\n    }\r\n\r\n\r\n    @Override\r\n    public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) {\r\n        serviceSubtaskVO.setPageSize(99999999);\r\n        serviceSubtaskVO.setPageNum(1);\r\n        List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);\r\n        Map<String, Object> map = new HashMap<>();\r\n        Integer wzx = 0;\r\n        Integer ysf = 0;\r\n        Integer yc = 0;\r\n        Integer fssb = 0;\r\n        Integer yfs = 0;\r\n        Integer blq = 0;\r\n        Integer dsf = 0;\r\n        for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n            if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;\r\n            else if (serviceSubtask.getSendstate() != 4L && serviceSubtask.getSendstate() != 2L) ysf = ysf + 1;\r\n            if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;\r\n            if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;\r\n            if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;\r\n            if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;\r\n            if (serviceSubtask.getExcep().equals(\"1\")) yc = yc + 1;\r\n        }\r\n        map.put(\"wzx\", wzx);\r\n        map.put(\"ysf\", ysf);\r\n        map.put(\"yc\", yc);\r\n        map.put(\"fssb\", fssb);\r\n        map.put(\"yfs\", yfs);\r\n        map.put(\"blq\", blq);\r\n        map.put(\"dsf\", dsf);\r\n\r\n        return map;\r\n    }\r\n\r\n    /**\r\n     * 鏂板鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param serviceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertServiceSubtask(ServiceSubtask serviceSubtask) {\r\n        serviceSubtask.setCreateTime(DateUtils.getNowDate());\r\n        return serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n    }\r\n\r\n    /**\r\n     * 鍐嶆鏂板鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param serviceSubtask 鍐嶆鏂板鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String addSubTaskAgain(ServiceSubtask serviceSubtask) {\r\n        ServiceSubtask serviceSubtask1 = selectServiceSubtaskById(serviceSubtask.getId());\r\n        PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n        patMedInhosp.setPatid(serviceSubtask1.getPatid());\r\n        patMedInhosp.setInhospstate(\"0\");\r\n        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask1.getPatid());\r\n\r\n        if (patMedInhospList.size() > 0) {\r\n            serviceSubtask1.setIsVisitAgain(2);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n            return \"鏃犻渶鍐嶆闅忚锛屾偅鑰呭啀鍏ラ櫌浜哱";\r\n        } else if (serviceSubtask1.getSendstate() == 4L) {\r\n            serviceSubtask1.setIsVisitAgain(2);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n            return \"鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц\";\r\n        } else if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals(\"1\")) {\r\n            serviceSubtask1.setIsVisitAgain(2);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n            return \"鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟\";\r\n        } else if (ObjectUtils.isNotEmpty(serviceSubtask1.getIsVisitAgain()) && serviceSubtask1.getIsVisitAgain() == 2) {\r\n            return \"鏃犻渶鍐嶆闅忚锛岃浠诲姟宸茬粡鍐嶆闅忚杩囦簡\";\r\n        }\r\n        //鏂板鍐嶆闅忚浠诲姟\r\n        ServiceSubtask serviceSubtask2 = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtask.class);\r\n        serviceSubtask2.setId(null);\r\n        serviceSubtask2.setUpid(serviceSubtask1.getId().intValue());\r\n        serviceSubtask2.setVisitCount(serviceSubtask1.getVisitCount() + 1);\r\n        serviceSubtask2.setSendstate(2L);\r\n        serviceSubtask2.setCreateTime(new Date());\r\n        serviceSubtask2.setUpdateTime(new Date());\r\n        serviceSubtask2.setVisitType(serviceSubtask.getVisitType());\r\n        serviceSubtask2.setVisitDeptCode(serviceSubtask.getVisitDeptCode());\r\n        serviceSubtask2.setVisitDeptName(serviceSubtask.getVisitDeptName());\r\n        int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask2);\r\n        if (i == 1) {\r\n            //鏂板鎴愬姛鍚庯紝闇�瑕佸皢涔嬪墠鐨勪换鍔¤缃负涓嶈鍐嶉殢璁匡紙闃叉閲嶅鐐癸紝鐒跺悗閲嶅鐢熸垚锛塡r\n            serviceSubtask1.setIsVisitAgain(2);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n            return \"鍐嶆闅忚浠诲姟鍒涘缓鎴愬姛\";\r\n        }\r\n        return \"鍐嶆闅忚浠诲姟鍒涘缓澶辫触锛屽啀璇锋閲嶈瘯\";\r\n    }\r\n\r\n    /**\r\n     * 淇敼鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param serviceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public Boolean updateServiceSubtask(ServiceSubtask serviceSubtask) {\r\n        serviceSubtask.setUpdateTime(DateUtils.getNowDate());\r\n        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 6)\r\n            serviceSubtask.setFinishtime(new Date());\r\n        return serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteServiceSubtaskByIds(Long[] ids) {\r\n        Integer i = 0;\r\n        for (Long id : ids) {\r\n            i = serviceSubtaskMapper.deleteServiceSubtaskById(id);\r\n        }\r\n        return i;\r\n    }\r\n\r\n    /**\r\n     * 鍗曚竴浠诲姟\r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    @Transactional(rollbackFor = Exception.class)\r\n    @Override\r\n    public Map<String, Integer> insertOrUpdateTask(ServiceTaskVO serviceTaskVO) {\r\n        if (ObjectUtils.isEmpty(serviceTaskVO)) {\r\n            log.info(\"浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n            throw new BaseException(\"浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n        }\r\n        ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);\r\n        serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));\r\n        if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {\r\n            //鏂板妯℃澘淇℃伅\r\n            Long tempid = null;\r\n            String tempName = null;\r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSvyTaskTemplateVO())) {\r\n                tempid = Long.valueOf(svyTaskTemplateService.saveOrUpdateTemplate(serviceTaskVO.getSvyTaskTemplateVO()));\r\n                tempName = svyTaskTemplateService.selectSvyTaskTemplateBySvyid(tempid).getSvyname();\r\n            }\r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {\r\n                tempid = Long.valueOf(ivrTaskTemplateService.saveOrUpdateTempScript(serviceTaskVO.getIvrTaskTemplateVO()));\r\n                tempName = ivrTaskTemplateService.selectIvrTaskTemplateByID(tempid).getTemplateName();\r\n            }\r\n\r\n            //寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))\r\n                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));\r\n            if (serviceTask.getSendState() == null) {\r\n                serviceTask.setSendState(1L);\r\n                serviceTaskVO.setSendState(1L);\r\n            } else {\r\n                serviceTask.setSendState(serviceTaskVO.getSendState());\r\n            }\r\n            if (StringUtils.isNotEmpty(serviceTaskVO.getLibtemplateid())) {\r\n                serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid());\r\n                serviceTask.setLibtemplatename(serviceTaskVO.getLibtemplatename());\r\n            }\r\n            if (serviceTaskVO.getTemplateid() != null) {\r\n                serviceTask.setTemplateid(serviceTaskVO.getTemplateid());\r\n                serviceTask.setTemplatename(serviceTaskVO.getTemplatename());\r\n            } else {\r\n                serviceTask.setTemplateid(tempid);\r\n                serviceTask.setTemplatename(tempName);\r\n            }\r\n            serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes());\r\n            serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode());\r\n            if (serviceTaskVO.getLongTask() == 1) serviceTask.setSendState(2L);\r\n            serviceTask.setCreateTime(new Date());\r\n            serviceTask.setUpdateTime(new Date());\r\n            serviceTaskService.insertServiceTask(serviceTask);\r\n            log.info(\"----serviceTaskVO.getAppltype()鐨勫�间负锛歿}\", serviceTaskVO.getAppltype());\r\n            if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype())) {\r\n                if (serviceTaskVO.getAppltype().equals(\"3\")) {\r\n                    ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();\r\n                    serviceTaskdiag.setTaskId(serviceTask.getTaskid());\r\n                    serviceTaskdiag.setTaskName(serviceTask.getTaskName());\r\n                    serviceTaskdiag.setLongtask(0L);\r\n                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdiag.setLongtask(1L);\r\n                    serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());\r\n                    serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());\r\n                    serviceTaskdiag.setGuid(serviceTask.getGuid());\r\n                    serviceTaskdiag.setOrgid(serviceTask.getOrgid());\r\n                    serviceTaskdiag.setCreateTime(new Date());\r\n                    log.info(\"----serviceTaskdiag鐨勫�间负锛歿}\", serviceTaskdiag);\r\n                    if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {\r\n                        String[] Icd10codes = serviceTaskVO.getIcd10code().split(\",\");\r\n                        for (String icd10code : Icd10codes) {\r\n                            serviceTaskdiag.setIcd10code(icd10code);\r\n                            serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag);\r\n                        }\r\n                    }\r\n                } else if (serviceTaskVO.getAppltype().equals(\"4\")) {\r\n                    ServiceTaskoper serviceTaskoper = new ServiceTaskoper();\r\n                    serviceTaskoper.setOpcode(serviceTaskVO.getOpcode());\r\n                    serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());\r\n                    serviceTaskoper.setTaskId(serviceTask.getTaskid());\r\n                    serviceTaskoper.setTaskName(serviceTask.getTaskName());\r\n                    serviceTaskoper.setLongtask(0L);\r\n                    serviceTaskoper.setGuid(serviceTask.getGuid());\r\n                    serviceTaskoper.setOrgid(serviceTask.getOrgid());\r\n                    serviceTaskoper.setCreateTime(new Date());\r\n                    if (serviceTaskVO.getLongTask() == 1) serviceTaskoper.setLongtask(1L);\r\n                    if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {\r\n                        String[] opcodes = serviceTaskVO.getOpcode().split(\",\");\r\n                        for (String opcode : opcodes) {\r\n                            serviceTaskoper.setOpcode(opcode);\r\n                            log.info(\"----serviceTaskoper鐨勫�间负锛歿}\", serviceTaskoper);\r\n                            serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);\r\n                        }\r\n                    }\r\n\r\n                } else {\r\n                    ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n                    serviceTaskdept.setTaskId(serviceTask.getTaskid());\r\n                    serviceTaskdept.setTaskName(serviceTask.getTaskName());\r\n                    serviceTaskdept.setOrgid(serviceTask.getOrgid());\r\n                    serviceTaskdept.setLongtask(0L);\r\n                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);\r\n                    if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {\r\n                        String[] deptcodes = serviceTaskVO.getDeptcode().split(\",\");\r\n                        for (String deptCode : deptcodes) {\r\n                            serviceTaskdept.setDeptCode(deptCode);\r\n                            serviceTaskdept.setDeptType(\"1\");\r\n                            serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());\r\n                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);\r\n                        }\r\n                    }\r\n                    if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) {\r\n                        String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(\",\");\r\n                        for (String districtcode : leavehospitaldistrictcodes) {\r\n                            serviceTaskdept.setDeptCode(districtcode);\r\n                            serviceTaskdept.setDeptType(\"2\");\r\n                            serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());\r\n                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {\r\n                Map<String, Integer> map = new HashMap<>();\r\n                map.put(\"taskId\", serviceTask.getTaskid().intValue());\r\n                return map;\r\n            }\r\n\r\n            //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓璡r\n            ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);\r\n            serviceSubtask.setTaskid(serviceTask.getTaskid().longValue());\r\n            serviceSubtask.setTemplatename(tempName);\r\n            serviceSubtask.setTemplateid(tempid);\r\n            //鏂板\r\n            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {\r\n                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {\r\n                    //灏嗕换鍔′俊鎭柊澧炲埌闅忚鏈嶅姟琛ㄤ腑\r\n                    serviceSubtask.setSendname(patTaskRelevance.getName());\r\n                    serviceSubtask.setAge(patTaskRelevance.getAge());\r\n//                    serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));\r\n                    serviceSubtask.setSfzh(patTaskRelevance.getIdcardno());\r\n                    serviceSubtask.setPhone(patTaskRelevance.getTelcode());\r\n                    serviceSubtask.setAddr(patTaskRelevance.getAddr());\r\n                    serviceSubtask.setPatid(patTaskRelevance.getPatid());\r\n                    serviceSubtask.setCreateTime(DateUtils.getNowDate());\r\n                    serviceSubtask.setSendstate(1L);\r\n                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)\r\n                        serviceSubtask.setSendstate(2L);\r\n                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode());\r\n                    serviceSubtask.setDeptname(patTaskRelevance.getDeptName());\r\n                    serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());\r\n                    serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());\r\n                    serviceSubtask.setType(serviceTaskVO.getType());\r\n                    serviceSubtask.setHospType(patTaskRelevance.getHospType());\r\n                    serviceSubtask.setOpenid(patTaskRelevance.getOpenid());\r\n                    serviceSubtask.setDrname(patTaskRelevance.getDrname());\r\n                    serviceSubtask.setDrcode(patTaskRelevance.getDrcode());\r\n                    serviceSubtask.setInhosptime(patTaskRelevance.getInhosptime());\r\n                    serviceSubtask.setLeaveicd10code(patTaskRelevance.getLeaveicd10code());\r\n                    serviceSubtask.setLeavediagname(patTaskRelevance.getLeavediagname());\r\n                    serviceSubtask.setEndtime(patTaskRelevance.getEndtime());\r\n                    serviceSubtask.setNurseId(patTaskRelevance.getNurseId());\r\n                    serviceSubtask.setNurseName(patTaskRelevance.getNurseName());\r\n                    serviceSubtask.setCreateBy(serviceTask.getCreateBy());\r\n                    serviceSubtask.setUpdateBy(serviceTask.getCreateBy());\r\n                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());\r\n                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)\r\n                        serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());\r\n                    serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n                    serviceSubtask.getId().intValue();\r\n                }\r\n            }\r\n\r\n        } else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {\r\n            //浠诲姟淇敼\r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))\r\n                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));\r\n            //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1\r\n            ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());\r\n//            long l = serviceTask1.getStopState() + 1;\r\n//            serviceTask.setStopState(l);\r\n            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎\r\n            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n            serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());\r\n            serviceSubtaskVO.setSendstate(2L);\r\n            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskVO.setSendstate(1L);\r\n            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);\r\n            } else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                    log.info(\"insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}\", serviceSubtask.getId().toString());\r\n                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());\r\n                    redisCache.removeElementFromList(\"cache-exist\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-0\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-1\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-2\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-3\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-4\", serviceSubtask.getId().toString());\r\n                }\r\n            }\r\n\r\n            if (serviceTaskVO.getLibtemplateid() != null)\r\n                serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString());\r\n            serviceTask.setTemplateid(serviceTaskVO.getTemplateid());\r\n            serviceTask.setLongTask(serviceTaskVO.getLongTask());\r\n            serviceTask.setUpdateTime(new Date());\r\n            serviceTaskService.updateServiceTask(serviceTask);\r\n            if (serviceTaskVO.getAppltype().equals(\"1\") || serviceTaskVO.getAppltype().equals(\"2\")) {\r\n\r\n\r\n                if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {\r\n                    String[] deptcodes = serviceTaskVO.getDeptcode().split(\",\");\r\n                    for (String deptCode : deptcodes) {\r\n                        ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n                        serviceTaskdept.setTaskId(serviceTask.getTaskid());\r\n                        serviceTaskdept.setTaskName(serviceTask.getTaskName());\r\n                        serviceTaskdept.setLongtask(0L);\r\n                        serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());\r\n                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);\r\n                        serviceTaskdept.setDeptCode(deptCode);\r\n                        serviceTaskdept.setDeptType(\"1\");\r\n                        serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());\r\n                        ServiceTaskdept st = new ServiceTaskdept();\r\n                        st.setDeptCode(deptCode);\r\n                        st.setTaskId(serviceTask.getTaskid());\r\n                        List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st);\r\n                        if (CollectionUtils.isEmpty(serviceTaskdepts)) {\r\n                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);\r\n                        } else {\r\n                            serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept);\r\n                        }\r\n                    }\r\n                }\r\n                if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) {\r\n                    String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(\",\");\r\n                    for (String districtcode : leavehospitaldistrictcodes) {\r\n                        ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n                        serviceTaskdept.setTaskId(serviceTask.getTaskid());\r\n                        serviceTaskdept.setTaskName(serviceTask.getTaskName());\r\n                        serviceTaskdept.setLongtask(0L);\r\n                        serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());\r\n                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);\r\n                        serviceTaskdept.setDeptCode(districtcode);\r\n                        serviceTaskdept.setDeptType(\"2\");\r\n                        serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());\r\n                        //鍏堥�氳繃浠诲姟ID銆侀儴闂╟ode,鍒ゆ柇ServiceTaskdept鏄惁瀛樺湪锛屼笉瀛樺湪鍒欐柊澧烇紝瀛樺湪鍒欎慨鏀筡r\n                        ServiceTaskdept st = new ServiceTaskdept();\r\n                        st.setDeptCode(districtcode);\r\n                        st.setTaskId(serviceTask.getTaskid());\r\n                        List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st);\r\n                        if (CollectionUtils.isEmpty(serviceTaskdepts)) {\r\n                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);\r\n                        } else {\r\n                            serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept);\r\n                        }\r\n                    }\r\n                }\r\n            } else if (serviceTaskVO.getAppltype().equals(\"3\")) {\r\n                ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();\r\n                serviceTaskdiag.setTaskId(serviceTask.getTaskid());\r\n                serviceTaskdiag.setTaskName(serviceTask.getTaskName());\r\n                if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) {\r\n                    throw new BaseException(\"鐤剧梾缂栫爜涓虹┖\");\r\n                }\r\n//                serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());\r\n\r\n                serviceTaskdiag.setLongtask(1L);\r\n                serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());\r\n                serviceTaskdiag.setGuid(serviceTask.getGuid());\r\n                serviceTaskdiag.setOrgid(serviceTask.getOrgid());\r\n                serviceTaskdiag.setUpdateTime(new Date());\r\n                if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {\r\n                    String[] icd10codes = serviceTaskVO.getIcd10code().split(\",\");\r\n                    for (String icdcode : icd10codes) {\r\n                        //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦╘r\n                        ServiceTaskdiag serviceTaskdiag2 = new ServiceTaskdiag();\r\n                        serviceTaskdiag2.setTaskId(serviceTaskVO.getTaskid());\r\n                        serviceTaskdiag2.setIcd10code(icdcode);\r\n                        List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagService.selectServiceTaskdiagList(serviceTaskdiag2);\r\n                        serviceTaskdiag.setIcd10code(icdcode);\r\n                        log.info(\"----serviceTaskdiag鏇存柊鐨勫�间负锛歿}\", serviceTaskdiag);\r\n                        if (CollectionUtils.isNotEmpty(serviceTaskdiags)) {\r\n                            serviceTaskdiag.setId(serviceTaskdiags.get(0).getId());\r\n                            serviceTaskdiagService.updateServiceTaskdiag(serviceTaskdiag);\r\n                        } else {\r\n                            serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag);\r\n                        }\r\n                    }\r\n                }\r\n\r\n\r\n            } else if (serviceTaskVO.getAppltype().equals(\"4\")) {\r\n                ServiceTaskoper serviceTaskoper = new ServiceTaskoper();\r\n                if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) {\r\n                    throw new BaseException(\"鎵嬫湳缂栫爜涓虹┖\");\r\n                }\r\n//                serviceTaskoper.setOpcode(serviceTaskVO.getOpcode());\r\n                serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());\r\n                serviceTaskoper.setTaskId(serviceTask.getTaskid());\r\n                serviceTaskoper.setTaskName(serviceTask.getTaskName());\r\n                serviceTaskoper.setLongtask(1L);\r\n                serviceTaskoper.setGuid(serviceTask.getGuid());\r\n                serviceTaskoper.setOrgid(serviceTask.getOrgid());\r\n                serviceTaskoper.setCreateTime(new Date());\r\n                if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {\r\n                    String[] opcodes = serviceTaskVO.getOpcode().split(\",\");\r\n                    for (String opcode : opcodes) {\r\n                        //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦╘r\n                        ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper();\r\n                        serviceTaskoper2.setTaskId(serviceTaskVO.getTaskid());\r\n                        serviceTaskoper2.setOpcode(serviceTaskVO.getOpcode());\r\n                        List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(serviceTaskoper2);\r\n\r\n                        serviceTaskoper.setOpcode(opcode);\r\n                        log.info(\"----serviceTaskoper鐨勫�间负锛歿}\", serviceTaskoper);\r\n                        if (CollectionUtils.isNotEmpty(serviceTaskopers)) {\r\n                            serviceTaskoper.setId(serviceTaskopers.get(0).getId());\r\n                            serviceTaskoperService.updateServiceTaskoper(serviceTaskoper);\r\n                        } else {\r\n                            serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);\r\n                        }\r\n                    }\r\n                }\r\n\r\n            }\r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {\r\n                IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate();\r\n                ivrTaskTemplate.setTaskid(serviceTaskVO.getIvrTaskTemplateVO().getTaskid());\r\n                ivrTaskTemplate.setId(serviceTaskVO.getIvrTaskTemplateVO().getId());\r\n                ivrTaskTemplateService.updateIvrTaskTemplate(ivrTaskTemplate);\r\n            } else if (ObjectUtils.isNotEmpty(serviceTaskVO.getSvyTaskTemplateVO())) {\r\n                SvyTaskTemplate svyTaskTemplate = new SvyTaskTemplate();\r\n                svyTaskTemplate.setTaskid(serviceTaskVO.getSvyTaskTemplateVO().getTaskid());\r\n                svyTaskTemplate.setId(serviceTaskVO.getSvyTaskTemplateVO().getId());\r\n                svyTaskTemplateService.updateSvyTaskTemplate(svyTaskTemplate);\r\n            }\r\n\r\n            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) {\r\n                //杩欓噷闇�瑕佸皢浠诲姟id涓庝换鍔℃ā鏉縄D锛屽湪浠诲姟妯℃澘涓粦瀹歕r\n                Map<String, Integer> map = new HashMap<>();\r\n                map.put(\"taskId\", serviceTask.getTaskid().intValue());\r\n                return map;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {\r\n                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {\r\n                    ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);\r\n                    serviceSubtask.setSendname(patTaskRelevance.getName());\r\n                    serviceSubtask.setAge(patTaskRelevance.getAge());\r\n                    serviceSubtask.setSfzh(patTaskRelevance.getSfzh());\r\n                    serviceSubtask.setPhone(patTaskRelevance.getTelcode());\r\n                    serviceSubtask.setAddr(patTaskRelevance.getAddr());\r\n                    serviceSubtask.setPatid(patTaskRelevance.getPatid());\r\n                    serviceSubtask.setOpenid(patTaskRelevance.getOpenid());\r\n                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode());\r\n                    serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());\r\n                    serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());\r\n                    serviceSubtask.setDeptname(patTaskRelevance.getDeptName());\r\n                    serviceSubtask.setType(serviceTaskVO.getType());\r\n                    serviceSubtask.setCreateTime(DateUtils.getNowDate());\r\n                    serviceSubtask.setDrname(patTaskRelevance.getDrname());\r\n                    serviceSubtask.setDrcode(patTaskRelevance.getDrcode());\r\n                    serviceSubtask.setInhosptime(patTaskRelevance.getInhosptime());\r\n                    serviceSubtask.setHospType(patTaskRelevance.getHospType());\r\n                    serviceSubtask.setEndtime(patTaskRelevance.getEndtime());\r\n                    serviceSubtask.setNurseId(patTaskRelevance.getNurseId());\r\n                    serviceSubtask.setNurseName(patTaskRelevance.getNurseName());\r\n                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());\r\n                    serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));\r\n                    if (patTaskRelevance.getIsoperation() != null) {\r\n                        if (patTaskRelevance.getIsoperation() == 2)\r\n                            serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());\r\n                        serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);\r\n                        if (patTaskRelevance.getIsoperation() == 1) {\r\n                            serviceSubtask.setSendstate(1L);\r\n                            serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());\r\n                            serviceSubtask.setCreateBy(serviceTask.getUpdateBy());\r\n                            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n                        }\r\n                        if (patTaskRelevance.getIsoperation() == 3)\r\n                            //  閫氳繃taskid鍜宲atid鍘诲垹闄よ鏉℃暟鎹甛r\n                            serviceSubtaskMapper.deleteServiceSubtaskByCondition(serviceTaskVO.getTaskid(), patTaskRelevance.getPatid());\r\n                    }\r\n                    serviceSubtask.getTaskid().intValue();\r\n                }\r\n            }\r\n        }\r\n        Map<String, Integer> map = new HashMap<>();\r\n        map.put(\"taskId\", serviceTask.getTaskid().intValue());\r\n        return map;\r\n    }\r\n\r\n\r\n    @Override\r\n    public void phoneCallBack(PhoneCallBackVO phoneCallBackVO) {\r\n        phoneCallBackVO.setTextResult(phoneCallBackVO.getTextResult().substring(0, phoneCallBackVO.getTextResult().length() - 1));\r\n        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(\"YYYY-MM-dd HH:mm:ss\");\r\n\r\n        //鑾峰彇鏁版嵁\r\n        Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());\r\n        if (!aBoolean) {\r\n            throw new BaseException(\"璇uid涓嶅瓨鍦╘");\r\n        }\r\n        Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"hangup\");\r\n        PhoneUtils phoneUtils = new PhoneUtils();\r\n        if (hangupValue != null && hangupValue == 1) {\r\n            String date = simpleDateFormat1.format(new Date());\r\n            log.info(\"鐢佃瘽瑕佹寕鏂簡: {}\", date);\r\n            //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽\r\n            phoneUtils.hangup(\"\", \"\", \"\", \"\", \"\", \"\", \"\", phoneCallBackVO.getUuid());\r\n            return;\r\n        }\r\n\r\n        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());\r\n        ServiceSubtask serviceSubtask = (ServiceSubtask) map.get(\"ServiceSubtask\");\r\n        List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOs = (List<IvrTaskTemplateScriptVO>) map.get(\"IvrTaskTemplateScriptVO\");\r\n        //灏唘uid鏇存柊鍒版暟鎹簱涓璡r\n        serviceSubtask.setSenduuid(phoneCallBackVO.getUuid());\r\n        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n        //鑾峰彇妯℃澘淇℃伅\r\n        IvrTaskTemplateVO ivrTaskTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"IvrTaskTemplateVO\");\r\n\r\n        //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3\r\n        Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"noVoice\");\r\n        QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"returnQues\");\r\n        //灏嗕紶鍥炵殑缁撴灉鏀惧埌鍥炲瀵硅薄涓璡r\n        returnQues.setContent(phoneCallBackVO.getTextResult());\r\n\r\n        IvrTaskTemplateScriptVO nowQuestion = returnQues.getNowQuestion();\r\n\r\n        if (StringUtils.isEmpty(returnQues.getContent())) {\r\n            //鏃犲洖璇漒r\n            //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у�糪r\n            if (noVoice == ivrTaskTemplateVO.getNoVoiceNum().intValue()) {\r\n                //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰榎r\n                if (nowQuestion.getTargetid() == IvrTaskTemplateScriptVOs.size()) {\r\n                    ServiceSubtask ss = new ServiceSubtask();\r\n                    ss.setId(serviceSubtask.getId());\r\n                    ss.setSendstate(5L);\r\n                    ss.setRemark(\"鐢佃瘽鏃犲搷搴擻");\r\n                    serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                    //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻\r\n                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"hangup\", 1, 120, TimeUnit.MINUTES);\r\n                    phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());\r\n                    return;\r\n                } else {\r\n                    //鏈変笅涓�棰榎r\n                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", 0, 120, TimeUnit.MINUTES);\r\n                    IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(IvrTaskTemplateScriptVOs, nowQuestion);\r\n                    // 闂锛�  鍘昏皟鐢╘"tts鍚堟垚鍜屾挱鏀綷"鎺ュ彛\r\n                    String date = simpleDateFormat1.format(new Date());\r\n                    log.info(\"鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                    phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());\r\n                }\r\n            } else {\r\n                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", noVoice + 1, 120, TimeUnit.MINUTES);\r\n                //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)\r\n                String slienceText = nowQuestion.getSlienceText();\r\n                //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢╘"tts鍚堟垚鍜屾挱鏀綷"鎺ュ彛\r\n                String date = simpleDateFormat1.format(new Date());\r\n                log.info(\"闈欓粯璇濇湳  + 闂,鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                phoneUtils.ttsPlayback(slienceText + nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());\r\n                return;\r\n            }\r\n\r\n        } else {\r\n            //isppd鐢ㄦ潵璁板綍鏄惁鍖归厤鍒癨r\n            Boolean isppd = false;\r\n            //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛塡r\n            for (int j = 0; j < nowQuestion.getIvrTaskScriptTargetoptionList().size(); j++) {\r\n                //鍖呭惈\r\n                Matcher matcher = null;\r\n                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex())) {\r\n                    Pattern pattern = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex());\r\n                    matcher = pattern.matcher(phoneCallBackVO.getTextResult());\r\n                }\r\n                //涓嶅寘鍚玕r\n                Matcher matcher2 = null;\r\n                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2())) {\r\n                    Pattern pattern2 = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());\r\n                    matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());\r\n                }\r\n                log.error(\"PCB--getQuestionText闂涓猴細{},UUID锛歿}\", nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());\r\n                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {\r\n                    //璇存槑鍖归厤姝g‘浜哱r\n                    //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉昞r\n                    nowQuestion.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1);\r\n                    serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(nowQuestion.getIvrTaskScriptTargetoptionList().get(j));\r\n\r\n                    //灏嗛潤榛樼疆涓�0\r\n                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", 0, 120, TimeUnit.MINUTES);\r\n                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", 0, 120, TimeUnit.MINUTES);\r\n\r\n                    //灏嗘偅鑰呯殑鍥炵鍐欒繘琛ㄩ噷\r\n                    IvrTaskVisitResult serviceTaskVisitResult = DtoConversionUtils.sourceToTarget(serviceSubtask, IvrTaskVisitResult.class);\r\n                    serviceTaskVisitResult.setId(null);\r\n                    serviceTaskVisitResult.setQuestion(nowQuestion.getIvrtext());\r\n                    serviceTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());\r\n                    serviceTaskVisitResult.setCreateTime(new Date());\r\n                    serviceTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue());\r\n                    serviceTaskVisitResultMapper.insertIvrTaskVisitResult(serviceTaskVisitResult);\r\n\r\n                    //灏嗗尮閰嶅埌鐨勬爣璇嗘敼鎴恡rue\r\n                    isppd = true;\r\n\r\n                    //鑾峰彇涓嬩竴棰榎r\n                    Long nextQuestion = nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();\r\n                    for (IvrTaskTemplateScriptVO script : IvrTaskTemplateScriptVOs) {\r\n                        if (script.getTargetid() == nextQuestion) {\r\n                            QuestionMessage questionMessage = new QuestionMessage();\r\n                            questionMessage.setNowQuestion(script);\r\n                            questionMessage.setQuestionList(IvrTaskTemplateScriptVOs);\r\n                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n                            phoneUtils.ttsPlayback(script.getIvrtext(), phoneCallBackVO.getUuid());\r\n                            return;\r\n                        } else if (nextQuestion > IvrTaskTemplateScriptVOs.size()) {\r\n                            //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜哱r\n                            ServiceSubtask ss = new ServiceSubtask();\r\n                            ss.setId(serviceSubtask.getId());\r\n                            ss.setSendstate(6L);\r\n                            serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                            String date = simpleDateFormat1.format(new Date());\r\n                            log.error(\"娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"hangup\", 1, 120, TimeUnit.MINUTES);\r\n                            phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());\r\n                            try {\r\n                                Thread.sleep(3000);\r\n                            } catch (InterruptedException e) {\r\n                                e.printStackTrace();\r\n                            }\r\n                            phoneUtils.hangup(\"\", \"\", ivrTaskTemplateVO.getRevisitAfter(), \"\", \"\", \"\", \"\", phoneCallBackVO.getUuid());\r\n                            return;\r\n                        }\r\n                    }\r\n                    return;\r\n                } else {\r\n                    //娌℃湁鍖归厤涓婂綋鍓峯ption\r\n                    //Targetregex2 涓篺alse锛岃〃绀哄湪Targetregex2涓瓨鍦�  璇彞涓殑鍏抽敭瀛楋紝杩欎釜option灏变笉鐢ㄥ啀缁х画鍖归厤浜嗭紝鐩存帴鍖归厤涓嬩竴涓猳ption\r\n                    continue;\r\n                }\r\n            }\r\n\r\n            if (isppd != true) {\r\n                //娌℃湁鍖归厤鍒癨r\n                Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"mateNum\");\r\n                if (mateNum == null) mateNum = 0;\r\n                //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜哱r\n                if (mateNum == ivrTaskTemplateVO.getMateNum().intValue()) {\r\n                    //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣\r\n                    if (nowQuestion.getTargetid() < IvrTaskTemplateScriptVOs.size()) {\r\n                        QuestionMessage questionMessage = new QuestionMessage();\r\n                        IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(IvrTaskTemplateScriptVOs, nowQuestion);\r\n                        questionMessage.setQuestionList(IvrTaskTemplateScriptVOs);\r\n                        questionMessage.setNowQuestion(nextQuestion);\r\n                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", 0, 120, TimeUnit.MINUTES);\r\n                        String date = simpleDateFormat1.format(new Date());\r\n                        log.info(\"濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                        phoneUtils.ttsPlayback(nextQuestion.getIvrtext(), phoneCallBackVO.getUuid());\r\n                        return;\r\n                    } else {\r\n                        //灏卞彲浠ユ寕鏂數璇濅簡\r\n                        ServiceSubtask ss = new ServiceSubtask();\r\n                        ss.setId(serviceSubtask.getId());\r\n                        ss.setSendstate(6L);\r\n                        serviceSubtaskMapper.updateServiceSubtask(ss);\r\n\r\n                        String date = simpleDateFormat1.format(new Date());\r\n                        log.info(\"灏卞彲浠ユ寕鏂數璇濅簡------: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"hangup\", 1, 120, TimeUnit.MINUTES);\r\n                        phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());\r\n                        try {\r\n                            Thread.sleep(3000);\r\n                        } catch (InterruptedException e) {\r\n                            e.printStackTrace();\r\n                        }\r\n                        phoneUtils.hangup(\"\", \"\", ivrTaskTemplateVO.getRevisitAfter(), \"\", \"\", \"\", \"\", phoneCallBackVO.getUuid());\r\n                        return;\r\n                    }\r\n                } else if (mateNum < ivrTaskTemplateVO.getMateNum().intValue()) {\r\n                    //娌℃湁闂埌瑙勫畾娆℃暟\r\n                    mateNum = mateNum + 1;\r\n                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", mateNum, 120, TimeUnit.MINUTES);\r\n                }\r\n            }\r\n            //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆r\n            String extemplateID = ivrTaskTemplateVO.getSubmoduleID();\r\n            String[] split = extemplateID.split(\",\");\r\n            List<String> list = Arrays.asList(split);\r\n            List<Long> list1 = new ArrayList<>();\r\n            if (StringUtils.isNotEmpty(extemplateID)) {\r\n                for (String str : list) {\r\n                    list1.add(Long.valueOf(str));\r\n                }\r\n                List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);\r\n                for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {\r\n                    Matcher matcher = null;\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {\r\n                        Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());\r\n                        matcher = pattern.matcher(returnQues.getContent());\r\n                    }\r\n\r\n                    Matcher matcher2 = null;\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {\r\n                        Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());\r\n                        matcher2 = pattern2.matcher(returnQues.getContent());\r\n                    }\r\n                    log.error(\"++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}\", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {\r\n                        QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"returnQues\");\r\n                        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = returnQues.getNowQuestion();\r\n                        ivrTaskTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());\r\n                        ivrTaskTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());\r\n                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n                        if (ivrLibaExtemplatescript.getIsEnd() == 1) {\r\n                            //灏嗛棶棰樼疆绌篭r\n                            IvrTaskTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();\r\n                            nowQuestion1.setScriptContent(null);\r\n                            nowQuestion1.setScriptVoice(null);\r\n                            questionMessage.setNowQuestion(nowQuestion1);\r\n                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"isOver\", 1, 120, TimeUnit.MINUTES);\r\n                        }\r\n                        //璋冪敤\"15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback\"灏嗙粨鏋滀紶鍥瀄r\n                        String date = simpleDateFormat1.format(new Date());\r\n                        log.info(\"璋冪敤tts鍚堟垚鍜屾挱鏀�------: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                        phoneUtils.ttsPlayback(nowQuestion.getIvrtext() + ivrTaskTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid());\r\n                    }\r\n                    break;\r\n                }\r\n                String date = simpleDateFormat1.format(new Date());\r\n                log.info(\"鏈�鍚庣殑淇℃伅鍥炲-: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划)\r\n     *\r\n     * @param phoneCallReqYQVO\r\n     */\r\n    @Override\r\n    public PhoneCallBackYQVO phoneCallBackYQ(PhoneCallReqYQVO phoneCallReqYQVO) {\r\n        //鍏堟妸璇ubId浠巆ache_exist涓墧闄わ紝鍙鏈夊洖璋冨氨鍓旈櫎锛堢洰鐨勬槸锛屽敖蹇cache-exist涓虹┖锛屽幓缂撳瓨涓嬩竴鎵硅鎵撶殑鐢佃瘽;杩欓噷鍓旈櫎涓嶅奖鍝嶇數璇濈殑姝e父涓氬姟锛塡r\n        redisCache.removeElementFromList(\"cache-exist\", phoneCallReqYQVO.getTaskid());\r\n\r\n        //鍒ゆ柇鏄惁鎸傛満\r\n        String hangupState = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"- hangup\");\r\n        Object cacheObject1 = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\");\r\n        if (StringUtils.isNotEmpty(hangupState) && hangup.equals(\"1\") || ObjectUtils.isNotEmpty(cacheObject1) && String.valueOf(cacheObject1).equals(\"1\")) {\r\n            return new PhoneCallBackYQVO();\r\n        }\r\n        if (\"AsrCallback\".equals(phoneCallReqYQVO.getOperate()) && phoneCallReqYQVO.getEnd_time() != null && phoneCallReqYQVO.getEnd_time() != -1) {\r\n            //澶勭悊鎸傛柇\r\n            if (phoneCallReqYQVO.getAsrtext().contains(\"鎷ㄥ彨鐨勭敤鎴锋蹇橽")) {\r\n                //鍒ゆ柇 recordAccept-hungup 鏄惁鏈夊�硷紝濡傛灉鏈夛紝鍒欒鏄庝笉鐢ㄥ鐞嗕簡锛屼箣鍓嶅凡缁忓鐞嗚繃浜嗭紙recordAccept-hungup杩欎釜涓昏鏄粰\"閫氳瘽璁板綍鐢ㄧ殑锛孿"锛塡r\n                Object cacheObject = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\");\r\n                if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals(\"1\")) {\r\n                    return new PhoneCallBackYQVO();\r\n                }\r\n                //濡傛灉鍙戦�佺姸鎬佷负6锛屽氨璇存槑宸茬粡鎵撳畬浜嗭紝涔熸病鏈夊繀瑕佺户缁線涓嬭蛋浜哱r\n                if (StringUtils.isNotEmpty(phoneCallReqYQVO.getTaskid())) {\r\n                    ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n                    if (serviceSubtask.getSendstate() == 6L) return new PhoneCallBackYQVO();\r\n                }\r\n\r\n                ServiceSubtask serviceSubtask2 = new ServiceSubtask();\r\n                serviceSubtask2.setRemark(\"鐢佃瘽鍙戦�佹垚鍔燂紙鎮h�呮寕鏂級\");\r\n                serviceSubtask2.setSenduuid(phoneCallReqYQVO.getUuid());\r\n                serviceSubtask2.setId(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask2);\r\n                Map<String, String> req = new HashMap<>();\r\n                req.put(\"uuid\", phoneCallReqYQVO.getUuid());\r\n                req.put(\"caller\", phoneCallReqYQVO.getPhone());\r\n                HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));\r\n                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- hangup\", \"1\", 2, TimeUnit.MINUTES);\r\n                //鍏堟妸榛樿鐨剅ecordAccept-hungup鍒犻櫎锛屽啀鏇存柊\r\n                redisCache.deleteObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\");\r\n                redisCache.setCacheObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\", \"1\", 10, TimeUnit.MINUTES);\r\n                //杩欎釜鏃跺�欏氨闇�瑕佽蛋琛ュ伩鏈哄埗浜嗭紝鍏堟殏瀹氳蛋鐭俊\r\n                getSmsCompensate(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n                return new PhoneCallBackYQVO();\r\n            }\r\n        }\r\n        //瀹氫箟涓�涓垎鏁扮殑鍙橀噺\r\n        Boolean aBoolean1 = redisCache.hasKey(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n        if (!aBoolean1) redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\", 0.0, 120, TimeUnit.MINUTES);\r\n        PhoneCallBackYQVO phoneCallBackYQVO = new PhoneCallBackYQVO();\r\n        //channel_create 閫氶亾鍒涘缓鐨勬椂鍊欙紝鍙互鎵ц涓�浜涘叾瀹冩搷浣滐紝璀鍙戜釜鐭俊涔嬬被鐨�;  鎴戜滑鐨勪笟鍔″彲浠ヤ笉鐢ㄧ    PlayEventCallback 杩欎釜鏄挱鏀捐闊崇殑,鏆傛椂鐢ㄤ笉鍒�     End_time()= -1鎴杗ull琛ㄧず褰撳墠鐨刟srtext涓嶆槸涓�鍙ュ畬鏁寸殑璇漒r\n        if (phoneCallReqYQVO.getOperate().equals(\"channel_create\")) {\r\n            return phoneCallBackYQVO;\r\n        }\r\n        //PlayEventCallback 杩欎釜鏄挱鏀捐闊崇殑    playstart锛氭斁闊冲紑濮嬶紙闂鎾姤寮�濮嬶級    playstop锛� 鏀鹃煶缁撴潫锛堥棶棰樻挱鎶ョ粨鏉燂級\r\n        if (phoneCallReqYQVO.getOperate().equals(\"PlayEventCallback\")) {\r\n            String cacheJSY = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\");\r\n            if (phoneCallReqYQVO.getOperate().equals(\"PlayEventCallback\") && phoneCallReqYQVO.getPlaystop() == false) {\r\n                //鍒ゆ柇redis涓槸鍚︽湁缁撴潫璇璡r\n                if (StringUtils.isEmpty(cacheJSY)) {\r\n                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\", false, 120, TimeUnit.MINUTES);\r\n                    log.error(\"PlayEventCallbackPlaystop鐨勫�间负-------锛歿}\", false);\r\n                }\r\n            } else {\r\n                //濡傛灉缁撴潫璇笉涓虹┖锛屽垯瑕佹寕鐢佃瘽浜哱r\n                if (StringUtils.isNotEmpty(cacheJSY)) {\r\n                    Map<String, String> req = new HashMap<>();\r\n                    req.put(\"uuid\", phoneCallReqYQVO.getUuid());\r\n                    req.put(\"caller\", phoneCallReqYQVO.getPhone());\r\n//                    HttpUtils.sendPost(hangup, new Gson().toJson(req));\r\n                    HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));\r\n                    //鍒犻櫎缁撴潫璇殑鎮e瓨\r\n                    redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"- jsy\");\r\n                } else {\r\n                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\", true, 120, TimeUnit.MINUTES);\r\n                    log.error(\"-------PlayEventCallbackPlaystop鐨勫�间负锛歿}\", true);\r\n                }\r\n            }\r\n            return phoneCallBackYQVO;\r\n        }\r\n        //鑾峰彇鏀鹃煶鏄惁缁撴潫\r\n        Object isPlayEventOverObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n        if (ObjectUtils.isNotEmpty(isPlayEventOverObj)) {\r\n            Boolean isPlayEventOver = (Boolean) isPlayEventOverObj;\r\n            if (!isPlayEventOver) {\r\n                return phoneCallBackYQVO;\r\n            }\r\n        }\r\n\r\n        //閫氳繃瀛愪换鍔D鑾峰彇鍒版ā鏉夸俊鎭痋r\n        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n        IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());\r\n        //鑾峰彇妯℃澘闂\r\n        IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();\r\n        ivrTaskTemplateScript.setTemplateID(serviceSubtask.getTemplateid());\r\n        List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);\r\n        //鑾峰彇闂ID 鍜� 搴忓彿\r\n        String scriptId = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"-\" + phoneCallReqYQVO.getPhone().trim());\r\n        log.error(\"scriptId鏄灏戯細{}\", scriptId);\r\n        //褰撳墠棰樼殑淇℃伅\r\n        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = iIvrTaskTemplateScriptService.getTaskTempScriptInfoByid(Long.valueOf(scriptId));\r\n        //鍒ゆ柇UUID鏄惁瀛樺湪\r\n        Boolean aBoolean = redisCache.hasKey(phoneCallReqYQVO.getUuid());\r\n        if (!aBoolean) {\r\n            //缁欓潤榛樿缃竴涓粯璁ゆ鏁板湪redis涓璡r\n            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"noVoice\", 0, 120, TimeUnit.MINUTES);\r\n            //濡傛灉涓嶅瓨鍦紝灏辨妸褰撳墠鐨刄UID鍋氫负key锛屾斁鍒板璞′腑鍘籠r\n            redisCache.setCacheObject(phoneCallReqYQVO.getUuid(), phoneCallReqYQVO, 120, TimeUnit.MINUTES);\r\n        }\r\n\r\n        if (\"SilentCallback\".equals(phoneCallReqYQVO.getOperate())) {\r\n            //濡傛灉鏄潤榛樺洖璋僜r\n            Integer num = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"noVoice\");\r\n            //鍒ゆ柇闈欓粯鍥炶皟娆℃暟鏄惁灏忎笌妯℃澘瑙勫畾鐨勬鏁癨r\n            if (num < ivrTaskTemplate.getNoVoiceNum()) {\r\n                //灏忎笌鐨勮瘽,灏辩户缁棶鎮h�匼r\n                phoneCallBackYQVO.setType(\"text\");\r\n                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                String scriptContent = ivrTaskTemplateScriptVO.getIvrtext();\r\n                log.error(\"SilentCallback鐨勯棶棰樺唴瀹箂criptContent锛歿}\", scriptContent);\r\n                phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent));\r\n                //灏嗛潤榛樻鏁板姞1\r\n                Integer noVoiceNum = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"noVoice\");\r\n                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"noVoice\", noVoiceNum + 1, 120, TimeUnit.MINUTES);\r\n                return phoneCallBackYQVO;\r\n            } else {\r\n                log.error(\"闈欓粯娆℃暟杈惧埌,鎸傛帀鐢佃瘽锛歿}\", num);\r\n                ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                ServiceSubtask ss = new ServiceSubtask();\r\n                ss.setId(serviceSubtask.getId());\r\n                ss.setSendstate(5L);\r\n                ss.setRemark(\"鐢佃瘽闈欓粯\");\r\n                serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                //澶т笌绛変簬鐨勮瘽,鐩存帴鎸傛柇\r\n                phoneCallBackYQVO.setType(\"text\");\r\n                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                phoneCallBackYQVO.setValue(serviceTask1.getJsy());\r\n                //灏嗙粨鏋滃啓鍒癲etail涓璡r\n                ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();\r\n                List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();\r\n                serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));\r\n                serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);\r\n                serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                saveQuestionAnswerPhone(serviceSubTaskDetailReq);\r\n                //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎\r\n                Long id = serviceSubtask.getId();\r\n                //鍏堟洿鏂颁竴涓嬪垎鏁癨r\n                double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                serviceSubtask.setScore(BigDecimal.valueOf(score));\r\n                serviceSubtask.setFinishtime(new Date());\r\n                serviceSubtask.setUpdateTime(new Date());\r\n                log.error(\"鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆erviceSubtask鐨勫�间负锛歿}\", serviceSubtask);\r\n                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n                Map<String, String> map = delRedisValue(null, id.toString());\r\n                if (ObjectUtils.isNotEmpty(map)) redisCache.setCacheObject(map.get(\"cacheName\"), map.get(\"val\"));\r\n                redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n                //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n            }\r\n            return phoneCallBackYQVO;\r\n        } else if (\"AsrCallback\".equals(phoneCallReqYQVO.getOperate()) && phoneCallReqYQVO.getEnd_time() != null && phoneCallReqYQVO.getEnd_time() != -1) {\r\n            //鍋氫竴涓爣璇嗭紝鐢ㄦ潵鍦ㄩ�氳瘽璇︽儏鎺ュ彛閲岋紝鍒ゆ柇鏄惁鏈変汉鎺ョ數璇濓紙value=2,琛ㄧず鏈変汉鎺ワ級\r\n            redisCache.deleteObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\");\r\n            redisCache.setCacheObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\", \"2\", 10, TimeUnit.MINUTES);\r\n            // 鍏堝閫氳瘽杩涜閫氱敤搴撳尮閰嶄竴娆r\n            String extemplateID = ivrTaskTemplate.getSubmoduleID();\r\n            if (StringUtils.isNotEmpty(extemplateID)) {\r\n                String[] split = extemplateID.split(\",\");\r\n                List<String> list = Arrays.asList(split);\r\n                List<Long> list1 = new ArrayList<>();\r\n                for (String str : list) {\r\n                    list1.add(Long.valueOf(str));\r\n                }\r\n                List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);\r\n                IvrLibaExtemplatescript les = null;\r\n                for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {\r\n                    Matcher matcher = null;\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {\r\n                        Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());\r\n                        matcher = pattern.matcher(phoneCallReqYQVO.getAsrtext());\r\n                    }\r\n\r\n                    Matcher matcher2 = null;\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {\r\n                        Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());\r\n                        matcher2 = pattern2.matcher(phoneCallReqYQVO.getAsrtext());\r\n                    }\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {\r\n                        //灏嗛�氱敤搴撳尮閰嶇殑锛屾斁鍒拌繑鍥炲�间腑\r\n//                        phoneCallBackYQVO.setValue(phoneCallBackYQVO.getValue() + ivrLibaExtemplatescript.getSwitchText());\r\n                        phoneCallBackYQVO.setCommonValue(ivrLibaExtemplatescript.getSwitchText());\r\n                        les = ivrLibaExtemplatescript;\r\n                    }\r\n                    break;\r\n                }\r\n                log.info(\"鏄惁闇�瑕佹寕鏈猴細{}\", les);\r\n                if (ObjectUtils.isNotEmpty(les)) {\r\n                    //瀵瑰尮閰嶇殑缁撴灉澶勭悊涓�涓�(鐪嬬湅鏄笉鏄渶瑕佹寕鏈�)\r\n                    if (les.getIsEnd() != null && les.getIsEnd() == 1) {\r\n                        ServiceSubtask ss = new ServiceSubtask();\r\n                        ss.setId(serviceSubtask.getId());\r\n                        ss.setSendstate(6L);\r\n                        ss.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n                        serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                        //鍙互鎸傛満浜哱r\n                        redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                        redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                        redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n                        redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"noVoice\");\r\n                        //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                        redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n                        phoneCallBackYQVO.setType(\"text\");\r\n                        phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + les.getSwitchText());\r\n                        //灏嗙粨鏋滃啓杩沝etail琛╘r\n                        ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();\r\n                        List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();\r\n                        ivrTaskTemplateScriptVO.setExtemplateText(les.getSwitchText());\r\n                        serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));\r\n                        serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);\r\n                        serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                        serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                        saveQuestionAnswerPhone(serviceSubTaskDetailReq);\r\n                        return phoneCallBackYQVO;\r\n                    }\r\n                }\r\n            }\r\n\r\n            //濡傛灉鏄枃鏈洖璋僜r\n            //鏍规嵁闂ID鑾峰彇璇ラ棶棰樼殑绫诲瀷\r\n            if (ivrTaskTemplateScriptVO.getScriptType().equals(\"1\")) {\r\n                //鐢ㄦ潵鏍囪锛屾槸鍚︽湁鍖归厤涓婄殑\r\n                Integer flag = 0;\r\n                //鏄�夋嫨棰榎r\n                for (int j = 0; j < ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size(); j++) {\r\n                    log.error(\"phoneCallReqYQVO.getAsrtext()鐨勫�间负锛歿}\", phoneCallReqYQVO.getAsrtext());\r\n                    if (StringUtils.isEmpty(phoneCallReqYQVO.getAsrtext())) {\r\n                        continue;\r\n                    }\r\n                    //鍖呭惈\r\n                    Matcher matcher = null;\r\n                    if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex())) {\r\n                        Pattern pattern = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex());\r\n                        matcher = pattern.matcher(phoneCallReqYQVO.getAsrtext());\r\n                    }\r\n                    //涓嶅寘鍚玕r\n                    Matcher matcher2 = null;\r\n                    if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2())) {\r\n                        Pattern pattern2 = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());\r\n                        matcher2 = pattern2.matcher(phoneCallReqYQVO.getAsrtext());\r\n                    }\r\n                    if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {\r\n                        //璇存槑鍖归厤姝g‘浜哱r\n                        //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉昞r\n                        log.info(\"鍖归厤姝g‘浜嗗悧--------------\");\r\n                        ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1);\r\n                        serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j));\r\n\r\n                        //灏嗘偅鑰呯殑鍥炵鍐欒繘service_subtask_detail涓璡r\n                        ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();\r\n                        List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();\r\n                        ivrTaskTemplateScriptVO.setQuestionResult(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getOptiondesc());\r\n                        ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);\r\n                        //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛塡r\n                        if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {\r\n                            String questionvoice = serviceSubtaskDetail.getQuestionvoice();\r\n                            String[] split = questionvoice.split(\"\\\\\\\\\");\r\n                            if (split.length > 0) {\r\n                                String lastPart = split[split.length - 1];\r\n                                serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);\r\n                            }\r\n                        }\r\n                        serviceSubtaskDetailList.add(serviceSubtaskDetail);\r\n                        serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);\r\n                        serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                        serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                        saveQuestionAnswerPhone(serviceSubTaskDetailReq);\r\n                        //鍒ゆ柇涓�涓嬶紝杩欎釜閫夐」缁撴灉鏄笉鏄繕鏈夌户缁棶涓嬪幓鐨勫繀瑕侊紝渚嬪閫夐」缁撴灉鏄埆浜轰笉鎯崇户缁洖绛旈棶棰橈紝灏辫缁撴潫鎺塡r\n                        if (ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getIsEnd() == 1) {\r\n                            redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"noVoice\");\r\n                            //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n                            phoneCallBackYQVO.setType(\"text\");\r\n                            phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());\r\n                            return phoneCallBackYQVO;\r\n                        }\r\n\r\n                        flag = 1;\r\n                        //灏嗗綋鍓嶅墠鐨勬挱鎶ョ姸鎬佸垹闄わ紝缁欎笅涓�棰樿浣峔r\n                        redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n//                        //鑾峰彇涓嬩竴棰榎r\n                        log.error(\"鑾峰彇涓嬩竴棰樼殑淇℃伅锛歿}\", ivrTaskTemplateScriptVO);\r\n                        if (ivrTaskTemplateScriptVO.getBranchFlag().equals(\"1\") || ivrTaskTemplateScriptVO.getBranchFlag().equals(\"0\") && ivrTaskTemplateScriptVO.getNextScriptno() != null && ivrTaskTemplateScriptVO.getNextScriptno() != 0) {\r\n                            Long nextQuestion = null;\r\n                            if (ivrTaskTemplateScriptVO.getBranchFlag().equals(\"1\")) {\r\n                                nextQuestion = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();\r\n                                //鏇存柊鍒嗘暟\r\n                                double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                                score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore()).doubleValue();\r\n                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\", score);\r\n                            } else {\r\n                                nextQuestion = ivrTaskTemplateScriptVO.getNextScriptno();\r\n                                //鏇存柊鍒嗘暟\r\n                                Object obj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                                Double score = (obj == null ? new Double(0.00) : new Double(((Double) obj).doubleValue()));\r\n                                score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore()).doubleValue();\r\n                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\", score, 120, TimeUnit.MINUTES);\r\n                            }\r\n                            if (nextQuestion == null || nextQuestion == 0L) {\r\n                                //濡傛灉涓嬩竴棰樹负绌猴紝鎴栬�呬负0锛屽垯鎸傛満\r\n                                ServiceSubtask ss = new ServiceSubtask();\r\n                                ss.setId(serviceSubtask.getId());\r\n                                ss.setSendstate(6L);\r\n                                ss.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n                                serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"noVoice\");\r\n                                //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n                                phoneCallBackYQVO.setType(\"text\");\r\n                                phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());\r\n                                //灏嗙粨鏋滃啓杩沝etail琛╘r\n                                ServiceSubTaskDetailReq ssdReq = new ServiceSubTaskDetailReq();\r\n                                List<ServiceSubtaskDetail> serviceSubtaskDetailList2 = new ArrayList<>();\r\n                                serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));\r\n                                serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList2);\r\n                                ssdReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                                ssdReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                                saveQuestionAnswerPhone(ssdReq);\r\n                                return phoneCallBackYQVO;\r\n                            }\r\n\r\n                            for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {\r\n                                if (script.getSort() == nextQuestion.intValue()) {\r\n                                    phoneCallBackYQVO.setType(\"text\");\r\n                                    phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                                    String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();\r\n                                    log.error(\"涓嬩竴棰橀棶棰橈細{}\", scriptContent);\r\n                                    log.error(\"涓嬩竴棰樼殑瀛愪换鍔℃槸锛歿}\", serviceSubtask);\r\n                                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));\r\n                                    //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀筡r\n                                    redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"-\" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);\r\n                                    //鍒犻櫎鏃犲搷搴擻r\n                                    redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid());\r\n                                }\r\n                            }\r\n                        } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {\r\n                            ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            phoneCallBackYQVO.setType(\"text\");\r\n                            phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                            //鏇存柊涓�涓嬪垎鏁癨r\n                            double score = 0.0;\r\n                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (double) scoreObj;\r\n                            serviceSubtask.setScore(BigDecimal.valueOf(score));\r\n                            serviceSubtask.setFinishtime(new Date());\r\n                            serviceSubtask.setSendstate(6L);\r\n                            serviceSubtask.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n                            //璁剧疆缁撴潫璇璡r\n                            phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());\r\n                            Long id = serviceSubtask.getId();\r\n                            Map<String, String> map = delRedisValue(null, id.toString());\r\n                            log.error(\"map鐨勫�间负锛歿}\", map);\r\n                            if (ObjectUtils.isNotEmpty(map))\r\n                                redisCache.setCacheObject(map.get(\"cacheName\"), map.get(\"val\"));\r\n                            redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid());\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n                            //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n//                                return phoneCallBackYQVO;\r\n\r\n                        }\r\n                    } else {\r\n                        log.info(\"娌℃湁鍖归厤涓�----------------------------\");\r\n                        //flag=0,璇存槑娌� 鍖归厤涓婏紝涔熻鎶婃偅鑰呰鐨勮瘽璁板綍涓嬫潵\r\n                        if (j == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size() - 1 && flag == 0) {\r\n                            ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();\r\n                            List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();\r\n                            ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);\r\n                            //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛塡r\n                            if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {\r\n                                String questionvoice = serviceSubtaskDetail.getQuestionvoice();\r\n                                String[] split = questionvoice.split(\"\\\\\\\\\");\r\n                                if (split.length > 0) {\r\n                                    String lastPart = split[split.length - 1];\r\n                                    serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);\r\n                                }\r\n                            }\r\n                            serviceSubtaskDetailList.add(serviceSubtaskDetail);\r\n                            //濡傛灉娌℃湁 鍖归厤涓婏紝杩欎釜蹇呴』涓簄ull\r\n                            serviceSubtaskDetailList.get(0).setMatchedtext(\"\");\r\n                            serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);\r\n                            serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                            serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                            saveQuestionAnswerPhone(serviceSubTaskDetailReq);\r\n                        }\r\n                        continue;\r\n                    }\r\n                }\r\n                //閮芥病鏈夊尮閰嶅埌\r\n                if (StringUtils.isEmpty(phoneCallBackYQVO.getValue())) {\r\n                    log.info(\"閮芥病鏈夊尮閰嶅埌-------------------------\");\r\n                    Integer count = null;\r\n                    Object countObj = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid());\r\n                    if (ObjectUtils.isNotEmpty(countObj)) count = (Integer) countObj;\r\n                    if (count != null && count >= ivrTaskTemplate.getMateNum()) {\r\n                        //濡傛灉count宸茬粡澶т簬鎴栫瓑浜庢病鏈夊尮閰嶆鏁癨r\n                        if (ivrTaskTemplateScriptVO.getBranchFlag().equals(\"0\") && ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getBranchFlag().equals(\"0\") && ivrTaskTemplateScriptVO.getNextScriptno() == 0 || ivrTaskTemplateScriptVO.getBranchFlag().equals(\"1\") && ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getBranchFlag().equals(\"1\") && ivrTaskTemplateScriptVO.getNextScriptno() == 0) {\r\n                            //濡傛灉鏄渶鍚庝竴閬撻锛屾垨鑰呮病鏈変笅涓�棰樹簡锛屽氨鐩存帴鎸傛満\r\n                            ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            phoneCallBackYQVO.setType(\"text\");\r\n                            phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                            if (StringUtils.isNotEmpty(phoneCallBackYQVO.getValue()))\r\n                                phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + phoneCallBackYQVO.getValue() + serviceTask1.getJsy());\r\n                            else phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());\r\n\r\n                            //鏇存柊涓�涓嬪垎鏁癨r\n                            Double score = null;\r\n                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;\r\n                            serviceSubtask.setScore(BigDecimal.valueOf(score));\r\n                            serviceSubtask.setFinishtime(new Date());\r\n                            serviceSubtask.setSendstate(6L);\r\n                            serviceSubtask.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                            //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n                            //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎\r\n                            Long id = serviceSubtask.getId();\r\n                            Map<String, String> map = delRedisValue(null, id.toString());\r\n                            if (ObjectUtils.isNotEmpty(map)) {\r\n                                redisCache.setCacheObject(map.get(\"cacheName\"), map.get(\"val\"));\r\n                                redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            }\r\n//                            return phoneCallBackYQVO;\r\n                        } else {\r\n                            //鏍规嵁ivrTaskTemplateScriptVO.getNextScriptno()鑾峰彇涓嬩竴棰樿繘琛屾彁闂甛r\n                            for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {\r\n                                if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {\r\n                                    phoneCallBackYQVO.setType(\"text\");\r\n                                    phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                                    String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();\r\n                                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));\r\n                                    //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀筡r\n                                    redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"-\" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);\r\n\r\n                                    //鏇存柊涓�涓嬪垎鏁癨r\n                                    Double score = null;\r\n                                    Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                                    if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;\r\n                                    score = BigDecimal.valueOf(score).add(script.getScore()).doubleValue();\r\n\r\n                                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\", score, 120, TimeUnit.MINUTES);\r\n                                }\r\n                            }\r\n                        }\r\n                    } else {\r\n                        if (count == null)\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid(), 1, 120, TimeUnit.MINUTES);\r\n                        else\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid(), count + 1, 120, TimeUnit.MINUTES);\r\n\r\n                        phoneCallBackYQVO.setType(\"text\");\r\n                        phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, ivrTaskTemplateScriptVO.getIvrtext()));\r\n                    }\r\n                }\r\n\r\n            } else {\r\n                //涓嶆槸閫夋嫨棰�,鐩存帴璁板綍绛旀锛屽皢缁撴灉鍐欏埌detail涓璡r\n                ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();\r\n                List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();\r\n                ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);\r\n                //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛塡r\n                if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {\r\n                    String questionvoice = serviceSubtaskDetail.getQuestionvoice();\r\n                    String[] split = questionvoice.split(\"\\\\\\\\\");\r\n                    if (split.length > 0) {\r\n                        String lastPart = split[split.length - 1];\r\n                        serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);\r\n                    }\r\n                }\r\n                serviceSubtaskDetailList.add(serviceSubtaskDetail);\r\n                serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);\r\n                serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                saveQuestionAnswerPhone(serviceSubTaskDetailReq);\r\n                //    String xh = idSort.split(\"-\")[1];\r\n\r\n                //濡傛灉閫夐」鍒嗘敮涓�1鐨勮瘽锛屽垯闇�瑕佹牴鎹棶棰樹笂鐨刵extScriptno杩涜璺宠浆\r\n                //闂瓟棰樻病鏈夎烦杞琝r\n                if (ivrTaskTemplateScriptVO.getNextScriptno() != null && ivrTaskTemplateScriptVO.getNextScriptno() != 0) {\r\n                    for (IvrTaskTemplateScript ivrTaskTemplateScript1 : ivrTaskTemplateScripts) {\r\n                        if (ivrTaskTemplateScriptVO.getNextScriptno().intValue() == ivrTaskTemplateScript1.getSort()) {\r\n                            phoneCallBackYQVO.setType(\"text\");\r\n                            phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                            String scriptContent = StringUtils.isNotEmpty(ivrTaskTemplateScript1.getIvrtext()) ? ivrTaskTemplateScript1.getIvrtext() : ivrTaskTemplateScript1.getScriptContent();\r\n\r\n                            phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid());\r\n                            redisCache.setCacheObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone(), ivrTaskTemplateScript1.getId().toString());\r\n\r\n                            //鏇存柊涓�涓嬪垎鏁癨r\n                            Double score = null;\r\n                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;\r\n                            score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getScore()).doubleValue();\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\", score, 120, TimeUnit.MINUTES);\r\n\r\n                        }\r\n                    }\r\n                } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {\r\n                    //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜哱r\n                    ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                    phoneCallBackYQVO.setType(\"text\");\r\n                    phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());\r\n\r\n                    //鏇存柊涓�涓嬪垎鏁癨r\n                    Double score = null;\r\n                    Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                    if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;\r\n                    serviceSubtask.setScore(BigDecimal.valueOf(score));\r\n                    serviceSubtask.setFinishtime(new Date());\r\n                    serviceSubtask.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n                    serviceSubtask.setSendstate(6L);\r\n                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                    //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎\r\n                    Long id = serviceSubtask.getId();\r\n                    Map<String, String> map = delRedisValue(null, id.toString());\r\n                    redisCache.setCacheObject(map.get(\"cacheName\"), map.get(\"val\"));\r\n                    //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask1.getJsy(), 120, TimeUnit.MINUTES);\r\n                    redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                    redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                }\r\n            }\r\n        }\r\n        log.error(\"phoneCallBackYQVO鐨勮繑鍥炲�兼槸锛歿}\", phoneCallBackYQVO);\r\n        return phoneCallBackYQVO;\r\n    }\r\n\r\n\r\n    private String getObject(ServiceSubtask serviceSubtask, String scriptContent) {\r\n        Map<String, Map<String, String>> param = getParam(serviceSubtask.getTaskid());\r\n        for (Map<String, String> map : param.values()) {\r\n            for (String key : map.keySet()) {\r\n                scriptContent = scriptContent.replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : \"\");\r\n            }\r\n        }\r\n        if (StringUtils.isEmpty(scriptContent)) {\r\n            return scriptContent;\r\n        }\r\n        scriptContent = scriptContent.replace(\"${name}\", StringUtils.isNotEmpty(serviceSubtask.getSendname()) ? serviceSubtask.getSendname() : \"\");\r\n        scriptContent = scriptContent.replace(\"${dzz}\", StringUtils.isNotEmpty(serviceSubtask.getAddr()) ? serviceSubtask.getAddr() : \"\");\r\n        scriptContent = scriptContent.replace(\"${phone}\", StringUtils.isNotEmpty(serviceSubtask.getTelcode()) ? serviceSubtask.getTelcode() : \"\");\r\n\r\n        return scriptContent;\r\n    }\r\n\r\n\r\n    /**\r\n     * 鑾峰彇浠诲姟閲岀殑閫氶厤绗r\n     *\r\n     * @param taskId\r\n     * @return\r\n     */\r\n    private Map<String, Map<String, String>> getParam(Long taskId) {\r\n        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(taskId);\r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        Map<String, Map<String, String>> serviceTaskMap = null;\r\n        try {\r\n            serviceTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);\r\n        } catch (JsonProcessingException e) {\r\n            e.printStackTrace();\r\n        }\r\n        return serviceTaskMap;\r\n    }\r\n\r\n    private Map<String, String> delRedisValue(String cache, String id) {\r\n        id = \",\" + id + \",\";\r\n        String val = \"\";\r\n        String cacheName = \"\";\r\n        Map<String, String> map = new HashMap<>();\r\n\r\n        if (StringUtils.isNotEmpty(cache)) {\r\n            val = redisCache.getCacheObject(cache);\r\n            if (!StringUtils.isEmpty(val)) {\r\n                if (val.contains(id)) {\r\n                    val = val.replaceAll(id, \"\");\r\n                }\r\n            }\r\n            map.put(\"val\", val);\r\n            map.put(\"cacheName\", cache);\r\n            return map;\r\n        }\r\n\r\n        for (int i = 0; i < 6; i++) {\r\n            val = redisCache.getCacheObject(\"cache-0\" + i);\r\n            if (!StringUtils.isEmpty(val)) {\r\n                if (val.contains(id)) {\r\n                    val = val.replaceAll(id, \"\");\r\n                    map.put(\"val\", val);\r\n                    map.put(\"cacheName\", \"cache-0\" + i);\r\n                }\r\n            }\r\n        }\r\n        return map;\r\n    }\r\n\r\n\r\n    /**\r\n     * 闆ㄧ划浠诲姟鎷夊彇\r\n     *\r\n     * @return\r\n     */\r\n    @Override\r\n    public List<PullTaskVO> taskPull() {\r\n        //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖\r\n        List<PullTaskVO> pullTaskVOList = new ArrayList<>();\r\n        List<String> cacheList = new ArrayList<>();\r\n        ListOperations<String, String> listOps = redisTemplate.opsForList();\r\n        //蹇呴』绛塧che-exist鍏ㄩ儴鎵撳畬鎵嶈兘鎷夊彇涓嬩竴鎵癸紙涓昏鏄�曟墍鏈夌殑鏁版嵁閮藉爢鍦ㄧ數璇濈殑缂撳瓨閲岋紝鍦ㄨ瀹氱殑鏃堕棿鎵撲笉瀹岋級\r\n        long existSize = listOps.size(\"cache-exist\");\r\n        if (existSize > 0) return pullTaskVOList;\r\n        int count = 0;\r\n        long size = listOps.size(\"cache-0\");\r\n        log.error(\"---------鎵撶數璇濅箣鍓嶇紦瀛樹腑鐨勬暟鎹噺锛歿}\", size);\r\n        if (size > 0) {\r\n            //phoneCount()  閫氳繃缁欏嚭鐨勬瘡涓皬鏃堕渶瑕佹墦鍑虹殑鐢佃瘽閲忥紝绠楀嚭鍒版櫄涓�8鐐逛竴鐐硅兘鎵撳嚭澶氬皯涓數璇濓紝鑾峰彇鍒版�婚噺\r\n            //濡傛灉闇�瑕佺珛鍗虫墽琛岀殑鏁版嵁閲忓ぇ浜庝竴澶╄鎵ц鐨勪笂闄愶紝鍒欏彧鍙栦笂闄愮殑鏁伴噺锛屽叾瀹冪殑鍒欐斁鍥瀝edis涓璡r\n            count = Math.min(phoneCount(), (int) size);\r\n            if (count != 0) {\r\n                cacheList = listOps.range(\"cache-0\", 0, count - 1);\r\n            }\r\n        }\r\n\r\n\r\n        log.error(\"浠诲姟鎷夊彇cache-0鐨勫�兼槸澶氬皯锛歿}\", cacheList);\r\n        //  cache-0涓虹珛鍗冲彂璧风殑,鍏跺畠鐨勫厛鎺ㄨ繜\r\n        if (!CollectionUtils.isEmpty(cacheList)) {\r\n            pullTaskVOList = getPullTaskList(cacheList, \"cache-0\");\r\n            // 鍒犻櫎宸插鐞嗙殑鏁版嵁\r\n            listOps.trim(\"cache-0\", count, -1);\r\n            log.error(\"鎵撶數璇濅箣鍚庣紦瀛樹腑鐨勬暟鎹噺---------锛歿}\", listOps.size(\"cache-0\"));\r\n        } else {\r\n            for (int i = 1; i < 6; i++) {\r\n                //鍙栧嚭浠巆ache-1 鍒� cache-5鐨勭涓�涓瓙浠诲姟淇℃伅\r\n                try {\r\n                    Long size1 = listOps.size(\"cache-\" + i);\r\n                    if (size1 == null || size1 == 0) continue;\r\n                    int count1 = Math.min(phoneCount(), size1.intValue());\r\n                    List<String> value = listOps.range(\"cache-0\" + i, 0, count1 - 1);\r\n\r\n                    List<PullTaskVO> pullTaskVOList2 = getPullTaskList(value, \"cache-\" + i);\r\n                    if (CollectionUtils.isNotEmpty(pullTaskVOList2) && pullTaskVOList2.size() > 0) {\r\n                        pullTaskVOList.addAll(pullTaskVOList2);\r\n                    }\r\n                    //灏嗗鐞嗚繃鐨勬暟鎹垹闄r\n                    listOps.trim(\"cache-0\" + i, count1, -1);\r\n                } catch (Exception e) {\r\n//                    log.error(\"鐪嬬潃鐑");\r\n                }\r\n            }\r\n        }\r\n        //existList鐢ㄦ潵璁板綍鎺ヤ笅鏉ラ渶瑕佹墽琛岀殑瀛愪换鍔D\r\n        List<String> existList = new ArrayList<>();\r\n        if (CollectionUtils.isNotEmpty(pullTaskVOList)) {\r\n            //缁欏洖璋冨弬鏁拌祴鍊糪r\n            for (PullTaskVO pullTaskVO : pullTaskVOList) {\r\n                existList.add(pullTaskVO.getTaskid());\r\n                pullTaskVO.setAsrcallback(ASRCallBackPath);\r\n            }\r\n        }\r\n        if (existList.size() != 0) redisCache.setCacheListRight(\"cache-exist\", existList);\r\n        log.error(\"-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}\", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null);\r\n        return pullTaskVOList;\r\n    }\r\n\r\n\r\n    private List<PullTaskVO> getPullTaskList(List<String> subIds, String cacheName) {\r\n        log.error(\"浠诲姟鎷夊彇subIds鐨勫�兼槸澶氬皯锛歿}\", subIds);\r\n        //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖\r\n        List<PullTaskVO> pullTaskVOList = new ArrayList<>();\r\n        //newValue0鐢ㄤ簬淇濆瓨娌℃湁澶勭悊鐨勫瓙 浠诲姟\r\n//        String newValue0 = \"\";\r\n        List<String> newValue0 = new ArrayList<>();\r\n        //鏍规嵁,鑾峰彇瀛愪换鍔$殑ID\r\n//        String[] split = subIds.split(\",,\");\r\n        for (int i = 0; i < subIds.size(); i++) {\r\n            if (cacheName.equals(\"cache-0\") && i < subIds.size() || !cacheName.equals(\"cache-0\") && i < 1) {\r\n                PullTaskVO pullTaskVO = new PullTaskVO();\r\n                String subId = subIds.get(i).trim();\r\n                ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(subId));\r\n                if (ObjectUtils.isEmpty(serviceSubtask)) {\r\n                    log.error(\"璇ubId鏈夐棶棰橈紝鍦ㄨ〃涓煡璇笉鍒帮細{}\", subId);\r\n                    continue;\r\n                }\r\n                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {\r\n                    serviceSubtask.setRemark(\"鎵嬫満鍙蜂负绌篭");\r\n                    serviceSubtask.setSendstate(4L);\r\n                    serviceSubtask.setResult(\"error\");\r\n//                    serviceSubtask.setFinishtime(new Date());\r\n                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n                    continue;\r\n                }\r\n                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());\r\n                if (ObjectUtils.isEmpty(ivrTaskTemplate)) continue;\r\n                //閫氳繃浠诲姟妯℃澘涓殑\"绗竴娆¢棶棰樼紪鍙穃"鑾峰彇绗竴涓棶棰�;\r\n                IvrTaskTemplateScript ivrTaskTemplateScript = null;\r\n                IvrTaskTemplateScript ivrTaskTemplateScript1 = new IvrTaskTemplateScript();\r\n                ivrTaskTemplateScript1.setTemplateID(ivrTaskTemplate.getId());\r\n                List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript1);\r\n                aa:\r\n                for (IvrTaskTemplateScript ivrTaskTemplateScript2 : ivrTaskTemplateScripts) {\r\n                    if (ivrTaskTemplate.getFirstQuestionNum() == Long.valueOf(ivrTaskTemplateScript2.getSort())) {\r\n                        ivrTaskTemplateScript = ivrTaskTemplateScript2;\r\n                        break aa;\r\n                    }\r\n                }\r\n                //濡傛灉ivrTaskTemplateScript涓虹┖锛屼篃灏辨病鏈夊線涓嬫墽琛岀殑蹇呰浜哱r\n                if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) {\r\n                    log.error(\"---------杩欎釜ivrTaskTemplate.getId()鐨勯棶棰樹负绌猴細{}\", ivrTaskTemplate.getId());\r\n                    continue;\r\n                }\r\n                //鑾峰彇閫氶厤绗﹀尮閰嶈繃鍚庣殑闂\r\n                String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getIvrtext());\r\n                String kcb = serviceTask.getKcb() + \",\" + scrContent;\r\n\r\n                //灏佽杩斿洖鏁版嵁\r\n                //taskId = 瀛愪换鍔D + 闂ID +闂搴忓彿\r\n                pullTaskVO.setTaskid(subId);\r\n                pullTaskVO.setAppkey(app_key_yq);\r\n                pullTaskVO.setSections(LocalTime.now().format(DateTimeFormatter.ofPattern(\"hh:mm\")) + \"-\" + LocalTime.now().plusMinutes(1).format(DateTimeFormatter.ofPattern(\"hh:mm\")));\r\n                pullTaskVO.setPhones(serviceSubtask.getPhone());\r\n                pullTaskVO.setPrologue(kcb);\r\n                if (cacheName.equals(\"cache-0\")) pullTaskVO.setDisplayNo(\"2\");\r\n                else pullTaskVO.setDisplayNo(\"2\");\r\n                pullTaskVOList.add(pullTaskVO);\r\n                redisCache.setCacheObject(subId.trim() + \"-\" + serviceSubtask.getPhone().trim(), ivrTaskTemplateScript.getId().toString(), 120, TimeUnit.MINUTES);\r\n            } else {\r\n                newValue0.add(subIds.get(i));\r\n                redisCache.setCacheListRight(cacheName, newValue0);\r\n            }\r\n        }\r\n\r\n        return pullTaskVOList;\r\n    }\r\n\r\n\r\n    //涓嬮潰鐨勪唬鐮佷笉鑳藉垹闄わ紝涓婇潰鐨勬柟娉曞彧鏄厤鍚堢數璇濈鑱旇皟鐢ㄧ殑锛孿r\n//    @Override\r\n//    public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO) {\r\n//        log.error(\"phoneCallBackVO鐨勫叆鍙傦細{},{},{},{},{},{},{}\", phoneCallBackVO.getResultType(), phoneCallBackVO.getUuid(), phoneCallBackVO.getErrResult(), phoneCallBackVO.getTextResult(), phoneCallBackVO.getHangUpResult(), phoneCallBackVO.getEnumState(), phoneCallBackVO.getUint8());\r\n//        //鑾峰彇鏁版嵁\r\n//        Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());\r\n//        if (!aBoolean) {\r\n//            throw new BaseException(\"璇uid涓嶅瓨鍦╘");\r\n//        }\r\n//        Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"hangup\");\r\n//        if (hangupValue != null && hangupValue == 1) {\r\n//            //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽\r\n//            PhoneUtils phoneUtils = new PhoneUtils();\r\n//            phoneUtils.hangup(phoneCallBackVO.getUuid(), null, null, null, null, null, null, null);\r\n//\r\n//        }\r\n//\r\n//        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());\r\n////        ObjectMapper objectMapper = new ObjectMapper();\r\n////        Map<String, Object> map = null;\r\n////        try {\r\n////            map = objectMapper.readValue(cacheObject, Map.class);\r\n////        } catch (JsonProcessingException e) {\r\n////            e.printStackTrace();\r\n////        }\r\n//\r\n//        ServiceSubtask ServiceSubtask = (ServiceSubtask) map.get(\"ServiceSubtask\");\r\n//        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get(\"ivrLibaTemplateScriptVO\");\r\n//        //灏唘uid鏇存柊鍒版暟鎹簱涓璡r\n//        ServiceSubtask.setSenduuid(phoneCallBackVO.getUuid());\r\n//        ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);\r\n//\r\n//        //鑾峰彇妯℃澘淇℃伅\r\n//        IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"ivrLibaTemplateVO\");\r\n//\r\n//\r\n//        //棣栧厛鍒ゆ柇resultType\r\n//        if (phoneCallBackVO.getResultType() == 1) {\r\n//            //鍛煎彨缁撴灉鎺ュ彛: 1\r\n//            if (phoneCallBackVO.getUint8() == 1) {\r\n//                //鍛煎彨澶辫触锛屽幓redis涓褰曚竴涓嬪け璐ユ鏁帮紝杩涜鍐嶆鍛煎彨\r\n//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"uint8\");\r\n//                if (integer != null) {\r\n//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"uint8\", integer + 1, 120, TimeUnit.MINUTES);\r\n//                } else {\r\n//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"uint8\", 1, 120, TimeUnit.MINUTES);\r\n//                }\r\n//\r\n//                if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {\r\n//                    log.info(\"鏃犱汉鎺ュ惉锛歿},   {}\", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid());\r\n//                    //杩炵画鎵撹瀹氭锛屽鏋滆娌′汉鎺ワ紝閭e氨缁撴潫\r\n//                    ServiceSubtask.setResult(phoneCallBackVO.getErrResult());\r\n//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);\r\n//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + \"uint8\");\r\n//                } else if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {\r\n//                    //杩涜閲嶆嫧\r\n//                    PhoneUtils phoneUtils = new PhoneUtils();\r\n//                    phoneUtils.ob(null, null, null, null, null, null, null, ServiceSubtask.getPhone(), phoneCallBackVO.getUuid(), true);\r\n//                }\r\n//            }\r\n//\r\n//        } else if (phoneCallBackVO.getResultType() == 2) {\r\n//            //閫氳瘽鐘舵�佹洿鏂版帴鍙�: 2\r\n//            if (phoneCallBackVO.getEnumState() == 0) {\r\n//                // 0-鎸搩\r\n//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"enumState\");\r\n//\r\n//                if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {\r\n//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"enumState\", integer + 1, 120, TimeUnit.MINUTES);\r\n//                } else if (integer == null) {\r\n//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"enumState\", 1, 120, TimeUnit.MINUTES);\r\n//                } else if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {\r\n//                    ServiceSubtask.setResult(\"鏃犱汉鎺ュ惉\");\r\n//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);\r\n//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + \"enumState\");\r\n//                }\r\n//            } else if (phoneCallBackVO.getEnumState() == 2) {\r\n//                //鎮h�呮寕鏂數璇漒r\n//                log.info(\"鎮h�呮寕鏂數璇濓細{}\", phoneCallBackVO.getUuid());\r\n//                ServiceSubtask.setResult(phoneCallBackVO.getHangUpResult());\r\n//                ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);\r\n//                redisCache.deleteObject(phoneCallBackVO.getUuid() + \"enumState\");\r\n//            }\r\n//\r\n//\r\n//        } else if (phoneCallBackVO.getResultType() == 3) {\r\n//            //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3\r\n//            Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"noVoice\");\r\n//            QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"returnQues\");\r\n//            IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();\r\n//            PhoneUtils phoneUtils = new PhoneUtils();\r\n//\r\n//            if (StringUtils.isEmpty(phoneCallBackVO.getTextResult())) {\r\n//                //鏃犲洖璇漒r\n//                //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у�糪r\n//                if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {\r\n//                    //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰榎r\n//                    if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {\r\n//                        //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻\r\n//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"hangup\", 1, 120, TimeUnit.MINUTES);\r\n//                        phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());\r\n//                    } else {\r\n//                        //鏈変笅涓�棰榎r\n//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", 0, 120, TimeUnit.MINUTES);\r\n//                        IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);\r\n//                        // 闂锛�  鍘昏皟鐢╘"tts鍚堟垚鍜屾挱鏀綷"鎺ュ彛\r\n//                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());\r\n//                    }\r\n//                } else {\r\n//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", noVoice + 1, 120, TimeUnit.MINUTES);\r\n//                    //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)\r\n//                    String slienceText = nowQuestion.getSlienceText();\r\n//                    //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢╘"tts鍚堟垚鍜屾挱鏀綷"鎺ュ彛\r\n//                    phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());\r\n//                    return new PhoneCallBackVO();\r\n//                }\r\n//\r\n//            } else {\r\n//                //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛塡r\n//                for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {\r\n//                    //鍖呭惈\r\n//                    Matcher matcher = null;\r\n//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {\r\n//                        Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());\r\n//                        matcher = pattern.matcher(phoneCallBackVO.getTextResult());\r\n//                    }\r\n//                    //涓嶅寘鍚玕r\n//                    Matcher matcher2 = null;\r\n//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {\r\n//                        Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());\r\n//                        matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());\r\n//                    }\r\n//                    log.info(\"phoneCallBack--Targetregex鐨勫�间负锛歿}, phoneCallBack--Targetregex2鐨勫�间负锛歿}\", nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());\r\n//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {\r\n//                        //璇存槑鍖归厤姝g‘浜哱r\n//                        //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉昞r\n//                        nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);\r\n//                        ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));\r\n//\r\n//\r\n//                        //灏嗛潤榛樼疆涓�0\r\n//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", 0, 120, TimeUnit.MINUTES);\r\n//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", 0, 120, TimeUnit.MINUTES);\r\n//                        //鑾峰彇涓嬩竴棰榎r\n//                        Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();\r\n//                        for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {\r\n//                            if (script.getTargetid() == nextQuestion) {\r\n//                                QuestionMessage questionMessage = new QuestionMessage();\r\n//                                questionMessage.setNowQuestion(script);\r\n//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n//                                break;\r\n//                            }\r\n//                        }\r\n//                        break;\r\n//                    } else {\r\n//                        //娌℃湁鍖归厤鍒癨r\n//                        Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"mateNum\");\r\n//                        //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜哱r\n//                        if (mateNum == ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {\r\n//                            //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣\r\n//                            if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {\r\n//                                QuestionMessage questionMessage = new QuestionMessage();\r\n//                                IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);\r\n//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);\r\n//                                questionMessage.setNowQuestion(nextQuestion);\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", 0, 120, TimeUnit.MINUTES);\r\n//                            } else {\r\n//                                //灏卞彲浠ユ寕鏂數璇濅簡\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"hangup\", 1, 120, TimeUnit.MINUTES);\r\n//                                phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());\r\n//                                break;\r\n//                            }\r\n//                        } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {\r\n//                            //娌℃湁闂埌瑙勫畾娆℃暟\r\n//                            mateNum = mateNum + 1;\r\n//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", mateNum, 120, TimeUnit.MINUTES);\r\n//                        }\r\n//                    }\r\n//\r\n//                }\r\n//                //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆r\n//                String extemplateID = ivrLibaTemplateVO.getSubmoduleID();\r\n//                String[] split = extemplateID.split(\",\");\r\n//                List<String> list = Arrays.asList(split);\r\n//                List<Long> list1 = new ArrayList<>();\r\n//                if (StringUtils.isNotEmpty(extemplateID)) {\r\n//                    for (String str : list) {\r\n//                        list1.add(Long.valueOf(str));\r\n//                    }\r\n//                    List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);\r\n//                    for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {\r\n//                        Matcher matcher = null;\r\n//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {\r\n//                            Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());\r\n//                            matcher = pattern.matcher(returnQues.getContent());\r\n//                        }\r\n//\r\n//                        Matcher matcher2 = null;\r\n//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {\r\n//                            Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());\r\n//                            matcher2 = pattern2.matcher(returnQues.getContent());\r\n//                        }\r\n//                        log.info(\"++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}\", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());\r\n//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {\r\n//                            QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"returnQues\");\r\n//                            IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();\r\n//                            ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());\r\n//                            ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());\r\n//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n//                            if (ivrLibaExtemplatescript.getIsEnd() == 1) {\r\n//                                //灏嗛棶棰樼疆绌篭r\n//                                IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();\r\n//                                nowQuestion1.setQuestionText(null);\r\n//                                nowQuestion1.setQuestionVoice(null);\r\n//                                questionMessage.setNowQuestion(nowQuestion1);\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n//\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"isOver\", 1, 120, TimeUnit.MINUTES);\r\n//                            }\r\n//\r\n//                            //璋冪敤\"15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback\"灏嗙粨鏋滀紶鍥瀄r\n//\r\n//\r\n//                        }\r\n//                        break;\r\n//                    }\r\n//                }\r\n//\r\n//            }\r\n//        }\r\n//        return phoneCallBackVO;\r\n//    }\r\n\r\n    @Override\r\n    public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {\r\n        int i = 0;\r\n        if (StringUtils.isNotEmpty(serviceSubTaskDetailReq.getParam1())) {\r\n            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n            Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam1(), pri_key));\r\n            Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam2(), pri_key));\r\n            ServiceSubtaskVO ivrTaskSingle = new ServiceSubtaskVO();\r\n            ivrTaskSingle.setTaskid(tid);\r\n            ivrTaskSingle.setPatid(pid);\r\n            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ivrTaskSingle);\r\n            if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {\r\n                log.error(\"鎶ラ敊浜嗭紝selectServiceSubtaskList鏁版嵁涓虹┖浜嗭細{}\", ivrTaskSingle);\r\n                return 0;\r\n            }\r\n            //闅忚\r\n            for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {\r\n                serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());\r\n                serviceSubtaskDetail.setId(UUID.randomUUID().toString());\r\n                serviceSubtaskDetail.setCreateTime(new Date());\r\n                serviceSubtaskDetail.setGuid(selectServiceSubtaskList.get(0).getGuid());\r\n                serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());\r\n                serviceSubtaskDetail.setGuid(serviceSubTaskDetailReq.getGuid());\r\n                i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);\r\n            }\r\n        } else {\r\n            if (serviceSubTaskDetailReq != null && CollectionUtils.isNotEmpty(serviceSubTaskDetailReq.getServiceSubtaskDetailList())) {\r\n                for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {\r\n                    serviceSubtaskDetail.setCreateTime(new Date());\r\n                    serviceSubtaskDetail.setGuid(serviceSubTaskDetailReq.getGuid());\r\n                    serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());\r\n                    //鍏堟牴鎹瓙浠诲姟id,浠诲姟ID鍜岄棶棰樺簭鍙锋煡璇竴涓嬶紝璇ラ棶棰樻槸鍚﹀凡缁忔湁鍊硷紝濡傛灉鏈夊�硷紝鐩存帴淇敼锛屽鏋滀负绌猴紝鐩存帴鎻掑叆\r\n                    ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();\r\n                    ssd.setSubId(serviceSubtaskDetail.getSubId());\r\n                    ssd.setTaskid(serviceSubtaskDetail.getTaskid());\r\n                    ssd.setScriptid(serviceSubtaskDetail.getScriptid());\r\n                    if (serviceSubtaskDetail.getSubId() != null) {\r\n                        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskDetail.getSubId());\r\n                        ssd.setGuid(serviceSubtask.getGuid());\r\n                        ssd.setOrgid(serviceSubtask.getOrgid());\r\n                    }\r\n                    List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(ssd);\r\n                    if (CollectionUtils.isNotEmpty(serviceSubtaskDetails) && StringUtils.isNotEmpty(serviceSubtaskDetails.get(0).getMatchedtext())) {\r\n                        serviceSubtaskDetail.setId(serviceSubtaskDetails.get(0).getId());\r\n                        serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail);\r\n                    } else {\r\n                        if (serviceSubtaskDetail.getSubId() != null) {\r\n                            ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskDetail.getSubId());\r\n                            serviceSubtaskDetail.setGuid(serviceSubtask.getGuid());\r\n                            serviceSubtaskDetail.setOrgid(serviceSubtask.getOrgid());\r\n                        }\r\n                        i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer recordAccept(PhoneCallRecordVO phoneCallRecordVO) {\r\n        Object cacheObject = redisCache.getCacheObject(phoneCallRecordVO.getTaskid() + \"recordAccept-hungup\");\r\n        if (phoneCallRecordVO.getHangup_cause().equals(\"NO_USER_RESPONSE\") || ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals(\"1\")) {\r\n            //鏃犱汉鎺ュ惉\r\n            getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid()));\r\n            redisCache.deleteObject(phoneCallRecordVO.getTaskid() + \"recordAccept-hungup\");\r\n            redisCache.removeElementFromList(\"cache-exist\", phoneCallRecordVO.getTaskid());\r\n        } else if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals(\"2\")) {\r\n//        if (phoneCallRecordVO.getAnswered() != null && phoneCallRecordVO.getAnswered() == true) {\r\n            log.error(\"鏈変汉鎺ョ數璇濅簡锛屽苟涓斿畬浜哱");\r\n            //璇存槑鏈変汉鎺ヤ簡\r\n            int startIndex = phoneCallRecordVO.getRecord_path().indexOf(\"voice\") + \"voice\".length() + 1;  // 鍔�1鏄烦杩�/绗﹀彿\r\n            int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf(\"/\");\r\n            String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);\r\n            ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n            serviceSubtask.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n            serviceSubtask.setSendstate(6L);\r\n            serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));\r\n            serviceSubtask.setFinishtime(new Date());\r\n            serviceSubtask.setUpdateTime(new Date());\r\n            log.error(\"鐢佃瘽鎷ㄦ墦宸插畬鎴恠erviceSubtask鐨勫�间负:{}\", serviceSubtask);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n            //涓嬭浇鏂囦欢\r\n            ftpService.downloadFolder(\"/\" + LocalDate.now().toString(), profile + \"/upload/vadio/voice/\" + LocalDate.now().toString());\r\n            redisCache.deleteObject(phoneCallRecordVO.getTaskid() + \"recordAccept-hungup\");\r\n        } else {\r\n            //鎮h�呮嫆缁濋殢璁縗r\n            //鍏堟妸璇ubId浠巆ache_exist涓墧闄わ紝鍙鏈夊洖璋冨氨鍓旈櫎锛堢洰鐨勬槸锛屽敖蹇cache-exist涓虹┖锛屽幓缂撳瓨涓嬩竴鎵硅鎵撶殑鐢佃瘽;杩欓噷鍓旈櫎涓嶅奖鍝嶇數璇濈殑姝e父涓氬姟锛塡r\n            redisCache.removeElementFromList(\"cache-exist\", phoneCallRecordVO.getTaskid());\r\n            ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n            serviceSubtask.setRemark(\"鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁縗");\r\n            serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));\r\n            serviceSubtask.setSendstate(6L);\r\n            serviceSubtask.setFinishtime(new Date());\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n//            int startIndex = phoneCallRecordVO.getRecord_path().indexOf(\"voice\") + \"voice\".length() + 1;  // 鍔�1鏄烦杩�/绗﹀彿\r\n//            int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf(\"/\");\r\n//            String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);\r\n            //涓嬭浇鏂囦欢\r\n            ftpService.downloadFolder(\"/\" + LocalDate.now().toString(), profile + \"/upload/vadio/voice/\" + LocalDate.now().toString());\r\n            redisCache.deleteObject(phoneCallRecordVO.getTaskid() + \"recordAccept-hungup\");\r\n        }\r\n\r\n        return 1;\r\n    }\r\n\r\n    @Override\r\n    public List<ServiceSubtaskCount> getSfFzInfoEveryMonth(ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        if (serviceSubtaskCountReq.getUserId() == null) {\r\n            Long userId = SecurityUtils.getUserId();\r\n            serviceSubtaskCountReq.setUserId(userId);\r\n        }\r\n        if (serviceSubtaskCountReq.getStartTime() == null) {\r\n            LocalDate of = LocalDate.of(LocalDate.now().getYear(), 1, 1);\r\n            serviceSubtaskCountReq.setStartTime(Date.from(of.atStartOfDay(ZoneId.systemDefault()).toInstant()));\r\n        }\r\n        if (serviceSubtaskCountReq.getEndTime() == null) {\r\n            serviceSubtaskCountReq.setEndTime(new Date());\r\n        }\r\n        List<ServiceSubtaskCount> sfFzInfoEveryMonth = serviceSubtaskMapper.getSfFzInfoEveryMonth(serviceSubtaskCountReq);\r\n        List<ServiceSubtaskCount> result = sfFzInfoEveryMonth.stream().collect(Collectors.groupingBy(ServiceSubtaskCount::getMonth, Collectors.groupingBy(ServiceSubtaskCount::getServiceType, Collectors.summingLong(ServiceSubtaskCount::getCount)))).entrySet().stream().flatMap(monthEntry -> monthEntry.getValue().entrySet().stream().map(typeEntry -> new ServiceSubtaskCount(monthEntry.getKey(), typeEntry.getKey(), typeEntry.getValue()))).collect(Collectors.toList());\r\n\r\n        List<ServiceSubtaskCount> result2 = new ArrayList<>();\r\n        //鏍规嵁鏈嶅姟绫诲瀷杩涜绛涢�塡r\n        if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getServiceType())) {\r\n            for (ServiceSubtaskCount serviceSubtaskCount : result) {\r\n                for (Long type : serviceSubtaskCountReq.getServiceType()) {\r\n                    if (type == serviceSubtaskCount.getServiceType()) {\r\n                        result2.add(serviceSubtaskCount);\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            result2 = result;\r\n        }\r\n        return result2;\r\n    }\r\n\r\n    /**\r\n     * 鏈嶅姟缁熻鏌ヨ - 鎸夋椂闂寸淮搴︾粺璁″嚭闄�/闂ㄨ瘖闅忚鏁版嵁\r\n     *\r\n     * @param request 缁熻璇锋眰鍙傛暟\r\n     * @return 缁熻缁撴灉鍒楄〃\r\n     */\r\n    @Override\r\n    public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest request) {\r\n        log.info(\"getServiceStatistics鐨勫叆鍙備负锛歿}\", request);\r\n\r\n        // 鍙傛暟鏍¢獙\r\n        if (request.getStartDate() == null || request.getEndDate() == null) {\r\n            throw new IllegalArgumentException(\"寮�濮嬫棩鏈熷拰缁撴潫鏃ユ湡涓嶈兘涓虹┖\");\r\n        }\r\n\r\n        if (request.getStartDate().after(request.getEndDate())) {\r\n            throw new IllegalArgumentException(\"寮�濮嬫棩鏈熶笉鑳芥櫄浜庣粨鏉熸棩鏈焅");\r\n        }\r\n\r\n        // 濡傛灉timeType涓虹┖锛岄粯璁ゆ寜澶╃粺璁r\n        if (StringUtils.isEmpty(request.getTimeType())) {\r\n            request.setTimeType(\"day\");\r\n        }\r\n\r\n        List<ServiceStatisticsResponse> result = serviceSubtaskMapper.getServiceStatistics(request);\r\n\r\n\r\n        log.info(\"getServiceStatistics杩斿洖缁撴灉鏁伴噺锛歿}\", result.size());\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇闅忚缁熻姣斾緥\r\n     *\r\n     * @param serviceSubtaskCountReq\r\n     * @return\r\n     */\r\n    @Override\r\n    public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        log.error(\"getSfStatistics鐨勫叆鍙備负锛歿}\", serviceSubtaskCountReq);\r\n        List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();\r\n        List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);\r\n        \r\n        // 鏍规嵁鏉′欢杩涜鍒嗙粍\r\n        Map<String, List<ServiceSubtask>> collect = new HashMap<>();\r\n        \r\n        if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) {\r\n            if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse(\"Unknown\")));\r\n            } else {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse(\"Unknown\")));\r\n            }\r\n        } else if (serviceSubtaskCountReq.getDeptcodes() != null && serviceSubtaskCountReq.getDeptcodes().size() > 0) {\r\n            if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse(\"Unknown\")));\r\n            } else {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse(\"Unknown\")));\r\n            }\r\n        }\r\n        \r\n        for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {\r\n            if (CollectionUtils.isEmpty(serviceSubtaskList)) {\r\n                continue;\r\n            }\r\n            ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList);\r\n\r\n            //鍙婃椂鐜嘰r\n            ServiceSubtask ss = new ServiceSubtask();\r\n            ss.setOrgid(serviceSubtaskList.get(0).getOrgid());\r\n\r\n            // 濡傛灉鏈夊尰鐢熺紪鐮侊紝璁剧疆鍖荤敓缂栫爜鐢ㄤ簬鍙婃椂鐜囨煡璇r\n            if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {\r\n                ss.setDrcode(serviceSubtaskList.get(0).getDrcode());\r\n            }else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {\r\n                    ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());\r\n                } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) {\r\n                    ss.setDeptcode(serviceSubtaskList.get(0).getDeptcode());\r\n                }\r\n            }\r\n            \r\n            ss.setStarttime(serviceSubtaskCountReq.getStartTime());\r\n            ss.setEndtime(serviceSubtaskCountReq.getEndTime());\r\n            if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {\r\n                ss.setEndtime(new Date());\r\n            }\r\n            Double jsRate = serviceSubtaskMapper.selectTimelyRate(ss);\r\n            statistic.setRate(jsRate);\r\n\r\n            if (ObjectUtils.isNotEmpty(statistic)) {\r\n                serviceSubtaskStatistics.add(statistic);\r\n            }\r\n        }\r\n        return serviceSubtaskStatistics;\r\n    }\r\n\r\n    private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) {\r\n        ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();\r\n        //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮\r\n        DecimalFormat percentFormat = new DecimalFormat(\"##.##%\");\r\n        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());\r\n        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());\r\n        serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());\r\n        serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());\r\n        serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());\r\n        serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());\r\n        //鍑洪櫌浜烘\r\n        serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());\r\n        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n            //鏃犻渶闅忚浜烘\r\n            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {\r\n                serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);\r\n            }\r\n            //搴旈殢璁夸汉娆r\n            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {\r\n                serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L);\r\n            }\r\n\r\n            //棣栨鍑洪櫌闅忚\r\n            if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) {\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {\r\n                    serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {\r\n                    serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && ( serviceSubtask.getSendstate() == 6)) {\r\n                    serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {\r\n                    serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);\r\n                }\r\n                if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {\r\n                    double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp();\r\n                    serviceSubtaskStatistic.setFollowUpRate(percentFormat.format(rate));\r\n                } else {\r\n                    serviceSubtaskStatistic.setFollowUpRate(\"0.00%\");\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"4\")) {\r\n                    serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"5\")) {\r\n                    serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setAbnormal(serviceSubtaskStatistic.getAbnormal() + 1L);\r\n                }\r\n            }//浜屾鍑洪櫌闅忚\r\n            else if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) {\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {\r\n                    serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {\r\n                    serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {\r\n                    serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {\r\n                    serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L);\r\n                }\r\n                if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {\r\n                    double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain();\r\n                    serviceSubtaskStatistic.setFollowUpRateAgain(percentFormat.format(rate));\r\n                } else {\r\n                    serviceSubtaskStatistic.setFollowUpRateAgain(\"0.00%\");\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"4\")) {\r\n                    serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"5\")) {\r\n                    serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L);\r\n                }\r\n            }\r\n\r\n\r\n        }\r\n\r\n\r\n        return serviceSubtaskStatistic;\r\n    }\r\n\r\n    private IvrTaskTemplateScriptVO getNextQuestion(List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO IvrTaskTemplateScriptVO) {\r\n\r\n        for (int j = 0; j < IvrTaskTemplateScriptVOList.size(); j++) {\r\n            if (IvrTaskTemplateScriptVOList.get(j).getTargetid() == IvrTaskTemplateScriptVO.getTargetid() + 1) {\r\n                // 瀵硅鏉emplateScriptVO杩涜澶勭悊\r\n                return IvrTaskTemplateScriptVOList.get(j);\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private ServiceSubtaskDetail getServiceSubtaskDetail(PhoneCallReqYQVO phoneCallReqYQVO, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask, IvrTaskTemplate ivrTaskTemplate) {\r\n        log.info(\"-----------------phoneCallReqYQVO鐨勫�间负锛歿}\", phoneCallReqYQVO);\r\n\r\n        ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();\r\n        serviceSubtaskDetail.setSubId(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n        ServiceSubtask serviceSubtask1 = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n        if (serviceSubtask1 != null) {\r\n            serviceSubtaskDetail.setTaskid(serviceSubtask1.getTaskid());\r\n            serviceSubtaskDetail.setPatid(serviceSubtask1.getPatid());\r\n        }\r\n        serviceSubtaskDetail.setTargetid(ivrTaskTemplateScriptVO.getTargetid() != null ? ivrTaskTemplateScriptVO.getTargetid().intValue() : null);\r\n        serviceSubtaskDetail.setUuid(phoneCallReqYQVO.getUuid());\r\n        serviceSubtaskDetail.setPhone(phoneCallReqYQVO.getPhone());\r\n        serviceSubtaskDetail.setOperate(serviceSubtask.getCreateBy());\r\n        serviceSubtaskDetail.setDisplayno(phoneCallReqYQVO.getPhone());\r\n        serviceSubtaskDetail.setAssigntime(System.currentTimeMillis());\r\n        serviceSubtaskDetail.setStarttime(System.currentTimeMillis());\r\n        serviceSubtaskDetail.setAnswertime(System.currentTimeMillis());\r\n        serviceSubtaskDetail.setAsrtext(\"鏃犲簲绛擻");\r\n        if (StringUtils.isNotEmpty(phoneCallReqYQVO.getAsrtext()))\r\n            serviceSubtaskDetail.setAsrtext(phoneCallReqYQVO.getAsrtext());\r\n        serviceSubtaskDetail.setBeginTime(System.currentTimeMillis());\r\n        serviceSubtaskDetail.setEndTime(System.currentTimeMillis());\r\n        serviceSubtaskDetail.setSentEnd(1L);\r\n        serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString());\r\n        serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());\r\n        serviceSubtaskDetail.setQuestiontext(StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent());\r\n        serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath());\r\n        serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType());\r\n        serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());\r\n        serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText());\r\n        serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId());\r\n\r\n        int i = 1;\r\n        for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {\r\n            if (ivrTaskTemplateTargetoption.getIsUserOperation() == 1) {\r\n                serviceSubtaskDetail.setMatchedtext(ivrTaskTemplateTargetoption.getTargetvalue());\r\n            }\r\n            serviceSubtaskDetail.setTargetvalue(StringUtils.isEmpty(serviceSubtaskDetail.getTargetvalue()) ? ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetail.getTargetvalue() + \"&\" + ivrTaskTemplateTargetoption.getTargetvalue());\r\n        }\r\n\r\n        serviceSubtaskDetail.setAddtime(new Date());\r\n        serviceSubtaskDetail.setIsupload(0L);\r\n        serviceSubtaskDetail.setUploadTime(new Date());\r\n        serviceSubtaskDetail.setDelFlag(\"0\");\r\n        serviceSubtaskDetail.setValueType(ivrTaskTemplateScriptVO.getScriptType());\r\n        return serviceSubtaskDetail;\r\n    }\r\n\r\n    private void getSmsCompensate(Long subTaskId) {\r\n        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(subTaskId);\r\n        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n        String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);\r\n        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);\r\n        String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);\r\n        ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n        serviceOutPath.setParam1(taskId);\r\n        serviceOutPath.setParam2(patid);\r\n        serviceOutPath.setCreateTime(new Date());\r\n        serviceOutPath.setParam6(subId);\r\n        iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n        //杞垚16杩涘埗\r\n        String format = String.format(\"%03X\", serviceOutPath.getId());\r\n        serviceOutPath.setRadix(format);\r\n        serviceOutPath.setUpdateTime(new Date());\r\n        iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n        SendMagParam sendMagParam = new SendMagParam();\r\n        sendMagParam.setUrl(localIP + \":\" + req_path + \"/sf?p=\" + format);\r\n        sendMagParam.setContent(\"銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"濉啓銆傛劅璋㈡偍閰嶅悎锛乗");\r\n        Map<String, String> map = new HashMap<>();\r\n        map.put(\"phone\", serviceSubtask.getPhone());\r\n        map.put(\"content\", sendMagParam.getContent());\r\n        String result = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(map));\r\n        redisCache.setCacheObject(subTaskId + \"recordAccept-hungup\", \"1\", 10, TimeUnit.MINUTES);\r\n        if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) serviceSubtask.setRemark(\"鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔焅");\r\n        else serviceSubtask.setRemark(\"鐭俊琛ュ伩鍙戦�佹垚鍔焅");\r\n        serviceSubtask.setSendstate(3L);\r\n        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n    }\r\n\r\n    //閫氳繃褰撳墠鏃堕棿锛屾媺鍙栫數璇濇�绘暟\r\n    private Integer phoneCount() {\r\n        // 褰撳墠鏃堕棿\r\n        LocalTime currentTime = LocalTime.now();\r\n        // 鐩爣鏃堕棿锛堟櫄涓� 8 鐐癸級\r\n        LocalTime targetTime = LocalTime.of(phoneEndHour, 0);\r\n        // 璁$畻褰撳墠鏃堕棿鍒扮洰鏍囨椂闂寸殑鏃堕暱\r\n        Duration duration = Duration.between(currentTime, targetTime);\r\n        // 鑾峰彇鍓╀綑鏃堕棿鐨勫皬鏃舵暟\r\n        long remainingHours = 0;\r\n        long remainingMinutes = duration.toMinutes();\r\n        //濡傛灉瓒呰繃8鐐�,灏辫缃负0\r\n        //璺濈缁撴潫鏃堕棿灏忎簬20鍒嗛挓锛屽氨涓嶆媺鍙栦簡\r\n        if (remainingMinutes < 20) remainingHours = 0;\r\n        else if (remainingMinutes < 60 && remainingMinutes > 20) remainingHours = 1;\r\n        else if (remainingMinutes > 60) remainingHours = remainingMinutes / 60;\r\n        // 璁$畻鍓╀綑鍙互鎵撶殑鐢佃瘽鏁癨r\n        int remainingCalls = (int) (remainingHours * phoneUpEveryHour);\r\n        return remainingCalls;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java	(date 1758790433667)
-@@ -49,6 +49,9 @@
-     @Autowired
-     private ServiceSubtaskMapper serviceSubtaskMapper;
- 
-+    @Autowired
-+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
-+
-     @Autowired
-     private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;
- 
-@@ -297,7 +300,8 @@
-             if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;
-             if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;
-             if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
--            if (serviceSubtask.getExcep().equals("1")) yc = yc + 1;
-+            if (StringUtils.isNotEmpty(serviceSubtask.getExcep()) && !serviceSubtask.getExcep().equals("0"))
-+                yc = yc + 1;
-         }
-         map.put("wzx", wzx);
-         map.put("ysf", ysf);
-@@ -414,6 +418,10 @@
-             throw new BaseException("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
-         }
-         ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);
-+        //濡傛灉preachformList涓嶄负绌猴紝鍒欏皢鏁版嵁缁勬垚瀛楃涓诧紝鏀惧埌preachform瀛楁涓�
-+        String preachform = getPreachformAsString(serviceTaskVO.getPreachformList());
-+        serviceTask.setPreachform(preachform);
-+
-         serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));
-         if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {
-             //鏂板妯℃澘淇℃伅
-@@ -460,7 +468,7 @@
-                     ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
-                     serviceTaskdiag.setTaskId(serviceTask.getTaskid());
-                     serviceTaskdiag.setTaskName(serviceTask.getTaskName());
--                    serviceTaskdiag.setLongtask(0L);
-+                    serviceTaskdiag.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                     if (serviceTaskVO.getLongTask() == 1) serviceTaskdiag.setLongtask(1L);
-                     serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());
-                     serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
-@@ -481,11 +489,10 @@
-                     serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
-                     serviceTaskoper.setTaskId(serviceTask.getTaskid());
-                     serviceTaskoper.setTaskName(serviceTask.getTaskName());
--                    serviceTaskoper.setLongtask(0L);
-+                    serviceTaskoper.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                     serviceTaskoper.setGuid(serviceTask.getGuid());
-                     serviceTaskoper.setOrgid(serviceTask.getOrgid());
-                     serviceTaskoper.setCreateTime(new Date());
--                    if (serviceTaskVO.getLongTask() == 1) serviceTaskoper.setLongtask(1L);
-                     if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {
-                         String[] opcodes = serviceTaskVO.getOpcode().split(",");
-                         for (String opcode : opcodes) {
-@@ -500,8 +507,7 @@
-                     serviceTaskdept.setTaskId(serviceTask.getTaskid());
-                     serviceTaskdept.setTaskName(serviceTask.getTaskName());
-                     serviceTaskdept.setOrgid(serviceTask.getOrgid());
--                    serviceTaskdept.setLongtask(0L);
--                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
-+                    serviceTaskdept.setLongtask(Long.valueOf(serviceTaskVO.getLongTask()));
-                     if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
-                         String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
-                         for (String deptCode : deptcodes) {
-@@ -570,6 +576,20 @@
-                         serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
-                     serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
-                     serviceSubtask.getId().intValue();
-+
-+                    //闇�瑕佹寜service_task閲岀殑preachform鐨勯『搴忓皢鍙戦�佹柟寮忎繚瀛樺埌service_subtask_preachform琛ㄤ腑
-+                    if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformList())) {
-+                        List<ServiceSubtaskPreachform> pfList = serviceTaskVO.getPreachformList();
-+                        for (ServiceSubtaskPreachform serviceSubtaskPreachform : pfList) {
-+                            serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
-+                            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+                            //杩欎釜sendstate闇�瑕佸湪鏁版嵁搴撹缃竴涓粯璁ゅ�间负鈥�1鈥�
-+                            serviceSubtaskPreachform.setSendstate("1");
-+                            serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
-+                            serviceSubtaskPreachform.setCreateTime(new Date());
-+                            serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
-+                        }
-+                    }
-                 }
-             }
- 
-@@ -579,8 +599,6 @@
-                 serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
-             //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1
-             ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
--//            long l = serviceTask1.getStopState() + 1;
--//            serviceTask.setStopState(l);
-             //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
-             ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-             serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
-@@ -593,18 +611,6 @@
-             } else {
-                 if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;
-             }
--            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
--                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
--                    log.info("insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
--                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());
--                    redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
--                    redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
--                    redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString());
--                    redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
--                    redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
--                    redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
--                }
--            }
- 
-             if (serviceTaskVO.getLibtemplateid() != null)
-                 serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString());
-@@ -613,17 +619,14 @@
-             serviceTask.setUpdateTime(new Date());
-             serviceTaskService.updateServiceTask(serviceTask);
-             if (serviceTaskVO.getAppltype().equals("1") || serviceTaskVO.getAppltype().equals("2")) {
--
--
-                 if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
-                     String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
-                     for (String deptCode : deptcodes) {
-                         ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
-                         serviceTaskdept.setTaskId(serviceTask.getTaskid());
-                         serviceTaskdept.setTaskName(serviceTask.getTaskName());
--                        serviceTaskdept.setLongtask(0L);
-+                        serviceTaskdept.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                         serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());
--                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
-                         serviceTaskdept.setDeptCode(deptCode);
-                         serviceTaskdept.setDeptType("1");
-                         serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
-@@ -644,9 +647,8 @@
-                         ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
-                         serviceTaskdept.setTaskId(serviceTask.getTaskid());
-                         serviceTaskdept.setTaskName(serviceTask.getTaskName());
--                        serviceTaskdept.setLongtask(0L);
-+                        serviceTaskdept.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                         serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());
--                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
-                         serviceTaskdept.setDeptCode(districtcode);
-                         serviceTaskdept.setDeptType("2");
-                         serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
-@@ -669,9 +671,7 @@
-                 if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) {
-                     throw new BaseException("鐤剧梾缂栫爜涓虹┖");
-                 }
--//                serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());
--
--                serviceTaskdiag.setLongtask(1L);
-+                serviceTaskdiag.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                 serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
-                 serviceTaskdiag.setGuid(serviceTask.getGuid());
-                 serviceTaskdiag.setOrgid(serviceTask.getOrgid());
-@@ -695,7 +695,6 @@
-                     }
-                 }
- 
--
-             } else if (serviceTaskVO.getAppltype().equals("4")) {
-                 ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
-                 if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) {
-@@ -705,7 +704,7 @@
-                 serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
-                 serviceTaskoper.setTaskId(serviceTask.getTaskid());
-                 serviceTaskoper.setTaskName(serviceTask.getTaskName());
--                serviceTaskoper.setLongtask(1L);
-+                serviceTaskoper.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                 serviceTaskoper.setGuid(serviceTask.getGuid());
-                 serviceTaskoper.setOrgid(serviceTask.getOrgid());
-                 serviceTaskoper.setCreateTime(new Date());
-@@ -728,7 +727,6 @@
-                         }
-                     }
-                 }
--
-             }
-             if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
-                 IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate();
-@@ -774,9 +772,10 @@
-                     serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
-                     serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
-                     if (patTaskRelevance.getIsoperation() != null) {
--                        if (patTaskRelevance.getIsoperation() == 2)
-+                        if (patTaskRelevance.getIsoperation() == 2) {
-                             serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
--                        serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
-+                            serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
-+                        }
-                         if (patTaskRelevance.getIsoperation() == 1) {
-                             serviceSubtask.setSendstate(1L);
-                             serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
-@@ -790,6 +789,32 @@
-                     serviceSubtask.getTaskid().intValue();
-                 }
-             }
-+            // 鏈夊彲鑳戒細鎶婂彂閫侀『搴忎篃淇敼浜嗭紙闇�瑕佹牴鎹畉askId灏嗘墍鏈夌殑sendstate锛�=4,5,6鐨剆ubTask鎷夊嚭鏉ワ紝杩涜淇敼涓�涓嬶級
-+            ServiceSubtaskVO ssVo = new ServiceSubtaskVO();
-+            ssVo.setTaskid(serviceTaskVO.getTaskid());
-+            ssVo.setDelFlag("0");
-+            List<Long> ssList = new ArrayList<>();
-+            ssList.add(1l);
-+            ssList.add(2L);
-+            ssList.add(3L);
-+            ssVo.setSendstates(ssList);
-+            List<ServiceSubtask> ssTaskList = serviceSubtaskMapper.selectServiceSubtaskBySendstate(ssVo);
-+            for (int i = 0; i < ssTaskList.size(); i++) {
-+                ServiceSubtask serviceSubtask = ssTaskList.get(i);
-+                serviceSubtaskPreachformMapper.deleteServiceSubtaskPreachformBySubid(serviceSubtask.getId());
-+                if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformList())) {
-+                    List<ServiceSubtaskPreachform> pfList = serviceTaskVO.getPreachformList();
-+                    for (ServiceSubtaskPreachform serviceSubtaskPreachform : pfList) {
-+                        serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
-+                        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+                        //杩欎釜sendstate闇�瑕佸湪鏁版嵁搴撹缃竴涓粯璁ゅ�间负鈥�1鈥�
-+                        serviceSubtaskPreachform.setSendstate("1");
-+                        serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
-+//                        serviceSubtaskPreachform.setSort(Long.valueOf(i));
-+                        serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
-+                    }
-+                }
-+            }
-         }
-         Map<String, Integer> map = new HashMap<>();
-         map.put("taskId", serviceTask.getTaskid().intValue());
-@@ -1055,7 +1080,7 @@
-         //鍒ゆ柇鏄惁鎸傛満
-         String hangupState = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "- hangup");
-         Object cacheObject1 = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
--        if (StringUtils.isNotEmpty(hangupState) && hangup.equals("1") || ObjectUtils.isNotEmpty(cacheObject1) && String.valueOf(cacheObject1).equals("1")) {
-+        if (StringUtils.isNotEmpty(hangupState) && hangupState.equals("1") || ObjectUtils.isNotEmpty(cacheObject1) && String.valueOf(cacheObject1).equals("1")) {
-             return new PhoneCallBackYQVO();
-         }
-         if ("AsrCallback".equals(phoneCallReqYQVO.getOperate()) && phoneCallReqYQVO.getEnd_time() != null && phoneCallReqYQVO.getEnd_time() != -1) {
-@@ -1064,6 +1089,8 @@
-                 //鍒ゆ柇 recordAccept-hungup 鏄惁鏈夊�硷紝濡傛灉鏈夛紝鍒欒鏄庝笉鐢ㄥ鐞嗕簡锛屼箣鍓嶅凡缁忓鐞嗚繃浜嗭紙recordAccept-hungup杩欎釜涓昏鏄粰"閫氳瘽璁板綍鐢ㄧ殑锛�"锛�
-                 Object cacheObject = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
-                 if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("1")) {
-+                    ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-+                    setFailPreachForm(serviceSubtask, "3", "鎷ㄥ彨鐨勭敤鎴锋蹇�", "4");
-                     return new PhoneCallBackYQVO();
-                 }
-                 //濡傛灉鍙戦�佺姸鎬佷负6锛屽氨璇存槑宸茬粡鎵撳畬浜嗭紝涔熸病鏈夊繀瑕佺户缁線涓嬭蛋浜�
-@@ -1085,8 +1112,12 @@
-                 //鍏堟妸榛樿鐨剅ecordAccept-hungup鍒犻櫎锛屽啀鏇存柊
-                 redisCache.deleteObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
-                 redisCache.setCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
-+
-+                //璁板綍鐢佃瘽鍙戦�佺姸鎬�
-+                setFailPreachForm(serviceSubtask2, "3", "鐢佃瘽鍙戦�佹垚鍔燂紙鎮h�呮寕鏂級", "4");
-+
-                 //杩欎釜鏃跺�欏氨闇�瑕佽蛋琛ュ伩鏈哄埗浜嗭紝鍏堟殏瀹氳蛋鐭俊
--                getSmsCompensate(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-+//                getSmsCompensate(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-                 return new PhoneCallBackYQVO();
-             }
-         }
-@@ -1115,6 +1146,9 @@
-                     req.put("caller", phoneCallReqYQVO.getPhone());
- //                    HttpUtils.sendPost(hangup, new Gson().toJson(req));
-                     HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));
-+                    ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-+                    //璁板綍鐢佃瘽鍙戦�佺姸鎬�
-+                    setFailPreachForm(serviceSubtask, "3", "閫氳瘽姝e父缁撴潫", "9");
-                     //鍒犻櫎缁撴潫璇殑鎮e瓨
-                     redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "- jsy");
-                 } else {
-@@ -1122,6 +1156,7 @@
-                     log.error("-------PlayEventCallbackPlaystop鐨勫�间负锛歿}", true);
-                 }
-             }
-+
-             return phoneCallBackYQVO;
-         }
-         //鑾峰彇鏀鹃煶鏄惁缁撴潫
-@@ -1198,6 +1233,9 @@
-                 serviceSubtask.setUpdateTime(new Date());
-                 log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆erviceSubtask鐨勫�间负锛歿}", serviceSubtask);
-                 serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                //璁板綍鐘舵��
-+                setFailPreachForm(serviceSubtask, "3", "闈欓粯娆℃暟杈惧埌" + num + "娆�", "4");
-+
-                 Map<String, String> map = delRedisValue(null, id.toString());
-                 if (ObjectUtils.isNotEmpty(map)) redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
-                 redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-@@ -1252,6 +1290,8 @@
-                         ss.setSendstate(6L);
-                         ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                         serviceSubtaskMapper.updateServiceSubtask(ss);
-+                        //璁板綍鐘舵��
-+                        setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                         //鍙互鎸傛満浜�
-                         redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-                         redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-@@ -1336,6 +1376,8 @@
-                             redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-                             phoneCallBackYQVO.setType("text");
-                             phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());
-+                            //璁板綍鐘舵��
-+                            setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                             return phoneCallBackYQVO;
-                         }
- 
-@@ -1367,6 +1409,9 @@
-                                 ss.setSendstate(6L);
-                                 ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                                 serviceSubtaskMapper.updateServiceSubtask(ss);
-+                                //璁板綍鐘舵��
-+                                setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-+
-                                 redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-                                 redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                                 redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-@@ -1414,6 +1459,8 @@
-                             serviceSubtask.setSendstate(6L);
-                             serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                            //璁板綍鐘舵��
-+                            setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                             //璁剧疆缁撴潫璇�
-                             phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
-                             Long id = serviceSubtask.getId();
-@@ -1484,7 +1531,8 @@
-                             serviceSubtask.setSendstate(6L);
-                             serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--
-+                            //璁板綍鐘舵��
-+                            setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                             //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                             ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                             redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-@@ -1588,7 +1636,8 @@
-                     serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                     serviceSubtask.setSendstate(6L);
-                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--
-+                    //璁板綍鐘舵��
-+                    setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                     //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
-                     Long id = serviceSubtask.getId();
-                     Map<String, String> map = delRedisValue(null, id.toString());
-@@ -1813,241 +1862,6 @@
-     }
- 
- 
--    //涓嬮潰鐨勪唬鐮佷笉鑳藉垹闄わ紝涓婇潰鐨勬柟娉曞彧鏄厤鍚堢數璇濈鑱旇皟鐢ㄧ殑锛�
--//    @Override
--//    public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
--//        log.error("phoneCallBackVO鐨勫叆鍙傦細{},{},{},{},{},{},{}", phoneCallBackVO.getResultType(), phoneCallBackVO.getUuid(), phoneCallBackVO.getErrResult(), phoneCallBackVO.getTextResult(), phoneCallBackVO.getHangUpResult(), phoneCallBackVO.getEnumState(), phoneCallBackVO.getUint8());
--//        //鑾峰彇鏁版嵁
--//        Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());
--//        if (!aBoolean) {
--//            throw new BaseException("璇uid涓嶅瓨鍦�");
--//        }
--//        Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "hangup");
--//        if (hangupValue != null && hangupValue == 1) {
--//            //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽
--//            PhoneUtils phoneUtils = new PhoneUtils();
--//            phoneUtils.hangup(phoneCallBackVO.getUuid(), null, null, null, null, null, null, null);
--//
--//        }
--//
--//        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());
--////        ObjectMapper objectMapper = new ObjectMapper();
--////        Map<String, Object> map = null;
--////        try {
--////            map = objectMapper.readValue(cacheObject, Map.class);
--////        } catch (JsonProcessingException e) {
--////            e.printStackTrace();
--////        }
--//
--//        ServiceSubtask ServiceSubtask = (ServiceSubtask) map.get("ServiceSubtask");
--//        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO");
--//        //灏唘uid鏇存柊鍒版暟鎹簱涓�
--//        ServiceSubtask.setSenduuid(phoneCallBackVO.getUuid());
--//        ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
--//
--//        //鑾峰彇妯℃澘淇℃伅
--//        IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO");
--//
--//
--//        //棣栧厛鍒ゆ柇resultType
--//        if (phoneCallBackVO.getResultType() == 1) {
--//            //鍛煎彨缁撴灉鎺ュ彛: 1
--//            if (phoneCallBackVO.getUint8() == 1) {
--//                //鍛煎彨澶辫触锛屽幓redis涓褰曚竴涓嬪け璐ユ鏁帮紝杩涜鍐嶆鍛煎彨
--//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "uint8");
--//                if (integer != null) {
--//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", integer + 1, 120, TimeUnit.MINUTES);
--//                } else {
--//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", 1, 120, TimeUnit.MINUTES);
--//                }
--//
--//                if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {
--//                    log.info("鏃犱汉鎺ュ惉锛歿},   {}", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid());
--//                    //杩炵画鎵撹瀹氭锛屽鏋滆娌′汉鎺ワ紝閭e氨缁撴潫
--//                    ServiceSubtask.setResult(phoneCallBackVO.getErrResult());
--//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
--//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "uint8");
--//                } else if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {
--//                    //杩涜閲嶆嫧
--//                    PhoneUtils phoneUtils = new PhoneUtils();
--//                    phoneUtils.ob(null, null, null, null, null, null, null, ServiceSubtask.getPhone(), phoneCallBackVO.getUuid(), true);
--//                }
--//            }
--//
--//        } else if (phoneCallBackVO.getResultType() == 2) {
--//            //閫氳瘽鐘舵�佹洿鏂版帴鍙�: 2
--//            if (phoneCallBackVO.getEnumState() == 0) {
--//                // 0-鎸搩
--//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "enumState");
--//
--//                if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {
--//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", integer + 1, 120, TimeUnit.MINUTES);
--//                } else if (integer == null) {
--//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", 1, 120, TimeUnit.MINUTES);
--//                } else if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {
--//                    ServiceSubtask.setResult("鏃犱汉鎺ュ惉");
--//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
--//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
--//                }
--//            } else if (phoneCallBackVO.getEnumState() == 2) {
--//                //鎮h�呮寕鏂數璇�
--//                log.info("鎮h�呮寕鏂數璇濓細{}", phoneCallBackVO.getUuid());
--//                ServiceSubtask.setResult(phoneCallBackVO.getHangUpResult());
--//                ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
--//                redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
--//            }
--//
--//
--//        } else if (phoneCallBackVO.getResultType() == 3) {
--//            //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3
--//            Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
--//            QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
--//            IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
--//            PhoneUtils phoneUtils = new PhoneUtils();
--//
--//            if (StringUtils.isEmpty(phoneCallBackVO.getTextResult())) {
--//                //鏃犲洖璇�
--//                //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у��
--//                if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {
--//                    //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰�
--//                    if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {
--//                        //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
--//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
--//                        phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
--//                    } else {
--//                        //鏈変笅涓�棰�
--//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
--//                        IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
--//                        // 闂锛�  鍘昏皟鐢�"tts鍚堟垚鍜屾挱鏀�"鎺ュ彛
--//                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
--//                    }
--//                } else {
--//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
--//                    //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
--//                    String slienceText = nowQuestion.getSlienceText();
--//                    //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢�"tts鍚堟垚鍜屾挱鏀�"鎺ュ彛
--//                    phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
--//                    return new PhoneCallBackVO();
--//                }
--//
--//            } else {
--//                //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛�
--//                for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {
--//                    //鍖呭惈
--//                    Matcher matcher = null;
--//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {
--//                        Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());
--//                        matcher = pattern.matcher(phoneCallBackVO.getTextResult());
--//                    }
--//                    //涓嶅寘鍚�
--//                    Matcher matcher2 = null;
--//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {
--//                        Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
--//                        matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
--//                    }
--//                    log.info("phoneCallBack--Targetregex鐨勫�间负锛歿}, phoneCallBack--Targetregex2鐨勫�间负锛歿}", nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
--//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
--//                        //璇存槑鍖归厤姝g‘浜�
--//                        //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
--//                        nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
--//                        ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));
--//
--//
--//                        //灏嗛潤榛樼疆涓�0
--//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
--//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
--//                        //鑾峰彇涓嬩竴棰�
--//                        Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
--//                        for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {
--//                            if (script.getTargetid() == nextQuestion) {
--//                                QuestionMessage questionMessage = new QuestionMessage();
--//                                questionMessage.setNowQuestion(script);
--//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
--//                                break;
--//                            }
--//                        }
--//                        break;
--//                    } else {
--//                        //娌℃湁鍖归厤鍒�
--//                        Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum");
--//                        //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
--//                        if (mateNum == ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
--//                            //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
--//                            if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {
--//                                QuestionMessage questionMessage = new QuestionMessage();
--//                                IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
--//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
--//                                questionMessage.setNowQuestion(nextQuestion);
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
--//                            } else {
--//                                //灏卞彲浠ユ寕鏂數璇濅簡
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
--//                                phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
--//                                break;
--//                            }
--//                        } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
--//                            //娌℃湁闂埌瑙勫畾娆℃暟
--//                            mateNum = mateNum + 1;
--//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES);
--//                        }
--//                    }
--//
--//                }
--//                //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
--//                String extemplateID = ivrLibaTemplateVO.getSubmoduleID();
--//                String[] split = extemplateID.split(",");
--//                List<String> list = Arrays.asList(split);
--//                List<Long> list1 = new ArrayList<>();
--//                if (StringUtils.isNotEmpty(extemplateID)) {
--//                    for (String str : list) {
--//                        list1.add(Long.valueOf(str));
--//                    }
--//                    List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);
--//                    for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {
--//                        Matcher matcher = null;
--//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {
--//                            Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());
--//                            matcher = pattern.matcher(returnQues.getContent());
--//                        }
--//
--//                        Matcher matcher2 = null;
--//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {
--//                            Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
--//                            matcher2 = pattern2.matcher(returnQues.getContent());
--//                        }
--//                        log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
--//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {
--//                            QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
--//                            IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();
--//                            ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
--//                            ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
--//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
--//                            if (ivrLibaExtemplatescript.getIsEnd() == 1) {
--//                                //灏嗛棶棰樼疆绌�
--//                                IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
--//                                nowQuestion1.setQuestionText(null);
--//                                nowQuestion1.setQuestionVoice(null);
--//                                questionMessage.setNowQuestion(nowQuestion1);
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
--//
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES);
--//                            }
--//
--//                            //璋冪敤"15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback"灏嗙粨鏋滀紶鍥�
--//
--//
--//                        }
--//                        break;
--//                    }
--//                }
--//
--//            }
--//        }
--//        return phoneCallBackVO;
--//    }
--
-     @Override
-     public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
-         int i = 0;
-@@ -2066,7 +1880,7 @@
-             //闅忚
-             for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
-                 serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());
--                serviceSubtaskDetail.setId(UUID.randomUUID().toString());
-+//                serviceSubtaskDetail.setId(UUID.randomUUID().toString());
-                 serviceSubtaskDetail.setCreateTime(new Date());
-                 serviceSubtaskDetail.setGuid(selectServiceSubtaskList.get(0).getGuid());
-                 serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());
-@@ -2112,7 +1926,11 @@
-         Object cacheObject = redisCache.getCacheObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
-         if (phoneCallRecordVO.getHangup_cause().equals("NO_USER_RESPONSE") || ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("1")) {
-             //鏃犱汉鎺ュ惉
--            getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid()));
-+            //璁板綍鐢佃瘽鍙戦�佺姸鎬�
-+            ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallRecordVO.getTaskid()));
-+            setFailPreachForm(serviceSubtask, "3", "鏃犱汉鎺ュ惉", "4");
-+            //杩涜鐭俊琛ュ伩
-+//            getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid()));
-             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
-             redisCache.removeElementFromList("cache-exist", phoneCallRecordVO.getTaskid());
-         } else if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("2")) {
-@@ -2130,6 +1948,7 @@
-             serviceSubtask.setUpdateTime(new Date());
-             log.error("鐢佃瘽鎷ㄦ墦宸插畬鎴恠erviceSubtask鐨勫�间负:{}", serviceSubtask);
-             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+            setFailPreachForm(serviceSubtask, StringUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) ? serviceSubtask.getCurrentPreachform() : "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-             //涓嬭浇鏂囦欢
-             ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
-             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
-@@ -2147,8 +1966,10 @@
- //            int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/");
- //            String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);
-             //涓嬭浇鏂囦欢
--            ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
-+//            ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
-             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
-+            ServiceSubtask ss = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtask.getId());
-+            setFailPreachForm(ss, StringUtils.isNotEmpty(ss.getCurrentPreachform()) ? ss.getCurrentPreachform() : "3", "鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�", "5");
-         }
- 
-         return 1;
-@@ -2228,10 +2049,10 @@
-         log.error("getSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
-         List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
-         List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
--        
-+
-         // 鏍规嵁鏉′欢杩涜鍒嗙粍
-         Map<String, List<ServiceSubtask>> collect = new HashMap<>();
--        
-+
-         if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) {
-             if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
-                 collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown")));
-@@ -2245,7 +2066,7 @@
-                 collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
-             }
-         }
--        
-+
-         for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
-             if (CollectionUtils.isEmpty(serviceSubtaskList)) {
-                 continue;
-@@ -2259,14 +2080,14 @@
-             // 濡傛灉鏈夊尰鐢熺紪鐮侊紝璁剧疆鍖荤敓缂栫爜鐢ㄤ簬鍙婃椂鐜囨煡璇�
-             if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
-                 ss.setDrcode(serviceSubtaskList.get(0).getDrcode());
--            }else {
-+            } else {
-                 if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {
-                     ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
-                 } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) {
-                     ss.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
-                 }
-             }
--            
-+
-             ss.setStarttime(serviceSubtaskCountReq.getStartTime());
-             ss.setEndtime(serviceSubtaskCountReq.getEndTime());
-             if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {
-@@ -2312,7 +2133,7 @@
-                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
-                     serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
-                 }
--                if (serviceSubtask.getSendstate() != null && ( serviceSubtask.getSendstate() == 6)) {
-+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
-                     serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
-                 }
-                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
-@@ -2437,6 +2258,11 @@
-         return serviceSubtaskDetail;
-     }
- 
-+    /**
-+     * 鐢佃瘽鐨勮ˉ鍋挎柟娉曪紙鑰侊級
-+     *
-+     * @param subTaskId
-+     */
-     private void getSmsCompensate(Long subTaskId) {
-         ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(subTaskId);
-         RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-@@ -2467,6 +2293,34 @@
-         serviceSubtask.setSendstate(3L);
-         serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- 
-+        //闇�瑕佸湪servicePreachform閲岃褰曚竴涓嬬煭淇$姸鎬�
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setPreachform("4");
-+        serviceSubtaskPreachform.setSubid(subTaskId);
-+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
-+            serviceSubtaskPreachform1.setSendstate("9");
-+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
-+        } else if (CollectionUtils.isEmpty(serviceSubtaskPreachforms)) {
-+            //濡傛灉涓虹┖鐨勮瘽锛岃鏄庣敤鎴锋病鏈夐�夌煭淇″彂閫佹柟寮忥紝杩欎釜鏃跺�欓渶瑕佸己鍒舵柊澧炰竴鏉�
-+            //鑾峰彇sort鐨勬渶澶у��
-+            ServiceSubtaskPreachform ssp = new ServiceSubtaskPreachform();
-+            ssp.setSubid(subTaskId);
-+            ssp.setTaskid(serviceSubtask.getTaskid());
-+            ssp.setOrgid(serviceSubtask.getOrgid());
-+            List<ServiceSubtaskPreachform> sspf2 = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(ssp);
-+
-+            serviceSubtaskPreachform.setSort(0L);
-+            if (CollectionUtils.isNotEmpty(sspf2)) {
-+                serviceSubtaskPreachform.setSort(Long.valueOf(sspf2.size()));
-+            }
-+            serviceSubtaskPreachform.setSendstate("2");
-+            serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
-+        }
-+
-     }
- 
-     //閫氳繃褰撳墠鏃堕棿锛屾媺鍙栫數璇濇�绘暟
-@@ -2489,4 +2343,77 @@
-         int remainingCalls = (int) (remainingHours * phoneUpEveryHour);
-         return remainingCalls;
-     }
-+
-+
-+    /**
-+     * @param serviceSubtask
-+     * @param preachform
-+     * @param remark
-+     * @param failSendstate
-+     * @return
-+     */
-+    public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
-+        //灏嗙姸鎬佽缃负澶辫触
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+        //鑾峰彇璇ユ偅鑰呯殑鍙戦�佹柟寮忔�绘暟
-+        List<ServiceSubtaskPreachform> spSize = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        serviceSubtaskPreachform.setPreachform(preachform);
-+        //1:鏈彂閫佺姸鎬�
-+        serviceSubtaskPreachform.setSendstate("1");
-+        if (preachform.equals("3")) {
-+            //鐢佃瘽杩涘叆闃熷垪鍚庯紝鐘舵�佷細鍙樻垚2
-+            serviceSubtaskPreachform.setSendstate("2");
-+        }
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
-+            serviceSubtaskPreachform1.setSendstate(failSendstate);
-+            serviceSubtaskPreachform1.setRemark(remark);
-+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
-+
-+            //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
-+            if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
-+                serviceSubtask.setCurrentPreachform(preachform);
-+                serviceSubtask.setSendstate(5L);
-+                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                return true;
-+            }
-+        }
-+
-+        serviceSubtask.setCurrentPreachform(preachform);
-+        serviceSubtask.setSendstate(3L);
-+        //濡傛灉绛変簬9锛屽垯璇存槑鐢佃瘽姝e父缁撴潫浜�
-+        if (failSendstate.equals("9")) serviceSubtask.setSendstate(6L);
-+        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
-+        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+        return true;
-+    }
-+
-+    private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) {
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(subid);
-+        serviceSubtaskPreachform.setTaskid(taskid);
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            String compensateTime = serviceSubtaskPreachforms.get(0).getCompensateTime();
-+            int hoursToAdd = Integer.valueOf(compensateTime) * 24;
-+            Calendar calendar = Calendar.getInstance();
-+            calendar.setTime(visitTime);
-+            calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd);
-+            Date newDate = calendar.getTime();
-+            return newDate;
-+        }
-+        return visitTime;
-+    }
-+
-+    public String getPreachformAsString(List<ServiceSubtaskPreachform> preachformList) {
-+        if (preachformList == null || preachformList.isEmpty()) {
-+            return "";
-+        }
-+        return preachformList.stream().sorted(Comparator.comparingLong(ServiceSubtaskPreachform::getSort)).map(ServiceSubtaskPreachform::getPreachform).collect(Collectors.joining(","));
-+    }
- }
-Index: smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.alibaba.fastjson2.JSON;\r\nimport com.fasterxml.jackson.core.JsonProcessingException;\r\nimport com.fasterxml.jackson.core.type.TypeReference;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport com.smartor.service.CommonTaskService;\r\nimport com.smartor.service.IServiceTaskService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.StringUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.concurrent.TimeUnit;\r\n\r\n\r\n/**\r\n * 绗笁鏂瑰巶鍟嗘暟鎹甋ervice涓氬姟灞傚鐞哱r\n *\r\n * @author ruoyi\r\n * @date 2023-10-10\r\n */\r\n@Slf4j\r\n@Service\r\npublic class CommonTaskServiceImpl implements CommonTaskService {\r\n    @Autowired\r\n    private IServiceTaskService ivrTaskService;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private IServiceTaskService iServiceTaskService;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n\r\n    @Override\r\n    public Integer taskSend(SendTaskVO sendTaskVO) {\r\n\r\n        if (sendTaskVO.getTaskId() == null || sendTaskVO.getTaskType() == null)\r\n            throw new BaseException(\"浠诲姟ID鎴栬�呬换鍔$被鍨嬩笉鑳戒负绌猴紝璇锋鏌ュ悗锛屽啀杩涜鎵ц\");\r\n        if (sendTaskVO.getTaskType() == 1) {\r\n            //闅忚\r\n            return sfSend(sendTaskVO);\r\n        } else if (sendTaskVO.getTaskType() == 2) {\r\n            //闂嵎\r\n            return wjSend(sendTaskVO);\r\n        } else if (sendTaskVO.getTaskType() == 3) {\r\n            //瀹f暀\r\n            return xjSend(sendTaskVO);\r\n        }\r\n        log.error(\"璧板埌杩欓噷浜嗗槢\");\r\n        return null;\r\n    }\r\n\r\n    public int sfSend(SendTaskVO sendTaskVO) {\r\n        ServiceTask ivrTask = ivrTaskService.selectServiceTaskByTaskid(sendTaskVO.getTaskId());\r\n        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {\r\n            //浠诲姟鏆傚仠鎴栫粓姝r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(sendTaskVO.getTaskId());\r\n//            serviceTask.setStopState(ivrTask.getStopState() + 1);\r\n            serviceTask.setSendState(sendTaskVO.getSendState());\r\n            int i = ivrTaskService.updateServiceTask(serviceTask);\r\n            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎\r\n            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n            serviceSubtaskVO.setTaskid(serviceTask.getTaskid());\r\n            serviceSubtaskVO.setSendstate(2L);\r\n            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskVO.setSendstate(1L);\r\n            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);\r\n            } else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                    log.error(\"sfSend闇�瑕佺Щ闄ょ殑subId涓猴細{}\", serviceSubtask.getId().toString());\r\n                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());\r\n                    redisCache.removeElementFromList(\"cache-exist\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-0\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-1\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-2\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-3\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-4\", serviceSubtask.getId().toString());\r\n                }\r\n            }\r\n\r\n            return i;\r\n        }\r\n\r\n        //鍒ゆ柇鍙戦�佺姸鎬佹槸鍚︿负绌篭r\n        if (StringUtils.isEmpty(sendTaskVO.getSendType())) {\r\n            sendTaskVO.setSendType(ivrTask.getSendType().toString());\r\n        }\r\n        //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫乗r\n        if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"2\")) {\r\n            String content = sendMQContent(sendTaskVO, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), null);\r\n            //绔嬪嵆鍙戦�乗r\n            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);\r\n            //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(ivrTask.getTaskid());\r\n            serviceTask.setSendState(2L);\r\n            //涓嶇煡涓哄暐杩欐牱鍐欙紝鍏堝皢stopstate缃负null\r\n//            serviceTask.setStopState(ivrTask.getStopState());\r\n            serviceTask.setStopState(null);\r\n            ivrTaskService.updateServiceTask(serviceTask);\r\n            log.error(\"娑堟伅鍙戦�佹垚鍔焅");\r\n        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"1\") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"3\")) {\r\n            //鏃堕棿娈靛彂閫乗r\n            ObjectMapper objectMapper = new ObjectMapper();\r\n            if (org.apache.commons.lang3.StringUtils.isNotEmpty(ivrTask.getSendTimeSlot())) {\r\n                List<TaskSendTimeVO> taskSendTimeVOList = null;\r\n                try {\r\n                    taskSendTimeVOList = objectMapper.readValue(ivrTask.getSendTimeSlot(), new TypeReference<List<TaskSendTimeVO>>() {\r\n                    });\r\n                } catch (JsonProcessingException e) {\r\n                    log.error(\"JsonProcessingException鎶ラ敊浜嗭細{}\", e.getMessage());\r\n                }\r\n                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {\r\n//                    //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈礬r\n//                    List<TaskSendTimeVO> list = new ArrayList<>();\r\n//                    list.add(taskSendTimeVO);\r\n\r\n                    //鑾峰彇寮�濮嬪彂閫佹椂闂碶r\n                    String begantime = taskSendTimeVO.getBegantime();\r\n                    SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\r\n                    //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級\r\n                    Long milliseconds = 1000L;\r\n                    try {\r\n                        Date date = sdf.parse(begantime);\r\n                        milliseconds = date.getTime() - System.currentTimeMillis();\r\n                        System.out.println(\"鏃ユ湡姣鏁帮細\" + milliseconds);\r\n                        SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);\r\n                        sendTaskVO1.setSendType(\"1\");\r\n                        String content = sendMQContent(sendTaskVO1, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), taskSendTimeVO);\r\n                        redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);\r\n                    } catch (Exception e) {\r\n                        e.printStackTrace();\r\n                        if (milliseconds < 0) throw new BaseException(\"璇锋鏌ヤ换鍔″紑濮嬫椂闂达紝涓嶈兘灏忎簬褰撳墠鏃堕棿\");\r\n                    }\r\n                }\r\n                //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n                ServiceTask serviceTask = new ServiceTask();\r\n                serviceTask.setTaskid(ivrTask.getTaskid());\r\n                serviceTask.setSendState(2L);\r\n                serviceTask.setStopState(null);\r\n                ivrTaskService.updateServiceTask(serviceTask);\r\n            }\r\n        }\r\n        return 1;\r\n    }\r\n\r\n    public int wjSend(SendTaskVO sendTaskVO) {\r\n        ServiceTask serviceTask1 = iServiceTaskService.selectServiceTaskByTaskid(sendTaskVO.getTaskId());\r\n        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {\r\n            //浠诲姟鏆傚仠鎴栫粓姝r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(sendTaskVO.getTaskId());\r\n//            serviceTask.setStopState(serviceTask1.getStopState() + 1);\r\n            serviceTask.setSendState(sendTaskVO.getSendState());\r\n            int i = iServiceTaskService.updateServiceTask(serviceTask);\r\n            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎\r\n            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n            serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());\r\n            serviceSubtaskVO.setSendstate(2L);\r\n            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskVO.setSendstate(1L);\r\n            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);\r\n            } else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                    log.error(\"wjSend闇�瑕佺Щ闄ょ殑subId涓猴細{}\", serviceSubtask.getId().toString());\r\n                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());\r\n                    redisCache.removeElementFromList(\"cache-exist\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-0\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-1\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-2\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-3\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-4\", serviceSubtask.getId().toString());\r\n                }\r\n            }\r\n            return i;\r\n        }\r\n\r\n        //鍒ゆ柇鍙戦�佺姸鎬佹槸鍚︿负绌篭r\n        if (StringUtils.isEmpty(sendTaskVO.getSendType())) {\r\n            sendTaskVO.setSendType(serviceTask1.getSendType().toString());\r\n        }\r\n        //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫乗r\n        if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"2\")) {\r\n\r\n            String content = sendMQContent(sendTaskVO, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null);\r\n            //绔嬪嵆鍙戦�乗r\n            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);\r\n\r\n            //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(serviceTask1.getTaskid());\r\n            serviceTask.setSendState(2L);\r\n            serviceTask.setStopState(null);\r\n            iServiceTaskService.updateServiceTask(serviceTask);\r\n        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"1\") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"3\")) {\r\n            //鏃堕棿娈靛彂閫乗r\n            ObjectMapper objectMapper = new ObjectMapper();\r\n            if (StringUtils.isNotEmpty(serviceTask1.getSendTimeSlot())) {\r\n                List<TaskSendTimeVO> taskSendTimeVOList = null;\r\n                try {\r\n                    taskSendTimeVOList = objectMapper.readValue(serviceTask1.getSendTimeSlot(), new TypeReference<List<TaskSendTimeVO>>() {\r\n                    });\r\n                } catch (JsonProcessingException e) {\r\n                    log.error(\"JsonProcessingException鎶ラ敊浜嗭細{}\", e.getMessage());\r\n                }\r\n                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {\r\n                    //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈礬r\n//                    List<TaskSendTimeVO> list = new ArrayList<>();\r\n//                    list.add(taskSendTimeVO);\r\n\r\n                    //鑾峰彇寮�濮嬪彂閫佹椂闂碶r\n                    String begantime = taskSendTimeVO.getBegantime();\r\n                    SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\r\n                    //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級\r\n                    Long milliseconds = 1000L;\r\n                    try {\r\n                        Date date = sdf.parse(begantime);\r\n                        milliseconds = date.getTime() - System.currentTimeMillis();\r\n                        if (milliseconds < 0) {\r\n                            milliseconds = 1000L;\r\n                        }\r\n                        System.out.println(\"鏃ユ湡姣鏁帮細\" + milliseconds);\r\n                    } catch (Exception e) {\r\n                        e.printStackTrace();\r\n                    }\r\n\r\n                    SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);\r\n                    sendTaskVO1.setSendType(\"1\");\r\n                    String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO);\r\n                    redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);\r\n                }\r\n                //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n                ServiceTask serviceTask = new ServiceTask();\r\n                serviceTask.setTaskid(serviceTask1.getTaskid());\r\n                serviceTask.setSendState(2L);\r\n                serviceTask.setStopState(null);\r\n                iServiceTaskService.updateServiceTask(serviceTask);\r\n            }\r\n        }\r\n        return 1;\r\n    }\r\n\r\n    public int xjSend(SendTaskVO sendTaskVO) {\r\n        ServiceTask serviceTask1 = iServiceTaskService.selectServiceTaskByTaskid(sendTaskVO.getTaskId());\r\n        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {\r\n            //浠诲姟鏆傚仠鎴栫粓姝r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(sendTaskVO.getTaskId());\r\n//            serviceTask.setStopState(serviceTask1.getStopState() + 1);\r\n            serviceTask.setSendState(sendTaskVO.getSendState());\r\n            iServiceTaskService.updateServiceTask(serviceTask);\r\n            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎\r\n            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n            serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());\r\n            serviceSubtaskVO.setSendstate(2L);\r\n            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskVO.setSendstate(1L);\r\n            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);\r\n            } else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                    log.error(\"xjSend闇�瑕佺Щ闄ょ殑subId涓猴細{}\", serviceSubtask.getId().toString());\r\n                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());\r\n                    redisCache.removeElementFromList(\"cache-exist\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-0\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-1\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-2\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-3\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-4\", serviceSubtask.getId().toString());\r\n                }\r\n            }\r\n\r\n            return 0;\r\n        }\r\n\r\n        //鍒ゆ柇鍙戦�佺姸鎬佹槸鍚︿负绌篭r\n        if (StringUtils.isEmpty(sendTaskVO.getSendType())) {\r\n            sendTaskVO.setSendType(serviceTask1.getSendType().toString());\r\n        }\r\n        //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫乗r\n        if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"2\")) {\r\n\r\n            String content = sendMQContent(sendTaskVO, serviceTask1.getLibtemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null);\r\n            //绔嬪嵆鍙戦�乗r\n            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);\r\n\r\n            //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(serviceTask1.getTaskid());\r\n            serviceTask.setSendState(2L);\r\n            serviceTask.setSendType(1L);\r\n            serviceTask.setStopState(null);\r\n            iServiceTaskService.updateServiceTask(serviceTask);\r\n        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"1\") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"3\")) {\r\n            //鏃堕棿娈靛彂閫乗r\n            ObjectMapper objectMapper = new ObjectMapper();\r\n            if (StringUtils.isNotEmpty(serviceTask1.getSendTimeSlot())) {\r\n                List<TaskSendTimeVO> taskSendTimeVOList = null;\r\n                try {\r\n                    taskSendTimeVOList = objectMapper.readValue(serviceTask1.getSendTimeSlot(), new TypeReference<List<TaskSendTimeVO>>() {\r\n                    });\r\n                } catch (JsonProcessingException e) {\r\n                    log.error(\"JsonProcessingException鎶ラ敊浜嗭細{}\", e.getMessage());\r\n                }\r\n                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {\r\n                    //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈礬r\n//                    List<TaskSendTimeVO> list = new ArrayList<>();\r\n//                    list.add(taskSendTimeVO);\r\n\r\n                    //鑾峰彇寮�濮嬪彂閫佹椂闂碶r\n                    String begantime = taskSendTimeVO.getBegantime();\r\n                    SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\r\n                    //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級\r\n                    Long milliseconds = 1000L;\r\n                    try {\r\n                        Date date = sdf.parse(begantime);\r\n                        milliseconds = date.getTime() - System.currentTimeMillis();\r\n                        System.out.println(\"鏃ユ湡姣鏁帮細\" + milliseconds);\r\n                    } catch (Exception e) {\r\n                        e.printStackTrace();\r\n                    }\r\n\r\n                    SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);\r\n                    sendTaskVO1.setSendType(\"1\");\r\n                    String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO);\r\n                    redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);\r\n                }\r\n                //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n                ServiceTask serviceTask = new ServiceTask();\r\n                serviceTask.setTaskid(serviceTask1.getTaskid());\r\n                serviceTask.setSendState(2L);\r\n                serviceTask.setStopState(null);\r\n                iServiceTaskService.updateServiceTask(serviceTask);\r\n            }\r\n        }\r\n        return 1;\r\n    }\r\n\r\n    /**\r\n     * MQ浠诲姟鍒涘缓鍐呭\r\n     *\r\n     * @param sendTaskVO\r\n     * @param templateid\r\n     * @param preachform\r\n     * @param stopState\r\n     * @param sendTimeslot\r\n     * @return\r\n     */\r\n    private String sendMQContent(SendTaskVO sendTaskVO, String templateid, String preachform, Long stopState, TaskSendTimeVO sendTimeslot) {\r\n        CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ();\r\n        commonTaskcallMQ.setTaskid(sendTaskVO.getTaskId());\r\n        commonTaskcallMQ.setSendType(sendTaskVO.getSendType());\r\n        commonTaskcallMQ.setTemplateid(templateid);\r\n        commonTaskcallMQ.setPreachform(preachform);\r\n        commonTaskcallMQ.setStopState(stopState);\r\n        commonTaskcallMQ.setTaskType(sendTaskVO.getTaskType());\r\n        commonTaskcallMQ.setSendTimeslot(sendTimeslot);\r\n\r\n        String commonTaskcallMQJson = JSON.toJSONString(commonTaskcallMQ);\r\n        commonTaskcallMQJson = commonTaskcallMQJson.substring(1, commonTaskcallMQJson.length() - 1);\r\n        return commonTaskcallMQJson;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java	(date 1758768989393)
-@@ -60,7 +60,6 @@
-             //瀹f暀
-             return xjSend(sendTaskVO);
-         }
--        log.error("璧板埌杩欓噷浜嗗槢");
-         return null;
-     }
- 
-@@ -108,6 +107,8 @@
-         //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫�
-         if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) {
-             String content = sendMQContent(sendTaskVO, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), null);
-+            //鍏堜慨鏀圭姸鎬�
-+            updateServiceSubtask(ivrTask.getTaskid(), new Date());
-             //绔嬪嵆鍙戦��
-             redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
-             //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
-@@ -130,23 +131,23 @@
-                 } catch (JsonProcessingException e) {
-                     log.error("JsonProcessingException鎶ラ敊浜嗭細{}", e.getMessage());
-                 }
-+                Date date = new Date();
-                 for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {
--//                    //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈�
--//                    List<TaskSendTimeVO> list = new ArrayList<>();
--//                    list.add(taskSendTimeVO);
--
-                     //鑾峰彇寮�濮嬪彂閫佹椂闂�
-                     String begantime = taskSendTimeVO.getBegantime();
-                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                     //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級
-                     Long milliseconds = 1000L;
-                     try {
--                        Date date = sdf.parse(begantime);
-+                        date = sdf.parse(begantime);
-                         milliseconds = date.getTime() - System.currentTimeMillis();
-                         System.out.println("鏃ユ湡姣鏁帮細" + milliseconds);
-                         SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);
-                         sendTaskVO1.setSendType("1");
-                         String content = sendMQContent(sendTaskVO1, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), taskSendTimeVO);
-+
-+                        //鍏堜慨鏀圭姸鎬�
-+                        updateServiceSubtask(ivrTask.getTaskid(), date);
-                         redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
-                     } catch (Exception e) {
-                         e.printStackTrace();
-@@ -208,6 +209,8 @@
-         if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) {
- 
-             String content = sendMQContent(sendTaskVO, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null);
-+            //鍏堜慨鏀圭姸鎬�
-+            updateServiceSubtask(serviceTask1.getTaskid(), new Date());
-             //绔嬪嵆鍙戦��
-             redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
- 
-@@ -228,6 +231,7 @@
-                 } catch (JsonProcessingException e) {
-                     log.error("JsonProcessingException鎶ラ敊浜嗭細{}", e.getMessage());
-                 }
-+                Date date = new Date();
-                 for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {
-                     //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈�
- //                    List<TaskSendTimeVO> list = new ArrayList<>();
-@@ -239,7 +243,7 @@
-                     //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級
-                     Long milliseconds = 1000L;
-                     try {
--                        Date date = sdf.parse(begantime);
-+                        date = sdf.parse(begantime);
-                         milliseconds = date.getTime() - System.currentTimeMillis();
-                         if (milliseconds < 0) {
-                             milliseconds = 1000L;
-@@ -252,6 +256,8 @@
-                     SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);
-                     sendTaskVO1.setSendType("1");
-                     String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO);
-+                    //鍏堜慨鏀圭姸鎬�
-+                    updateServiceSubtask(serviceTask1.getTaskid(), date);
-                     redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
-                 }
-                 //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
-@@ -310,6 +316,8 @@
-         if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) {
- 
-             String content = sendMQContent(sendTaskVO, serviceTask1.getLibtemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null);
-+            //鍏堜慨鏀圭姸鎬�
-+            updateServiceSubtask(serviceTask1.getTaskid(), new Date());
-             //绔嬪嵆鍙戦��
-             redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
- 
-@@ -323,6 +331,7 @@
-         } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("3")) {
-             //鏃堕棿娈靛彂閫�
-             ObjectMapper objectMapper = new ObjectMapper();
-+            Date date = new Date();
-             if (StringUtils.isNotEmpty(serviceTask1.getSendTimeSlot())) {
-                 List<TaskSendTimeVO> taskSendTimeVOList = null;
-                 try {
-@@ -342,7 +351,7 @@
-                     //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級
-                     Long milliseconds = 1000L;
-                     try {
--                        Date date = sdf.parse(begantime);
-+                        date = sdf.parse(begantime);
-                         milliseconds = date.getTime() - System.currentTimeMillis();
-                         System.out.println("鏃ユ湡姣鏁帮細" + milliseconds);
-                     } catch (Exception e) {
-@@ -352,6 +361,8 @@
-                     SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);
-                     sendTaskVO1.setSendType("1");
-                     String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO);
-+                    //鍏堜慨鏀圭姸鎬�
-+                    updateServiceSubtask(serviceTask1.getTaskid(), date);
-                     redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
-                 }
-                 //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
-@@ -389,4 +400,17 @@
-         commonTaskcallMQJson = commonTaskcallMQJson.substring(1, commonTaskcallMQJson.length() - 1);
-         return commonTaskcallMQJson;
-     }
-+
-+    private void updateServiceSubtask(Long taskId, Date date) {
-+        //鍙杩涘叆闃熷垪灏辩畻寰呭彂閫�
-+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-+        serviceSubtaskVO.setTaskid(taskId);
-+        serviceSubtaskVO.setSendstate(1L);
-+        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-+        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-+            serviceSubtask.setSendstate(2L);
-+            serviceSubtask.setVisitTime(date);
-+            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+        }
-+    }
- }
-Index: ruoyi-common/src/main/java/com/ruoyi/common/enums/VisitSendStateEnum.java
-===================================================================
-diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/VisitSendStateEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/VisitSendStateEnum.java
-deleted file mode 100644
---- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/VisitSendStateEnum.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ /dev/null	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-@@ -1,57 +0,0 @@
--package com.ruoyi.common.enums;
--
--/**
-- * 闅忚鑳藉惁鍙戦�侀暱鏈熶换鍔℃灇涓�
-- */
--public enum VisitSendStateEnum {
--    zyy("47231022633110211A2101", "涓芥按涓尰闄�", true),
--    jn("47255004333112711A1001", "鏅畞", false);
--
--
--    private String code;
--    private String desc;
--    //闅忚鏍囧織
--    private Boolean visitFlag;
--
--    VisitSendStateEnum(String code, String desc, Boolean visitFlag) {
--        this.code = code;
--        this.desc = desc;
--        this.visitFlag = visitFlag;
--    }
--
--    public static Boolean getDescByCode(String code) {
--        VisitSendStateEnum[] organEnums = values();
--        for (int i = 0; i < organEnums.length; i++) {
--            VisitSendStateEnum organEnum = organEnums[i];
--            if (organEnum.getCode().equals(code)) {
--                return organEnum.getVisitFlag();
--            }
--        }
--        return null;
--    }
--
--
--    public Boolean getVisitFlag() {
--        return visitFlag;
--    }
--
--    public void setVisitFlag(Boolean visitFlag) {
--        this.visitFlag = visitFlag;
--    }
--
--    public String getCode() {
--        return code;
--    }
--
--    public void setCode(String code) {
--        this.code = code;
--    }
--
--    public String getDesc() {
--        return desc;
--    }
--
--    public void setDesc(String desc) {
--        this.desc = desc;
--    }
--}
-Index: ruoyi-admin/src/main/resources/application-druid.yml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+># 鏁版嵁婧愰厤缃甛r\nspring:\r\n  datasource:\r\n    type: com.alibaba.druid.pool.DruidDataSource\r\n    #    driverClassName: com.mysql.cj.jdbc.Driver\r\n    druid:\r\n      # 涓诲簱鏁版嵁婧怽r\n      master:\r\n        #    涔変箤浜岄櫌\r\n        #        url: jdbc:mysql://127.0.0.1:3306/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        #        username: root\r\n        #        password: 123456\r\n        #        鍏徃\r\n        #        url: jdbc:mysql://192.168.2.9:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        #        涓芥按\r\n        #        url: jdbc:mysql://127.0.0.1:3308/smartor-lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        #        username: smartor\r\n        #        password: Smartor.2023\r\n        #        driverClassName: com.mysql.cj.jdbc.Driver\r\n        #        娌冲崡\r\n        #        url: jdbc:mysql://127.0.0.1:3308/smartor_hn?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        #        username: root\r\n        #        password: 123456\r\n        #        driverClassName: com.mysql.cj.jdbc.Driver\r\n        #        # 鏂板崕\r\n        #        url: jdbc:mysql://192.168.191.181:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        #        username: smartor\r\n        #        password: Smartor.2023\r\n        #        driverClassName: com.mysql.cj.jdbc.Driver\r\n\r\n        #  鍏徃浜慭r\n#        url: jdbc:mysql://116.62.18.175:6002/smartor_xinhua?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n#        username: hxsoft\r\n#        password: Hxerp2000\r\n#        driverClassName: com.mysql.cj.jdbc.Driver\r\n        #  鍏徃鏈湴\r\n        url: jdbc:mysql://192.168.100.10:3306/smartor_lishui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        username: smartor\r\n        password: Smartor.2023\r\n        driverClassName: com.mysql.cj.jdbc.Driver\r\n\r\n      #        # 楂樻柉鏁版嵁搴撻厤缃甛r\n      #        url: jdbc:postgresql://127.0.0.1:5432/smartorlishui\r\n      #        username: gaussdb\r\n      #        password: Ls@123456\r\n      #        driverClassName: org.postgresql.Driver\r\n\r\n      # 浠庡簱鏁版嵁婧怽r\n      slave:\r\n        enabled: true\r\n        url: jdbc:oracle:thin:@//192.200.85.40:1521/hzsyhis\r\n        username: wssf\r\n        password: Hzsywssf\r\n        driver-class-name: oracle.jdbc.OracleDriver\r\n      #        enabled: true\r\n      #        url: jdbc:mysql://192.168.100.10:3306/emr?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n      #        username: smartor\r\n      #        password: Smartor.2023\r\n      #        driverClassName: com.mysql.cj.jdbc.Driver\r\n      # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(鍏徃)\r\n#       enabled: true\r\n#       url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor\r\n#       username: sa\r\n#       password: Hxerp2000\r\n#       driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver\r\n\r\n      # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(涔変箤浜岄櫌)\r\n      # enabled: true\r\n      # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=IntelligentVoice;encrypt=false;SelectMethod=cursor\r\n      # username: sa\r\n      # password: sfxt#2023\r\n      # driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver\r\n\r\n      # 鍒濆杩炴帴鏁癨r\n      initialSize: 5\r\n      # 鏈�灏忚繛鎺ユ睜鏁伴噺\r\n      minIdle: 10\r\n      # 鏈�澶ц繛鎺ユ睜鏁伴噺\r\n      maxActive: 20\r\n      # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂碶r\n      maxWait: 60000\r\n      # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣\r\n      timeBetweenEvictionRunsMillis: 60000\r\n      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣\r\n      minEvictableIdleTimeMillis: 300000\r\n      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣\r\n      maxEvictableIdleTimeMillis: 900000\r\n      # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁圽r\n      validationQuery: SELECT 1 FROM DUAL\r\n      #validationQuery: SELECT 1\r\n      testWhileIdle: true\r\n      testOnBorrow: false\r\n      testOnReturn: false\r\n      webStatFilter:\r\n        enabled: true\r\n      statViewServlet:\r\n        enabled: false\r\n        # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂甛r\n        allow:\r\n        url-pattern: /druid/*\r\n        # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮乗r\n        login-username: lihu\r\n        login-password: Lihu@1363419#$\r\n      filter:\r\n        stat:\r\n          enabled: true\r\n          # 鎱QL璁板綍\r\n          log-slow-sql: true\r\n          slow-sql-millis: 1000\r\n          merge-sql: true\r\n        wall:\r\n          config:\r\n            multi-statement-allow: true\r\n  # redis 閰嶇疆\r\n  redis:\r\n    host: 192.168.100.10\r\n    port: 6020\r\n    database: 0\r\n    password: Smartor\r\n    # 杩炴帴瓒呮椂鏃堕棿\r\n    timeout: 10s\r\n    lettuce:\r\n      pool:\r\n        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺r\n        min-idle: 0\r\n        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺r\n        max-idle: 8\r\n        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁癨r\n        max-active: 8\r\n        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級\r\n        max-wait: -1ms\r\n\r\nmagic-api:\r\n  web: /magic/web\r\n  resource:\r\n    type: database   # 閰嶇疆瀛樺偍鍦ㄦ暟鎹簱涓璡r\n    tableName: magic_config  # 鏁版嵁搴撲腑鐨勮〃鍚峔r\n    prefix: /api\r\n    readonly: false\r\n  sql-column-case: camel\r\n  show-sql: true #閰嶇疆鎵撳嵃SQL\r\n  page-config:\r\n    size: size\r\n    page: page\r\n    default-page: 1\r\n    default-size: 10\r\n\r\n# Swagger閰嶇疆\r\nswagger:\r\n  # 鏄惁寮�鍚痵wagger\r\n  enabled: true\r\n  # 璇锋眰鍓嶇紑\r\n  pathMapping: /dev-api\r\n\r\n#閽夐拤鐨勫瘑閽r\ndingAppid: dingn8iip5ubj7clrrsv\r\ndingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD\r\n\r\n\r\n# websocket瓒呮椂鏃堕棿\r\nserver:\r\nwebsocket:\r\ntimeout=60000:\r\n\r\n\r\naccessKeyId: LTAI5tPfc1VJzz7VuhzcBwug\r\naccessKeySecret: gG1srKxPFDBNWe2oHfqmK1qsSQkf1e\r\nsignName: 鏉窞鍒╂箹绉戞妧\r\n\r\n#鏅鸿兘鍛煎彨(涓婃捣)\r\nphoneIP: http://124.220.50.51\r\nphonePort: 8001\r\n#鏉窞\r\nhzphoneIP: http://121.43.112.160\r\nhzphonePort: 8088\r\n#鐢佃瘽绾胯矾锛�1 涓婃捣锛�2 鏉窞锛塡r\nphonePath: 2\r\n#鑷繁鐨勭數璇濆彿鐮乗r\nphoneMySelf: 83234089\r\n##鎺堟潈 id(鏉窞)\r\n#app_id: hzgs\r\n##鎺堟潈 key(宸插姞瀵嗚繃鐨� key)(鏉窞)\r\n#app_key: 605453540c4a0a692fe07e1cae1162f3\r\n#鎺堟潈 id(鏉窞)\r\napp_id: hz_ali\r\n#鎺堟潈 key(宸插姞瀵嗚繃鐨� key)(鏉窞)\r\napp_key: a2f3b5799d635216aa280362fafd8c35\r\n\r\n\r\npub_key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==\r\n#杩欎釜鏄悗绔殑绉侀挜锛岀敤涓嶅埌\r\npri_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==\r\n#鍓嶇绉侀挜锛堢敤涓嶅埌浜嗭級\r\n#pri_key: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEApHTIe/StslZAT5Jzv8XClbrqox32pfaTrP5IOCRJ3FaH/UZsGgA/tsNBBEXq9eagqwPbJrjYfpdEtINcChrK4wIDAQABAkEAilDujdKshGGmlUZHs/NQRT6AOdDpsYxBiC4V76IVvQpw0IW6c4HGEvH4T+xRufika7/48L0eu0f06H+YtL5lgQIhANUd0a6oSsVxWifAjtKwMZcXD3OaIxQIQSCN4NT4VFY3AiEAxYxYrIhkIyg+UVw3WOSvBpXKxM4/WL9HRzkxDLvp2rUCIQCK23P8tgCJ5xJT5l3onw6goFDcBKkoazxsBqVgfjENPwIgWbuTd+OIYPPhwsE5ntZZrosSDO2GlsBkFzUiU59z7VUCIA0LL+9IFb+FWCl3DGTwIQ9SZYbv61T83LKjebUcSOfe\r\n\r\n#浜岀淮鐮佽矾寰刓r\nqrpath: D:\\qrcode\r\n\r\n#鍏徃鍐呭閾捐姹侷P鍜岀鍙e彿\r\n#req_path: 8095\r\n#localIP: 192.168.2.13\r\n\r\n#鏂板崕鍖婚櫌澶栭摼璇锋眰IP鍜岀鍙e彿\r\nreq_path: 8093\r\n#localIP: https://wx.lihusmart.com\r\n#涓芥按澶栭摼璇锋眰IP鍜岀鍙e彿\r\nlocalIP: http://221.12.19.26\r\n\r\n#鑾峰彇鎮h�呬俊鎭疷RL(鍗庡崜鎻愪緵)\r\nhosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange\r\n\r\n# 0浠h〃璧伴粯璁ょ殑涓婁紶    1 浠g爜璧版柊鍗庡尰闄㈢殑涓婁紶\r\nuploadSwitch: 0\r\n\r\n#  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏈湴)\r\nASRCallBackPath: http://192.168.100.10:8095/smartor/serviceSubtask/phoneCallBackYQ\r\n#鎸傛柇IP(鏈湴)\r\nhangup: http://192.168.100.6:8089/hangup\r\n#fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏈湴)\r\napp_key_yq: ZurNHpaQLq6P55YS\r\n\r\n##  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏂板崕)\r\n#ASRCallBackPath: http://192.168.101.135:8095/smartor/serviceSubtask/phoneCallBackYQ\r\n##鎸傛柇IP(鏂板崕)\r\n#hangup: http://192.16.4.220:8091/hangup\r\n##fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏂板崕)\r\n#app_key_yq: ZurNHpaQLq6P55YS\r\n\r\n#鏈� 鍦� 鐭俊璇锋眰鍦板潃(杩欎釜鏈嶅姟鏄垜浠嚜宸卞啓鐨�)\r\n#xhsmsPath: http://192.168.2.13:8092/sendSms\r\n#鏂板崕鐭俊璇锋眰鍦板潃(杩欎釜鏈嶅姟鏄垜浠嚜宸卞啓鐨�)\r\nxhsmsPath: http://121.41.98.232:8001/sms/api/sendMessageMass\r\n#甯愬彿\r\nxhsmsAccount: 300044\r\n#鎺ュ彛瀵嗙爜\r\nxhsmsPwd: qj0NHDegxWhj\r\n#铏氭嫙鎺ュ叆鐮乗r\nxhsmsjrm: 1069055\r\n\r\n##鏈湴FTP杩炴帴\r\n#FTP_SERVER: \"192.168.2.13\"\r\n#FTP_USERNAME: voice\r\n#FTP_PASSWORD: xh@2023\r\n\r\n#鏂板崕FTP杩炴帴\r\nFTP_SERVER: \"192.16.4.220\"\r\nFTP_USERNAME: voice\r\nFTP_PASSWORD: xh@2023\r\n\r\n#璇煶鍦板潃璁块棶鍓嶇紑(鏂板崕)\r\nvoicePathPrefix: http://192.168.191.181:8095/profile/upload/vadio/\r\n#璇煶鍦板潃璁块棶鍓嶇紑(鍏徃)\r\n#voicePathPrefix: http://192.168.2.13:8095/profile/upload/vadio/\r\n\r\n#绗釜灏忔椂鐢佃瘽鎷ㄦ墦鐨勪笂闄怽r\nphoneUpEveryHour: 12\r\n#鐢佃瘽姣忓ぉ缁撴潫鏃堕棿\r\nphoneEndHour: 20\r\n\r\n#鏂板憳宸ラ粯璁ゅ瘑鐮乗r\ndefaultPwd: 123456\r\n\r\n#鏄惁闇�瑕佹牴鎹柧鐥呭缓绔嬪嚭闄㈡偅鑰呴殢璁縗r\ncreateIcd10Visit: false\r\n\r\n#admin绠$悊鍛榰serId\r\nisAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13\r\n\r\n#闅忚鍖婚櫌锛�1鏂板崕   2涓芥按\r\nvisitHosp: 2\r\n\r\nisEncryp:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
---- a/ruoyi-admin/src/main/resources/application-druid.yml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/resources/application-druid.yml	(date 1758762702879)
-@@ -29,9 +29,9 @@
-         #        driverClassName: com.mysql.cj.jdbc.Driver
- 
-         #  鍏徃浜�
--#        url: jdbc:mysql://116.62.18.175:6002/smartor_xinhua?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-+#        url: jdbc:mysql://116.62.18.175:6002/smartor_lishui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
- #        username: hxsoft
--#        password: Hxerp2000
-+#        password: Smartor.2023
- #        driverClassName: com.mysql.cj.jdbc.Driver
-         #  鍏徃鏈湴
-         url: jdbc:mysql://192.168.100.10:3306/smartor_lishui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-@@ -58,11 +58,11 @@
-       #        password: Smartor.2023
-       #        driverClassName: com.mysql.cj.jdbc.Driver
-       # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(鍏徃)
--#       enabled: true
--#       url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor
--#       username: sa
--#       password: Hxerp2000
--#       driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
-+      #       enabled: true
-+      #       url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor
-+      #       username: sa
-+      #       password: Hxerp2000
-+      #       driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
- 
-       # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(涔変箤浜岄櫌)
-       # enabled: true
-@@ -113,7 +113,7 @@
-             multi-statement-allow: true
-   # redis 閰嶇疆
-   redis:
--    host: 192.168.100.10
-+    host: 127.0.0.1
-     port: 6020
-     database: 0
-     password: Smartor
-@@ -202,9 +202,9 @@
- 
- #鏂板崕鍖婚櫌澶栭摼璇锋眰IP鍜岀鍙e彿
- req_path: 8093
--#localIP: https://wx.lihusmart.com
-+localIP: https://wx.lihusmart.com
- #涓芥按澶栭摼璇锋眰IP鍜岀鍙e彿
--localIP: http://221.12.19.26
-+#localIP: http://221.12.19.26
- 
- #鑾峰彇鎮h�呬俊鎭疷RL(鍗庡崜鎻愪緵)
- hosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange
-@@ -213,9 +213,9 @@
- uploadSwitch: 0
- 
- #  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏈湴)
--ASRCallBackPath: http://192.168.100.10:8095/smartor/serviceSubtask/phoneCallBackYQ
-+ASRCallBackPath: http://192.168.100.127:8095/smartor/serviceSubtask/phoneCallBackYQ
- #鎸傛柇IP(鏈湴)
--hangup: http://192.168.100.6:8089/hangup
-+hangup: http://192.168.100.33:5060/hangup
- #fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏈湴)
- app_key_yq: ZurNHpaQLq6P55YS
- 
-@@ -267,6 +267,11 @@
- isAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13
- 
- #闅忚鍖婚櫌锛�1鏂板崕   2涓芥按
--visitHosp: 2
-+visitHosp: 1
-+
-+isEncryp:
- 
--isEncryp:
-\ No newline at end of file
-+dealDeptCode:
-+
-+# 鍓嶇ip
-+qdip: 192.168.100.132
-Index: ruoyi-admin/src/main/resources/application.yml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+># 椤圭洰鐩稿叧閰嶇疆\r\nruoyi:\r\n  # 鍚嶇О\r\n  name: lihu\r\n  # 鐗堟湰\r\n  version: 3.8.5\r\n  # 鐗堟潈骞翠唤\r\n  copyrightYear: 2023\r\n  # 瀹炰緥婕旂ず寮�鍏砛r\n  demoEnabled: true\r\n  # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛塡r\n  profile: D:/ruoyi/uploadPath\r\n  # 鑾峰彇ip鍦板潃寮�鍏砛r\n  addressEnabled: false\r\n  # 楠岃瘉鐮佺被鍨� math 鏁扮粍璁$畻 char 瀛楃楠岃瘉\r\n  captchaType: math\r\n\r\n#  寮�鍙戠幆澧冮厤缃甛r\nserver:\r\n  # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080\r\n  port: 8095\r\n  servlet:\r\n    # 搴旂敤鐨勮闂矾寰刓r\n    context-path: /\r\n  tomcat:\r\n    # tomcat鐨刄RI缂栫爜\r\n    uri-encoding: UTF-8\r\n    # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100\r\n    accept-count: 1000\r\n    threads:\r\n      # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200\r\n      max: 800\r\n      # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10\r\n      min-spare: 100\r\n\r\n# 鏃ュ織閰嶇疆\r\nlogging:\r\n  # 鏃ュ織璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/logs锛孡inux閰嶇疆 /home/ruoyi/logs,涓嶅~鍚岀骇鐩綍logs锛塡r\n  path: D:/ruoyi/ls/logs\r\n  # 瀛楃缂栫爜\r\n  charset:\r\n    console: UTF-8\r\n    file: UTF-8\r\n  # 鏃ュ織鏂囦欢閰嶇疆\r\n  file:\r\n    name: ${logging.path}/ruoyi.log\r\n    max-size: 100MB\r\n    max-history: 30\r\n  # 鏃ュ織绾у埆閰嶇疆\r\n  level:\r\n    com.ruoyi: info\r\n    com.smartor: info\r\n    org.springframework: warn\r\n    org.apache.ibatis: warn\r\n    # 鎺у埗鍙拌緭鍑虹骇鍒玕r\n    root: info\r\n  # 鏃ュ織鏍煎紡閰嶇疆\r\n  pattern:\r\n    console: \"%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n\"\r\n    file: \"%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n\"\r\n\r\n# 鐢ㄦ埛閰嶇疆\r\nuser:\r\n  password:\r\n    # 瀵嗙爜鏈�澶ч敊璇鏁癨r\n    maxRetryCount: 5\r\n    # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛塡r\n    lockTime: 10\r\n\r\n# Spring閰嶇疆\r\nspring:\r\n  # 璧勬簮淇℃伅\r\n  messages:\r\n    # 鍥介檯鍖栬祫婧愭枃浠惰矾寰刓r\n    basename: i18n/messages\r\n  profiles:\r\n    active: hzszlyy\r\n  # 鏂囦欢涓婁紶\r\n  servlet:\r\n    multipart:\r\n      # 鍗曚釜鏂囦欢澶у皬\r\n      max-file-size: 500MB\r\n      # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬\r\n      max-request-size: 750MB\r\n  # 鏈嶅姟妯″潡\r\n  devtools:\r\n    restart:\r\n      # 鐑儴缃插紑鍏砛r\n      enabled: true\r\n\r\n# minio鏂囦欢绠$悊杩炴帴\r\nminio:\r\n  endpoint: http://192.168.1.4\r\n  port: 9002\r\n  accessKey: lihu\r\n  secretKey: lihu@123\r\n  bucketName: lihu\r\n  secure: false\r\n\r\n# token閰嶇疆\r\ntoken:\r\n  # 浠ょ墝鑷畾涔夋爣璇哱r\n  header: Authorization\r\n  # 浠ょ墝瀵嗛挜\r\n  secret: abcdefghijklmnopqrstuvwxyz\r\n  # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛塡r\n  expireTime: 120\r\n\r\n# MyBatis閰嶇疆\r\nmybatis:\r\n  # 鎼滅储鎸囧畾鍖呭埆鍚峔r\n  typeAliasesPackage: com.ruoyi.**.domain,com.smartor.domain\r\n  # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢\r\n  mapperLocations: classpath*:mapper/**/*Mapper.xml\r\n  # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠禱r\n  configLocation: classpath:mybatis/mybatis-config.xml\r\n  #configuration:\r\n  #  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\r\n\r\n\r\n# 娌冲崡SSO閰嶇疆锛堜附姘寸敤涓嶅埌锛塡r\nsso:\r\n  enabled: true\r\n  client_id: \"mbglxt\"  # 淇¢�氶櫌鎻愪緵\r\n  client_secret: \"mbglxt\"  # 淇¢�氶櫌鎻愪緵\r\n  # 鍐呯綉閰嶇疆\r\n  internal:\r\n    authorize_url: \"http://10.10.13.112:37727/connect/authorize\"\r\n    token_url: \"http://10.10.13.112:37727/connect/token\"\r\n    userinfo_url: \"http://10.10.13.112:37727/connect/userinfo\"\r\n    redirect_uri: \"http://172.20.111.142:8096/login\"\r\n  # 澶栫綉閰嶇疆\r\n  external:\r\n    authorize_url: \"http://172.20.111.142:37727/connect/authorize\"\r\n    token_url: \"http://172.20.111.142:37727/connect/token\"\r\n    userinfo_url: \"http://172.20.111.142:37727/connect/userinfo\"\r\n    redirect_uri: \"http://172.20.111.142:8096/login\"\r\n  state: \"smartor\"  # 浣犱滑绯荤粺鏍囪瘑\r\n  scope: \"openid%20roles%20profile\"\r\n\r\n# 闃叉XSS鏀诲嚮\r\nxss:\r\n  # 杩囨护寮�鍏砛r\n  enabled: true\r\n  # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛塡r\n  excludes: /system/notice\r\n  # 鍖归厤閾炬帴\r\n  urlPatterns: /system/*,/monitor/*,/tool/*\r\n\r\n#涓嶉渶瑕佽繘琛岄暱鏈熶换鍔$殑鏈烘瀯\r\nnoLongTask:\r\n\r\n#鐪佺珛鍚屽痉鍙栨暟鎹叕鍏辨帴鍙r\nsltd_pub_path: \"http://open-tdyy.cfuture.shop/kapi/gw-api/\"\r\n\r\n#鐢ㄦ埛榛樿瀵嗙爜\r\nuserPwd: 123456\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
---- a/ruoyi-admin/src/main/resources/application.yml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/resources/application.yml	(date 1758629310042)
-@@ -74,7 +74,7 @@
-     # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
-     basename: i18n/messages
-   profiles:
--    active: hzszlyy
-+    active: druid
-   # 鏂囦欢涓婁紶
-   servlet:
-     multipart:
-@@ -137,6 +137,10 @@
-     redirect_uri: "http://172.20.111.142:8096/login"
-   state: "smartor"  # 浣犱滑绯荤粺鏍囪瘑
-   scope: "openid%20roles%20profile"
-+  #鍗曠偣鐧婚檰鐧藉悕鍗旾P閰嶇疆
-+  whitelist:
-+    ips:
-+
- 
- # 闃叉XSS鏀诲嚮
- xss:
-Index: smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport java.util.Date;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\nimport org.apache.commons.lang3.builder.ToStringBuilder;\r\nimport org.apache.commons.lang3.builder.ToStringStyle;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\n\r\n/**\r\n * 璇煶浠诲姟鍛煎彨鏄庣粏瀵硅薄 ivr_taskcalldetail\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@Data\r\n@ApiModel(value = \"ServiceSubtaskDetail\", description = \"闂鍥炵瓟鏄庣粏\")\r\npublic class ServiceSubtaskDetail extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private String id;\r\n\r\n    @ApiModelProperty(value = \"瀛愪换鍔D\")\r\n    private Long subId;\r\n\r\n    @ApiModelProperty(value = \"浠诲姟ID\")\r\n    private Long taskid;\r\n\r\n    @ApiModelProperty(value = \"鎷ㄥ彿uuid\")\r\n    private String uuid;\r\n\r\n    @ApiModelProperty(value = \"鐢佃瘽鍙风爜\")\r\n    private String phone;\r\n\r\n    @ApiModelProperty(value = \"鎿嶄綔浜� \")\r\n    private String operate;\r\n\r\n    @ApiModelProperty(value = \"鏄剧ず鍙风爜\")\r\n    private String displayno;\r\n\r\n    @ApiModelProperty(value = \"\")\r\n    private Long inbound;\r\n\r\n    @ApiModelProperty(value = \"\")\r\n    private Long incoming;\r\n\r\n    @ApiModelProperty(value = \"\")\r\n    private Long assigntime;\r\n\r\n    @ApiModelProperty(value = \"寮�濮嬫椂闂碶")\r\n    private Long starttime;\r\n\r\n    @ApiModelProperty(value = \"鍥炵瓟鏃堕棿\")\r\n    private Long answertime;\r\n\r\n    @ApiModelProperty(value = \"\")\r\n    private Long silent;\r\n\r\n    @ApiModelProperty(value = \"\")\r\n    private String dtmfKey;\r\n\r\n    @ApiModelProperty(value = \"闊充箰璺緞\")\r\n    private String musicpath;\r\n\r\n    @ApiModelProperty(value = \"鍙戦�佺储寮昞")\r\n    private Long sentIndex;\r\n\r\n    @ApiModelProperty(value = \"鍙戦�佸紑濮嬬姸鎬乗")\r\n    private Long sentBegin;\r\n\r\n    @ApiModelProperty(value = \"鍥炵瓟缁撴灉\")\r\n    private String asrtext;\r\n\r\n    @ApiModelProperty(value = \"寮�濮嬫椂闂碶")\r\n    private Long beginTime;\r\n\r\n    @ApiModelProperty(value = \"缁撴潫鏃堕棿\")\r\n    private Long endTime;\r\n\r\n    @ApiModelProperty(value = \"鍙戦�佺粨鏉熺姸鎬乗")\r\n    private Long sentEnd;\r\n\r\n    @ApiModelProperty(value = \"鎻愪氦璺緞\")\r\n    private String recordpath;\r\n\r\n    @ApiModelProperty(value = \"鎻愪氦URL\")\r\n    private String recordurl;\r\n\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private String templateid;\r\n\r\n    @ApiModelProperty(value = \"妯℃澘闂缂栧彿\")\r\n    private Long templatequestionnum;\r\n\r\n\r\n    @ApiModelProperty(value = \"浜ゆ崲鏈篒D\")\r\n    private Long switchid;\r\n\r\n    @ApiModelProperty(value = \"闂鏂囨湰\")\r\n    private String questiontext;\r\n\r\n\r\n    @ApiModelProperty(value = \"闂璇煶\")\r\n    private String questionvoice;\r\n\r\n\r\n    @ApiModelProperty(value = \"绫诲埆\")\r\n    private String categoryname;\r\n\r\n\r\n    @ApiModelProperty(value = \"鎸囨爣ID(浠庨棶棰樹笂鑾峰彇)\")\r\n    private Integer targetid;\r\n\r\n\r\n    @ApiModelProperty(value = \"鎸囨爣閫夐」\")\r\n    private String targetoptions;\r\n\r\n\r\n    @ApiModelProperty(value = \"鎸囨爣鍊硷紙姝e垯鍖归厤鐨勯�夐」鍊硷級\")\r\n    private String targetvalue;\r\n\r\n\r\n    @ApiModelProperty(value = \"閫氳繃姝e垯瑙f瀽鐨勫�糪")\r\n    private String matchedtext;\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"娣诲姞鏃堕棿\")\r\n    private Date addtime;\r\n\r\n\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    @ApiModelProperty(value = \"闂绫诲瀷\")\r\n    private String valueType;\r\n\r\n\r\n    @ApiModelProperty(value = \"闂id\")\r\n    private Long scriptid;\r\n\r\n    @ApiModelProperty(value = \"閫夐」绛旀鐨勯檮鍔犱俊鎭痋")\r\n    private String answerps;\r\n\r\n    @ApiModelProperty(value = \"瀵圭瓟妗堢殑璇勮\")\r\n    private String comment;\r\n\r\n    @ApiModelProperty(value = \"閫氱敤搴撳尮閰嶅埌鐨勮瘽鏈痋")\r\n    private String extemplateText;\r\n\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private Long patid;\r\n\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java	(date 1758682819675)
-@@ -23,7 +23,7 @@
-     private static final long serialVersionUID = 1L;
- 
-     @ApiModelProperty(value = "涓婚敭")
--    private String id;
-+    private Long id;
- 
-     @ApiModelProperty(value = "瀛愪换鍔D")
-     private Long subId;
-Index: ruoyi-admin/src/main/resources/application-sltd.yml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+># 鏁版嵁婧愰厤缃甛r\nspring:\r\n  datasource:\r\n    type: com.alibaba.druid.pool.DruidDataSource\r\n    #    driverClassName: com.mysql.cj.jdbc.Driver\r\n    druid:\r\n      # 涓诲簱鏁版嵁婧怽r\n      master:\r\n        #        鐪佺珛鍚屽痉\r\n        url: jdbc:mysql://192.88.117.237:3306/smartor_sltd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        username: root\r\n        password: Smartor.2023\r\n        driverClassName: com.mysql.cj.jdbc.Driver\r\n\r\n      #        # 楂樻柉鏁版嵁搴撻厤缃甛r\n      #        url: jdbc:postgresql://127.0.0.1:5432/smartorlishui\r\n      #        username: gaussdb\r\n      #        password: Ls@123456\r\n      #        driverClassName: org.postgresql.Driver\r\n\r\n      # 浠庡簱鏁版嵁婧怽r\n      slave:\r\n      # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(鍏徃)\r\n      # enabled: true\r\n      # url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor\r\n      # username: sa\r\n      # password: Hxerp2000\r\n      # driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver\r\n\r\n      # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(涔変箤浜岄櫌)\r\n      # enabled: true\r\n      # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=IntelligentVoice;encrypt=false;SelectMethod=cursor\r\n      # username: sa\r\n      # password: sfxt#2023\r\n      # driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver\r\n\r\n      # 鍒濆杩炴帴鏁癨r\n      initialSize: 5\r\n      # 鏈�灏忚繛鎺ユ睜鏁伴噺\r\n      minIdle: 10\r\n      # 鏈�澶ц繛鎺ユ睜鏁伴噺\r\n      maxActive: 20\r\n      # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂碶r\n      maxWait: 60000\r\n      # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣\r\n      timeBetweenEvictionRunsMillis: 60000\r\n      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣\r\n      minEvictableIdleTimeMillis: 300000\r\n      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣\r\n      maxEvictableIdleTimeMillis: 900000\r\n      # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁圽r\n      #      validationQuery: SELECT 1 FROM DUAL\r\n      validationQuery: SELECT 1\r\n      testWhileIdle: true\r\n      testOnBorrow: false\r\n      testOnReturn: false\r\n      webStatFilter:\r\n        enabled: true\r\n      statViewServlet:\r\n        enabled: false\r\n        # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂甛r\n        allow:\r\n        url-pattern: /druid/*\r\n        # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮乗r\n        login-username: lihu\r\n        login-password: Lihu@1363419#$\r\n      filter:\r\n        stat:\r\n          enabled: true\r\n          # 鎱QL璁板綍\r\n          log-slow-sql: true\r\n          slow-sql-millis: 1000\r\n          merge-sql: true\r\n        wall:\r\n          config:\r\n            multi-statement-allow: true\r\n  # redis 閰嶇疆\r\n  redis:\r\n    host: 127.0.0.1\r\n    port: 6020\r\n\r\n    # 鏁版嵁搴撶储寮昞r\n    database: 0\r\n    # 瀵嗙爜\r\n    password: Smartor\r\n    # 杩炴帴瓒呮椂鏃堕棿\r\n    timeout: 10s\r\n    lettuce:\r\n      pool:\r\n        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺r\n        min-idle: 0\r\n        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺r\n        max-idle: 8\r\n        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁癨r\n        max-active: 8\r\n        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級\r\n        max-wait: -1ms\r\n\r\n# Swagger閰嶇疆\r\nswagger:\r\n  # 鏄惁寮�鍚痵wagger\r\n  enabled: false\r\n  # 璇锋眰鍓嶇紑\r\n  pathMapping: /dev-api\r\n\r\n# PageHelper鍒嗛〉鎻掍欢\r\npagehelper:\r\n  helperDialect: mysql\r\n  supportMethodsArguments: true\r\n  params: count=countSql\r\n\r\nmagic-api:\r\n  web: /magic/web\r\n  resource:\r\n    type: database   # 閰嶇疆瀛樺偍鍦ㄦ暟鎹簱涓璡r\n    tableName: magic_config  # 鏁版嵁搴撲腑鐨勮〃鍚峔r\n    prefix: /api\r\n    readonly: false\r\n  sql-column-case: camel\r\n  show-sql: true #閰嶇疆鎵撳嵃SQL\r\n  page-config:\r\n    size: size\r\n    page: page\r\n    default-page: 1\r\n    default-size: 10\r\n\r\n#閽夐拤鐨勫瘑閽r\ndingAppid: dingn8iip5ubj7clrrsv\r\ndingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD\r\n\r\n# websocket瓒呮椂鏃堕棿\r\nserver:\r\nwebsocket:\r\ntimeout=60000:\r\n\r\n\r\naccessKeyId: LTAI5tPfc1VJzz7VuhzcBwug\r\naccessKeySecret: gG1srKxPFDBNWe2oHfqmK1qsSQkf1e\r\nsignName: 鏉窞鍒╂箹绉戞妧\r\n\r\n#鏅鸿兘鍛煎彨(涓婃捣)\r\nphoneIP: http://124.220.50.51\r\nphonePort: 8001\r\n#鏉窞\r\nhzphoneIP: http://121.43.112.160\r\nhzphonePort: 8088\r\n#鐢佃瘽绾胯矾锛�1 涓婃捣锛�2 鏉窞锛塡r\nphonePath: 2\r\n#鑷繁鐨勭數璇濆彿鐮乗r\nphoneMySelf: 83234089\r\n##鎺堟潈 id(鏉窞)\r\n#app_id: hzgs\r\n##鎺堟潈 key(宸插姞瀵嗚繃鐨� key)(鏉窞)\r\n#app_key: 605453540c4a0a692fe07e1cae1162f3\r\n#鎺堟潈 id(鏉窞)\r\napp_id: hz_ali\r\n#鎺堟潈 key(宸插姞瀵嗚繃鐨� key)(鏉窞)\r\napp_key: a2f3b5799d635216aa280362fafd8c35\r\n\r\n\r\npub_key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==\r\n#杩欎釜鏄悗绔殑绉侀挜锛岀敤涓嶅埌\r\npri_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==\r\n#鍓嶇绉侀挜锛堢敤涓嶅埌浜嗭級\r\n#pri_key: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEApHTIe/StslZAT5Jzv8XClbrqox32pfaTrP5IOCRJ3FaH/UZsGgA/tsNBBEXq9eagqwPbJrjYfpdEtINcChrK4wIDAQABAkEAilDujdKshGGmlUZHs/NQRT6AOdDpsYxBiC4V76IVvQpw0IW6c4HGEvH4T+xRufika7/48L0eu0f06H+YtL5lgQIhANUd0a6oSsVxWifAjtKwMZcXD3OaIxQIQSCN4NT4VFY3AiEAxYxYrIhkIyg+UVw3WOSvBpXKxM4/WL9HRzkxDLvp2rUCIQCK23P8tgCJ5xJT5l3onw6goFDcBKkoazxsBqVgfjENPwIgWbuTd+OIYPPhwsE5ntZZrosSDO2GlsBkFzUiU59z7VUCIA0LL+9IFb+FWCl3DGTwIQ9SZYbv61T83LKjebUcSOfe\r\n\r\n#浜岀淮鐮佽矾寰刓r\nqrpath: D:\\qrcode\r\n\r\n\r\n#澶栭摼璇锋眰IP鍜岀鍙e彿\r\nreq_path: 13871\r\nlocalIP: http://m.zjtongde.com\r\n\r\n\r\n#鑾峰彇鎮h�呬俊鎭疷RL(鍗庡崜鎻愪緵)\r\nhosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange\r\n\r\n# 0浠h〃璧伴粯璁ょ殑涓婁紶    1 浠g爜璧版柊鍗庡尰闄㈢殑涓婁紶\r\nuploadSwitch: 1\r\n\r\n##  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏈湴)\r\n#ASRCallBackPath: http://192.168.2.13:8095/smartor/serviceSubtask/phoneCallBackYQ\r\n##鎸傛柇IP(鏈湴)\r\n#hangup: http://192.168.2.13:8091/hangup\r\n##fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏈湴)\r\n#app_key_yq: ZurNHpaQLq6P55YS\r\n\r\n#  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏂板崕)\r\nASRCallBackPath: http://192.168.101.135:8095/smartor/serviceSubtask/phoneCallBackYQ\r\n#鎸傛柇IP(鏂板崕)\r\nhangup: http://192.16.4.220:8091/hangup\r\n#fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏂板崕)\r\napp_key_yq: ZurNHpaQLq6P55YS\r\n\r\n#鐭俊璇锋眰鍦板潃(杩欓噷涓虹┖锛屽悓寰锋彁渚涚殑鏄痺s)\r\nxhsmsPath:\r\n#甯愬彿\r\nxhsmsAccount:\r\n#鎺ュ彛瀵嗙爜\r\nxhsmsPwd:\r\n#铏氭嫙鎺ュ叆鐮乗r\nxhsmsjrm:\r\n\r\n##鏈湴FTP杩炴帴\r\n#FTP_SERVER: \"192.168.2.13\"\r\n#FTP_USERNAME: voice\r\n#FTP_PASSWORD: xh@2023\r\n\r\n#鏂板崕FTP杩炴帴\r\nFTP_SERVER: \"192.16.4.220\"\r\nFTP_USERNAME: voice\r\nFTP_PASSWORD: xh@2023\r\n\r\n#璇煶鍦板潃璁块棶鍓嶇紑(鏂板崕)\r\nvoicePathPrefix: http://192.168.191.181:8095/profile/upload/vadio/\r\n#璇煶鍦板潃璁块棶鍓嶇紑(鍏徃)\r\n#voicePathPrefix: http://192.168.2.13:8095/profile/upload/vadio/\r\n\r\n#绗釜灏忔椂鐢佃瘽鎷ㄦ墦鐨勪笂闄怽r\nphoneUpEveryHour: 12\r\n#鐢佃瘽姣忓ぉ缁撴潫鏃堕棿\r\nphoneEndHour: 20\r\n\r\n#鏂板憳宸ラ粯璁ゅ瘑鐮乗r\ndefaultPwd: 123456\r\n\r\n#鏄惁闇�瑕佹牴鎹柧鐥呭缓绔嬪嚭闄㈡偅鑰呴殢璁縗r\ncreateIcd10Visit: false\r\n\r\n#admin绠$悊鍛榰serId\r\nisAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13\r\n\r\n#闅忚鍖婚櫌锛�1鏂板崕   2涓芥按    3鐪佺珛鍚屽痉\r\nvisitHosp: 3\r\n\r\n#鐢ㄦ埛榛樿瀵嗙爜\r\nuserPwd: sltd@0230\r\n\r\n#澶勭悊鎶曡瘔寤鸿鐨勯儴闂ㄧ紪鐮乗r\ndealDeptCode: 40003024\r\n\r\n\r\n#鏄惁鍔犲瘑  0涓嶅姞   1鍔犲瘑\r\nisEncryp: 0\r\n\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/resources/application-sltd.yml b/ruoyi-admin/src/main/resources/application-sltd.yml
---- a/ruoyi-admin/src/main/resources/application-sltd.yml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/resources/application-sltd.yml	(date 1758629310093)
-@@ -231,8 +231,8 @@
- #admin绠$悊鍛榰serId
- isAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13
- 
--#闅忚鍖婚櫌锛�1鏂板崕   2涓芥按    3鐪佺珛鍚屽痉
--visitHosp: 3
-+#闅忚鍖婚櫌锛�1鏂板崕   2涓芥按   3甯備竴   4鐪佺珛鍚屽痉
-+visitHosp: 4
- 
- #鐢ㄦ埛榛樿瀵嗙爜
- userPwd: sltd@0230
-@@ -244,3 +244,4 @@
- #鏄惁鍔犲瘑  0涓嶅姞   1鍔犲瘑
- isEncryp: 0
- 
-+
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.common;\r\n\r\nimport com.ruoyi.common.config.RuoYiConfig;\r\nimport com.ruoyi.common.constant.Constants;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.enums.PhotoEnum;\r\nimport com.ruoyi.common.enums.RadioEnum;\r\nimport com.ruoyi.common.enums.VadioEnum;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.file.FileUploadUtils;\r\nimport com.ruoyi.common.utils.file.FileUtils;\r\nimport com.ruoyi.framework.config.ServerConfig;\r\nimport com.smartor.domain.HtmlContentVO;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport org.apache.poi.hwpf.HWPFDocument;\r\nimport org.apache.poi.hwpf.converter.PicturesManager;\r\nimport org.apache.poi.hwpf.converter.WordToHtmlConverter;\r\nimport org.apache.poi.hwpf.usermodel.PictureType;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.http.MediaType;\r\nimport org.springframework.web.bind.annotation.*;\r\nimport org.springframework.web.multipart.MultipartFile;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport javax.xml.parsers.DocumentBuilderFactory;\r\nimport javax.xml.parsers.ParserConfigurationException;\r\nimport javax.xml.transform.OutputKeys;\r\nimport javax.xml.transform.Transformer;\r\nimport javax.xml.transform.TransformerException;\r\nimport javax.xml.transform.TransformerFactory;\r\nimport javax.xml.transform.dom.DOMSource;\r\nimport javax.xml.transform.stream.StreamResult;\r\nimport java.io.*;\r\nimport java.util.ArrayList;\r\nimport java.util.Base64;\r\nimport java.util.List;\r\n\r\n/**\r\n * 閫氱敤璇锋眰澶勭悊\r\n *\r\n * @author ruoyi\r\n */\r\n@RestController\r\n@Api(description = \"閫氳繃璇锋眰澶勭悊\")\r\n@RequestMapping(\"/common\")\r\npublic class CommonController {\r\n    private static final Logger log = LoggerFactory.getLogger(CommonController.class);\r\n\r\n    @Autowired\r\n    private ServerConfig serverConfig;\r\n\r\n    private static final String FILE_DELIMETER = \",\";\r\n\r\n    @Value(\"${uploadSwitch}\")\r\n    private Integer uploadSwitch;\r\n\r\n    /**\r\n     * 閫氱敤涓嬭浇璇锋眰\r\n     *\r\n     * @param fileName 鏂囦欢鍚嶇О\r\n     * @param delete   鏄惁鍒犻櫎\r\n     */\r\n    @GetMapping(\"/download\")\r\n    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) {\r\n        try {\r\n            if (!FileUtils.checkAllowDownload(fileName)) {\r\n                throw new Exception(StringUtils.format(\"鏂囦欢鍚嶇О({})闈炴硶锛屼笉鍏佽涓嬭浇銆� \", fileName));\r\n            }\r\n            String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf(\"_\") + 1);\r\n            String filePath = RuoYiConfig.getDownloadPath() + fileName;\r\n\r\n            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);\r\n            FileUtils.setAttachmentResponseHeader(response, realFileName);\r\n            FileUtils.writeBytes(filePath, response.getOutputStream());\r\n            if (delete) {\r\n                FileUtils.deleteFile(filePath);\r\n            }\r\n        } catch (Exception e) {\r\n            log.error(\"涓嬭浇鏂囦欢澶辫触\", e);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鍒嗙被涓婁紶璇锋眰\r\n     */\r\n    @ApiOperation(\"鍒嗙被涓婁紶璇锋眰\")\r\n    @PostMapping(\"/uploadSort\")\r\n    public AjaxResult uploadFileSort(MultipartFile file) {\r\n        try {\r\n            // 涓婁紶鏂囦欢璺緞\r\n            String filePath = RuoYiConfig.getUploadPath();\r\n            String originalFilename = file.getOriginalFilename().split(\"\\\\.\", 2)[1];\r\n            if (VadioEnum.getDescByCode(originalFilename)) {\r\n                filePath = filePath + \"/vadio\";\r\n            } else if (RadioEnum.getDescByCode(originalFilename)) {\r\n                filePath = filePath + \"/radio\";\r\n            } else if (PhotoEnum.getDescByCode(originalFilename)) {\r\n                filePath = filePath + \"/photo\";\r\n            } else {\r\n                filePath = filePath + \"/file\";\r\n            }\r\n            // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О\r\n            String fileName = FileUploadUtils.uploadSort(filePath, file);\r\n            String url = null;\r\n            //鏂板崕鍖婚櫌鐗规畩锛岃繖涓棰戠殑璁块棶寰楄浆\r\n            String xhPath = \"http://218.108.11.22:8093/profile-api\";\r\n            if (uploadSwitch == 1) {\r\n                String fn = fileName.replaceAll(\"/profile\", \"\");\r\n                url = xhPath + fn;\r\n            } else {\r\n                url = serverConfig.getUrl() + fileName;\r\n            }\r\n            AjaxResult ajax = AjaxResult.success();\r\n            ajax.put(\"url\", url);\r\n            ajax.put(\"fileName\", fileName);\r\n            ajax.put(\"newFileName\", FileUtils.getName(fileName));\r\n            ajax.put(\"originalFilename\", file.getOriginalFilename());\r\n            return ajax;\r\n        } catch (Exception e) {\r\n            return AjaxResult.error(e.getMessage());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 涓婁紶骞惰浆鎴恏tml璇锋眰\r\n     */\r\n    @ApiOperation(\"word鏂囦欢涓婁紶骞惰浆鎴恏tml\")\r\n    @PostMapping(\"/uploadShow\")\r\n    public AjaxResult uploadFileShow(MultipartFile file) {\r\n        try {\r\n            // 涓婁紶鏂囦欢璺緞\r\n            String filePath = RuoYiConfig.getUploadPath();\r\n            String originalFilename = file.getOriginalFilename().split(\"\\\\.\", 2)[1];\r\n            filePath = filePath + \"/show/\" + file.getOriginalFilename().split(\"\\\\.\", 2)[0];\r\n            // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О\r\n            String fileName = FileUploadUtils.uploadSort(filePath, file);\r\n            //灏唚ord杞垚html\r\n            convertDocToHtml(filePath + \"\\\\\" + file.getOriginalFilename(), filePath + \"\\\\\" + file.getOriginalFilename().split(\"\\\\.\", 2)[0] + \".html\");\r\n\r\n            String url = null;\r\n            String xhPath = \"http://218.108.11.22:8093/profile-api\";\r\n            if (uploadSwitch == 1) {\r\n                String fn = fileName.replaceAll(\"\\\\.[^.]*$\", \".html\").replaceAll(\"/profile\", \"\");\r\n                url = xhPath + fn;\r\n\r\n            } else {\r\n                url = serverConfig.getUrl() + fileName.replaceAll(\"\\\\.[^.]*$\", \".html\");\r\n            }\r\n            AjaxResult ajax = AjaxResult.success();\r\n            ajax.put(\"url\", url);\r\n            ajax.put(\"fileName\", fileName);\r\n            ajax.put(\"newFileName\", FileUtils.getName(fileName));\r\n            ajax.put(\"originalFilename\", file.getOriginalFilename());\r\n            return ajax;\r\n        } catch (Exception e) {\r\n            return AjaxResult.error(e.getMessage());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 閫氱敤涓婁紶璇锋眰锛堝崟涓級\r\n     */\r\n    @ApiOperation(\"閫氱敤涓婁紶璇锋眰\")\r\n    @PostMapping(\"/upload\")\r\n    public AjaxResult uploadFile(MultipartFile file) {\r\n        try {\r\n            // 涓婁紶鏂囦欢璺緞\r\n            String filePath = RuoYiConfig.getUploadPath();\r\n            // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О\r\n            String fileName = FileUploadUtils.upload(filePath, file);\r\n            String url = serverConfig.getUrl() + fileName;\r\n            AjaxResult ajax = AjaxResult.success();\r\n            ajax.put(\"url\", url);\r\n            ajax.put(\"fileName\", fileName);\r\n            ajax.put(\"newFileName\", FileUtils.getName(fileName));\r\n            ajax.put(\"originalFilename\", file.getOriginalFilename());\r\n            return ajax;\r\n        } catch (Exception e) {\r\n            return AjaxResult.error(e.getMessage());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 閫氱敤涓婁紶璇锋眰锛堝涓級\r\n     */\r\n    @PostMapping(\"/uploads\")\r\n    public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception {\r\n        try {\r\n            // 涓婁紶鏂囦欢璺緞\r\n            String filePath = RuoYiConfig.getUploadPath();\r\n            List<String> urls = new ArrayList<String>();\r\n            List<String> fileNames = new ArrayList<String>();\r\n            List<String> newFileNames = new ArrayList<String>();\r\n            List<String> originalFilenames = new ArrayList<String>();\r\n            for (MultipartFile file : files) {\r\n                // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О\r\n                String fileName = FileUploadUtils.upload(filePath, file);\r\n                String url = serverConfig.getUrl() + fileName;\r\n                urls.add(url);\r\n                fileNames.add(fileName);\r\n                newFileNames.add(FileUtils.getName(fileName));\r\n                originalFilenames.add(file.getOriginalFilename());\r\n            }\r\n            AjaxResult ajax = AjaxResult.success();\r\n            ajax.put(\"urls\", StringUtils.join(urls, FILE_DELIMETER));\r\n            ajax.put(\"fileNames\", StringUtils.join(fileNames, FILE_DELIMETER));\r\n            ajax.put(\"newFileNames\", StringUtils.join(newFileNames, FILE_DELIMETER));\r\n            ajax.put(\"originalFilenames\", StringUtils.join(originalFilenames, FILE_DELIMETER));\r\n            return ajax;\r\n        } catch (Exception e) {\r\n            return AjaxResult.error(e.getMessage());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鏈湴璧勬簮閫氱敤涓嬭浇\r\n     */\r\n    @GetMapping(\"/download/resource\")\r\n    public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) throws Exception {\r\n        try {\r\n            if (!FileUtils.checkAllowDownload(resource)) {\r\n                throw new Exception(StringUtils.format(\"璧勬簮鏂囦欢({})闈炴硶锛屼笉鍏佽涓嬭浇銆� \", resource));\r\n            }\r\n            // 鏈湴璧勬簮璺緞\r\n            String localPath = RuoYiConfig.getProfile();\r\n            // 鏁版嵁搴撹祫婧愬湴鍧�\r\n            String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);\r\n            // 涓嬭浇鍚嶇О\r\n            String downloadName = StringUtils.substringAfterLast(downloadPath, \"/\");\r\n            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);\r\n            FileUtils.setAttachmentResponseHeader(response, downloadName);\r\n            FileUtils.writeBytes(downloadPath, response.getOutputStream());\r\n        } catch (Exception e) {\r\n            log.error(\"涓嬭浇鏂囦欢澶辫触\", e);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @param\r\n     * @return\r\n     */\r\n    @ApiOperation(\"瀵屾枃鏈浆html\")\r\n    @PostMapping(\"/htmlContent\")\r\n    public AjaxResult htmlContent(@RequestBody HtmlContentVO htmlContentVO) {\r\n        log.info(\"htmlContentVO鍏ュ弬涓猴細{}\", htmlContentVO);\r\n        // 鑾峰彇鏂囦欢鐨勫師濮嬪悕绉癨r\n        String fileName = htmlContentVO.getFileName();\r\n        if (!fileName.endsWith(\".html\")) {\r\n            // 鍘绘帀涔嬪墠鐨勬墿灞曞悕\r\n            int lastIndex = fileName.lastIndexOf('.');\r\n            if (lastIndex != -1) {\r\n                fileName = fileName.substring(0, lastIndex); // 鍘绘帀鎵╁睍鍚峔r\n            }\r\n            // 娣诲姞.html鍚庣紑\r\n            fileName += \".html\";\r\n        }\r\n        FileUtils.createFile(RuoYiConfig.getUploadPath() + \"/show/\" + fileName.split(\"\\\\.\", 2)[0]);\r\n        // 灏嗘枃浠朵繚瀛樺埌鎸囧畾鐩綍\r\n        File outputFile = new File(RuoYiConfig.getUploadPath() + \"/show/\" + fileName.split(\"\\\\.\", 2)[0] + \"/\" + fileName);\r\n        try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), \"UTF-8\"))) {\r\n            if (StringUtils.isNotEmpty(htmlContentVO.getContent()))\r\n                writer.write(htmlContentVO.getContent());\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n        String url = null;\r\n        String xhPath = \"http://218.108.11.22:8093/profile-api\";\r\n        if (uploadSwitch == 1) {\r\n            url = xhPath + \"/upload/show/\" + fileName.split(\"\\\\.\", 2)[0] + \"/\" + fileName;\r\n        } else {\r\n            url = serverConfig.getUrl() + \"/profile/upload/show/\" + fileName.split(\"\\\\.\", 2)[0] + \"/\" + fileName;\r\n        }\r\n        return AjaxResult.success(url);\r\n    }\r\n\r\n\r\n    public static void convertDocToHtml(String docFilePath, String outputHtmlFilePath) throws TransformerException, IOException, ParserConfigurationException {\r\n\r\n        InputStream inputStream = new FileInputStream(docFilePath);\r\n        HWPFDocument document = new HWPFDocument(inputStream);\r\n        org.w3c.dom.Document htmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();\r\n        WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(htmlDoc);\r\n\r\n        wordToHtmlConverter.setPicturesManager(new PicturesManager() {\r\n            @Override\r\n            public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) {\r\n                String base64 = Base64.getEncoder().encodeToString(content);\r\n                String src = \"data:\" + pictureType.getMime() + \";base64,\" + base64;\r\n                return src;\r\n            }\r\n        });\r\n        try {\r\n            wordToHtmlConverter.processDocument(document);\r\n        } catch (Exception e) {\r\n            e.getMessage();\r\n        }\r\n        TransformerFactory tf = TransformerFactory.newInstance();\r\n        Transformer transformer = tf.newTransformer();\r\n        transformer.setOutputProperty(OutputKeys.INDENT, \"yes\");\r\n        transformer.setOutputProperty(OutputKeys.METHOD, \"html\");\r\n        transformer.setOutputProperty(OutputKeys.ENCODING, \"UTF-8\");\r\n        transformer.setOutputProperty(\"{http://xml.apache.org/xslt}indent-amount\", \"4\");\r\n\r\n        DOMSource domSource = new DOMSource(wordToHtmlConverter.getDocument());\r\n        StreamResult streamResult = new StreamResult(new File(outputHtmlFilePath));\r\n        transformer.transform(domSource, streamResult);\r\n\r\n        System.out.println(\"word杞琱tml鎴愬姛\");\r\n\r\n    }\r\n\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java	(date 1758629310121)
-@@ -10,6 +10,8 @@
- import com.ruoyi.common.utils.file.FileUploadUtils;
- import com.ruoyi.common.utils.file.FileUtils;
- import com.ruoyi.framework.config.ServerConfig;
-+import com.ruoyi.system.domain.SysConfig;
-+import com.ruoyi.system.mapper.SysConfigMapper;
- import com.smartor.domain.HtmlContentVO;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
-@@ -54,6 +56,9 @@
-     @Autowired
-     private ServerConfig serverConfig;
- 
-+    @Autowired
-+    private SysConfigMapper sysConfigMapper;
-+
-     private static final String FILE_DELIMETER = ",";
- 
-     @Value("${uploadSwitch}")
-@@ -143,7 +148,10 @@
-             convertDocToHtml(filePath + "\\" + file.getOriginalFilename(), filePath + "\\" + file.getOriginalFilename().split("\\.", 2)[0] + ".html");
- 
-             String url = null;
--            String xhPath = "http://218.108.11.22:8093/profile-api";
-+            SysConfig config = new SysConfig();
-+            config.setConfigKey("sys.qdip");
-+            SysConfig sysConfig = sysConfigMapper.selectConfig(config);
-+            String xhPath = sysConfig.getConfigValue() + "/profile-api";
-             if (uploadSwitch == 1) {
-                 String fn = fileName.replaceAll("\\.[^.]*$", ".html").replaceAll("/profile", "");
-                 url = xhPath + fn;
-@@ -263,8 +271,7 @@
-         // 灏嗘枃浠朵繚瀛樺埌鎸囧畾鐩綍
-         File outputFile = new File(RuoYiConfig.getUploadPath() + "/show/" + fileName.split("\\.", 2)[0] + "/" + fileName);
-         try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8"))) {
--            if (StringUtils.isNotEmpty(htmlContentVO.getContent()))
--                writer.write(htmlContentVO.getContent());
-+            if (StringUtils.isNotEmpty(htmlContentVO.getContent())) writer.write(htmlContentVO.getContent());
-         } catch (IOException e) {
-             e.printStackTrace();
-         }
-@@ -315,4 +322,26 @@
-     }
- 
- 
-+    /**
-+     * 鑾峰彇鏂囦欢鎵╁睍鍚�
-+     */
-+    private static String getFileExtension(String fileName) {
-+        int lastDotIndex = fileName.lastIndexOf('.');
-+        if (lastDotIndex > 0) {
-+            return fileName.substring(lastDotIndex);
-+        }
-+        return "";
-+    }
-+
-+    /**
-+     * 妫�鏌ユ枃浠舵槸鍚︿负鏀寔鐨刉ord鏍煎紡
-+     */
-+    public static boolean isSupportedWordFormat(String filePath) {
-+        if (filePath == null) return false;
-+        String fileName = filePath.toLowerCase();
-+        return fileName.endsWith(".doc") || fileName.endsWith(".docx");
-+    }
- }
-+
-+
-+
-Index: smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 璇煶浠诲姟瀵硅薄 ivr_task\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@Data\r\npublic class ServiceTaskVO extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 浠诲姟鎻忚堪\r\n     */\r\n    @Excel(name = \"浠诲姟鎻忚堪\")\r\n    @ApiModelProperty(value = \"浠诲姟鎻忚堪\")\r\n    private String taskDesc;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(\"鏄惁鏄暱鏈熶换鍔� 0锛氫笉鏄�    1锛氭槸\")\r\n    private Integer longTask = 0;\r\n\r\n    /**\r\n     *\r\n     */\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 鍙戦�佸ぉ鏁癨r\n     */\r\n    @Excel(name = \"鍙戦�佸ぉ鏁癨")\r\n    @ApiModelProperty(value = \"鍙戦�佸ぉ鏁癨")\r\n    private Long sendDay;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String taskName;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿闆嗗悎\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎\")\r\n    private List<String> leaveldeptcodes;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long templateid;\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String libtemplateid;\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String libtemplatename;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String templatename;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String labelinfo;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long state;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long count;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long executed;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long unexecuted;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long fail;\r\n\r\n    /**\r\n     * 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤\r\n     */\r\n    @Excel(name = \"  浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 \")\r\n    @ApiModelProperty(value = \" 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 \")\r\n    private String preachform;\r\n\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String userid;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String username;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date addtime;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String checkuserid;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String checkusername;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date checktime;\r\n\r\n    /**\r\n     * 浠诲姟绫诲瀷(閫氱煡銆侀棶鍗枫�佹満鍣ㄤ汉璇煶)\r\n     */\r\n    @Excel(name = \" 浠诲姟绫诲瀷(閫氱煡銆侀棶鍗枫�佹満鍣ㄤ汉璇煶) \")\r\n    private String type;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"绫诲瀷鍚嶇О\")\r\n    private String typename;\r\n\r\n    /**\r\n     * 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊\r\n     */\r\n    @Excel(name = \" 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 \")\r\n    private Long usebqsms;\r\n\r\n    /**\r\n     * 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊\r\n     */\r\n    @Excel(name = \" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 \")\r\n    private Long usebhsms;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long usesendsms;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"绉戝缂栫爜\")\r\n    private String deptcode;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"绉戝鍚峔")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 宸插彂閫乗r\n     */\r\n    @Excel(name = \" 宸插彂閫� \")\r\n    private Long yfs;\r\n\r\n    /**\r\n     * 鏈彂閫乗r\n     */\r\n    @Excel(name = \" 鏈彂閫� \")\r\n    private Long wfs;\r\n\r\n    /**\r\n     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡")\r\n    @ApiModelProperty(value = \"灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌 3.涓撶梾锛塡")\r\n    private String hospType;\r\n\r\n    /**\r\n     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�  \")\r\n    @ApiModelProperty(value = \"灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡")\r\n    private String hospno;\r\n\r\n    /**\r\n     * 鍙戦�佹椂闂存\r\n     */\r\n    @ApiModelProperty(value = \"鍙戦�佹椂闂存 \")\r\n    private List<TaskSendTimeVO> sendTimeslot;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬侊細  0  澶辫触   1鎴愬姛\r\n     */\r\n    @Excel(name = \" 鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 \")\r\n    @ApiModelProperty(value = \"鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 \")\r\n    private Long sendState;\r\n\r\n\r\n    /**\r\n     * 鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚圽r\n     */\r\n    @Excel(name = \" 瀹f偅鑰呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚圽")\r\n    @ApiModelProperty(value = \"鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚圽")\r\n    private List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n    /**\r\n     * 鏂囨湰鍙橀噺鍙傛暟\r\n     */\r\n    @Excel(name = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    private Map<String, Map<String, String>> textParam;\r\n\r\n\r\n    /**\r\n     * 鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦�乗r\n     */\r\n    @ApiModelProperty(value = \"鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鍗冲埢鍙戦�乗")\r\n    private Long sendType;\r\n\r\n    @ApiModelProperty(value = \"涓婂崍鏃堕棿\")\r\n    private String showTimeMorn;\r\n\r\n    @ApiModelProperty(value = \"涓崍鏃堕棿\")\r\n    private String showTimeNoon;\r\n\r\n    @ApiModelProperty(value = \"鏅氬崍鏃堕棿\")\r\n    private String showTimeNight;\r\n\r\n    @ApiModelProperty(value = \"灞曠ず鏃ユ湡\")\r\n    private String showDate;\r\n\r\n    /**\r\n     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\r\n     */\r\n    @Excel(name = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\")\r\n    @ApiModelProperty(value = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\")\r\n    private String serviceType;\r\n\r\n    @ApiModelProperty(value = \"寮�鍦虹櫧\")\r\n    private String kcb;\r\n\r\n    @ApiModelProperty(value = \"缁撴潫璇璡")\r\n    private String jsy;\r\n\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿闆嗗悎\")\r\n    private String leavehospitaldistrictcode;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽焅r\n     */\r\n    @ApiModelProperty(value = \"琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽� \")\r\n    @Excel(name = \" 琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽� \")\r\n    private String compensateDate;\r\n\r\n\r\n    @ApiModelProperty(value = \"闂嵎妯℃澘\")\r\n    private SvyTaskTemplateVO svyTaskTemplateVO;\r\n\r\n    @ApiModelProperty(value = \"璇煶妯℃澘\")\r\n    private IvrTaskTemplateVO ivrTaskTemplateVO;\r\n\r\n    @ApiModelProperty(value = \"鏄惁寰幆鎵ц鎮h�咃紙0:涓嶅惊鐜�           1锛氬惊鐜級\")\r\n    private Long patCycle = 0L;\r\n    /**\r\n     * 鏄惁鏈変笅涓换鍔★紝鐢ㄤ簬澶氫换鍔″叧鑱擻r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鏈変笅涓换鍔★紙0:鏃� 1锛氭湁锛塡")\r\n    @Excel(name = \"鏄惁鏈変笅涓换鍔★紙0:鏃� 1锛氭湁锛塡")\r\n    private String nexttaskflag;\r\n    /**\r\n     * 涓嬩竴涓换鍔d\r\n     */\r\n    @ApiModelProperty(value = \"涓嬩竴涓换鍔d\")\r\n    @Excel(name = \" 涓嬩竴涓换鍔d\")\r\n    private Long nexttaskid;\r\n    /**\r\n     * 涓嬩竴涓换鍔″悕绉癨r\n     */\r\n    @ApiModelProperty(value = \"涓嬩竴涓换鍔″悕绉癨")\r\n    @Excel(name = \" 涓嬩竴涓换鍔″悕绉癨")\r\n    private String nexttaskname;\r\n\r\n    /**\r\n     * 绉戝id\r\n     */\r\n    @ApiModelProperty(\"绉戝id\")\r\n    @Excel(name = \"绉戝id\")\r\n    private Long icd10id;\r\n\r\n    /**\r\n     * 鐤剧梾缂栫爜\r\n     */\r\n    @ApiModelProperty(\"鐤剧梾缂栫爜\")\r\n    @Excel(name = \"鐤剧梾缂栫爜\")\r\n    private String icd10code;\r\n\r\n    /**\r\n     * 鐤剧梾鍚嶇О\r\n     */\r\n    @ApiModelProperty(\"鐤剧梾鍚嶇О\")\r\n    @Excel(name = \"鐤剧梾鍚嶇О\")\r\n    private String icd10name;\r\n\r\n    /**\r\n     * 鎵嬫湳缂栫爜\r\n     */\r\n    @ApiModelProperty(\"鎵嬫湳缂栫爜\")\r\n    @Excel(name = \"鎵嬫湳缂栫爜\")\r\n    private String opcode;\r\n\r\n    /**\r\n     * 鎵嬫湳鍚嶇О\r\n     */\r\n    @ApiModelProperty(\"鎵嬫湳鍚嶇О\")\r\n    @Excel(name = \"鎵嬫湳鍚嶇О\")\r\n    private String opdesc;\r\n\r\n    /**\r\n     * 閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\r\n     */\r\n    @ApiModelProperty(\"閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\")\r\n    @Excel(name = \"閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\")\r\n    private String appltype;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬缂栫爜\")\r\n    private String visitDeptCode;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬鍚嶇О\")\r\n    private String visitDeptName;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java b/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java	(date 1758779854674)
-@@ -121,14 +121,27 @@
-      */
-     @Excel(name = "  ")
-     private Long fail;
--
-     /**
-      * 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤
-      */
--    @Excel(name = "  浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
--    @ApiModelProperty(value = " 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
-+    @Excel(name = "  浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
-+    @ApiModelProperty(value = " 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
-     private String preachform;
- 
-+    /**
-+     * 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤
-+     * [
-+     *     {
-+     *         "sort": 1,   //搴忓彿
-+     *         "preachform": "1",  //鍙戦�佹柟寮�
-+     *         "compensateTime": 2   //琛ュ伩鏃堕棿
-+     *     }
-+     * ]
-+     */
-+    @Excel(name = "  浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
-+    @ApiModelProperty(value = " 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
-+    private List<ServiceSubtaskPreachform> preachformList;
-+
- 
-     /**
-      *
-Index: ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.framework.interceptor;\r\n\r\n\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.apache.ibatis.executor.statement.StatementHandler;\r\nimport org.apache.ibatis.plugin.*;\r\nimport org.apache.ibatis.reflection.MetaObject;\r\nimport org.apache.ibatis.reflection.SystemMetaObject;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Component;\r\n\r\nimport java.sql.Connection;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Properties;\r\n\r\nimport static com.ruoyi.common.utils.SecurityUtils.getLoginUser;\r\n\r\n\r\n@Component\r\n@Intercepts({@Signature(type = StatementHandler.class, method = \"prepare\", args = {Connection.class, Integer.class})})\r\npublic class HospitalFilterInterceptor implements Interceptor {\r\n\r\n    @Value(\"${spring.profiles.active}\")\r\n    private String active;\r\n\r\n    @Override\r\n    public Object intercept(Invocation invocation) throws Throwable {\r\n        // 鑾峰彇 StatementHandler\r\n        StatementHandler statementHandler = (StatementHandler) invocation.getTarget();\r\n\r\n        // 瑙e寘浠g悊瀵硅薄锛岃幏鍙栫湡姝g殑鐩爣瀵硅薄\r\n        MetaObject metaObject = SystemMetaObject.forObject(statementHandler);\r\n        while (metaObject.hasGetter(\"h\")) {\r\n            Object target = metaObject.getValue(\"h\");\r\n            metaObject = SystemMetaObject.forObject(target);\r\n        }\r\n        while (metaObject.hasGetter(\"target\")) {\r\n            Object target = metaObject.getValue(\"target\");\r\n            metaObject = SystemMetaObject.forObject(target);\r\n        }\r\n\r\n        // 鑾峰彇鍘熷 SQL\r\n        String originalSql = (String) metaObject.getValue(\"delegate.boundSql.sql\");\r\n        //娌冲崡鐨勭壒娈婅姹傦紝涓嶈orgid\r\n        if (active.equals(\"hn\")) {\r\n            String s = removeOrgIdCondition(originalSql);\r\n            // 灏嗕慨鏀瑰悗鐨� SQL 鍐欏洖\r\n            metaObject.setValue(\"delegate.boundSql.sql\", s);\r\n            return invocation.proceed();\r\n        }\r\n\r\n        // 鑾峰彇褰撳墠 orgid\r\n        String orgid = null;\r\n        try {\r\n            LoginUser loginUser = getLoginUser();\r\n            if (!ObjectUtils.isEmpty(loginUser)) {\r\n                orgid = loginUser.getUser().getOrgid();\r\n            }\r\n        } catch (Exception e) {\r\n//            e.printStackTrace();\r\n        }\r\n        if (StringUtils.isEmpty(orgid)) {\r\n            return invocation.proceed();\r\n        }\r\n\r\n        // 淇敼 SQL锛屾坊鍔� orgid 鏉′欢\r\n        String modifiedSql = modifySqlWithOrgId(originalSql, orgid);\r\n\r\n        // 灏嗕慨鏀瑰悗鐨� SQL 鍐欏洖\r\n        metaObject.setValue(\"delegate.boundSql.sql\", modifiedSql);\r\n\r\n        // 鎵ц鍚庣画鎿嶄綔\r\n        return invocation.proceed();\r\n    }\r\n\r\n    private String removeOrgIdCondition(String sql) {\r\n        // 杞崲涓哄皬鍐欎究浜庡尮閰嶏紝浣嗕繚鐣欏師濮嬪ぇ灏忓啓\r\n        String lowerSql = sql.toLowerCase();\r\n\r\n        // 鏌ユ壘 WHERE 瀛愬彞鐨勪綅缃甛r\n        int whereIndex = lowerSql.indexOf(\"where\");\r\n        if (whereIndex == -1) {\r\n            return sql; // 娌℃湁 WHERE 瀛愬彞\r\n        }\r\n\r\n        // 鎻愬彇 WHERE 涔嬪悗鐨勯儴鍒哱r\n        String whereClause = sql.substring(whereIndex + 5);\r\n        String beforeWhere = sql.substring(0, whereIndex);\r\n\r\n        // 浣跨敤姝e垯琛ㄨ揪寮忓垎鍓叉潯浠禱r\n        String[] conditions = whereClause.split(\"(?i)\\\\s+(AND|OR)\\\\s+\");\r\n\r\n        // 杩囨护鎺夊寘鍚� orgid 鐨勬潯浠禱r\n        List<String> filteredConditions = new ArrayList<>();\r\n        for (String condition : conditions) {\r\n            if (!containsOrgId(condition)) {\r\n                filteredConditions.add(condition.trim());\r\n            }\r\n        }\r\n\r\n        // 閲嶆柊鏋勫缓 SQL\r\n        if (filteredConditions.isEmpty()) {\r\n            return beforeWhere.trim();\r\n        } else {\r\n            String newWhereClause = String.join(\" AND \", filteredConditions);\r\n            return beforeWhere + \"WHERE \" + newWhereClause;\r\n        }\r\n    }\r\n\r\n    private boolean containsOrgId(String condition) {\r\n        // 妫�鏌ユ潯浠舵槸鍚﹀寘鍚� orgid锛堣�冭檻鍒悕锛塡r\n        return condition.toLowerCase().matches(\".*\\\\b(\\\\w+\\\\.)?orgid\\\\s*[=<>].*\");\r\n    }\r\n\r\n\r\n    /**\r\n     * 淇敼 SQL锛屾敞鍏� orgid 鏉′欢\r\n     *\r\n     * @param originalSql 鍘熷 SQL\r\n     * @param orgid       褰撳墠鍖婚櫌 ID\r\n     * @return 淇敼鍚庣殑 SQL\r\n     */\r\n    private String modifySqlWithOrgId(String originalSql, String orgid) {\r\n        if (originalSql.contains(\"insert into\") || originalSql.contains(\"INSERT INTO\") || originalSql.contains(\"from sys_menu\") || originalSql.contains(\"sys_job\") || originalSql.contains(\"update sys_menu\") || originalSql.contains(\"information_schema.tables\") || originalSql.contains(\"information_schema.columns\") || originalSql.contains(\"gen_table\") || originalSql.toUpperCase().contains(\"ORGID IS NULL\") || originalSql.toUpperCase().contains(\"FROM CRYXX\") || originalSql.toUpperCase().contains(\"FROM MZXX\") || originalSql.toUpperCase().contains(\"FROM JBXX\") || originalSql.toUpperCase().contains(\"FROM BMXX\") || originalSql.toUpperCase().contains(\"FROM HZJBXX\") || originalSql.toUpperCase().contains(\"RENAME TABLE\") || originalSql.toUpperCase().contains(\"FROM YHYKSXX\") || originalSql.toUpperCase().contains(\"FROM YHYJSXX\") || originalSql.toUpperCase().contains(\"ALTER TABLE\") || originalSql.toUpperCase().contains(\"CREATE TABLE\")) {\r\n            return originalSql;\r\n        }\r\n        // 鎻愬彇 orgid 鐨� WHERE 瀛愬彞\r\n        String whereClause = \" orgid = '\" + orgid + \"'\";\r\n\r\n        // 姝e垯琛ㄨ揪寮忔煡鎵� FROM 鎴� JOIN 鐨勮〃瀹氫箟\r\n        String fromPattern = \"(?i)(FROM|JOIN)\\\\s+(\\\\w+)(?:\\\\s+(\\\\w+))?\";\r\n        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(fromPattern);\r\n        java.util.regex.Matcher matcher = pattern.matcher(originalSql);\r\n\r\n        String tableOrAlias = \"\"; // 淇濆瓨涓昏〃鍚嶆垨鍒悕\r\n        if (matcher.find()) {\r\n            // 浼樺厛鍖归厤绗竴涓〃鍚嶆垨鍒悕\r\n            tableOrAlias = matcher.group(3) != null && !matcher.group(3).equals(\"JOIN\") ? matcher.group(3) : matcher.group(2);\r\n        }\r\n\r\n        // 濡傛灉鎵惧埌琛ㄥ悕鎴栧埆鍚嶏紝涓� WHERE 瀛愬彞娣诲姞鍓嶇紑\r\n        if (!tableOrAlias.isEmpty()) {\r\n            whereClause = tableOrAlias.toUpperCase() + \".\" + whereClause;\r\n            if (whereClause.contains(\"WHERE. orgid\")) {\r\n                whereClause = whereClause.replaceAll(\"WHERE. orgid\", \"orgid\");\r\n            } else {\r\n                whereClause = whereClause.toLowerCase();\r\n            }\r\n        }\r\n\r\n        // 淇敼 SQL\r\n        if (originalSql.toUpperCase().contains(\"ORGID =\") || originalSql.toUpperCase().contains(\"ORGID=\") || originalSql.toUpperCase().contains(\"ORGID IN\")) {\r\n            return originalSql;\r\n        } else if (originalSql.toUpperCase().contains(\"WHERE\")) {\r\n            // 鍦ㄥ凡鏈� WHERE 鍚庢坊鍔� orgid 鏉′欢\r\n            if (originalSql.toUpperCase().contains(\"(SELECT\")) {\r\n                int i = originalSql.toUpperCase().lastIndexOf(\"WHERE\");\r\n                if (i != -1) { // 纭繚鎵惧埌浜嗗尮閰嶉」\r\n                    // 鍒嗗壊瀛楃涓瞈r\n                    String before = originalSql.substring(0, i);\r\n                    String after = originalSql.substring(i + \"WHERE\".length());\r\n                    // 閲嶆柊缁勫悎瀛楃涓瞈r\n                    String newString = before + \"WHERE \" + whereClause + \" AND \" + after;\r\n                    return newString;\r\n                }\r\n\r\n            }\r\n            return originalSql.replaceFirst(\"(?i)WHERE\", \"WHERE \" + whereClause + \" AND \");\r\n        } else {\r\n            // 濡傛灉娌℃湁 WHERE锛屾鏌ユ槸鍚︽湁 ORDER BY 鎴� LIMIT\r\n            int orderByIndex = originalSql.toUpperCase().indexOf(\"ORDER BY\");\r\n            int limitIndex = originalSql.toUpperCase().indexOf(\"LIMIT\");\r\n            int groupByIndex = originalSql.toUpperCase().indexOf(\"GROUP BY\");\r\n\r\n            // 濡傛灉瀛樺湪 ORDER BY 鎴� LIMIT锛屾彃鍏� orgid 鏉′欢\r\n            if (orderByIndex > 0 || limitIndex > 0 || groupByIndex > 0) {\r\n                // 纭繚鍦� ORDER BY 鎴� LIMIT 鍓嶆坊鍔� WHERE 瀛愬彞\r\n                // 纭畾鎻掑叆 orgid 鏉′欢鐨勪綅缃甛r\n                int insertPos = originalSql.length();  // 榛樿鍦� SQL 鏈熬\r\n\r\n                // 鎵惧埌鏈�鏃╁嚭鐜扮殑瀛愬彞浣嶇疆锛圤RDER BY, GROUP BY, LIMIT锛塡r\n                if (orderByIndex > 0) insertPos = Math.min(insertPos, orderByIndex);\r\n                if (groupByIndex > 0) insertPos = Math.min(insertPos, groupByIndex);\r\n                if (limitIndex > 0) insertPos = Math.min(insertPos, limitIndex);\r\n                String s = originalSql.substring(0, insertPos) + \" WHERE \" + whereClause + \" \" + originalSql.substring(insertPos);\r\n                if (s.contains(\"LIMIT. orgid\")) {\r\n                    s = s.replace(\"LIMIT. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"limit. orgid\")) {\r\n                    s = s.replace(\"limit. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"ORDER BY. orgid\")) {\r\n                    s = s.replace(\"ORDER BY. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"order by. orgid\")) {\r\n                    s = s.replace(\"order by. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"ORDER. orgid\")) {\r\n                    s = s.replace(\"ORDER. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"order. orgid\")) {\r\n                    s = s.replace(\"order. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"GROUP BY. orgid\")) {\r\n                    s = s.replace(\"GROUP BY. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"group by. orgid\")) {\r\n                    s = s.replace(\"group by. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"GROUP. orgid\")) {\r\n                    s = s.replace(\"GROUP. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"group. orgid\")) {\r\n                    s = s.replace(\"group. orgid\", \"orgid\");\r\n                }\r\n                return s;\r\n            } else {\r\n                // 濡傛灉娌℃湁 WHERE锛屼篃娌℃湁 ORDER BY 鎴� LIMIT锛岀洿鎺ュ姞 WHERE\r\n                return originalSql + \" WHERE \" + whereClause;\r\n            }\r\n        }\r\n    }\r\n\r\n    @Override\r\n    public Object plugin(Object target) {\r\n        // 鍖呰鐩爣瀵硅薄\r\n        return Plugin.wrap(target, this);\r\n    }\r\n\r\n    @Override\r\n    public void setProperties(Properties properties) {\r\n        // 鍙缃彃浠剁殑鍙傛暟锛堟殏鏃舵棤闇�璁剧疆锛塡r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java
---- a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java	(date 1758682819260)
-@@ -12,8 +12,6 @@
- import org.springframework.stereotype.Component;
- 
- import java.sql.Connection;
--import java.util.ArrayList;
--import java.util.List;
- import java.util.Properties;
- 
- import static com.ruoyi.common.utils.SecurityUtils.getLoginUser;
-@@ -44,13 +42,6 @@
- 
-         // 鑾峰彇鍘熷 SQL
-         String originalSql = (String) metaObject.getValue("delegate.boundSql.sql");
--        //娌冲崡鐨勭壒娈婅姹傦紝涓嶈orgid
--        if (active.equals("hn")) {
--            String s = removeOrgIdCondition(originalSql);
--            // 灏嗕慨鏀瑰悗鐨� SQL 鍐欏洖
--            metaObject.setValue("delegate.boundSql.sql", s);
--            return invocation.proceed();
--        }
- 
-         // 鑾峰彇褰撳墠 orgid
-         String orgid = null;
-@@ -62,7 +53,7 @@
-         } catch (Exception e) {
- //            e.printStackTrace();
-         }
--        if (StringUtils.isEmpty(orgid)) {
-+        if (StringUtils.isEmpty(orgid) || active.equals("hn")) {
-             return invocation.proceed();
-         }
- 
-@@ -76,39 +67,6 @@
-         return invocation.proceed();
-     }
- 
--    private String removeOrgIdCondition(String sql) {
--        // 杞崲涓哄皬鍐欎究浜庡尮閰嶏紝浣嗕繚鐣欏師濮嬪ぇ灏忓啓
--        String lowerSql = sql.toLowerCase();
--
--        // 鏌ユ壘 WHERE 瀛愬彞鐨勪綅缃�
--        int whereIndex = lowerSql.indexOf("where");
--        if (whereIndex == -1) {
--            return sql; // 娌℃湁 WHERE 瀛愬彞
--        }
--
--        // 鎻愬彇 WHERE 涔嬪悗鐨勯儴鍒�
--        String whereClause = sql.substring(whereIndex + 5);
--        String beforeWhere = sql.substring(0, whereIndex);
--
--        // 浣跨敤姝e垯琛ㄨ揪寮忓垎鍓叉潯浠�
--        String[] conditions = whereClause.split("(?i)\\s+(AND|OR)\\s+");
--
--        // 杩囨护鎺夊寘鍚� orgid 鐨勬潯浠�
--        List<String> filteredConditions = new ArrayList<>();
--        for (String condition : conditions) {
--            if (!containsOrgId(condition)) {
--                filteredConditions.add(condition.trim());
--            }
--        }
--
--        // 閲嶆柊鏋勫缓 SQL
--        if (filteredConditions.isEmpty()) {
--            return beforeWhere.trim();
--        } else {
--            String newWhereClause = String.join(" AND ", filteredConditions);
--            return beforeWhere + "WHERE " + newWhereClause;
--        }
--    }
- 
-     private boolean containsOrgId(String condition) {
-         // 妫�鏌ユ潯浠舵槸鍚﹀寘鍚� orgid锛堣�冭檻鍒悕锛�
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.system;\r\n\r\nimport com.ruoyi.common.annotation.IpWhitelist;\r\nimport com.ruoyi.common.constant.Constants;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysMenu;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.entity.SysUserDept;\r\nimport com.ruoyi.common.core.domain.model.LoginBody;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.SecurityUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.framework.web.service.SysLoginService;\r\nimport com.ruoyi.framework.web.service.SysPermissionService;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.ruoyi.system.service.ISysDeptService;\r\nimport com.ruoyi.system.service.ISysMenuService;\r\nimport com.smartor.mapper.SysUserDeptMapper;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.http.HttpStatus;\r\nimport org.springframework.web.bind.annotation.*;\r\nimport org.springframework.web.servlet.view.RedirectView;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.io.IOException;\r\nimport java.util.List;\r\nimport java.util.Set;\r\n\r\n/**\r\n * 鐧诲綍楠岃瘉\r\n *\r\n * @author ruoyi\r\n */\r\n@Slf4j\r\n@RestController\r\npublic class SysLoginController {\r\n    @Autowired\r\n    private SysLoginService loginService;\r\n\r\n    @Autowired\r\n    private ISysMenuService menuService;\r\n\r\n    @Autowired\r\n    private ISysDeptService sysDeptService;\r\n\r\n    @Autowired\r\n    private SysPermissionService permissionService;\r\n\r\n    @Autowired\r\n    private ISysConfigService sysConfigService;\r\n\r\n\r\n    @Value(\"${pri_key}\")\r\n    private String pri_key;\r\n\r\n    @Value(\"${isEncryp}\")\r\n    private Integer isEncryp;\r\n\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    /**\r\n     * 鐧诲綍鏂规硶\r\n     *\r\n     * @param loginBody 鐧诲綍淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @PostMapping(\"/login\")\r\n    public AjaxResult login(@RequestBody LoginBody loginBody) {\r\n        AjaxResult ajax = AjaxResult.success();\r\n        // 鐢熸垚浠ょ墝\r\n        String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid(), loginBody.getOrgid());\r\n        ajax.put(Constants.TOKEN, token);\r\n        return ajax;\r\n    }\r\n\r\n    /**\r\n     * 鍗曠偣鐧诲綍鏂规硶(闇�瑕侀厤缃甀P鐧藉悕鍗�)\r\n     * 闇�瑕佸湪sys_config琛ㄧ殑sys.ip.whitelis涓紝鍔犲叆IP鎵嶈兘璁块棶璇ユ柟娉昞r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    @IpWhitelist\r\n    @GetMapping(\"/SSOLogin\")\r\n    public RedirectView SSOLogin(@RequestParam String userName, @RequestParam String orgid, @RequestParam(required = false) String deptId) {\r\n        RedirectView redirectView = new RedirectView();\r\n        // 鐢熸垚浠ょ墝\r\n        if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(orgid)) {\r\n            throw new BaseException(\"鐢ㄦ埛鍚嶆垨缁勭粐鏈烘瀯鎴栭儴闂ㄤ笉鑳戒负绌篭");\r\n        }\r\n        if (isEncryp == 1) {\r\n            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n            userName = rsaPublicKeyExample.decryptedData(userName, pri_key);\r\n        }\r\n        String token = loginService.loginByUserName(userName + \"&\" + orgid + \"&\" + deptId);\r\n        if (StringUtils.isEmpty(token)) {\r\n            throw new BaseException(\"鐧婚檰澶辫触\");\r\n        }\r\n        String path = sysConfigService.selectConfigByKey(\"sys.qddz\");\r\n        if(StringUtils.isEmpty(path)){\r\n            throw new BaseException(\"璇烽厤缃墠绔湴鍧�\");\r\n        }\r\n        log.info(\"鍗曠偣鐧婚檰閲嶅畾鍚戝湴鍧�涓猴細{}\",path + \"/loginSSO?token=\" + token + \"&orgid=\" + orgid + \"&orgname=''\" + \"&ZuHuID=''&deptCode=''\");\r\n        redirectView.setUrl(path + \"/loginSSO?token=\" + token + \"&orgid=\" + orgid + \"&orgname=null\" + \"&ZuHuID=null&deptCode=null\");\r\n        redirectView.setStatusCode(HttpStatus.MOVED_PERMANENTLY);\r\n        return redirectView;\r\n    }\r\n\r\n\r\n    @GetMapping(\"/getToken\")\r\n    public void getToken(HttpServletResponse response) throws IOException {\r\n        // 鐢熸垚鎴栬幏鍙杢oken\r\n        String token = \"eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjRiZGRkMTI0LTViNWMtNDhmMC05YjNkLTA0YjFiMzU0Nzg5NSJ9.16hHNas7jXTlHVrnlZgAJ-YViD44YkKFuoxJxMPm5QLPeSHn3wRyd9xE0Bi7YMdO3zKcZNo6ef5diZvDWN7ImA\";\r\n        // 璁剧疆鍝嶅簲澶达紝鍓嶇鍙互浠庡搷搴斿ご鑾峰彇token\r\n        response.addHeader(\"Authorization\", \"Bearer \" + token);\r\n\r\n        // 濡傛灉闇�瑕佽繘琛岄〉闈㈣烦杞紝鍙互璁剧疆鐘舵�佺爜涓�302锛屽苟璁剧疆Location澶撮儴\r\n        response.setStatus(302);\r\n        response.setHeader(\"Location\", \"http://localhost:8099/tool/module/classifythreea\");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鐢ㄦ埛淇℃伅\r\n     *\r\n     * @return 鐢ㄦ埛淇℃伅\r\n     */\r\n    @GetMapping(\"getInfo\")\r\n    public AjaxResult getInfo() {\r\n        SysUser user = SecurityUtils.getLoginUser().getUser();\r\n        // 瑙掕壊闆嗗悎\r\n        Set<String> roles = permissionService.getRolePermission(user);\r\n        // 鏉冮檺闆嗗悎\r\n        Set<String> permissions = permissionService.getMenuPermission(user);\r\n        AjaxResult ajax = AjaxResult.success();\r\n        ajax.put(\"user\", user);\r\n        ajax.put(\"roles\", roles);\r\n        ajax.put(\"permissions\", permissions);\r\n        List<SysUserDept> sysUserDeptKSs = null;\r\n        List<SysUserDept> sysUserDeptBQs = null;\r\n        SysUserDept sysUserDept = new SysUserDept();\r\n        sysUserDept.setUserId(user.getUserId());\r\n        sysUserDept.setDeptType(\"1\");\r\n        sysUserDept.setOrgid(user.getOrgid());\r\n        sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        ajax.put(\"belongDepts\", sysUserDeptKSs);\r\n        sysUserDept.setDeptType(\"2\");\r\n        sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        ajax.put(\"belongWards\", sysUserDeptBQs);\r\n\r\n        return ajax;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇璺敱淇℃伅\r\n     *\r\n     * @return 璺敱淇℃伅\r\n     */\r\n    @GetMapping(\"getRouters\")\r\n    public AjaxResult getRouters() {\r\n        Long userId = SecurityUtils.getUserId();\r\n        log.info(\"----------getRouters鐨剈serId鍏ュ弬涓猴細{}\", userId);\r\n        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);\r\n        return AjaxResult.success(menuService.buildMenus(menus));\r\n    }\r\n\r\n    @GetMapping(\"/getDept/{orgid}\")\r\n    public AjaxResult getDept(@PathVariable String orgid) {\r\n        return AjaxResult.success(sysDeptService.selectDept(orgid));\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java	(date 1758682819373)
-@@ -1,13 +1,11 @@
- package com.ruoyi.web.controller.system;
- 
--import com.ruoyi.common.annotation.IpWhitelist;
- import com.ruoyi.common.constant.Constants;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.common.core.domain.entity.SysMenu;
- import com.ruoyi.common.core.domain.entity.SysUser;
- import com.ruoyi.common.core.domain.entity.SysUserDept;
- import com.ruoyi.common.core.domain.model.LoginBody;
--import com.ruoyi.common.core.domain.model.LoginUser;
- import com.ruoyi.common.exception.base.BaseException;
- import com.ruoyi.common.utils.RSAPublicKeyExample;
- import com.ruoyi.common.utils.SecurityUtils;
-@@ -18,6 +16,7 @@
- import com.ruoyi.system.service.ISysDeptService;
- import com.ruoyi.system.service.ISysMenuService;
- import com.smartor.mapper.SysUserDeptMapper;
-+import com.smartor.service.impl.ServiceSLTDHealthcareRecordServiceImpl;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
-@@ -27,7 +26,9 @@
- 
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
-+import java.util.HashMap;
- import java.util.List;
-+import java.util.Map;
- import java.util.Set;
- 
- /**
-@@ -60,6 +61,14 @@
-     @Value("${isEncryp}")
-     private Integer isEncryp;
- 
-+
-+    @Value("${sltd_pub_path}")
-+    private String sltdPubPath;
-+
-+
-+    @Value("${spring.profiles.active}")
-+    private String active;
-+
-     @Autowired
-     private SysUserDeptMapper sysUserDeptMapper;
- 
-@@ -81,31 +90,64 @@
-     /**
-      * 鍗曠偣鐧诲綍鏂规硶(闇�瑕侀厤缃甀P鐧藉悕鍗�)
-      * 闇�瑕佸湪sys_config琛ㄧ殑sys.ip.whitelis涓紝鍔犲叆IP鎵嶈兘璁块棶璇ユ柟娉�
-+     * <p>
-+     * 鍙傛暟鍚屾椂涓虹┖锛屼笉缁欐煡璇㈡暟鎹�
-+     * <p>
-+     * 銆愬叆鍙傝鍒欍��
-+     * 濡傛灉userName涓嶄负绌猴紝閭rgid涔熶笉鑳戒负绌�
-+     * 濡傛灉涓婇潰涓や釜涓虹┖锛岄偅token涓嶈兘涓虹┖
-      *
-      * @return 缁撴灉
-      */
--    @IpWhitelist
-+//    @IpWhitelist
-     @GetMapping("/SSOLogin")
--    public RedirectView SSOLogin(@RequestParam String userName, @RequestParam String orgid, @RequestParam(required = false) String deptId) {
-+    public RedirectView SSOLogin(@RequestParam(required = false) String userName, @RequestParam(required = false) String orgid, @RequestParam(required = false) String deptId, @RequestParam(required = false) String token) {
-+        if (StringUtils.isEmpty(userName) && StringUtils.isEmpty(token)) {
-+            throw new BaseException("鍙傛暟涓嶈兘涓虹┖");
-+        }
-+        log.info("--------杩涙柟娉曚簡鍚�?{}", token);
-+        // 閲嶅畾鍚戝湴鍧�瀵硅薄(閲嶅畾鍚戝湴鍧�
-         RedirectView redirectView = new RedirectView();
-+//        if (active.equals("sltd")) {
-+//            Map<String, String> headers = buildRequestHeaders();
-+//            Map<String, String> requestParams = new HashMap<>();
-+//            requestParams.put("token", token);
-+//            String reqData = HttpUtil.postFormRequest(sltdPubPath + "/checkSsoTokenId", requestParams, headers, null);
-+//            log.info("銆�-----杩斿洖鐨勭粨鏋滀负銆戯細{}", reqData);
-+//            if (StringUtils.isEmpty(reqData)) {
-+//                throw new BaseException("token楠岃瘉澶辫触");
-+//            }
-+//
-+//            Map<String, Object> map = JSONObject.parseObject(reqData, Map.class);
-+//            if (ObjectUtils.isEmpty(map) || (Integer) map.get("code") != 200) {
-+//                throw new BaseException("token楠岃瘉澶辫触");
-+//            }
-+//
-+//            Map<String, Object> data = (Map<String, Object>) map.get("data");
-+//            //鍛樺伐缂栫爜
-+//            userName = (String) data.get("accountNo");
-+//        }
-+        log.info("銆�-----------userName鐨勫�间负锛歿}銆�", userName);
-         // 鐢熸垚浠ょ墝
-         if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(orgid)) {
-             throw new BaseException("鐢ㄦ埛鍚嶆垨缁勭粐鏈烘瀯鎴栭儴闂ㄤ笉鑳戒负绌�");
-         }
--        if (isEncryp == 1) {
-+        if (isEncryp != null && isEncryp == 1) {
-             RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-             userName = rsaPublicKeyExample.decryptedData(userName, pri_key);
-         }
--        String token = loginService.loginByUserName(userName + "&" + orgid + "&" + deptId);
--        if (StringUtils.isEmpty(token)) {
-+
-+        String token2 = loginService.loginByUserName(userName + "&" + orgid + "&" + deptId);
-+        if (StringUtils.isEmpty(token2)) {
-             throw new BaseException("鐧婚檰澶辫触");
-         }
-+
-         String path = sysConfigService.selectConfigByKey("sys.qddz");
--        if(StringUtils.isEmpty(path)){
-+        if (StringUtils.isEmpty(path)) {
-             throw new BaseException("璇烽厤缃墠绔湴鍧�");
-         }
--        log.info("鍗曠偣鐧婚檰閲嶅畾鍚戝湴鍧�涓猴細{}",path + "/loginSSO?token=" + token + "&orgid=" + orgid + "&orgname=''" + "&ZuHuID=''&deptCode=''");
--        redirectView.setUrl(path + "/loginSSO?token=" + token + "&orgid=" + orgid + "&orgname=null" + "&ZuHuID=null&deptCode=null");
-+        log.info("鍗曠偣鐧婚檰閲嶅畾鍚戝湴鍧�涓猴細{}", path + "/loginSSO?token=" + token2 + "&orgid=" + orgid + "&orgname=''" + "&ZuHuID=''&deptCode=''");
-+        redirectView.setUrl(path + "/loginSSO?token=" + token2 + "&orgid=" + orgid + "&orgname=null" + "&ZuHuID=null&deptCode=null");
-         redirectView.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
-         return redirectView;
-     }
-@@ -171,4 +213,12 @@
-     public AjaxResult getDept(@PathVariable String orgid) {
-         return AjaxResult.success(sysDeptService.selectDept(orgid));
-     }
-+
-+
-+    private Map<String, String> buildRequestHeaders() {
-+        Map<String, String> headers = new HashMap<>();
-+//        headers.put("Content-Type", "application/json");
-+        headers.put("app-key", ServiceSLTDHealthcareRecordServiceImpl.APP_KEY);
-+        return headers;
-+    }
- }
-Index: smartor/src/main/java/com/smartor/domain/ServiceTask.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 璇煶浠诲姟瀵硅薄 ivr_task\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@ApiModel(value = \"ServiceTask\", description = \"浠诲姟瀵硅薄\")\r\n@Data\r\npublic class ServiceTask extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 涓婚敭\r\n     */\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 浠诲姟鍚嶇О\r\n     */\r\n    @Excel(name = \"浠诲姟鍚嶇О  \")\r\n    @ApiModelProperty(value = \"浠诲姟鍚嶇О\")\r\n    private String taskName;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"妯℃澘ID \")\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private Long templateid;\r\n\r\n    /**\r\n     * 妯℃澘搴撴ā鐗堝悕绉癨r\n     */\r\n    @Excel(name = \"妯℃澘搴撴ā鐗堝悕绉癨")\r\n    private String libtemplatename;\r\n\r\n    /**\r\n     * 妯℃澘搴撴ā鐗圛D\r\n     */\r\n    @Excel(name = \"妯℃澘搴撴ā鐗圛D\")\r\n    private String libtemplateid;\r\n\r\n    /**\r\n     * 妯℃澘鍚嶇О\r\n     */\r\n    @Excel(name = \"妯℃澘鍚嶇О\")\r\n    @ApiModelProperty(value = \"妯℃澘鍚嶇О\")\r\n    private String templatename;\r\n\r\n    /**\r\n     * 鏍囩淇℃伅\r\n     */\r\n    @Excel(name = \"鏍囩淇℃伅\")\r\n    @ApiModelProperty(value = \"鏍囩淇℃伅\")\r\n    private String labelinfo;\r\n\r\n//    /**\r\n//     * 鐘舵�乗r\n//     */\r\n//    @Excel(name = \"鐘舵�乗")\r\n//    @ApiModelProperty(value = \"鐘舵�乗")\r\n//    private Long state;\r\n\r\n    /**\r\n     * 鏁伴噺\r\n     */\r\n    @Excel(name = \"鏁伴噺\")\r\n    @ApiModelProperty(value = \"鏁伴噺\")\r\n    private Long count;\r\n\r\n    /**\r\n     * 鎵ц\r\n     */\r\n    @Excel(name = \"鎵ц\")\r\n    @ApiModelProperty(value = \"鎵ц\")\r\n    private Long executed;\r\n\r\n    /**\r\n     * 涓嶆墽琛孿r\n     */\r\n    @Excel(name = \"涓嶆墽琛孿")\r\n    @ApiModelProperty(value = \"涓嶆墽琛孿")\r\n    private Long unexecuted;\r\n\r\n    /**\r\n     * 鏄惁澶辫触\r\n     */\r\n    @Excel(name = \"鏄惁澶辫触\")\r\n    @ApiModelProperty(value = \"鏄惁澶辫触\")\r\n    private Long fail;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private String patientid;\r\n\r\n    /**\r\n     * 鍙戦�佸ぉ鏁癨r\n     */\r\n    @Excel(name = \"鍙戦�佸ぉ鏁癨")\r\n    @ApiModelProperty(value = \"鍙戦�佸ぉ鏁癨")\r\n    private Long sendDay;\r\n\r\n    /**\r\n     * 鎮h�呭鍚峔r\n     */\r\n    @Excel(name = \"鎮h�呭鍚峔")\r\n    @ApiModelProperty(value = \"鎮h�呭鍚峔")\r\n    private String patientname;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"娣诲姞鏃堕棿\")\r\n    private Date addtime;\r\n\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"寮�濮嬫椂闂碶")\r\n    private Date beginTime;\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"缁撴潫鏃堕棿\")\r\n    private Date endTime;\r\n\r\n    /**\r\n     * 瀹℃牳浜篿d\r\n     */\r\n    @Excel(name = \"瀹℃牳浜篿d\")\r\n    @ApiModelProperty(value = \"瀹℃牳浜篿d\")\r\n    private String checkuserid;\r\n\r\n    /**\r\n     * 瀹℃牳浜篭r\n     */\r\n    @Excel(name = \"瀹℃牳浜篭")\r\n    @ApiModelProperty(value = \"瀹℃牳浜篭")\r\n    private String checkusername;\r\n\r\n    /**\r\n     * 瀹℃牳浜烘椂闂碶r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"瀹℃牳浜烘椂闂碶")\r\n    private Date checktime;\r\n\r\n    /**\r\n     * 浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶  2锛岄棶鍗凤紱3锛岄�氱煡锛沑r\n     */\r\n    @Excel(name = \"浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶  2锛岄棶鍗凤紱3锛岄�氱煡锛沑")\r\n    @ApiModelProperty(value = \"浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶  2锛岄棶鍗凤紱3锛岄�氱煡锛沑")\r\n    private String type;\r\n\r\n    /**\r\n     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\r\n     */\r\n    @Excel(name = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\")\r\n    @ApiModelProperty(value = \"鏈嶅姟绫诲瀷 : 1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶梾闅忚\")\r\n    private String serviceType;\r\n\r\n    /**\r\n     * 绫诲瀷鍚嶇О\r\n     */\r\n    @Excel(name = \"绫诲瀷鍚嶇О\")\r\n    @ApiModelProperty(value = \"绫诲瀷鍚嶇О\")\r\n    private String typename;\r\n\r\n    /**\r\n     * 绫诲瀷鍚嶇О\r\n     */\r\n    @Excel(name = \"鍙戦�佹椂闂存\")\r\n    @ApiModelProperty(value = \"鍙戦�佹椂闂存\")\r\n    private String sendTimeSlot;\r\n\r\n//    /**\r\n//     * 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊\r\n//     */\r\n//    @Excel(name = \" 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 \")\r\n//    @ApiModelProperty(value = \"绉戝鍚嶇О\")\r\n//    private Long usebqsms;\r\n//\r\n//    /**\r\n//     * 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊\r\n//     */\r\n//    @Excel(name = \" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 \")\r\n//    @ApiModelProperty(value = \"0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 \")\r\n//    private Long usebhsms;\r\n//\r\n//    /**\r\n//     * 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊\r\n//     */\r\n//    @Excel(name = \" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊 \")\r\n//    @ApiModelProperty(value = \" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊 \")\r\n//    private Long usesendsms;\r\n\r\n    /**\r\n     * 閮ㄩ棬code\r\n     */\r\n    @Excel(name = \"閮ㄩ棬code\")\r\n    @ApiModelProperty(value = \"閮ㄩ棬code\")\r\n    private String deptcode;\r\n\r\n    /**\r\n     * 閮ㄩ棬鍚嶇О\r\n     */\r\n    @Excel(name = \"閮ㄩ棬鍚嶇О\")\r\n    @ApiModelProperty(value = \"閮ㄩ棬鍚嶇О\")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    @ApiModelProperty(value = \"鏈烘瀯ID \")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @Excel(name = \" 鐖禝D \")\r\n    @ApiModelProperty(value = \"鐖禝D \")\r\n    private Integer pid;\r\n\r\n    /**\r\n     * guid\r\n     */\r\n    @Excel(name = \" guid \")\r\n    @ApiModelProperty(value = \"guid \")\r\n    private String guid;\r\n\r\n    /**\r\n     * 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤\r\n     */\r\n    @Excel(name = \"  浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 \")\r\n    @ApiModelProperty(value = \" 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 \")\r\n    private String preachform;\r\n\r\n    /**\r\n     * 鍙戦�佺被鍨�: 1鎸囧畾鏃堕棿娈靛彂閫� 2鍗冲埢鍙戦�� 3鏃堕棿鐐筡r\n     */\r\n    @Excel(name = \" 鍙戦�佺被鍨�: 1鎸囧畾鏃堕棿娈靛彂閫� 2鍗冲埢鍙戦�� 3鏃堕棿鐐筡")\r\n    @ApiModelProperty(value = \"鍙戦�佺被鍨�: 1鎸囧畾鏃堕棿娈靛彂閫� 2鍗冲埢鍙戦�� 3鏃堕棿鐐筡")\r\n    private Long sendType;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬侊細  0  澶辫触   1鎴愬姛\r\n     */\r\n    @Excel(name = \" 鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 \")\r\n    @ApiModelProperty(value = \"鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 \")\r\n    private Long sendState;\r\n\r\n//    /**\r\n//     * 鏂囨湰鍙橀噺鍙傛暟\r\n//     */\r\n//    @Excel(name = \" 鏂囨湰鍙橀噺鍙傛暟 \")\r\n//    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟 \")\r\n//    private String param;\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @ApiModelProperty(\"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(\"pageSize\")\r\n    private Integer pageSize;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(\"鏄惁鏄暱鏈熶换鍔� 0锛氫笉鏄�    1锛氭槸\")\r\n    private Integer longTask;\r\n\r\n    /**\r\n     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡")\r\n    @ApiModelProperty(value = \"灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌 3.涓撶梾锛塡")\r\n    private String hospType;\r\n\r\n    /**\r\n     * 浠诲姟鎻忚堪\r\n     */\r\n    @Excel(name = \"浠诲姟鎻忚堪\")\r\n    @ApiModelProperty(value = \"浠诲姟鎻忚堪\")\r\n    private String taskDesc;\r\n\r\n    /**\r\n     * 鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1\r\n     */\r\n    @Excel(name = \"鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1\")\r\n    @ApiModelProperty(value = \"鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1\")\r\n    private Long stopState = 0L;\r\n\r\n    /**\r\n     * 鏂囨湰鍙橀噺鍙傛暟\r\n     */\r\n    @Excel(name = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    private String textParam;\r\n\r\n    @ApiModelProperty(value = \"涓婂崍鏃堕棿\")\r\n    private String showTimeMorn;\r\n\r\n    @ApiModelProperty(value = \"涓崍鏃堕棿\")\r\n    private String showTimeNoon;\r\n\r\n    @ApiModelProperty(value = \"鏅氬崍鏃堕棿\")\r\n    private String showTimeNight;\r\n\r\n    @ApiModelProperty(value = \"灞曠ず鏃ユ湡\")\r\n    private String showDate;\r\n\r\n    @ApiModelProperty(value = \"寮�鍦虹櫧\")\r\n    private String kcb;\r\n\r\n    @ApiModelProperty(value = \"缁撴潫璇璡")\r\n    private String jsy;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿\")\r\n    private String leavehospitaldistrictcode;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿闆嗗悎\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎\")\r\n    private List<String> leaveldeptcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽焅r\n     */\r\n    @ApiModelProperty(value = \"琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽� \")\r\n    @Excel(name = \" 琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽� \")\r\n    private String compensateDate;\r\n\r\n\r\n    /**\r\n     * 寮�濮嬪嚭闄㈡棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"寮�濮嬪嚭闄㈡棩鏈焅")\r\n    private Date startOutHospTime;\r\n\r\n    /**\r\n     * 缁撴潫鍑洪櫌鏃ユ湡\r\n     */\r\n    @ApiModelProperty(value = \"缁撴潫鍑洪櫌鏃ユ湡\")\r\n    private Date endOutHospTime;\r\n\r\n\r\n    @ApiModelProperty(value = \"鏄惁寰幆鎵ц鎮h�咃紙0:涓嶅惊鐜�           1锛氬惊鐜級\")\r\n    private Long patCycle;\r\n    /**\r\n     * 鏄惁鏈変笅涓换鍔★紝鐢ㄤ簬澶氫换鍔″叧鑱擻r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鏈変笅涓换鍔★紙0:鏃� 1锛氭湁锛塡")\r\n    @Excel(name = \"鏄惁鏈変笅涓换鍔★紙0:鏃� 1锛氭湁锛塡")\r\n    private String nexttaskflag;\r\n    /**\r\n     * 涓嬩竴涓换鍔d\r\n     */\r\n    @ApiModelProperty(value = \"涓嬩竴涓换鍔d\")\r\n    @Excel(name = \" 涓嬩竴涓换鍔d\")\r\n    private Long nexttaskid;\r\n    /**\r\n     * 涓嬩竴涓换鍔″悕绉癨r\n     */\r\n    @ApiModelProperty(value = \"涓嬩竴涓换鍔″悕绉癨")\r\n    @Excel(name = \" 涓嬩竴涓换鍔″悕绉癨")\r\n    private String nexttaskname;\r\n\r\n    /**\r\n     * 閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\r\n     */\r\n    @ApiModelProperty(value = \"閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\")\r\n    @Excel(name = \"閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\")\r\n    private String appltype;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceTask.java b/smartor/src/main/java/com/smartor/domain/ServiceTask.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceTask.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceTask.java	(date 1758629443627)
-@@ -172,10 +172,10 @@
-     private String type;
- 
-     /**
--     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)
-+     * "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿"
-      */
--    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)")
--    @ApiModelProperty(value = "鏈嶅姟绫诲瀷 : 1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶梾闅忚")
-+    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿 16璇鹃闅忚")
-+    @ApiModelProperty(value = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿 16璇鹃闅忚")
-     private String serviceType;
- 
-     /**
-@@ -312,7 +312,7 @@
-     /**
-      * pageSize
-      */
--    @ApiModelProperty("鏄惁鏄暱鏈熶换鍔� 0锛氫笉鏄�    1锛氭槸")
-+    @ApiModelProperty("鏄惁鏄暱鏈熶换鍔� 0锛氫复鏃朵换鍔�    1锛氶暱鏈熶换鍔�   2鍥哄畾浠诲姟   3寰幆浠诲姟")
-     private Integer longTask;
- 
-     /**
-Index: smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.SecurityUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.*;\r\nimport com.smartor.service.IPatMedInhospService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.time.Instant;\r\nimport java.time.temporal.ChronoUnit;\r\nimport java.util.*;\r\nimport java.util.stream.Collectors;\r\n\r\n/**\r\n * 鎮h�呬綇闄㈣褰昐ervice涓氬姟灞傚鐞哱r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\n@Slf4j\r\n@Service\r\npublic class PatMedInhospServiceImpl implements IPatMedInhospService {\r\n    @Autowired\r\n    private PatMedInhospMapper patMedInhospMapper;\r\n\r\n    @Autowired\r\n    private ServiceTaskdeptMapper serviceTaskdeptMapper;\r\n\r\n    @Autowired\r\n    private ServiceTaskdiagMapper serviceTaskdiagMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n    @Autowired\r\n    private PatArchiveImportMapper patArchiveImportMapper;\r\n    @Autowired\r\n    private ServiceTaskMapper serviceTaskMapper;\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    @Value(\"${visitHosp}\")\r\n    private Integer visitHosp;\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呬綇闄㈣褰昞r\n     *\r\n     * @param inhospid 鎮h�呬綇闄㈣褰曚富閿甛r\n     * @return 鎮h�呬綇闄㈣褰昞r\n     */\r\n    @Override\r\n    public PatMedInhosp selectPatMedInhospByInhospid(Long inhospid) {\r\n        return patMedInhospMapper.selectPatMedInhospByInhospid(inhospid);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呬綇闄㈣褰曞垪琛╘r\n     *\r\n     * @param patMedInhosp 鎮h�呬綇闄㈣褰昞r\n     * @return 鎮h�呬綇闄㈣褰昞r\n     */\r\n    @Override\r\n    public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp) {\r\n        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n        for (PatMedInhosp patMedInhosp1 : patMedInhospList) {\r\n            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n            patMedInhosp1.setTagname(tagname);\r\n        }\r\n        return patMedInhospList;\r\n    }\r\n\r\n    @Override\r\n    public Map<String, Integer> queryPersonCount(PatServiceCount patServiceCount) {\r\n        if (patServiceCount.getInterval() == 1) {\r\n            //鍛╘r\n        } else if (patServiceCount.getInterval() == 2) {\r\n            //鏈圽r\n        } else if (patServiceCount.getInterval() == 3) {\r\n            //骞碶r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ褰撳墠鐧婚檰浜鸿嚜宸憋紙鐥呭尯銆侀儴闂級鐨勬偅鑰呬綇闄㈣褰曞垪琛╘r\n     *\r\n     * @param patMedInhospVO\r\n     * @return\r\n     */\r\n    public List<PatMedInhosp> selectPatMedInhospListByCondition(PatMedInhospVO patMedInhospVO) {\r\n        return patMedInhospMapper.selectPatMedInhospListByCondition(patMedInhospVO);\r\n    }\r\n\r\n\r\n    @Override\r\n    public PatMedInhosp getDeptCodeByPatId(PatMedInhosp patMedInhosp) {\r\n        List<PatMedInhosp> patMedInhosps = selectPatMedInhospList(patMedInhosp);\r\n        if (!org.springframework.util.CollectionUtils.isEmpty(patMedInhosps)) {\r\n\r\n            if (patMedInhosp.getInhospstate().equals(\"0\")) {\r\n                //鍏堝幓鎺夋椂闂翠负绌虹殑\r\n                patMedInhosps.removeIf(PatMedInhosp -> PatMedInhosp.getStarttime() == null);\r\n                Collections.sort(patMedInhosps, Comparator.comparing(PatMedInhosp::getStarttime).reversed());\r\n            } else if (patMedInhosp.getInhospstate().equals(\"1\")) {\r\n                //鍏堝幓鎺夋椂闂翠负绌虹殑\r\n                patMedInhosps.removeIf(PatMedInhosp -> PatMedInhosp.getEndtime() == null);\r\n                Collections.sort(patMedInhosps, Comparator.comparing(PatMedInhosp::getEndtime).reversed());\r\n            }\r\n        }\r\n        if (patMedInhosps != null && patMedInhosps.size() > 0) return patMedInhosps.get(0);\r\n        else return null;\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鍑哄叆闄汉娆r\n     *\r\n     * @param patMedReq\r\n     * @return\r\n     */\r\n    @Override\r\n    public PatMedRes selectPatMedInhospListCount(PatMedReq patMedReq) {\r\n        PatMedRes patMedRes = null;\r\n        // 鑾峰彇褰撳墠鐧婚檰浜虹殑閮ㄩ棬鏉冮檺\r\n        if (org.springframework.util.CollectionUtils.isEmpty(patMedReq.getDeptcodeList())) {\r\n//            Long userId = SecurityUtils.getUserId();\r\n//            List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(userId);\r\n//            List<String> deptCode = new ArrayList<>();\r\n//            for (SysDept sysDept : sysDepts) {\r\n//                deptCode.add(sysDept.getDeptId().toString());\r\n//            }\r\n//            patMedReq.setDeptcodeList(deptCode);\r\n//            patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);\r\n        }\r\n        patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);\r\n        return patMedRes;\r\n    }\r\n\r\n    /**\r\n     * 鏂板鎮h�呬綇闄㈣褰昞r\n     *\r\n     * @param patMedInhosp 鎮h�呬綇闄㈣褰昞r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertPatMedInhosp(PatMedInhosp patMedInhosp) {\r\n        patMedInhosp.setCreateTime(DateUtils.getNowDate());\r\n        patMedInhosp.setUpdateTime(DateUtils.getNowDate());\r\n        return patMedInhospMapper.insertPatMedInhosp(patMedInhosp);\r\n    }\r\n\r\n    /**\r\n     * 淇敼鎮h�呬綇闄㈣褰昞r\n     *\r\n     * @param patMedInhosp 鎮h�呬綇闄㈣褰昞r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updatePatMedInhosp(PatMedInhosp patMedInhosp) {\r\n        patMedInhosp.setUpdateTime(DateUtils.getNowDate());\r\n        return patMedInhospMapper.updatePatMedInhosp(patMedInhosp);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鎮h�呬綇闄㈣褰昞r\n     *\r\n     * @param inhospids 闇�瑕佸垹闄ょ殑鎮h�呬綇闄㈣褰曚富閿甛r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deletePatMedInhospByInhospids(Long[] inhospids) {\r\n        return patMedInhospMapper.deletePatMedInhospByInhospids(inhospids);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鎮h�呬綇闄㈣褰曚俊鎭痋r\n     *\r\n     * @param inhospid 鎮h�呬綇闄㈣褰曚富閿甛r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deletePatMedInhospByInhospid(Long inhospid) {\r\n        return patMedInhospMapper.deletePatMedInhospByInhospid(inhospid);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鎮h�呬綇闄㈣褰曚俊鎭痋r\n     *\r\n     * @param inhospno 鎮h�呬綇闄㈢紪鐮乗r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deletePatMedInhospByInhospno(String inhospno) {\r\n        return patMedInhospMapper.deletePatMedInhospByInhospno(inhospno);\r\n    }\r\n\r\n    @Override\r\n    public int dealOutHospInfo() {\r\n\r\n        PatMedInhosp pmks = new PatMedInhosp();\r\n        //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁\r\n        pmks.setDeptcheckFlag(\"0\");\r\n        pmks.setInhospstate(\"1\");\r\n        pmks.setFuflag(\"1\");\r\n        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks);\r\n        log.info(\"dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌閮ㄩ棬鎮h�呬俊鎭細{}\", patMedInhosps);\r\n        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {\r\n            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n            patMedInhosp1.setTagname(tagname);\r\n        }\r\n\r\n        //绉戝\r\n        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {\r\n            //鑾峰彇鎮h�呬俊鎭痋r\n            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());\r\n            if (Objects.isNull(patArchive)) {\r\n                patMedInhosp1.setDeptcheckFlag(\"2\");\r\n                patMedInhosp1.setLongTaskReason(\"鎮h�呭熀鏈俊鎭负绌篭");\r\n                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n                continue;\r\n            }\r\n            try {\r\n                //鏍规嵁鎮h�呮墍鍦ㄧ瀹わ紝鑾峰彇璇ョ瀹ょ殑闀挎湡浠诲姟\r\n                ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n                serviceTaskdept.setLongtask(1L);\r\n                serviceTaskdept.setDeptCode(patMedInhosp1.getLeaveldeptcode());\r\n                serviceTaskdept.setDeptType(\"1\");\r\n                serviceTaskdept.setOrgid(patMedInhosp1.getOrgid());\r\n                List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);\r\n                //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛塡r\n                if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {\r\n                    PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());\r\n                    patMedInhosp1.setDeptcheckFlag(\"2\");\r\n                    patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + \"璇ユ偅鑰呮墍鍦ㄧ瀹ゆ湭閰嶇疆闀挎湡浠诲姟;\");\r\n                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n                } else {\r\n                    for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) {\r\n                        writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 1);\r\n                    }\r\n                    patMedInhosp1.setDeptcheckFlag(\"1\");\r\n                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n                }\r\n\r\n            } catch (Exception e) {\r\n                e.printStackTrace();\r\n                log.error(\"浜哄憳澶勭悊鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n            }\r\n        }\r\n\r\n        //鏍规嵁鎮h�呮墍鍦ㄧ梾鍖猴紝鑾峰彇璇ョ梾鍖虹殑闀挎湡浠诲姟,鏂板崕鍖婚櫌鍙互鍏堜笉鐢ㄦ牴鎹梾鍖哄拰鐤剧梾鏉ュ仛\r\n        if (visitHosp != 1) {\r\n\r\n            PatMedInhosp pmbq = new PatMedInhosp();\r\n            //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁\r\n            pmbq.setWardcheckFlag(\"0\");\r\n            pmbq.setInhospstate(\"1\");\r\n            pmbq.setFuflag(\"1\");\r\n            List<PatMedInhosp> patMedInhospBQs = patMedInhospMapper.selectPatMedInhospList(pmbq);\r\n            log.info(\"dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鐥呭尯鎮h�呬俊鎭細{}\", patMedInhosps);\r\n            for (PatMedInhosp patMedInhosp1 : patMedInhospBQs) {\r\n                String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n                patMedInhosp1.setTagname(tagname);\r\n            }\r\n\r\n            //鐥呭尯鏁版嵁澶勭悊\r\n            for (PatMedInhosp pmiBQ1 : patMedInhospBQs) {\r\n                //鑾峰彇鎮h�呬俊鎭痋r\n                PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(pmiBQ1.getPatid());\r\n                if (Objects.isNull(patArchive)) {\r\n                    pmiBQ1.setWardcheckFlag(\"2\");\r\n                    pmiBQ1.setLongTaskReason(\"鎮h�呭熀鏈俊鎭负绌篭");\r\n                    patMedInhospMapper.updatePatMedInhosp(pmiBQ1);\r\n                    continue;\r\n                }\r\n                try {\r\n                    ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n                    serviceTaskdept.setLongtask(1L);\r\n                    serviceTaskdept.setDeptCode(pmiBQ1.getLeavehospitaldistrictcode());\r\n                    serviceTaskdept.setDeptType(\"2\");\r\n                    serviceTaskdept.setOrgid(pmiBQ1.getOrgid());\r\n                    List<ServiceTaskdept> serviceTaskdeptList = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);\r\n                    //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛塡r\n                    if (CollectionUtils.isEmpty(serviceTaskdeptList) || serviceTaskdeptList.size() == 0) {\r\n                        PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiBQ1.getInhospid());\r\n                        pmiBQ1.setWardcheckFlag(\"2\");\r\n                        pmiBQ1.setLongTaskReason(patMedInhosp.getLongTaskReason() + \"璇ユ偅鑰呮墍鍦ㄧ梾鍖烘湭閰嶇疆闀挎湡浠诲姟;\");\r\n                        patMedInhospMapper.updatePatMedInhosp(pmiBQ1);\r\n                    } else {\r\n                        for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) {\r\n                            writeInSubTask(serviceTaskdept1.getTaskId(), true, pmiBQ1, patArchive, 2);\r\n                        }\r\n                        pmiBQ1.setWardcheckFlag(\"1\");\r\n                        patMedInhospMapper.updatePatMedInhosp(pmiBQ1);\r\n                    }\r\n\r\n\r\n                } catch (Exception e) {\r\n                    e.printStackTrace();\r\n                    log.error(\"浜哄憳澶勭悊鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n                }\r\n            }\r\n\r\n            PatMedInhosp pmjb = new PatMedInhosp();\r\n            //鑾峰彇闇�瑕佸嚭闄㈢柧鐥呴殢璁匡紝鏈鐞嗙殑鏁版嵁\r\n            pmjb.setDiagcheckFlag(\"0\");\r\n            pmjb.setInhospstate(\"1\");\r\n            pmjb.setFuflag(\"1\");\r\n            List<PatMedInhosp> patMedInhospJBs = patMedInhospMapper.selectPatMedInhospList(pmjb);\r\n            log.info(\"dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鐤剧梾鎮h�呬俊鎭細{}\", patMedInhosps);\r\n            for (PatMedInhosp patMedInhosp1 : patMedInhospJBs) {\r\n                String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n                patMedInhosp1.setTagname(tagname);\r\n            }\r\n\r\n            for (PatMedInhosp pmiJB : patMedInhospJBs) {\r\n                //鑾峰彇鎮h�呬俊鎭痋r\n                PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(pmiJB.getPatid());\r\n                if (Objects.isNull(patArchive)) {\r\n                    pmiJB.setDiagcheckFlag(\"2\");\r\n                    pmiJB.setLongTaskReason(\"鎮h�呭熀鏈俊鎭负绌篭");\r\n                    patMedInhospMapper.updatePatMedInhosp(pmiJB);\r\n                    continue;\r\n                }\r\n                try {\r\n                    if (StringUtils.isEmpty(pmiJB.getLeaveicd10code())) {\r\n                        continue;\r\n                    }\r\n                    // 鏍规嵁鎮h�呯殑鐤剧梾锛岃幏鍙栬鐤剧梾鐨勯暱鏈熶换鍔r\n                    ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();\r\n                    serviceTaskdiag.setLongtask(1L);\r\n                    serviceTaskdiag.setIcd10code(pmiJB.getLeaveicd10code());\r\n                    serviceTaskdiag.setOrgid(pmiJB.getOrgid());\r\n\r\n                    List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);\r\n                    //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛塡r\n                    if (CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) {\r\n                        PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid());\r\n                        pmiJB.setDiagcheckFlag(\"2\");\r\n                        pmiJB.setLongTaskReason(patMedInhosp.getLongTaskReason() + \"鎵�鎮g殑鐤剧梾鏈厤缃暱鏈熶换鍔�;\");\r\n                        patMedInhospMapper.updatePatMedInhosp(pmiJB);\r\n                    } else {\r\n                        for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) {\r\n                            writeInSubTask(serviceTaskdept1.getTaskId(), true, pmiJB, patArchive, 3);\r\n                        }\r\n                        pmiJB.setDiagcheckFlag(\"1\");\r\n                        patMedInhospMapper.updatePatMedInhosp(pmiJB);\r\n                    }\r\n\r\n                } catch (Exception e) {\r\n                    e.printStackTrace();\r\n                    log.error(\"浜哄憳澶勭悊鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n                }\r\n            }\r\n        }\r\n\r\n        //鑾峰彇鏈鐞嗗湪闄㈢殑鏁版嵁(濡傛灉鍒氬垰鍑洪櫌鐨勬偅鑰呮暟鎹殑鍑洪櫌鏃堕棿,鍦ㄤ笅闈㈡煡璇㈠嚭鐨勫叆闄㈡椂闂翠箣鍓�,閭d箣鍓嶇殑鍑洪櫌鎮h�呯殑鏁版嵁,涔熷緱鍋滄帀,鍥犱负鍙堝叆闄簡)\r\n        PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n        //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁\r\n        patMedInhosp.setDeptcheckFlag(\"0\");\r\n        patMedInhosp.setInhospstate(\"0\");\r\n        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n        if (CollectionUtils.isNotEmpty(patMedInhospList) && patMedInhospList.size() > 0) {\r\n            dealInHospInfo(patMedInhospList);\r\n        }\r\n        return 1;\r\n    }\r\n\r\n//\r\n//    @Override\r\n//    public int dealOutHospInfo() {\r\n//        PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n//        //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁\r\n//        patMedInhosp.setDeptcheckFlag(\"0\");\r\n//        patMedInhosp.setInhospstate(\"1\");\r\n//        patMedInhosp.setFuflag(\"1\");\r\n//        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n//        log.error(\"dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鎮h�呬俊鎭細{}\", patMedInhosps);\r\n//        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {\r\n//            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n//            patMedInhosp1.setTagname(tagname);\r\n//        }\r\n//\r\n//        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {\r\n//            //鍏堟牴鎹瀹ゅ幓service_check鏌ヨcheck_visit_flag鏄牴鎹�滅瀹も�濋殢璁匡紝杩樻槸鏍规嵁鈥滅涓�璇婃柇鈥濋殢璁縗r\n//            ServiceCheck serviceCheck = new ServiceCheck();\r\n//            serviceCheck.setDeptCode(patMedInhosp1.getDeptcode());\r\n//            serviceCheck.setOrgid(patMedInhosp1.getOrgid());\r\n//            List<ServiceCheck> serviceChecks = serviceCheckMapper.selectServiceCheckList(serviceCheck);\r\n//            //鑾峰彇鎮h�呬俊鎭痋r\n//            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());\r\n//            if (Objects.isNull(patArchive)) {\r\n//                patMedInhosp1.setDeptcheckFlag(\"2\");\r\n//                patMedInhosp1.setLongTaskReason(\"鎮h�呭熀鏈俊鎭负绌篭");\r\n//                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n//                continue;\r\n//            }\r\n//            try {\r\n//                if (CollectionUtils.isEmpty(serviceChecks) || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 1 || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 3) {\r\n//                    //鏍规嵁鎮h�呮墍鍦ㄧ瀹わ紝鑾峰彇璇ョ瀹ょ殑闀挎湡浠诲姟\r\n//                    ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n//                    serviceTaskdept.setLongtask(1L);\r\n//                    serviceTaskdept.setDeptCode(patMedInhosp1.getLeaveldeptcode());\r\n//                    serviceTaskdept.setServiceType(\"2\");\r\n//                    List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);\r\n//                    //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堟殏瀹氾紝灏嗗嚭鍏ラ櫌琛ㄧ殑check_flag璁剧疆涓�2  锛宭ong_task_reason 璁板綍鍘熷洜锛塡r\n//                    if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {\r\n//                        patMedInhosp1.setDeptcheckFlag(\"2\");\r\n//                        patMedInhosp1.setLongTaskReason(\"璇ユ偅鑰呮墍鍦ㄧ瀹わ紝鏈厤缃暱鏈熶换鍔�;\");\r\n//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n//                        continue;\r\n//                    } else if (serviceTaskdepts.size() > 1) {\r\n//                        //濡傛灉鏌ヨ鍑哄涓换鍔★紝閭e氨鍙栫涓�涓紝骞跺湪鎮h�呭娉ㄤ竴涓媆r\n//                        List<Long> tempList = serviceTaskdepts.stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());\r\n//                        patMedInhosp1.setLongTaskReason(\"璇ユ偅鑰呮墍鍦ㄧ瀹わ紝鏈夊涓嚭闄㈤殢璁块暱鏈熶换鍔�:\" + tempList);\r\n//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n//                        ServiceTaskdept serviceTaskdept1 = serviceTaskdepts.get(0);\r\n//                        serviceTaskdepts = new ArrayList<>();\r\n//                        serviceTaskdepts.add(serviceTaskdept1);\r\n//                    }\r\n//\r\n//                    writeInSubTask(serviceTaskdepts.get(0).getTaskId(), true, patMedInhosp1, patArchive);\r\n//                }\r\n//                if (serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 2 || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 3) {\r\n//                    //涓芥按闇�瑕佹牴鎹闄㈢柧鐥呭璇ョ梾浜虹敓鎴愪竴娆¢殢璁縗r\n//                    String[] split = patMedInhosp1.getIcd10code().split(\",\");\r\n//                    ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();\r\n//                    serviceTaskdiag.setLongtask(1L);\r\n//                    serviceTaskdiag.setIcd10code(split[0]);\r\n//                    serviceTaskdiag.setServiceType(\"2\");\r\n//                    List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);\r\n//                    PatMedInhosp patMedInhosp2 = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());\r\n//                    //濡傛灉鐤剧梾缂栫爜涓虹┖锛堟殏瀹氾紝灏嗗嚭鍏ラ櫌琛ㄧ殑check_flag璁剧疆涓�3  锛宭ong_task_reason 璁板綍鍘熷洜锛塡r\n//                    if (CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) {\r\n//                        patMedInhosp1.setDeptcheckFlag(\"3\");\r\n//                        patMedInhosp1.setLongTaskReason(patMedInhosp2.getLongTaskReason() + \"璇ユ偅鑰呯殑绗竴鐤剧梾缂栫爜锛屾湭閰嶇疆闀挎湡浠诲姟;\");\r\n//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n//                        continue;\r\n//                    } else if (serviceTaskdiags.size() > 1) {\r\n//                        //濡傛灉鏌ヨ鍑哄涓换鍔★紝閭e氨鍙栫涓�涓紝骞跺湪鎮h�呭娉ㄤ竴涓媆r\n//                        List<Long> tempList = serviceTaskdiags.stream().map(ServiceTaskdiag::getTaskId).collect(Collectors.toList());\r\n//                        patMedInhosp1.setLongTaskReason(patMedInhosp2.getLongTaskReason() + \"璇ユ偅鑰呯殑绗竴鐤剧梾缂栫爜锛屾湁澶氫釜鍑洪櫌闅忚闀挎湡浠诲姟:\" + tempList);\r\n//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n//                        ServiceTaskdiag serviceTaskdiag1 = serviceTaskdiags.get(0);\r\n//                        serviceTaskdiags = new ArrayList<>();\r\n//                        serviceTaskdiags.add(serviceTaskdiag1);\r\n//                    }\r\n//                    writeInSubTask(serviceTaskdiags.get(0).getTaskId(), false, patMedInhosp1, patArchive);\r\n//                }\r\n//\r\n//            } catch (Exception e) {\r\n//                e.printStackTrace();\r\n//                log.error(\"浜哄憳澶勭悊鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n//            }\r\n//        }\r\n//\r\n//        //鑾峰彇鏈鐞嗗湪闄㈢殑鏁版嵁(濡傛灉鍒氬垰鍑洪櫌鐨勬偅鑰呮暟鎹殑鍑洪櫌鏃堕棿,鍦ㄤ笅闈㈡煡璇㈠嚭鐨勫叆闄㈡椂闂翠箣鍓�,閭d箣鍓嶇殑鍑洪櫌鎮h�呯殑鏁版嵁,涔熷緱鍋滄帀,鍥犱负鍙堝叆闄簡)\r\n//        patMedInhosp.setDeptcheckFlag(\"0\");\r\n//        patMedInhosp.setInhospstate(\"0\");\r\n//        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n//        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {\r\n//            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n//            patMedInhosp1.setTagname(tagname);\r\n//        }\r\n//        if (CollectionUtils.isNotEmpty(patMedInhospList) && patMedInhospList.size() > 0) {\r\n//            dealInHospInfo(patMedInhospList);\r\n//        }\r\n//        return 1;\r\n//    }\r\n\r\n    /**\r\n     * 鑾峰彇鍑洪櫌锛屼綇闄紝闂ㄨ瘖鏈嶅姟浜烘\r\n     *\r\n     * @param patMedReq\r\n     * @return\r\n     */\r\n    @Override\r\n    public List<PatMedRes> getDeptRanking(PatMedReq patMedReq) {\r\n\r\n        return serviceSubtaskMapper.getDeptRanking(patMedReq);\r\n    }\r\n\r\n    @Override\r\n    public List<PatMedInhosp> getDocAndPat(PatMedInhosp patMedInhosp) {\r\n        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n        for (PatMedInhosp patMedInhosp1 : patMedInhospList) {\r\n            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n            patMedInhosp1.setTagname(tagname);\r\n        }\r\n        if (StringUtils.isNotEmpty(patMedInhosp.getPatname()) || StringUtils.isNotEmpty(patMedInhosp.getNurseName()) || StringUtils.isNotEmpty(patMedInhosp.getDrname())) {\r\n            //鑾峰彇澶栭儴瀵煎叆淇℃伅,骞跺皢澶栭儴鎮h�呮斁鍒皃atMedInhospList涓璡r\n            PatArchiveImport patArchiveImport = new PatArchiveImport();\r\n            if (StringUtils.isNotEmpty(patMedInhosp.getPatname())) {\r\n                patArchiveImport.setName(patMedInhosp.getPatname());\r\n            }\r\n            if (StringUtils.isNotEmpty(patMedInhosp.getNurseName()))\r\n                patArchiveImport.setCreateBy(patMedInhosp.getNurseName());\r\n            if (StringUtils.isNotEmpty(patMedInhosp.getDrname()))\r\n                patArchiveImport.setCreateBy(patMedInhosp.getDrname());\r\n            List<PatArchiveImport> patArchiveImports = patArchiveImportMapper.selectPatArchiveImportList(patArchiveImport);\r\n            if (CollectionUtils.isNotEmpty(patArchiveImports)) {\r\n                for (PatArchiveImport patArchiveImport1 : patArchiveImports) {\r\n                    PatMedInhosp patMedInhosp1 = new PatMedInhosp();\r\n                    patMedInhosp1.setPatname(patArchiveImport1.getName());\r\n                    patMedInhosp1.setSex(patArchiveImport1.getSex());\r\n                    patMedInhosp1.setNurseName(patArchiveImport1.getCreateBy());\r\n                    patMedInhosp1.setOutImport(1);\r\n                    patMedInhosp1.setTelcode(patArchiveImport1.getTelcode());\r\n                    patMedInhospList.add(patMedInhosp1);\r\n                }\r\n            }\r\n        }\r\n\r\n        return patMedInhospList;\r\n    }\r\n\r\n    private Date addDays(Date date, Integer days) {\r\n        if (days == null) {\r\n            days = 1;\r\n        }\r\n        Calendar calendar = Calendar.getInstance();\r\n        calendar.setTime(date);\r\n        calendar.add(Calendar.DAY_OF_MONTH, days);\r\n        return calendar.getTime();\r\n    }\r\n\r\n    //灏嗘偅鑰呮斁鍒皊ubtask涓璡r\n    private void writeInSubTask(Long taskid, Boolean check, PatMedInhosp patMedInhosp1, PatArchive patArchive, Integer type) {\r\n        String longTaskReason = patMedInhosp1.getLongTaskReason();\r\n        if (StringUtils.isEmpty(longTaskReason)) longTaskReason = \"\";\r\n        ServiceTask st = new ServiceTask();\r\n        st.setTaskid(taskid);\r\n        st.setSendState(2L);\r\n        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);\r\n        if (CollectionUtils.isEmpty(serviceTasks) && type == 1) {\r\n            log.info(\"璇ユ偅鑰呭嚭闄㈤殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}\", taskid);\r\n            patMedInhosp1.setDeptcheckFlag(\"2\");\r\n            patMedInhosp1.setLongTaskReason(longTaskReason + \" & 璇ユ偅鑰呯闄㈢瀹ら暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:\" + taskid);\r\n            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n            return;\r\n        } else if (CollectionUtils.isEmpty(serviceTasks) && type == 2) {\r\n            patMedInhosp1.setWardcheckFlag(\"2\");\r\n            patMedInhosp1.setLongTaskReason(longTaskReason + \" & 璇ユ偅鑰呯闄㈢梾鍖洪暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:\" + taskid);\r\n            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n            return;\r\n        } else if (CollectionUtils.isEmpty(serviceTasks) && type == 3) {\r\n            patMedInhosp1.setDiagcheckFlag(\"2\");\r\n            patMedInhosp1.setLongTaskReason(longTaskReason + \" & 璇ユ偅鑰呯柧鐥呴暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:\" + taskid);\r\n            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n            return;\r\n        }\r\n        ServiceTask serviceTask = serviceTasks.get(0);\r\n        //灏佽serviceSubtask\r\n        ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp1, patArchive);\r\n        if (type != 2) {\r\n            //绉戝鍜岀柧鐥� 閮界敤 绉戝濉厖\r\n            serviceSubtask.setVisitDeptCode(patMedInhosp1.getLeaveldeptcode());\r\n            serviceSubtask.setVisitDeptName(patMedInhosp1.getLeaveldeptname());\r\n        } else if (type == 2) {\r\n            serviceSubtask.setVisitDeptCode(patMedInhosp1.getLeavehospitaldistrictcode());\r\n            serviceSubtask.setVisitDeptName(patMedInhosp1.getLeavehospitaldistrictname());\r\n        }\r\n\r\n\r\n        Integer i = 0;\r\n        //鍏堝垽鏂竴涓嬶紝鏄惁闇�瑕佹牎楠孿r\n        if (check) {\r\n            //鍦ㄦ柊澧炰箣鍓嶏紝鍏堥�氳繃鎮h�匢D锛宻endstate=2鏌ヨ涓�涓嬶紝鍦ㄦ墍鏈夐暱鏈熶换鍔′腑锛屾槸涓嶆槸杩樻湁璇ユ偅鑰呭緟鎵ц鐨勪换鍔★紝鏈夌殑璇�,姣旇緝涔嬪墠鐨別ndtime鏄惁灏忎簬褰撳墠鐨別ndtaime,濡傛灉涔嬪墠鐨勫皬浜庣幇鍦ㄧ殑锛屽垯鐩存帴灏嗕箣鍓嶇殑鍋滄帀锛堝師鍥犲啀鍏ラ櫌锛塡r\n            ServiceSubtaskVO subtask = new ServiceSubtaskVO();\r\n            subtask.setPatid(patArchive.getId());\r\n            subtask.setSendstate(2L);\r\n            subtask.setTaskid(taskid);\r\n            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask);\r\n            log.info(\"璇ユ偅鑰呭緟鎵ц鐨勪换鍔�:{}\", selectServiceSubtaskList);\r\n            if (CollectionUtils.isNotEmpty(selectServiceSubtaskList) && selectServiceSubtaskList.size() > 0) {\r\n                for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {\r\n                    if (Objects.isNull(serviceSubtask1.getLongSendTime())) {\r\n                        //涓嶆槸闀挎湡浠诲姟锛屼笉澶勭悊\r\n                        continue;\r\n                    }\r\n                    //type = 1鎴�2 琛ㄧず 鈥濈瀹ゃ�佺梾鍖衡�淺r\n                    if (type == 1 || type == 2) {\r\n                        if (serviceSubtask1.getEndtime().before(serviceSubtask.getEndtime()) && serviceSubtask1.getServiceType().equals(\"2\")) {\r\n                            //濡傛灉褰撳墠寰幆鐨勫瓙浠诲姟鐨勫嚭闄㈡椂闂村湪鈥滃噯澶囨柊澧炵殑瀛愪换鍔♀�濈殑鍑洪櫌鏃堕棿涔嬪墠锛屽垯灏嗗惊鐜殑瀛愪换鍔″仠鎺塡r\n                            serviceSubtask1.setSendstate(4L);\r\n                            serviceSubtask1.setRemark(\"鎮h�呭啀鍏ラ櫌\");\r\n                            serviceSubtask1.setResult(\"error\");\r\n//                            serviceSubtask1.setFinishtime(new Date());\r\n                            serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy());\r\n                            serviceSubtask1.setUpdateTime(new Date());\r\n                            Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n                            if (aBoolean) i = 1;\r\n                        } else {\r\n                            //鐩稿弽,鍒欏皢褰撴湁鐨勬暟鎹仠鎺塡r\n                            serviceSubtask.setResult(\"error\");\r\n//                            serviceSubtask.setFinishtime(new Date());\r\n                            serviceSubtask.setSendstate(4L);\r\n                            serviceSubtask.setRemark(\"褰撳墠鎮h�呭嚭闄㈡椂闂村悗鏈夊緟鎵ц鐨勫嚭闄㈤殢璁块暱鏈熶换鍔");\r\n                            serviceSubtask.setCreateBy(serviceTask.getCreateBy());\r\n                            serviceSubtask.setCreateTime(new Date());\r\n                            i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n                        }\r\n                    } else if (type == 3) {\r\n                        //type=3 琛ㄧず鐤剧梾\r\n                        //灏嗕箣鍓嶇殑鍋滄帀\r\n                        serviceSubtask1.setSendstate(4L);\r\n                        serviceSubtask1.setRemark(\"鐤剧梾鎮h�呭啀鍏ラ櫌\");\r\n                        serviceSubtask1.setResult(\"error\");\r\n//                        serviceSubtask1.setFinishtime(new Date());\r\n                        serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy());\r\n                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n                        //閲嶆柊鏂板瀛愪换鍔r\n                        i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n\r\n                    }\r\n                }\r\n            } else {\r\n                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {\r\n                    serviceSubtask.setRemark(\"鎵嬫満鍙蜂负绌篭");\r\n                    serviceSubtask.setSendstate(4L);\r\n                    serviceSubtask.setResult(\"error\");\r\n//                    serviceSubtask.setFinishtime(new Date());\r\n                }\r\n                serviceSubtask.setCreateBy(serviceTask.getCreateBy());\r\n                serviceSubtask.setCreateTime(new Date());\r\n                i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n            }\r\n        } else {\r\n            if (StringUtils.isEmpty(serviceSubtask.getPhone())) {\r\n                serviceSubtask.setRemark(\"鎵嬫満鍙蜂负绌篭");\r\n                serviceSubtask.setSendstate(4L);\r\n                serviceSubtask.setResult(\"error\");\r\n//                serviceSubtask.setFinishtime(new Date());\r\n\r\n            }\r\n            serviceSubtask.setCreateBy(serviceTask.getCreateBy());\r\n            serviceSubtask.setCreateTime(new Date());\r\n            i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n        }\r\n        if (i == 1) {\r\n            //灏哻heck_flag鏀规垚1锛堝凡澶勭悊锛塡r\n            PatMedInhosp patMedInhosp2 = new PatMedInhosp();\r\n            patMedInhosp2.setInhospid(patMedInhosp1.getInhospid());\r\n            if (type == 1) patMedInhosp2.setDeptcheckFlag(\"1\");\r\n            if (type == 2) patMedInhosp2.setWardcheckFlag(\"1\");\r\n            if (type == 3) patMedInhosp2.setDiagcheckFlag(\"1\");\r\n\r\n            patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);\r\n        } else {\r\n            //鐢熸垚瀛愪换鍔″け璐ワ紝\r\n            log.info(\"鐢熸垚瀛愪换鍔″け璐erviceSubtask涓猴細{}\", serviceSubtask);\r\n            PatMedInhosp patMedInhosp2 = new PatMedInhosp();\r\n            patMedInhosp2.setInhospid(patMedInhosp1.getInhospid());\r\n            if (type == 1) patMedInhosp2.setDeptcheckFlag(\"2\");\r\n            if (type == 2) patMedInhosp2.setWardcheckFlag(\"2\");\r\n            if (type == 3) patMedInhosp2.setDiagcheckFlag(\"2\");\r\n            patMedInhosp2.setRemark(\"鐢熸垚瀛愪换鍔″け璐� \" + type);\r\n            patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);\r\n        }\r\n    }\r\n\r\n    //灏佽serviceSubtask\r\n    private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive) {\r\n        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);\r\n        serviceSubtask.setTaskid(serviceTask.getTaskid());\r\n        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))\r\n            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));\r\n        serviceSubtask.setNurseId(patMedInhosp1.getNurseId());\r\n        serviceSubtask.setNurseName(patMedInhosp1.getNurseName());\r\n        serviceSubtask.setInhospid(patMedInhosp1.getInhospid());\r\n        serviceSubtask.setDrcode(patMedInhosp1.getDrcode());\r\n        serviceSubtask.setDrname(patMedInhosp1.getDrname());\r\n        serviceSubtask.setDeptcode(patMedInhosp1.getLeaveldeptcode());\r\n        serviceSubtask.setDeptname(patMedInhosp1.getLeaveldeptname());\r\n        serviceSubtask.setLeaveicd10code(patMedInhosp1.getLeaveicd10code());\r\n        serviceSubtask.setLeavediagname(patMedInhosp1.getDiagname());\r\n        serviceSubtask.setTemplateid(serviceTask.getTemplateid());\r\n        serviceSubtask.setTemplatename(serviceTask.getTemplatename());\r\n        serviceSubtask.setPatid(patArchive.getId());\r\n        serviceSubtask.setSendname(patArchive.getName());\r\n        serviceSubtask.setSfzh(patArchive.getIdcardno());\r\n        serviceSubtask.setPhone(patArchive.getTelcode());\r\n        if (StringUtils.isBlank(patArchive.getTelcode())) serviceSubtask.setPhone(patArchive.getRelativetelcode());\r\n        serviceSubtask.setSex(patArchive.getSex());\r\n        serviceSubtask.setAge(patArchive.getAge());\r\n        serviceSubtask.setSendstate(2L);\r\n        serviceSubtask.setManagementDoctor(patMedInhosp1.getManagementDoctor());\r\n        serviceSubtask.setManagementDoctorCode(patMedInhosp1.getManagementDoctorCode());\r\n        serviceSubtask.setStarttime(patMedInhosp1.getStarttime());\r\n        serviceSubtask.setEndtime(patMedInhosp1.getEndtime());\r\n        serviceSubtask.setServiceType(serviceTask.getServiceType());\r\n        serviceSubtask.setPreachform(serviceTask.getPreachform());\r\n        serviceSubtask.setHospType(\"2\");\r\n        serviceSubtask.setCreateTime(new Date());\r\n        serviceSubtask.setUpdateTime(new Date());\r\n        serviceSubtask.setCreateBy(patMedInhosp1.getNurseName());\r\n        serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());\r\n        serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());\r\n        serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());\r\n        serviceSubtask.setUpdateTime(new Date());\r\n        //璁剧疆鍙戦�佹椂闂碶r\n        if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L);\r\n        Date newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue());\r\n        serviceSubtask.setLongSendTime(newDate);\r\n        serviceSubtask.setVisitTime(newDate);\r\n        //濡傛灉鏄�氱煡鐨勮瘽锛岄渶瑕佹彁鍓嶅嚑澶╁皢閫氳繃鐭俊鍙戝嚭鍘伙紙鍏蜂綋鍑犲ぉ锛岃繖涓彲浠ラ厤缃湪sys_conf琛ㄤ腑锛塡r\n        if (\"3\".equals(serviceTask.getType())) {\r\n            serviceSubtask.setVisitTime(minusDay(newDate, 2));\r\n        }\r\n\r\n\r\n        //鎮h�呭彂閫佹椂闂碶r\n        if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals(\"1\")) {\r\n            String remark = patArchive.getNotrequiredreason();\r\n            serviceSubtask.setRemark(remark);\r\n            serviceSubtask.setResult(\"error\");\r\n            //涓嶆墽琛孿r\n            serviceSubtask.setSendstate(4L);\r\n        }\r\n        return serviceSubtask;\r\n    }\r\n\r\n    /**\r\n     * 鍑忓幓鐩稿簲澶╂暟\r\n     *\r\n     * @param originalDate\r\n     * @param day\r\n     * @return\r\n     */\r\n    public Date minusDay(Date originalDate, Integer day) {\r\n        // 1. 灏� Date 杞崲涓� Instant\r\n        Instant instant = originalDate.toInstant();\r\n\r\n        // 2. 鍦� Instant 涓婂噺鍘�2澶‐r\n        Instant twoDaysAgoInstant = instant.minus(2, ChronoUnit.DAYS);\r\n\r\n        // 3. 灏嗚绠楀悗鐨� Instant 杞洖 Date\r\n        return Date.from(twoDaysAgoInstant);\r\n    }\r\n\r\n    //澶勭悊鍏ラ櫌淇℃伅\r\n    private void dealInHospInfo(List<PatMedInhosp> patMedInhospList) {\r\n        for (PatMedInhosp patMedInhosp1 : patMedInhospList) {\r\n            try {\r\n                //鑾峰彇褰撳墠鍏ラ櫌鎮h�呯殑寰呮墽琛岀殑鍑洪櫌瀛愪换鍔¢殢璁夸俊鎭痋r\n                ServiceSubtaskVO subtask = new ServiceSubtaskVO();\r\n                subtask.setPatid(patMedInhosp1.getPatid());\r\n                subtask.setSendstate(2L);\r\n                List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask);\r\n//                log.error(\"鍏ラ櫌鐨勬偅鑰呭緟鎵ц鐨勪换鍔�:{}\", selectServiceSubtaskList);\r\n                if (CollectionUtils.isNotEmpty(selectServiceSubtaskList) && selectServiceSubtaskList.size() > 0) {\r\n                    for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {\r\n                        if (Objects.isNull(serviceSubtask1.getLongSendTime())) {\r\n                            //涓嶆槸闀挎湡浠诲姟锛屼笉澶勭悊\r\n                            continue;\r\n                        }\r\n                        if (serviceSubtask1.getEndtime().before(patMedInhosp1.getStarttime())) {\r\n                            //濡傛灉褰撳墠寰幆鐨勫瓙浠诲姟鐨勫嚭闄㈡椂闂村湪鈥滃噯澶囨柊澧炵殑瀛愪换鍔♀�濈殑鍑洪櫌鏃堕棿涔嬪墠锛屽垯灏嗗惊鐜殑瀛愪换鍔″仠鎺塡r\n//                            log.error(\"鎮h�呭啀鍏ラ櫌鐨剆erviceSubtask1涓�:{}\", serviceSubtask1);\r\n                            serviceSubtask1.setSendstate(4L);\r\n                            serviceSubtask1.setRemark(\"鎮h�呭啀鍏ラ櫌\");\r\n                            serviceSubtask1.setResult(\"error\");\r\n//                            serviceSubtask1.setFinishtime(new Date());\r\n                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n                        }\r\n                    }\r\n                }\r\n                //灏嗘偅鍏ョ殑鍏ラ櫌鏁版嵁璁剧疆涓哄凡澶勭悊\r\n                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n            } catch (Exception e) {\r\n                log.error(\"鍏ラ櫌鏁版嵁淇℃伅鍑哄紓甯镐簡锛歿},{}\", patMedInhosp1, e.getMessage());\r\n            }\r\n        }\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java	(date 1758682819506)
-@@ -45,8 +45,6 @@
-     private ServiceTaskMapper serviceTaskMapper;
-     @Autowired
-     private ServiceSubtaskMapper serviceSubtaskMapper;
--    @Autowired
--    private SysUserDeptMapper sysUserDeptMapper;
- 
-     @Value("${visitHosp}")
-     private Integer visitHosp;
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport com.github.pagehelper.ISelect;\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.enums.PreachFormEnum;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.PageUtils;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.PatMedInhospMapper;\r\nimport com.smartor.mapper.PatMedOuthospMapper;\r\nimport com.smartor.service.IServiceSubtaskRecordService;\r\nimport com.smartor.service.IServiceSubtaskService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.web.bind.annotation.*;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥殢璁匡級Controller\r\n *\r\n * @author ruoyi\r\n * @date 2024-02-02\r\n */\r\n@Slf4j\r\n@Api(description = \"鍗曚竴浠诲姟锛堥殢璁垮鏁欙級\")\r\n@RestController\r\n@RequestMapping(\"/smartor/serviceSubtask\")\r\npublic class ServiceSubtaskController extends BaseController {\r\n    @Autowired\r\n    private IServiceSubtaskService serviceSubtaskService;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskRecordService serviceSubtaskRecordService;\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呴殢璁夸俊鎭痋r\n     */\r\n    @ApiOperation(\"鏌ヨ鎮h�呴殢璁夸俊鎭痋")\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:list')\")\r\n    @PostMapping(\"/patItem\")\r\n    public TableDataInfo patItem(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {\r\n        PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());\r\n        List<ServiceSubtask> serviceSubtaskList = null;\r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        serviceSubtaskVO.setOrgid(user.getOrgid());\r\n        if (serviceSubtaskVO != null) {\r\n            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);\r\n        }\r\n        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n            serviceSubtaskRecord.setOrgid(serviceSubtask.getOrgid());\r\n            if (ObjectUtils.isNotEmpty((serviceSubtask.getTaskid())))\r\n                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n            serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));\r\n        }\r\n        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);\r\n        map.put(\"serviceSubtaskList\", serviceSubtaskList);\r\n        List<Map<String, Object>> list = new ArrayList<>();\r\n        list.add(map);\r\n        //鑾峰彇total\r\n        long total = PageUtils.count(new ISelect() {\r\n            @Override\r\n            public void doSelect() {\r\n                serviceSubtaskVO.setPageNum(null);\r\n                serviceSubtaskVO.setPageSize(null);\r\n                serviceSubtaskService.patItem(serviceSubtaskVO);\r\n            }\r\n        });\r\n        return getDataTable2(total, list);\r\n//        return getDataTable(serviceSubtaskService.patItem(ivrTaskcall));\r\n    }\r\n\r\n\r\n    /**\r\n     * 瀵煎嚭鍗曚竴浠诲姟锛堥殢璁垮鏁欙級鍒楄〃\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:export')\")\r\n    @Log(title = \"鍗曚竴浠诲姟锛堥殢璁垮鏁欙級\", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/patItemExport\")\r\n    public void patItemExport(HttpServletResponse response, ServiceSubtaskVO serviceSubtaskVO) {\r\n        List<ServiceSubtask> serviceSubtaskList = null;\r\n        if (serviceSubtaskVO != null) {\r\n            if (serviceSubtaskVO.getPageNum() != null && serviceSubtaskVO.getPageSize() != null)\r\n                PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());\r\n            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);\r\n        }\r\n        List<ServiceSubtaskExprot> serviceSubtaskExprots = null;\r\n        if (!CollectionUtils.isEmpty(serviceSubtaskList)) {\r\n            serviceSubtaskExprots = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExprot.class);\r\n            for (ServiceSubtaskExprot serviceSubtaskExprot : serviceSubtaskExprots) {\r\n                String pf = PreachFormEnum.getDescByCode(serviceSubtaskExprot.getPreachform());\r\n                serviceSubtaskExprot.setPreachform(pf);\r\n            }\r\n\r\n        }\r\n\r\n\r\n        ExcelUtil<ServiceSubtaskExprot> util = new ExcelUtil<ServiceSubtaskExprot>(ServiceSubtaskExprot.class);\r\n        util.exportExcel(response, serviceSubtaskExprots, \"鎮h�呴殢璁夸俊鎭〃鍗昞");\r\n    }\r\n\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呴殢璁夸俊鎭痋r\n     */\r\n    @ApiOperation(\"鏌ヨ鎮h�呴殢璁夸俊鎭痋")\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:list')\")\r\n    @PostMapping(\"/patItemByCondition\")\r\n    public TableDataInfo patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {\r\n        List<ServiceSubtask> serviceSubtaskList = null;\r\n        if (serviceSubtaskVO != null) {\r\n            PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());\r\n            serviceSubtaskList = serviceSubtaskService.patItem2(serviceSubtaskVO);\r\n        }\r\n        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n            serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));\r\n        }\r\n        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);\r\n        map.put(\"serviceSubtaskList\", serviceSubtaskList);\r\n        List<Map<String, Object>> list = new ArrayList<>();\r\n        list.add(map);\r\n        //鑾峰彇total\r\n        long total = PageUtils.count(new ISelect() {\r\n            @Override\r\n            public void doSelect() {\r\n                serviceSubtaskVO.setPageNum(null);\r\n                serviceSubtaskVO.setPageSize(null);\r\n                serviceSubtaskService.patItem2(serviceSubtaskVO);\r\n            }\r\n        });\r\n        return getDataTable2(total, list);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎嚭鍗曚竴浠诲姟锛堥殢璁垮鏁欙級鍒楄〃\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:export')\")\r\n    @Log(title = \"鍗曚竴浠诲姟锛堥殢璁垮鏁欙級\", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, ServiceSubtask serviceSubtask) {\r\n        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);\r\n        List<ServiceSubtask> list = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO);\r\n        ExcelUtil<ServiceSubtask> util = new ExcelUtil<ServiceSubtask>(ServiceSubtask.class);\r\n        util.exportExcel(response, list, \"鍗曚竴浠诲姟锛堥殢璁匡級鏁版嵁\");\r\n    }\r\n\r\n\r\n    /**\r\n     * 鍐嶆闅忚鏁版嵁鏌ヨ\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:export')\")\r\n    @Log(title = \"鍐嶆闅忚鏁版嵁鏌ヨ\", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/querySubtaskListAgain\")\r\n    public TableDataInfo querySubtaskListAgain(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {\r\n        PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());\r\n        serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskVO);\r\n        return getDataTable(serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskVO));\r\n    }\r\n\r\n\r\n    /**\r\n     * 鑾峰彇鍗曚竴浠诲姟锛堥殢璁匡級璇︾粏淇℃伅\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:query')\")\r\n    @GetMapping(value = \"/getInfo/{id}\")\r\n    public AjaxResult getInfo(@PathVariable(\"id\") Long id) {\r\n        return success(serviceSubtaskService.selectServiceSubtaskById(id));\r\n    }\r\n\r\n    /**\r\n     * 鏂板鎴栦慨鏀瑰垹闄ゅ崟涓�浠诲姟\r\n     */\r\n    @ApiOperation(\"鏂板鎴栦慨鏀瑰垹闄ゅ崟涓�浠诲姟\")\r\n    //@PreAuthorize(\"@ss.hasPermi('system:task:add')\")\r\n    @Log(title = \"鍗曚竴浠诲姟锛堥殢璁匡級\", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/insertOrUpdateTask\")\r\n    public AjaxResult insertOrUpdateHeTask(@RequestBody ServiceTaskVO ivrTaskVO) {\r\n        log.info(\"insertOrUpdateHeTask鐨勫叆鍙備负锛歿}\", ivrTaskVO);\r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        ivrTaskVO.setCreateBy(user.getNickName());\r\n        ivrTaskVO.setUpdateBy(user.getNickName());\r\n        ivrTaskVO.setOrgid(user.getOrgid());\r\n        return success(serviceSubtaskService.insertOrUpdateTask(ivrTaskVO));\r\n    }\r\n\r\n    @ApiOperation(\"淇敼瀛愪换鍔")\r\n    @PostMapping(\"/update\")\r\n    public AjaxResult update(@RequestBody ServiceSubtask serviceSubtask) {\r\n        serviceSubtask.setUpdateBy(getLoginUser().getUser().getNickName());\r\n        return toAjax(serviceSubtaskService.updateServiceSubtask(serviceSubtask));\r\n    }\r\n\r\n    @ApiOperation(\"鏂板瀛愪换鍔")\r\n    @PostMapping(\"/addSubTask\")\r\n    public AjaxResult addSubTask(@RequestBody ServiceSubtask serviceSubtask) {\r\n        SysUser user = getLoginUser().getUser();\r\n        if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setOrgid(user.getOrgid());\r\n        return toAjax(serviceSubtaskService.insertServiceSubtask(serviceSubtask));\r\n    }\r\n\r\n    @ApiOperation(\"鎮h�呭啀娆¢殢璁縗")\r\n    @PostMapping(\"/addSubTaskAgain\")\r\n    public AjaxResult addSubTaskAgain(@RequestBody ServiceSubtask serviceSubtask) {\r\n        SysUser user = getLoginUser().getUser();\r\n        if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setOrgid(user.getOrgid());\r\n        return success(serviceSubtaskService.addSubTaskAgain(serviceSubtask));\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅\r\n     */\r\n    @ApiOperation(\"鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅\")\r\n    @PostMapping(\"/queryTaskByCondition\")\r\n    public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO ivrTaskcallVO) {\r\n        //鏍规嵁鍏ュ弬鏌ヨ淇℃伅\r\n        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, ServiceSubtask.class);\r\n        ServiceTaskVO ivrTaskVO = serviceSubtaskService.queryTaskByCondition(serviceSubtask);\r\n        return success(ivrTaskVO);\r\n    }\r\n\r\n    /**\r\n     * 鐢佃瘽鍥炶皟浠诲姟(涓婃捣)\r\n     */\r\n    @ApiOperation(\"鐢佃瘽鍥炶皟浠诲姟\")\r\n    @PostMapping(\"/phoneCallBack\")\r\n    public AjaxResult phoneCallBack(@RequestBody PhoneCallBackVO phoneCallBackVO) {\r\n        serviceSubtaskService.phoneCallBack(phoneCallBackVO);\r\n        return success();\r\n    }\r\n\r\n    @ApiOperation(\"鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划)\")\r\n    @PostMapping(\"/phoneCallBackYQ\")\r\n    public PhoneCallBackYQVO phoneCallBackYQ(@RequestBody PhoneCallReqYQVO phoneCallReqYQVO) {\r\n        log.info(\"鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划) 锛焮}\", phoneCallReqYQVO);\r\n//        SysUser user = getLoginUser().getUser();\r\n//        phoneCallReqYQVO.setOrgid(user.getOrgid());\r\n        PhoneCallBackYQVO phoneCallBackYQVO = serviceSubtaskService.phoneCallBackYQ(phoneCallReqYQVO);\r\n        return phoneCallBackYQVO;\r\n    }\r\n\r\n    /**\r\n     * 鐢佃瘽浠诲姟鎷夊彇(闆ㄧ划)\r\n     */\r\n    @ApiOperation(\"鐢佃瘽浠诲姟鎷夊彇(闆ㄧ划)\")\r\n    @PostMapping(\"/taskPull\")\r\n    public List<PullTaskVO> taskPull() {\r\n        log.info(\"鐢佃瘽浠诲姟鎷夊彇(闆ㄧ划)\");\r\n        List<PullTaskVO> pullTaskVOList = serviceSubtaskService.taskPull();\r\n        log.info(\"鐢佃瘽浠诲姟鎷夊彇鏁版嵁(闆ㄧ划):{}\", pullTaskVOList);\r\n        return pullTaskVOList;\r\n    }\r\n\r\n    /**\r\n     * 鎮h�呴棶棰樼粨鏋滆褰昞r\n     */\r\n    @ApiOperation(\"鎮h�呴棶棰樼粨鏋滆褰曪紙鐢佃瘽锛塡")\r\n    @PostMapping(\"/saveQuestionAnswerPhone\")\r\n    public AjaxResult saveQuestionAnswerPhone(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) {\r\n//        SysUser user = getLoginUser().getUser();\r\n//        serviceSubTaskDetailReq.setOrgid(user.getOrgid());\r\n        return toAjax(serviceSubtaskService.saveQuestionAnswerPhone(serviceSubTaskDetailReq));\r\n    }\r\n\r\n    /**\r\n     * 閫氳瘽璁板綍鍥炶皟\r\n     */\r\n    @ApiOperation(\"閫氳瘽璁板綍鍥炶皟(涓婃捣)\")\r\n    @PostMapping(\"/recordAcceptshanghai\")\r\n    public AjaxResult recordAccepshanghait(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) {\r\n        return toAjax(serviceSubtaskService.saveQuestionAnswerPhone(serviceSubTaskDetailReq));\r\n    }\r\n\r\n    /**\r\n     * 閫氳瘽璁板綍鍥炶皟\r\n     */\r\n    @ApiOperation(\"閫氳瘽璁板綍鍥炶皟(闆ㄧ划)\")\r\n    @PostMapping(\"/recordAccept\")\r\n    public AjaxResult recordAccept(@RequestBody PhoneCallRecordVO phoneCallRecordVO) {\r\n        log.info(\"閫氳瘽璁板綍鍥炶皟(闆ㄧ划):{}\", phoneCallRecordVO);\r\n        serviceSubtaskService.recordAccept(phoneCallRecordVO);\r\n        return success();\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇姣忎釜鏈堢殑闅忚銆佸璇婇噺\r\n     */\r\n    @ApiOperation(\"鑾峰彇姣忎釜鏈堢殑闅忚銆佸璇婇噺\")\r\n    @PostMapping(\"/getSfFzInfoEveryMonth\")\r\n    public TableDataInfo getSfFzInfoEveryMonth(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        return getDataTable(serviceSubtaskService.getSfFzInfoEveryMonth(serviceSubtaskCountReq));\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇闅忚缁熻姣斾緥\r\n     */\r\n    @ApiOperation(\"鑾峰彇闅忚缁熻姣斾緥\")\r\n    @PostMapping(\"/getSfStatistics\")\r\n    public AjaxResult getSfStatistics(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {\r\n            return error(\"鏈嶅姟绫诲瀷涓嶈兘涓虹┖\");\r\n        }\r\n        return success(serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq));\r\n    }\r\n\r\n    /**\r\n     * 闅忚缁熻瀵煎嚭\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:export')\")\r\n    @Log(title = \"闅忚缁熻瀵煎嚭锛塡", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/getSfStatisticsExport\")\r\n    public void export(HttpServletResponse response, ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        List<ServiceSubtaskStatistic> sfStatistics = serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq);\r\n        ExcelUtil<ServiceSubtaskStatistic> util = new ExcelUtil<ServiceSubtaskStatistic>(ServiceSubtaskStatistic.class);\r\n        util.exportExcel(response, sfStatistics, \"闅忚缁熻瀵煎嚭\");\r\n    }\r\n\r\n    /**\r\n     * 闅忚缁熻瀵煎嚭\r\n     */\r\n    @ApiOperation(\"鏈嶅姟缁熻鏌ヨ-鎸夋椂闂寸淮搴︾粺璁″嚭闄�/闂ㄨ瘖闅忚鏁版嵁\")\r\n    @PostMapping(\"/getServiceStatistics\")\r\n    public AjaxResult getServiceStatistics(@RequestBody ServiceStatisticsRequest serviceStatisticsRequest) {\r\n        SysUser user = getLoginUser().getUser();\r\n        serviceStatisticsRequest.setOrgid(user.getOrgid());\r\n        List<ServiceStatisticsResponse> serviceStatistics = serviceSubtaskService.getServiceStatistics(serviceStatisticsRequest);\r\n        return success(serviceStatistics);\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java	(date 1758629443643)
-@@ -85,7 +85,6 @@
-             }
-         });
-         return getDataTable2(total, list);
--//        return getDataTable(serviceSubtaskService.patItem(ivrTaskcall));
-     }
- 
- 
-@@ -111,8 +110,6 @@
-             }
- 
-         }
--
--
-         ExcelUtil<ServiceSubtaskExprot> util = new ExcelUtil<ServiceSubtaskExprot>(ServiceSubtaskExprot.class);
-         util.exportExcel(response, serviceSubtaskExprots, "鎮h�呴殢璁夸俊鎭〃鍗�");
-     }
-@@ -254,8 +251,6 @@
-     @PostMapping("/phoneCallBackYQ")
-     public PhoneCallBackYQVO phoneCallBackYQ(@RequestBody PhoneCallReqYQVO phoneCallReqYQVO) {
-         log.info("鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划) 锛焮}", phoneCallReqYQVO);
--//        SysUser user = getLoginUser().getUser();
--//        phoneCallReqYQVO.setOrgid(user.getOrgid());
-         PhoneCallBackYQVO phoneCallBackYQVO = serviceSubtaskService.phoneCallBackYQ(phoneCallReqYQVO);
-         return phoneCallBackYQVO;
-     }
-Index: smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\n/**\r\n * 璇煶浠诲姟瀵硅薄 service_task\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@ApiModel(value = \"ServiceTaskScriptQues\", description = \"浠诲姟瀵硅薄\")\r\n@Data\r\npublic class ServiceTaskScriptQues {\r\n\r\n    /**\r\n     * taskid\r\n     */\r\n    @ApiModelProperty(value = \"taskid\")\r\n    private String param1;\r\n\r\n    /**\r\n     * patid\r\n     */\r\n    @Excel(name = \"patid  \")\r\n    @ApiModelProperty(value = \"patid\")\r\n    private String param2;\r\n\r\n    /**\r\n     * patfrom\r\n     */\r\n    @Excel(name = \"patfrom  \")\r\n    @ApiModelProperty(value = \"patfrom\")\r\n    private String patfrom = \"0\";\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java b/smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java	(date 1758682819673)
-@@ -22,12 +22,29 @@
-     private String param1;
- 
-     /**
--     * patid
-+     * patid 鎴� 娴佹按鍙�
-+     * 璇婄枟璁板綍鍙�
-      */
--    @Excel(name = "patid  ")
--    @ApiModelProperty(value = "patid")
-+    @Excel(name = "patid 鎴�  浣忛櫌娴佹按鍙� ")
-+    @ApiModelProperty(value = "patid 鎴� 浣忛櫌娴佹按鍙�")
-     private String param2;
- 
-+    /**
-+     * patid 鎴� 娴佹按鍙�
-+     * 璇婄枟璁板綍鍙�
-+     */
-+    @Excel(name = "闂ㄨ瘖娴佹按鍙�  ")
-+    @ApiModelProperty(value = "闂ㄨ瘖娴佹按鍙�")
-+    private String param3;
-+
-+    /**
-+     * 鎶曡瘔鎮h�呯紪鍙�
-+     * 鎶曡瘔鎮h�呯紪鍙�
-+     */
-+    @Excel(name = "鎶曡瘔鎮h�呯紪鍙� patientId ")
-+    @ApiModelProperty(value = "鎶曡瘔鎮h�呯紪鍙� patientId")
-+    private String param4;
-+
-     /**
-      * patfrom
-      */
-Index: smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.mapper;\r\n\r\nimport com.smartor.domain.*;\r\nimport org.apache.ibatis.annotations.Mapper;\r\nimport org.apache.ibatis.annotations.Param;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥殢璁匡級Mapper鎺ュ彛\r\n *\r\n * @author ruoyi\r\n * @date 2024-02-02\r\n */\r\n@Mapper\r\npublic interface ServiceSubtaskMapper {\r\n    /**\r\n     * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param id 鍗曚竴浠诲姟锛堥殢璁匡級涓婚敭\r\n     * @return 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     */\r\n    public ServiceSubtask selectServiceSubtaskById(Long id);\r\n\r\n    /**\r\n     * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級鍒楄〃\r\n     *\r\n     * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 鍗曚竴浠诲姟锛堥殢璁匡級闆嗗悎\r\n     */\r\n    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);\r\n\r\n    public List<ServiceSubtask> selectServiceSubtaskListByCreateTime(ServiceSubtaskVO serviceSubtaskVO);\r\n\r\n    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO);\r\n\r\n    public Integer selectSendstateByCondition(ServiceSubtask serviceSubtask);\r\n\r\n    /**\r\n     * 鏂板鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param ServiceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 缁撴灉\r\n     */\r\n    public int insertServiceSubtask(ServiceSubtask ServiceSubtask);\r\n\r\n    /**\r\n     * 闅忚鍙婃椂鐜囷細搴旈殢璁挎椂闂�<瀹為檯闅忚鏃堕棿\r\n     *\r\n     * @param ServiceSubtask\r\n     * @return\r\n     */\r\n    public Double selectTimelyRate(ServiceSubtask ServiceSubtask);\r\n\r\n    /**\r\n     * 闅忚鍙婃椂鐜囪鎯匼r\n     *\r\n     * @param ServiceSubtask\r\n     * @return\r\n     */\r\n    public List<ServiceSubtask> selectTimelyRateDetail(ServiceSubtask ServiceSubtask);\r\n\r\n    /**\r\n     * 淇敼鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    public Boolean updateServiceSubtask(ServiceSubtask ServiceSubtask);\r\n\r\n    public Boolean updateServiceSubtaskByPatId(ServiceSubtask ServiceSubtask);\r\n\r\n    public Boolean updateServiceSubtaskByCondition(ServiceSubtask ServiceSubtask);\r\n\r\n    public Boolean updateServiceSubtaskByTaskGuid(ServiceSubtask ServiceSubtask);\r\n\r\n    /**\r\n     * 鍒犻櫎鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param id 鍗曚竴浠诲姟锛堥殢璁匡級涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    public int deleteServiceSubtaskById(Long id);\r\n\r\n    public int deleteServiceSubtaskByCondition(@Param(\"taskid\") Long id, @Param(\"patid\") Long patid);\r\n\r\n    /**\r\n     * 鍒犻櫎鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    public List<ServiceSubtask> getDataByTime(@Param(\"beganTime\") String beganTime, @Param(\"endTime\") String endTime);\r\n\r\n    public List<ServiceSubtaskCount> getSfFzInfoEveryMonth(ServiceSubtaskCountReq serviceSubtaskCountReq);\r\n\r\n    public List<ServiceSubtask> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq);\r\n\r\n    public List<PatMedRes> getDeptRanking(PatMedReq patMedReq);\r\n\r\n    public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest serviceStatisticsRequest);\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
---- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java	(date 1758629443660)
-@@ -30,6 +30,10 @@
-      */
-     public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);
- 
-+    public List<ServiceSubtask> queryServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);
-+
-+    public List<ServiceSubtask> selectServiceSubtaskBySendstate(ServiceSubtaskVO serviceSubtaskVO);
-+
-     public List<ServiceSubtask> selectServiceSubtaskListByCreateTime(ServiceSubtaskVO serviceSubtaskVO);
- 
-     public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO);
-Index: smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.ServiceSubtaskMapper\">\r\n\r\n    <resultMap type=\"com.smartor.domain.ServiceSubtask\" id=\"ServiceSubtaskResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"sendname\" column=\"sendname\"/>\r\n        <result property=\"phone\" column=\"phone\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"nurseName\" column=\"nurse_name\"/>\r\n        <result property=\"nurseId\" column=\"nurse_id\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"sfzh\" column=\"sfzh\"/>\r\n        <result property=\"addr\" column=\"addr\"/>\r\n        <result property=\"senderdetail\" column=\"senderdetail\"/>\r\n        <result property=\"type\" column=\"type\"/>\r\n        <result property=\"taskid\" column=\"taskid\"/>\r\n        <result property=\"templateid\" column=\"templateid\"/>\r\n        <result property=\"templatename\" column=\"templatename\"/>\r\n        <result property=\"senddate\" column=\"senddate\"/>\r\n        <result property=\"senduuid\" column=\"senduuid\"/>\r\n        <result property=\"result\" column=\"result\"/>\r\n        <result property=\"finishtime\" column=\"finishtime\"/>\r\n        <result property=\"recordid\" column=\"recordid\"/>\r\n        <result property=\"exrecallcount\" column=\"exrecallcount\"/>\r\n        <result property=\"pulltime\" column=\"pulltime\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"labelstatus\" column=\"labelstatus\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"pid\" column=\"pid\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"taskGuid\" column=\"task_guid\"/>\r\n        <result property=\"textParam\" column=\"text_param\"/>\r\n        <result property=\"preachform\" column=\"preachform\"/>\r\n        <result property=\"bedNo\" column=\"bed_no\"/>\r\n        <result property=\"sendType\" column=\"send_type\"/>\r\n        <result property=\"taskName\" column=\"task_name\"/>\r\n        <result property=\"taskDesc\" column=\"task_desc\"/>\r\n        <result property=\"operator\" column=\"operator\"/>\r\n        <result property=\"operatorNo\" column=\"operator_no\"/>\r\n        <result property=\"hospno\" column=\"hospno\"/>\r\n        <result property=\"hospType\" column=\"hosp_type\"/>\r\n        <result property=\"wechat\" column=\"wechat\"/>\r\n        <result property=\"leaveicd10code\" column=\"leaveicd10code\"/>\r\n        <result property=\"leavediagname\" column=\"leavediagname\"/>\r\n        <result property=\"deptname\" column=\"deptname\"/>\r\n        <result property=\"admindate\" column=\"admindate\"/>\r\n        <result property=\"roomno\" column=\"roomno\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"libtemplatename\" column=\"libtemplatename\"/>\r\n        <result property=\"libtemplateid\" column=\"libtemplateid\"/>\r\n        <result property=\"openid\" column=\"openid\"/>\r\n        <result property=\"longSendTime\" column=\"long_send_time\"/>\r\n        <result property=\"serviceType\" column=\"service_type\"/>\r\n        <result property=\"score\" column=\"score\"/>\r\n        <result property=\"submit\" column=\"submit\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"endtime\" column=\"endtime\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"excep\" column=\"excep\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"suggest\" column=\"suggest\"/>\r\n        <result property=\"sendstate\" column=\"sendstate\"/>\r\n        <result property=\"inhospid\" column=\"inhospid\"/>\r\n        <result property=\"patfrom\" column=\"patfrom\"/>\r\n        <result property=\"patguid\" column=\"patguid\"/>\r\n        <result property=\"visitCount\" column=\"visit_count\"/>\r\n        <result property=\"isVisitAgain\" column=\"is_visit_again\"/>\r\n        <result property=\"upid\" column=\"upid\"/>\r\n        <result property=\"visitTime\" column=\"visit_time\"/>\r\n        <result property=\"visitDeptName\" column=\"visit_dept_name\"/>\r\n        <result property=\"visitDeptCode\" column=\"visit_dept_code\"/>\r\n        <result property=\"managementDoctor\" column=\"management_doctor\"/>\r\n        <result property=\"managementDoctorCode\" column=\"management_doctor_code\"/>\r\n    </resultMap>\r\n\r\n    <resultMap type=\"com.smartor.domain.ServiceSubtaskCount\" id=\"ServiceSubtaskResult2\">\r\n        <result property=\"month\" column=\"month\"/>\r\n        <result property=\"serviceType\" column=\"service_type\"/>\r\n        <result property=\"subTaskId\" column=\"subTaskId\"/>\r\n\r\n    </resultMap>\r\n\r\n    <sql id=\"selectServiceSubtaskVo\">\r\n        select id,\r\n               hosp_type,\r\n               task_guid,\r\n               patfrom,\r\n               management_doctor,\r\n               management_doctor_code,\r\n               upid,\r\n               visit_dept_name,\r\n               visit_dept_code,\r\n               visit_time,\r\n               inhospid,\r\n               visit_count,\r\n               is_visit_again,\r\n               patguid,\r\n               suggest,\r\n               sendstate,\r\n               endtime,\r\n               nurse_id,\r\n               nurse_name,\r\n               starttime,\r\n               submit,\r\n               drname,\r\n               excep,\r\n               drcode,\r\n               long_send_time,\r\n               openid,\r\n               remark,\r\n               service_type,\r\n               libtemplateid,\r\n               libtemplatename,\r\n               hospno,\r\n               score,\r\n               phone,\r\n               sex,\r\n               age,\r\n               patid,\r\n               sfzh,\r\n               addr,\r\n               senderdetail,\r\n               type,\r\n               taskid,\r\n               templateid,\r\n               templatename,\r\n               senddate,\r\n               senduuid,\r\n               result,\r\n               finishtime,\r\n               recordid,\r\n               exrecallcount,\r\n               pulltime,\r\n               deptcode,\r\n               labelstatus,\r\n               del_flag,\r\n               update_by,\r\n               update_time,\r\n               create_by,\r\n               create_time,\r\n               isupload,\r\n               upload_time,\r\n               orgid,\r\n               pid,\r\n               guid,\r\n               text_param,\r\n               preachform,\r\n               bed_no,\r\n               send_type,\r\n               task_name,\r\n               task_desc,\r\n               operator_no,\r\n               operator,\r\n               wechat,\r\n               sendname,\r\n               roomno,\r\n               admindate,\r\n               deptname,\r\n               stop_state,\r\n               leavehospitaldistrictcode,\r\n               leavehospitaldistrictname,\r\n               leavediagname,\r\n               leaveicd10code,\r\n               orgid,\r\n               visit_type,\r\n               management_doctor,\r\n               management_doctor_code\r\n        from service_subtask\r\n    </sql>\r\n\r\n    <select id=\"selectServiceSubtaskList\" parameterType=\"com.smartor.domain.ServiceSubtaskVO\"\r\n            resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"sendname != null  and sendname != ''\">and sendname like concat('%', #{sendname}, '%')</if>\r\n            <if test=\"phone != null  and phone != ''\">and phone = #{phone}</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">and\r\n                leavehospitaldistrictcode = #{leavehospitaldistrictcode}\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">and\r\n                leavehospitaldistrictname = #{leavehospitaldistrictname}\r\n            </if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">and leavediagname like concat('%',\r\n                #{leavediagname}, '%')\r\n            </if>\r\n            <if test=\"managementDoctor != null  and managementDoctor != ''\">and management_doctor like concat('%',\r\n                #{managementDoctor}, '%')\r\n            </if>\r\n            <if test=\"sex != null  and sex != ''\">and sex = #{sex}</if>\r\n            <if test=\"age != null \">and age = #{age}</if>\r\n            <if test=\"patguid != null \">and patguid = #{patguid}</if>\r\n            <if test=\"subId != null \">and id = #{subId}</if>\r\n            <if test=\"inhospid != null \">and inhospid = #{inhospid}</if>\r\n            <if test=\"managementDoctorCode != null \">and management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"submit != null \">and submit = #{submit}</if>\r\n            <if test=\"upid != null \">and upid = #{upid}</if>\r\n            <if test=\"patfrom != null \">and patfrom = #{patfrom}</if>\r\n            <if test=\"serviceType != null \">and service_type = #{serviceType}</if>\r\n            <if test=\"patid != null \">and patid = #{patid}</if>\r\n            <if test=\"sfzh != null  and sfzh != ''\">and sfzh = #{sfzh}</if>\r\n            <if test=\"addr != null  and addr != ''\">and addr = #{addr}</if>\r\n            <if test=\"senderdetail != null  and senderdetail != ''\">and senderdetail = #{senderdetail}</if>\r\n            <if test=\"type != null  and type != ''\">and type = #{type}</if>\r\n            <if test=\"taskid != null \">and taskid = #{taskid}</if>\r\n            <if test=\"templateid != null  and templateid != ''\">and templateid = #{templateid}</if>\r\n            <if test=\"templatename != null  and templatename != ''\">and templatename like concat('%', #{templatename},\r\n                '%')\r\n            </if>\r\n            <if test=\"startOutHospTime != null\">\r\n                AND date_format(endtime,'%y%m%d') &gt;= date_format(#{startOutHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"endOutHospTime != null\">\r\n                AND date_format(endtime,'%y%m%d') &lt;= date_format(#{endOutHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"startSendDateTime != null\">\r\n                AND date_format(long_send_time,'%y%m%d') &gt;= date_format(#{startSendDateTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"endSendDateTime != null\">\r\n                AND date_format(long_send_time,'%y%m%d') &lt;= date_format(#{endSendDateTime},'%y%m%d')\r\n            </if>\r\n\r\n            <if test=\"longSendTime != null\">\r\n                AND date_format(long_send_time,'%y%m%d') &lt;= date_format(#{longSendTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"deptOrDistrict==1\">\r\n                <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n                    AND leavehospitaldistrictcode IN\r\n                    <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\"\r\n                             separator=\",\"\r\n                             close=\")\">\r\n                        #{leavehospitaldistrictcode}\r\n                    </foreach>\r\n                </if>\r\n                <if test=\" leaveldeptcodes != null and leaveldeptcodes.size()>0\">\r\n                    AND deptcode IN\r\n                    <foreach collection=\"leaveldeptcodes\" item=\"leaveldeptcode\" open=\"(\" separator=\",\"\r\n                             close=\")\">\r\n                        #{leaveldeptcode}\r\n                    </foreach>\r\n                </if>\r\n            </if>\r\n            <if test=\"deptOrDistrict==2\">\r\n                <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n                    AND (leavehospitaldistrictcode IN\r\n                    <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\"\r\n                             separator=\",\"\r\n                             close=\")\">\r\n                        #{leavehospitaldistrictcode}\r\n                    </foreach>\r\n                </if>\r\n                <if test=\" leaveldeptcodes != null and leaveldeptcodes.size()>0\">\r\n                    OR deptcode IN\r\n                    <foreach collection=\"leaveldeptcodes\" item=\"leaveldeptcode\" open=\"(\" separator=\",\"\r\n                             close=\"))\">\r\n                        #{leaveldeptcode}\r\n                    </foreach>\r\n                </if>\r\n            </if>\r\n\r\n            <if test=\"senddate != null \">and senddate = #{senddate}</if>\r\n            <if test=\"senduuid != null  and senduuid != ''\">and senduuid = #{senduuid}</if>\r\n            <if test=\"result != null  and result != ''\">and result = #{result}</if>\r\n            <if test=\"finishtime != null \">and finishtime = #{finishtime}</if>\r\n            <if test=\"recordid != null \">and recordid = #{recordid}</if>\r\n            <if test=\"exrecallcount != null \">and exrecallcount = #{exrecallcount}</if>\r\n            <if test=\"pulltime != null \">and pulltime = #{pulltime}</if>\r\n            <if test=\"deptcode != null  and deptcode != ''\">and deptcode = #{deptcode}</if>\r\n            <if test=\"deptname != null  and deptname != ''\">and deptname = #{deptname}</if>\r\n            <if test=\"labelstatus != null \">and labelstatus = #{labelstatus}</if>\r\n            <if test=\"isupload != null \">and isupload = #{isupload}</if>\r\n            <if test=\"uploadTime != null \">and upload_time = #{uploadTime}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"pid != null \">and pid = #{pid}</if>\r\n            <if test=\"preachform != null \">and preachform = #{preachform}</if>\r\n            <if test=\"guid != null  and guid != ''\">and guid = #{guid}</if>\r\n            <if test=\"textParam != null  and textParam != ''\">and text_param = #{textParam}</if>\r\n            <if test=\"bedNo != null\">and bed_no = #{bedNo}</if>\r\n            <if test=\"sendType != null  and sendType != ''\">and send_type = #{sendType}</if>\r\n            <if test=\"operator != null  and operator != ''\">and operator = #{operator}</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">and operator_no = #{operatorNo}</if>\r\n            <if test=\"wechat != null  and wechat != ''\">and wechat = #{wechat}</if>\r\n            <if test=\"hospType != null  and hospType != ''\">and hosp_type = #{hospType}</if>\r\n            <if test=\"libtemplateid != null \">and libtemplateid = #{libtemplateid}</if>\r\n            <if test=\"libtemplatename != null \">and libtemplatename = #{libtemplatename}</if>\r\n            <if test=\"openid != null \">and openid = #{openid}</if>\r\n            <if test=\"longSendTime != null \">and long_send_time = #{longSendTime}</if>\r\n            <if test=\"sendstate != null \">and sendstate = #{sendstate}</if>\r\n            <if test=\"drname != null  and drname != ''\">and drname like concat('%', #{drname}, '%')</if>\r\n            <if test=\"taskName != null  and taskName != ''\">and task_name like concat('%', #{taskName}, '%')</if>\r\n            <if test=\"drcode != null and drcode != ''\">and (drcode = #{drcode}</if>\r\n            <if test=\"nurseId != null  and nurseId != ''\">or nurse_id = #{nurseId})</if>\r\n            <if test=\"starttime != null \">and starttime = #{starttime}</if>\r\n            <if test=\"endtime != null \">and endtime = #{endtime}</if>\r\n            <if test=\"excep != null \">and excep = #{excep}</if>\r\n            <if test=\"nurseName != null \">and nurse_name = #{nurseName}</if>\r\n            <if test=\"score != null\">and score = #{score}</if>\r\n            <!--            <if test=\"visitCount != null\">and visit_count = #{visitCount}</if>-->\r\n            <if test=\"visitCount != null and visitCount == 1\">\r\n                AND visit_count = 1\r\n            </if>\r\n            <if test=\"visitCount != null and visitCount > 1\">\r\n                AND visit_count > 1\r\n            </if>\r\n            <if test=\"remark != null\">and remark = #{remark}</if>\r\n            <if test=\"suggest != null\">and suggest = #{suggest}</if>\r\n            <if test=\"createBy != null\">and create_by = #{createBy}</if>\r\n            <if test=\"taskGuid != null\">and task_guid = #{taskGuid}</if>\r\n            <if test=\"isVisitAgain != null\">and is_visit_again = #{isVisitAgain}</if>\r\n            <if test=\"visitTime != null\">and visit_time = #{visitTime}</if>\r\n            <!--<if test=\"visitDeptCode != null\">and visit_dept_code = #{visitDeptCode}</if>\r\n            <if test=\"visitDeptName != null\">and visit_dept_name = #{visitDeptName}</if>-->\r\n            <if test=\"visitCount != null and visitCount > 1 and visitDeptCodes != null and visitDeptCodes.size() > 0\">\r\n                AND visit_dept_code IN\r\n                <foreach collection=\"visitDeptCodes\" item=\"visitDeptCodes\" open=\"(\"\r\n                         separator=\",\"\r\n                         close=\")\">\r\n                    #{visitDeptCodes}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        <if test=\"sort != null  and sort==0\">order by endtime asc</if>\r\n        <if test=\"sort != null  and sort==1\">order by endtime desc</if>\r\n        <if test=\"sort != null  and sort==2\">order by long_send_time asc</if>\r\n        <if test=\"sort != null  and sort==3\">order by long_send_time desc</if>\r\n        <if test=\"sort != null  and sort==5\">order by admindate asc</if>\r\n        <if test=\"sort != null  and sort==6\">order by admindate desc</if>\r\n\r\n        <!-- order by update_time desc,id desc -->\r\n    </select>\r\n\r\n    <select id=\"selectServiceSubtaskListByCreateTime\" parameterType=\"com.smartor.domain.ServiceSubtaskVO\"\r\n            resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"createStartTime != null  and createEndTime != null\">and create_time BETWEEN #{createStartTime} AND\r\n                #{createEndTime}\r\n            </if>\r\n            <if test=\"createBy != null \">and create_by = #{createBy}</if>\r\n            <if test=\"sendname != null \">and sendname = #{sendname}</if>\r\n            <if test=\"sfzh != null \">and sfzh = #{sfzh}</if>\r\n            <if test=\"patguid != null \">and patguid = #{patguid}</if>\r\n            <if test=\"upid != null \">and upid = #{upid}</if>\r\n            <if test=\"visitCount != null \">and visit_count = #{visitCount}</if>\r\n            <if test=\"isVisitAgain != null \">and is_visit_again = #{isVisitAgain}</if>\r\n            <if test=\"visitDeptCode != null\">and visit_dept_code = #{visitDeptCode}</if>\r\n            <if test=\"visitDeptName != null\">and visit_dept_name = #{visitDeptName}</if>\r\n            <if test=\"managementDoctorCode != null\">and management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"managementDoctor != null\">and management_doctor = #{managementDoctor}</if>\r\n        </where>\r\n\r\n    </select>\r\n\r\n\r\n    <select id=\"selectServiceSubtaskListAgain\" parameterType=\"com.smartor.domain.ServiceSubtaskVO\"\r\n            resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            and upid is not null\r\n            and visit_count > 1\r\n            <if test=\"createStartTime != null  and createEndTime != null\">and create_time BETWEEN #{createStartTime} AND\r\n                #{createEndTime}\r\n            </if>\r\n            <if test=\"senddate != null \">and senddate = #{senddate}</if>\r\n            <if test=\"senduuid != null  and senduuid != ''\">and senduuid = #{senduuid}</if>\r\n            <if test=\"result != null  and result != ''\">and result = #{result}</if>\r\n            <if test=\"finishtime != null \">and finishtime = #{finishtime}</if>\r\n            <if test=\"recordid != null \">and recordid = #{recordid}</if>\r\n            <if test=\"exrecallcount != null \">and exrecallcount = #{exrecallcount}</if>\r\n            <if test=\"pulltime != null \">and pulltime = #{pulltime}</if>\r\n            <if test=\"deptcode != null  and deptcode != ''\">and deptcode = #{deptcode}</if>\r\n            <if test=\"deptname != null  and deptname != ''\">and deptname = #{deptname}</if>\r\n            <if test=\"labelstatus != null \">and labelstatus = #{labelstatus}</if>\r\n            <if test=\"isupload != null \">and isupload = #{isupload}</if>\r\n            <if test=\"uploadTime != null \">and upload_time = #{uploadTime}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"pid != null \">and pid = #{pid}</if>\r\n            <if test=\"preachform != null \">and preachform = #{preachform}</if>\r\n            <if test=\"guid != null  and guid != ''\">and guid = #{guid}</if>\r\n            <if test=\"textParam != null  and textParam != ''\">and text_param = #{textParam}</if>\r\n            <if test=\"bedNo != null\">and bed_no = #{bedNo}</if>\r\n            <if test=\"sendType != null  and sendType != ''\">and send_type = #{sendType}</if>\r\n            <if test=\"operator != null  and operator != ''\">and operator = #{operator}</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">and operator_no = #{operatorNo}</if>\r\n            <if test=\"wechat != null  and wechat != ''\">and wechat = #{wechat}</if>\r\n            <if test=\"hospType != null  and hospType != ''\">and hosp_type = #{hospType}</if>\r\n            <if test=\"libtemplateid != null \">and libtemplateid = #{libtemplateid}</if>\r\n            <if test=\"libtemplatename != null \">and libtemplatename = #{libtemplatename}</if>\r\n            <if test=\"openid != null \">and openid = #{openid}</if>\r\n            <if test=\"longSendTime != null \">and long_send_time = #{longSendTime}</if>\r\n            <if test=\"sendstate != null \">and sendstate = #{sendstate}</if>\r\n            <if test=\"drname != null  and drname != ''\">and drname like concat('%', #{drname}, '%')</if>\r\n            <if test=\"taskName != null  and taskName != ''\">and task_name like concat('%', #{taskName}, '%')</if>\r\n            <if test=\"drcode != null and drcode != ''\">and (drcode = #{drcode}</if>\r\n            <if test=\"nurseId != null  and nurseId != ''\">or nurse_id = #{nurseId})</if>\r\n            <if test=\"starttime != null \">and starttime = #{starttime}</if>\r\n            <if test=\"endtime != null \">and endtime = #{endtime}</if>\r\n            <if test=\"excep != null \">and excep = #{excep}</if>\r\n            <if test=\"nurseName != null \">and nurse_name = #{nurseName}</if>\r\n            <if test=\"visitTime != null \">and visit_time = #{visitTime}</if>\r\n            <if test=\"visitDeptCode != null\">and visit_dept_code = #{visitDeptCode}</if>\r\n            <if test=\"visitDeptName != null\">and visit_dept_name = #{visitDeptName}</if>\r\n            <if test=\"managementDoctorCode != null\">and management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"managementDoctor != null\">and management_doctor like concat('%',#{managementDoctor}, '%')</if>\r\n        </where>\r\n\r\n    </select>\r\n\r\n    <select id=\"selectSendstateByCondition\" parameterType=\"com.smartor.domain.ServiceSubtask\" resultType=\"Integer\">\r\n        SELECT b.sendstate\r\n        from service_task a\r\n                 JOIN service_subtask b on a.taskid = b.taskid and a.pat_cycle = 0 and b.del_flag = 0\r\n        where b.taskid = #{taskid}\r\n          and b.patid = #{patid}\r\n    </select>\r\n\r\n    <select id=\"selectTimelyRate\" parameterType=\"com.smartor.domain.ServiceSubtask\" resultType=\"double\">\r\n        SELECT sum( a.finished )/ sum( 1 ) FROM\r\n        (SELECT id, visit_time, finishtime,\r\n        (CASE WHEN ( DATE_FORMAT( visit_time, '%y%m%d' )&lt; DATE_FORMAT( IF ( ISNULL( finishtime ), NOW(), finishtime\r\n        ), '%y%m%d' ) )\r\n        THEN 1 ELSE 0 END ) finished,1 AS tasknumber FROM service_subtask\r\n        WHERE del_flag=0\r\n        <if test=\"starttime == null and endtime==null\">\r\n            AND visit_time &lt; NOW()\r\n        </if>\r\n        <if test=\"starttime != null and endtime!=null\">\r\n            AND date_format(visit_time,'%y%m%d') >= date_format(#{starttime},'%y%m%d')\r\n            AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endtime},'%y%m%d')\r\n        </if>\r\n        <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n        <if test=\"deptcode != null  and deptcode != ''\">and deptcode = #{deptcode}</if>\r\n        <if test=\"deptname != null  and deptname != ''\">and deptname = #{deptname}</if>\r\n        <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">and\r\n            leavehospitaldistrictcode = #{leavehospitaldistrictcode}\r\n        </if>\r\n        <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">and\r\n            leavehospitaldistrictname = #{leavehospitaldistrictname}\r\n        </if>\r\n        <if test=\"managementDoctorCode != null\">and management_doctor_code = #{managementDoctorCode}</if>\r\n        <if test=\"managementDoctor != null\">and management_doctor like concat('%',#{managementDoctor}, '%')</if>\r\n        ) a\r\n    </select>\r\n\r\n    <select id=\"selectTimelyRateDetail\" parameterType=\"com.smartor.domain.ServiceSubtask\"\r\n            resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        <where>\r\n            id in (\r\n            SELECT id FROM\r\n            (SELECT id, visit_time, finishtime,\r\n            (CASE WHEN ( DATE_FORMAT( visit_time, '%y%m%d' ) &lt; DATE_FORMAT( IF ( ISNULL( finishtime ), NOW(),\r\n            finishtime\r\n            ), '%y%m%d' ) )\r\n            THEN 1 ELSE 0 END ) finished,1 AS tasknumber FROM service_subtask\r\n            WHERE del_flag=0\r\n            -- AND visit_time &lt; NOW()\r\n            <if test=\"starttime != null and endtime!=null\">\r\n                AND date_format(visit_time,'%y%m%d') >= date_format(#{starttime},'%y%m%d')\r\n                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endtime},'%y%m%d')\r\n            </if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"deptcode != null  and deptcode != ''\">and deptcode = #{deptcode}</if>\r\n            <if test=\"deptname != null  and deptname != ''\">and deptname = #{deptname}</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">and\r\n                leavehospitaldistrictcode = #{leavehospitaldistrictcode}\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">and\r\n                leavehospitaldistrictname = #{leavehospitaldistrictname}\r\n            </if>\r\n            <if test=\"managementDoctorCode != null\">and management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"managementDoctor != null\">and management_doctor like concat('%',#{managementDoctor}, '%')</if>\r\n            ) a where a.finished =1)\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectServiceSubtaskById\" parameterType=\"Long\" resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        where id = #{id}\r\n    </select>\r\n\r\n    <insert id=\"insertServiceSubtask\" parameterType=\"com.smartor.domain.ServiceSubtask\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"id\">\r\n        insert into service_subtask\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">sendname,</if>\r\n            <if test=\"phone != null\">phone,</if>\r\n            <if test=\"sex != null\">sex,</if>\r\n            <if test=\"age != null\">age,</if>\r\n            <if test=\"sfzh != null\">sfzh,</if>\r\n            <if test=\"addr != null\">addr,</if>\r\n            <if test=\"senderdetail != null\">senderdetail,</if>\r\n            <if test=\"type != null\">type,</if>\r\n            <if test=\"taskid != null\">taskid,</if>\r\n            <if test=\"templateid != null\">templateid,</if>\r\n            <if test=\"templatename != null\">templatename,</if>\r\n            <if test=\"senddate != null\">senddate,</if>\r\n            <if test=\"senduuid != null\">senduuid,</if>\r\n            <if test=\"result != null\">result,</if>\r\n            <if test=\"finishtime != null\">finishtime,</if>\r\n            <if test=\"recordid != null\">recordid,</if>\r\n            <if test=\"exrecallcount != null\">exrecallcount,</if>\r\n            <if test=\"pulltime != null\">pulltime,</if>\r\n            <if test=\"deptcode != null\">deptcode,</if>\r\n            <if test=\"labelstatus != null\">labelstatus,</if>\r\n            <if test=\"updateBy != null\">update_by,</if>\r\n            <if test=\"updateTime != null\">update_time,</if>\r\n            <if test=\"createBy != null\">create_by,</if>\r\n            <if test=\"createTime != null\">create_time,</if>\r\n            <if test=\"isupload != null\">isupload,</if>\r\n            <if test=\"uploadTime != null\">upload_time,</if>\r\n            <if test=\"orgid != null\">orgid,</if>\r\n            <if test=\"pid != null\">pid,</if>\r\n            <if test=\"guid != null\">guid,</if>\r\n            <if test=\"textParam != null\">text_param,</if>\r\n            <if test=\"preachform != null\">preachform,</if>\r\n            <if test=\"bedNo != null\">bed_no,</if>\r\n            <if test=\"sendType != null  and sendType != ''\">send_type,</if>\r\n            <if test=\"taskName != null  and taskName != ''\">task_name,</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">task_desc,</if>\r\n            <if test=\"operator != null  and operator != ''\">operator,</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">operator_no,</if>\r\n            <if test=\"hospType != null  and hospType != ''\">hosp_type,</if>\r\n            <if test=\"hospno != null  and hospno != ''\">hospno,</if>\r\n            <if test=\"wechat != null  and wechat != ''\">wechat,</if>\r\n            <if test=\"roomno != null  and roomno != ''\">roomno,</if>\r\n            <if test=\"admindate != null\">admindate,</if>\r\n            <if test=\"deptname != null  and deptname != ''\">deptname,</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">leaveicd10code,</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">leavediagname,</if>\r\n            <if test=\"libtemplateid != null \">libtemplateid,</if>\r\n            <if test=\"libtemplatename != null \">libtemplatename,</if>\r\n            <if test=\"patid != null \">patid,</if>\r\n            <if test=\"openid != null \">openid,</if>\r\n            <if test=\"longSendTime != null \">long_send_time,</if>\r\n            <if test=\"serviceType != null \">service_type,</if>\r\n            <if test=\"score != null \">score,</if>\r\n            <if test=\"submit != null \">submit,</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">\r\n                leavehospitaldistrictcode,\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">\r\n                leavehospitaldistrictname,\r\n            </if>\r\n            <if test=\"drname != null \">drname,</if>\r\n            <if test=\"drcode != null \">drcode,</if>\r\n            <if test=\"endtime != null \">endtime,</if>\r\n            <if test=\"starttime != null \">starttime,</if>\r\n            <if test=\"excep != null \">excep,</if>\r\n            <if test=\"nurseName != null \">nurse_name,</if>\r\n            <if test=\"nurseId != null \">nurse_id,</if>\r\n            <if test=\"remark != null \">remark,</if>\r\n            <if test=\"suggest != null \">suggest,</if>\r\n            <if test=\"sendstate != null \">sendstate,</if>\r\n            <if test=\"inhospid != null \">inhospid,</if>\r\n            <if test=\"patfrom != null \">patfrom,</if>\r\n            <if test=\"taskGuid != null \">task_guid,</if>\r\n            <if test=\"patguid != null \">patguid,</if>\r\n            <if test=\"visitCount != null \">visit_count,</if>\r\n            <if test=\"isVisitAgain != null \">is_visit_again,</if>\r\n            <if test=\"upid != null \">upid,</if>\r\n            <if test=\"visitTime != null \">visit_Time,</if>\r\n            <if test=\"visitDeptCode != null\">visit_dept_code,</if>\r\n            <if test=\"visitDeptName != null\">visit_dept_name,</if>\r\n            <if test=\"managementDoctorCode != null\">management_doctor_code,</if>\r\n            <if test=\"managementDoctor != null\">management_doctor,</if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">#{sendname},</if>\r\n            <if test=\"phone != null\">#{phone},</if>\r\n            <if test=\"sex != null\">#{sex},</if>\r\n            <if test=\"age != null\">#{age},</if>\r\n            <if test=\"sfzh != null\">#{sfzh},</if>\r\n            <if test=\"addr != null\">#{addr},</if>\r\n            <if test=\"senderdetail != null\">#{senderdetail},</if>\r\n            <if test=\"type != null\">#{type},</if>\r\n            <if test=\"taskid != null\">#{taskid},</if>\r\n            <if test=\"templateid != null\">#{templateid},</if>\r\n            <if test=\"templatename != null\">#{templatename},</if>\r\n            <if test=\"senddate != null\">#{senddate},</if>\r\n            <if test=\"senduuid != null\">#{senduuid},</if>\r\n            <if test=\"result != null\">#{result},</if>\r\n            <if test=\"finishtime != null\">#{finishtime},</if>\r\n            <if test=\"recordid != null\">#{recordid},</if>\r\n            <if test=\"exrecallcount != null\">#{exrecallcount},</if>\r\n            <if test=\"pulltime != null\">#{pulltime},</if>\r\n            <if test=\"deptcode != null\">#{deptcode},</if>\r\n            <if test=\"labelstatus != null\">#{labelstatus},</if>\r\n            <if test=\"updateBy != null\">#{updateBy},</if>\r\n            <if test=\"updateTime != null\">#{updateTime},</if>\r\n            <if test=\"createBy != null\">#{createBy},</if>\r\n            <if test=\"createTime != null\">#{createTime},</if>\r\n            <if test=\"isupload != null\">#{isupload},</if>\r\n            <if test=\"uploadTime != null\">#{uploadTime},</if>\r\n            <if test=\"orgid != null\">#{orgid},</if>\r\n            <if test=\"pid != null\">#{pid},</if>\r\n            <if test=\"guid != null\">#{guid},</if>\r\n            <if test=\"textParam != null\">#{textParam},</if>\r\n            <if test=\"preachform != null\">#{preachform},</if>\r\n            <if test=\"bedNo != null\">#{bedNo},</if>\r\n            <if test=\"sendType != null  and sendType != ''\">#{sendType},</if>\r\n            <if test=\"taskName != null  and taskName != ''\">#{taskName},</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">#{taskDesc},</if>\r\n            <if test=\"operator != null  and operator != ''\">#{operator},</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">#{operatorNo},</if>\r\n            <if test=\"hospType != null  and hospType != ''\">#{hospType},</if>\r\n            <if test=\"hospno != null  and hospno != ''\">#{hospno},</if>\r\n            <if test=\"wechat != null  and wechat != ''\">#{wechat},</if>\r\n            <if test=\"roomno != null  and roomno != ''\">#{roomno},</if>\r\n            <if test=\"admindate != null \">#{admindate},</if>\r\n            <if test=\"deptname != null  and deptname != ''\">#{deptname},</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">#{leaveicd10code},</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">#{leavediagname},</if>\r\n            <if test=\"libtemplateid != null \">#{libtemplateid},</if>\r\n            <if test=\"libtemplatename != null \">#{libtemplatename},</if>\r\n            <if test=\"patid != null \">#{patid},</if>\r\n            <if test=\"openid != null \">#{openid},</if>\r\n            <if test=\"longSendTime != null \">#{longSendTime},</if>\r\n            <if test=\"serviceType != null \">#{serviceType},</if>\r\n            <if test=\"score != null \">#{score},</if>\r\n            <if test=\"submit != null \">#{submit},</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">\r\n                #{leavehospitaldistrictcode},\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">\r\n                #{leavehospitaldistrictname},\r\n            </if>\r\n            <if test=\"drname != null \">#{drname},</if>\r\n            <if test=\"drcode != null \">#{drcode},</if>\r\n            <if test=\"endtime != null \">#{endtime},</if>\r\n            <if test=\"starttime != null \">#{starttime},</if>\r\n            <if test=\"excep != null \">#{excep},</if>\r\n            <if test=\"nurseName != null \">#{nurseName},</if>\r\n            <if test=\"nurseId != null \">#{nurseId},</if>\r\n            <if test=\"remark != null \">#{remark},</if>\r\n            <if test=\"suggest != null \">#{suggest},</if>\r\n            <if test=\"sendstate != null \">#{sendstate},</if>\r\n            <if test=\"inhospid != null \">#{inhospid},</if>\r\n            <if test=\"patfrom != null \">#{patfrom},</if>\r\n            <if test=\"taskGuid != null \">#{taskGuid},</if>\r\n            <if test=\"patguid != null \">#{patguid},</if>\r\n            <if test=\"visitCount != null \">#{visitCount},</if>\r\n            <if test=\"isVisitAgain != null \">#{isVisitAgain},</if>\r\n            <if test=\"upid != null \">#{upid},</if>\r\n            <if test=\"visitTime != null \">#{visitTime},</if>\r\n            <if test=\"visitDeptCode != null\">#{visitDeptCode},</if>\r\n            <if test=\"visitDeptName != null\">#{visitDeptName},</if>\r\n            <if test=\"managementDoctorCode != null\">#{managementDoctorCode},</if>\r\n            <if test=\"managementDoctor != null\">#{managementDoctor},</if>\r\n        </trim>\r\n    </insert>\r\n\r\n    <update id=\"updateServiceSubtask\" parameterType=\"com.smartor.domain.ServiceSubtask\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">sendname = #{sendname},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"sex != null\">sex = #{sex},</if>\r\n            <if test=\"delFlag != null\">del_flag = #{delFlag},</if>\r\n            <if test=\"age != null\">age = #{age},</if>\r\n            <if test=\"sfzh != null\">sfzh = #{sfzh},</if>\r\n            <if test=\"addr != null\">addr = #{addr},</if>\r\n            <if test=\"senderdetail != null\">senderdetail = #{senderdetail},</if>\r\n            <if test=\"type != null\">type = #{type},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatename != null\">templatename = #{templatename},</if>\r\n            <if test=\"senddate != null\">senddate = #{senddate},</if>\r\n            <if test=\"senduuid != null\">senduuid = #{senduuid},</if>\r\n            <if test=\"result != null\">result = #{result},</if>\r\n            <if test=\"finishtime != null\">finishtime = #{finishtime},</if>\r\n            <if test=\"recordid != null\">recordid = #{recordid},</if>\r\n            <if test=\"exrecallcount != null\">exrecallcount = #{exrecallcount},</if>\r\n            <if test=\"pulltime != null\">pulltime = #{pulltime},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"labelstatus != null\">labelstatus = #{labelstatus},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"pid != null\">pid = #{pid},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"textParam != null\">text_param = #{textParam},</if>\r\n            <if test=\"preachform != null\">preachform = #{preachform},</if>\r\n            <if test=\"bedNo != null\">bed_no = #{bedNo},</if>\r\n            <if test=\"sendType != null  and sendType != ''\">send_type = #{sendType},</if>\r\n            <if test=\"taskName != null  and taskName != ''\">task_name = #{taskName},</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">task_desc = #{taskDesc},</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">operator_no = #{operatorNo},</if>\r\n            <if test=\"operator != null  and operator != ''\">operator = #{operator},</if>\r\n            <if test=\"hospType != null  and hospType != ''\">hosp_type = #{hospType},</if>\r\n            <if test=\"hospno != null  and hospno != ''\">hospno = #{hospno},</if>\r\n            <if test=\"wechat != null  and wechat != ''\">wechat = #{wechat},</if>\r\n            <if test=\"roomno != null  and roomno != ''\">roomno = #{roomno},</if>\r\n            <if test=\"admindate != null \">admindate = #{admindate},</if>\r\n            <if test=\"deptname != null  and deptname != ''\">deptname = #{deptname},</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">leaveicd10code = #{leaveicd10code},</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">leavediagname = #{leavediagname},</if>\r\n            <if test=\"libtemplateid != null \">libtemplateid = #{libtemplateid},</if>\r\n            <if test=\"libtemplatename != null \">libtemplatename = #{libtemplatename},</if>\r\n            <if test=\"patid != null \">patid = #{patid},</if>\r\n            <if test=\"openid != null \">openid = #{openid},</if>\r\n            <if test=\"longSendTime != null \">long_send_time = #{longSendTime},</if>\r\n            <if test=\"sendstate != null \">sendstate = #{sendstate},</if>\r\n            <if test=\"serviceType != null \">service_type = #{serviceType},</if>\r\n            <if test=\"score != null \">score = #{score},</if>\r\n            <if test=\"submit != null \">submit = #{submit},</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">leavehospitaldistrictcode\r\n                = #{leavehospitaldistrictcode},\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">leavehospitaldistrictname\r\n                = #{leavehospitaldistrictname},\r\n            </if>\r\n            <if test=\"drname != null \">drname = #{drname},</if>\r\n            <if test=\"drcode != null \">drcode = #{drcode},</if>\r\n            <if test=\"starttime != null \">starttime = #{starttime},</if>\r\n            <if test=\"endtime != null \">endtime = #{endtime},</if>\r\n            <if test=\"excep != null \">excep = #{excep},</if>\r\n            <if test=\"nurseName != null \">nurse_name=#{nurseName},</if>\r\n            <if test=\"nurseId != null \">nurse_id=#{nurseId},</if>\r\n            <if test=\"remark != null \">remark=#{remark},</if>\r\n            <if test=\"suggest != null \">suggest=#{suggest},</if>\r\n            <if test=\"inhospid != null \">inhospid=#{inhospid},</if>\r\n            <if test=\"patfrom != null \">patfrom=#{patfrom},</if>\r\n            <if test=\"taskGuid != null \">task_guid=#{taskGuid},</if>\r\n            <if test=\"patguid != null \">patguid=#{patguid},</if>\r\n            <if test=\"visitCount != null \">visit_count=#{visitCount},</if>\r\n            <if test=\"isVisitAgain != null \">is_visit_again=#{isVisitAgain},</if>\r\n            <if test=\"upid != null \">upid=#{upid},</if>\r\n            <if test=\"visitTime != null \">visit_time=#{visitTime},</if>\r\n            <if test=\"visitDeptCode != null\">visit_dept_code = #{visitDeptCode},</if>\r\n            <if test=\"visitDeptName != null\">visit_dept_name = #{visitDeptName},</if>\r\n            <if test=\"managementDoctorCode != null\">management_doctor_code = #{managementDoctorCode},</if>\r\n            <if test=\"managementDoctor != null\">management_doctor=#{managementDoctor},</if>\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <update id=\"updateServiceSubtaskByPatId\" parameterType=\"com.smartor.domain.ServiceSubtask\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">sendname = #{sendname},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"sex != null\">sex = #{sex},</if>\r\n            <if test=\"delFlag != null\">del_flag = #{delFlag},</if>\r\n            <if test=\"age != null\">age = #{age},</if>\r\n            <if test=\"sfzh != null\">sfzh = #{sfzh},</if>\r\n            <if test=\"addr != null\">addr = #{addr},</if>\r\n            <if test=\"senderdetail != null\">senderdetail = #{senderdetail},</if>\r\n            <if test=\"type != null\">type = #{type},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatename != null\">templatename = #{templatename},</if>\r\n            <if test=\"senddate != null\">senddate = #{senddate},</if>\r\n            <if test=\"senduuid != null\">senduuid = #{senduuid},</if>\r\n            <if test=\"result != null\">result = #{result},</if>\r\n            <if test=\"finishtime != null\">finishtime = #{finishtime},</if>\r\n            <if test=\"recordid != null\">recordid = #{recordid},</if>\r\n            <if test=\"exrecallcount != null\">exrecallcount = #{exrecallcount},</if>\r\n            <if test=\"pulltime != null\">pulltime = #{pulltime},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"labelstatus != null\">labelstatus = #{labelstatus},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"pid != null\">pid = #{pid},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"textParam != null\">text_param = #{textParam},</if>\r\n            <if test=\"preachform != null\">preachform = #{preachform},</if>\r\n            <if test=\"bedNo != null\">bed_no = #{bedNo},</if>\r\n            <if test=\"sendType != null  and sendType != ''\">send_type = #{sendType},</if>\r\n            <if test=\"taskName != null  and taskName != ''\">task_name = #{taskName},</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">task_desc = #{taskDesc},</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">operator_no = #{operatorNo},</if>\r\n            <if test=\"operator != null  and operator != ''\">operator = #{operator},</if>\r\n            <if test=\"hospType != null  and hospType != ''\">hosp_type = #{hospType},</if>\r\n            <if test=\"hospno != null  and hospno != ''\">hospno = #{hospno},</if>\r\n            <if test=\"wechat != null  and wechat != ''\">wechat = #{wechat},</if>\r\n            <if test=\"roomno != null  and roomno != ''\">roomno = #{roomno},</if>\r\n            <if test=\"admindate != null\">admindate = #{admindate},</if>\r\n            <if test=\"deptname != null  and deptname != ''\">deptname = #{deptname},</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">leaveicd10code = #{leaveicd10code},</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">leavediagname = #{leavediagname},</if>\r\n            <if test=\"libtemplateid != null \">libtemplateid = #{libtemplateid},</if>\r\n            <if test=\"libtemplatename != null \">libtemplatename = #{libtemplatename},</if>\r\n            <if test=\"patid != null \">patid = #{patid},</if>\r\n            <if test=\"openid != null \">openid = #{openid},</if>\r\n            <if test=\"longSendTime != null \">long_send_time = #{longSendTime},</if>\r\n            <if test=\"sendstate != null \">sendstate = #{sendstate},</if>\r\n            <if test=\"serviceType != null \">service_type = #{serviceType},</if>\r\n            <if test=\"score != null \">score = #{score},</if>\r\n            <if test=\"visitCount != null \">visit_count = #{visitCount},</if>\r\n            <if test=\"submit != null \">submit = #{submit},</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">leavehospitaldistrictcode\r\n                = #{leavehospitaldistrictcode},\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">leavehospitaldistrictname\r\n                = #{leavehospitaldistrictname},\r\n            </if>\r\n            <if test=\"drname != null \">drname = #{drname},</if>\r\n            <if test=\"drcode != null \">drcode = #{drcode},</if>\r\n            <if test=\"starttime != null \">starttime = #{starttime},</if>\r\n            <if test=\"endtime != null \">endtime = #{endtime},</if>\r\n            <if test=\"excep != null \">excep = #{excep},</if>\r\n            <if test=\"nurseName != null \">nurse_name=#{nurseName},</if>\r\n            <if test=\"nurseId != null \">nurse_id=#{nurseId},</if>\r\n            <if test=\"remark != null \">remark=#{remark},</if>\r\n            <if test=\"suggest != null \">suggest=#{suggest},</if>\r\n            <if test=\"inhospid != null \">inhospid=#{inhospid},</if>\r\n            <if test=\"patfrom != null \">patfrom=#{patfrom},</if>\r\n            <if test=\"taskGuid != null \">taskGuid=#{taskGuid},</if>\r\n            <if test=\"patguid != null \">patguid=#{patguid},</if>\r\n            <if test=\"isVisitAgain != null \">is_visit_again=#{isVisitAgain},</if>\r\n            <if test=\"upid != null \">upid=#{upid},</if>\r\n            <if test=\"visitTime != null \">visit_time=#{visitTime},</if>\r\n            <if test=\"visitDeptCode != null\">visit_dept_code = #{visitDeptCode},</if>\r\n            <if test=\"visitDeptName != null\">visit_dept_name = #{visitDeptName},</if>\r\n            <if test=\"managementDoctorCode != null\">management_doctor_code = #{managementDoctorCode},</if>\r\n            <if test=\"managementDoctor != null\">management_doctor=#{managementDoctor},</if>\r\n        </trim>\r\n        <where>\r\n            <if test=\"patid != null \">and patid = #{patid}</if>\r\n            <if test=\"taskid != null \">and taskid = #{taskid}</if>\r\n        </where>\r\n    </update>\r\n\r\n    <update id=\"updateServiceSubtaskByCondition\" parameterType=\"com.smartor.domain.ServiceSubtask\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">sendname = #{sendname},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"sex != null\">sex = #{sex},</if>\r\n            <if test=\"sendstate != null \">sendstate = #{sendstate},</if>\r\n            <if test=\"age != null\">age = #{age},</if>\r\n            <if test=\"sfzh != null\">sfzh = #{sfzh},</if>\r\n            <if test=\"addr != null\">addr = #{addr},</if>\r\n            <if test=\"senderdetail != null\">senderdetail = #{senderdetail},</if>\r\n            <if test=\"type != null\">type = #{type},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatename != null\">templatename = #{templatename},</if>\r\n            <if test=\"senddate != null\">senddate = #{senddate},</if>\r\n            <if test=\"senduuid != null\">senduuid = #{senduuid},</if>\r\n            <if test=\"result != null\">result = #{result},</if>\r\n            <if test=\"finishtime != null\">finishtime = #{finishtime},</if>\r\n            <if test=\"recordid != null\">recordid = #{recordid},</if>\r\n            <if test=\"exrecallcount != null\">exrecallcount = #{exrecallcount},</if>\r\n            <if test=\"pulltime != null\">pulltime = #{pulltime},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"labelstatus != null\">labelstatus = #{labelstatus},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"pid != null\">pid = #{pid},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"visitCount != null\">visit_count = #{visitCount},</if>\r\n            <if test=\"isVisitAgain != null\">is_visit_again = #{isVisitAgain},</if>\r\n            <if test=\"textParam != null\">text_param = #{textParam},</if>\r\n            <if test=\"preachform != null\">preachform = #{preachform},</if>\r\n            <if test=\"bedNo != null\">bed_no = #{bedNo},</if>\r\n            <if test=\"sendType != null  and sendType != ''\">send_type = #{sendType},</if>\r\n            <if test=\"taskName != null  and taskName != ''\">task_name = #{taskName},</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">task_desc = #{taskDesc},</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">operator_no = #{operatorNo},</if>\r\n            <if test=\"operator != null  and operator != ''\">operator = #{operator},</if>\r\n            <if test=\"hospType != null  and hospType != ''\">hosp_type = #{hospType},</if>\r\n            <if test=\"hospno != null  and hospno != ''\">hospno = #{hospno},</if>\r\n            <if test=\"wechat != null  and wechat != ''\">wechat = #{wechat},</if>\r\n            <if test=\"roomno != null  and roomno != ''\">roomno = #{roomno},</if>\r\n            <if test=\"admindate != null\">admindate = #{admindate},</if>\r\n            <if test=\"deptname != null  and deptname != ''\">deptname = #{deptname},</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">leaveicd10code = #{leaveicd10code},</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">leavediagname = #{leavediagname},</if>\r\n            <if test=\"libtemplateid != null \">libtemplateid = #{libtemplateid},</if>\r\n            <if test=\"libtemplatename != null \">libtemplatename = #{libtemplatename},</if>\r\n            <if test=\"patid != null \">patid = #{patid},</if>\r\n            <if test=\"openid != null \">openid = #{openid},</if>\r\n            <if test=\"longSendTime != null \">long_send_time = #{longSendTime},</if>\r\n            <if test=\"serviceType != null \">service_type = #{serviceType},</if>\r\n            <if test=\"score != null \">score = #{score},</if>\r\n            <if test=\"submit != null \">submit = #{submit},</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">leavehospitaldistrictcode\r\n                = #{leavehospitaldistrictcode},\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">leavehospitaldistrictname\r\n                = #{leavehospitaldistrictname},\r\n            </if>\r\n            <if test=\"drname != null \">drname = #{drname},</if>\r\n            <if test=\"drcode != null \">drcode = #{drcode},</if>\r\n            <if test=\"endtime != null \">endtime = #{endtime},</if>\r\n            <if test=\"starttime != null \">starttime = #{starttime},</if>\r\n            <if test=\"excep != null \">excep = #{excep},</if>\r\n            <if test=\"nurseName != null \">nurse_name=#{nurseName},</if>\r\n            <if test=\"nurseId != null \">nurse_id=#{nurseId},</if>\r\n            <if test=\"remark != null \">remark=#{remark},</if>\r\n            <if test=\"suggest != null \">suggest=#{suggest},</if>\r\n            <if test=\"inhospid != null \">inhospid=#{inhospid},</if>\r\n            <if test=\"patfrom != null \">patfrom=#{patfrom},</if>\r\n            <if test=\"taskGuid != null \">task_guid=#{taskGuid},</if>\r\n            <if test=\"patguid != null \">patguid=#{patguid},</if>\r\n            <if test=\"upid != null \">upid=#{upid},</if>\r\n            <if test=\"visitTime != null \">visit_time=#{visitTime},</if>\r\n            <if test=\"visitDeptCode != null\">visit_dept_code = #{visitDeptCode},</if>\r\n            <if test=\"visitDeptName != null\">visit_dept_name = #{visitDeptName},</if>\r\n            <if test=\"managementDoctorCode != null\">management_doctor_code = #{managementDoctorCode},</if>\r\n            <if test=\"managementDoctor != null\">management_doctor=#{managementDoctor},</if>\r\n        </trim>\r\n        where patid = #{patid} and taskid = #{taskid}\r\n    </update>\r\n\r\n    <update id=\"updateServiceSubtaskByTaskGuid\" parameterType=\"com.smartor.domain.ServiceSubtask\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">sendname = #{sendname},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"sex != null\">sex = #{sex},</if>\r\n            <if test=\"sendstate != null \">sendstate = #{sendstate},</if>\r\n            <if test=\"age != null\">age = #{age},</if>\r\n            <if test=\"sfzh != null\">sfzh = #{sfzh},</if>\r\n            <if test=\"addr != null\">addr = #{addr},</if>\r\n            <if test=\"senderdetail != null\">senderdetail = #{senderdetail},</if>\r\n            <if test=\"type != null\">type = #{type},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatename != null\">templatename = #{templatename},</if>\r\n            <if test=\"senddate != null\">senddate = #{senddate},</if>\r\n            <if test=\"senduuid != null\">senduuid = #{senduuid},</if>\r\n            <if test=\"result != null\">result = #{result},</if>\r\n            <if test=\"finishtime != null\">finishtime = #{finishtime},</if>\r\n            <if test=\"recordid != null\">recordid = #{recordid},</if>\r\n            <if test=\"exrecallcount != null\">exrecallcount = #{exrecallcount},</if>\r\n            <if test=\"pulltime != null\">pulltime = #{pulltime},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"labelstatus != null\">labelstatus = #{labelstatus},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"pid != null\">pid = #{pid},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"textParam != null\">text_param = #{textParam},</if>\r\n            <if test=\"preachform != null\">preachform = #{preachform},</if>\r\n            <if test=\"bedNo != null\">bed_no = #{bedNo},</if>\r\n            <if test=\"sendType != null  and sendType != ''\">send_type = #{sendType},</if>\r\n            <if test=\"taskName != null  and taskName != ''\">task_name = #{taskName},</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">task_desc = #{taskDesc},</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">operator_no = #{operatorNo},</if>\r\n            <if test=\"operator != null  and operator != ''\">operator = #{operator},</if>\r\n            <if test=\"hospType != null  and hospType != ''\">hosp_type = #{hospType},</if>\r\n            <if test=\"hospno != null  and hospno != ''\">hospno = #{hospno},</if>\r\n            <if test=\"wechat != null  and wechat != ''\">wechat = #{wechat},</if>\r\n            <if test=\"roomno != null  and roomno != ''\">roomno = #{roomno},</if>\r\n            <if test=\"admindate != null \">admindate = #{admindate},</if>\r\n            <if test=\"visitCount != null \">visit_count = #{visitCount},</if>\r\n            <if test=\"isVisitAgain != null \">is_visit_again = #{isVisitAgain},</if>\r\n            <if test=\"deptname != null  and deptname != ''\">deptname = #{deptname},</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">leaveicd10code = #{leaveicd10code},</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">leavediagname = #{leavediagname},</if>\r\n            <if test=\"libtemplateid != null \">libtemplateid = #{libtemplateid},</if>\r\n            <if test=\"libtemplatename != null \">libtemplatename = #{libtemplatename},</if>\r\n            <if test=\"patid != null \">patid = #{patid},</if>\r\n            <if test=\"openid != null \">openid = #{openid},</if>\r\n            <if test=\"longSendTime != null \">long_send_time = #{longSendTime},</if>\r\n            <if test=\"serviceType != null \">service_type = #{serviceType},</if>\r\n            <if test=\"score != null \">score = #{score},</if>\r\n            <if test=\"submit != null \">submit = #{submit},</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">leavehospitaldistrictcode\r\n                = #{leavehospitaldistrictcode},\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">leavehospitaldistrictname\r\n                = #{leavehospitaldistrictname},\r\n            </if>\r\n            <if test=\"drname != null \">drname = #{drname},</if>\r\n            <if test=\"drcode != null \">drcode = #{drcode},</if>\r\n            <if test=\"endtime != null \">endtime = #{endtime},</if>\r\n            <if test=\"starttime != null \">starttime = #{starttime},</if>\r\n            <if test=\"excep != null \">excep = #{excep},</if>\r\n            <if test=\"nurseName != null \">nurse_name=#{nurseName},</if>\r\n            <if test=\"nurseId != null \">nurse_id=#{nurseId},</if>\r\n            <if test=\"remark != null \">remark=#{remark},</if>\r\n            <if test=\"suggest != null \">suggest=#{suggest},</if>\r\n            <if test=\"inhospid != null \">inhospid=#{inhospid},</if>\r\n            <if test=\"patfrom != null \">patfrom=#{patfrom},</if>\r\n            <if test=\"taskGuid != null \">task_guid=#{taskGuid},</if>\r\n            <if test=\"patguid != null \">patguid=#{patguid},</if>\r\n            <if test=\"upid != null \">upid=#{upid},</if>\r\n            <if test=\"visitTime != null \">visit_time=#{visitTime},</if>\r\n            <if test=\"visitDeptCode != null\">visit_dept_code = #{visitDeptCode},</if>\r\n            <if test=\"visitDeptName != null\">visit_dept_name = #{visitDeptName},</if>\r\n            <if test=\"managementDoctorCode != null\">management_doctor_code = #{managementDoctorCode},</if>\r\n            <if test=\"managementDoctor != null\">management_doctor=#{managementDoctor},</if>\r\n        </trim>\r\n        where task_guid = #{taskGuid} and task_name = #{taskName}\r\n    </update>\r\n\r\n\r\n    <update id=\"deleteServiceSubtaskById\" parameterType=\"Long\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <update id=\"deleteServiceSubtaskByCondition\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where patid = #{patid} and taskid = #{taskid}\r\n    </update>\r\n\r\n    <select id=\"getSfStatistics\" parameterType=\"com.smartor.domain.ServiceSubtaskCountReq\"\r\n            resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n                AND leavehospitaldistrictcode IN\r\n                <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leavehospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n                AND deptcode IN\r\n                <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"serviceType != null and serviceType.size() > 0\">\r\n                AND service_type IN\r\n                <foreach collection=\"serviceType\" item=\"serviceType\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{serviceType}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"startTime != null and endTime!=null\">\r\n                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')\r\n                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"visitDeptCode != null\">and visit_dept_code = #{visitDeptCode}</if>\r\n            <if test=\"visitDeptName != null\">abd visit_dept_name = #{visitDeptName}</if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"getDataByTime\" resultMap=\"ServiceSubtaskResult\">\r\n\r\n        select id,\r\n               sendname,\r\n               long_send_time,\r\n               phone,\r\n               suggest,\r\n               sex,\r\n               age,\r\n               openid,\r\n               sfzh,\r\n               addr,\r\n               senderdetail,\r\n               type,\r\n               taskid,\r\n               visit_time,\r\n               templateid,\r\n               templatename,\r\n               senddate,\r\n               senduuid,\r\n               result,\r\n               finishtime,\r\n               recordid,\r\n               exrecallcount,\r\n               pulltime,\r\n               deptcode,\r\n               labelstatus,\r\n               del_flag,\r\n               upid,\r\n               update_by,\r\n               update_time,\r\n               create_by,\r\n               create_time,\r\n               isupload,\r\n               upload_time,\r\n               orgid,\r\n               pid,\r\n               visit_count,\r\n               is_visit_again,\r\n               guid,\r\n               text_param,\r\n               preachform,\r\n               bed_no,\r\n               send_type,\r\n               task_name,\r\n               task_desc,\r\n               operator_no,\r\n               operator,\r\n               hospno,\r\n               hosp_type,\r\n               wechat,\r\n               roomno,\r\n               admindate,\r\n               patid,\r\n               service_type,\r\n               deptname,\r\n               score,\r\n               drname,\r\n               drcode,\r\n               starttime,\r\n               endtime,\r\n               leavehospitaldistrictcode,\r\n               leavehospitaldistrictname,\r\n               excep,\r\n               nurse_id,\r\n               nurse_name,\r\n               remark,\r\n               inhospid,\r\n               patfrom,\r\n               task_guid,\r\n               leavediagname,\r\n               patguid,\r\n               visitDeptCode,\r\n               visitDeptName,\r\n               management_doctor_code,\r\n               management_doctor,\r\n               leaveicd10code\r\n        FROM service_subtask,\r\n             JSON_TABLE(send_time_slot, '$[*]' COLUMNS (\r\n        begantime DATETIME PATH '$.begantime',\r\n        endtime DATETIME PATH '$.endtime'\r\n        )) AS jt\r\n        WHERE jt.begantime > #{beganTime}\r\n          AND jt.begantime &lt;= #{endTime}\r\n          AND del_flag = 0\r\n    </select>\r\n\r\n    <!--    鑾峰彇闅忚闂ㄨ瘖姣忔湀鐨勬暟閲�-->\r\n    <select id=\"getSfFzInfoEveryMonth\" parameterType=\"com.smartor.domain.ServiceSubtaskCountReq\"\r\n            resultMap=\"ServiceSubtaskResult2\">\r\n        SELECT DATE_FORMAT(st.finishtime, '%Y-%m') AS month,\r\n              st.service_type as service_type,\r\n\t\t      st.id as subTaskId,\r\n    COUNT(*) AS count\r\n        FROM\r\n            service_subtask st\r\n            JOIN\r\n            sys_user_dept dd\r\n        ON dep.dept_id = dd.dept_id\r\n        WHERE\r\n            dd.user_id =#{userId}\r\n          AND st.finishtime IS NOT NULL\r\n          and DATE_FORMAT(st.finishtime\r\n            , '%Y-%m') &gt;= #{startTime}\r\n          and DATE_FORMAT(st.finishtime\r\n            , '%Y-%m') &lt;= #{endTime}\r\n        GROUP BY\r\n            month, st.service_type, st.id\r\n        ORDER BY\r\n            month, st.service_type, st.id;\r\n    </select>\r\n\r\n    <select id=\"getDeptRanking\" parameterType=\"com.smartor.domain.PatMedReq\" resultType=\"com.smartor.domain.PatMedRes\">\r\n        SELECT deptname,\r\n               count(1) AS rc\r\n        FROM service_subtask\r\n        WHERE DATE_FORMAT(finishtime, '%Y-%m-%d') >= #{startDate}\r\n          AND DATE_FORMAT(finishtime, '%Y-%m-%d') &lt;= #{endDate}\r\n        GROUP BY deptname\r\n    </select>\r\n\r\n    <!-- 鏈嶅姟缁熻鏌ヨ - 鎸夋椂闂寸淮搴︾粺璁″嚭闄�/闂ㄨ瘖闅忚鏁版嵁 -->\r\n    <select id=\"getServiceStatistics\" parameterType=\"com.smartor.domain.ServiceStatisticsRequest\"\r\n            resultType=\"com.smartor.domain.ServiceStatisticsResponse\">\r\n        SELECT\r\n        timePeriod,\r\n        SUM(dischargeFollowCount) AS dischargeFollowCount,\r\n        SUM(outpatientFollowCount) AS outpatientFollowCount,\r\n        SUM(pmiCount) AS pmiCount,\r\n        SUM(pmoCount) AS pmoCount\r\n        FROM (\r\n        -- 闅忚鏁版嵁\r\n        SELECT\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(visit_time, '%Y-%m-%d') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(visit_time, '%Y-%m') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(visit_time, '%Y') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0')) AS timePeriod,\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(visit_time, '%Y-%m-%d') AS timePeriod,\r\n            </otherwise>\r\n        </choose>\r\n        COUNT(CASE WHEN service_type = '2' THEN 1 END) AS dischargeFollowCount,\r\n        COUNT(CASE WHEN service_type = '3' THEN 1 END) AS outpatientFollowCount,\r\n        0 AS pmiCount,\r\n        0 AS pmoCount\r\n        FROM service_subtask\r\n        WHERE\r\n        del_flag = '0'\r\n        <if test=\"startDate != null and endDate != null\">\r\n            and date_format(visit_time,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n            and date_format(visit_time,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n        </if>\r\n\r\n        <if test=\"orgid != null\">\r\n            AND orgid = #{orgid}\r\n        </if>\r\n\r\n        <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n            AND deptcode IN\r\n            <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                #{deptcode}\r\n            </foreach>\r\n        </if>\r\n\r\n        <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n            AND leavehospitaldistrictcode IN\r\n            <foreach collection=\"leavehospitaldistrictcodes\" item=\"districtcode\" open=\"(\" separator=\",\" close=\")\">\r\n                #{districtcode}\r\n            </foreach>\r\n        </if>\r\n\r\n        <if test=\"serviceTypes != null and serviceTypes.size() > 0\">\r\n            AND service_type IN\r\n            <foreach collection=\"serviceTypes\" item=\"serviceType\" open=\"(\" separator=\",\" close=\")\">\r\n                #{serviceType}\r\n            </foreach>\r\n        </if>\r\n\r\n        GROUP BY\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(visit_time, '%Y-%m-%d')\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(visit_time, '%Y-%m')\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(visit_time, '%Y')\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0'))\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(visit_time, '%Y-%m-%d')\r\n            </otherwise>\r\n        </choose>\r\n\r\n        UNION ALL\r\n\r\n        -- 鍑洪櫌浜烘鏁版嵁\r\n        SELECT\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(endtime, '%Y-%m-%d') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(endtime, '%Y-%m') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(endtime, '%Y') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0')) AS timePeriod,\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(endtime, '%Y-%m-%d') AS timePeriod,\r\n            </otherwise>\r\n        </choose>\r\n        0 AS dischargeFollowCount,\r\n        0 AS outpatientFollowCount,\r\n        COUNT( patid) AS pmiCount,\r\n        0 AS pmoCount\r\n        FROM pat_med_inhosp\r\n        WHERE del_flag = '0'\r\n        <if test=\"startDate != null and endDate != null\">\r\n            and date_format(endtime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n            and date_format(endtime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n        </if>\r\n\r\n        AND inhospstate=1\r\n        <if test=\"orgid != null\">\r\n            AND orgid = #{orgid}\r\n        </if>\r\n\r\n        <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n            AND leavehospitaldistrictcode IN\r\n            <foreach collection=\"leavehospitaldistrictcodes\" item=\"districtcode\" open=\"(\" separator=\",\" close=\")\">\r\n                #{districtcode}\r\n            </foreach>\r\n        </if>\r\n\r\n        <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n            AND leaveldeptcode IN\r\n            <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                #{deptcode}\r\n            </foreach>\r\n        </if>\r\n\r\n        GROUP BY\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(endtime, '%Y-%m-%d')\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(endtime, '%Y-%m')\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(endtime, '%Y')\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0'))\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(endtime, '%Y-%m-%d')\r\n            </otherwise>\r\n        </choose>\r\n\r\n        UNION ALL\r\n\r\n        -- 闂ㄨ瘖浜烘鏁版嵁\r\n        SELECT\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(admitdate, '%Y-%m') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(admitdate, '%Y') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0')) AS timePeriod,\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod,\r\n            </otherwise>\r\n        </choose>\r\n        0 AS dischargeFollowCount,\r\n        0 AS outpatientFollowCount,\r\n        0 AS pmiCount,\r\n        COUNT( patid) AS pmoCount\r\n        FROM pat_med_outhosp\r\n        WHERE del_flag = '0'\r\n        <if test=\"startDate != null and endDate != null\">\r\n            and date_format(admitdate,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n            and date_format(admitdate,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n        </if>\r\n        <if test=\"orgid != null\">\r\n            AND orgid = #{orgid}\r\n        </if>\r\n\r\n        <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n            AND deptcode IN\r\n            <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                #{deptcode}\r\n            </foreach>\r\n        </if>\r\n\r\n        GROUP BY\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(admitdate, '%Y-%m-%d')\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(admitdate, '%Y-%m')\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(admitdate, '%Y')\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0'))\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(admitdate, '%Y-%m-%d')\r\n            </otherwise>\r\n        </choose>\r\n        ) AS combined_data\r\n        GROUP BY timePeriod\r\n        ORDER BY timePeriod DESC\r\n    </select>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml	(date 1758775914589)
-@@ -84,6 +84,7 @@
-         <result property="visitDeptCode" column="visit_dept_code"/>
-         <result property="managementDoctor" column="management_doctor"/>
-         <result property="managementDoctorCode" column="management_doctor_code"/>
-+        <result property="currentPreachform" column="current_preachform"/>
-     </resultMap>
- 
-     <resultMap type="com.smartor.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2">
-@@ -100,6 +101,7 @@
-                patfrom,
-                management_doctor,
-                management_doctor_code,
-+               current_preachform,
-                upid,
-                visit_dept_name,
-                visit_dept_code,
-@@ -181,6 +183,36 @@
-         from service_subtask
-     </sql>
- 
-+    <select id="selectServiceSubtaskBySendstate" parameterType="com.smartor.domain.ServiceSubtaskVO"
-+            resultMap="ServiceSubtaskResult">
-+
-+        <include refid="selectServiceSubtaskVo"/>
-+        <where>
-+            del_flag=0
-+            and taskid = #{taskid}
-+            AND sendstate IN
-+            <foreach collection="sendstates" item="sendstate" open="(" separator=","
-+                     close=")">
-+                #{sendstate}
-+            </foreach>
-+        </where>
-+    </select>
-+
-+    <select id="queryServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
-+            resultMap="ServiceSubtaskResult">
-+        <include refid="selectServiceSubtaskVo"/>
-+        <where>
-+            del_flag=0
-+            <if test="taskid != null ">and taskid = #{taskid}</if>
-+            <if test="startOutHospTime != null">
-+                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d')
-+            </if>
-+            <if test="sendstate != null ">and sendstate = #{sendstate}</if>
-+        </where>
-+
-+    </select>
-+
-+
-     <select id="selectServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
-             resultMap="ServiceSubtaskResult">
-         <include refid="selectServiceSubtaskVo"/>
-@@ -271,6 +303,9 @@
-                 </if>
-             </if>
- 
-+            <if test="visitTime != null">
-+                AND date_format(visit_time,'%y%m%d') = date_format(#{visitTime},'%y%m%d')
-+            </if>
-             <if test="senddate != null ">and senddate = #{senddate}</if>
-             <if test="senduuid != null  and senduuid != ''">and senduuid = #{senduuid}</if>
-             <if test="result != null  and result != ''">and result = #{result}</if>
-@@ -286,6 +321,7 @@
-             <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
-             <if test="pid != null ">and pid = #{pid}</if>
-             <if test="preachform != null ">and preachform = #{preachform}</if>
-+            <if test="currentPreachform != null ">and current_preachform = #{currentPreachform}</if>
-             <if test="guid != null  and guid != ''">and guid = #{guid}</if>
-             <if test="textParam != null  and textParam != ''">and text_param = #{textParam}</if>
-             <if test="bedNo != null">and bed_no = #{bedNo}</if>
-@@ -320,7 +356,7 @@
-             <if test="createBy != null">and create_by = #{createBy}</if>
-             <if test="taskGuid != null">and task_guid = #{taskGuid}</if>
-             <if test="isVisitAgain != null">and is_visit_again = #{isVisitAgain}</if>
--            <if test="visitTime != null">and visit_time = #{visitTime}</if>
-+            <!-- <if test="visitTime != null">and visit_time = #{visitTime}</if> -->
-             <!--<if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
-             <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>-->
-             <if test="visitCount != null and visitCount > 1 and visitDeptCodes != null and visitDeptCodes.size() > 0">
-@@ -361,6 +397,7 @@
-             <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>
-             <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if>
-             <if test="managementDoctor != null">and management_doctor = #{managementDoctor}</if>
-+            <if test="currentPreachform != null">and current_preachform = #{currentPreachform}</if>
-         </where>
- 
-     </select>
-@@ -415,6 +452,7 @@
-             <if test="visitTime != null ">and visit_time = #{visitTime}</if>
-             <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
-             <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>
-+            <if test="currentPreachform != null">and current_preachform = #{currentPreachform}</if>
-             <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if>
-             <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if>
-         </where>
-@@ -579,6 +617,7 @@
-             <if test="visitDeptName != null">visit_dept_name,</if>
-             <if test="managementDoctorCode != null">management_doctor_code,</if>
-             <if test="managementDoctor != null">management_doctor,</if>
-+            <if test="currentPreachform != null">current_preachform,</if>
-         </trim>
-         <trim prefix="values (" suffix=")" suffixOverrides=",">
-             <if test="sendname != null">#{sendname},</if>
-@@ -662,6 +701,7 @@
-             <if test="visitDeptName != null">#{visitDeptName},</if>
-             <if test="managementDoctorCode != null">#{managementDoctorCode},</if>
-             <if test="managementDoctor != null">#{managementDoctor},</if>
-+            <if test="currentPreachform != null">#{currentPreachform},</if>
-         </trim>
-     </insert>
- 
-@@ -750,6 +790,7 @@
-             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if>
-             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
-             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
-+            <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
-         </trim>
-         where id = #{id}
-     </update>
-@@ -839,6 +880,7 @@
-             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if>
-             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
-             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
-+            <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
-         </trim>
-         <where>
-             <if test="patid != null ">and patid = #{patid}</if>
-@@ -930,6 +972,7 @@
-             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if>
-             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
-             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
-+            <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
-         </trim>
-         where patid = #{patid} and taskid = #{taskid}
-     </update>
-@@ -1018,6 +1061,7 @@
-             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if>
-             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
-             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
-+            <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
-         </trim>
-         where task_guid = #{taskGuid} and task_name = #{taskName}
-     </update>
-@@ -1086,6 +1130,7 @@
-                openid,
-                sfzh,
-                addr,
-+               current_preachform,
-                senderdetail,
-                type,
-                taskid,
-Index: smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.ServiceSubtaskDetailMapper\">\r\n\r\n    <resultMap type=\"com.smartor.domain.ServiceSubtaskDetail\" id=\"ServiceSubtaskDetailResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"subId\" column=\"sub_id\"/>\r\n        <result property=\"targetid\" column=\"targetid\"/>\r\n        <result property=\"taskid\" column=\"taskid\"/>\r\n        <result property=\"uuid\" column=\"uuid\"/>\r\n        <result property=\"phone\" column=\"phone\"/>\r\n        <result property=\"operate\" column=\"operate\"/>\r\n        <result property=\"displayno\" column=\"displayno\"/>\r\n        <result property=\"inbound\" column=\"inbound\"/>\r\n        <result property=\"incoming\" column=\"incoming\"/>\r\n        <result property=\"assigntime\" column=\"assigntime\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"answertime\" column=\"answertime\"/>\r\n        <result property=\"silent\" column=\"silent\"/>\r\n        <result property=\"dtmfKey\" column=\"dtmf_key\"/>\r\n        <result property=\"musicpath\" column=\"musicpath\"/>\r\n        <result property=\"sentIndex\" column=\"sent_index\"/>\r\n        <result property=\"sentBegin\" column=\"sent_begin\"/>\r\n        <result property=\"asrtext\" column=\"asrtext\"/>\r\n        <result property=\"beginTime\" column=\"begin_time\"/>\r\n        <result property=\"endTime\" column=\"end_time\"/>\r\n        <result property=\"sentEnd\" column=\"sent_end\"/>\r\n        <result property=\"recordpath\" column=\"recordpath\"/>\r\n        <result property=\"recordurl\" column=\"recordurl\"/>\r\n        <result property=\"templateid\" column=\"templateid\"/>\r\n        <result property=\"templatequestionnum\" column=\"templatequestionnum\"/>\r\n        <result property=\"switchid\" column=\"switchid\"/>\r\n        <result property=\"questiontext\" column=\"questiontext\"/>\r\n        <result property=\"questionvoice\" column=\"questionvoice\"/>\r\n        <result property=\"categoryname\" column=\"categoryname\"/>\r\n        <result property=\"targetoptions\" column=\"targetoptions\"/>\r\n        <result property=\"targetvalue\" column=\"targetvalue\"/>\r\n        <result property=\"matchedtext\" column=\"matchedtext\"/>\r\n        <result property=\"addtime\" column=\"addtime\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"valueType\" column=\"value_type\"/>\r\n        <result property=\"scriptid\" column=\"scriptid\"/>\r\n        <result property=\"answerps\" column=\"answerps\"/>\r\n        <result property=\"comment\" column=\"comment\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"extemplateText\" column=\"extemplate_text\"/>\r\n    </resultMap>\r\n    <resultMap type=\"com.smartor.domain.ServiceSubtaskDetailTarget\" id=\"ServiceSubtaskDetailTargetResult\">\r\n        <result property=\"targetid\" column=\"targetid\"/>\r\n        <result property=\"taskid\" column=\"taskid\"/>\r\n        <result property=\"targetname\" column=\"targetname\"/>\r\n        <result property=\"matchedtext\" column=\"matchedtext\"/>\r\n        <result property=\"count\" column=\"count\"/>\r\n    </resultMap>\r\n    <sql id=\"selectServiceSubtaskDetailVo\">\r\n        select id,\r\n               sub_id,\r\n               targetid,\r\n               answerps,\r\n               scriptid,\r\n               extemplate_text,\r\n               comment,\r\n               patid,\r\n               taskid,\r\n               uuid,\r\n               guid,\r\n               phone,\r\n               operate,\r\n               displayno,\r\n               inbound,\r\n               incoming,\r\n               assigntime,\r\n               starttime,\r\n               answertime,\r\n               silent,\r\n               dtmf_key,\r\n               musicpath,\r\n               sent_index,\r\n               sent_begin,\r\n               asrtext,\r\n               begin_time,\r\n               end_time,\r\n               sent_end,\r\n               recordpath,\r\n               recordurl,\r\n               templateid,\r\n               templatequestionnum,\r\n               switchid,\r\n               questiontext,\r\n               questionvoice,\r\n               categoryname,\r\n               targetoptions,\r\n               targetvalue,\r\n               matchedtext,\r\n               addtime,\r\n               isupload,\r\n               upload_time,\r\n               orgid,\r\n               create_time,\r\n               del_flag,\r\n               update_by,\r\n               update_time,\r\n               value_type,\r\n               create_by\r\n        from service_subtask_detail\r\n    </sql>\r\n\r\n    <select id=\"selectServiceSubtaskDetailList\" parameterType=\"com.smartor.domain.ServiceSubtaskDetail\"\r\n            resultMap=\"ServiceSubtaskDetailResult\">\r\n        <include refid=\"selectServiceSubtaskDetailVo\"/>\r\n        <where>\r\n            <if test=\"subId != null\">and sub_id = #{subId}</if>\r\n            <if test=\"targetid != null\">and targetid = #{targetid}</if>\r\n            <if test=\"extemplateText != null\">and extemplate_text = #{extemplateText}</if>\r\n            <if test=\"taskid != null\">and taskid = #{taskid}</if>\r\n            <if test=\"uuid != null  and uuid != ''\">and uuid = #{uuid}</if>\r\n            <if test=\"phone != null  and phone != ''\">and phone = #{phone}</if>\r\n            <if test=\"operate != null  and operate != ''\">and operate = #{operate}</if>\r\n            <if test=\"displayno != null  and displayno != ''\">and displayno = #{displayno}</if>\r\n            <if test=\"inbound != null \">and inbound = #{inbound}</if>\r\n            <if test=\"incoming != null \">and incoming = #{incoming}</if>\r\n            <if test=\"assigntime != null \">and assigntime = #{assigntime}</if>\r\n            <if test=\"starttime != null \">and starttime = #{starttime}</if>\r\n            <if test=\"answertime != null \">and answertime = #{answertime}</if>\r\n            <if test=\"silent != null \">and silent = #{silent}</if>\r\n            <if test=\"dtmfKey != null  and dtmfKey != ''\">and dtmf_key = #{dtmfKey}</if>\r\n            <if test=\"musicpath != null  and musicpath != ''\">and musicpath = #{musicpath}</if>\r\n            <if test=\"sentIndex != null \">and sent_index = #{sentIndex}</if>\r\n            <if test=\"sentBegin != null \">and sent_begin = #{sentBegin}</if>\r\n            <if test=\"asrtext != null  and asrtext != ''\">and asrtext = #{asrtext}</if>\r\n            <if test=\"beginTime != null \">and begin_time = #{beginTime}</if>\r\n            <if test=\"endTime != null \">and end_time = #{endTime}</if>\r\n            <if test=\"sentEnd != null \">and sent_end = #{sentEnd}</if>\r\n            <if test=\"recordpath != null  and recordpath != ''\">and recordpath = #{recordpath}</if>\r\n            <if test=\"recordurl != null  and recordurl != ''\">and recordurl = #{recordurl}</if>\r\n            <if test=\"templateid != null  and templateid != ''\">and templateid = #{templateid}</if>\r\n            <if test=\"templatequestionnum != null \">and templatequestionnum = #{templatequestionnum}</if>\r\n            <if test=\"switchid != null \">and switchid = #{switchid}</if>\r\n            <if test=\"questiontext != null  and questiontext != ''\">and questiontext = #{questiontext}</if>\r\n            <if test=\"questionvoice != null  and questionvoice != ''\">and questionvoice = #{questionvoice}</if>\r\n            <if test=\"categoryname != null  and categoryname != ''\">and categoryname like concat('%', #{categoryname},\r\n                '%')\r\n            </if>\r\n            <if test=\"targetoptions != null  and targetoptions != ''\">and targetoptions = #{targetoptions}</if>\r\n            <if test=\"targetvalue != null  and targetvalue != ''\">and targetvalue = #{targetvalue}</if>\r\n            <if test=\"matchedtext != null  and matchedtext != ''\">and matchedtext = #{matchedtext}</if>\r\n            <if test=\"addtime != null \">and addtime = #{addtime}</if>\r\n            <if test=\"isupload != null \">and isupload = #{isupload}</if>\r\n            <if test=\"uploadTime != null \">and upload_time = #{uploadTime}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"valueType != null  and valueType != ''\">and value_type = #{valueType}</if>\r\n            <if test=\"answerps != null  and answerps != ''\">and answerps = #{answerps}</if>\r\n            <if test=\"comment != null  and comment != ''\">and comment = #{comment}</if>\r\n            <if test=\"scriptid != null \">and scriptid = #{scriptid}</if>\r\n            <if test=\" patid != null\">and patid = #{patid}</if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectServiceSubtaskDetailByCalldetailid\" parameterType=\"String\" resultMap=\"ServiceSubtaskDetailResult\">\r\n        <include refid=\"selectServiceSubtaskDetailVo\"/>\r\n        where id = #{id}\r\n    </select>\r\n\r\n    <insert id=\"insertServiceSubtaskDetail\" parameterType=\"com.smartor.domain.ServiceSubtaskDetail\">\r\n        insert into service_subtask_detail\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"id != null\">id,</if>\r\n            <if test=\"subId != null\">sub_id,</if>\r\n            <if test=\"targetid != null\">targetid,</if>\r\n            <if test=\"taskid != null\">taskid,</if>\r\n            <if test=\"uuid != null\">uuid,</if>\r\n            <if test=\"phone != null\">phone,</if>\r\n            <if test=\"operate != null\">operate,</if>\r\n            <if test=\"displayno != null\">displayno,</if>\r\n            <if test=\"inbound != null\">inbound,</if>\r\n            <if test=\"incoming != null\">incoming,</if>\r\n            <if test=\"assigntime != null\">assigntime,</if>\r\n            <if test=\"starttime != null\">starttime,</if>\r\n            <if test=\"answertime != null\">answertime,</if>\r\n            <if test=\"silent != null\">silent,</if>\r\n            <if test=\"dtmfKey != null\">dtmf_key,</if>\r\n            <if test=\"musicpath != null\">musicpath,</if>\r\n            <if test=\"sentIndex != null\">sent_index,</if>\r\n            <if test=\"sentBegin != null\">sent_begin,</if>\r\n            <if test=\"asrtext != null\">asrtext,</if>\r\n            <if test=\"beginTime != null\">begin_time,</if>\r\n            <if test=\"endTime != null\">end_time,</if>\r\n            <if test=\"sentEnd != null\">sent_end,</if>\r\n            <if test=\"recordpath != null\">recordpath,</if>\r\n            <if test=\"recordurl != null\">recordurl,</if>\r\n            <if test=\"templateid != null\">templateid,</if>\r\n            <if test=\"templatequestionnum != null\">templatequestionnum,</if>\r\n            <if test=\"switchid != null\">switchid,</if>\r\n            <if test=\"questiontext != null\">questiontext,</if>\r\n            <if test=\"questionvoice != null\">questionvoice,</if>\r\n            <if test=\"categoryname != null\">categoryname,</if>\r\n            <if test=\"targetoptions != null\">targetoptions,</if>\r\n            <if test=\"targetvalue != null\">targetvalue,</if>\r\n            <if test=\"matchedtext != null\">matchedtext,</if>\r\n            <if test=\"addtime != null\">addtime,</if>\r\n            <if test=\"isupload != null\">isupload,</if>\r\n            <if test=\"uploadTime != null\">upload_time,</if>\r\n            <if test=\"orgid != null\">orgid,</if>\r\n            <if test=\"createTime != null\">create_time,</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag,</if>\r\n            <if test=\"updateBy != null\">update_by,</if>\r\n            <if test=\"updateTime != null\">update_time,</if>\r\n            <if test=\"createBy != null\">create_by,</if>\r\n            <if test=\"valueType != null\">value_type,</if>\r\n            <if test=\"answerps != null  and answerps != ''\">answerps,</if>\r\n            <if test=\"comment != null  and comment != ''\">comment,</if>\r\n            <if test=\"scriptid != null \">scriptid,</if>\r\n            <if test=\" patid != null\">patid,</if>\r\n            <if test=\" extemplateText != null\">extemplate_text,</if>\r\n            <if test=\" guid != null\">guid,</if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"id != null\">#{id},</if>\r\n            <if test=\"subId != null\">#{subId},</if>\r\n            <if test=\"targetid != null\">#{targetid},</if>\r\n            <if test=\"taskid != null\">#{taskid},</if>\r\n            <if test=\"uuid != null\">#{uuid},</if>\r\n            <if test=\"phone != null\">#{phone},</if>\r\n            <if test=\"operate != null\">#{operate},</if>\r\n            <if test=\"displayno != null\">#{displayno},</if>\r\n            <if test=\"inbound != null\">#{inbound},</if>\r\n            <if test=\"incoming != null\">#{incoming},</if>\r\n            <if test=\"assigntime != null\">#{assigntime},</if>\r\n            <if test=\"starttime != null\">#{starttime},</if>\r\n            <if test=\"answertime != null\">#{answertime},</if>\r\n            <if test=\"silent != null\">#{silent},</if>\r\n            <if test=\"dtmfKey != null\">#{dtmfKey},</if>\r\n            <if test=\"musicpath != null\">#{musicpath},</if>\r\n            <if test=\"sentIndex != null\">#{sentIndex},</if>\r\n            <if test=\"sentBegin != null\">#{sentBegin},</if>\r\n            <if test=\"asrtext != null\">#{asrtext},</if>\r\n            <if test=\"beginTime != null\">#{beginTime},</if>\r\n            <if test=\"endTime != null\">#{endTime},</if>\r\n            <if test=\"sentEnd != null\">#{sentEnd},</if>\r\n            <if test=\"recordpath != null\">#{recordpath},</if>\r\n            <if test=\"recordurl != null\">#{recordurl},</if>\r\n            <if test=\"templateid != null\">#{templateid},</if>\r\n            <if test=\"templatequestionnum != null\">#{templatequestionnum},</if>\r\n            <if test=\"switchid != null\">#{switchid},</if>\r\n            <if test=\"questiontext != null\">#{questiontext},</if>\r\n            <if test=\"questionvoice != null\">#{questionvoice},</if>\r\n            <if test=\"categoryname != null\">#{categoryname},</if>\r\n            <if test=\"targetoptions != null\">#{targetoptions},</if>\r\n            <if test=\"targetvalue != null\">#{targetvalue},</if>\r\n            <if test=\"matchedtext != null\">#{matchedtext},</if>\r\n            <if test=\"addtime != null\">#{addtime},</if>\r\n            <if test=\"isupload != null\">#{isupload},</if>\r\n            <if test=\"uploadTime != null\">#{uploadTime},</if>\r\n            <if test=\"orgid != null\">#{orgid},</if>\r\n            <if test=\"createTime != null\">#{createTime},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">#{delFlag},</if>\r\n            <if test=\"updateBy != null\">#{updateBy},</if>\r\n            <if test=\"updateTime != null\">#{updateTime},</if>\r\n            <if test=\"createBy != null\">#{createBy},</if>\r\n            <if test=\"valueType != null\">#{valueType},</if>\r\n            <if test=\"answerps != null  and answerps != ''\">#{answerps},</if>\r\n            <if test=\"comment != null  and comment != ''\">#{comment},</if>\r\n            <if test=\"scriptid != null \">#{scriptid},</if>\r\n            <if test=\"patid != null\">#{patid},</if>\r\n            <if test=\"extemplateText != null\">#{extemplateText},</if>\r\n            <if test=\"guid != null\">#{guid},</if>\r\n        </trim>\r\n    </insert>\r\n\r\n    <update id=\"updateServiceSubtaskDetail\" parameterType=\"com.smartor.domain.ServiceSubtaskDetail\">\r\n        update service_subtask_detail\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"subId != null\">sub_id = #{subId},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"targetid != null\">targetid = #{targetid},</if>\r\n            <if test=\"uuid != null\">uuid = #{uuid},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"operate != null\">operate = #{operate},</if>\r\n            <if test=\"displayno != null\">displayno = #{displayno},</if>\r\n            <if test=\"inbound != null\">inbound = #{inbound},</if>\r\n            <if test=\"incoming != null\">incoming = #{incoming},</if>\r\n            <if test=\"assigntime != null\">assigntime = #{assigntime},</if>\r\n            <if test=\"starttime != null\">starttime = #{starttime},</if>\r\n            <if test=\"answertime != null\">answertime = #{answertime},</if>\r\n            <if test=\"silent != null\">silent = #{silent},</if>\r\n            <if test=\"dtmfKey != null\">dtmf_key = #{dtmfKey},</if>\r\n            <if test=\"musicpath != null\">musicpath = #{musicpath},</if>\r\n            <if test=\"sentIndex != null\">sent_index = #{sentIndex},</if>\r\n            <if test=\"sentBegin != null\">sent_begin = #{sentBegin},</if>\r\n            <if test=\"asrtext != null\">asrtext = #{asrtext},</if>\r\n            <if test=\"beginTime != null\">begin_time = #{beginTime},</if>\r\n            <if test=\"endTime != null\">end_time = #{endTime},</if>\r\n            <if test=\"sentEnd != null\">sent_end = #{sentEnd},</if>\r\n            <if test=\"recordpath != null\">recordpath = #{recordpath},</if>\r\n            <if test=\"recordurl != null\">recordurl = #{recordurl},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatequestionnum != null\">templatequestionnum = #{templatequestionnum},</if>\r\n            <if test=\"switchid != null\">switchid = #{switchid},</if>\r\n            <if test=\"questiontext != null\">questiontext = #{questiontext},</if>\r\n            <if test=\"questionvoice != null\">questionvoice = #{questionvoice},</if>\r\n            <if test=\"categoryname != null\">categoryname = #{categoryname},</if>\r\n            <if test=\"targetoptions != null\">targetoptions = #{targetoptions},</if>\r\n            <if test=\"targetvalue != null\">targetvalue = #{targetvalue},</if>\r\n            <if test=\"matchedtext != null\">matchedtext = #{matchedtext},</if>\r\n            <if test=\"addtime != null\">addtime = #{addtime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag = #{delFlag},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"valueType != null\">value_type = #{valueType},</if>\r\n            <if test=\"answerps != null  and answerps != ''\">answerps = #{answerps},</if>\r\n            <if test=\"comment != null  and comment != ''\">comment = #{comment},</if>\r\n            <if test=\"scriptid != null \">scriptid = #{scriptid},</if>\r\n            <if test=\" patid != null\">patid = #{patid},</if>\r\n            <if test=\" extemplateText != null\">extemplate_text = #{extemplateText},</if>\r\n            <if test=\" guid != null\">guid = #{guid},</if>\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n\r\n    <update id=\"updateSSDByCondition\" parameterType=\"com.smartor.domain.ServiceSubtaskDetail\">\r\n        update service_subtask_detail\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"subId != null\">sub_id = #{subId},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"targetid != null\">targetid = #{targetid},</if>\r\n            <if test=\"uuid != null\">uuid = #{uuid},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"operate != null\">operate = #{operate},</if>\r\n            <if test=\"displayno != null\">displayno = #{displayno},</if>\r\n            <if test=\"inbound != null\">inbound = #{inbound},</if>\r\n            <if test=\"incoming != null\">incoming = #{incoming},</if>\r\n            <if test=\"assigntime != null\">assigntime = #{assigntime},</if>\r\n            <if test=\"starttime != null\">starttime = #{starttime},</if>\r\n            <if test=\"answertime != null\">answertime = #{answertime},</if>\r\n            <if test=\"silent != null\">silent = #{silent},</if>\r\n            <if test=\"dtmfKey != null\">dtmf_key = #{dtmfKey},</if>\r\n            <if test=\"musicpath != null\">musicpath = #{musicpath},</if>\r\n            <if test=\"sentIndex != null\">sent_index = #{sentIndex},</if>\r\n            <if test=\"sentBegin != null\">sent_begin = #{sentBegin},</if>\r\n            <if test=\"asrtext != null\">asrtext = #{asrtext},</if>\r\n            <if test=\"beginTime != null\">begin_time = #{beginTime},</if>\r\n            <if test=\"endTime != null\">end_time = #{endTime},</if>\r\n            <if test=\"sentEnd != null\">sent_end = #{sentEnd},</if>\r\n            <if test=\"recordpath != null\">recordpath = #{recordpath},</if>\r\n            <if test=\"recordurl != null\">recordurl = #{recordurl},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatequestionnum != null\">templatequestionnum = #{templatequestionnum},</if>\r\n            <if test=\"switchid != null\">switchid = #{switchid},</if>\r\n            <if test=\"questiontext != null\">questiontext = #{questiontext},</if>\r\n            <if test=\"questionvoice != null\">questionvoice = #{questionvoice},</if>\r\n            <if test=\"categoryname != null\">categoryname = #{categoryname},</if>\r\n            <if test=\"targetoptions != null\">targetoptions = #{targetoptions},</if>\r\n            <if test=\"targetvalue != null\">targetvalue = #{targetvalue},</if>\r\n            <if test=\"matchedtext != null\">matchedtext = #{matchedtext},</if>\r\n            <if test=\"addtime != null\">addtime = #{addtime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag = #{delFlag},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"valueType != null\">value_type = #{valueType},</if>\r\n            <if test=\"answerps != null  and answerps != ''\">answerps = #{answerps},</if>\r\n            <if test=\"comment != null  and comment != ''\">comment = #{comment},</if>\r\n            <if test=\"scriptid != null \">scriptid = #{scriptid},</if>\r\n            <if test=\" patid != null\">patid = #{patid},</if>\r\n            <if test=\" extemplateText != null\">extemplate_text = #{extemplateText},</if>\r\n            <if test=\" guid != null\">guid = #{guid},</if>\r\n        </trim>\r\n        where patid = #{patid} and scriptid = #{scriptid} and sub_id = #{subId}\r\n    </update>\r\n\r\n    <delete id=\"deleteServiceSubtaskDetailByCalldetailid\" parameterType=\"String\">\r\n        delete\r\n        from service_subtask_detail\r\n        where id = #{id}\r\n    </delete>\r\n\r\n    <delete id=\"deleteServiceSubtaskDetailByCalldetailids\" parameterType=\"String\">\r\n        delete from service_subtask_detail where id in\r\n        <foreach item=\"id\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{id}\r\n        </foreach>\r\n    </delete>\r\n\r\n    <select id=\"countPatByTarget\" parameterType=\"Long\" resultMap=\"ServiceSubtaskDetailTargetResult\">\r\n        SELECT service_task.taskid,\r\n               service_subtask_detail.targetid,\r\n               ivr_liba_target.targetname,\r\n               service_subtask_detail.matchedtext,\r\n               count(service_subtask_detail.matchedtext) count\r\n        FROM service_subtask_detail\r\n            JOIN service_task\r\n        ON service_task.taskid = service_subtask_detail.taskid\r\n            JOIN ivr_liba_target ON ivr_liba_target.id = service_subtask_detail.targetid\r\n        WHERE\r\n            targetid = #{targetid}\r\n        GROUP BY service_task.taskid,\r\n            service_subtask_detail.targetid,\r\n            ivr_liba_target.targetname,\r\n            service_subtask_detail.matchedtext\r\n    </select>\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml	(date 1758682819399)
-@@ -171,7 +171,9 @@
-         where id = #{id}
-     </select>
- 
--    <insert id="insertServiceSubtaskDetail" parameterType="com.smartor.domain.ServiceSubtaskDetail">
-+    <insert id="insertServiceSubtaskDetail" parameterType="com.smartor.domain.ServiceSubtaskDetail"
-+            useGeneratedKeys="true"
-+            keyProperty="id">
-         insert into service_subtask_detail
-         <trim prefix="(" suffix=")" suffixOverrides=",">
-             <if test="id != null">id,</if>
-Index: smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.alibaba.fastjson2.JSON;\r\nimport com.fasterxml.jackson.core.JsonProcessingException;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.enums.HospTypeEnum;\r\nimport com.ruoyi.common.enums.ServiceTaskTypeEnum;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.*;\r\nimport com.smartor.common.LSHospTokenUtil;\r\nimport com.smartor.common.LyraTokenUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.BaseOrganizationMapper;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport com.smartor.service.IServiceTaskService;\r\nimport com.smartor.service.ISvyTaskSingleService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.io.IOException;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.*;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥棶鍗凤級Service涓氬姟灞傚鐞哱r\n *\r\n * @author ruoyi\r\n * @date 2024-06-12\r\n */\r\n@Slf4j\r\n@Service\r\npublic class SvyTaskSingleServiceImpl implements ISvyTaskSingleService {\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private IServiceTaskService iServiceTaskService;\r\n\r\n    @Autowired\r\n    private BaseOrganizationMapper baseOrganizationMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n\r\n    @Override\r\n    public int insertOrUpdateSvyTask(ServiceTaskVO serviceTaskVO) {\r\n        if (ObjectUtils.isEmpty(serviceTaskVO)) {\r\n            log.info(\"闂嵎浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n            throw new BaseException(\"闂嵎浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n        }\r\n        Integer integer = 1;\r\n        ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);\r\n        serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));\r\n        if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {\r\n            //寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))\r\n                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));\r\n            if (serviceTask.getSendState() == null) serviceTask.setSendState(1L);\r\n            serviceTask.setTemplateid(Long.valueOf(serviceTaskVO.getLibtemplateid()));\r\n            iServiceTaskService.insertServiceTask(serviceTask);\r\n\r\n            //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓璡r\n            ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);\r\n            serviceSubtask.setTaskid(serviceTask.getTaskid());\r\n            //鏂板\r\n            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {\r\n                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {\r\n                    //灏嗕换鍔′俊鎭柊澧炲埌闅忚鏈嶅姟琛ㄤ腑\r\n                    serviceSubtask.setSendname(patTaskRelevance.getName());\r\n                    serviceSubtask.setAge(patTaskRelevance.getAge());\r\n                    serviceSubtask.setSfzh(patTaskRelevance.getSfzh());\r\n                    serviceSubtask.setPhone(patTaskRelevance.getPhone());\r\n                    serviceSubtask.setAddr(patTaskRelevance.getAddr());\r\n                    serviceSubtask.setPatid(patTaskRelevance.getPatid());\r\n                    serviceSubtask.setSendstate(1L);\r\n                    serviceSubtask.setHospType(patTaskRelevance.getHospType());\r\n                    serviceSubtask.setCreateTime(DateUtils.getNowDate());\r\n                    serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n                    integer = serviceSubtask.getId().intValue();\r\n                }\r\n            }\r\n\r\n        } else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {\r\n            //浠诲姟淇敼\r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))\r\n                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));\r\n            //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1\r\n            ServiceTask serviceTask2 = iServiceTaskService.selectServiceTaskByTaskid(serviceTaskVO.getTaskid());\r\n//            serviceTask2.setStopState(serviceTask.getStopState() + 1);\r\n            serviceTask2.setTemplateid(Long.valueOf(serviceTaskVO.getLibtemplateid()));\r\n            iServiceTaskService.updateServiceTask(serviceTask2);\r\n\r\n            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎\r\n            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n            serviceSubtaskVO.setTaskid(serviceTask2.getTaskid());\r\n            serviceSubtaskVO.setSendstate(2L);\r\n            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskVO.setSendstate(1L);\r\n            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);\r\n            } else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                    log.info(\"insertOrUpdateSvyTask闇�瑕佺Щ闄ょ殑subId涓猴細{}\", serviceSubtask.getId().toString());\r\n                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());\r\n                    redisCache.removeElementFromList(\"cache-exist\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-0\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-1\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-2\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-3\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-4\", serviceSubtask.getId().toString());\r\n                }\r\n            }\r\n\r\n\r\n            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {\r\n                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {\r\n\r\n                    ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);\r\n                    serviceSubtask.setSendname(patTaskRelevance.getName());\r\n                    serviceSubtask.setAge(patTaskRelevance.getAge());\r\n                    serviceSubtask.setSfzh(patTaskRelevance.getSfzh());\r\n                    serviceSubtask.setPhone(patTaskRelevance.getPhone());\r\n                    serviceSubtask.setAddr(patTaskRelevance.getAddr());\r\n                    serviceSubtask.setPatid(patTaskRelevance.getPatid());\r\n                    serviceSubtask.setHospType(patTaskRelevance.getHospType());\r\n                    serviceSubtask.setCreateTime(DateUtils.getNowDate());\r\n                    serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));\r\n                    if (patTaskRelevance.getIsoperation() != null) {\r\n                        optionHandle(serviceSubtask, serviceTaskVO.getTaskid(), patTaskRelevance.getIsoperation(), patTaskRelevance.getPatid());\r\n                    } else if (patTaskRelevance.getIsoperation() == null) {\r\n                        optionHandle(serviceSubtask, serviceTaskVO.getTaskid(), serviceTaskVO.getIsoperation(), patTaskRelevance.getPatid());\r\n                    }\r\n                    integer = serviceSubtask.getTaskid().intValue();\r\n                }\r\n            }\r\n        }\r\n        return integer;\r\n    }\r\n\r\n    @Override\r\n    public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {\r\n        //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚圽r\n        List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskid(serviceSubtask.getTaskid());\r\n        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n        if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {\r\n            return new ServiceTaskVO();\r\n        }\r\n        ServiceTask serviceTask = iServiceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n        //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ivrTasksingleVO涓璡r\n        ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(selectServiceSubtaskList.get(0), ServiceTaskVO.class);\r\n        serviceTaskVO.setShowDate(serviceTask.getShowDate());\r\n        serviceTaskVO.setShowTimeMorn(serviceTask.getShowTimeMorn());\r\n        serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon());\r\n        serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight());\r\n        serviceTaskVO.setPreachform(serviceTask.getPreachform());\r\n        String sendTimeSlot = serviceTask.getSendTimeSlot();\r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        try {\r\n            //鑾峰彇鍒板彂閫佹椂闂寸殑闆嗗悎\r\n            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {\r\n                List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);\r\n                serviceTaskVO.setSendTimeslot(taskSendTimeVOList);\r\n                serviceTaskVO.setSendType(serviceTask.getSendType());\r\n            }\r\n            //鏂囨湰鍙橀噺鍙傛暟\r\n            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(serviceTask.getTextParam())) {\r\n                Map<String, Map<String, String>> textParam = objectMapper.readValue(serviceTask.getTextParam(), Map.class);\r\n                serviceTaskVO.setTextParam(textParam);\r\n            }\r\n        } catch (JsonProcessingException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n        for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {\r\n            PatTaskRelevance patTaskRelevance = new PatTaskRelevance();\r\n            if (!serviceSubtask1.getHospType().equals(\"2\")) {\r\n                log.info(\"闅忚鏌ヨ涓嶄负鍑洪櫌锛寋}\", serviceSubtask1.getHospType());\r\n                //鑾峰彇鍒版偅鑰呬俊鎭紝骞舵斁鍏ュ埌闆嗗悎涓璡r\n                patTaskRelevance.setName(serviceSubtask1.getSendname());\r\n                patTaskRelevance.setAge(serviceSubtask1.getAge());\r\n                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());\r\n                patTaskRelevance.setPhone(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setAddr(serviceSubtask1.getAddr());\r\n                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());\r\n                patTaskRelevance.setPatid(serviceSubtask1.getPatid());\r\n                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());\r\n                patTaskRelevances.add(patTaskRelevance);\r\n            }\r\n            if (serviceSubtask1.getHospType().equals(\"2\")) {\r\n                log.info(\"闅忚鏌ヨ涓哄嚭闄紝{}\", serviceSubtask1.getHospType());\r\n                patTaskRelevance.setName(serviceSubtask1.getSendname());\r\n                patTaskRelevance.setAge(serviceSubtask1.getAge());\r\n                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());\r\n                patTaskRelevance.setPhone(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setAddr(serviceSubtask1.getAddr());\r\n                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());\r\n                patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());\r\n                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());\r\n                patTaskRelevance.setPatid(serviceSubtask1.getPatid());\r\n                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());\r\n                patTaskRelevances.add(patTaskRelevance);\r\n            }\r\n        }\r\n\r\n        serviceTaskVO.setPatTaskRelevances(patTaskRelevances);\r\n        return serviceTaskVO;\r\n    }\r\n\r\n    private void optionHandle(ServiceSubtask serviceSubtask, Long taskId, Integer isoperation, Long patid) {\r\n        if (isoperation == 1) {\r\n            serviceSubtask.setSendstate(1L);\r\n            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n        } else if (isoperation == 2) serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n        else if (isoperation == 3) serviceSubtaskMapper.deleteServiceSubtaskByCondition(taskId, patid);\r\n    }\r\n\r\n    @Override\r\n    public int insertTaskInfo(ServiceTaskInfo serviceTaskVO) {\r\n        if (ObjectUtils.isEmpty(serviceTaskVO)) {\r\n            log.info(\"鏂板浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n            throw new BaseException(\"鏂板浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n        }\r\n        //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓璡r\n        ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n        serviceSubtask.setTaskGuid(serviceTaskVO.getTaskguid());\r\n        String type = \"0\";\r\n        if (StringUtils.isNotEmpty(serviceTaskVO.getServicetype()))\r\n            type = ServiceTaskTypeEnum.getDescByCode(serviceTaskVO.getServicetype());\r\n        serviceSubtask.setServiceType(type);\r\n        //绗笁鏂逛紶杩囨潵鐨勶紝鐩存帴缁熶竴瀹氫负闂嵎\r\n        serviceSubtask.setType(\"2\");\r\n        serviceSubtask.setLabelstatus(serviceTaskVO.getTaskstate());\r\n        serviceSubtask.setTaskName(serviceTaskVO.getTaskname());\r\n        serviceSubtask.setTaskDesc(serviceTaskVO.getTaskdesc());\r\n        //绗笁鏂逛紶杩囨潵鐨勶紝鐩存帴缁熶竴瀹氫负\"浜哄伐\"\r\n        serviceSubtask.setPreachform(\"1\");\r\n        serviceSubtask.setCreateBy(serviceTaskVO.getCreateBy());\r\n        serviceSubtask.setCreateTime(serviceTaskVO.getCreateTime());\r\n        serviceSubtask.setOperatorNo(serviceTaskVO.getOperatorno());\r\n        serviceSubtask.setRemark(serviceTaskVO.getRemark());\r\n        serviceSubtask.setOperator(serviceTaskVO.getOperatorname());\r\n        serviceSubtask.setEndtime(serviceTaskVO.getFinishtime());\r\n        serviceSubtask.setResult(serviceTaskVO.getResult());\r\n        serviceSubtask.setSuggest(serviceTaskVO.getSuggest());\r\n        serviceSubtask.setDelFlag(serviceTaskVO.getDelflag());\r\n        serviceSubtask.setOrgid(serviceTaskVO.getOrgguid());\r\n        serviceSubtask.setPatguid(serviceTaskVO.getPatguid());\r\n        serviceSubtask.setSendname(serviceTaskVO.getPatname());\r\n        if (StringUtils.isNotEmpty(serviceTaskVO.getPatsex()) && serviceTaskVO.getPatsex().equals(\"鐢穃"))\r\n            serviceSubtask.setSex(1L);\r\n        if (StringUtils.isNotEmpty(serviceTaskVO.getPatsex()) && serviceTaskVO.getPatsex().equals(\"濂砛"))\r\n            serviceSubtask.setSex(2L);\r\n        serviceSubtask.setAge(serviceTaskVO.getPatage());\r\n        serviceSubtask.setSfzh(serviceTaskVO.getPatidno());\r\n        serviceSubtask.setPhone(serviceTaskVO.getPatphone());\r\n        serviceSubtask.setAddr(serviceTaskVO.getPataddr());\r\n        serviceSubtask.setWechat(serviceTaskVO.getPatopenid());\r\n        serviceSubtask.setInhospno(serviceTaskVO.getInhosno());\r\n        String hosptype = \"-1\";\r\n        hosptype = HospTypeEnum.getDescByCode(serviceTaskVO.getVisittype());\r\n        serviceSubtask.setHospType(hosptype);\r\n        serviceSubtask.setHospno(serviceTaskVO.getVisitno());\r\n        serviceSubtask.setAdmindate(serviceTaskVO.getVisittime());\r\n        serviceSubtask.setRoomno(serviceTaskVO.getRoomno());\r\n        serviceSubtask.setBedNo(serviceTaskVO.getBedno());\r\n        serviceSubtask.setDeptname(serviceTaskVO.getDeptname());\r\n        serviceSubtask.setDeptcode(serviceTaskVO.getDeptcode());\r\n        serviceSubtask.setSendstate(6L);\r\n        serviceSubtask.setVisitTime(serviceTaskVO.getVisittime());\r\n        serviceSubtask.setCreateTime(new Date());\r\n        serviceSubtask.setLeavehospitaldistrictcode(serviceTaskVO.getDistrictcode());\r\n        //鍏堟煡璇竴閬嶏紝璇askGuid鏄惁瀛樺湪\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskGuid(serviceTaskVO.getTaskguid());\r\n        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n        if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n            serviceSubtask.setId(serviceSubtaskList.get(0).getId());\r\n            serviceSubtask.setUpdateTime(new Date());\r\n            serviceSubtaskMapper.updateServiceSubtaskByTaskGuid(serviceSubtask);\r\n        } else {\r\n            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n        }\r\n        Integer integer = serviceSubtask.getId().intValue();\r\n        log.error(\"鎻掑叆鐨処D鏄細{}\", integer);\r\n        return integer;\r\n    }\r\n\r\n\r\n    @Override\r\n    public Map query360PatInfo(ServiceQueryInfo serviceQueryInfo) {\r\n        if (ObjectUtils.isEmpty(serviceQueryInfo)) {\r\n            log.info(\"360鏌ヨ鏉′欢涓虹┖\");\r\n            throw new BaseException(\"360鏌ヨ鏉′欢涓虹┖\");\r\n        }\r\n        String token = LSHospTokenUtil.getToken(serviceQueryInfo.getXiaoXiTou().getFaSongJGID(),serviceQueryInfo.getUrl());\r\n//        LyraTokenUtil lyraTokenUtil = null;\r\n//        if (serviceQueryInfo.getXiaoXiTou().getFaSongJGID().equals(\"47255004333112711A1001\"))  //鏅畞\r\n//            lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(\"https://9.0.124.104:13021/mediinfo-lyra-authserver/connect/token\", \"zjhes.suifangxt\", \"OIjdJvx2ALjFVGZoCZO4I8O\");\r\n//        if (serviceQueryInfo.getXiaoXiTou().getFaSongJGID().equals(\"47231022633110211A2101\"))  //涓尰闄r\n//            lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(\"https://9.0.124.104:13011/mediinfo-lyra-authserver/connect/token\", \"zjhes.suifangxt\", \"OIjdJvx2ALjFVGZoCZO4I8O\");\r\n//\r\n//        try {\r\n//            token = lyraTokenUtil.getToken();\r\n//        } catch (IOException e) {\r\n//            e.printStackTrace();\r\n//        }\r\n\r\n        //鐢ㄦ埛淇℃伅锛岄�氳繃ZuZhiJGID鍘籦se_organization涓幏鍙栨満鏋勪俊鎭痋r\n        if (StringUtils.isBlank(serviceQueryInfo.getYeWuXX().getYongHuXX().getZuZhiJGID()))\r\n            throw new BaseException(\"鏈烘瀯id涓嶈兘涓虹┖锛乗");\r\n        BaseOrganization baseOrganization = new BaseOrganization();\r\n        baseOrganization.setGuid(serviceQueryInfo.getYeWuXX().getYongHuXX().getZuZhiJGID());\r\n        List<BaseOrganization> baseOrganizations = baseOrganizationMapper.selectBaseOrganizationList(baseOrganization);\r\n        if (CollectionUtils.isNotEmpty(baseOrganizations)) {\r\n            YongHuXX yongHuXX = serviceQueryInfo.getYeWuXX().getYongHuXX();\r\n            yongHuXX.setZuZhiJGID(baseOrganizations.get(0).getGuid());\r\n            yongHuXX.setZuZhiJGMC(baseOrganizations.get(0).getOrganizationName());\r\n            serviceQueryInfo.getYeWuXX().setYongHuXX(yongHuXX);\r\n        }\r\n\r\n        //娑堟伅澶翠俊鎭椂闂碶r\n        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(\"YYYY-MM-dd HH:mm:ss\");\r\n        serviceQueryInfo.getXiaoXiTou().setFaSongSJ(simpleDateFormat.format(new Date()));\r\n\r\n        log.error(new Gson().toJson(serviceQueryInfo));\r\n        log.error(\"serviceQueryInfo鐨勭粨鏋滀负锛歿}\", serviceQueryInfo);\r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        String result = null;\r\n        Map map = new HashMap();\r\n        try {\r\n            String jsonString = objectMapper.writeValueAsString(serviceQueryInfo);\r\n            log.error(\"token鐨勫�间负锛歿}\", token);\r\n            if (serviceQueryInfo.getXiaoXiTou().getFaSongJGID().equals(\"47255004333112711A1001\")) {  //鏅畞\r\n                result = OkHttpExample.sendPostRequest(\"https://9.0.124.104:13021/mediinfo-grus-fuwuzxwg/api/esb/lyraSyncRun\", jsonString, token);\r\n            }else if (serviceQueryInfo.getXiaoXiTou().getFaSongJGID().equals(\"47231022633110211A2101\")) {  //涓尰闄r\n                result = OkHttpExample.sendPostRequest(\"https://9.0.124.104:13011/mediinfo-grus-fuwuzxwg/api/esb/lyraSyncRun\", jsonString, token);\r\n            }else if(ObjectUtils.isNotEmpty(serviceQueryInfo.getUrl360())){\r\n                result = OkHttpExample.sendPostRequest(serviceQueryInfo.getUrl360(), jsonString, token);\r\n            }\r\n                map = objectMapper.readValue(result, Map.class);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n        Integer code = (Integer) map.get(\"code\");\r\n        if (code != null && code == 0) {\r\n            map.put(\"code\", 200);\r\n        }\r\n\r\n        return map;\r\n    }\r\n\r\n    @Override\r\n    public Map focus(ServiceQueryFocus serviceQueryFocus) {\r\n        return null;\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java	(date 1758703168841)
-@@ -350,7 +350,7 @@
-             }else if(ObjectUtils.isNotEmpty(serviceQueryInfo.getUrl360())){
-                 result = OkHttpExample.sendPostRequest(serviceQueryInfo.getUrl360(), jsonString, token);
-             }
--                map = objectMapper.readValue(result, Map.class);
-+            map = objectMapper.readValue(result, Map.class);
-         } catch (Exception e) {
-             e.printStackTrace();
-         }
-@@ -362,6 +362,7 @@
-         return map;
-     }
- 
-+
-     @Override
-     public Map focus(ServiceQueryFocus serviceQueryFocus) {
-         return null;
-Index: ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.ruoyi.system.mapper.SysConfigMapper\">\r\n\r\n    <resultMap type=\"SysConfig\" id=\"SysConfigResult\">\r\n        <id property=\"configId\" column=\"config_id\"/>\r\n        <result property=\"configName\" column=\"config_name\"/>\r\n        <result property=\"configKey\" column=\"config_key\"/>\r\n        <result property=\"configValue\" column=\"config_value\"/>\r\n        <result property=\"configType\" column=\"config_type\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectConfigVo\">\r\n        select config_id,\r\n               config_name,\r\n               orgid,\r\n               config_key,\r\n               config_value,\r\n               config_type,\r\n               create_by,\r\n               create_time,\r\n               update_by,\r\n               update_time,\r\n               guid,\r\n               remark\r\n        from sys_config\r\n    </sql>\r\n\r\n    <!-- 鏌ヨ鏉′欢 -->\r\n    <sql id=\"sqlwhereSearch\">\r\n        <where>\r\n            <if test=\"configId !=null\">\r\n                and config_id = #{configId}\r\n            </if>\r\n            <if test=\"configKey !=null and configKey != ''\">\r\n                and config_key = #{configKey}\r\n            </if>\r\n            <if test=\"orgid !=null and orgid != ''\">\r\n                and orgid = #{orgid}\r\n            </if>\r\n        </where>\r\n    </sql>\r\n\r\n    <select id=\"selectConfig\" parameterType=\"SysConfig\" resultMap=\"SysConfigResult\">\r\n        <include refid=\"selectConfigVo\"/>\r\n        <include refid=\"sqlwhereSearch\"/>\r\n    </select>\r\n\r\n    <select id=\"selectConfigList\" parameterType=\"SysConfig\" resultMap=\"SysConfigResult\">\r\n        <include refid=\"selectConfigVo\"/>\r\n        <where>\r\n            <if test=\"configName != null and configName != ''\">\r\n                AND config_name like concat('%', #{configName}, '%')\r\n            </if>\r\n            <if test=\"configType != null and configType != ''\">\r\n                AND config_type = #{configType}\r\n            </if>\r\n            <if test=\"configKey != null and configKey != ''\">\r\n                AND config_key like concat('%', #{configKey}, '%')\r\n            </if>\r\n            <if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 寮�濮嬫椂闂存绱� -->\r\n                and date_format(create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"params.endTime != null and params.endTime != ''\"><!-- 缁撴潫鏃堕棿妫�绱� -->\r\n                and date_format(create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectConfigById\" parameterType=\"Long\" resultMap=\"SysConfigResult\">\r\n        <include refid=\"selectConfigVo\"/>\r\n        where config_id = #{configId}\r\n    </select>\r\n\r\n    <select id=\"checkConfigKeyUnique\" parameterType=\"String\" resultMap=\"SysConfigResult\">\r\n        <include refid=\"selectConfigVo\"/>\r\n        where config_key = #{configKey} limit 1\r\n    </select>\r\n\r\n    <insert id=\"insertConfig\" parameterType=\"SysConfig\">\r\n        insert into sys_config (\r\n        <if test=\"configName != null and configName != '' \">config_name,</if>\r\n        <if test=\"configKey != null and configKey != '' \">config_key,</if>\r\n        <if test=\"configValue != null and configValue != '' \">config_value,</if>\r\n        <if test=\"configType != null and configType != '' \">config_type,</if>\r\n        <if test=\"createBy != null and createBy != ''\">create_by,</if>\r\n        <if test=\"remark != null and remark != ''\">remark,</if>\r\n        <if test=\"guid != null and guid != ''\">guid,</if>\r\n        <if test=\"orgid != null and orgid != ''\">orgid,</if>\r\n        create_time\r\n        )values(\r\n        <if test=\"configName != null and configName != ''\">#{configName},</if>\r\n        <if test=\"configKey != null and configKey != ''\">#{configKey},</if>\r\n        <if test=\"configValue != null and configValue != ''\">#{configValue},</if>\r\n        <if test=\"configType != null and configType != ''\">#{configType},</if>\r\n        <if test=\"createBy != null and createBy != ''\">#{createBy},</if>\r\n        <if test=\"remark != null and remark != ''\">#{remark},</if>\r\n        <if test=\"guid != null and guid != ''\">#{guid},</if>\r\n        <if test=\"orgid != null and orgid != ''\">#{orgid},</if>\r\n        sysdate()\r\n        )\r\n    </insert>\r\n\r\n    <update id=\"updateConfig\" parameterType=\"SysConfig\">\r\n        update sys_config\r\n        <set>\r\n            <if test=\"configName != null and configName != ''\">config_name = #{configName},</if>\r\n            <if test=\"configKey != null and configKey != ''\">config_key = #{configKey},</if>\r\n            <if test=\"configValue != null and configValue != ''\">config_value = #{configValue},</if>\r\n            <if test=\"configType != null and configType != ''\">config_type = #{configType},</if>\r\n            <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\r\n            <if test=\"remark != null\">remark = #{remark},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            update_time = sysdate()\r\n        </set>\r\n        where config_id = #{configId}\r\n    </update>\r\n\r\n    <delete id=\"deleteConfigById\" parameterType=\"Long\">\r\n        delete\r\n        from sys_config\r\n        where config_id = #{configId}\r\n    </delete>\r\n\r\n    <delete id=\"deleteConfigByIds\" parameterType=\"Long\">\r\n        delete from sys_config where config_id in\r\n        <foreach item=\"configId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{configId}\r\n        </foreach>\r\n    </delete>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
---- a/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml	(date 1758682819274)
-@@ -43,9 +43,6 @@
-             <if test="configKey !=null and configKey != ''">
-                 and config_key = #{configKey}
-             </if>
--            <if test="orgid !=null and orgid != ''">
--                and orgid = #{orgid}
--            </if>
-         </where>
-     </sql>
- 
-Index: smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java
-new file mode 100644
---- /dev/null	(date 1758682819521)
-+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java	(date 1758682819521)
-@@ -0,0 +1,72 @@
-+package com.smartor.mapper;
-+
-+import java.util.List;
-+import org.apache.ibatis.annotations.Mapper;
-+import com.smartor.domain.ServiceSubtaskPreachform;
-+
-+/**
-+ * 銆愯濉啓鍔熻兘鍚嶇О銆慚apper鎺ュ彛
-+ *
-+ * @author lihu
-+ * @date 2025-09-15
-+ */
-+@Mapper
-+public interface ServiceSubtaskPreachformMapper
-+{
-+    /**
-+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆�
-+     *
-+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
-+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆�
-+     */
-+    public ServiceSubtaskPreachform selectServiceSubtaskPreachformById(Long id);
-+
-+    /**
-+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
-+     *
-+     * @param serviceSubtaskPreachform 銆愯濉啓鍔熻兘鍚嶇О銆�
-+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆戦泦鍚�
-+     */
-+    public List<ServiceSubtaskPreachform> selectServiceSubtaskPreachformList(ServiceSubtaskPreachform serviceSubtaskPreachform);
-+
-+    /**
-+     * 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
-+     *
-+     * @param serviceSubtaskPreachform 銆愯濉啓鍔熻兘鍚嶇О銆�
-+     * @return 缁撴灉
-+     */
-+    public int insertServiceSubtaskPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform);
-+
-+    /**
-+     * 淇敼銆愯濉啓鍔熻兘鍚嶇О銆�
-+     *
-+     * @param serviceSubtaskPreachform 銆愯濉啓鍔熻兘鍚嶇О銆�
-+     * @return 缁撴灉
-+     */
-+    public int updateServiceSubtaskPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform);
-+
-+    /**
-+     * 鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
-+     *
-+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
-+     * @return 缁撴灉
-+     */
-+    public int deleteServiceSubtaskPreachformById(Long id);
-+
-+    /**
-+     * 鏍规嵁subid鍒犻櫎璇ュ瓙浠诲姟鐨勬墍鏈夊彂閫佹柟寮�
-+     * @param subIds
-+     * @return
-+     */
-+    public int deleteServiceSubtaskPreachformBySubid(Long subIds);
-+
-+
-+
-+    /**
-+     * 鎵归噺鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
-+     *
-+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
-+     * @return 缁撴灉
-+     */
-+    public int deleteServiceSubtaskPreachformByIds(Long[] ids);
-+}
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseDictOperationController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport java.util.List;\r\n\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\n\r\nimport org.springframework.security.access.prepost.PreAuthorize;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.web.bind.annotation.GetMapping;\r\nimport org.springframework.web.bind.annotation.PostMapping;\r\nimport org.springframework.web.bind.annotation.PutMapping;\r\nimport org.springframework.web.bind.annotation.DeleteMapping;\r\nimport org.springframework.web.bind.annotation.PathVariable;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RestController;\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.smartor.domain.BaseDictOperation;\r\nimport com.smartor.service.IBaseDictOperationService;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\n\r\n/**\r\n * 鎵嬫湳鍩虹淇℃伅Controller\r\n *\r\n * @author lihu\r\n * @date 2025-02-26\r\n */\r\n@Api(\"鎵嬫湳鍩虹淇℃伅\")\r\n@RestController\r\n@RequestMapping(\"/smartor/baseopera\")\r\npublic class BaseDictOperationController extends BaseController {\r\n    @Autowired\r\n    private IBaseDictOperationService baseDictOperationService;\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呮鏌ユ楠岃褰曞瓙鍒楄〃\r\n     */\r\n    @ApiOperation(\"鏌ヨ鎮h�呮鏌ユ楠岃褰曞瓙鍒楄〃\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:list')\")\r\n    @PostMapping(\"/list\")\r\n    public TableDataInfo list(@RequestBody BaseDictOperation baseDictOperation) {\r\n        startPage();\r\n        List<BaseDictOperation> list = baseDictOperationService.selectBaseDictOperationList(baseDictOperation);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎嚭鎮h�呮鏌ユ楠岃褰曞瓙鍒楄〃\r\n     */\r\n    @ApiOperation(\"瀵煎嚭鎮h�呮鏌ユ楠岃褰曞瓙鍒楄〃\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:export')\")\r\n    @Log(title = \"鎮h�呮鏌ユ楠岃褰曞瓙\", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, BaseDictOperation baseDictOperation) {\r\n        List<BaseDictOperation> list = baseDictOperationService.selectBaseDictOperationList(baseDictOperation);\r\n        ExcelUtil<BaseDictOperation> util = new ExcelUtil<BaseDictOperation>(BaseDictOperation.class);\r\n        util.exportExcel(response, list, \"鎮h�呮鏌ユ楠岃褰曞瓙鏁版嵁\");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鎮h�呮鏌ユ楠岃褰曞瓙璇︾粏淇℃伅\r\n     */\r\n    @ApiOperation(\"鑾峰彇鎮h�呮鏌ユ楠岃褰曞瓙璇︾粏淇℃伅\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:query')\")\r\n    @GetMapping(value = \"/getInfo/{id}\")\r\n    public AjaxResult getInfo(@PathVariable(\"id\") Long id) {\r\n        return success(baseDictOperationService.selectBaseDictOperationById(id));\r\n    }\r\n\r\n    /**\r\n     * 鏂板鎮h�呮鏌ユ楠岃褰曞瓙\r\n     */\r\n    @ApiOperation(\"鏂板鎮h�呮鏌ユ楠岃褰曞瓙\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:add')\")\r\n    @Log(title = \"鎮h�呮鏌ユ楠岃褰曞瓙\", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@RequestBody BaseDictOperation baseDictOperation) {\r\n        return toAjax(baseDictOperationService.insertBaseDictOperation(baseDictOperation));\r\n    }\r\n\r\n    /**\r\n     * 淇敼鎮h�呮鏌ユ楠岃褰曞瓙\r\n     */\r\n    @ApiOperation(\"淇敼鎮h�呮鏌ユ楠岃褰曞瓙\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:edit')\")\r\n    @Log(title = \"鎮h�呮鏌ユ楠岃褰曞瓙\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/edit\")\r\n    public AjaxResult edit(@RequestBody BaseDictOperation baseDictOperation) {\r\n        return toAjax(baseDictOperationService.updateBaseDictOperation(baseDictOperation));\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鎮h�呮鏌ユ楠岃褰曞瓙\r\n     */\r\n    @ApiOperation(\"鍒犻櫎鎮h�呮鏌ユ楠岃褰曞瓙\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:remove')\")\r\n    @Log(title = \"鎮h�呮鏌ユ楠岃褰曞瓙\", businessType = BusinessType.DELETE)\r\n    @GetMapping(\"/remove/{ids}\")\r\n    public AjaxResult remove(@PathVariable Long[] ids) {\r\n        return toAjax(baseDictOperationService.deleteBaseDictOperationByIds(ids));\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseDictOperationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseDictOperationController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseDictOperationController.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseDictOperationController.java	(date 1758682819361)
-@@ -2,6 +2,8 @@
- 
- import java.util.List;
- 
-+import com.ruoyi.common.core.domain.entity.SysUser;
-+import com.ruoyi.common.core.domain.model.LoginUser;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- 
-@@ -47,6 +49,9 @@
-     @PostMapping("/list")
-     public TableDataInfo list(@RequestBody BaseDictOperation baseDictOperation) {
-         startPage();
-+        LoginUser loginUser = getLoginUser();
-+        SysUser user = loginUser.getUser();
-+        baseDictOperation.setOrgid(user.getOrgid());
-         List<BaseDictOperation> list = baseDictOperationService.selectBaseDictOperationList(baseDictOperation);
-         return getDataTable(list);
-     }
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.service.IServiceSubtaskAnswerService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.security.access.prepost.PreAuthorize;\r\nimport org.springframework.web.bind.annotation.*;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.util.List;\r\n\r\n/**\r\n * 浠诲姟闂嵎闂閫夐」Controller\r\n *\r\n * @author ruoyi\r\n * @date 2024-07-18\r\n */\r\n@Slf4j\r\n@Api(description = \"浠诲姟闂嵎闂閫夐」\")\r\n@RestController\r\n@RequestMapping(\"/smartor/subtaskAnswer\")\r\npublic class ServiceSubtaskAnswerController extends BaseController {\r\n    @Autowired\r\n    private IServiceSubtaskAnswerService serviceSubtaskAnswerService;\r\n\r\n    /**\r\n     * 鏌ヨ浠诲姟闂嵎闂閫夐」鍒楄〃\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:list')\")\r\n    @ApiOperation(\"鏌ヨ浠诲姟闂嵎闂閫夐」鍒楄〃\")\r\n    @GetMapping(\"/list\")\r\n    public TableDataInfo list(ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        startPage();\r\n        List<ServiceSubtaskAnswer> list = serviceSubtaskAnswerService.selectServiceSubtaskAnswerList(serviceSubtaskAnswer);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎嚭浠诲姟闂嵎闂閫夐」鍒楄〃\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:export')\")\r\n    @Log(title = \"浠诲姟闂嵎闂閫夐」\", businessType = BusinessType.EXPORT)\r\n    @ApiOperation(\"浠诲姟闂嵎闂閫夐」\")\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        List<ServiceSubtaskAnswer> list = serviceSubtaskAnswerService.selectServiceSubtaskAnswerList(serviceSubtaskAnswer);\r\n        ExcelUtil<ServiceSubtaskAnswer> util = new ExcelUtil<ServiceSubtaskAnswer>(ServiceSubtaskAnswer.class);\r\n        util.exportExcel(response, list, \"浠诲姟闂嵎闂閫夐」鏁版嵁\");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇浠诲姟闂嵎闂閫夐」璇︾粏淇℃伅\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:query')\")\r\n    @GetMapping(value = \"/getInfo/{id}\")\r\n    @ApiOperation(\"鑾峰彇浠诲姟闂嵎闂閫夐」璇︾粏淇℃伅\")\r\n    public AjaxResult getInfo(@PathVariable(\"id\") Long id) {\r\n        return success(serviceSubtaskAnswerService.selectServiceSubtaskAnswerById(id));\r\n    }\r\n\r\n    /**\r\n     * 鏂板浠诲姟闂嵎闂閫夐」\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:add')\")\r\n    @Log(title = \"浠诲姟闂嵎闂閫夐」\", businessType = BusinessType.INSERT)\r\n    @ApiOperation(\"鏂板浠诲姟闂嵎闂閫夐」\")\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@RequestBody ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        SysUser user = getLoginUser().getUser();\r\n        serviceSubtaskAnswer.setOrgid(user.getOrgid());\r\n        return toAjax(serviceSubtaskAnswerService.insertServiceSubtaskAnswer(serviceSubtaskAnswer));\r\n    }\r\n\r\n    /**\r\n     * 淇敼浠诲姟闂嵎闂閫夐」\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:edit')\")\r\n    @Log(title = \"浠诲姟闂嵎闂閫夐」\", businessType = BusinessType.UPDATE)\r\n    @ApiOperation(\"淇敼浠诲姟闂嵎闂閫夐」\")\r\n    @PostMapping(\"/edit\")\r\n    public AjaxResult edit(@RequestBody ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        return toAjax(serviceSubtaskAnswerService.updateServiceSubtaskAnswer(serviceSubtaskAnswer));\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎浠诲姟闂嵎闂閫夐」\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:remove')\")\r\n    @Log(title = \"浠诲姟闂嵎闂閫夐」\", businessType = BusinessType.DELETE)\r\n    @ApiOperation(\"鍒犻櫎浠诲姟闂嵎闂閫夐」\")\r\n    @DeleteMapping(\"/remove/{ids}\")\r\n    public AjaxResult remove(@PathVariable Long[] ids) {\r\n        return toAjax(serviceSubtaskAnswerService.deleteServiceSubtaskAnswerByIds(ids));\r\n    }\r\n\r\n    @ApiOperation(\"鎮h�呴棶棰樼粨鏋滆褰�(澶栭摼)\")\r\n    @PostMapping(\"/saveQuestionAnswer\")\r\n    public AjaxResult saveQuestionAnswer(@RequestBody ServiceSubTaskAnswerReq serviceSubTaskAnswerReq) {\r\n        log.info(\"-----saveQuestionAnswer鏂规硶鐨勫叆鍙備负锛歿}\", serviceSubTaskAnswerReq);\r\n        return toAjax(serviceSubtaskAnswerService.saveQuestionAnswer(serviceSubTaskAnswerReq, 0L));\r\n    }\r\n\r\n\r\n    @ApiOperation(\"鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(灏忕▼搴忓閾�)\")\r\n    @PostMapping(\"/saveQuestionCacheXCH\")\r\n    public AjaxResult saveQuestionCacheXCH(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {\r\n        return toAjax(serviceSubtaskAnswerService.saveQuestionCache(serviceSubTaskCacheReq, 1L));\r\n    }\r\n\r\n\r\n    @ApiOperation(\"鎮h�呴棶棰樼粨鏋滆褰�(灏忕▼鍏呭閾�)\")\r\n    @PostMapping(\"/saveQuestionAnswerXCH\")\r\n    public AjaxResult saveQuestionAnswerXCH(@RequestBody ServiceSubTaskAnswerReq serviceSubTaskAnswerReq) {\r\n        log.info(\"-------saveQuestionAnswerXCH鐨勫叆鍙傜殑鍊间负锛歿}\", serviceSubTaskAnswerReq);\r\n        return toAjax(serviceSubtaskAnswerService.saveQuestionAnswer(serviceSubTaskAnswerReq, 1L));\r\n    }\r\n\r\n    @ApiOperation(\"鑾峰彇鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(灏忕▼搴忓閾�)\")\r\n    @PostMapping(\"/getQuestionCacheXCH\")\r\n    public AjaxResult getQuestionCacheXCH(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {\r\n        return AjaxResult.success(serviceSubtaskAnswerService.getQuestionCache(serviceSubTaskCacheReq, 1L));\r\n    }\r\n\r\n    @ApiOperation(\"鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(澶栭摼)\")\r\n    @PostMapping(\"/saveQuestionCache\")\r\n    public AjaxResult saveQuestionCache(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {\r\n        log.info(\"serviceSubTaskCacheReq鐨勫叆鍙備负锛歿}\", serviceSubTaskCacheReq);\r\n        return toAjax(serviceSubtaskAnswerService.saveQuestionCache(serviceSubTaskCacheReq, 0L));\r\n    }\r\n\r\n    @ApiOperation(\"鑾峰彇鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(澶栭摼)\")\r\n    @PostMapping(\"/getQuestionCache\")\r\n    public AjaxResult getQuestionCache(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {\r\n        return AjaxResult.success(serviceSubtaskAnswerService.getQuestionCache(serviceSubTaskCacheReq, 0L));\r\n    }\r\n\r\n\r\n    @ApiOperation(\"鍖荤敓鏌ヨ鎮h�呴棶棰樼粨鏋�(澶栭摼)\")\r\n    @PostMapping(\"/selectPatQuestionResult\")\r\n    public AjaxResult selectPatQuestionResult(@RequestBody ServiceSubTaskQueryReq serviceSubTaskQueryReq) {\r\n        return AjaxResult.success(serviceSubtaskAnswerService.selectPatQuestionResult(serviceSubTaskQueryReq));\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java	(date 1758682819359)
-@@ -6,6 +6,7 @@
- import com.ruoyi.common.core.domain.entity.SysUser;
- import com.ruoyi.common.core.page.TableDataInfo;
- import com.ruoyi.common.enums.BusinessType;
-+import com.ruoyi.common.utils.RSAPublicKeyExample;
- import com.ruoyi.common.utils.poi.ExcelUtil;
- import com.smartor.domain.*;
- import com.smartor.service.IServiceSubtaskAnswerService;
-@@ -14,6 +15,7 @@
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.ObjectUtils;
- import org.springframework.beans.factory.annotation.Autowired;
-+import org.springframework.beans.factory.annotation.Value;
- import org.springframework.security.access.prepost.PreAuthorize;
- import org.springframework.web.bind.annotation.*;
- 
-@@ -34,6 +36,10 @@
-     @Autowired
-     private IServiceSubtaskAnswerService serviceSubtaskAnswerService;
- 
-+
-+    @Value("${pri_key}")
-+    private String pri_key;
-+
-     /**
-      * 鏌ヨ浠诲姟闂嵎闂閫夐」鍒楄〃
-      */
-@@ -152,4 +158,17 @@
-         return AjaxResult.success(serviceSubtaskAnswerService.selectPatQuestionResult(serviceSubTaskQueryReq));
-     }
- 
-+
-+    @ApiOperation("鎮h�呮弧鎰忓害缁撴灉璁板綍(澶栭摼)")
-+    @PostMapping("/saveMYDQuestionAnswer")
-+    public AjaxResult saveMYDQuestionAnswer(@RequestBody ServiceSubTaskMYDAnswerReq serviceSubTaskAnswerReq) {
-+        log.info("銆恠aveMYDQuestionAnswer銆戞柟娉曠殑鍏ュ弬涓猴細{}", serviceSubTaskAnswerReq);
-+        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+        String taskId = rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getTaskId(), pri_key);
-+        String serialnum = rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getSerialnum(), pri_key);
-+        serviceSubTaskAnswerReq.setTaskId(taskId);
-+        serviceSubTaskAnswerReq.setSerialnum(serialnum);
-+        return toAjax(serviceSubtaskAnswerService.saveMYDQuestionAnswer(serviceSubTaskAnswerReq));
-+    }
-+
- }
-Index: .idea/encodings.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project version=\"4\">\r\n  <component name=\"Encoding\">\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-admin/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-admin/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-common/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-common/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-framework/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-framework/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-generator/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-generator/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-quartz/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-quartz/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-system/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-system/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/smartor/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/smartor/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/src/main/resources\" charset=\"UTF-8\" />\r\n  </component>\r\n</project>
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/.idea/encodings.xml b/.idea/encodings.xml
---- a/.idea/encodings.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/.idea/encodings.xml	(date 1758682819697)
-@@ -2,8 +2,30 @@
- <project version="4">
-   <component name="Encoding">
-     <file url="file://$PROJECT_DIR$/ruoyi-admin/src/main/java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskPreachformController.java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-admin/src/main/resources" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/Hello.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/HelloResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GReply.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GReplyResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GReport.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GReportResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GSearchNumber.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GSearchNumberResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GSend.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GSendResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSGetNumberResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSGetTemplateList.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSGetUserList.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSGetUserListResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSSaveContent.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSSaveContentResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSVerify.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSVerifyPrivate.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSVerifyPrivateResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSVerifyResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SmsServiceSoap.java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/resources" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-framework/src/main/java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-framework/src/main/resources" charset="UTF-8" />
-@@ -14,8 +36,14 @@
-     <file url="file://$PROJECT_DIR$/ruoyi-system/src/main/java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-system/src/main/resources" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/smartor/src/main/java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/smartor/src/main/java/com/smartor/service/IServiceSubtaskPreachformService.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskPreachformServiceImpl.java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/smartor/src/main/resources" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/smartor/src/main/resources/mapper/smartor/ServiceSubtaskPreachformMapper.xml" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
-+    <file url="PROJECT" charset="GBK" />
-   </component>
--</project>
-\ No newline at end of file
-+</project>
-Index: ruoyi-admin/src/main/resources/logback.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<configuration>\r\n    <!-- 鏃ュ織瀛樻斁璺緞 8095-->\r\n    <property name=\"log.path\" value=\"D:/health/logs\"/>\r\n    <!-- 鏃ュ織瀛樻斁璺緞 8096-->\r\n<!--        <property name=\"log.path\" value=\"D:/lihu/logs\"/>-->\r\n    <!-- 涓芥按鏃ュ織瀛樻斁璺緞 -->\r\n    <!--\t<property name=\"log.path\" value=\"/home/software/smartor-logs\" />-->\r\n    <!-- 鏃ュ織杈撳嚭鏍煎紡 -->\r\n    <property name=\"log.pattern\" value=\"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n\"/>\r\n\r\n    <!-- 鎺у埗鍙拌緭鍑� -->\r\n    <appender name=\"console\" class=\"ch.qos.logback.core.ConsoleAppender\">\r\n        <encoder charset=\"UTF-8\">\r\n            <pattern>${log.pattern}</pattern>\r\n        </encoder>\r\n    </appender>\r\n\r\n    <!-- 绯荤粺鏃ュ織杈撳嚭 -->\r\n    <appender name=\"file_info\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\r\n        <file>${log.path}/sys-info.log</file>\r\n        <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� -->\r\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\r\n            <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� -->\r\n            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>\r\n            <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->\r\n            <maxHistory>60</maxHistory>\r\n        </rollingPolicy>\r\n        <encoder charset=\"UTF-8\">\r\n            <pattern>${log.pattern}</pattern>\r\n        </encoder>\r\n        <filter class=\"ch.qos.logback.classic.filter.LevelFilter\">\r\n            <!-- 杩囨护鐨勭骇鍒� -->\r\n            <level>INFO</level>\r\n            <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� -->\r\n            <onMatch>ACCEPT</onMatch>\r\n            <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� -->\r\n            <onMismatch>DENY</onMismatch>\r\n        </filter>\r\n    </appender>\r\n\r\n    <appender name=\"file_error\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\r\n        <file>${log.path}/sys-error.log</file>\r\n        <!-- 寰幆鏀跨瓥锛氬熀浜庢椂闂村垱寤烘棩蹇楁枃浠� -->\r\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\r\n            <!-- 鏃ュ織鏂囦欢鍚嶆牸寮� -->\r\n            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>\r\n            <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->\r\n            <maxHistory>60</maxHistory>\r\n        </rollingPolicy>\r\n        <encoder charset=\"UTF-8\">\r\n            <pattern>${log.pattern}</pattern>\r\n        </encoder>\r\n        <filter class=\"ch.qos.logback.classic.filter.LevelFilter\">\r\n            <!-- 杩囨护鐨勭骇鍒� -->\r\n            <level>ERROR</level>\r\n            <!-- 鍖归厤鏃剁殑鎿嶄綔锛氭帴鏀讹紙璁板綍锛� -->\r\n            <onMatch>ACCEPT</onMatch>\r\n            <!-- 涓嶅尮閰嶆椂鐨勬搷浣滐細鎷掔粷锛堜笉璁板綍锛� -->\r\n            <onMismatch>DENY</onMismatch>\r\n        </filter>\r\n    </appender>\r\n\r\n    <!-- 鐢ㄦ埛璁块棶鏃ュ織杈撳嚭  -->\r\n    <appender name=\"sys-user\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\r\n        <file>${log.path}/sys-user.log</file>\r\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\r\n            <!-- 鎸夊ぉ鍥炴粴 daily -->\r\n            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>\r\n            <!-- 鏃ュ織鏈�澶х殑鍘嗗彶 60澶� -->\r\n            <maxHistory>60</maxHistory>\r\n        </rollingPolicy>\r\n        <encoder charset=\"UTF-8\">\r\n            <pattern>${log.pattern}</pattern>\r\n        </encoder>\r\n    </appender>\r\n\r\n    <!-- 绯荤粺妯″潡鏃ュ織绾у埆鎺у埗  -->\r\n    <logger name=\"com.ruoyi\" level=\"info\"/>\r\n    <logger name=\"com.smartor\" level=\"info\"/>\r\n    <!-- Spring鏃ュ織绾у埆鎺у埗  -->\r\n    <logger name=\"org.springframework\" level=\"warn\"/>\r\n\r\n    <root level=\"info\">\r\n        <appender-ref ref=\"console\"/>\r\n    </root>\r\n\r\n    <!--绯荤粺鎿嶄綔鏃ュ織-->\r\n    <root level=\"info\">\r\n        <appender-ref ref=\"file_info\"/>\r\n        <appender-ref ref=\"file_error\"/>\r\n    </root>\r\n\r\n    <!--绯荤粺鐢ㄦ埛鎿嶄綔鏃ュ織-->\r\n    <logger name=\"sys-user\" level=\"info\">\r\n        <appender-ref ref=\"sys-user\"/>\r\n    </logger>\r\n</configuration>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/resources/logback.xml b/ruoyi-admin/src/main/resources/logback.xml
---- a/ruoyi-admin/src/main/resources/logback.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/resources/logback.xml	(date 1758629526743)
-@@ -1,7 +1,7 @@
- <?xml version="1.0" encoding="UTF-8"?>
- <configuration>
-     <!-- 鏃ュ織瀛樻斁璺緞 8095-->
--    <property name="log.path" value="D:/health/logs"/>
-+    <property name="log.path" value="E:/health/logs"/>
-     <!-- 鏃ュ織瀛樻斁璺緞 8096-->
- <!--        <property name="log.path" value="D:/lihu/logs"/>-->
-     <!-- 涓芥按鏃ュ織瀛樻斁璺緞 -->
-Index: .idea/jarRepositories.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project version=\"4\">\r\n  <component name=\"RemoteRepositoriesConfiguration\">\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"Central Repositories\" />\r\n      <option name=\"url\" value=\"http://maven.aliyun.com/nexus/content/groups/public/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"Central Repository\" />\r\n      <option name=\"url\" value=\"http://maven.aliyun.com/nexus/content/groups/public/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"Central Repository\" />\r\n      <option name=\"url\" value=\"https://repo.maven.apache.org/maven2\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"releases\" />\r\n      <option name=\"name\" value=\"local private nexus\" />\r\n      <option name=\"url\" value=\"http://122.49.30.5:8981/nexus/content/repositories/releases/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"nexus\" />\r\n      <option name=\"name\" value=\"Public Repositories\" />\r\n      <option name=\"url\" value=\"http://211.90.241.109:7008/repository/maven-public/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"release\" />\r\n      <option name=\"name\" value=\"Release Repositories\" />\r\n      <option name=\"url\" value=\"http://211.90.241.109:7008/repository/maven-releases/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"Maven Central repository\" />\r\n      <option name=\"url\" value=\"https://repo1.maven.org/maven2\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"aliyun\" />\r\n      <option name=\"name\" value=\"aliyun\" />\r\n      <option name=\"url\" value=\"https://maven.aliyun.com/repository/public\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"snapshots\" />\r\n      <option name=\"name\" value=\"Snapshot Repositories\" />\r\n      <option name=\"url\" value=\"http://211.90.241.109:7008/repository/maven-snapshots/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"central\" />\r\n      <option name=\"url\" value=\"http://maven.aliyun.com/nexus/content/groups/public/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"central\" />\r\n      <option name=\"url\" value=\"http://repo2.maven.org/maven2/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"jcenter\" />\r\n      <option name=\"name\" value=\"jcenter\" />\r\n      <option name=\"url\" value=\"https://jcenter.bintray.com/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"group_migu\" />\r\n      <option name=\"name\" value=\"group_migu\" />\r\n      <option name=\"url\" value=\"https://nexus.cmread.com:9343/nexus/content/groups/group_migu/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"public\" />\r\n      <option name=\"name\" value=\"aliyun nexus\" />\r\n      <option name=\"url\" value=\"https://maven.aliyun.com/repository/public\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"central\" />\r\n      <option name=\"url\" value=\"https://repo.maven.apache.org/maven2\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"Central Repository\" />\r\n      <option name=\"url\" value=\"http://repo2.maven.org/maven2/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"snapshots\" />\r\n      <option name=\"name\" value=\"local private nexus snapshots\" />\r\n      <option name=\"url\" value=\"http://122.49.30.5:8981/nexus/content/repositories/snapshots/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"maven_repos\" />\r\n      <option name=\"name\" value=\"maven_repos\" />\r\n      <option name=\"url\" value=\"https://nexus.cmread.com:9343/nexus/content/repositories/migu\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"jboss.community\" />\r\n      <option name=\"name\" value=\"JBoss Community repository\" />\r\n      <option name=\"url\" value=\"https://repository.jboss.org/nexus/content/repositories/public/\" />\r\n    </remote-repository>\r\n  </component>\r\n</project>
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
---- a/.idea/jarRepositories.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/.idea/jarRepositories.xml	(date 1758784508494)
-@@ -49,12 +49,12 @@
-     <remote-repository>
-       <option name="id" value="central" />
-       <option name="name" value="central" />
--      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
-+      <option name="url" value="http://repo2.maven.org/maven2/" />
-     </remote-repository>
-     <remote-repository>
-       <option name="id" value="central" />
-       <option name="name" value="central" />
--      <option name="url" value="http://repo2.maven.org/maven2/" />
-+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
-     </remote-repository>
-     <remote-repository>
-       <option name="id" value="jcenter" />
-Index: smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.mapper;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport org.apache.ibatis.annotations.Mapper;\r\nimport org.apache.ibatis.annotations.Param;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 閮ㄩ棬绠$悊 鏁版嵁灞俓r\n *\r\n * @author ruoyi\r\n */\r\n@Mapper\r\npublic interface SysDept2Mapper {\r\n    /**\r\n     * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁\r\n     *\r\n     * @param dept 閮ㄩ棬淇℃伅\r\n     * @return 閮ㄩ棬淇℃伅闆嗗悎\r\n     */\r\n    public List<SysDept> selectDeptList(SysDept dept);\r\n\r\n    /**\r\n     * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭痋r\n     *\r\n     * @param roleId            瑙掕壊ID\r\n     * @param deptCheckStrictly 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀篭r\n     * @return 閫変腑閮ㄩ棬鍒楄〃\r\n     */\r\n    public List<Long> selectDeptListByRoleId(@Param(\"roleId\") Long roleId, @Param(\"deptCheckStrictly\") boolean deptCheckStrictly);\r\n\r\n    /**\r\n     * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅\r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 閮ㄩ棬淇℃伅\r\n     */\r\n    public SysDept selectDeptById(Long deptId);\r\n\r\n    public SysDept selectDeptByCode(String deptCode);\r\n\r\n    /**\r\n     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬\r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 閮ㄩ棬鍒楄〃\r\n     */\r\n    public List<SysDept> selectChildrenDeptById(Long deptId);\r\n\r\n    /**\r\n     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級\r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 瀛愰儴闂ㄦ暟\r\n     */\r\n    public int selectNormalChildrenDeptById(Long deptId);\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪瀛愯妭鐐筡r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 缁撴灉\r\n     */\r\n    public int hasChildByDeptId(Long deptId);\r\n\r\n    /**\r\n     * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛\r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 缁撴灉\r\n     */\r\n    public int checkDeptExistUser(Long deptId);\r\n\r\n    /**\r\n     * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴\r\n     *\r\n     * @param deptName 閮ㄩ棬鍚嶇О\r\n     * @param parentId 鐖堕儴闂↖D\r\n     * @return 缁撴灉\r\n     */\r\n    public SysDept checkDeptNameUnique(@Param(\"deptName\") String deptName, @Param(\"parentId\") Long parentId);\r\n\r\n    /**\r\n     * 鏂板閮ㄩ棬淇℃伅\r\n     *\r\n     * @param dept 閮ㄩ棬淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public int insertDept(SysDept dept);\r\n\r\n    /**\r\n     * 鎵归噺鏂板閮ㄩ棬淇℃伅\r\n     *\r\n     * @param depts 閮ㄩ棬淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public int batchDept(List<SysDept> depts);\r\n\r\n    /**\r\n     * 淇敼閮ㄩ棬淇℃伅\r\n     *\r\n     * @param dept 閮ㄩ棬淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public int updateDept(SysDept dept);\r\n\r\n    /**\r\n     * 淇敼鎵�鍦ㄩ儴闂ㄦ甯哥姸鎬乗r\n     *\r\n     * @param deptIds 閮ㄩ棬ID缁刓r\n     */\r\n    public void updateDeptStatusNormal(Long[] deptIds);\r\n\r\n    /**\r\n     * 淇敼瀛愬厓绱犲叧绯籠r\n     *\r\n     * @param depts 瀛愬厓绱燶r\n     * @return 缁撴灉\r\n     */\r\n    public int updateDeptChildren(@Param(\"depts\") List<SysDept> depts);\r\n\r\n    /**\r\n     * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅\r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 缁撴灉\r\n     */\r\n    public int deleteDeptById(Long deptId);\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java b/smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java
---- a/smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java	(date 1758682819560)
-@@ -38,7 +38,7 @@
-      */
-     public SysDept selectDeptById(Long deptId);
- 
--    public SysDept selectDeptByCode(String deptCode);
-+    public SysDept selectDeptByCode(@Param("deptCode")String deptCode,@Param("orgid")String orgid);
- 
-     /**
-      * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬
-Index: smartor/src/main/resources/mapper/smartor/HNGatherPatArchiveMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.HNGatherPatArchiveMapper\">\r\n\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysUserDept\" id=\"SysUserDeptResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"userId\" column=\"user_id\"/>\r\n        <result property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"deptType\" column=\"dept_type\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysUserRole\" id=\"SysUserRoleResult\">\r\n        <result property=\"userId\" column=\"user_id\"/>\r\n        <result property=\"roleId\" column=\"role_id\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.smartor.domain.PatArchive\" id=\"PatArchiveResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"patientno\" column=\"patientno\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"notrequiredFlag\" column=\"notrequired_flag\"/>\r\n        <result property=\"notrequiredreason\" column=\"notrequiredreason\"/>\r\n        <result property=\"patidHis\" column=\"patid_his\"/>\r\n        <result property=\"sdFlag\" column=\"sd_flag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"viptype\" column=\"viptype\"/>\r\n        <result property=\"name\" column=\"name\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"nation\" column=\"nation\"/>\r\n        <result property=\"nativePlace\" column=\"native_place\"/>\r\n        <result property=\"placeOfResidence\" column=\"place_of_residence\"/>\r\n        <result property=\"birthplace\" column=\"birthplace\"/>\r\n        <result property=\"idcardno\" column=\"idcardno\"/>\r\n        <result property=\"birthdate\" column=\"birthdate\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"age2\" column=\"age2\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"archivetime\" column=\"archivetime\"/>\r\n        <result property=\"archiveby\" column=\"archiveby\"/>\r\n        <result property=\"telcode\" column=\"telcode\"/>\r\n        <result property=\"relativetelcode\" column=\"relativetelcode\"/>\r\n        <result property=\"idcardtype\" column=\"idcardtype\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"openid\" column=\"openid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"dept\" column=\"deptname\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"tag\" column=\"tag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"bedNo\" column=\"bedno\"/>\r\n        <result property=\"inhosptime\" column=\"inhosptime\"/>\r\n        <result property=\"ageUnit\" column=\"age_unit\"/>\r\n        <result property=\"ageUnit2\" column=\"age_unit2\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"careFacilities\" column=\"care_facilities\"/>\r\n        <result property=\"casePath\" column=\"case_path\"/>\r\n        <result property=\"degreeOfEducation\" column=\"degree_of_education\"/>\r\n        <result property=\"maritalStatus\" column=\"marital_status\"/>\r\n        <result property=\"income\" column=\"income\"/>\r\n        <result property=\"medicareType\" column=\"medicare_type\"/>\r\n        <result property=\"carePerson\" column=\"care_person\"/>\r\n        <result property=\"casePersonAge\" column=\"case_person_age\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"filterDrname\" column=\"filter_drname\"/>\r\n        <result property=\"filterDrcode\" column=\"filter_drcode\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.smartor.domain.PatArchiveOthreInfo\" id=\"PatArchiveOthreInfoResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"notrequiredFlag\" column=\"notrequired_flag\"/>\r\n        <result property=\"notrequiredreason\" column=\"notrequiredreason\"/>\r\n        <result property=\"patientno\" column=\"patientno\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"patidHis\" column=\"patid_his\"/>\r\n        <result property=\"sdFlag\" column=\"sd_flag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"viptype\" column=\"viptype\"/>\r\n        <result property=\"name\" column=\"name\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"nation\" column=\"nation\"/>\r\n        <result property=\"nativePlace\" column=\"native_place\"/>\r\n        <result property=\"placeOfResidence\" column=\"place_of_residence\"/>\r\n        <result property=\"birthplace\" column=\"birthplace\"/>\r\n        <result property=\"idcardno\" column=\"idcardno\"/>\r\n        <result property=\"birthdate\" column=\"birthdate\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"age2\" column=\"age2\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"archivetime\" column=\"archivetime\"/>\r\n        <result property=\"archiveby\" column=\"archiveby\"/>\r\n        <result property=\"telcode\" column=\"telcode\"/>\r\n        <result property=\"relativetelcode\" column=\"relativetelcode\"/>\r\n        <result property=\"idcardtype\" column=\"idcardtype\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"openid\" column=\"openid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"dept\" column=\"deptname\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"tag\" column=\"tag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"bedNo\" column=\"bedno\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"endtime\" column=\"endtime\"/>\r\n        <result property=\"ageUnit\" column=\"age_unit\"/>\r\n        <result property=\"ageUnit2\" column=\"age_unit2\"/>\r\n        <result property=\"inhospno\" column=\"inhospno\"/>\r\n        <result property=\"nurseId\" column=\"nurse_id\"/>\r\n        <result property=\"nurseName\" column=\"nurse_name\"/>\r\n        <result property=\"outWayName\" column=\"out_way_name\"/>\r\n        <result property=\"outWayId\" column=\"out_way_id\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"leavediagname\" column=\"leavediagname\"/>\r\n        <result property=\"leaveicd10code\" column=\"leaveicd10code\"/>\r\n        <result property=\"filterDrname\" column=\"filter_drname\"/>\r\n        <result property=\"filterDrcode\" column=\"filter_drcode\"/>\r\n    </resultMap>\r\n\r\n    <resultMap type=\"com.smartor.domain.PatMedInhosp\" id=\"PatMedInhospResult\">\r\n        <result property=\"inhospid\" column=\"inhospid\"/>\r\n        <result property=\"inhospno\" column=\"inhospno\"/>\r\n        <result property=\"serialnum\" column=\"serialnum\"/>\r\n        <result property=\"hospitalname\" column=\"hospitalname\"/>\r\n        <result property=\"hospitalcode\" column=\"hospitalcode\"/>\r\n        <result property=\"hospitaldistrictcode\" column=\"hospitaldistrictcode\"/>\r\n        <result property=\"hospitaldistrictname\" column=\"hospitaldistrictname\"/>\r\n        <result property=\"icd10code\" column=\"icd10code\"/>\r\n        <result property=\"diagname\" column=\"diagname\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"endtime\" column=\"endtime\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"deptname\" column=\"deptname\"/>\r\n        <result property=\"roomno\" column=\"roomno\"/>\r\n        <result property=\"bedNo\" column=\"bed_no\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"leavediagname\" column=\"leavediagname\"/>\r\n        <result property=\"leaveicd10code\" column=\"leaveicd10code\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"schemestatus\" column=\"schemestatus\"/>\r\n        <result property=\"generalschemestatus\" column=\"generalschemestatus\"/>\r\n        <result property=\"leaveldeptcode\" column=\"leaveldeptcode\"/>\r\n        <result property=\"leaveldeptname\" column=\"leaveldeptname\"/>\r\n        <result property=\"hospitaldistrictid\" column=\"hospitaldistrictid\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"leavehospitaldistrictid\" column=\"leavehospitaldistrictid\"/>\r\n        <result property=\"deptid\" column=\"deptid\"/>\r\n        <result property=\"leaveldeptid\" column=\"leaveldeptid\"/>\r\n        <result property=\"schemetime\" column=\"schemetime\"/>\r\n        <result property=\"patname\" column=\"patname\"/>\r\n        <result property=\"patno\" column=\"patno\"/>\r\n        <result property=\"inhospstate\" column=\"inhospstate\"/>\r\n        <result property=\"deptcheckFlag\" column=\"deptcheck_flag\"/>\r\n        <result property=\"wardcheckFlag\" column=\"wardcheck_flag\"/>\r\n        <result property=\"diagcheckFlag\" column=\"diagcheck_flag\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"telcode\" column=\"telcode\"/>\r\n        <result property=\"longTaskReason\" column=\"long_task_reason\"/>\r\n        <result property=\"nurseId\" column=\"nurse_id\"/>\r\n        <result property=\"nurseName\" column=\"nurse_name\"/>\r\n        <result property=\"outWayId\" column=\"out_way_id\"/>\r\n        <result property=\"outWayName\" column=\"out_way_name\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"operator\" column=\"operator\"/>\r\n        <result property=\"operatorId\" column=\"operator_id\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"tagname\" column=\"tagname\"/>\r\n        <result property=\"fuflag\" column=\"fuflag\"/>\r\n        <result property=\"fudate\" column=\"fudate\"/>\r\n        <result property=\"fuperiod\" column=\"fuperiod\"/>\r\n        <result property=\"futypecode\" column=\"futypecode\"/>\r\n        <result property=\"futypedesc\" column=\"futypedesc\"/>\r\n        <result property=\"fuadvice\" column=\"fuadvice\"/>\r\n        <result property=\"fuspecialadvice\" column=\"fuspecialadvice\"/>\r\n    </resultMap>\r\n\r\n    <resultMap type=\"com.smartor.domain.PatMedOuthosp\" id=\"PatMedOuthospResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"serialnum\" column=\"serialnum\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"hospitalname\" column=\"hospitalname\"/>\r\n        <result property=\"hospitalcode\" column=\"hospitalcode\"/>\r\n        <result property=\"icd10code\" column=\"icd10code\"/>\r\n        <result property=\"diagname\" column=\"diagname\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"deptname\" column=\"deptname\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"admitdate\" column=\"admitdate\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"schemestatus\" column=\"schemestatus\"/>\r\n        <result property=\"deptid\" column=\"deptid\"/>\r\n        <result property=\"schemetime\" column=\"schemetime\"/>\r\n        <result property=\"hpi\" column=\"hpi\"/>\r\n        <result property=\"mainsuit\" column=\"mainsuit\"/>\r\n        <result property=\"outhospno\" column=\"outhospno\"/>\r\n        <result property=\"patname\" column=\"patname\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"patno\" column=\"patno\"/>\r\n        <result property=\"diagcheckFlag\" column=\"diagcheck_flag\"/>\r\n        <result property=\"idcardno\" column=\"idcardno\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.smartor.domain.Icd10\" id=\"Icd10Result\">\r\n        <result property=\"icdid\" column=\"icdid\"/>\r\n        <result property=\"icdcode\" column=\"icdcode\"/>\r\n        <result property=\"icdname\" column=\"icdname\"/>\r\n        <result property=\"icdpym\" column=\"icdpym\"/>\r\n        <result property=\"icdwbm\" column=\"icdwbm\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"pid\" column=\"pid\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"lastflag\" column=\"lastflag\"/>\r\n        <result property=\"chimedflag\" column=\"chimedflag\"/>\r\n        <result property=\"hisIcdid\" column=\"his_icdid\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysDept\" id=\"SysDeptResult\">\r\n        <id property=\"deptId\" column=\"dept_id\"/>\r\n        <id property=\"hisDeptId\" column=\"his_dept_id\"/>\r\n        <result property=\"parentId\" column=\"parent_id\"/>\r\n        <result property=\"hisParentId\" column=\"his_parent_id\"/>\r\n        <result property=\"ancestors\" column=\"ancestors\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"orderNum\" column=\"order_num\"/>\r\n        <result property=\"leader\" column=\"leader\"/>\r\n        <result property=\"phone\" column=\"phone\"/>\r\n        <result property=\"email\" column=\"email\"/>\r\n        <result property=\"status\" column=\"status\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"parentName\" column=\"parent_name\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptType\" column=\"dept_type\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"type\" column=\"type\"/>\r\n    </resultMap>\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysUser\" id=\"SysUserResult\">\r\n        <id property=\"userId\" column=\"user_id\"/>\r\n        <id property=\"orgid\" column=\"orgid\"/>\r\n        <id property=\"hisUserId\" column=\"his_user_id\"/>\r\n        <result property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"hospInfo\" column=\"hosp_info\"/>\r\n        <result property=\"deptInfo\" column=\"dept_info\"/>\r\n        <result property=\"userName\" column=\"user_name\"/>\r\n        <result property=\"nickName\" column=\"nick_name\"/>\r\n        <result property=\"email\" column=\"email\"/>\r\n        <result property=\"phonenumber\" column=\"phonenumber\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"avatar\" column=\"avatar\"/>\r\n        <result property=\"password\" column=\"password\"/>\r\n        <result property=\"status\" column=\"status\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"loginIp\" column=\"login_ip\"/>\r\n        <result property=\"loginDate\" column=\"login_date\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"idCard\" column=\"id_card\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"title\" column=\"title\"/>\r\n        <result property=\"birthday\" column=\"birthday\"/>\r\n        <result property=\"jobPhone\" column=\"job_phone\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"userType\" column=\"user_type\"/>\r\n        <result property=\"searchscope\" column=\"searchscope\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectPatArchiveVo\">\r\n        select notrequired_flag,\r\n               notrequiredreason,\r\n               patientno,\r\n               patid_his,\r\n               sd_flag,\r\n               name,\r\n               sex,\r\n               idcardno,\r\n               birthdate,\r\n               age,\r\n               nation,\r\n               native_place,\r\n               place_of_residence,\r\n               birthplace,\r\n               sourcefrom,\r\n               archivetime,\r\n               archiveby,\r\n               telcode,\r\n               relativetelcode,\r\n               idcardtype,\r\n               orgid,\r\n               openid,\r\n               viptype,\r\n               care_facilities,\r\n               case_path,\r\n               degree_of_education,\r\n               marital_status,\r\n               income,\r\n               medicare_type,\r\n               care_person,\r\n               case_person_age\r\n        from hzjbxx\r\n    </sql>\r\n\r\n\r\n    <select id=\"yhyjsxx\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\" resultMap=\"SysUserRoleResult\">\r\n        select user_id, role_id, orgid\r\n        FROM yhyjsxx\r\n        <where>\r\n            <if test=\"hisUserId != null \">and user_id = #{hisUserId}</if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"yhyksxx\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\" resultMap=\"SysUserDeptResult\">\r\n        select user_id, user_code, dept_type,department_id as\r\n        dept_id,dept_name,deptparent,del_flag,orgid,create_time,create_by,update_time,update_by\r\n        FROM yhyksxx\r\n        <where>\r\n            user_id != 'admin'\r\n            <if test=\"hisUserId != null \">and user_id = #{hisUserId}</if>\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatArchiveList\" parameterType=\"com.smartor.domain.PatArchive\" resultMap=\"PatArchiveResult\">\r\n        <include refid=\"selectPatArchiveVo\"/>\r\n        <where>\r\n            <if test=\"name != null  and name != ''\">and name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and idcardno = #{idcardno}</if>\r\n            <if test=\"sourcefrom != null \">and sourcefrom = #{sourcefrom}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and telcode = #{telcode}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"id != null  and id != ''\">and id = #{id}</if>\r\n            <if test=\"isupload != null \">and isupload = #{isupload}</if>\r\n            <if test=\"uploadTime != null \">and upload_time = #{uploadTime}</if>\r\n            <if test=\"viptype != null \">and viptype = #{viptype}</if>\r\n            <if test=\"pattype != null \">and pattype = #{pattype}</if>\r\n            <if test=\"patientno != null \">and patientno = CAST(#{patientno} AS INTEGER)</if>\r\n            <if test=\"patidHis != null \">and patid_his = #{patidHis}</if>\r\n            <if test=\"sdFlag != null \">and sd_flag = #{sdFlag}</if>\r\n            <if test=\"ageUnit != null \">and age_unit = #{ageUnit}</if>\r\n            <if test=\"age != null \">and age = #{age}</if>\r\n            <if test=\"age2 != null \">and age2 = #{age2}</if>\r\n            <if test=\"ageUnit2 != null \">and age_unit2 = #{ageUnit2}</if>\r\n            <if test=\"notrequiredFlag != null \">and notrequired_flag = #{notrequiredFlag}</if>\r\n            <if test=\"notrequiredreason != null \">and notrequiredreason = #{notrequiredreason}</if>\r\n            <if test=\"careFacilities != null \">and care_facilities = #{careFacilities}</if>\r\n            <if test=\"casePath != null \">and case_path = #{casePath}</if>\r\n            <if test=\"degreeOfEducation != null \">and degree_of_education = #{degreeOfEducation}</if>\r\n            <if test=\"maritalStatus != null \">and marital_status = #{maritalStatus}</if>\r\n            <if test=\"income != null \">and income = #{income}</if>\r\n            <if test=\"medicareType != null \">and medicare_type = #{medicareType}</if>\r\n            <if test=\"carePerson != null \">and care_person = #{carePerson}</if>\r\n            <if test=\"casePersonAge != null \">and case_person_age = #{casePersonAge}</if>\r\n            <if test=\"filterDrname != null \">and filter_drname = #{filterDrname}</if>\r\n            <if test=\"filterDrcode != null \">and filter_drcode = #{filterDrcode}</if>\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatMedInhospListCount\" parameterType=\"com.smartor.domain.PatMedInhosp\" resultType=\"Long\">\r\n        select count(*)\r\n        FROM cryxx\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveListByLastId\" resultMap=\"PatArchiveResult\">\r\n        SELECT *\r\n        FROM (\r\n                 SELECT *,\r\n                        ROW_NUMBER() OVER (ORDER BY patid_his) as row_num\r\n                 FROM hzjbxx\r\n             ) a\r\n        WHERE row_num > #{lastRowNumber} LIMIT #{ps}\r\n    </select>\r\n\r\n    <select id=\"selectPatMedInhospListByLastId\" resultMap=\"PatMedInhospResult\">\r\n        SELECT *\r\n        FROM (SELECT *,\r\n                     ROW_NUMBER() OVER (ORDER BY patno) as row_num\r\n              FROM cryxx\r\n             ) a\r\n        WHERE row_num > #{lastRowNumber} LIMIT #{ps}\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveCount\" parameterType=\"com.smartor.domain.PatMedInhosp\" resultType=\"Long\">\r\n        select count(*)\r\n        FROM hzjbxx\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatMedInhospList\" parameterType=\"com.smartor.domain.PatMedInhosp\" resultMap=\"PatMedInhospResult\">\r\n        select\r\n        b.nurse_id,\r\n        b.nurse_name,\r\n        b.patname,\r\n        b.out_way_id,\r\n        b.out_way_name,\r\n        b.inhospstate,\r\n        b.patno,\r\n        b.inhospno,\r\n        b.serialnum,\r\n        b.hospitalname,\r\n        b.hospitalcode,\r\n        b.hospitaldistrictcode,\r\n        b.hospitaldistrictname,\r\n        b.icd10code,\r\n        b.diagname,\r\n        b.starttime,\r\n        b.endtime,\r\n        b.deptcode,\r\n        b.deptname,\r\n        b.roomno,\r\n        b.bed_no,\r\n        b.orgid,\r\n        b.leavediagname,\r\n        b.leaveicd10code,\r\n        b.drcode,\r\n        b.drname,\r\n        b.leaveldeptcode,\r\n        b.leaveldeptname,\r\n        b.hospitaldistrictid,\r\n        b.leavehospitaldistrictcode,\r\n        b.leavehospitaldistrictname,\r\n        b.leavehospitaldistrictid,\r\n        b.deptid,\r\n        b.leaveldeptid,\r\n        b.schemetime,\r\n        b.fuflag,\r\n        b.fudate,\r\n        b.fuperiod,\r\n        b.futypecode,\r\n        b.futypedesc,\r\n        b.fuadvice\r\n        FROM\r\n        cryxx b\r\n        <where>\r\n\r\n            <if test=\"startOutHospTime != null \">and to_char(b.endtime,'YYMMDD') &gt;=\r\n                to_char(#{startOutHospTime}::date,'YYMMDD')\r\n            </if>\r\n            <if test=\"endOutHospTime != null \">and to_char(b.endtime,'YYMMDD') &lt;=\r\n                to_char(#{endOutHospTime}::date,'YYMMDD')\r\n            </if>\r\n            <if test=\"startInHospTime != null \">and to_char(b.starttime,'YYMMDD') &gt;=\r\n                to_char(#{startInHospTime}::date,'%y%m%d')\r\n            </if>\r\n            <if test=\"endInHospTime != null \">and to_char(b.starttime,'YYMMDD') &lt;=\r\n                to_char(#{endInHospTime}::date,'YYMMDD')\r\n            </if>\r\n            <if test=\"inhospno != null \">and b.inhospno = #{inhospno}</if>\r\n            <if test=\"fuflag != null \">and b.fuflag = #{fuflag}</if>\r\n            <if test=\"serialnum != null \">and b.serialnum = #{serialnum}</if>\r\n            <if test=\"patno != null \">and b.patno = #{patno}</if>\r\n            <if test=\"nurseId != null \">and b.nurse_id = #{nurseId}</if>\r\n            <if test=\"nurseName != null and nurseName != ''\">and b.nurse_name = #{nurseName}</if>\r\n            <if test=\"inhospstate != null \">and b.inhospstate = #{inhospstate}</if>\r\n            <if test=\"outWayId != null \">and b.out_way_id = #{outWayId}</if>\r\n            <if test=\"outWayName != null \">and b.out_way_name = #{outWayName}</if>\r\n            <if test=\"orgid != null \">and b.orgid = #{orgid}</if>\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatMedOuthospList\" parameterType=\"com.smartor.domain.PatMedOuthosp\"\r\n            resultMap=\"PatMedOuthospResult\">\r\n        select\r\n        outhospno,\r\n        patno,\r\n        remark,\r\n        serialnum,\r\n        hospitalname,\r\n        hospitalcode,\r\n        icd10code,\r\n        diagname,\r\n        deptcode,\r\n        deptname,\r\n        drcode,\r\n        drname,\r\n        admitdate,\r\n        orgid,\r\n        update_by,\r\n        update_time,\r\n        create_by,\r\n        create_time,\r\n        isupload,\r\n        upload_time,\r\n        schemestatus,\r\n        deptid,\r\n        schemetime,\r\n        hpi,\r\n        patname,\r\n        mainsuit\r\n        from mzxx\r\n        <where>\r\n\r\n            <if test=\"beginTime != null \">and to_char( admitdate,'YYMMDD') &gt;=\r\n                to_char(#{beginTime}::date,'YYMMDD')\r\n            </if>\r\n            <if test=\"endTime != null \">and to_char( admitdate,'YYMMDD') &lt;=\r\n                to_char(#{endTime}::date,'YYMMDD')\r\n            </if>\r\n\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"selectIcd10List\" parameterType=\"com.smartor.domain.Icd10\" resultMap=\"Icd10Result\">\r\n        select\r\n        icdcode,\r\n        his_icdid,\r\n        lastflag,\r\n        chimedflag,\r\n        icdname,\r\n        icdpym\r\n        from jbxx\r\n        <where>\r\n            <if test=\"icdcode != null  and icdcode != ''\">and icdcode = #{icdcode}</if>\r\n            <if test=\"lastflag != null  and lastflag != ''\">and lastflag = #{lastflag}</if>\r\n            <if test=\"chimedflag != null  and chimedflag != ''\">and chimedflag = #{chimedflag}</if>\r\n            <if test=\"icdname != null  and icdname != ''\">and icdname like concat('%', #{icdname}, '%')</if>\r\n            <if test=\"icdpym != null  and icdpym != ''\">and icdpym = #{icdpym}</if>\r\n            <if test=\"icdwbm != null  and icdwbm != ''\">and icdwbm = #{icdwbm}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"pid != null \">and pid = #{pid}</if>\r\n            <if test=\"guid != null  and guid != ''\">and guid = #{guid}</if>\r\n            <if test=\"hisIcdid != null  and hisIcdid != ''\">and his_icdid = #{hisIcdid}</if>\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"selectUserList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\" resultMap=\"SysUserResult\">\r\n        select\r\n        u.title,u.his_user_id, u.searchscope, u.dept_id, u.user_type,\r\n        u.nick_name, u.user_name, u.email,u.id_card, u.avatar,\r\n        u.birthday,u.orgid,u.job_phone,u.phonenumber, u.sex, u.status,\r\n        u.login_ip, u.login_date, u.create_by, u.create_time, u.remark\r\n        from ryxx u\r\n        <where>\r\n            <if test=\"userId != null and userId != 0\">\r\n                AND u.user_id = #{userId}\r\n            </if>\r\n            <if test=\"userName != null and userName != ''\">\r\n                AND u.user_name like concat('%', #{userName}, '%')\r\n            </if>\r\n            <if test=\"nickName != null and nickName != ''\">\r\n                AND u.nick_name like concat('%', #{nickName}, '%')\r\n            </if>\r\n            <if test=\"status != null and status != ''\">\r\n                AND u.status = #{status}\r\n            </if>\r\n            <if test=\"idCard != null and idCard != ''\">\r\n                AND u.id_card = #{idCard}\r\n            </if>\r\n            <if test=\"title != null and title != ''\">\r\n                AND u.title = #{title}\r\n            </if>\r\n            <if test=\"jobPhone != null and jobPhone != ''\">\r\n                AND u.job_phone = #{jobPhone}\r\n            </if>\r\n            <if test=\"birthday != null and birthday != ''\">\r\n                AND u.birthday = #{birthday}\r\n            </if>\r\n            <if test=\"hisUserId != null and hisUserId != ''\">\r\n                AND u.his_user_id = #{hisUserId}\r\n            </if>\r\n            <if test=\"phonenumber != null and phonenumber != ''\">\r\n                AND u.phonenumber like concat('%', #{phonenumber}, '%')\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectDeptList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\" resultMap=\"SysDeptResult\">\r\n        SELECT d.dept_code,\r\n               d.TYPE,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.dept_type,\r\n               d.email,\r\n               d.status,\r\n               d.create_by,\r\n               d.create_time,\r\n               d.his_dept_id,\r\n               d.his_parent_id\r\n        FROM bmxx d\r\n\r\n    </select>\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/HNGatherPatArchiveMapper.xml b/smartor/src/main/resources/mapper/smartor/HNGatherPatArchiveMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/HNGatherPatArchiveMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/resources/mapper/smartor/HNGatherPatArchiveMapper.xml	(date 1758682819404)
-@@ -645,7 +645,7 @@
-                d.create_time,
-                d.his_dept_id,
-                d.his_parent_id
--        FROM bmxx d
-+        FROM HEALTHY_DEPT d
- 
-     </select>
- </mapper>
-Index: ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE configuration\r\n        PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-config.dtd\">\r\n<configuration>\r\n    <!-- 鍏ㄥ眬鍙傛暟 -->\r\n    <settings>\r\n        <!-- 浣垮叏灞�鐨勬槧灏勫櫒鍚敤鎴栫鐢ㄧ紦瀛� -->\r\n        <setting name=\"cacheEnabled\" value=\"true\"/>\r\n        <!-- 鍏佽JDBC 鏀寔鑷姩鐢熸垚涓婚敭 -->\r\n        <setting name=\"useGeneratedKeys\" value=\"true\"/>\r\n        <!-- 閰嶇疆榛樿鐨勬墽琛屽櫒.SIMPLE灏辨槸鏅�氭墽琛屽櫒;REUSE鎵ц鍣ㄤ細閲嶇敤棰勫鐞嗚鍙�(prepared statements);BATCH鎵ц鍣ㄥ皢閲嶇敤璇彞骞舵墽琛屾壒閲忔洿鏂� -->\r\n        <setting name=\"defaultExecutorType\" value=\"SIMPLE\"/>\r\n        <!-- 鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇 -->\r\n<!--        <setting name=\"logImpl\" value=\"STDOUT_LOGGING\"/>-->\r\n        <!-- 浣跨敤椹煎嘲鍛藉悕娉曡浆鎹㈠瓧娈� -->\r\n        <!-- <setting name=\"mapUnderscoreToCamelCase\" value=\"true\"/> -->\r\n    </settings>\r\n\r\n    <plugins>\r\n        <!-- SQL杞崲鎷︽埅鍣� -->\r\n        <plugin interceptor=\"com.ruoyi.common.mybatis.SqlConverterInterceptor\"/>\r\n    </plugins>\r\n\r\n</configuration>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml
---- a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml	(date 1758682819351)
-@@ -12,7 +12,7 @@
-         <!-- 閰嶇疆榛樿鐨勬墽琛屽櫒.SIMPLE灏辨槸鏅�氭墽琛屽櫒;REUSE鎵ц鍣ㄤ細閲嶇敤棰勫鐞嗚鍙�(prepared statements);BATCH鎵ц鍣ㄥ皢閲嶇敤璇彞骞舵墽琛屾壒閲忔洿鏂� -->
-         <setting name="defaultExecutorType" value="SIMPLE"/>
-         <!-- 鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇 -->
--<!--        <setting name="logImpl" value="STDOUT_LOGGING"/>-->
-+        <setting name="logImpl" value="STDOUT_LOGGING"/>
-         <!-- 浣跨敤椹煎嘲鍛藉悕娉曡浆鎹㈠瓧娈� -->
-         <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
-     </settings>
-Index: smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.smartor.domain.*;\r\nimport org.springframework.web.multipart.MultipartFile;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 娌冲崡閲囬泦鎮h�呬俊鎭帴鍙r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\npublic interface IHNGatherPatArchiveService {\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呮。妗堝垪琛╘r\n     *\r\n     * @param patArchive 鎮h�呮。妗圽r\n     * @return 鎮h�呮。妗堥泦鍚圽r\n     */\r\n    public List<PatArchive> selectPatArchiveList(PatArchive patArchive);\r\n\r\n    /**\r\n     * 鍑哄叆闄俊鎭痋r\n     *\r\n     * @param patMedInhosp\r\n     * @return\r\n     */\r\n    public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp);\r\n\r\n    /**\r\n     * 娌冲崡鏁版嵁閲囬泦\r\n     *\r\n     * @param patMedInhosp\r\n     * @return\r\n     */\r\n    public Boolean hnDataGather(HnDataGatherVO patMedInhosp);\r\n\r\n    /**\r\n     * 闂ㄦ�ヨ瘖淇℃伅\r\n     *\r\n     * @param id\r\n     * @return\r\n     */\r\n    public Integer selectPatMedOuthospList(PatMedOuthosp patMedOuthosp);\r\n\r\n\r\n    /**\r\n     * 鏌ヨ鐤剧梾鍒楄〃\r\n     *\r\n     * @param icd10 鐤剧梾\r\n     * @return 鐤剧梾闆嗗悎\r\n     */\r\n    public Integer selectIcd10List(Icd10 icd10);\r\n\r\n    /**\r\n     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃\r\n     *\r\n     * @param sysUser 鐢ㄦ埛淇℃伅\r\n     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅\r\n     */\r\n    public Integer selectUserList(SysUser sysUser);\r\n\r\n    /**\r\n     * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁\r\n     *\r\n     * @param dept 閮ㄩ棬淇℃伅\r\n     * @return 閮ㄩ棬淇℃伅闆嗗悎\r\n     */\r\n    public Integer selectDeptList(SysDept dept);\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java b/smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java
---- a/smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java	(date 1758682819454)
-@@ -42,7 +42,7 @@
-     /**
-      * 闂ㄦ�ヨ瘖淇℃伅
-      *
--     * @param id
-+     * @param patMedOuthosp
-      * @return
-      */
-     public Integer selectPatMedOuthospList(PatMedOuthosp patMedOuthosp);
-Index: smartor/src/main/java/com/smartor/common/LSHospTokenUtil.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.common;\r\n\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\n\r\nimport java.io.IOException;\r\n\r\n@Slf4j\r\npublic class LSHospTokenUtil {\r\n     public static String getToken(String orgid,String url) {\r\n        String token = null;\r\n        LyraTokenUtil lyraTokenUtil = null;\r\n            if (orgid.equals(\"47255004333112711A1001\")) { //鏅畞\r\n                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(\"https://9.0.124.104:13021/mediinfo-lyra-authserver/connect/token\", \"zjhes.suifangxt\", \"OIjdJvx2ALjFVGZoCZO4I8O\");\r\n            }else  if (orgid.equals(\"47231022633110211A2101\")) {  //涓尰闄r\n                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(\"https://9.0.124.104:13011/mediinfo-lyra-authserver/connect/token\", \"zjhes.suifangxt\", \"OIjdJvx2ALjFVGZoCZO4I8O\");\r\n            }else if(ObjectUtils.isNotEmpty(url)) {\r\n                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(url, \"zjhes.suifangxt\", \"OIjdJvx2ALjFVGZoCZO4I8O\");\r\n                log.info(\"token.360璋冪敤缁撴灉\" + url + \";鏈烘瀯浠g爜锛歕" + orgid + \"\");\r\n            }\r\n        try {\r\n            token = lyraTokenUtil.getToken();\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n        return token;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/common/LSHospTokenUtil.java b/smartor/src/main/java/com/smartor/common/LSHospTokenUtil.java
---- a/smartor/src/main/java/com/smartor/common/LSHospTokenUtil.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/common/LSHospTokenUtil.java	(date 1758683120333)
-@@ -7,17 +7,18 @@
- 
- @Slf4j
- public class LSHospTokenUtil {
--     public static String getToken(String orgid,String url) {
-+    public static String getToken(String orgid,String url) {
-         String token = null;
-         LyraTokenUtil lyraTokenUtil = null;
--            if (orgid.equals("47255004333112711A1001")) { //鏅畞
--                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil("https://9.0.124.104:13021/mediinfo-lyra-authserver/connect/token", "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
--            }else  if (orgid.equals("47231022633110211A2101")) {  //涓尰闄�
--                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil("https://9.0.124.104:13011/mediinfo-lyra-authserver/connect/token", "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
--            }else if(ObjectUtils.isNotEmpty(url)) {
--                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(url, "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
--                log.info("token.360璋冪敤缁撴灉" + url + ";鏈烘瀯浠g爜锛�" + orgid + "");
--            }
-+        if(ObjectUtils.isNotEmpty(url)){
-+            lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(url, "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
-+            log.info("token.360璋冪敤缁撴灉"+url+";鏈烘瀯浠g爜锛�"+orgid+"");
-+        }else {
-+            if (orgid.equals("47255004333112711A1001"))  //鏅畞
-+                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil("https://9.0.124.104:13021/mediinfo-lyra-authserver/connect/token", "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
-+            if (orgid.equals("47231022633110211A2101"))  //涓尰闄�
-+                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil("https://9.0.124.104:13011/mediinfo-lyra-authserver/connect/token", "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
-+        }
-         try {
-             token = lyraTokenUtil.getToken();
-         } catch (IOException e) {
-Index: ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpUtil.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.common.utils;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.github.pagehelper.util.StringUtil;\r\nimport com.ruoyi.common.exception.HttpRequestException;\r\nimport com.ruoyi.common.utils.http.HttpEntity;\r\nimport com.ruoyi.common.utils.json.JsonRequestBody;\r\nimport com.ruoyi.common.utils.json.JsonResponseBody;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.codec.Charsets;\r\nimport org.apache.commons.httpclient.*;\r\nimport org.apache.commons.httpclient.methods.EntityEnclosingMethod;\r\nimport org.apache.commons.httpclient.methods.PostMethod;\r\nimport org.apache.commons.httpclient.methods.RequestEntity;\r\nimport org.apache.commons.httpclient.methods.StringRequestEntity;\r\nimport org.apache.commons.httpclient.params.HttpClientParams;\r\nimport org.springframework.util.Assert;\r\nimport org.springframework.web.context.request.RequestContextHolder;\r\nimport org.springframework.web.context.request.ServletRequestAttributes;\r\n\r\nimport java.io.*;\r\nimport java.net.HttpURLConnection;\r\nimport java.net.URL;\r\nimport java.net.URLEncoder;\r\nimport java.nio.charset.Charset;\r\nimport java.nio.charset.StandardCharsets;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.HashMap;\r\nimport java.util.Locale;\r\nimport java.util.Map;\r\n\r\n@Slf4j\r\npublic class HttpUtil {\r\n\r\n    protected static final int DEFAULT_STATUS_ERROR_CODE = 100001;//榛樿http寮傚父鐘舵�佺爜\r\n\r\n    protected static final String CONTENT_TYPE = \"Content-Type\";\r\n\r\n    protected static final String APPLICATION_JSON = \"application/json\";\r\n    protected static final String APPLICATION_JSON_UTF8 = \"application/json; charset=utf-8\";\r\n\r\n    protected static final String TEXT_XML = \"text/xml\";\r\n    protected static final String TEXT_XML_UTF8 = \"text/xml; charset=utf-8\";\r\n\r\n    protected static final int OK = 200;\r\n\r\n\r\n    /**\r\n     * 绌虹殑鎶ユ枃澶碶r\n     */\r\n    protected static final Map<String, String> EMPTY_HEADERS = new HashMap<String, String>(0);\r\n    /**\r\n     * 缂栫爜閿欒\r\n     */\r\n    protected static final int ENCODING_ERROR_CODE = 999997;\r\n    /**\r\n     * HTTP 閿欒: 姝婚攣銆佹枃浠惰繃澶х瓑鏂囦欢\r\n     */\r\n    protected static final int HTTP_ERROR_CODE = 999996;\r\n    /**\r\n     * IO 閿欒\r\n     */\r\n    protected static final int IO_ERROR_CODE = 999995;\r\n    /**\r\n     * 鍝嶅簲涓簄ull\r\n     */\r\n    protected static final int RESPONSE_NULL_ERROR_CODE = 999994;\r\n\r\n    protected static final String USER_IP_KEY = \"x-remoteip\";\r\n\r\n    protected static final String TEXT_NORMAL = \"application/x-www-form-urlencoded; charset=utf-8\";\r\n    protected static final HttpClient httpClient = getHttpClient();\r\n\r\n    private static final SimpleDateFormat formatHttpData = new SimpleDateFormat(\"EEE, dd MMM yyyy HH:mm:ss 'GMT'\", Locale.US);\r\n\r\n\r\n    private static HttpClient getHttpClient() {\r\n        // 姝ゅ杩愮敤杩炴帴姹犳妧鏈�俓r\n        MultiThreadedHttpConnectionManager manager = new MultiThreadedHttpConnectionManager();\r\n\r\n        // 璁惧畾鍙傛暟锛氫笌姣忎釜涓绘満鐨勬渶澶ц繛鎺ユ暟\r\n        manager.getParams().setDefaultMaxConnectionsPerHost(100);\r\n        // 璁惧畾鍙傛暟锛氬鎴风鐨勬�昏繛鎺ユ暟\r\n        manager.getParams().setMaxTotalConnections(400);\r\n        // 璁剧疆杩炴帴瓒呮椂鏃堕棿,鍗曚綅锛氭绉抃r\n        manager.getParams().setConnectionTimeout(30000);\r\n        // 璁剧疆璇锋眰璇诲彇瓒呮椂鏃堕棿锛屽崟浣嶏細姣\r\n        manager.getParams().setSoTimeout(30000);\r\n        // 璁剧疆浠庤繛鎺ユ睜涓幏鍙栭摼鎺ユ椂闂达紝 鍗曚綅锛氭绉抃r\n        manager.getParams().setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 8000);\r\n        // 浣跨敤杩炴帴姹犳妧鏈垱寤篐ttpClient瀵硅薄\r\n        HttpClient httpClient = new HttpClient(manager);\r\n\r\n        return httpClient;\r\n    }\r\n\r\n    public static String postJsonRequest(String url, String request) throws HttpRequestException {\r\n        Assert.hasLength(url, \"璇锋眰url涓嶈兘涓虹┖瀛楃涓层�俓");\r\n        EntityEnclosingMethod httpMethod = new PostMethod(url);\r\n\r\n        httpMethod.addRequestHeader(\"Content-Type\", \"application/json; charset=UTF-8\");\r\n        setHeaderRequestId(httpMethod);\r\n        try {\r\n            RequestEntity entity = new StringRequestEntity(request, \"application/json\", \"utf-8\");\r\n            httpMethod.setRequestEntity(entity);\r\n\r\n            int resultCode = httpClient.executeMethod(httpMethod);\r\n            InputStream inputStream = httpMethod.getResponseBodyAsStream();\r\n            if (inputStream == null) {\r\n                throw new HttpRequestException(RESPONSE_NULL_ERROR_CODE, \"鍝嶅簲涓簄ull\");\r\n            }\r\n            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));\r\n            StringBuffer stringBuffer = new StringBuffer();\r\n            String str = \"\";\r\n            while ((str = reader.readLine()) != null) {\r\n                stringBuffer.append(str);\r\n            }\r\n            reader.close();\r\n            String respJson = stringBuffer.toString();\r\n            // String respJson = httpMethod.getResponseBodyAsString();\r\n            if (resultCode == OK) {\r\n                return respJson;\r\n            } else {\r\n                throw new HttpRequestException(resultCode, respJson);\r\n            }\r\n        } catch (UnsupportedEncodingException e) {\r\n            throw new HttpRequestException(ENCODING_ERROR_CODE, e);\r\n        } catch (HttpException e) {\r\n            throw new HttpRequestException(HTTP_ERROR_CODE, e);\r\n        } catch (IOException e) {\r\n            throw new HttpRequestException(IO_ERROR_CODE, e);\r\n        } finally {\r\n            if (httpMethod != null) {\r\n                httpMethod.releaseConnection();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * json鐨刾ost璇锋眰\r\n     *\r\n     * @param url           璇锋眰url\r\n     * @param reqEntity     璇锋眰澶翠笌璇锋眰浣撶殑灏佽\r\n     * @param respBodyClass 鍝嶅簲浣撶被鍨媆r\n     * @return 杩斿洖鐨勫搷搴旂粨鏋淺r\n     */\r\n    @SuppressWarnings(\"unchecked\")\r\n    public static <RESPBODY> HttpEntity<RESPBODY> postJsonRequestV2(String url, HttpEntity<?> reqEntity, Class<RESPBODY> respBodyClass) {\r\n        Assert.hasLength(url, \"璇锋眰url涓嶈兘涓虹┖瀛楃涓层�俓");\r\n        Assert.notNull(reqEntity, \"璇锋眰request涓嶈兘涓簄ull銆俓");\r\n        Assert.notNull(reqEntity.getBody(), \"Post璇锋眰body涓嶈兘涓簄ull銆俓");\r\n\r\n        EntityEnclosingMethod httpMethod = new PostMethod(url);\r\n        //璁剧疆header淇℃伅\r\n        Map<String, String> headers = reqEntity.getHeaders();\r\n        //鑻ヤ紶鍏ユ姤鏂囧ご锛屽垯璁剧疆鍊糪r\n        if (headers != HttpEntity.EMPTY_HEADERS) {\r\n            setReqHeaders(headers, httpMethod);\r\n        }\r\n\r\n        //璁剧疆body淇℃伅\r\n        String reqJson = JSON.toJSONString(reqEntity.getBody());\r\n\r\n        String charset = com.google.common.base.Charsets.UTF_8.name();\r\n        // 鍙戦�佸惈xml娑堟伅浣撶殑瀵硅薄\r\n        try {\r\n            RequestEntity entity = new StringRequestEntity(reqJson, APPLICATION_JSON, charset);\r\n            httpMethod.setRequestEntity(entity);\r\n\r\n            // 鎵ц璇锋眰骞舵帴鏀跺搷搴旂爜\r\n            int resultCode = httpClient.executeMethod(httpMethod);\r\n            InputStream inputStream = httpMethod.getResponseBodyAsStream();\r\n            if (inputStream == null) {\r\n                throw new HttpRequestException(RESPONSE_NULL_ERROR_CODE, \"鍝嶅簲涓簄ull\");\r\n            }\r\n            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName(\"GB2312\")));\r\n            StringBuffer stringBuffer = new StringBuffer();\r\n            String str = \"\";\r\n            while ((str = reader.readLine()) != null) {\r\n                stringBuffer.append(str);\r\n            }\r\n            reader.close();\r\n            String respStr = stringBuffer.toString();\r\n            //String respStr = httpMethod.getResponseBodyAsString();\r\n            if (resultCode == OK) {\r\n                //鍝嶅簲澶碶r\n                Map<String, String> respHeaders = getRespHeaders(httpMethod);\r\n                //鍝嶅簲浣揬r\n                HttpEntity<RESPBODY> rep = null;\r\n                if (isNullOrEmpty(respStr) || null == respBodyClass) {\r\n                    rep = new HttpEntity<RESPBODY>(respHeaders, null);\r\n                    // 鏃犲搷搴擻r\n                } else {\r\n                    if (respBodyClass != String.class) {\r\n                        RESPBODY respBody = JSON.parseObject(respStr, respBodyClass);\r\n                        rep = new HttpEntity<RESPBODY>(respHeaders, respBody);\r\n                    } else {\r\n                        rep = new HttpEntity<RESPBODY>(respHeaders, (RESPBODY) new String(respStr.getBytes(\"ISO8859-1\"), StandardCharsets.UTF_8));\r\n                    }\r\n                }\r\n                return rep;\r\n            } else if (resultCode == DEFAULT_STATUS_ERROR_CODE) {\r\n                JSONObject model = JSON.parseObject(respStr);\r\n                throw new HttpRequestException(model.getIntValue(\"code\"), model.getString(\"msg\"));\r\n            } else {\r\n                throw new HttpRequestException(resultCode, respStr);\r\n            }\r\n        } catch (UnsupportedEncodingException e) {\r\n            throw new HttpRequestException(ENCODING_ERROR_CODE, e);\r\n        } catch (HttpException e) {\r\n            throw new HttpRequestException(HTTP_ERROR_CODE, e);\r\n        } catch (IOException e) {\r\n            throw new HttpRequestException(IO_ERROR_CODE, e);\r\n        } finally {\r\n            if (httpMethod != null) {\r\n                httpMethod.releaseConnection();\r\n            }\r\n        }\r\n    }\r\n\r\n    public static <RESPBODY extends JsonResponseBody> HttpEntity<RESPBODY> postJsonRequest(String url, HttpEntity<? extends JsonRequestBody> reqEntity, Class<RESPBODY> respBodyClass) {\r\n        Assert.hasLength(url, \"璇锋眰url涓嶈兘涓虹┖瀛楃涓层�俓");\r\n        Assert.notNull(reqEntity, \"璇锋眰request涓嶈兘涓簄ull銆俓");\r\n        Assert.notNull(reqEntity.getBody(), \"Post璇锋眰body涓嶈兘涓簄ull銆俓");\r\n\r\n        EntityEnclosingMethod httpMethod = new PostMethod(url);\r\n        //璁剧疆header淇℃伅\r\n        Map<String, String> headers = reqEntity.getHeaders();\r\n        //鑻ヤ紶鍏ユ姤鏂囧ご锛屽垯璁剧疆鍊糪r\n        if (headers != HttpEntity.EMPTY_HEADERS) {\r\n            setReqHeaders(headers, httpMethod);\r\n        }\r\n\r\n        //璁剧疆body淇℃伅\r\n        String reqJson = JSON.toJSONString(reqEntity.getBody());\r\n\r\n        String charset = Charsets.UTF_8.name();\r\n        // 鍙戦�佸惈xml娑堟伅浣撶殑瀵硅薄\r\n        try {\r\n            RequestEntity entity = new StringRequestEntity(reqJson, APPLICATION_JSON, charset);\r\n            httpMethod.setRequestEntity(entity);\r\n\r\n            // 鎵ц璇锋眰骞舵帴鏀跺搷搴旂爜\r\n            int resultCode = httpClient.executeMethod(httpMethod);\r\n            InputStream inputStream = httpMethod.getResponseBodyAsStream();\r\n            if (inputStream == null) {\r\n                throw new HttpRequestException(RESPONSE_NULL_ERROR_CODE, \"鍝嶅簲涓簄ull\");\r\n            }\r\n            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));\r\n            StringBuffer stringBuffer = new StringBuffer();\r\n            String str = \"\";\r\n            while ((str = reader.readLine()) != null) {\r\n                stringBuffer.append(str);\r\n            }\r\n            reader.close();\r\n            String respStr = stringBuffer.toString();\r\n            if (resultCode == OK) {\r\n                //鍝嶅簲澶碶r\n                Map<String, String> respHeaders = getRespHeaders(httpMethod);\r\n                //鍝嶅簲浣揬r\n                HttpEntity<RESPBODY> rep = null;\r\n                if (isNullOrEmpty(respStr) || null == respBodyClass) {\r\n                    rep = new HttpEntity<RESPBODY>(respHeaders, null);\r\n                    ;// 鏃犲搷搴擻r\n                } else {\r\n                    RESPBODY respBody = JSON.parseObject(respStr, respBodyClass);\r\n                    rep = new HttpEntity<RESPBODY>(respHeaders, respBody);\r\n                }\r\n                return rep;\r\n            } else if (resultCode == DEFAULT_STATUS_ERROR_CODE) {\r\n                JSONObject model = JSON.parseObject(respStr);\r\n                throw new HttpRequestException(model.getIntValue(\"code\"), model.getString(\"msg\"));\r\n            } else {\r\n                throw new HttpRequestException(resultCode, respStr);\r\n            }\r\n        } catch (UnsupportedEncodingException e) {\r\n            throw new HttpRequestException(ENCODING_ERROR_CODE, e);\r\n        } catch (HttpException e) {\r\n            throw new HttpRequestException(HTTP_ERROR_CODE, e);\r\n        } catch (IOException e) {\r\n            throw new HttpRequestException(IO_ERROR_CODE, e);\r\n        } finally {\r\n            if (httpMethod != null) {\r\n                httpMethod.releaseConnection();\r\n            }\r\n        }\r\n    }\r\n\r\n    public static String postFormRequest(String baseUrl, Map<String, String> params, Map<String, String> headers, String body) {\r\n        HttpURLConnection connection = null;\r\n        BufferedReader reader = null;\r\n\r\n        try {\r\n            // 鏋勫缓瀹屾暣鐨刄RL锛堝寘鍚煡璇㈠弬鏁帮級\r\n            String fullUrl = buildUrlWithParams(baseUrl, params);\r\n            URL requestUrl = new URL(fullUrl);\r\n            connection = (HttpURLConnection) requestUrl.openConnection();\r\n\r\n            // 璁剧疆璇锋眰鏂规硶\r\n            connection.setRequestMethod(\"POST\");\r\n            connection.setDoOutput(true);\r\n            connection.setDoInput(true);\r\n            connection.setUseCaches(false);\r\n\r\n            // 璁剧疆璇锋眰澶碶r\n            if (headers != null) {\r\n                for (Map.Entry<String, String> entry : headers.entrySet()) {\r\n                    connection.setRequestProperty(entry.getKey(), entry.getValue());\r\n                }\r\n            }\r\n\r\n            // 璁剧疆榛樿鐨凜ontent-Type\r\n            if (!connection.getRequestProperties().containsKey(\"Content-Type\")) {\r\n                connection.setRequestProperty(\"Content-Type\", \"application/json; charset=UTF-8\");\r\n            }\r\n\r\n            // 濡傛灉鏈夎姹備綋锛屽啓鍏ユ暟鎹甛r\n            if (body != null && !body.isEmpty()) {\r\n                try (OutputStream os = connection.getOutputStream()) {\r\n                    byte[] input = body.getBytes(StandardCharsets.UTF_8);\r\n                    os.write(input, 0, input.length);\r\n                }\r\n            }\r\n\r\n            // 鑾峰彇鍝嶅簲鐮乗r\n            int responseCode = connection.getResponseCode();\r\n\r\n            // 璇诲彇鍝嶅簲\r\n            StringBuilder response = new StringBuilder();\r\n            if (responseCode == HttpURLConnection.HTTP_OK) {\r\n                reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));\r\n            } else {\r\n                reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()));\r\n            }\r\n\r\n            String line;\r\n            while ((line = reader.readLine()) != null) {\r\n                response.append(line);\r\n            }\r\n\r\n            return response.toString();\r\n\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(\"POST璇锋眰澶辫触: \" + e.getMessage(), e);\r\n        } finally {\r\n            // 鍏抽棴杩炴帴\r\n            if (reader != null) {\r\n                try {\r\n                    reader.close();\r\n                } catch (Exception e) { /* ignore */ }\r\n            }\r\n            if (connection != null) {\r\n                connection.disconnect();\r\n            }\r\n        }\r\n    }\r\n\r\n    private static String buildUrlWithParams(String baseUrl, Map<String, String> params) {\r\n        if (params == null || params.isEmpty()) {\r\n            return baseUrl;\r\n        }\r\n\r\n        StringBuilder urlBuilder = new StringBuilder(baseUrl);\r\n        boolean firstParam = true;\r\n\r\n        for (Map.Entry<String, String> entry : params.entrySet()) {\r\n            if (firstParam) {\r\n                urlBuilder.append(\"?\");\r\n                firstParam = false;\r\n            } else {\r\n                urlBuilder.append(\"&\");\r\n            }\r\n\r\n            try {\r\n                urlBuilder.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8.toString())).append(\"=\").append(URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8.toString()));\r\n            } catch (UnsupportedEncodingException e) {\r\n                e.printStackTrace();\r\n            }\r\n        }\r\n\r\n        return urlBuilder.toString();\r\n    }\r\n//    public static String postFormRequest(String url, Map<String, String> params,Map<String, String> headers) throws HttpRequestException {\r\n//        Assert.hasLength(url, \"璇锋眰url涓嶈兘涓虹┖瀛楃涓层�俓");\r\n//        Assert.notNull(params, \"璇锋眰params涓嶈兘涓虹┖銆俓");\r\n//\r\n//        PostMethod httpMethod = new PostMethod(url);\r\n//\r\n//        httpMethod.addRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\r\n//\r\n//        if(!ObjectUtils.isEmpty(headers)) {\r\n//            httpMethod.addRequestHeader(headers.get(), \"application/json\");\r\n//        }\r\n//\r\n//        try {\r\n//            // 鍙戦�佽姹傚弬鏁癨r\n//            StringBuilder param = new StringBuilder();\r\n//            for (Map.Entry<String, String> entry : params.entrySet()) {\r\n//                if (param.length() > 0) {\r\n//                    param.append(\"&\");\r\n//                }\r\n//                param.append(entry.getKey());\r\n//                param.append(\"=\");\r\n//                param.append(entry.getValue());\r\n//            }\r\n//\r\n//            RequestEntity entity = new StringRequestEntity(param.toString(), \"application/json\", \"utf-8\");\r\n//            httpMethod.setRequestEntity(entity);\r\n//            // 鎵ц璇锋眰骞舵帴鏀跺搷搴旂爜\r\n//            int resultCode = httpClient.executeMethod(httpMethod);\r\n//\r\n//            String respJson = httpMethod.getResponseBodyAsString();\r\n//            if (resultCode == OK) {\r\n//                return respJson;\r\n//            } else {\r\n//                throw new HttpRequestException(resultCode, respJson);\r\n//            }\r\n//        } catch (UnsupportedEncodingException e) {\r\n//            throw new HttpRequestException(ENCODING_ERROR_CODE, e);\r\n//        } catch (HttpException e) {\r\n//            throw new HttpRequestException(HTTP_ERROR_CODE, e);\r\n//        } catch (IOException e) {\r\n//            throw new HttpRequestException(IO_ERROR_CODE, e);\r\n//        } finally {\r\n//            if (httpMethod != null) {\r\n//                httpMethod.releaseConnection();\r\n//            }\r\n//        }\r\n//    }\r\n\r\n\r\n    private static Map<String, String> getRespHeaders(HttpMethodBase httpMethod) {\r\n        //寰楀埌鍝嶅簲澶碶r\n        Header[] respHeaders = httpMethod.getResponseHeaders();\r\n        Map<String, String> headers = new HashMap<String, String>(respHeaders.length);\r\n        for (Header header : respHeaders)\r\n            headers.put(header.getName(), header.getValue());\r\n        return headers;\r\n    }\r\n\r\n    protected static void setReqHeaders(Map<String, String> headers, HttpMethodBase httpMethod) {\r\n        //璁剧疆璇锋眰澶碶r\n        for (Map.Entry<String, String> header : headers.entrySet()) {\r\n            httpMethod.addRequestHeader(header.getKey(), header.getValue());\r\n        }\r\n    }\r\n\r\n    protected static void setHeaderRequestId(HttpMethodBase httpMethod) {\r\n        //璁剧疆璇锋眰澶碶r\n        ServletRequestAttributes req = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();\r\n        if (null != req) {\r\n            String requestId = req.getRequest().getHeader(\"x-request-id\");\r\n            if (StringUtil.isNotEmpty(requestId)) {\r\n                httpMethod.addRequestHeader(\"x-request-id\", requestId);\r\n                log.info(\"header涓瓁-request-id鍊间负:{}\", requestId);\r\n            }\r\n        }\r\n    }\r\n\r\n    private static boolean isNullOrEmpty(String obj) {\r\n        if (obj == null || obj.isEmpty()) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpUtil.java
---- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpUtil.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpUtil.java	(date 1758792258505)
-@@ -106,11 +106,23 @@
-             httpMethod.setRequestEntity(entity);
- 
-             int resultCode = httpClient.executeMethod(httpMethod);
-+            // 鑾峰彇鍝嶅簲澶寸殑瀛楃缂栫爜
-+            String contentType = httpMethod.getResponseHeader("Content-Type") == null ?
-+                    null : httpMethod.getResponseHeader("Content-Type").getValue();
-+            String charset = "UTF-8"; // 榛樿浣跨敤UTF-8
-+
-+            if (contentType != null && contentType.contains("charset=")) {
-+                String[] parts = contentType.split("charset=");
-+                if (parts.length > 1) {
-+                    charset = parts[1].split(";")[0].trim();
-+                }
-+            }
-+
-             InputStream inputStream = httpMethod.getResponseBodyAsStream();
-             if (inputStream == null) {
-                 throw new HttpRequestException(RESPONSE_NULL_ERROR_CODE, "鍝嶅簲涓簄ull");
-             }
--            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
-+            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,charset));
-             StringBuffer stringBuffer = new StringBuffer();
-             String str = "";
-             while ((str = reader.readLine()) != null) {
-Index: smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.entity.SysUserDept;\r\nimport com.ruoyi.common.core.domain.entity.SysUserRole;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.*;\r\nimport com.smartor.service.IHNGatherPatArchiveService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.time.ZoneId;\r\nimport java.util.*;\r\n\r\n/**\r\n * 鎮h�呮。妗圫ervice涓氬姟灞傚鐞哱r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\n@Slf4j\r\n@Service\r\npublic class HNGatherPatArchiveServiceImpl implements IHNGatherPatArchiveService {\r\n    @Autowired\r\n    private HNGatherPatArchiveMapper hnGatherPatArchiveMapper;\r\n\r\n    @Autowired\r\n    private SysUser2Mapper sysUser2Mapper;\r\n\r\n    @Autowired\r\n    private SysUserRole2Mapper sysUserRoleMapper;\r\n\r\n    @Autowired\r\n    private SysDept2Mapper sysDept2Mapper;\r\n\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    @Autowired\r\n    private Icd10Mapper icd10Mapper;\r\n\r\n    @Autowired\r\n    private PatMedOuthospMapper patMedOuthospMapper;\r\n\r\n    @Autowired\r\n    private PatMedInhospMapper patMedInhospMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n\r\n    @Autowired\r\n    private ThreadPoolTaskExecutor taskExecutor;\r\n\r\n    @Autowired\r\n    private ShardingMapper shardingMapper;\r\n\r\n    private static final long SHARDING_THRESHOLD = 5_000_000L;\r\n    private static final String PAT_ARCHIVE_TABLE = \"pat_archive\";\r\n    private static final String PAT_MED_INHOSP_TABLE = \"pat_med_inhosp\";\r\n\r\n\r\n    @Override\r\n    public List<PatArchive> selectPatArchiveList(PatArchive patArchive) {\r\n        return hnGatherPatArchiveMapper.selectPatArchiveList(patArchive);\r\n    }\r\n\r\n//    @Override\r\n//    public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp) {\r\n//        // 寮傛鎵ц鏁翠釜鏁版嵁鍚屾浠诲姟\r\n//        taskExecutor.execute(() -> {\r\n//            log.info(\"寮�濮嬫墽琛屾暟鎹悓姝ヤ换鍔�...\");\r\n//            syncPatArchivesInOrder(); // 鍏堝悓姝ユ偅鑰匼r\n//            syncPatMedInhosp();       // 鍐嶅悓姝ュ嚭鍏ラ櫌\r\n//            log.info(\"鏁版嵁鍚屾浠诲姟鎻愪氦瀹屾瘯銆俓");\r\n//        });\r\n//        return 0; // 杩斿洖0琛ㄧず浠诲姟宸叉彁浜ゅ埌鍚庡彴鎵ц\r\n//    }\r\n\r\n\r\n    @Override\r\n    public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp) {\r\n        List<PatMedInhosp> patMedInhospList = hnGatherPatArchiveMapper.selectPatMedInhospList(patMedInhosp);\r\n        for (PatMedInhosp pm : patMedInhospList) {\r\n            PatArchive patArchive = new PatArchive();\r\n            patArchive.setPatientno(pm.getPatno());\r\n            List<PatArchive> patArchives = hnGatherPatArchiveMapper.selectPatArchiveList(patArchive);\r\n            if (CollectionUtils.isEmpty(patArchives)) {\r\n                //绌轰簡鐩存帴涓㈡帀\r\n                continue;\r\n            }\r\n            PatArchive pa = new PatArchive();\r\n            pa.setPatientno(patArchives.get(0).getPatientno());\r\n            List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa);\r\n            if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                pm.setPatid(patArchives1.get(0).getId());\r\n            } else {\r\n                patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n                pm.setPatid(patArchives.get(0).getId());\r\n            }\r\n            if (!Objects.isNull(patMedInhosp.getStartInHospTime()) && !Objects.isNull(patMedInhosp.getEndInHospTime())) {\r\n                //鍏ラ櫌\r\n                pm.setInhospstate(\"0\");\r\n                pm.setCreateTime(new Date());\r\n                patMedInhospMapper.insertPatMedInhosp(pm);\r\n            } else if (!Objects.isNull(patMedInhosp.getStartOutHospTime()) && !Objects.isNull(patMedInhosp.getEndOutHospTime())) {\r\n                //鍑洪櫌\r\n                pm.setInhospstate(\"1\");\r\n                pm.setUpdateTime(new Date());\r\n                PatMedInhosp pmi = new PatMedInhosp();\r\n                pmi.setSerialnum(pm.getSerialnum());\r\n                List<PatMedInhosp> patMedInhospList1 = patMedInhospMapper.selectPatMedInhospList(pmi);\r\n                if (CollectionUtils.isEmpty(patMedInhospList1)) {\r\n                    pm.setCreateTime(new Date());\r\n                    patMedInhospMapper.insertPatMedInhosp(pm);\r\n                } else {\r\n                    pm.setInhospid(patMedInhospList1.get(0).getInhospid());\r\n                    patMedInhospMapper.updatePatMedInhosp(pm);\r\n                }\r\n\r\n            }\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    @Override\r\n    public Boolean hnDataGather(HnDataGatherVO hnDataGatherVO) {\r\n\r\n        LocalDate startDate = hnDataGatherVO.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();\r\n        LocalDate endDate = hnDataGatherVO.getEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();\r\n\r\n        Integer po = null;\r\n        // 寰幆澶勭悊姣忎竴澶‐r\n        for (LocalDate currentDate = startDate; !currentDate.isAfter(endDate); currentDate = currentDate.plusDays(1)) {\r\n            PatMedInhosp dailyCondition = new PatMedInhosp();\r\n            //澶勭悊鍏ラ櫌\r\n            LocalDateTime dayStart = currentDate.atStartOfDay();\r\n            LocalDateTime dayEnd = currentDate.atTime(23, 59, 59);\r\n            dailyCondition.setStartInHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            dailyCondition.setEndInHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n            selectPatMedInhospList(dailyCondition);\r\n\r\n            //澶勭悊鍑洪櫌\r\n            dailyCondition.setStartInHospTime(null);\r\n            dailyCondition.setEndInHospTime(null);\r\n            dailyCondition.setStartOutHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            dailyCondition.setEndOutHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n            selectPatMedInhospList(dailyCondition);\r\n\r\n            //澶勭悊闂ㄨ瘖\r\n            PatMedOuthosp patMedOuthosp = new PatMedOuthosp();\r\n            patMedOuthosp.setBeginTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            patMedOuthosp.setEndTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n           selectPatMedOuthospList(patMedOuthosp);\r\n        }\r\n        return true;\r\n    }\r\n\r\n\r\n    @Override\r\n    public Integer selectPatMedOuthospList(PatMedOuthosp patMedOuthosp) {\r\n        List<PatMedOuthosp> patMedOuthosps = hnGatherPatArchiveMapper.selectPatMedOuthospList(patMedOuthosp);\r\n        log.info(\"selectPatMedOuthospList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", patMedOuthosps.size());\r\n        Integer i = null;\r\n        for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) {\r\n            //鑾峰彇鎮h�呭熀鏈俊鎭痋r\n            PatArchive patArchive = new PatArchive();\r\n            patArchive.setPatientno(patMedOuthosp1.getPatno());\r\n            List<PatArchive> patArchives = hnGatherPatArchiveMapper.selectPatArchiveList(patArchive);\r\n\r\n            //鏍规嵁patno鍒ゆ柇鏈湴鎮h�呭熀鏈俊鎭槸鍚﹀瓨鍦╘r\n            PatArchive pa = new PatArchive();\r\n            pa.setPatientno(patMedOuthosp1.getPatno());\r\n            List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa);\r\n            if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                patMedOuthosp1.setPatid(patArchives1.get(0).getId());\r\n            } else {\r\n                if (CollectionUtils.isEmpty(patArchives)) {\r\n                    continue;\r\n                }\r\n                patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n                patMedOuthosp1.setPatid(patArchives.get(0).getId());\r\n            }\r\n            i = patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp1);\r\n        }\r\n\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectIcd10List(Icd10 icd10) {\r\n        List<Icd10> icd10s = hnGatherPatArchiveMapper.selectIcd10List(icd10);\r\n        log.info(\"selectIcd10List鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", icd10s.size());\r\n        int i = icd10Mapper.batchIcd10(icd10s);\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectUserList(SysUser sysUser) {\r\n        List<SysUser> sysUserList = hnGatherPatArchiveMapper.selectUserList(sysUser);\r\n        log.info(\"sysUserList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", sysUserList.size());\r\n        int i = sysUser2Mapper.batchUser(sysUserList);\r\n        for (SysUser sysUser1 : sysUserList) {\r\n            log.info(\"sysUser1鐨処D涓猴細{}\", sysUser1.getUserId());\r\n            log.info(\"sysUser1鐨凥ISUSERID涓猴細{}\", sysUser1.getHisUserId());\r\n            //鏂板鐢ㄦ埛涓庤鑹瞈r\n            SysUserRole yhyjsxx = hnGatherPatArchiveMapper.yhyjsxx(sysUser1);\r\n            if (yhyjsxx == null) continue;\r\n            yhyjsxx.setUserId(sysUser1.getUserId());\r\n            List<SysUserRole> userRoleList = new ArrayList<>();\r\n            userRoleList.add(yhyjsxx);\r\n            sysUserRoleMapper.batchUserRole(userRoleList);\r\n\r\n            //鏂板鐢ㄦ埛涓庨儴闂╘r\n            if (StringUtils.isEmpty(sysUser1.getHisUserId())) continue;\r\n            SysUserDept sysUserDept = hnGatherPatArchiveMapper.yhyksxx(sysUser1);\r\n            if (Objects.isNull(sysUserDept) || sysUserDept.getDeptId() == null) continue;\r\n            SysDept dept = new SysDept();\r\n            dept.setHisDeptId(sysUserDept.getDeptId().toString());\r\n            List<SysDept> sysDepts = sysDept2Mapper.selectDeptList(dept);\r\n            if (CollectionUtils.isNotEmpty(sysDepts)) {\r\n                sysUserDept.setDeptId(sysDepts.get(0).getDeptId());\r\n                sysUserDept.setDeptCode(sysDepts.get(0).getDeptCode());\r\n            }\r\n            sysUserDept.setUserId(sysUser1.getUserId());\r\n            sysUserDeptMapper.insertSysUserDept(sysUserDept);\r\n\r\n        }\r\n\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectDeptList(SysDept dept) {\r\n        List<SysDept> sysDepts = hnGatherPatArchiveMapper.selectDeptList(dept);\r\n        log.info(\"selectDeptList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", sysDepts.size());\r\n        int i = sysDept2Mapper.batchDept(sysDepts);\r\n        return i;\r\n    }\r\n\r\n\r\n    /**\r\n     * 妫�鏌ュ苟鎵ц鍒嗚〃鐨勬牳蹇冩柟娉昞r\n     *\r\n     * @param tableName 瑕佹鏌ョ殑琛ㄥ悕\r\n     */\r\n    private synchronized void checkAndShard(String tableName) {\r\n        long currentCount = shardingMapper.getTableCount(tableName);\r\n\r\n        if (currentCount >= SHARDING_THRESHOLD) {\r\n            log.warn(\"琛� '{}' 宸茶揪鍒板垎琛ㄩ槇鍊� {}锛屽噯澶囨墽琛屽垎琛ㄦ搷浣�...\", tableName, SHARDING_THRESHOLD);\r\n\r\n            String newTableName = tableName + \"_\" + java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern(\"yyyy_MM\"));\r\n            Long maxId = shardingMapper.getMaxId(tableName);\r\n            if (maxId == null) maxId = 0L;\r\n\r\n            shardingMapper.renameTable(tableName, newTableName);\r\n            log.info(\"宸插皢琛� '{}' 閲嶅懡鍚嶄负 '{}'\", tableName, newTableName);\r\n\r\n            shardingMapper.createLikeTable(tableName, newTableName);\r\n            log.info(\"宸插垱寤烘柊琛� '{}'\", tableName);\r\n\r\n            shardingMapper.setAutoIncrement(tableName, maxId + 1);\r\n            log.info(\"宸茶缃柊琛� '{}' 鐨勮嚜澧濱D璧峰鍊间负 {}\", tableName, maxId + 1);\r\n\r\n            log.info(\"琛� '{}' 鐨勫垎琛ㄦ搷浣滃畬鎴愶紒\", tableName);\r\n        }\r\n    }\r\n}\r\n\r\n\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java	(date 1758682819477)
-@@ -157,7 +157,7 @@
-             PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
-             patMedOuthosp.setBeginTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));
-             patMedOuthosp.setEndTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));
--           selectPatMedOuthospList(patMedOuthosp);
-+            selectPatMedOuthospList(patMedOuthosp);
-         }
-         return true;
-     }
-@@ -204,6 +204,9 @@
-     @Override
-     public Integer selectUserList(SysUser sysUser) {
-         List<SysUser> sysUserList = hnGatherPatArchiveMapper.selectUserList(sysUser);
-+        if (CollectionUtils.isEmpty(sysUserList)) return null;
-+
-+
-         log.info("sysUserList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}", sysUserList.size());
-         int i = sysUser2Mapper.batchUser(sysUserList);
-         for (SysUser sysUser1 : sysUserList) {
-@@ -240,7 +243,8 @@
-     public Integer selectDeptList(SysDept dept) {
-         List<SysDept> sysDepts = hnGatherPatArchiveMapper.selectDeptList(dept);
-         log.info("selectDeptList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}", sysDepts.size());
--        int i = sysDept2Mapper.batchDept(sysDepts);
-+        int i = 0;
-+        if (CollectionUtils.isNotEmpty(sysDepts)) i = sysDept2Mapper.batchDept(sysDepts);
-         return i;
-     }
- 
-Index: smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 鎮h�呬綇闄㈣褰曞璞� pat_med_inhosp\r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\n@ApiModel(value = \"PatMedInhosp\", description = \"鎮h�呬綇闄㈣褰曞璞")\r\n@Data\r\npublic class PatMedInhospVO extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 鑷ID\r\n     */\r\n    @ApiModelProperty(value = \"鑷ID\")\r\n    private Long inhospid;\r\n\r\n    /**\r\n     * 鑷ID\r\n     */\r\n    @ApiModelProperty(value = \"鑷ID\")\r\n    private String inhospno;\r\n\r\n    /**\r\n     * 鎶ゅ+ID\r\n     */\r\n    @ApiModelProperty(value = \"鎶ゅ+ID\")\r\n    private String nurseId;\r\n    /**\r\n     * 鎶ゅ+ID\r\n     */\r\n    @ApiModelProperty(value = \"鎿嶄綔浜篒D\")\r\n    private String operatorId;\r\n\r\n    @ApiModelProperty(value = \"鎿嶄綔浜篭")\r\n    private String operator;\r\n\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 鎶ゅ+濮撳悕\r\n     */\r\n    @ApiModelProperty(value = \"鎶ゅ+濮撳悕\")\r\n    private String nurseName;\r\n\r\n    /**\r\n     * 娴佹按鍙穃r\n     */\r\n    @ApiModelProperty(value = \"娴佹按鍙穃")\r\n    private String serialnum;\r\n\r\n    /**\r\n     * 鍖婚櫌鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖婚櫌鍚嶇О\")\r\n    @Excel(name = \" 鍖婚櫌鍚嶇О \")\r\n    private String hospitalname;\r\n\r\n    /**\r\n     * 鍖婚櫌缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍖婚櫌缂栧彿\")\r\n    private String hospitalcode;\r\n\r\n    /**\r\n     * 闄㈠尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"闄㈠尯缂栧彿\")\r\n    private String hospitaldistrictcode;\r\n\r\n    /**\r\n     * 闄㈠尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"闄㈠尯鍚嶇О\")\r\n    @Excel(name = \" 闄㈠尯鍚嶇О \")\r\n    private String hospitaldistrictname;\r\n\r\n    /**\r\n     * 鍏ラ櫌璇婃柇ICD鍊糪r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌璇婃柇ICD鍊糪")\r\n    private String icd10code;\r\n\r\n    /**\r\n     * 鍏ラ櫌璇婃柇鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌璇婃柇鍚嶇О\")\r\n    private String diagname;\r\n\r\n    /**\r\n     * 鍏ラ櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鍏ラ櫌鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date starttime;\r\n\r\n    /**\r\n     * 鍑洪櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鍑洪櫌鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date endtime;\r\n\r\n    /**\r\n     * 鍏ラ櫌绉戝浠g爜\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌绉戝浠g爜\")\r\n    private String deptcode;\r\n\r\n    /**\r\n     * 鍏ラ櫌绉戝鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌绉戝鍚嶇О\")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 鎴块棿鍙穃r\n     */\r\n    @ApiModelProperty(value = \"鎴块棿鍙穃")\r\n    private String roomno;\r\n\r\n    /**\r\n     * 搴婁綅鍙穃r\n     */\r\n    @ApiModelProperty(value = \"搴婁綅鍙穃")\r\n    @Excel(name = \" 搴婁綅鍙� \")\r\n    private String bedNo;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 妗fID\r\n     */\r\n    @ApiModelProperty(value = \"妗fID\")\r\n    private Long patid;\r\n\r\n    /**\r\n     * 鍑洪櫌璇婃柇\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌璇婃柇\")\r\n    @Excel(name = \" 鍑洪櫌璇婃柇 \")\r\n    private String leavediagname;\r\n\r\n    /**\r\n     * 鍑洪櫌璇婃柇ICD鍊糪r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌璇婃柇ICD鍊糪")\r\n    private String leaveicd10code;\r\n\r\n    /**\r\n     * 鍖荤敓宸ュ彿\r\n     */\r\n    @ApiModelProperty(value = \"鍖荤敓宸ュ彿\")\r\n    private String drcode;\r\n\r\n    /**\r\n     * 鍖荤敓鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖荤敓鍚嶇О\")\r\n    @Excel(name = \" 鍖荤敓鍚嶇О \")\r\n    private String drname;\r\n\r\n    /**\r\n     * 鏄惁鐢熸垚鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚鍏ラ櫌 2鐢熸垚鍑洪櫌 9鏃犲尮閰嶆柟妗圽r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鐢熸垚鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚鍏ラ櫌 2鐢熸垚鍑洪櫌 9鏃犲尮閰嶆柟妗圽")\r\n    private Long schemestatus;\r\n\r\n    /**\r\n     * 鏄惁鐢熸垚閫氱敤鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚 9鏃犲尮閰嶆柟妗圽r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鐢熸垚閫氱敤鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚 9鏃犲尮閰嶆柟妗圽")\r\n    private Long generalschemestatus;\r\n\r\n    /**\r\n     * 鍑洪櫌绉戝浠g爜闆嗗悎\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌绉戝浠g爜闆嗗悎\")\r\n    private List<String> leaveldeptcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌绉戝鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌绉戝鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌绉戝鍚嶇О \")\r\n    private String leaveldeptname;\r\n\r\n    /**\r\n     * 鐥呭尯ID\r\n     */\r\n    @ApiModelProperty(value = \"鐥呭尯ID\")\r\n    private String hospitaldistrictid;\r\n\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿闆嗗悎\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯ID\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯ID\")\r\n    private String leavehospitaldistrictid;\r\n\r\n    /**\r\n     * 鍏ラ櫌绉戝ID\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌绉戝ID\")\r\n    private String deptid;\r\n\r\n    /**\r\n     * 鍑洪櫌绉戝ID\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌绉戝ID\")\r\n    private String leaveldeptid;\r\n\r\n    /**\r\n     * 鏂规鐘舵�佹搷浣滄椂闂碶r\n     */\r\n    @ApiModelProperty(value = \"鏂规鐘舵�佹搷浣滄椂闂碶")\r\n    private Date schemetime;\r\n\r\n    /**\r\n     * 鎮h�呭鍚峔r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呭鍚峔")\r\n    private String patname;\r\n\r\n    /**\r\n     * 鎮h�呯紪鍙穃r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呯紪鍙穃")\r\n    private String patno;\r\n\r\n    /**\r\n     * 浣忛櫌鏍囪瘑锛� 0锛氬湪闄�  1锛氬嚭闄�    2锛氳浆绉慭r\n     */\r\n    @ApiModelProperty(value = \"浣忛櫌鏍囪瘑锛� 0锛氬湪闄�  1锛氬嚭闄�    2锛氳浆绉慭")\r\n    private String inhospstate;\r\n\r\n    /**\r\n     * 闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊\r\n     */\r\n    @ApiModelProperty(value = \"闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊\")\r\n    private String checkFlag;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @ApiModelProperty(value = \"骞撮緞\")\r\n    private String age;\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @ApiModelProperty(value = \"鎵嬫満鍙穃")\r\n    private String telcode;\r\n\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @ApiModelProperty(\"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(\"pageSize\")\r\n    private Integer pageSize;\r\n\r\n    /**\r\n     * 寮�濮嬪嚭闄㈡棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"寮�濮嬪嚭闄㈡棩鏈焅")\r\n    private Date startOutHospTime;\r\n\r\n    /**\r\n     * 缁撴潫鍑洪櫌鏃ユ湡\r\n     */\r\n    @ApiModelProperty(value = \"缁撴潫鍑洪櫌鏃ユ湡\")\r\n    private Date endOutHospTime;\r\n\r\n\r\n    /**\r\n     * 寮�濮嬪叆闄㈡棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"寮�濮嬪叆闄㈡棩鏈焅")\r\n    private Date startInHospTime;\r\n\r\n    /**\r\n     * 缁撴潫鍏ラ櫌鏃ユ湡\r\n     */\r\n    @ApiModelProperty(value = \"缁撴潫鍏ラ櫌鏃ユ湡\")\r\n    private Date endInHospTime;\r\n\r\n    /**\r\n     * 缁忕鍖荤敓\r\n     */\r\n    @ApiModelProperty(\"缁忕鍖荤敓\")\r\n    @Excel(name = \" 缁忕鍖荤敓 \")\r\n    private String managementDoctor;\r\n\r\n    /**\r\n     * 缁忕鍖荤敓\r\n     */\r\n    @ApiModelProperty(\"缁忕鍖荤敓\")\r\n    @Excel(name = \" 缁忕鍖荤敓 \")\r\n    private String managementDoctorCode;\r\n}\r\n\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java b/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java
---- a/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java	(date 1758682819681)
-@@ -33,6 +33,29 @@
-     @ApiModelProperty(value = "鑷ID")
-     private String inhospno;
- 
-+    /**
-+     * 闅忚鏍囪瘑锛�0涓嶉渶瑕侊紝1闇�瑕�
-+     */
-+    @ApiModelProperty(value = "闅忚鏍囪瘑锛�0涓嶉渶瑕侊紝1闇�瑕�")
-+    private String fuflag;
-+    /**
-+     * 鐤剧梾澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触
-+     */
-+    @ApiModelProperty(value = "鐤剧梾澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触")
-+    private String diagcheckFlag;
-+
-+    /**
-+     *鐥呭尯澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触
-+     */
-+    @ApiModelProperty(value = "鐥呭尯澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触")
-+    private String wardcheckFlag;
-+
-+    /**
-+     * 閮ㄩ棬澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触
-+     */
-+    @ApiModelProperty(value = "閮ㄩ棬澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触")
-+    private String deptcheckFlag;
-+
-     /**
-      * 鎶ゅ+ID
-      */
-Index: smartor/src/main/java/com/smartor/service/IServiceTaskService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport com.smartor.domain.IvrLibaTemplateScriptVO;\r\nimport com.smartor.domain.ServiceSubtask;\r\nimport com.smartor.domain.ServiceTask;\r\nimport com.smartor.domain.SvyLibTemplateScriptVO;\r\n\r\n/**\r\n * 璇煶浠诲姟Service鎺ュ彛\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\npublic interface IServiceTaskService {\r\n    /**\r\n     * 鏌ヨ璇煶浠诲姟\r\n     *\r\n     * @param taskid 璇煶浠诲姟涓婚敭\r\n     * @return 璇煶浠诲姟\r\n     */\r\n    public ServiceTask selectServiceTaskByTaskid(Long taskid);\r\n\r\n    public List<ServiceTask> selectServiceTaskAndtaskDeptList(ServiceTask serviceTask);\r\n\r\n    /**\r\n     * 鏌ヨ璇煶浠诲姟鍒楄〃\r\n     *\r\n     * @param ServiceTask 璇煶浠诲姟\r\n     * @return 璇煶浠诲姟闆嗗悎\r\n     */\r\n    public List<ServiceTask> selectServiceTaskList(ServiceTask ServiceTask);\r\n\r\n    /**\r\n     * 鏂板璇煶浠诲姟\r\n     *\r\n     * @param ServiceTask 璇煶浠诲姟\r\n     * @return 缁撴灉\r\n     */\r\n    public int insertServiceTask(ServiceTask ServiceTask);\r\n\r\n    /**\r\n     * 淇敼璇煶浠诲姟\r\n     *\r\n     * @param ServiceTask 璇煶浠诲姟\r\n     * @return 缁撴灉\r\n     */\r\n    public int updateServiceTask(ServiceTask ServiceTask);\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎璇煶浠诲姟\r\n     *\r\n     * @param taskids 闇�瑕佸垹闄ょ殑璇煶浠诲姟涓婚敭闆嗗悎\r\n     * @return 缁撴灉\r\n     */\r\n    public int deleteServiceTaskByTaskids(Long[] taskids);\r\n\r\n    /**\r\n     * 鍒犻櫎璇煶浠诲姟淇℃伅\r\n     *\r\n     * @param taskid 璇煶浠诲姟涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    public Boolean deleteServiceTaskByTaskid(Long taskid);\r\n\r\n    /**\r\n     * 鑾峰彇闅忚鍙婃椂鐜嘰r\n     */\r\n    public Map<String, Object> selectTimelyRate(ServiceSubtask serviceSubtask);\r\n\r\n    /**\r\n     * @param taskid\r\n     * @param patid\r\n     * @return\r\n     */\r\n    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom);\r\n\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/IServiceTaskService.java b/smartor/src/main/java/com/smartor/service/IServiceTaskService.java
---- a/smartor/src/main/java/com/smartor/service/IServiceTaskService.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/IServiceTaskService.java	(date 1758682819457)
-@@ -77,5 +77,7 @@
-      */
-     public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom);
- 
-+    public Map<String, Object> getScriptByCondition(Long taskid, String zyserialnum, String mzserialnum, String tsserialnum);
-+
- 
- }
-Index: smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥殢璁匡級瀵硅薄 ivr_taskcall\r\n *\r\n * @author ruoyi\r\n * @date 2024-02-02\r\n */\r\n@ApiModel(value = \"ServiceSubtaskVO\", description = \"鍗曚竴闅忚浠诲姟鍏ュ弬\")\r\n@Data\r\npublic class ServiceSubtaskVO extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @ApiModelProperty(value = \"涓婚敭id\")\r\n    private Long subId;\r\n\r\n\r\n    /**\r\n     * 绗笁鏂逛换鍔D\r\n     */\r\n    @ApiModelProperty(value = \"绗笁鏂逛换鍔D\")\r\n    private String taskGuid;\r\n\r\n    /**\r\n     * 闅忚娆℃暟\r\n     */\r\n    @ApiModelProperty(value = \"闅忚娆℃暟\")\r\n    private Integer visitCount;\r\n\r\n    /**\r\n     * 澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡\r\n     */\r\n    @ApiModelProperty(value = \"澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡\")\r\n    private Integer visitNotice;\r\n\r\n    /**\r\n     * 鏄惁鍦ㄦ闅忚锛�1鍚�    2鏄痋r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鍦ㄦ闅忚锛�1鏄�    2鍚")\r\n    private Integer isVisitAgain;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"  鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private String patguid;\r\n\r\n    /**\r\n     * 鍙戦�佷汉\r\n     */\r\n    @Excel(name = \" 鍙戦�佷汉 \")\r\n    @ApiModelProperty(value = \"鍙戦�佷汉\")\r\n    private String sendname;\r\n\r\n    /**\r\n     * 鍙戦�乁UID\r\n     */\r\n    @Excel(name = \" 鍙戦�乁UID \")\r\n    @ApiModelProperty(value = \"鍙戦�乁UID\")\r\n    private String senduuid;\r\n\r\n    /**\r\n     * 鍙戝鐞嗘剰瑙侊細1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫閫乁UID\r\n     */\r\n    @Excel(name = \" 澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫 \")\r\n    @ApiModelProperty(value = \"澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫\")\r\n    private String suggest;\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @Excel(name = \" 鎵嬫満鍙� \")\r\n    @ApiModelProperty(value = \"鎵嬫満鍙穃")\r\n    private String phone;\r\n\r\n    /**\r\n     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\r\n     */\r\n    @Excel(name = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)\")\r\n    @ApiModelProperty(value = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)\")\r\n    private String serviceType;\r\n\r\n    /**\r\n     * 鎬у埆\r\n     */\r\n    @Excel(name = \"  鎬у埆\")\r\n    @ApiModelProperty(value = \"鎬у埆\")\r\n    private String sex;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @Excel(name = \" 骞撮緞 \")\r\n    @ApiModelProperty(value = \"骞撮緞\")\r\n    private Long age;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @Excel(name = \" 鍑洪櫌鐥呬汉璁板綍ID \")\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呬汉璁板綍ID\")\r\n    private Long inhospid;\r\n\r\n    /**\r\n     * 韬唤璇佸彿\r\n     */\r\n    @Excel(name = \" 韬唤璇佸彿 \")\r\n    @ApiModelProperty(value = \"韬唤璇佸彿\")\r\n    private String sfzh;\r\n\r\n    /**\r\n     * 鍦板潃\r\n     */\r\n    @Excel(name = \" 鍦板潃 \")\r\n    @ApiModelProperty(value = \"鍦板潃\")\r\n    private String addr;\r\n\r\n    /**\r\n     * 鍙戦�佷汉璇︽儏\r\n     */\r\n    @Excel(name = \"  鍙戦�佷汉璇︽儏\")\r\n    @ApiModelProperty(value = \"鍙戦�佷汉璇︽儏\")\r\n    private String senderdetail;\r\n\r\n    /**\r\n     * 浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)\r\n     */\r\n    @Excel(name = \"浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)\")\r\n    @ApiModelProperty(value = \"浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)\")\r\n    private String type;\r\n\r\n    /**\r\n     * 浠诲姟ID\r\n     */\r\n    @Excel(name = \" 浠诲姟ID \")\r\n    @ApiModelProperty(value = \"浠诲姟ID\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"  妯℃澘ID\")\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private Long templateid;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"  妯$増搴撴ā鏉縄D\")\r\n    @ApiModelProperty(value = \"妯$増搴撴ā鏉縄D\")\r\n    private Long libtemplateid;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"  妯℃澘搴撴ā鏉垮悕绉癨")\r\n    @ApiModelProperty(value = \"妯℃澘搴撴ā鏉垮悕绉癨")\r\n    private String libtemplatename;\r\n\r\n    /**\r\n     * 妯℃澘鍚峔r\n     */\r\n    @Excel(name = \" 妯℃澘鍚� \")\r\n    @ApiModelProperty(value = \"妯℃澘鍚峔")\r\n    private String templatename;\r\n\r\n    /**\r\n     * 鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦�乗r\n     */\r\n    @ApiModelProperty(value = \"鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鍗冲埢鍙戦�乗")\r\n    private String sendType;\r\n\r\n    /**\r\n     * 鍑洪櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿\")\r\n    private Date inhosptime;\r\n\r\n    /**\r\n     * 鍖荤敓缂栫爜\r\n     */\r\n    @Excel(name = \"  鍖荤敓缂栫爜\")\r\n    @ApiModelProperty(value = \"鍖荤敓缂栫爜\")\r\n    private String drcode;\r\n\r\n    /**\r\n     * 鍖荤敓濮撳悕\r\n     */\r\n    @Excel(name = \"  鍖荤敓濮撳悕\")\r\n    @ApiModelProperty(value = \"鍖荤敓濮撳悕\")\r\n    private String drname;\r\n\r\n\r\n    /**\r\n     * 鍙戦�佹棩鏈焅r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鍙戦�佹棩鏈� \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"鍙戦�佹棩鏈焅")\r\n    private Date senddate;\r\n\r\n    /**\r\n     * 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitabegin;\r\n\r\n    /**\r\n     * 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitaend;\r\n\r\n    /**\r\n     * 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitpbegin;\r\n\r\n    /**\r\n     * 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitpend;\r\n\r\n    /**\r\n     * 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitnbegin;\r\n\r\n    /**\r\n     * 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitnend;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬乗r\n     */\r\n    @Excel(name = \" 鍙戦�佺姸鎬� \")\r\n    @ApiModelProperty(value = \"鍙戦�佺姸鎬� : 1鏂板缓 2鎵ц涓� 3鏆傚仠 4缁堟 5瀹屾垚\")\r\n    private Long sendstate;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬乗r\n     */\r\n    @Excel(name = \" 鍙戦�佺姸鎬侀泦鍚� \")\r\n    @ApiModelProperty(value = \"鍙戦�佺姸鎬� : 1鏂板缓 2鎵ц涓� 3鏆傚仠 4缁堟 5瀹屾垚\")\r\n    private List<Long> sendstates;\r\n\r\n\r\n    /**\r\n     * 缁撴灉\r\n     */\r\n    @Excel(name = \" 缁撴灉 \")\r\n    @ApiModelProperty(value = \"缁撴灉\")\r\n    private String result;\r\n\r\n    /**\r\n     * 瀹屾垚鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 瀹屾垚鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"瀹屾垚鏃堕棿\")\r\n    private Date finishtime;\r\n\r\n\r\n    /**\r\n     * 灏辫瘖璁板綍缂栧彿\r\n     */\r\n    @Excel(name = \" 灏辫瘖璁板綍缂栧彿 \")\r\n    @ApiModelProperty(value = \"灏辫瘖璁板綍缂栧彿\")\r\n    private Long recordid;\r\n\r\n\r\n    /**\r\n     * 褰撳墠閲嶆嫧娆℃暟\r\n     */\r\n    @Excel(name = \" 褰撳墠閲嶆嫧娆℃暟 \")\r\n    @ApiModelProperty(value = \"褰撳墠閲嶆嫧娆℃暟\")\r\n    private Long exrecallcount;\r\n\r\n    /**\r\n     * 鎷夊彇鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鎷夊彇鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"鎷夊彇鏃堕棿\")\r\n    private Date pulltime;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \" bqsms \")\r\n    @ApiModelProperty(value = \"bqsms\")\r\n    private Long bqsms;\r\n\r\n    /**\r\n     * bhsms\r\n     */\r\n    @Excel(name = \" bhsms \")\r\n    @ApiModelProperty(value = \"bhsms\")\r\n    private Long bhsms;\r\n\r\n    /**\r\n     * 閮ㄩ棬code\r\n     */\r\n    @Excel(name = \"  閮ㄩ棬code\")\r\n    @ApiModelProperty(value = \"閮ㄩ棬code\")\r\n    private String deptcode;\r\n    /**\r\n     * 閮ㄩ棬code\r\n     */\r\n    @Excel(name = \"  閮ㄩ棬code\")\r\n    @ApiModelProperty(value = \"閮ㄩ棬code闆嗗悎\")\r\n    private List<String> leaveldeptcodes;\r\n\r\n    /**\r\n     * 鏍囩鐘舵�乗r\n     */\r\n    @Excel(name = \"  鏍囩鐘舵�乗")\r\n    @ApiModelProperty(value = \"鏍囩鐘舵�乗")\r\n    private Long labelstatus;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private String patientid;\r\n\r\n    /**\r\n     * 鎮h�呭鍚峔r\n     */\r\n    @Excel(name = \"鎮h�呭鍚峔")\r\n    @ApiModelProperty(value = \"鎮h�呭鍚峔")\r\n    private String patientname;\r\n\r\n    /**\r\n     * 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\r\n     */\r\n    @Excel(name = \" 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\")\r\n    @ApiModelProperty(value = \"闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\")\r\n    private Date longSendTime;\r\n\r\n    /**\r\n     * openid\r\n     */\r\n    @Excel(name = \"openid\")\r\n    @ApiModelProperty(value = \"openid\")\r\n    private String openid;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @Excel(name = \"鐖禝D\")\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private Long pid;\r\n\r\n    /**\r\n     * GUID\r\n     */\r\n    @Excel(name = \"GUID\")\r\n    @ApiModelProperty(value = \"GUID\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n    /**\r\n     * 鏂囨湰鍙橀噺鍙傛暟\r\n     */\r\n    @Excel(name = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    private Map<String, Map<String, String>> textParam;\r\n\r\n\r\n    /**\r\n     * 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚圽r\n     */\r\n    @Excel(name = \" 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚圽")\r\n    @ApiModelProperty(value = \"瀹f暀褰㈠紡 : 1,鏂囨湰銆�2,鍥剧墖銆�3,璇煶銆�4,瑙嗛銆�5,娣峰悎\")\r\n    private String preachform;\r\n\r\n\r\n    /**\r\n     * 搴婂彿\r\n     */\r\n    @Excel(name = \"搴婂彿\")\r\n    @ApiModelProperty(value = \"搴婂彿\")\r\n    private Long bedNo;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"  鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private Long patid;\r\n\r\n    /**\r\n     * 鍙戦�佹椂闂存\r\n     */\r\n    @ApiModelProperty(value = \"鍙戦�佹椂闂存 \")\r\n    private List<TaskSendTimeVO> sendTimeslot;\r\n\r\n    /**\r\n     * 浠诲姟鍚嶇О\r\n     */\r\n    @Excel(name = \"浠诲姟鍚嶇О\")\r\n    @ApiModelProperty(value = \"浠诲姟鍚嶇О\")\r\n    private String taskName;\r\n\r\n    /**\r\n     * 浠诲姟鎻忚堪\r\n     */\r\n    @Excel(name = \"浠诲姟鎻忚堪\")\r\n    @ApiModelProperty(value = \"浠诲姟鎻忚堪\")\r\n    private String taskDesc;\r\n\r\n\r\n    /**\r\n     * 闅忚浜篭r\n     */\r\n    @Excel(name = \"  闅忚浜�  \")\r\n    @ApiModelProperty(value = \"闅忚浜篭")\r\n    private String operator;\r\n\r\n    /**\r\n     * 闅忚浜篭r\n     */\r\n    @Excel(name = \"  闅忚浜虹紪鍙�  \")\r\n    @ApiModelProperty(value = \"闅忚浜虹紪鍙穃")\r\n    private String operatorNo;\r\n\r\n\r\n    /**\r\n     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�  \")\r\n    @ApiModelProperty(value = \"灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡")\r\n    private String hospno;\r\n\r\n    /**\r\n     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌   3.涓撶梾锛塡")\r\n    @ApiModelProperty(value = \"灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌   3.涓撶梾锛塡")\r\n    private String hospType;\r\n\r\n    /**\r\n     * 寰俊\r\n     */\r\n    @Excel(name = \"  寰俊\")\r\n    @ApiModelProperty(value = \"寰俊\")\r\n    private String wechat;\r\n\r\n\r\n    /**\r\n     * 璇婃柇鍚嶇О\r\n     */\r\n    @Excel(name = \"  璇婃柇鍚嶇О\")\r\n    @ApiModelProperty(value = \"璇婃柇鍚嶇О\")\r\n    private String diagname;\r\n\r\n    /**\r\n     * 绉戝鍚嶇О\r\n     */\r\n    @Excel(name = \"绉戝鍚嶇О\")\r\n    @ApiModelProperty(value = \"绉戝鍚嶇О\")\r\n    private String deptname;\r\n//\r\n//    /**\r\n//     * 灏辫瘖鏃ユ湡\r\n//     */\r\n//    @Excel(name = \" 灏辫瘖鏃ユ湡\")\r\n//    @ApiModelProperty(value = \"灏辫瘖鏃ユ湡\")\r\n//    private Date admindate;\r\n//\r\n    /**\r\n     * 鐥呮埧鍙穃r\n     */\r\n    @Excel(name = \"  鐥呮埧鍙穃")\r\n    @ApiModelProperty(value = \"鐥呮埧鍙穃")\r\n    private String roomno;\r\n\r\n    /**\r\n     * 鎬诲垎\r\n     */\r\n    @Excel(name = \"鎬诲垎\")\r\n    @ApiModelProperty(value = \"鎬诲垎\")\r\n    private Long score;\r\n\r\n\r\n    /**\r\n     * 鏄惁鎻愪氦\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鎻愪氦锛�0鏈彁浜�   1宸叉彁浜")\r\n    private Long submit;\r\n\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿\")\r\n    private String leavehospitaldistrictcode;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯闆嗗悎\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 璇婃柇鍚嶇О\r\n     */\r\n    @Excel(name = \"  绂婚櫌璇婃柇鍚嶇О\")\r\n    @ApiModelProperty(value = \"绂婚櫌璇婃柇鍚嶇О\")\r\n    private String leavediagname;\r\n\r\n    /**\r\n     * 璐d换鎶ゅ+缂栫爜\r\n     */\r\n    @Excel(name = \"璐d换鎶ゅ+缂栫爜\")\r\n    @ApiModelProperty(\"璐d换鎶ゅ+缂栫爜\")\r\n    private String nurseId;\r\n\r\n    /**\r\n     * 璐d换鎶ゅ+濮撳悕\r\n     */\r\n    @Excel(name = \"璐d换鎶ゅ+濮撳悕\")\r\n    @ApiModelProperty(\"璐d换鎶ゅ+濮撳悕\")\r\n    private String nurseName;\r\n\r\n    /**\r\n     * 寮傚父鏍囪瘑\r\n     */\r\n    @ApiModelProperty(value = \"寮傚父鏍囪瘑\")\r\n    @Excel(name = \" 寮傚父鏍囪瘑 \")\r\n    private String excep;\r\n\r\n    /**\r\n     * 澶囨敞\r\n     */\r\n    @ApiModelProperty(value = \"澶囨敞\")\r\n    private String remark;\r\n\r\n\r\n    /**\r\n     * 鍑洪櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date endtime;\r\n\r\n    /**\r\n     * 鍏ラ櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date starttime;\r\n\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @Excel(name = \"pageNum\")\r\n    @ApiModelProperty(value = \"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @Excel(name = \"pageSize\")\r\n    @ApiModelProperty(value = \"pageSize\")\r\n    private Integer pageSize;\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呮潵婧愶細0鏈湴鎮h�呰〃    1澶栭儴鎮h�呰〃\")\r\n    private String patfrom;\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"缁忕鍖荤敓缂栫爜\")\r\n    private String managementDoctorCode;\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"缁忕鍖荤敓\")\r\n    private String managementDoctor;\r\n\r\n    /**\r\n     * 寮�濮嬪嚭闄㈡棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"寮�濮嬪嚭闄㈡棩鏈焅")\r\n    private Date startOutHospTime;\r\n\r\n    /**\r\n     * 寮�濮嬪彂閫佹棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"寮�濮嬪彂閫佹棩鏈焅")\r\n    private Date startSendDateTime;\r\n\r\n    /**\r\n     * 缁撴潫鍙戦�佹棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"缁撴潫鍙戦�佹棩鏈焅")\r\n    private Date endSendDateTime;\r\n\r\n    /**\r\n     * 缁撴潫鍑洪櫌鏃ユ湡\r\n     */\r\n    @ApiModelProperty(value = \"缁撴潫鍑洪櫌鏃ユ湡\")\r\n    private Date endOutHospTime;\r\n\r\n    /**\r\n     * 绉戝涓庣梾鍖虹殑鏌ヨ鏄痮r杩樻槸and:   1:and(榛樿)     2:or\r\n     */\r\n    @ApiModelProperty(value = \"绉戝涓庣梾鍖虹殑鏌ヨ鏄痮r杩樻槸and:   1:and(榛樿)     2:or  \")\r\n    private String deptOrDistrict = \"1\";\r\n\r\n    /**\r\n     * 鍒涘缓寮�濮嬫椂闂碶r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date createStartTime;\r\n\r\n    /**\r\n     * 鍒涘缓缁撴潫鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date createEndTime;\r\n\r\n    /**\r\n     * 鎺掑簭锛堬級\r\n     */\r\n    @ApiModelProperty(value = \"鎺掑簭锛�0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭) \")\r\n    private Integer sort;\r\n\r\n\r\n    /**\r\n     * 鎮h�呬笂娆¢殢璁跨殑subId\r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呬笂娆¢殢璁跨殑subId\")\r\n    private Integer upid;\r\n\r\n    @ApiModelProperty(value = \"闅忚鏃堕棿\")\r\n    private Date visitTime;\r\n\r\n    /**\r\n     * 闅忚鏂瑰紡\r\n     */\r\n    @ApiModelProperty(value = \"闅忚鏂瑰紡\")\r\n    private String visitType;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬缂栫爜\")\r\n    private String visitDeptCode;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬鍚嶇О\")\r\n    private String visitDeptName;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬缂栫爜闆嗗悎\")\r\n    private List<String> visitDeptCodes;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java	(date 1758772484667)
-@@ -260,14 +260,14 @@
-      * 鍙戦�佺姸鎬�
-      */
-     @Excel(name = " 鍙戦�佺姸鎬� ")
--    @ApiModelProperty(value = "鍙戦�佺姸鎬� : 1鏂板缓 2鎵ц涓� 3鏆傚仠 4缁堟 5瀹屾垚")
-+    @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴�")
-     private Long sendstate;
- 
-     /**
-      * 鍙戦�佺姸鎬�
-      */
-     @Excel(name = " 鍙戦�佺姸鎬侀泦鍚� ")
--    @ApiModelProperty(value = "鍙戦�佺姸鎬� : 1鏂板缓 2鎵ц涓� 3鏆傚仠 4缁堟 5瀹屾垚")
-+    @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴�")
-     private List<Long> sendstates;
- 
- 
-@@ -435,6 +435,13 @@
-     @ApiModelProperty(value = "瀹f暀褰㈠紡 : 1,鏂囨湰銆�2,鍥剧墖銆�3,璇煶銆�4,瑙嗛銆�5,娣峰悎")
-     private String preachform;
- 
-+    /**
-+     * 褰撳墠鍙戦�佹柟寮�
-+     */
-+    @Excel(name = " 褰撳墠鍙戦�佹柟寮�")
-+    @ApiModelProperty(value = "褰撳墠鍙戦�佹柟寮�")
-+    private String currentPreachform;
-+
- 
-     /**
-      * 搴婂彿
-Index: smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.SysUserDeptMapper\">\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysUserDept\" id=\"SysUserDeptResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"userId\" column=\"user_id\"/>\r\n        <result property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"deptType\" column=\"dept_type\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n    </resultMap>\r\n\r\n    <resultMap id=\"deptResult\" type=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        <id property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"parentId\" column=\"parent_id\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"ancestors\" column=\"ancestors\"/>\r\n        <result property=\"orderNum\" column=\"order_num\"/>\r\n        <result property=\"leader\" column=\"leader\"/>\r\n        <result property=\"status\" column=\"dept_status\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectSysUserDeptVo\">\r\n        select id,\r\n               user_id,\r\n               dept_id,\r\n               del_flag,\r\n               orgid,\r\n               create_time,\r\n               update_time,\r\n               dept_code,\r\n               dept_name,\r\n               dept_type\r\n        from sys_user_dept\r\n    </sql>\r\n\r\n    <select id=\"selectSysUserDeptList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUserDept\"\r\n            resultMap=\"SysUserDeptResult\">\r\n        <include refid=\"selectSysUserDeptVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            and orgid=#{orgid}\r\n            <if test=\"userId != null \">\r\n                and user_id = #{userId}\r\n            </if>\r\n            <if test=\"deptId != null \">\r\n                and dept_id = #{deptId}\r\n            </if>\r\n            <if test=\"delFlag != null \">\r\n                and del_flag = #{delFlag}\r\n            </if>\r\n            <if test=\"createTime != null \">\r\n                and create_time = #{createTime}\r\n            </if>\r\n            <if test=\"updateTime != null \">\r\n                and update_time = #{updateTime}\r\n            </if>\r\n            <if test=\"deptType != null \">\r\n                and dept_type = #{deptType}\r\n            </if>\r\n            <if test=\"deptCode != null \">\r\n                and dept_code = #{deptCode}\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectSysUserDeptById\" parameterType=\"Long\"\r\n            resultMap=\"SysUserDeptResult\">\r\n        <include refid=\"selectSysUserDeptVo\"/>\r\n        where id = #{id}\r\n    </select>\r\n\r\n    <insert id=\"insertSysUserDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUserDept\"\r\n            useGeneratedKeys=\"true\" keyProperty=\"id\">\r\n        insert into sys_user_dept\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"userId != null\">user_id,\r\n            </if>\r\n            <if test=\"deptId != null\">dept_id,\r\n            </if>\r\n            <if test=\"delFlag != null \">\r\n                del_flag,\r\n            </if>\r\n            <if test=\"createTime != null \">\r\n                create_time,\r\n            </if>\r\n            <if test=\"updateTime != null \">\r\n                update_time,\r\n            </if>\r\n            <if test=\"deptType != null \">\r\n                dept_type,\r\n            </if>\r\n            <if test=\"deptCode != null \">\r\n                dept_code,\r\n            </if>\r\n            <if test=\"deptName != null \">\r\n                dept_name,\r\n            </if>\r\n            <if test=\"orgid != null \">\r\n                orgid,\r\n            </if>\r\n            <if test=\"userCode != null \">\r\n                user_code,\r\n            </if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"userId != null\">#{userId},\r\n            </if>\r\n            <if test=\"deptId != null\">#{deptId},\r\n            </if>\r\n            <if test=\"delFlag != null \">\r\n                #{delFlag},\r\n            </if>\r\n            <if test=\"createTime != null \">\r\n                #{createTime},\r\n            </if>\r\n            <if test=\"updateTime != null \">\r\n                #{updateTime},\r\n            </if>\r\n            <if test=\"deptType != null \">\r\n                #{deptType},\r\n            </if>\r\n            <if test=\"deptCode != null \">\r\n                #{deptCode},\r\n            </if>\r\n            <if test=\"deptName != null \">\r\n                #{deptName},\r\n            </if>\r\n            <if test=\"orgid != null \">\r\n                #{orgid},\r\n            </if>\r\n            <if test=\"userCode != null \">\r\n                #{userCode},\r\n            </if>\r\n        </trim>\r\n    </insert>\r\n\r\n    <update id=\"updateSysUserDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUserDept\">\r\n        update sys_user_dept\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"userId != null\">user_id =\r\n                #{userId},\r\n            </if>\r\n            <if test=\"deptId != null\">dept_id =\r\n                #{deptId},\r\n            </if>\r\n            <if test=\"delFlag != null \">\r\n                del_flag = #{delFlag},\r\n            </if>\r\n            <if test=\"createTime != null \">\r\n                create_time = #{createTime},\r\n            </if>\r\n            <if test=\"updateTime != null \">\r\n                update_time = #{updateTime},\r\n            </if>\r\n            <if test=\"deptType != null \">\r\n                dept_type = #{deptType},\r\n            </if>\r\n            <if test=\"deptCode != null \">\r\n                dept_code = #{deptCode},\r\n            </if>\r\n            <if test=\"deptName != null \">\r\n                dept_name = #{deptName},\r\n            </if>\r\n            <if test=\"orgid != null \">\r\n                orgid = #{orgid},\r\n            </if>\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <update id=\"deleteSysUserDeptById\" parameterType=\"Long\">\r\n        update sys_user_dept\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <select id=\"selectDeptListByUserId\" resultMap=\"deptResult\">\r\n        select d.dept_id,\r\n               d.dept_name,\r\n               d.parent_id,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.orgid,\r\n               d.status as dept_status\r\n        from sys_dept d\r\n                 left join sys_user_dept ud on d.dept_id = ud.dept_id\r\n        where ud.user_id = #{userId}\r\n          and ud.del_flag = 0\r\n          and d.del_flag = 0\r\n    </select>\r\n    <update id=\"deleteSysUserDeptByIds\" parameterType=\"String\">\r\n        update sys_user_dept\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1,\r\n            update_time = sysdate()\r\n        </trim>\r\n        where user_id in\r\n        <foreach item=\"id\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{id}\r\n        </foreach>\r\n    </update>\r\n\r\n\r\n    <update id=\"deleteSysUserDeptByCode\" parameterType=\"String\">\r\n        update sys_user_dept\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1,\r\n            update_time = sysdate()\r\n        </trim>\r\n        where user_id =#{userId} and dept_code=#{deptCode}\r\n    </update>\r\n\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml b/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml	(date 1758682819414)
-@@ -195,7 +195,7 @@
-                d.orgid,
-                d.status as dept_status
-         from sys_dept d
--                 left join sys_user_dept ud on d.dept_id = ud.dept_id
-+                 left join sys_user_dept ud on d.dept_code = ud.dept_code
-         where ud.user_id = #{userId}
-           and ud.del_flag = 0
-           and d.del_flag = 0
-Index: ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.system.service;\r\n\r\nimport java.util.List;\r\nimport com.ruoyi.system.domain.SysConfig;\r\n\r\n/**\r\n * 鍙傛暟閰嶇疆 鏈嶅姟灞俓r\n * \r\n * @author ruoyi\r\n */\r\npublic interface ISysConfigService\r\n{\r\n    /**\r\n     * 鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     * \r\n     * @param configId 鍙傛暟閰嶇疆ID\r\n     * @return 鍙傛暟閰嶇疆淇℃伅\r\n     */\r\n    public SysConfig selectConfigById(Long configId);\r\n\r\n    /**\r\n     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     * \r\n     * @param configKey 鍙傛暟閿悕\r\n     * @return 鍙傛暟閿�糪r\n     */\r\n    public String selectConfigByKey(String configKey);\r\n\r\n    /**\r\n     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     *\r\n     * @param configKey 鍙傛暟閿悕\r\n     * @return 鍙傛暟閿�糪r\n     */\r\n    public String selectConfigByKey(String configKey,String orgid);\r\n\r\n    /**\r\n     * 鑾峰彇楠岃瘉鐮佸紑鍏砛r\n     * \r\n     * @return true寮�鍚紝false鍏抽棴\r\n     */\r\n    public boolean selectCaptchaEnabled();\r\n\r\n    /**\r\n     * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 鍙傛暟閰嶇疆闆嗗悎\r\n     */\r\n    public List<SysConfig> selectConfigList(SysConfig config);\r\n\r\n    /**\r\n     * 鏂板鍙傛暟閰嶇疆\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public int insertConfig(SysConfig config);\r\n\r\n    /**\r\n     * 淇敼鍙傛暟閰嶇疆\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public int updateConfig(SysConfig config);\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鍙傛暟淇℃伅\r\n     * \r\n     * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID\r\n     */\r\n    public void deleteConfigByIds(Long[] configIds);\r\n\r\n    /**\r\n     * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    public void loadingConfigCache();\r\n\r\n    /**\r\n     * 娓呯┖鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    public void clearConfigCache();\r\n\r\n    /**\r\n     * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    public void resetConfigCache();\r\n\r\n    /**\r\n     * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴\r\n     * \r\n     * @param config 鍙傛暟淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public String checkConfigKeyUnique(SysConfig config);\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
---- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java	(date 1758683345114)
-@@ -5,14 +5,14 @@
- 
- /**
-  * 鍙傛暟閰嶇疆 鏈嶅姟灞�
-- * 
-+ *
-  * @author ruoyi
-  */
- public interface ISysConfigService
- {
-     /**
-      * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
--     * 
-+     *
-      * @param configId 鍙傛暟閰嶇疆ID
-      * @return 鍙傛暟閰嶇疆淇℃伅
-      */
-@@ -20,30 +20,24 @@
- 
-     /**
-      * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
--     * 
-+     *
-      * @param configKey 鍙傛暟閿悕
-      * @return 鍙傛暟閿��
-      */
-     public String selectConfigByKey(String configKey);
- 
--    /**
--     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
--     *
--     * @param configKey 鍙傛暟閿悕
--     * @return 鍙傛暟閿��
--     */
--    public String selectConfigByKey(String configKey,String orgid);
--
-     /**
-      * 鑾峰彇楠岃瘉鐮佸紑鍏�
--     * 
-+     *
-      * @return true寮�鍚紝false鍏抽棴
-      */
-     public boolean selectCaptchaEnabled();
- 
-+    public String selectConfigByKey(String configKey,String orgid);
-+
-     /**
-      * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 鍙傛暟閰嶇疆闆嗗悎
-      */
-@@ -51,7 +45,7 @@
- 
-     /**
-      * 鏂板鍙傛暟閰嶇疆
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 缁撴灉
-      */
-@@ -59,7 +53,7 @@
- 
-     /**
-      * 淇敼鍙傛暟閰嶇疆
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 缁撴灉
-      */
-@@ -67,7 +61,7 @@
- 
-     /**
-      * 鎵归噺鍒犻櫎鍙傛暟淇℃伅
--     * 
-+     *
-      * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID
-      */
-     public void deleteConfigByIds(Long[] configIds);
-@@ -89,7 +83,7 @@
- 
-     /**
-      * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴
--     * 
-+     *
-      * @param config 鍙傛暟淇℃伅
-      * @return 缁撴灉
-      */
-Index: smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\nimport org.apache.commons.lang3.builder.ToStringBuilder;\r\nimport org.apache.commons.lang3.builder.ToStringStyle;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 鎸囨爣搴撳璞¤繑鍙� IvrLibaTargetVO\r\n *\r\n * @author ruoyi\r\n * @date 2023-12-14\r\n */\r\n@Data\r\n@ApiModel(value = \"IvrLibaTargetVO\", description = \"鎸囨爣搴撳璞¤繑鍙俓")\r\npublic class IvrLibaTargetVO  extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * $column.columnComment\r\n     */\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 鍒嗙粍ID\r\n     */\r\n    @Excel(name = \"鍒嗙粍ID\")\r\n    @ApiModelProperty(value = \"鍒嗙粍ID\")\r\n    private String groupid;\r\n\r\n    /**\r\n     * 閫傜敤棰樺瀷(鍗曢�夈�佸閫夈�佸煷绌恒�佺粍鍚�)\r\n     */\r\n    @Excel(name = \"閫傜敤棰樺瀷(鍗曢�夈�佸閫夈�佸煷绌恒�佺粍鍚�)\")\r\n    @ApiModelProperty(value = \"閫傜敤棰樺瀷(鍗曢�夈�佸閫夈�佸煷绌恒�佺粍鍚�)\")\r\n    private String scriptType;\r\n\r\n    /**\r\n     * 鎸囨爣绫诲瀷\r\n     */\r\n    @Excel(name = \"鎸囨爣绫诲瀷\")\r\n    @ApiModelProperty(value = \"鎸囨爣绫诲瀷\")\r\n    private String targettype;\r\n\r\n    /**\r\n     * 鎸囨爣鍚嶇О\r\n     */\r\n    @Excel(name = \"鎸囨爣鍚嶇О\")\r\n    @ApiModelProperty(value = \"鎸囨爣鍚嶇О\")\r\n    private String targetname;\r\n\r\n    /**\r\n     * 鎸囨爣鎻忚堪\r\n     */\r\n    @Excel(name = \"鎸囨爣鎻忚堪\")\r\n    @ApiModelProperty(value = \"鎸囨爣鎻忚堪\")\r\n    private String targetdesc;\r\n\r\n    /**\r\n     * 璇█\r\n     */\r\n    @Excel(name = \"璇█\")\r\n    @ApiModelProperty(value = \"璇█\")\r\n    private String language;\r\n\r\n    /**\r\n     * 鐗堟湰\r\n     */\r\n    @Excel(name = \"鐗堟湰\")\r\n    @ApiModelProperty(value = \"鐗堟湰\")\r\n    private String version;\r\n\r\n    /**\r\n     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級\r\n     */\r\n    @ApiModelProperty(value = \"鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級\")\r\n    @Excel(name = \"鍊肩被鍨媆", readConverterExp = \"1=閫夐」,2鏂囨湰,3鏁板�糪")\r\n    private Long valueType;\r\n\r\n    /**\r\n     * 鏄惁寮傚父鏍囪瘑\r\n     */\r\n    @Excel(name = \"鏄惁寮傚父鏍囪瘑\")\r\n    @ApiModelProperty(value = \"鏄惁寮傚父鏍囪瘑\")\r\n    private Long isabnormal;\r\n\r\n    /**\r\n     * 棰勮闃�鍊间笂闄怽r\n     */\r\n    @Excel(name = \"棰勮闃�鍊间笂闄怽")\r\n    @ApiModelProperty(value = \"棰勮闃�鍊间笂闄怽")\r\n    private Long warnup;\r\n\r\n    /**\r\n     * 棰勮闃�鍊间笅闄怽r\n     */\r\n    @Excel(name = \"棰勮闃�鍊间笅闄怽")\r\n    @ApiModelProperty(value = \"棰勮闃�鍊间笅闄怽")\r\n    private Long warndown;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @Excel(name = \"鐖禝D\")\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private Long pid;\r\n\r\n    /**\r\n     * GUID\r\n     */\r\n    @Excel(name = \"GUID\")\r\n    @ApiModelProperty(value = \"GUID\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 鍒嗙被id\r\n     */\r\n    @Excel(name = \"鍒嗙被id\")\r\n    @ApiModelProperty(value = \"鍒嗙被id\")\r\n    private Long assortid;\r\n\r\n    /**\r\n     * 鏄惁鍙敤\r\n     */\r\n    @Excel(name = \"鏄惁鍙敤\")\r\n    @ApiModelProperty(value = \"鏄惁鍙敤\")\r\n    private String isAvailable;\r\n\r\n    /**\r\n     * 閫傜敤鐤剧梾\r\n     */\r\n    @Excel(name = \"閫傜敤鐤剧梾\")\r\n    @ApiModelProperty(value = \"閫傜敤鐤剧梾\")\r\n    private String suitDisease;\r\n\r\n\r\n    /**\r\n     * 閫傜敤鏂瑰紡\r\n     */\r\n    @Excel(name = \"閫傜敤鏂瑰紡\")\r\n    @ApiModelProperty(value = \"閫傜敤鏂瑰紡\")\r\n    private String suitWay;\r\n\r\n    @Excel(name = \"閫傜敤鏂瑰紡(澶氶��)\")\r\n    @ApiModelProperty(value = \"閫傜敤鏂瑰紡(澶氶��)\")\r\n    private List<String> suitWayList;\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @ApiModelProperty(value = \"pageNum\")\r\n    @Excel(name = \"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(value = \"pageSize\")\r\n    @Excel(name = \"pageSize\")\r\n    private Integer pageSize;\r\n\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n    /**\r\n     * 鍙傛暟鍙橀噺\r\n     */\r\n    @ApiModelProperty(\"鍙傛暟鍙橀噺\")\r\n    @Excel(name = \"鍙傛暟鍙橀噺\")\r\n    private String parameter;\r\n\r\n    @ApiModelProperty(value = \"鎸囨爣閫夐」闆嗗悎\")\r\n    private List<IvrLibaTargetoption> targetoptionList = new ArrayList<>();\r\n\r\n    @ApiModelProperty(value = \"鏍囩闆嗗悎\")\r\n    private List<IvrLibaTargetTag> ivrLibaTargetTagList = new ArrayList<>();\r\n\r\n    @ApiModelProperty(value = \"鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛塡")\r\n    private String reply;\r\n\r\n    /**\r\n     * 璇磋瘽鍐呭\r\n     */\r\n    @Excel(name = \"璇磋瘽鍐呭\")\r\n    @ApiModelProperty(value = \"璇磋瘽鍐呭\")\r\n    private String content;\r\n\r\n    @ApiModelProperty(value = \"鐢ㄤ簬鏌ヨ鏍囩鐨勶紝涓嶇敤浜庡瓨鏁版嵁\")\r\n    private String optionDesc;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java
---- a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java	(date 1758682819679)
-@@ -90,8 +90,8 @@
-     /**
-      * 鏄惁寮傚父鏍囪瘑
-      */
--    @Excel(name = "鏄惁寮傚父鏍囪瘑")
--    @ApiModelProperty(value = "鏄惁寮傚父鏍囪瘑")
-+    @Excel(name = "鏄惁寮傚父鏍囪瘑  0缁胯壊锛�1绾㈣壊锛�2榛勮壊锛�")
-+    @ApiModelProperty(value = "鏄惁寮傚父鏍囪瘑   0缁胯壊锛�1绾㈣壊锛�2榛勮壊锛�")
-     private Long isabnormal;
- 
-     /**
-Index: smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\nimport org.apache.commons.lang3.builder.ToStringBuilder;\r\nimport org.apache.commons.lang3.builder.ToStringStyle;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 闂嵎浠诲姟妯$増闂璇濇湳搴撳璞� svy_task_template_script\r\n *\r\n * @author ruoyi\r\n * @date 2024-06-19\r\n */\r\n@Data\r\npublic class SvyTaskTemplateScriptVO extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 涓婚敭ID\r\n     */\r\n    private Long id;\r\n\r\n    /**\r\n     * 棰樼洰涓婚\r\n     */\r\n    @Excel(name = \"棰樼洰涓婚\")\r\n    @ApiModelProperty(\"棰樼洰涓婚\")\r\n    private String scriptTopic;\r\n\r\n    /**\r\n     * 浠诲姟id\r\n     */\r\n    @ApiModelProperty(value = \"浠诲姟id\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 妯℃澘璇濇湳缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"妯℃澘璇濇湳缂栧彿\")\r\n    private String scriptno;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private Long templateID;\r\n\r\n    /**\r\n     * 璇濇湳ID\r\n     */\r\n    @ApiModelProperty(value = \"璇濇湳ID\")\r\n    private Long scriptid;\r\n\r\n    /**\r\n     * 鏍囬\r\n     */\r\n    @ApiModelProperty(value = \"鏍囬\")\r\n    private String script_title;\r\n\r\n    /**\r\n     * 璇█\r\n     */\r\n    @ApiModelProperty(value = \"璇█\")\r\n    private String language;\r\n\r\n    /**\r\n     * 鏄惁鍙敤 0鍙敤  1涓嶅彲鐢╘r\n     */\r\n    @Excel(name = \"鏄惁鍙敤 0鍙敤  1涓嶅彲鐢╘")\r\n    @ApiModelProperty(\"鏄惁鍙敤 0鍙敤  1涓嶅彲鐢╘")\r\n    private String isavailable;\r\n\r\n    /**\r\n     * 绫诲埆鍚峔r\n     */\r\n    @ApiModelProperty(value = \"绫诲埆鍚峔")\r\n    private String categoryName;\r\n\r\n\r\n    /**\r\n     * 璇濇湳鍐呭\r\n     */\r\n    @ApiModelProperty(value = \"璇濇湳鍐呭\")\r\n    private String scriptContent;\r\n\r\n\r\n    /**\r\n     * 鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛塡r\n     */\r\n    @ApiModelProperty(value = \"鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉� \")\r\n    private String isMust;\r\n\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private Long pid;\r\n\r\n    /**\r\n     * GUID\r\n     */\r\n    @ApiModelProperty(value = \"GUID\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級\r\n     */\r\n    @ApiModelProperty(value = \"鍊肩被鍨�1=閫夐」,2=鏂囨湰,3=鏁板�糪")\r\n    private String valueType;\r\n\r\n    /**\r\n     * 鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛塡r\n     */\r\n    @Excel(name = \"鍥炲\", readConverterExp = \"鎸�=闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑\")\r\n    @ApiModelProperty(\"鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛塡")\r\n    private String reply;\r\n\r\n    /**\r\n     * 鍒嗗�肩被鍨嬶細1锛氭暟瀛楋紝2锛氱瓑绾r\n     */\r\n    @Excel(name = \"鍒嗗�肩被鍨嬶細1锛氭暟瀛楋紝2锛氱瓑绾")\r\n    @ApiModelProperty(\"鍒嗗�肩被鍨嬶細1锛氭暟瀛楋紝2锛氱瓑绾")\r\n    private String scoretype;\r\n\r\n    /**\r\n     * 鎸囨爣閫夐」*\r\n     */\r\n    @ApiModelProperty(value = \"鎸囨爣閫夐」*\")\r\n    private String targetOptions;\r\n\r\n    /**\r\n     * 棰樼洰绫诲瀷;鏋氫妇 1.鍗曢�� 2澶氶�� 3濉┖ 4鍏跺畠\r\n     */\r\n    @ApiModelProperty(value = \"棰樼洰绫诲瀷;鏋氫妇 1.鍗曢�� 2澶氶�� 3濉┖ 4鍏跺畠\")\r\n    private String scriptType;\r\n\r\n    /**\r\n     * 鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)\r\n     */\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)\")\r\n    private Long targetid;\r\n\r\n    /**\r\n     * 鍩虹鎸囨爣鍊糪r\n     */\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣鍊糪")\r\n    private String targetvalue;\r\n\r\n    /**\r\n     * 涓嬩竴璇濇湳缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"涓嬩竴璇濇湳缂栧彿\")\r\n    private String nextScriptno;\r\n\r\n    /**\r\n     * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級*\r\n     */\r\n    @ApiModelProperty(value = \"闂缁撴灉 ,缁�=鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨刓")\r\n    private String scriptResult;\r\n\r\n    /**\r\n     * 鍙橀噺鍙傛暟闆嗗悎\r\n     */\r\n    @ApiModelProperty(value = \"鍙橀噺鍙傛暟闆嗗悎\")\r\n    private String otherdata;\r\n\r\n    /**\r\n     * 闂鍥剧墖璺緞\r\n     */\r\n    @ApiModelProperty(value = \"闂鍥剧墖璺緞\")\r\n    private String picturePath;\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n\r\n    /**\r\n     * 閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\r\n     */\r\n    @Excel(name = \"閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\")\r\n    @ApiModelProperty(value = \"閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\")\r\n    private String branchFlag;\r\n\r\n    /**\r\n     * 閫夐」鍒嗘敮鐨勪笅涓�涓瘽鏈紪鍙穃r\n     */\r\n    @Excel(name = \"閫夐」鍒嗘敮鐨勪笅涓�涓瘽鏈紪鍙穃")\r\n    @ApiModelProperty(value = \"閫夐」鍒嗘敮鐨勪笅涓�涓瘽鏈紪鍙穃")\r\n    private String branchNextscriptno;\r\n\r\n\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣绫诲瀷\")\r\n    private String targettype;\r\n\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣鍚嶇О\")\r\n    private String targetname;\r\n\r\n    /**\r\n     * 搴忓彿\r\n     */\r\n    @Excel(name = \"搴忓彿\")\r\n    @ApiModelProperty(value = \"搴忓彿\")\r\n    private Long xh;\r\n\r\n    /**\r\n     * 鍒嗘暟\r\n     */\r\n    @Excel(name = \"鍒嗘暟\")\r\n    @ApiModelProperty(value = \"鍒嗘暟\")\r\n    private BigDecimal score = BigDecimal.ZERO;\r\n\r\n    /**\r\n     * 閫変腑鎻愮ず\r\n     */\r\n    @Excel(name = \" 閫変腑鎻愮ず \")\r\n    @ApiModelProperty(\"閫変腑鎻愮ず\")\r\n    private String prompt;\r\n\r\n    /**\r\n     * 棰樼洰鏍囩\r\n     */\r\n    @Excel(name = \"棰樼洰鏍囩\")\r\n    @ApiModelProperty(\"棰樼洰鏍囩\")\r\n    private String tag;\r\n\r\n    /**\r\n     * 鏄惁闅愯棌\r\n     */\r\n    @Excel(name = \" 鏄惁闅愯棌 \")\r\n    @ApiModelProperty(\"鏄惁闅愯棌\")\r\n    private Long ishide;\r\n\r\n    /**\r\n     * 閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3\r\n     */\r\n    @Excel(name = \"閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3\")\r\n    @ApiModelProperty(\"閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3\")\r\n    private String suitway;\r\n\r\n\r\n    /**\r\n     * 棰樼洰鍥剧墖\r\n     */\r\n    @Excel(name = \"棰樼洰鍥剧墖\")\r\n    @ApiModelProperty(\"棰樼洰鍥剧墖\")\r\n    private String scriptPicture;\r\n\r\n    /**\r\n     * 棰樼洰鍐呭\r\n     */\r\n    @Excel(name = \"棰樼洰鍐呭\")\r\n    @ApiModelProperty(\"棰樼洰鎻忚堪\")\r\n    private String scriptDesc;\r\n\r\n    /**\r\n     * 鍒嗙被id\r\n     */\r\n    @Excel(name = \"鍒嗙被id\")\r\n    @ApiModelProperty(\"鍒嗙被id\")\r\n    private Long categoryid;\r\n\r\n    /**\r\n     * 鏄惁蹇呭~   0蹇呭~   1涓嶅繀濉玕r\n     */\r\n    @Excel(name = \" 鏄惁蹇呭~   0蹇呭~   1涓嶅繀濉玕")\r\n    @ApiModelProperty(\"鏄惁蹇呭~   0蹇呭~   1涓嶅繀濉玕")\r\n    private String ismandatory;\r\n\r\n\r\n    /**\r\n     * 鎺掑簭\r\n     */\r\n    @Excel(name = \" 鎺掑簭 \")\r\n    @ApiModelProperty(\"鎺掑簭\")\r\n    private Long sort;\r\n\r\n    @ApiModelProperty(value = \"缁勫埆\")\r\n    private String groupName;\r\n\r\n\r\n    /**\r\n     * 璇濇湳閫夐」\r\n     */\r\n    @ApiModelProperty(value = \"璇濇湳閫夐」\")\r\n    private List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = new ArrayList<>();\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java
---- a/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java	(date 1758682819665)
-@@ -191,6 +191,13 @@
-     @ApiModelProperty(value = "闂缁撴灉 ,缁�=鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨�")
-     private String scriptResult;
- 
-+
-+    /**
-+     * 寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊
-+     */
-+    @ApiModelProperty(value = "寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊")
-+    private Long isabnormal;
-+
-     /**
-      * 鍙橀噺鍙傛暟闆嗗悎
-      */
-Index: smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service;\r\n\r\nimport com.smartor.domain.ServiceSLTDInhospReqVO;\r\nimport com.smartor.domain.ServiceSLTDInhospResDTO;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨService鎺ュ彛\r\n *\r\n * @author smartor\r\n * @date 2025-08-14\r\n */\r\npublic interface IServiceSLTDHealthcareRecordService {\r\n\r\n    /**\r\n     * 閲囬泦鍦ㄩ櫌鎮h�呭嚭鍏ラ櫌銆侀棬鎬ヨ瘖淇℃伅\r\n     *\r\n     * @param reqVO 鏌ヨ璇锋眰鍙傛暟\r\n     * @return 鍋ュ悍璁板綍鍒楄〃\r\n     * 鍙傝�僜r\n     * {\r\n     * \"orgId\": 20001001,\r\n     * \"campusIds\": 30001002,\r\n     * \"startHeadTime\":\"2025-08-14\",\r\n     * \"startTailTime\":\"2025-08-14\",\r\n     * \"healthcareRecordTypeList\":[\"FH0108.01\"],\r\n     * \"subjectCode\": null,\r\n     * \"healthcareRecordNo\":null,\r\n     * \"orgSubjectCode\": null,\r\n     * \"deptDimensions\": null,\r\n     * \"serviceScopes\": null,\r\n     * \"inpatientArea\": null,\r\n     * \"status\": null\r\n     * }\r\n     */\r\n    List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO);\r\n\r\n    /**\r\n     * 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param reqVO\r\n     * @return 鍙傝�僜r\n     * {\r\n     * \"orgId\": 20001001,\r\n     * \"campusIds\": 30001002,\r\n     * \"unitIds\": null,\r\n     * \"relationType\": null,\r\n     * \"searchText\": null,\r\n     * \"status\": 1\r\n     * }\r\n     */\r\n    Boolean queryHospUserInfoList(ServiceSLTDInhospReqVO reqVO);\r\n\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java b/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java
---- a/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java	(date 1758682819446)
-@@ -1,5 +1,6 @@
- package com.smartor.service;
- 
-+import com.smartor.domain.ServiceSLTDDeptReqVO;
- import com.smartor.domain.ServiceSLTDInhospReqVO;
- import com.smartor.domain.ServiceSLTDInhospResDTO;
- 
-@@ -43,7 +44,7 @@
-      * @return 鍙傝��
-      * {
-      * "orgId": 20001001,
--     * "campusIds": 30001002,
-+     * "campusId": 30001002,
-      * "unitIds": null,
-      * "relationType": null,
-      * "searchText": null,
-@@ -52,5 +53,21 @@
-      */
-     Boolean queryHospUserInfoList(ServiceSLTDInhospReqVO reqVO);
- 
-+    /**
-+     * 閲囬泦绉戝鐥呭尯淇℃伅
-+     *
-+     * @param serviceSLTDDeptReqVO
-+     * @return 鍙傝��
-+     * {
-+     * "orgId": 20001001,
-+     * "campusIds": 30001002,
-+     * "unitIds": null,
-+     * "relationType": null,
-+     * "searchText": null,
-+     * "status": 1
-+     * }
-+     */
-+    Boolean queryDeptWardAreaInfoList(ServiceSLTDDeptReqVO serviceSLTDDeptReqVO);
-+
- 
- }
-Index: ruoyi-admin/pom.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\r\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\r\n    <parent>\r\n        <artifactId>ruoyi</artifactId>\r\n        <groupId>com.ruoyi</groupId>\r\n        <version>3.8.5</version>\r\n    </parent>\r\n    <modelVersion>4.0.0</modelVersion>\r\n    <!--    <packaging>war</packaging>-->\r\n    <packaging>jar</packaging>\r\n    <artifactId>smartor-suifang</artifactId>\r\n\r\n    <description>\r\n        web鏈嶅姟鍏ュ彛\r\n    </description>\r\n\r\n    <dependencies>\r\n\r\n        <!-- spring-boot-devtools -->\r\n        <dependency>\r\n            <groupId>org.springframework.boot</groupId>\r\n            <artifactId>spring-boot-devtools</artifactId>\r\n            <optional>true</optional> <!-- 琛ㄧず渚濊禆涓嶄細浼犻�� -->\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.springframework.boot</groupId>\r\n            <artifactId>spring-boot-starter-thymeleaf</artifactId>\r\n        </dependency>\r\n\r\n        <!-- swagger3-->\r\n        <dependency>\r\n            <groupId>io.springfox</groupId>\r\n            <artifactId>springfox-boot-starter</artifactId>\r\n        </dependency>\r\n\r\n        <!-- 闃叉杩涘叆swagger椤甸潰鎶ョ被鍨嬭浆鎹㈤敊璇紝鎺掗櫎3.0.0涓殑寮曠敤锛屾墜鍔ㄥ鍔�1.6.2鐗堟湰 -->\r\n        <dependency>\r\n            <groupId>io.swagger</groupId>\r\n            <artifactId>swagger-models</artifactId>\r\n            <version>1.6.2</version>\r\n        </dependency>\r\n\r\n        <!-- Mysql椹卞姩鍖� -->\r\n        <dependency>\r\n            <groupId>mysql</groupId>\r\n            <artifactId>mysql-connector-java</artifactId>\r\n        </dependency>\r\n\r\n        <!-- SQL_SERVER椹卞姩鍖� -->\r\n        <dependency>\r\n            <groupId>com.microsoft.sqlserver</groupId>\r\n            <artifactId>mssql-jdbc</artifactId>\r\n            <version>9.2.1.jre8</version>\r\n        </dependency>\r\n\r\n        <!-- 鏍稿績妯″潡-->\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>ruoyi-framework</artifactId>\r\n        </dependency>\r\n\r\n        <!-- 瀹氭椂浠诲姟-->\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>ruoyi-quartz</artifactId>\r\n        </dependency>\r\n\r\n        <!-- 浠g爜鐢熸垚-->\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>ruoyi-generator</artifactId>\r\n        </dependency>\r\n\r\n        <!-- 绯荤粺妯″潡-->\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>smartor</artifactId>\r\n            <version>3.8.5</version>\r\n            <scope>compile</scope>\r\n        </dependency>\r\n        <!-- https://mvnrepository.com/artifact/net.glxn.qrgen/javase -->\r\n        <dependency>\r\n            <groupId>net.glxn.qrgen</groupId>\r\n            <artifactId>javase</artifactId>\r\n            <version>2.0</version>\r\n        </dependency>\r\n        <!-- https://mvnrepository.com/artifact/net.glxn.qrgen/core -->\r\n        <dependency>\r\n            <groupId>net.glxn.qrgen</groupId>\r\n            <artifactId>core</artifactId>\r\n            <version>2.0</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.json</groupId>\r\n            <artifactId>json</artifactId>\r\n            <version>20210307</version>\r\n        </dependency>\r\n\r\n        <dependency>\r\n            <groupId>org.springframework.boot</groupId>\r\n            <artifactId>spring-boot-starter-web-services</artifactId>\r\n        </dependency>\r\n\r\n        <dependency>\r\n            <groupId>org.apache.cxf</groupId>\r\n            <artifactId>cxf-rt-frontend-jaxws</artifactId>\r\n            <version>3.1.6</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.cxf</groupId>\r\n            <artifactId>cxf-rt-transports-http</artifactId>\r\n            <version>3.1.6</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.codehaus.woodstox</groupId>\r\n            <artifactId>stax2-api</artifactId>\r\n            <version>3.1.1</version>\r\n        </dependency>\r\n\r\n        <dependency>\r\n            <groupId>org.ssssssss</groupId>\r\n            <artifactId>magic-api-spring-boot-starter</artifactId>\r\n            <version>1.3.0</version>\r\n        </dependency>\r\n\r\n        <dependency>\r\n            <groupId>com.alibaba.nls</groupId>\r\n            <artifactId>nls-sdk-common</artifactId>\r\n            <version>2.1.6</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.poi</groupId>\r\n            <artifactId>poi</artifactId>\r\n            <version>5.2.3</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.poi</groupId>\r\n            <artifactId>poi-scratchpad</artifactId>\r\n            <version>5.2.3</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>xerces</groupId>\r\n            <artifactId>xercesImpl</artifactId>\r\n            <version>2.12.0</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>xml-apis</groupId>\r\n            <artifactId>xml-apis</artifactId>\r\n            <version>1.4.01</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.poi</groupId>\r\n            <artifactId>poi-ooxml</artifactId>\r\n            <version>5.2.3</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.poi</groupId>\r\n            <artifactId>poi-ooxml-schemas</artifactId>\r\n            <version>4.1.2</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.xmlbeans</groupId>\r\n            <artifactId>xmlbeans</artifactId>\r\n            <version>5.1.0</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>cn.easyproject</groupId>\r\n            <artifactId>orai18n</artifactId>\r\n            <version>12.1.0.2.0</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>com.oracle.database.jdbc</groupId>\r\n            <artifactId>ojdbc8</artifactId>\r\n            <version>19.3.0.0</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.postgresql</groupId>\r\n            <artifactId>postgresql</artifactId>\r\n            <version>42.6.0</version> <!-- 璇锋牴鎹渶瑕侀�夋嫨鏈�鏂扮増鏈� -->\r\n        </dependency>\r\n        <!--oracle-->\r\n        <dependency>\r\n            <groupId>com.oracle.database.jdbc</groupId>\r\n            <artifactId>ojdbc8</artifactId>\r\n            <scope>runtime</scope>\r\n        </dependency>\r\n    </dependencies>\r\n    <build>\r\n        <plugins>\r\n            <plugin>\r\n                <groupId>org.springframework.boot</groupId>\r\n                <artifactId>spring-boot-maven-plugin</artifactId>\r\n                <version>2.1.1.RELEASE</version>\r\n                <configuration>\r\n                    <fork>true</fork> <!-- 濡傛灉娌℃湁璇ラ厤缃紝devtools涓嶄細鐢熸晥 -->\r\n                </configuration>\r\n                <executions>\r\n                    <execution>\r\n                        <goals>\r\n                            <goal>repackage</goal>\r\n                        </goals>\r\n                    </execution>\r\n                </executions>\r\n            </plugin>\r\n            <plugin>\r\n                <groupId>org.apache.maven.plugins</groupId>\r\n                <artifactId>maven-war-plugin</artifactId>\r\n                <version>3.1.0</version>\r\n                <configuration>\r\n                    <failOnMissingWebXml>false</failOnMissingWebXml>\r\n                    <warName>${project.artifactId}</warName>\r\n                </configuration>\r\n            </plugin>\r\n        </plugins>\r\n        <finalName>${project.artifactId}</finalName>\r\n    </build>\r\n\r\n    <repositories>\r\n        <repository>\r\n            <id>central</id>\r\n            <url>https://repo.maven.apache.org/maven2</url>\r\n        </repository>\r\n        <repository>\r\n            <id>aliyun</id>\r\n            <url>https://maven.aliyun.com/repository/public</url>\r\n        </repository>\r\n        <repository>\r\n            <id>jcenter</id>\r\n            <url>https://jcenter.bintray.com/</url>\r\n        </repository>\r\n    </repositories>\r\n</project>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
---- a/ruoyi-admin/pom.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/pom.xml	(date 1758682819328)
-@@ -166,6 +166,11 @@
-             <version>5.1.0</version>
-         </dependency>
-         <dependency>
-+            <groupId>org.apache.commons</groupId>
-+            <artifactId>commons-compress</artifactId>
-+            <version>1.21</version>
-+        </dependency>
-+        <dependency>
-             <groupId>cn.easyproject</groupId>
-             <artifactId>orai18n</artifactId>
-             <version>12.1.0.2.0</version>
-Index: ruoyi-quartz/pom.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\r\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\r\n    <parent>\r\n        <artifactId>ruoyi</artifactId>\r\n        <groupId>com.ruoyi</groupId>\r\n        <version>3.8.5</version>\r\n    </parent>\r\n    <modelVersion>4.0.0</modelVersion>\r\n\r\n    <artifactId>ruoyi-quartz</artifactId>\r\n\r\n    <description>\r\n        quartz瀹氭椂浠诲姟\r\n    </description>\r\n\r\n    <dependencies>\r\n\r\n        <!-- 瀹氭椂浠诲姟 -->\r\n        <dependency>\r\n            <groupId>org.quartz-scheduler</groupId>\r\n            <artifactId>quartz</artifactId>\r\n            <exclusions>\r\n                <exclusion>\r\n                    <groupId>com.mchange</groupId>\r\n                    <artifactId>c3p0</artifactId>\r\n                </exclusion>\r\n            </exclusions>\r\n        </dependency>\r\n\r\n        <!-- 閫氱敤宸ュ叿-->\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>ruoyi-common</artifactId>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>smartor</artifactId>\r\n            <version>3.8.5</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>ruoyi-system</artifactId>\r\n        </dependency>\r\n\r\n    </dependencies>\r\n\r\n</project>
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml
---- a/ruoyi-quartz/pom.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-quartz/pom.xml	(date 1758784755037)
-@@ -36,14 +36,14 @@
-         </dependency>
-         <dependency>
-             <groupId>com.ruoyi</groupId>
--            <artifactId>smartor</artifactId>
--            <version>3.8.5</version>
-+            <artifactId>ruoyi-system</artifactId>
-         </dependency>
-         <dependency>
-             <groupId>com.ruoyi</groupId>
--            <artifactId>ruoyi-system</artifactId>
-+            <artifactId>smartor</artifactId>
-+            <version>3.8.5</version>
-         </dependency>
- 
-     </dependencies>
- 
--</project>
-\ No newline at end of file
-+</project>
-Index: smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.SysDept2Mapper\">\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysDept\" id=\"SysDeptResult\">\r\n        <id property=\"deptId\" column=\"dept_id\"/>\r\n        <id property=\"hisDeptId\" column=\"his_dept_id\"/>\r\n        <result property=\"parentId\" column=\"parent_id\"/>\r\n        <result property=\"hisParentId\" column=\"his_parent_id\"/>\r\n        <result property=\"ancestors\" column=\"ancestors\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"orderNum\" column=\"order_num\"/>\r\n        <result property=\"leader\" column=\"leader\"/>\r\n        <result property=\"phone\" column=\"phone\"/>\r\n        <result property=\"email\" column=\"email\"/>\r\n        <result property=\"status\" column=\"status\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"parentName\" column=\"parent_name\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptType\" column=\"dept_type\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"type\" column=\"type\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectDeptVo\">\r\n        select d.dept_id,\r\n               d.dept_code,\r\n               d.type,\r\n               d.orgid,\r\n               d.parent_id,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.dept_type,\r\n               d.email,\r\n               d.status,\r\n               d.del_flag,\r\n               d.create_by,\r\n               d.guid,\r\n               d.create_time,\r\n               d.his_dept_id,\r\n               d.his_parent_id\r\n        from sys_dept d\r\n    </sql>\r\n\r\n    <select id=\"selectDeptList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\" resultMap=\"SysDeptResult\">\r\n        <include refid=\"selectDeptVo\"/>\r\n        where d.del_flag = '0'\r\n        <if test=\"deptId != null and deptId != 0\">\r\n            AND dept_id = #{deptId}\r\n        </if>\r\n        <if test=\"type != null\">\r\n            AND type = #{type}\r\n        </if>\r\n        <if test=\"parentId != null and parentId != 0\">\r\n            AND parent_id = #{parentId}\r\n        </if>\r\n        <if test=\"deptName != null and deptName != ''\">\r\n            AND dept_name like concat('%', #{deptName}, '%')\r\n        </if>\r\n        <if test=\"status != null and status != ''\">\r\n            AND status = #{status}\r\n        </if>\r\n        <if test=\"deptCode != null and deptCode != ''\">\r\n            AND dept_code = #{deptCode}\r\n        </if>\r\n        <if test=\"deptType != null and deptType != ''\">\r\n            AND dept_type = #{deptType}\r\n        </if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">\r\n            AND his_dept_id = #{hisDeptId}\r\n        </if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">\r\n            AND his_parent_id = #{hisParentId}\r\n        </if>\r\n        order by d.parent_id, d.order_num\r\n    </select>\r\n\r\n    <select id=\"selectDeptListByRoleId\" resultType=\"Long\">\r\n        select d.dept_id\r\n        from sys_dept d\r\n        left join sys_role_dept rd on d.dept_id = rd.dept_id\r\n        where rd.role_id = #{roleId}\r\n        <if test=\"deptCheckStrictly\">\r\n            and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id =\r\n            rd.dept_id and rd.role_id = #{roleId})\r\n        </if>\r\n        order by d.parent_id, d.order_num\r\n    </select>\r\n\r\n    <select id=\"selectDeptById\" parameterType=\"Long\" resultMap=\"SysDeptResult\">\r\n        select d.dept_id,\r\n               d.parent_id,\r\n               d.dept_code,\r\n               d.type,\r\n               d.dept_type,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.email,\r\n               d.status,\r\n               d.orgid,\r\n               d.his_dept_id,\r\n               d.his_parent_id\r\n                   (select dept_name from sys_dept where dept_id = d.parent_id) parent_name\r\n        from sys_dept d\r\n        where d.dept_id = #{deptId}\r\n    </select>\r\n\r\n    <select id=\"selectDeptByCode\" parameterType=\"string\" resultMap=\"SysDeptResult\">\r\n        select d.dept_id,\r\n               d.parent_id,\r\n               d.type,\r\n               d.dept_code,\r\n               d.dept_type,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.email,\r\n               d.orgid,\r\n               d.his_dept_id,\r\n               d.his_parent_id\r\n            d.status\r\n        from sys_dept d\r\n        where del_flag = 0\r\n          and d.dept_code = #{deptCode}\r\n    </select>\r\n\r\n    <select id=\"checkDeptExistUser\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(1)\r\n        from sys_user\r\n        where dept_id = #{deptId}\r\n          and del_flag = '0'\r\n    </select>\r\n\r\n    <select id=\"hasChildByDeptId\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(1)\r\n        from sys_dept\r\n        where del_flag = '0'\r\n          and parent_id = #{deptId} limit 1\r\n    </select>\r\n\r\n    <select id=\"selectChildrenDeptById\" parameterType=\"Long\" resultMap=\"SysDeptResult\">\r\n        select *\r\n        from sys_dept\r\n        where find_in_set(#{deptId}, ancestors)\r\n    </select>\r\n\r\n    <select id=\"selectNormalChildrenDeptById\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(*)\r\n        from sys_dept\r\n        where status = 0\r\n          and del_flag = '0'\r\n          and find_in_set(#{deptId}, ancestors)\r\n    </select>\r\n\r\n    <select id=\"checkDeptNameUnique\" resultMap=\"SysDeptResult\">\r\n        <include refid=\"selectDeptVo\"/>\r\n        where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1\r\n    </select>\r\n\r\n\r\n    <insert id=\"batchDept\">\r\n        insert into sys_dept(\r\n        dept_id,\r\n        parent_id,\r\n        dept_name,\r\n        ancestors,\r\n        order_num,\r\n        leader,\r\n        phone,\r\n        email,\r\n        status,\r\n        dept_code,\r\n        dept_type,\r\n        create_by,\r\n        his_dept_id,\r\n        his_parent_id,\r\n        type,\r\n        guid,\r\n        orgid,\r\n        create_time\r\n        ) values\r\n        <foreach collection=\"list\" item=\"item\" separator=\",\">\r\n            (\r\n            #{item.deptId},\r\n            #{item.parentId},\r\n            #{item.deptName},\r\n            #{item.ancestors},\r\n            #{item.orderNum},\r\n            #{item.leader},\r\n            #{item.phone},\r\n            #{item.email},\r\n            #{item.status},\r\n            #{item.deptCode},\r\n            #{item.deptType},\r\n            #{item.createBy},\r\n            #{item.hisDeptId},\r\n            #{item.hisParentId},\r\n            #{item.type},\r\n            #{item.guid},\r\n            #{item.orgid},\r\n            now()\r\n            )\r\n        </foreach>\r\n    </insert>\r\n\r\n\r\n    <insert id=\"insertDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        insert into sys_dept(\r\n        <if test=\"deptId != null and deptId != 0\">dept_id,</if>\r\n        <if test=\"parentId != null and parentId != 0\">parent_id,</if>\r\n        <if test=\"deptName != null and deptName != ''\">dept_name,</if>\r\n        <if test=\"ancestors != null and ancestors != ''\">ancestors,</if>\r\n        <if test=\"orderNum != null\">order_num,</if>\r\n        <if test=\"leader != null and leader != ''\">leader,</if>\r\n        <if test=\"phone != null and phone != ''\">phone,</if>\r\n        <if test=\"email != null and email != ''\">email,</if>\r\n        <if test=\"status != null\">status,</if>\r\n        <if test=\"deptCode != null\">dept_code,</if>\r\n        <if test=\"deptType != null\">dept_type,</if>\r\n        <if test=\"createBy != null and createBy != ''\">create_by,</if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">his_dept_id,</if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">his_parent_id,</if>\r\n        <if test=\"type != null and type != ''\">type,</if>\r\n        <if test=\"guid != null and guid != ''\">guid,</if>\r\n        <if test=\"orgid != null and orgid != ''\">orgid,</if>\r\n        create_time\r\n        )values(\r\n        <if test=\"deptId != null and deptId != 0\">#{deptId},</if>\r\n        <if test=\"parentId != null and parentId != 0\">#{parentId},</if>\r\n        <if test=\"deptName != null and deptName != ''\">#{deptName},</if>\r\n        <if test=\"ancestors != null and ancestors != ''\">#{ancestors},</if>\r\n        <if test=\"orderNum != null\">#{orderNum},</if>\r\n        <if test=\"leader != null and leader != ''\">#{leader},</if>\r\n        <if test=\"phone != null and phone != ''\">#{phone},</if>\r\n        <if test=\"email != null and email != ''\">#{email},</if>\r\n        <if test=\"status != null\">#{status},</if>\r\n        <if test=\"deptCode != null\">#{deptCode},</if>\r\n        <if test=\"deptType != null\">#{deptType},</if>\r\n        <if test=\"createBy != null and createBy != ''\">#{createBy},</if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">#{hisDeptId},</if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">#{hisParentId},</if>\r\n        <if test=\"type != null and type != ''\">#{type},</if>\r\n        <if test=\"guid != null and guid != ''\">#{guid},</if>\r\n        <if test=\"orgid != null and orgid != ''\">#{orgid},</if>\r\n        sysdate()\r\n        )\r\n    </insert>\r\n\r\n    <update id=\"updateDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        update sys_dept\r\n        <set>\r\n            <if test=\"parentId != null and parentId != 0\">parent_id = #{parentId},</if>\r\n            <if test=\"deptName != null and deptName != ''\">dept_name = #{deptName},</if>\r\n            <if test=\"ancestors != null and ancestors != ''\">ancestors = #{ancestors},</if>\r\n            <if test=\"orderNum != null\">order_num = #{orderNum},</if>\r\n            <if test=\"leader != null\">leader = #{leader},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"email != null\">email = #{email},</if>\r\n            <if test=\"status != null and status != ''\">status = #{status},</if>\r\n            <if test=\"deptCode != null\">dept_code=#{deptCode},</if>\r\n            <if test=\"deptType != null\">dept_type=#{deptType},</if>\r\n            <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\r\n            <if test=\"hisParentId != null and hisParentId != ''\">his_parent_id = #{hisParentId},</if>\r\n            <if test=\"hisDeptId != null and hisDeptId != ''\">his_dept_id = #{hisDeptId},</if>\r\n            <if test=\"type != null and type != ''\">type = #{type},</if>\r\n            update_time = sysdate()\r\n        </set>\r\n        where dept_id = #{deptId}\r\n    </update>\r\n\r\n    <update id=\"updateDeptChildren\" parameterType=\"java.util.List\">\r\n        update sys_dept set ancestors =\r\n        <foreach collection=\"depts\" item=\"item\" index=\"index\"\r\n                 separator=\" \" open=\"case dept_id\" close=\"end\">\r\n            when #{item.deptId} then #{item.ancestors}\r\n        </foreach>\r\n        where dept_id in\r\n        <foreach collection=\"depts\" item=\"item\" index=\"index\"\r\n                 separator=\",\" open=\"(\" close=\")\">\r\n            #{item.deptId}\r\n        </foreach>\r\n    </update>\r\n\r\n    <update id=\"updateDeptStatusNormal\" parameterType=\"Long\">\r\n        update sys_dept set status = '0' where dept_id in\r\n        <foreach collection=\"array\" item=\"deptId\" open=\"(\" separator=\",\" close=\")\">\r\n            #{deptId}\r\n        </foreach>\r\n    </update>\r\n\r\n    <delete id=\"deleteDeptById\" parameterType=\"Long\">\r\n        update sys_dept\r\n        set del_flag = '2'\r\n        where dept_id = #{deptId}\r\n    </delete>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml b/smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml	(date 1758682819417)
-@@ -132,11 +132,12 @@
-                d.email,
-                d.orgid,
-                d.his_dept_id,
--               d.his_parent_id
--            d.status
-+               d.his_parent_id,
-+               d.status
-         from sys_dept d
-         where del_flag = 0
-           and d.dept_code = #{deptCode}
-+          and d.orgid = #{orgid}
-     </select>
- 
-     <select id="checkDeptExistUser" parameterType="Long" resultType="int">
-@@ -306,7 +307,7 @@
- 
-     <delete id="deleteDeptById" parameterType="Long">
-         update sys_dept
--        set del_flag = '2'
-+        set del_flag = '1'
-         where dept_id = #{deptId}
-     </delete>
- 
-Index: ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.quartz.service.impl;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.entity.SysUserDept;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.quartz.mapper.CollectHISMapper;\r\nimport com.ruoyi.quartz.service.ICollectHISService;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.*;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.time.ZoneId;\r\nimport java.util.*;\r\nimport java.util.stream.Collectors;\r\nimport java.util.stream.Stream;\r\n\r\n@Slf4j\r\n@Service\r\npublic class CollectHISServiceImpl implements ICollectHISService {\r\n    @Autowired\r\n    private CollectHISMapper chMapper;\r\n\r\n    @Autowired\r\n    private SysUser2Mapper sysUser2Mapper;\r\n\r\n    @Autowired\r\n    private SysUserRole2Mapper sysUserRoleMapper;\r\n\r\n    @Autowired\r\n    private SysDept2Mapper sysDept2Mapper;\r\n\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    @Autowired\r\n    private Icd10Mapper icd10Mapper;\r\n\r\n    @Autowired\r\n    private PatMedOuthospMapper patMedOuthospMapper;\r\n\r\n    @Autowired\r\n    private PatMedInhospMapper patMedInhospMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n\r\n    @Autowired\r\n    private ThreadPoolTaskExecutor taskExecutor;\r\n\r\n    @Autowired\r\n    private ShardingMapper shardingMapper;\r\n\r\n    @Autowired\r\n    private UtilsMapper utilsMapper;\r\n\r\n    private static final long SHARDING_THRESHOLD = 5_000_000L;\r\n    private static final String PAT_ARCHIVE_TABLE = \"pat_archive\";\r\n    private static final String PAT_MED_INHOSP_TABLE = \"pat_med_inhosp\";\r\n\r\n\r\n    @Override\r\n    public List<PatArchive> selectPatArchiveList(PatArchive patArchive) {\r\n        return chMapper.selectPatArchiveList(patArchive);\r\n    }\r\n\r\n//    @Override\r\n//    public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp) {\r\n//        // 寮傛鎵ц鏁翠釜鏁版嵁鍚屾浠诲姟\r\n//        taskExecutor.execute(() -> {\r\n//            log.info(\"寮�濮嬫墽琛屾暟鎹悓姝ヤ换鍔�...\");\r\n//            syncPatArchivesInOrder(); // 鍏堝悓姝ユ偅鑰匼r\n//            syncPatMedInhosp();       // 鍐嶅悓姝ュ嚭鍏ラ櫌\r\n//            log.info(\"鏁版嵁鍚屾浠诲姟鎻愪氦瀹屾瘯銆俓");\r\n//        });\r\n//        return 0; // 杩斿洖0琛ㄧず浠诲姟宸叉彁浜ゅ埌鍚庡彴鎵ц\r\n//    }\r\n\r\n    /**\r\n     * 鍚屾浠诲姟\r\n     * @param\r\n     * @return\r\n     */\r\n    @Override\r\n    public Integer sync() {\r\n        Integer count = 0;\r\n        List<Map<String, Object>> syncList = utilsMapper.getList(\"SELECT id,syncName,DATE_FORMAT(ADDDATE(startTime, INTERVAL -1 MINUTE), '%Y-%m-%d %H:%i:%s') startTime  FROM sys_sync_time  where state=0\");\r\n        if (syncList.size() > 0) {\r\n            String endTime = chMapper.getSqlString(\"select sysdate from healthy_inhosp where rownum=1\");\r\n            //鍚屾鎮h�呭熀鏈俊鎭痋r\n//            List<Map<String, Object>> syncTemp = syncList.stream().filter(row -> row.get(\"syncName\").equals(\"pat_archive\")).collect(Collectors.toList());\r\n//            if (syncTemp.size() > 0) {\r\n//                count+=syncArchive(syncTemp.get(0).get(\"startTime\") + \"\", endTime);\r\n//                utilsMapper.updateSql(\"update sys_sync_time set startTime='\"+endTime+\"' where syncName='pat_archive' \");\r\n//            }\r\n\r\n            //鍚屾浣忛櫌鐥呬汉淇℃伅\r\n            List<Map<String, Object>> syncTemp = syncList.stream().filter(row -> row.get(\"syncName\").equals(\"pat_med_inhosp\")).collect(Collectors.toList());\r\n            if (syncTemp.size() > 0) {\r\n                count+=syncMedInhosp(syncTemp.get(0).get(\"startTime\") + \"\", endTime);\r\n                utilsMapper.updateSql(\"update sys_sync_time set startTime='\"+endTime+\"' where syncName='pat_med_inhosp' \");\r\n            }\r\n\r\n            //鍚屾闂ㄨ瘖淇℃伅\r\n            syncTemp = syncList.stream().filter(row -> row.get(\"syncName\").equals(\"pat_med_outhosp\")).collect(Collectors.toList());\r\n            if (syncTemp.size() > 0) {\r\n                count+=syncOuthosp(syncTemp.get(0).get(\"startTime\") + \"\", endTime);\r\n                utilsMapper.updateSql(\"update sys_sync_time set startTime='\"+endTime+\"' where syncName='pat_med_outhosp' \");\r\n            }\r\n\r\n\r\n        } else {\r\n            log.info(\"鍚屾浠诲姟鏃堕棿sys_sync_time琛ㄤ腑娌℃湁闇�瑕佸悓姝ョ殑浠诲姟\");\r\n        }\r\n        return count;\r\n    }\r\n\r\n    /**\r\n     * 鍚屾鎮h�呭熀鏈俊鎭痋r\n     * @param\r\n     * @return\r\n     */\r\n    private  Integer syncArchive(String startTime,String endTime) {\r\n        Integer count = 0;\r\n        PatArchive pa = new PatArchive();\r\n        pa.setLastStartTime(startTime);\r\n        pa.setLastEndTime(endTime);\r\n        List<PatArchive> patArchives = chMapper.selectPatArchiveList(pa);\r\n        log.info(\"鍙悓鎮h�呭熀鏈俊鎭暟閲廫" + patArchives.size());\r\n        for (PatArchive pm : patArchives) {\r\n            try {\r\n                PatArchive pa1 = new PatArchive();\r\n                pa1.setPatientno(pm.getPatientno());\r\n                List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa1);\r\n                if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                    pm.setId(patArchives1.get(0).getId());\r\n                    pm.setUpdateTime(new Date());\r\n                    count += patArchiveMapper.updatePatArchive(pm);\r\n                } else {\r\n                    pm.setCreateTime(new Date());\r\n                    count += patArchiveMapper.insertPatArchiveSingle(pm);\r\n\r\n                }\r\n            }catch (Exception ex){\r\n                log.info(\"鍙悓鎮h�呭熀鏈俊鎭�:\"+ex.getMessage());\r\n            }\r\n        }\r\n\r\n        return count;\r\n    }\r\n\r\n    /**\r\n     * 鍚屾鍑哄叆闄俊鎭痋r\n     * @param\r\n     * @return\r\n     */\r\n    private  Integer syncMedInhosp(String startTime,String endTime) {\r\n        Integer count = 0;\r\n        PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n        patMedInhosp.setLastStartTime(startTime);\r\n        patMedInhosp.setLastEndTime(endTime);\r\n        List<PatMedInhosp> patMedInhospList = chMapper.selectPatMedInhospList(patMedInhosp);\r\n        log.info(\"鍙悓姝ュ嚭鍏ラ櫌鏁伴噺\" + patMedInhospList.size());\r\n        for (PatMedInhosp pm : patMedInhospList) {\r\n            try {\r\n                //鎮h�呭熀鏈俊鎭痋r\n                PatArchive patArchive = new PatArchive();\r\n                patArchive.setPatientno(pm.getPatno());\r\n                List<PatArchive> patArchives = chMapper.selectPatArchiveList(patArchive);\r\n                if (patArchives.size() > 0) {\r\n                    PatArchive pa1 = new PatArchive();\r\n                    pa1.setPatientno(pm.getPatno());\r\n                    List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa1);\r\n                    if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                        patArchives.get(0).setId(patArchives1.get(0).getId());\r\n                        patArchives.get(0).setUpdateTime(new Date());\r\n                        count += patArchiveMapper.updatePatArchive(patArchives.get(0));\r\n                    } else {\r\n                        patArchives.get(0).setCreateTime(new Date());\r\n                        count += patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n\r\n                    }\r\n                }\r\n            }catch (Exception ex) {\r\n                log.info(\"鍚屾偅鑰呭熀鏈俊鎭�:\" + ex.getMessage());\r\n            }\r\n\r\n            try {\r\n                //鍚屾鍑哄叆闄r\n                PatMedInhosp pmi = new PatMedInhosp();\r\n                pmi.setSerialnum(pm.getSerialnum());\r\n                List<PatMedInhosp> patMedInhospList1 = patMedInhospMapper.selectPatMedInhospListBySerialnum(pmi);\r\n                if (patMedInhospList1.size() == 0) {\r\n                    pm.setCreateTime(new Date());\r\n                    count += patMedInhospMapper.insertPatMedInhosp(pm);\r\n                } else {\r\n                    pm.setInhospid(patMedInhospList1.get(0).getInhospid());\r\n                    pm.setUpdateTime(new Date());\r\n                    count += patMedInhospMapper.updatePatMedInhosp(pm);\r\n                }\r\n            } catch (Exception ex) {\r\n                log.info(\"鍚屾鍑哄叆闄�:\" + ex.getMessage());\r\n            }\r\n        }\r\n        return count;\r\n    }\r\n\r\n    /**\r\n     * 鍚屾闂ㄨ瘖淇℃伅\r\n     * @param\r\n     * @return\r\n     */\r\n    private  Integer syncOuthosp(String startTime,String endTime) {\r\n        Integer count = 0;\r\n        PatMedOuthosp patMedOuthosp = new PatMedOuthosp();\r\n        patMedOuthosp.setLastStartTime(startTime);\r\n        patMedOuthosp.setLastEndTime(endTime);\r\n        List<PatMedOuthosp> patMedOuthosps = chMapper.selectPatMedOuthospList(patMedOuthosp);\r\n        log.info(\"鍚屾闂ㄨ瘖淇℃伅鏁伴噺\" + patMedOuthosps.size());\r\n        for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) {\r\n            try {\r\n                //鎮h�呭熀鏈俊鎭痋r\n                PatArchive patArchive = new PatArchive();\r\n                patArchive.setPatientno(patMedOuthosp1.getPatno());\r\n                List<PatArchive> patArchives = chMapper.selectPatArchiveList(patArchive);\r\n                if (patArchives.size() > 0) {\r\n                    PatArchive pa1 = new PatArchive();\r\n                    pa1.setPatientno(patMedOuthosp1.getPatno());\r\n                    List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa1);\r\n                    if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                        patArchives.get(0).setId(patArchives1.get(0).getId());\r\n                        patArchives.get(0).setUpdateTime(new Date());\r\n                        count += patArchiveMapper.updatePatArchive(patArchives.get(0));\r\n                    } else {\r\n                        patArchives.get(0).setCreateTime(new Date());\r\n                        count += patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n\r\n                    }\r\n                }\r\n            }catch (Exception ex) {\r\n                log.info(\"鍚屾偅鑰呭熀鏈俊鎭�:\" + ex.getMessage());\r\n            }\r\n\r\n            try {\r\n                PatMedOuthosp patMedOuthospTemp = new PatMedOuthosp();\r\n                patMedOuthospTemp.setSerialnum(patMedOuthosp1.getSerialnum());\r\n                List<PatMedOuthosp> patMedOuthospsTemp = chMapper.selectPatMedOuthospList(patMedOuthosp);\r\n                if (patMedOuthospsTemp.size() > 0) {\r\n                    patMedOuthosp1.setUpdateTime(new Date());\r\n                    patMedOuthosp1.setId(patMedOuthospsTemp.get(0).getId());\r\n                    count += patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp1);\r\n                } else {\r\n                    patMedOuthosp1.setCreateTime(new Date());\r\n                    count += patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp1);\r\n                }\r\n            } catch (Exception ex) {\r\n                log.info(\"鍚屾鍑哄叆闄�:\" + ex.getMessage());\r\n            }\r\n        }\r\n        return count;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp) {\r\n        List<PatMedInhosp> patMedInhospList = chMapper.selectPatMedInhospList(patMedInhosp);\r\n        log.info(\"鍙悓姝ョ梾浜烘暟閲廫"+patMedInhospList.size());\r\n        for (PatMedInhosp pm : patMedInhospList) {\r\n            PatArchive patArchive = new PatArchive();\r\n            patArchive.setPatientno(pm.getPatno());\r\n            List<PatArchive> patArchives = chMapper.selectPatArchiveList(patArchive);\r\n            if (CollectionUtils.isEmpty(patArchives)) {\r\n                //绌轰簡鐩存帴涓㈡帀\r\n                continue;\r\n            }\r\n            PatArchive pa = new PatArchive();\r\n            pa.setPatientno(patArchives.get(0).getPatientno());\r\n            List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa);\r\n            if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                pm.setPatid(patArchives1.get(0).getId());\r\n            } else {\r\n                patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n                pm.setPatid(patArchives.get(0).getId());\r\n            }\r\n            if (!Objects.isNull(patMedInhosp.getStartInHospTime()) && !Objects.isNull(patMedInhosp.getEndInHospTime())) {\r\n                //鍏ラ櫌\r\n                pm.setInhospstate(\"0\");\r\n                pm.setCreateTime(new Date());\r\n                patMedInhospMapper.insertPatMedInhosp(pm);\r\n            } else if (!Objects.isNull(patMedInhosp.getStartOutHospTime()) && !Objects.isNull(patMedInhosp.getEndOutHospTime())) {\r\n                //鍑洪櫌\r\n                pm.setInhospstate(\"1\");\r\n                pm.setUpdateTime(new Date());\r\n                PatMedInhosp pmi = new PatMedInhosp();\r\n                pmi.setSerialnum(pm.getSerialnum());\r\n                List<PatMedInhosp> patMedInhospList1 = patMedInhospMapper.selectPatMedInhospList(pmi);\r\n                if (CollectionUtils.isEmpty(patMedInhospList1)) {\r\n                    pm.setCreateTime(new Date());\r\n                    patMedInhospMapper.insertPatMedInhosp(pm);\r\n                } else {\r\n                    pm.setInhospid(patMedInhospList1.get(0).getInhospid());\r\n                    patMedInhospMapper.updatePatMedInhosp(pm);\r\n                }\r\n\r\n            }\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    @Override\r\n    public Boolean hnDataGather(HnDataGatherVO hnDataGatherVO) {\r\n        if(ObjectUtils.isEmpty(hnDataGatherVO.getStartTime()) )\r\n            hnDataGatherVO.setStartTime(new Date());\r\n        if(ObjectUtils.isEmpty(hnDataGatherVO.getEndTime()) )\r\n            hnDataGatherVO.setEndTime(new Date());\r\n        LocalDate startDate = hnDataGatherVO.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();\r\n        LocalDate endDate = hnDataGatherVO.getEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();\r\n\r\n        Integer po = null;\r\n        // 寰幆澶勭悊姣忎竴澶‐r\n        for (LocalDate currentDate = startDate; !currentDate.isAfter(endDate); currentDate = currentDate.plusDays(1)) {\r\n            PatMedInhosp dailyCondition = new PatMedInhosp();\r\n            //澶勭悊鍏ラ櫌\r\n            LocalDateTime dayStart = currentDate.atStartOfDay();\r\n            LocalDateTime dayEnd = currentDate.atTime(23, 59, 59);\r\n            dailyCondition.setStartInHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            dailyCondition.setEndInHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n            selectPatMedInhospList(dailyCondition);\r\n\r\n            //澶勭悊鍑洪櫌\r\n            dailyCondition.setStartInHospTime(null);\r\n            dailyCondition.setEndInHospTime(null);\r\n            dailyCondition.setStartOutHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            dailyCondition.setEndOutHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n            selectPatMedInhospList(dailyCondition);\r\n\r\n            //澶勭悊闂ㄨ瘖\r\n            PatMedOuthosp patMedOuthosp = new PatMedOuthosp();\r\n            patMedOuthosp.setBeginTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            patMedOuthosp.setEndTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n            selectPatMedOuthospList(patMedOuthosp);\r\n        }\r\n        return true;\r\n    }\r\n\r\n\r\n    @Override\r\n    public Integer selectPatMedOuthospList(PatMedOuthosp patMedOuthosp) {\r\n        List<PatMedOuthosp> patMedOuthosps = chMapper.selectPatMedOuthospList(patMedOuthosp);\r\n        log.info(\"selectPatMedOuthospList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", patMedOuthosps.size());\r\n        Integer i = null;\r\n        for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) {\r\n            //鑾峰彇鎮h�呭熀鏈俊鎭痋r\n            PatArchive patArchive = new PatArchive();\r\n            patArchive.setPatientno(patMedOuthosp1.getPatno());\r\n            List<PatArchive> patArchives = chMapper.selectPatArchiveList(patArchive);\r\n\r\n            //鏍规嵁patno鍒ゆ柇鏈湴鎮h�呭熀鏈俊鎭槸鍚﹀瓨鍦╘r\n            PatArchive pa = new PatArchive();\r\n            pa.setPatientno(patMedOuthosp1.getPatno());\r\n            List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa);\r\n            if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                patMedOuthosp1.setPatid(patArchives1.get(0).getId());\r\n            } else {\r\n                if (CollectionUtils.isEmpty(patArchives)) {\r\n                    continue;\r\n                }\r\n                patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n                patMedOuthosp1.setPatid(patArchives.get(0).getId());\r\n            }\r\n            i = patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp1);\r\n        }\r\n\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectIcd10List(Icd10 icd10) {\r\n        List<Icd10> icd10s = chMapper.selectIcd10List(icd10);\r\n        log.info(\"selectIcd10List鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", icd10s.size());\r\n        int size = 0;\r\n        if (icd10s.size() > 500) {\r\n            int i = icd10s.size() / 500;\r\n            for (int a = 0; a < i + 1; a++) {\r\n                if (a >= 0 && a < i) {\r\n                    List<Icd10> icd10Temp = icd10s.subList(a * 500, (a + 1) * 500);\r\n                    size += icd10Mapper.batchIcd10(icd10Temp);\r\n                } else {\r\n                    List<Icd10> icd10Temp = icd10s.subList(i * 500, icd10s.size());\r\n                    if (icd10Temp != null && icd10Temp.size() != 0) {\r\n                        size += icd10Mapper.batchIcd10(icd10Temp);\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            size += icd10Mapper.batchIcd10(icd10s);\r\n        }\r\n        return size;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectUserList(SysUser sysUser) {\r\n        List<SysUser> sysUserList = chMapper.selectUserList(sysUser);\r\n        SysUser suerTemp=new SysUser();\r\n        List<SysUserDept> sysUserDeptAll = chMapper.yhyksxx(suerTemp);\r\n        log.info(\"sysUserList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", sysUserList.size());\r\n        int i =0;// sysUser2Mapper.batchUser(sysUserList);\r\n        for (SysUser sysUser1 : sysUserList) {\r\n//            log.info(\"sysUser1鐨処D涓猴細{}\", sysUser1.getUserId());\r\n//            log.info(\"sysUser1鐨凥ISUSERID涓猴細{}\", sysUser1.getHisUserId());\r\n            if (StringUtils.isEmpty(sysUser1.getHisUserId())) continue;\r\n            SysUser suTemp = new SysUser();\r\n            suTemp.setHisUserId(sysUser1.getHisUserId());\r\n            List<SysUser> usersTemp = sysUser2Mapper.selectUserList(suTemp);\r\n            if (usersTemp.size() > 0) {\r\n                sysUser1.setUserId(usersTemp.get(0).getUserId());\r\n                sysUser1.setUserName(sysUser1.getHisUserId());\r\n                sysUser2Mapper.updateUser(sysUser1);\r\n            } else {\r\n                sysUser1.setUserName(sysUser1.getHisUserId());\r\n                sysUser2Mapper.insertUser(sysUser1);\r\n                usersTemp = sysUser2Mapper.selectUserList(suTemp);\r\n            }\r\n\r\n            //鏂板鐢ㄦ埛涓庨儴闂╘r\n            //List<SysUserDept> sysUserDept = chMapper.yhyksxx(sysUser1);\r\n            List<SysUserDept> sysUserDept = sysUserDeptAll.stream()\r\n                    .filter((SysUserDept b) -> b.getUserCode().equals(sysUser1.getHisUserId()))\r\n                    .collect(Collectors.toList());\r\n\r\n            for (SysUserDept sud : sysUserDept) {\r\n                if (usersTemp.size() > 0) {\r\n                    sud.setUserId(usersTemp.get(0).getUserId());\r\n                    SysDept sysDeptTemp = sysDept2Mapper.selectDeptByCode(sud.getDeptCode());\r\n                    if (sysDeptTemp != null)\r\n                        sud.setDeptId(sysDeptTemp.getDeptId());\r\n                    sysUserDeptMapper.insertSysUserDept(sud);\r\n                }\r\n            }\r\n        }\r\n\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectDeptList(SysDept dept) {\r\n        List<SysDept> sysDepts = chMapper.selectDeptList(dept);\r\n        log.info(\"selectDeptList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", sysDepts.size());\r\n        int i = sysDept2Mapper.batchDept(sysDepts);\r\n        return i;\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
---- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java	(date 1758682819306)
-@@ -415,34 +415,31 @@
- //            log.info("sysUser1鐨処D涓猴細{}", sysUser1.getUserId());
- //            log.info("sysUser1鐨凥ISUSERID涓猴細{}", sysUser1.getHisUserId());
-             if (StringUtils.isEmpty(sysUser1.getHisUserId())) continue;
--            SysUser suTemp = new SysUser();
-+            SysUser suTemp=new SysUser();
-             suTemp.setHisUserId(sysUser1.getHisUserId());
--            List<SysUser> usersTemp = sysUser2Mapper.selectUserList(suTemp);
--            if (usersTemp.size() > 0) {
-+            List<SysUser> usersTemp= sysUser2Mapper.selectUserList(suTemp);
-+            if (usersTemp.size()>0) {
-                 sysUser1.setUserId(usersTemp.get(0).getUserId());
-                 sysUser1.setUserName(sysUser1.getHisUserId());
-                 sysUser2Mapper.updateUser(sysUser1);
--            } else {
-+            }else{
-                 sysUser1.setUserName(sysUser1.getHisUserId());
-                 sysUser2Mapper.insertUser(sysUser1);
--                usersTemp = sysUser2Mapper.selectUserList(suTemp);
-+                usersTemp= sysUser2Mapper.selectUserList(suTemp);
-             }
- 
-             //鏂板鐢ㄦ埛涓庨儴闂�
-             //List<SysUserDept> sysUserDept = chMapper.yhyksxx(sysUser1);
--            List<SysUserDept> sysUserDept = sysUserDeptAll.stream()
-+            List<SysUserDept> sysUserDept=sysUserDeptAll.stream()
-                     .filter((SysUserDept b) -> b.getUserCode().equals(sysUser1.getHisUserId()))
-                     .collect(Collectors.toList());
- 
--            for (SysUserDept sud : sysUserDept) {
--                if (usersTemp.size() > 0) {
--                    sud.setUserId(usersTemp.get(0).getUserId());
--                    SysDept sysDeptTemp = sysDept2Mapper.selectDeptByCode(sud.getDeptCode());
--                    if (sysDeptTemp != null)
--                        sud.setDeptId(sysDeptTemp.getDeptId());
--                    sysUserDeptMapper.insertSysUserDept(sud);
--                }
--            }
-+                for (SysUserDept sud : sysUserDept) {
-+                    if (usersTemp.size() > 0) {
-+                        sud.setUserId(usersTemp.get(0).getUserId());
-+                        sysUserDeptMapper.insertSysUserDept(sud);
-+                    }
-+                }
-         }
- 
-         return i;
-@@ -456,4 +453,33 @@
-         return i;
-     }
- 
-+
-+    /**
-+     * 妫�鏌ュ苟鎵ц鍒嗚〃鐨勬牳蹇冩柟娉�
-+     *
-+     * @param tableName 瑕佹鏌ョ殑琛ㄥ悕
-+     */
-+    private synchronized void checkAndShard(String tableName) {
-+        long currentCount = shardingMapper.getTableCount(tableName);
-+
-+        if (currentCount >= SHARDING_THRESHOLD) {
-+            log.warn("琛� '{}' 宸茶揪鍒板垎琛ㄩ槇鍊� {}锛屽噯澶囨墽琛屽垎琛ㄦ搷浣�...", tableName, SHARDING_THRESHOLD);
-+
-+            String newTableName = tableName + "_" + java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyy_MM"));
-+            Long maxId = shardingMapper.getMaxId(tableName);
-+            if (maxId == null) maxId = 0L;
-+
-+            shardingMapper.renameTable(tableName, newTableName);
-+            log.info("宸插皢琛� '{}' 閲嶅懡鍚嶄负 '{}'", tableName, newTableName);
-+
-+            shardingMapper.createLikeTable(tableName, newTableName);
-+            log.info("宸插垱寤烘柊琛� '{}'", tableName);
-+
-+            shardingMapper.setAutoIncrement(tableName, maxId + 1);
-+            log.info("宸茶缃柊琛� '{}' 鐨勮嚜澧濱D璧峰鍊间负 {}", tableName, maxId + 1);
-+
-+            log.info("琛� '{}' 鐨勫垎琛ㄦ搷浣滃畬鎴愶紒", tableName);
-+        }
-+    }
-+
- }
-Index: smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.PatMedOuthospMapper\">\r\n\r\n    <resultMap type=\"com.smartor.domain.PatMedOuthosp\" id=\"PatMedOuthospResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"serialnum\" column=\"serialnum\"/>\r\n        <result property=\"fuflag\" column=\"fuflag\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"hospitalname\" column=\"hospitalname\"/>\r\n        <result property=\"hospitalcode\" column=\"hospitalcode\"/>\r\n        <result property=\"icd10code\" column=\"icd10code\"/>\r\n        <result property=\"diagname\" column=\"diagname\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"deptname\" column=\"deptname\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"admitdate\" column=\"admitdate\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"schemestatus\" column=\"schemestatus\"/>\r\n        <result property=\"deptid\" column=\"deptid\"/>\r\n        <result property=\"schemetime\" column=\"schemetime\"/>\r\n        <result property=\"hpi\" column=\"hpi\"/>\r\n        <result property=\"mainsuit\" column=\"mainsuit\"/>\r\n        <result property=\"outhospno\" column=\"outhospno\"/>\r\n        <result property=\"patname\" column=\"patname\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"patno\" column=\"patno\"/>\r\n        <result property=\"diagcheckFlag\" column=\"diagcheck_flag\"/>\r\n        <result property=\"idcardno\" column=\"idcardno\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"fudate\" column=\"fudate\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectPatMedOuthospVo\">\r\n        select id,\r\n               outhospno,\r\n               diagcheck_flag,\r\n               patno,\r\n               remark,\r\n               fudate,\r\n               fuflag,\r\n               serialnum,\r\n               patid,\r\n               hospitalname,\r\n               hospitalcode,\r\n               icd10code,\r\n               diagname,\r\n               deptcode,\r\n               deptname,\r\n               drcode,\r\n               drname,\r\n               admitdate,\r\n               orgid,\r\n               del_flag,\r\n               guid,\r\n               update_by,\r\n               update_time,\r\n               create_by,\r\n               create_time,\r\n               isupload,\r\n               upload_time,\r\n               schemestatus,\r\n               deptid,\r\n               schemetime,\r\n               hpi,\r\n               patname,\r\n               mainsuit\r\n        from pat_med_outhosp\r\n    </sql>\r\n\r\n    <select id=\"selectPatMedOuthospList\" parameterType=\"com.smartor.domain.PatMedOuthosp\"\r\n            resultMap=\"PatMedOuthospResult\">\r\n        select\r\n        pmo.id,\r\n        pmo.remark,\r\n        pmo.fudate,\r\n        pmo.outhospno,\r\n        pmo.diagcheck_flag,\r\n        pmo.patno,\r\n        pmo.serialnum,\r\n        pmo.patid,\r\n        pmo.hospitalname,\r\n        pmo.hospitalcode,\r\n        pmo.icd10code,\r\n        pmo.diagname,\r\n        pmo.deptcode,\r\n        pmo.deptname,\r\n        pmo.drcode,\r\n        pmo.drname,\r\n        pmo.admitdate,\r\n        pmo.orgid,\r\n        pmo.del_flag,\r\n        pmo.guid,\r\n        pmo.update_by,\r\n        pmo.update_time,\r\n        pmo.create_by,\r\n        pmo.create_time,\r\n        pmo.isupload,\r\n        pmo.upload_time,\r\n        pmo.schemestatus,\r\n        pmo.deptid,\r\n        pmo.schemetime,\r\n        pmo.hpi,\r\n        pmo.fuflag,\r\n        pmo.patname,\r\n        pmo.mainsuit\r\n        from pat_med_outhosp pmo\r\n        <where>\r\n            pmo.del_flag=0\r\n            <if test=\"orgid != null \">and pmo.orgid = #{orgid}</if>\r\n            <if test=\"hospitalname != null  and hospitalname != ''\">and pmo.hospitalname like concat('%',\r\n                #{hospitalname},\r\n                '%')\r\n            </if>\r\n            <if test=\"deptname != null  and deptname != ''\">and pmo.deptname like concat('%', #{deptname}, '%')</if>\r\n            <if test=\"drname != null  and drname != ''\">and pmo.drname like concat('%', #{drname}, '%')</if>\r\n            <if test=\"patname != null  and patname != ''\">and pmo.patname like concat('%', #{patname}, '%')</if>\r\n            <if test=\"beginTime != null \">and date_format(pmo.admitdate,'%y%m%d') &gt;=\r\n                date_format(#{beginTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"endTime != null \">and date_format(pmo.admitdate,'%y%m%d') &lt;=\r\n                date_format(#{endTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"patid != null \">and pmo.patid = #{patid}</if>\r\n            <if test=\"fuflag != null \">and pmo.fuflag = #{fuflag}</if>\r\n            <if test=\"patno != null \">and pmo.patno = #{patno}</if>\r\n            <if test=\"outhospno != null  and outhospno != ''\">and pmo.outhospno = #{outhospno}</if>\r\n            <if test=\"diagcheckFlag != null  and diagcheckFlag != ''\">and pmo.diagcheck_flag = #{diagcheckFlag}</if>\r\n            <if test=\"diagname != null  and diagname != ''\">and pmo.diagname like concat('%',#{diagname}, '%')</if>\r\n        </where>\r\n        order by pmo.update_time desc\r\n    </select>\r\n\r\n    <select id=\"selectPatMedOuthospById\" parameterType=\"Long\" resultMap=\"PatMedOuthospResult\">\r\n        <include refid=\"selectPatMedOuthospVo\"/>\r\n        where id = #{id}\r\n    </select>\r\n\r\n    <insert id=\"insertPatMedOuthosp\" parameterType=\"com.smartor.domain.PatMedOuthosp\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"id\">\r\n        insert into pat_med_outhosp\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">serialnum,</if>\r\n            <if test=\"patid != null\">patid,</if>\r\n            <if test=\"hospitalname != null\">hospitalname,</if>\r\n            <if test=\"hospitalcode != null\">hospitalcode,</if>\r\n            <if test=\"icd10code != null\">icd10code,</if>\r\n            <if test=\"diagname != null\">diagname,</if>\r\n            <if test=\"deptcode != null\">deptcode,</if>\r\n            <if test=\"deptname != null\">deptname,</if>\r\n            <if test=\"drcode != null\">drcode,</if>\r\n            <if test=\"drname != null\">drname,</if>\r\n            <if test=\"admitdate != null\">admitdate,</if>\r\n            <if test=\"orgid != null\">orgid,</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag,</if>\r\n            <if test=\"updateBy != null\">update_by,</if>\r\n            <if test=\"updateTime != null\">update_time,</if>\r\n            <if test=\"createBy != null\">create_by,</if>\r\n            <if test=\"createTime != null\">create_time,</if>\r\n            <if test=\"isupload != null\">isupload,</if>\r\n            <if test=\"uploadTime != null\">upload_time,</if>\r\n            <if test=\"schemestatus != null\">schemestatus,</if>\r\n            <if test=\"deptid != null\">deptid,</if>\r\n            <if test=\"schemetime != null\">schemetime,</if>\r\n            <if test=\"hpi != null\">hpi,</if>\r\n            <if test=\"mainsuit != null\">mainsuit,</if>\r\n            <if test=\"outhospno != null\">outhospno,</if>\r\n            <if test=\"patname != null\">patname,</if>\r\n            <if test=\"guid != null\">guid,</if>\r\n            <if test=\"patno != null\">patno,</if>\r\n            <if test=\"diagcheckFlag != null\">diagcheck_flag,</if>\r\n            <if test=\"remark != null\">remark,</if>\r\n            <if test=\"fuflag != null\">fuflag,</if>\r\n            <if test=\"fudate != null\">fudate,</if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">#{serialnum},</if>\r\n            <if test=\"patid != null\">#{patid},</if>\r\n            <if test=\"hospitalname != null\">#{hospitalname},</if>\r\n            <if test=\"hospitalcode != null\">#{hospitalcode},</if>\r\n            <if test=\"icd10code != null\">#{icd10code},</if>\r\n            <if test=\"diagname != null\">#{diagname},</if>\r\n            <if test=\"deptcode != null\">#{deptcode},</if>\r\n            <if test=\"deptname != null\">#{deptname},</if>\r\n            <if test=\"drcode != null\">#{drcode},</if>\r\n            <if test=\"drname != null\">#{drname},</if>\r\n            <if test=\"admitdate != null\">#{admitdate},</if>\r\n            <if test=\"orgid != null\">#{orgid},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">#{delFlag},</if>\r\n            <if test=\"updateBy != null\">#{updateBy},</if>\r\n            <if test=\"updateTime != null\">#{updateTime},</if>\r\n            <if test=\"createBy != null\">#{createBy},</if>\r\n            <if test=\"createTime != null\">#{createTime},</if>\r\n            <if test=\"isupload != null\">#{isupload},</if>\r\n            <if test=\"uploadTime != null\">#{uploadTime},</if>\r\n            <if test=\"schemestatus != null\">#{schemestatus},</if>\r\n            <if test=\"deptid != null\">#{deptid},</if>\r\n            <if test=\"schemetime != null\">#{schemetime},</if>\r\n            <if test=\"hpi != null\">#{hpi},</if>\r\n            <if test=\"mainsuit != null\">#{mainsuit},</if>\r\n            <if test=\"outhospno != null\">#{outhospno},</if>\r\n            <if test=\"patname != null\">#{patname},</if>\r\n            <if test=\"guid != null\">#{guid},</if>\r\n            <if test=\"patno != null\">#{patno},</if>\r\n            <if test=\"diagcheckFlag != null\">#{diagcheckFlag},</if>\r\n            <if test=\"remark != null\">#{remark},</if>\r\n            <if test=\"fuflag != null\">#{fuflag},</if>\r\n            <if test=\"fudate != null\">#{fudate},</if>\r\n        </trim>\r\n    </insert>\r\n\r\n    <insert id=\"batchPatMedOuthosp\">\r\n        insert into pat_med_outhosp\r\n        (\r\n        serialnum,\r\n        patid,\r\n        hospitalname,\r\n        hospitalcode,\r\n        icd10code,\r\n        diagname,\r\n        deptcode,\r\n        deptname,\r\n        drcode,\r\n        drname,\r\n        admitdate,\r\n        orgid,\r\n        del_flag,\r\n        update_by,\r\n        update_time,\r\n        create_by,\r\n        create_time,\r\n        isupload,\r\n        upload_time,\r\n        schemestatus,\r\n        deptid,\r\n        schemetime,\r\n        hpi,\r\n        mainsuit,\r\n        outhospno,\r\n        patname,\r\n        guid,\r\n        patno,\r\n        diagcheck_flag,\r\n        fuflag,\r\n        fudate,\r\n        remark)\r\n        values\r\n        <foreach collection=\"list\" item=\"item\" separator=\",\">\r\n            (\r\n            #{item.serialnum},\r\n            #{item.patid},\r\n            #{item.hospitalname},\r\n            #{item.hospitalcode},\r\n            #{item.icd10code},\r\n            #{item.diagname},\r\n            #{item.deptcode},\r\n            #{item.deptname},\r\n            #{item.drcode},\r\n            #{item.drname},\r\n            #{item.admitdate},\r\n            #{item.orgid},\r\n            #{item.delFlag},\r\n            #{item.updateBy},\r\n            #{item.updateTime},\r\n            #{item.createBy},\r\n            #{item.createTime},\r\n            #{item.isupload},\r\n            #{item.uploadTime},\r\n            #{item.schemestatus},\r\n            #{item.deptid},\r\n            #{item.schemetime},\r\n            #{item.hpi},\r\n            #{item.mainsuit},\r\n            #{item.outhospno},\r\n            #{item.patname},\r\n            #{item.guid},\r\n            #{item.patno},\r\n            #{item.diagcheckFlag},\r\n            #{item.fuflag},\r\n            #{item.fudate},\r\n            #{item.remark}\r\n            )\r\n        </foreach>\r\n    </insert>\r\n\r\n\r\n    <update id=\"updatePatMedOuthosp\" parameterType=\"com.smartor.domain.PatMedOuthosp\">\r\n        update pat_med_outhosp\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">serialnum = #{serialnum},</if>\r\n            <if test=\"patid != null\">patid = #{patid},</if>\r\n            <if test=\"hospitalname != null\">hospitalname = #{hospitalname},</if>\r\n            <if test=\"hospitalcode != null\">hospitalcode = #{hospitalcode},</if>\r\n            <if test=\"icd10code != null\">icd10code = #{icd10code},</if>\r\n            <if test=\"diagname != null\">diagname = #{diagname},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"deptname != null\">deptname = #{deptname},</if>\r\n            <if test=\"drcode != null\">drcode = #{drcode},</if>\r\n            <if test=\"drname != null\">drname = #{drname},</if>\r\n            <if test=\"admitdate != null\">admitdate = #{admitdate},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag = #{delFlag},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"schemestatus != null\">schemestatus = #{schemestatus},</if>\r\n            <if test=\"deptid != null\">deptid = #{deptid},</if>\r\n            <if test=\"schemetime != null\">schemetime = #{schemetime},</if>\r\n            <if test=\"hpi != null\">hpi = #{hpi},</if>\r\n            <if test=\"mainsuit != null\">mainsuit = #{mainsuit},</if>\r\n            <if test=\"outhospno != null\">outhospno = #{outhospno},</if>\r\n            <if test=\"patname != null\">patname = #{patname},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"patno != null\">patno = #{patno},</if>\r\n            <if test=\"diagcheckFlag != null\">diagcheck_flag = #{diagcheckFlag},</if>\r\n            <if test=\"remark != null\">remark = #{remark},</if>\r\n            <if test=\"fuflag != null\">fuflag = #{fuflag},</if>\r\n            <if test=\"fudate != null\">fudate = #{fudate},</if>\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <delete id=\"deletePatMedOuthospById\" parameterType=\"Long\">\r\n        delete\r\n        from pat_med_outhosp\r\n        where id = #{id}\r\n    </delete>\r\n\r\n    <delete id=\"deletePatMedOuthospByIds\" parameterType=\"String\">\r\n        delete from pat_med_outhosp where id in\r\n        <foreach item=\"id\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{id}\r\n        </foreach>\r\n    </delete>\r\n\r\n    <select id=\"selectPatMedOuthospCount\" parameterType=\"com.smartor.domain.PatMedReq\"\r\n            resultType=\"com.smartor.domain.PatMedRes\">\r\n        SELECT SUM( rs ) AS rs,\r\n        SUM( rc ) AS rc\r\n        FROM (\r\n        SELECT\r\n        COUNT(id) AS rc,\r\n        0 AS rs\r\n        FROM\r\n        pat_med_outhosp\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"orgid != null\">\r\n                and orgid = #{orgid}\r\n            </if>\r\n            and date_format(admitdate,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n            and date_format(admitdate,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n            <if test=\"deptcodeList != null and deptcodeList.size()>0\">\r\n                and deptcode in\r\n                <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        union all\r\n        select\r\n        0 AS rc,\r\n        count(1) AS rs\r\n        FROM\r\n        service_subtask\r\n        <where>\r\n            del_flag = 0\r\n            and service_type=3\r\n            <if test=\"orgid != null\">\r\n                and orgid = #{orgid}\r\n            </if>\r\n            <if test=\"startDate != null\">\r\n                AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )\r\n            </if>\r\n            <if test=\"endDate != null\">\r\n                AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')\r\n            </if>\r\n            <if test=\"deptcodeList != null and deptcodeList.size()>0\">\r\n                and deptcode in\r\n                <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        ) AS combined_data\r\n    </select>\r\n\r\n    <select id=\"getDeptRanking\" parameterType=\"com.smartor.domain.PatMedReq\" resultType=\"com.smartor.domain.PatMedRes\">\r\n        SELECT deptname, COUNT(1) AS rc\r\n        FROM pat_med_outhosp\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"inhospstate != inhospstate\">\r\n                and inhospstate= #{inhospstate}\r\n            </if>\r\n            <if test=\"deptcodeList != null and deptcodeList.size()>0\">\r\n                and deptcode in\r\n                <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <!-- PatMedOuthospMapper.xml -->\r\n    <select id=\"countPatMedOuthosp\" resultType=\"int\">\r\n        SELECT COUNT(*)\r\n        FROM pat_med_outhosp\r\n    </select>\r\n\r\n    <update id=\"renameTable\">\r\n        RENAME\r\n        TABLE\r\n        ${oldName}\r\n        TO\r\n        ${newName}\r\n    </update>\r\n\r\n    <update id=\"createPatMedOuthosp\">\r\n        CREATE TABLE ${newName} LIKE ${templateName}\r\n    </update>\r\n\r\n    <update id=\"createPatMedOuthospAutoAdd\">\r\n        ALTER TABLE ${newName} MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT;\r\n    </update>\r\n\r\n    <update id=\"setAutoIncrement\">\r\n        ALTER TABLE ${tableName} AUTO_INCREMENT = #{autoInc}\r\n    </update>\r\n\r\n    <select id=\"getAllOuthospTableNames\" resultType=\"String\">\r\n        SELECT table_name\r\n        FROM information_schema.tables\r\n        WHERE table_schema = DATABASE()\r\n          AND table_name LIKE 'pat_med_outhosp%'\r\n    </select>\r\n\r\n    <select id=\"getMaxIdFromTable\" resultType=\"Long\">\r\n        SELECT IFNULL(MAX(id), 0)\r\n        FROM ${tableName}\r\n    </select>\r\n\r\n    <update id=\"createOrReplaceView\">\r\n        ${viewSql}\r\n    </update>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml	(date 1758682819407)
-@@ -122,6 +122,15 @@
-                 #{hospitalname},
-                 '%')
-             </if>
-+            <if test="deptcodes != null and deptcodes.size()>0">
-+                AND  pmo.deptcode IN
-+                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
-+                         close=")">
-+                    #{deptcode}
-+                </foreach>
-+            </if>
-+
-+
-             <if test="deptname != null  and deptname != ''">and pmo.deptname like concat('%', #{deptname}, '%')</if>
-             <if test="drname != null  and drname != ''">and pmo.drname like concat('%', #{drname}, '%')</if>
-             <if test="patname != null  and patname != ''">and pmo.patname like concat('%', #{patname}, '%')</if>
-Index: smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport java.util.*;\r\n\r\nimport com.fasterxml.jackson.core.JsonProcessingException;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.http.HttpUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.apache.commons.lang3.StringUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.*;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.scheduling.annotation.Async;\r\nimport org.springframework.stereotype.Service;\r\nimport com.smartor.service.IServiceTaskService;\r\nimport org.springframework.transaction.annotation.Transactional;\r\n\r\n/**\r\n * 璇煶浠诲姟Service涓氬姟灞傚鐞哱r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@Slf4j\r\n@Service\r\npublic class ServiceTaskServiceImpl implements IServiceTaskService {\r\n    @Autowired\r\n    private ServiceTaskMapper serviceTaskMapper;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private ServiceTaskdeptMapper serviceTaskdeptMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveImportMapper patArchiveImportMapper;\r\n\r\n\r\n    @Autowired\r\n    private SvyTaskTemplateMapper svyTaskTemplateMapper;\r\n\r\n    @Autowired\r\n    private HeLibraryMapper heLibraryMapper;\r\n\r\n    @Autowired\r\n    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;\r\n\r\n    @Autowired\r\n    private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n\r\n\r\n    @Autowired\r\n    private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetOptionMapper;\r\n\r\n    @Autowired\r\n    private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    /**\r\n     * 鏌ヨ璇煶浠诲姟\r\n     *\r\n     * @param taskid 璇煶浠诲姟涓婚敭\r\n     * @return 璇煶浠诲姟\r\n     */\r\n    @Override\r\n    public ServiceTask selectServiceTaskByTaskid(Long taskid) {\r\n        return serviceTaskMapper.selectServiceTaskByTaskid(taskid);\r\n    }\r\n\r\n    @Override\r\n    public List<ServiceTask> selectServiceTaskAndtaskDeptList(ServiceTask serviceTask) {\r\n        //濡傛灉涓�0涓嶇疆绌猴紝浼氬奖鍝嶅埌鎴戠殑鏌ヨ\r\n        if (CollectionUtils.isEmpty(serviceTask.getLeaveldeptcodes()) || serviceTask.getLeaveldeptcodes().size() == 0)\r\n            serviceTask.setLeaveldeptcodes(new ArrayList<>());\r\n        if (!CollectionUtils.isEmpty(serviceTask.getLeavehospitaldistrictcodes()) && serviceTask.getLeavehospitaldistrictcodes().size() > 0) {\r\n            List<String> leaveldeptcodes = serviceTask.getLeaveldeptcodes();\r\n            leaveldeptcodes.addAll(serviceTask.getLeavehospitaldistrictcodes());\r\n            serviceTask.setLeaveldeptcodes(leaveldeptcodes);\r\n        }\r\n        return serviceTaskMapper.selectServiceTaskAndtaskDeptList(serviceTask);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ璇煶浠诲姟鍒楄〃\r\n     *\r\n     * @param serviceTask 璇煶浠诲姟\r\n     * @return 璇煶浠诲姟\r\n     */\r\n    @Override\r\n\r\n    public List<ServiceTask> selectServiceTaskList(ServiceTask serviceTask) {\r\n        //濡傛灉涓�0涓嶇疆绌猴紝浼氬奖鍝嶅埌鎴戠殑鏌ヨ\r\n        if (CollectionUtils.isEmpty(serviceTask.getLeaveldeptcodes()) || serviceTask.getLeaveldeptcodes().size() == 0)\r\n            serviceTask.setLeaveldeptcodes(null);\r\n        if (CollectionUtils.isEmpty(serviceTask.getLeavehospitaldistrictcodes()) || serviceTask.getLeavehospitaldistrictcodes().size() == 0)\r\n            serviceTask.setLeavehospitaldistrictcodes(null);\r\n        return serviceTaskMapper.selectServiceTaskList(serviceTask);\r\n    }\r\n\r\n    /**\r\n     * 鏂板璇煶浠诲姟\r\n     *\r\n     * @param serviceTask 璇煶浠诲姟\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertServiceTask(ServiceTask serviceTask) {\r\n        serviceTask.setCreateTime(DateUtils.getNowDate());\r\n        serviceTask.setUpdateTime(DateUtils.getNowDate());\r\n        return serviceTaskMapper.insertServiceTask(serviceTask);\r\n    }\r\n\r\n    /**\r\n     * 淇敼璇煶浠诲姟\r\n     *\r\n     * @param serviceTask 璇煶浠诲姟\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateServiceTask(ServiceTask serviceTask) {\r\n        serviceTask.setUpdateTime(DateUtils.getNowDate());\r\n        return serviceTaskMapper.updateServiceTask(serviceTask);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎璇煶浠诲姟\r\n     *\r\n     * @param taskids 闇�瑕佸垹闄ょ殑璇煶浠诲姟涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteServiceTaskByTaskids(Long[] taskids) {\r\n        return serviceTaskMapper.deleteServiceTaskByTaskids(taskids);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎璇煶浠诲姟淇℃伅\r\n     *\r\n     * @param taskid 璇煶浠诲姟涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Transactional(rollbackFor = Exception.class)\r\n    @Override\r\n    public Boolean deleteServiceTaskByTaskid(Long taskid) {\r\n        ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n        serviceSubtask.setTaskid(taskid);\r\n\r\n        //鏌ヨ瀛愪换鍔r\n        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);\r\n        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n        for (ServiceSubtask ss : serviceSubtaskList) {\r\n            log.error(\"sfSend闇�瑕佺Щ闄ょ殑subId涓猴細{}\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-exist\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-0\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-1\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-2\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-3\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-4\", ss.getId().toString());\r\n        }\r\n\r\n        serviceSubtask.setDelFlag(\"1\");\r\n        Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtaskByPatId(serviceSubtask);\r\n\r\n        //鍏宠仈琛ㄥ垹闄r\n        ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n        serviceTaskdept.setTaskId(taskid);\r\n        int i = serviceTaskdeptMapper.deleteServiceTaskdeptByTaskId(serviceTaskdept);\r\n\r\n        Boolean isSuccess = false;\r\n        if (!aBoolean || i <= 0) {\r\n            new BaseException(\"浠诲姟鍒犻櫎澶辫触\");\r\n        }\r\n        isSuccess = serviceTaskMapper.deleteServiceTaskByTaskid(taskid);\r\n        return isSuccess;\r\n    }\r\n\r\n\r\n    /**\r\n     * 鑾峰彇闅忚鍙婃椂鐜嘰r\n     *\r\n     * @param serviceSubtask\r\n     * @return\r\n     */\r\n    public Map<String, Object> selectTimelyRate(ServiceSubtask serviceSubtask) {\r\n        if (serviceSubtask.getEndtime() != null && new Date().before(serviceSubtask.getEndtime())) {\r\n            serviceSubtask.setEndtime(new Date());\r\n        }\r\n        Double dob = serviceSubtaskMapper.selectTimelyRate(serviceSubtask);\r\n        // 1. 鏌ヨ鍏ㄩ儴鏁版嵁锛圫QL涓嶅垎椤碉級\r\n        List<ServiceSubtask> allList = serviceSubtaskMapper.selectTimelyRateDetail(serviceSubtask);\r\n        // 2. Java浠g爜鍒嗛〉\r\n        int pageNum = serviceSubtask.getPn() != null ? serviceSubtask.getPn() : 1;\r\n        int pageSize = serviceSubtask.getPs() != null ? serviceSubtask.getPs() : 10;\r\n        int fromIndex = (pageNum - 1) * pageSize;\r\n        int toIndex = Math.min(fromIndex + pageSize, allList.size());\r\n        List<ServiceSubtask> pageList = new ArrayList<>();\r\n        if (fromIndex < allList.size()) {\r\n            pageList = allList.subList(fromIndex, toIndex);\r\n        }\r\n        log.info(\"浠g爜鍒嗛〉鍙傛暟: pageNum={}, pageSize={}, fromIndex={}, toIndex={}, total={}\", pageNum, pageSize, fromIndex, toIndex, allList.size());\r\n        Map<String, Object> map = new HashMap<>();\r\n        map.put(\"rate\", dob);\r\n        map.put(\"detail\", pageList);\r\n        map.put(\"total\", allList.size()); // 鍙�夛細杩斿洖鎬绘暟\r\n        return map;\r\n    }\r\n\r\n    @Override\r\n    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom) {\r\n        Map<String, Object> map = new HashMap<>();\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setPatid(patid);\r\n        serviceSubtaskVO.setTaskid(taskid);\r\n//        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n//        //鏌ヨ鎮h�呮槸鍚﹂噸瑕嗗仛棰榎r\n//        if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {\r\n//            Long submit = selectServiceSubtaskList.get(0).getSubmit();\r\n//            if (submit == 1L) {\r\n//                map.put(\"submit\", \"1\");\r\n//                return map;\r\n//            }\r\n//        }\r\n        //閫氳繃浠诲姟ID鑾峰彇妯℃澘ID\r\n        ServiceTask serviceTask = selectServiceTaskByTaskid(taskid);\r\n        List info = new ArrayList();\r\n        if (serviceTask.getType().equals(\"1\")) {\r\n            //闅忚\r\n            log.error(\"鏂囨湰闅忚闂\");\r\n            info = sfInfo(serviceTask, patid, patfrom);\r\n        } else if (serviceTask.getType().equals(\"2\")) {\r\n            //闂嵎\r\n            log.error(\"鏂囨湰闂嵎闂\");\r\n            info = wjInfo(serviceTask, patid, isFinish, patfrom);\r\n        } else {\r\n            //瀹f暀\r\n            info = xjInfo(Long.valueOf(serviceTask.getLibtemplateid()), taskid, patid, isFinish);\r\n            //鍙鎵撳紑浜嗛〉闈紝灏辩畻鎴愬姛\r\n            if (isFinish) {\r\n                ServiceSubtask ss = new ServiceSubtask();\r\n                ss.setTaskid(taskid);\r\n                ss.setPatid(patid);\r\n                Integer integer = serviceSubtaskMapper.selectSendstateByCondition(ss);\r\n                if (integer != null && integer != 6) {\r\n                    ss.setSendstate(1L);\r\n//                    ss.setResult(\"success\");\r\n//                    ss.setFinishtime(new Date());\r\n                    serviceSubtaskMapper.updateServiceSubtaskByCondition(ss);\r\n                }\r\n            }\r\n        }\r\n\r\n        SvyTaskTemplate svyTaskTemplate = svyTaskTemplateMapper.selectSvyTaskTemplateBySvyid(serviceTask.getTemplateid());\r\n        if (StringUtils.isNotEmpty(serviceTask.getKcb())) map.put(\"kcb\", serviceTask.getKcb());\r\n        map.put(\"script\", info);\r\n        if (StringUtils.isNotEmpty(serviceTask.getJsy())) map.put(\"jsy\", serviceTask.getJsy());\r\n        map.put(\"type\", serviceTask.getType());\r\n        map.put(\"taskName\", serviceTask.getTaskName());\r\n        map.put(\"submit\", \"0\");\r\n        return map;\r\n    }\r\n\r\n    /**\r\n     * 闅忚淇℃伅\r\n     *\r\n     * @param serviceTask\r\n     * @param patid\r\n     * @return\r\n     */\r\n    public List sfInfo(ServiceTask serviceTask, Long patid, String patfrom) {\r\n        //閫氳繃妯℃澘ID鑾峰彇闂淇℃伅\r\n        IvrLibaTemplateScript ivrLibaTemplateScript = new IvrLibaTemplateScript();\r\n        ivrLibaTemplateScript.setTemplateid(Long.valueOf(serviceTask.getLibtemplateid()));\r\n        ivrLibaTemplateScript.setDelFlag(\"0\");\r\n        List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);\r\n        if (CollectionUtils.isEmpty(ivrLibaTemplateScripts) || ivrLibaTemplateScripts.size() == 0) {\r\n            log.info(\"ivrLibaTemplateScripts涓虹┖浜嗭紝璇峰敖蹇仈绯荤鐞嗗憳澶勭悊\");\r\n            return new ArrayList<>();\r\n        }\r\n        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScripts, IvrLibaTemplateScriptVO.class);\r\n\r\n        //鑾峰彇鎮h�呬俊鎭痋r\n        PatArchive patArchive = null;\r\n        if (patfrom.equals(\"0\")) patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);\r\n        else if (patfrom.equals(\"1\")) {\r\n            PatArchiveImport patArchiveImport = patArchiveImportMapper.selectPatArchiveImportById(patid);\r\n            patArchive = DtoConversionUtils.sourceToTarget(patArchiveImport, PatArchive.class);\r\n        }\r\n\r\n        //閫氳繃鎮h�呬俊鎭拰浠诲姟淇℃伅涓殑textParam瀵归棶棰樹腑鐨勫彉閲忚繘琛屽~鍏匼r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        Map<String, Map<String, String>> serviceTaskMap = null;\r\n        try {\r\n            serviceTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);\r\n        } catch (JsonProcessingException e) {\r\n            e.printStackTrace();\r\n        }\r\n        List<Map<String, String>> mapList = new ArrayList<>();\r\n\r\n        for (Map<String, String> map : serviceTaskMap.values()) {\r\n            mapList.add(map);\r\n        }\r\n\r\n        //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹r\n        for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOS) {\r\n            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getScriptContent())) {\r\n                for (Map<String, String> map : mapList) {\r\n                    for (String key : map.keySet()) {\r\n\r\n                        ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : \"\"));\r\n                    }\r\n                }\r\n                //鏇挎崲鎮h�呬釜浜轰俊鎭暟鎹甛r\n                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace(\"${name}\", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : \"\"));\r\n                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace(\"${dzz}\", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : \"\"));\r\n                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace(\"${dhh}\", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : \"\"));\r\n\r\n                //鑾峰彇闂閫夐」\r\n                IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption = new IvrLibaTemplateTargetoption();\r\n                ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScriptVO.getId());\r\n                List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = ivrLibaTemplateTargetOptionMapper.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);\r\n                ivrLibaTemplateScriptVO.setIvrLibaScriptTargetoptionList(ivrLibaTemplateTargetoptions);\r\n            }\r\n        }\r\n        Collections.sort(ivrLibaTemplateScriptVOS, Comparator.comparingLong(IvrLibaTemplateScriptVO::getSort));\r\n\r\n        return ivrLibaTemplateScriptVOS;\r\n    }\r\n\r\n    /**\r\n     * 闂嵎淇℃伅\r\n     *\r\n     * @param serviceTask\r\n     * @param patid\r\n     * @return\r\n     */\r\n    private List wjInfo(ServiceTask serviceTask, Long patid, Boolean isFinish, String patfrom) {\r\n        //鐢ㄦ埛鐐瑰嚮浜嗗閾撅紝灏辩畻浠栭鍙栦簡\r\n        //杩欐牱鍋氫細鏈変竴涓棶棰橈紝濡傛灉鍥哄畾浠诲姟锛屼細鍑虹幇涓�涓换鍔¢噷锛屾湁澶氫釜璇ユ偅鑰匼r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskid(serviceTask.getTaskid());\r\n        serviceSubtaskVO.setPatid(patid);\r\n        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n        if (CollectionUtils.isNotEmpty(serviceSubtaskList) && serviceSubtaskList.size() == 1) {\r\n            if (serviceSubtaskList.get(0).getSendstate() == 3 && isFinish == true) {\r\n                ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n                serviceSubtask.setSendstate(1L);\r\n                serviceSubtask.setPatid(patid);\r\n                serviceSubtask.setTaskid(serviceTask.getTaskid());\r\n                serviceSubtaskMapper.updateServiceSubtaskByPatId(serviceSubtask);\r\n            }\r\n        }\r\n        //閫氳繃妯℃澘ID鑾峰彇闂淇℃伅\r\n        SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();\r\n        svyLibTemplateScript.setSvyid(Long.valueOf(serviceTask.getLibtemplateid()));\r\n        svyLibTemplateScript.setDelFlag(\"0\");\r\n        List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);\r\n        if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) {\r\n            log.info(\"ivrLibaTemplateScripts涓虹┖浜嗭紝璇峰敖蹇仈绯荤鐞嗗憳澶勭悊\");\r\n            return new ArrayList<>();\r\n        }\r\n        List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyLibTemplateScripts, SvyLibTemplateScriptVO.class);\r\n\r\n        //鑾峰彇鎮h�呬俊鎭痋r\n        PatArchive patArchive = null;\r\n        if (patfrom.equals(\"0\")) patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);\r\n        else if (patfrom.equals(\"1\")) {\r\n            PatArchiveImport patArchiveImport = patArchiveImportMapper.selectPatArchiveImportById(patid);\r\n            patArchive = DtoConversionUtils.sourceToTarget(patArchiveImport, PatArchive.class);\r\n        }\r\n\r\n\r\n        //閫氳繃鎮h�呬俊鎭拰浠诲姟淇℃伅涓殑textParam瀵归棶棰樹腑鐨勫彉閲忚繘琛屽~鍏匼r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        Map<String, Map<String, String>> ivrTaskMap = null;\r\n        try {\r\n            ivrTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);\r\n        } catch (JsonProcessingException e) {\r\n            e.printStackTrace();\r\n        }\r\n        List<Map<String, String>> mapList = new ArrayList<>();\r\n\r\n        for (Map<String, String> map : ivrTaskMap.values()) {\r\n            mapList.add(map);\r\n        }\r\n\r\n        //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹r\n        for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOS) {\r\n            if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent())) {\r\n                for (Map<String, String> map : mapList) {\r\n                    for (String key : map.keySet()) {\r\n\r\n                        svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : \"\"));\r\n                    }\r\n                }\r\n                //鏇挎崲鎮h�呬釜浜轰俊鎭暟鎹甛r\n                log.error(\"闂id锛歿},   闂鍐呭锛歿}\", svyLibTemplateScriptVO.getId(), svyLibTemplateScriptVO.getScriptContent());\r\n                if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent()) && ObjectUtils.isNotEmpty(patArchive)) {\r\n                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(\"${name}\", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : \"\"));\r\n                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(\"${dzz}\", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : \"\"));\r\n                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(\"${dhh}\", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : \"\"));\r\n                }\r\n                //鑾峰彇闂閫夐」\r\n                SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();\r\n                svyLibTemplateTargetoption.setScriptid(svyLibTemplateScriptVO.getId());\r\n                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);\r\n                svyLibTemplateScriptVO.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);\r\n            }\r\n        }\r\n        Collections.sort(svyLibTemplateScriptVOS, Comparator.comparingLong(SvyLibTemplateScriptVO::getSort));\r\n        return svyLibTemplateScriptVOS;\r\n    }\r\n\r\n    private List xjInfo(Long templateId, Long taskid, Long patid, Boolean isFinish) {\r\n        if (isFinish == true) {\r\n            ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n            serviceSubtask.setTaskid(taskid);\r\n            serviceSubtask.setPatid(patid);\r\n            Integer integer = serviceSubtaskMapper.selectSendstateByCondition(serviceSubtask);\r\n            if (integer == 3) {\r\n                serviceSubtask.setResult(\"瀹屾垚\");\r\n                serviceSubtask.setFinishtime(new Date());\r\n                serviceSubtask.setSendstate(6L);\r\n                serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);\r\n            }\r\n        }\r\n        HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(Long.valueOf(templateId));\r\n        List list = new ArrayList();\r\n        list.add(heLibrary);\r\n        return list;\r\n\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java	(date 1758701899065)
-@@ -45,7 +45,7 @@
- 
- 
-     @Autowired
--    private SvyTaskTemplateMapper svyTaskTemplateMapper;
-+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
- 
-     @Autowired
-     private HeLibraryMapper heLibraryMapper;
-@@ -59,6 +59,12 @@
-     @Autowired
-     private PatArchiveMapper patArchiveMapper;
- 
-+    @Autowired
-+    private PatMedInhospMapper patMedInhospMapper;
-+
-+    @Autowired
-+    private PatMedOuthospMapper patMedOuthospMapper;
-+
- 
-     @Autowired
-     private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetOptionMapper;
-@@ -224,7 +230,8 @@
-         ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-         serviceSubtaskVO.setPatid(patid);
-         serviceSubtaskVO.setTaskid(taskid);
--//        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-+        serviceSubtaskVO.setSendstate(3L);
-+        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
- //        //鏌ヨ鎮h�呮槸鍚﹂噸瑕嗗仛棰�
- //        if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {
- //            Long submit = selectServiceSubtaskList.get(0).getSubmit();
-@@ -255,14 +262,26 @@
-                 Integer integer = serviceSubtaskMapper.selectSendstateByCondition(ss);
-                 if (integer != null && integer != 6) {
-                     ss.setSendstate(1L);
--//                    ss.setResult("success");
--//                    ss.setFinishtime(new Date());
-                     serviceSubtaskMapper.updateServiceSubtaskByCondition(ss);
-                 }
-             }
-         }
- 
--        SvyTaskTemplate svyTaskTemplate = svyTaskTemplateMapper.selectSvyTaskTemplateBySvyid(serviceTask.getTemplateid());
-+        if (CollectionUtils.isNotEmpty(selectServiceSubtaskList)) {
-+            //灏嗗綋鍓嶆柟寮忕殑鍙戦�佺姸鎬佹敼鎴愬凡棰嗗彇
-+            ServiceSubtask serviceSubtask = selectServiceSubtaskList.get(0);
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setPreachform(serviceSubtask.getCurrentPreachform());
-+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+            serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
-+            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+            if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+                ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0);
-+                ssp.setSendstate("3");
-+                serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp);
-+            }
-+        }
-+
-         if (StringUtils.isNotEmpty(serviceTask.getKcb())) map.put("kcb", serviceTask.getKcb());
-         map.put("script", info);
-         if (StringUtils.isNotEmpty(serviceTask.getJsy())) map.put("jsy", serviceTask.getJsy());
-@@ -271,6 +290,95 @@
-         map.put("submit", "0");
-         return map;
-     }
-+
-+    @Override
-+    public Map<String, Object> getScriptByCondition(Long taskid, String zyserialnum, String mzserialnum, String tsserialnum) {
-+        //閫氳繃浠诲姟ID鑾峰彇妯℃澘ID
-+        ServiceTask serviceTask = selectServiceTaskByTaskid(taskid);
-+        //閫氳繃妯℃澘ID鑾峰彇闂淇℃伅
-+        SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
-+        svyLibTemplateScript.setSvyid(Long.valueOf(serviceTask.getLibtemplateid()));
-+        svyLibTemplateScript.setDelFlag("0");
-+        List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
-+        if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) {
-+            log.info("ivrLibaTemplateScripts涓虹┖浜嗭紝璇峰敖蹇仈绯荤鐞嗗憳澶勭悊");
-+            return null;
-+        }
-+        PatArchive patArchive = null;
-+        if (StringUtils.isNotEmpty(zyserialnum)) {
-+            PatMedInhospVO patMedInhospVO = new PatMedInhospVO();
-+            patMedInhospVO.setSerialnum(zyserialnum);
-+            List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospListByCondition(patMedInhospVO);
-+            if (CollectionUtils.isNotEmpty(patMedInhospList)) {
-+                patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhospList.get(0).getPatid());
-+            }
-+        } else if (StringUtils.isNotEmpty(mzserialnum)) {
-+            PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
-+            patMedOuthosp.setSerialnum(mzserialnum);
-+            List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.selectPatMedOuthospList(patMedOuthosp);
-+            if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
-+                patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosps.get(0).getPatid());
-+            }
-+        } else if (StringUtils.isNotEmpty(tsserialnum)) {
-+            PatArchive pa = new PatArchive();
-+            pa.setPatientno(tsserialnum);
-+            List<PatArchive> patArchives = patArchiveMapper.selectPatArchiveList(pa);
-+            if (CollectionUtils.isNotEmpty(patArchives)) patArchive = patArchives.get(0);
-+        }
-+
-+        //鍒ゆ柇涓�涓嬩粖澶╂槸鍚﹀凡缁忓仛杩囬锛屽仛杩囧氨涓嶈鍐嶅仛浜�
-+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-+        serviceSubtaskVO.setTaskid(taskid);
-+        serviceSubtaskVO.setPatid(patArchive.getId());
-+        serviceSubtaskVO.setVisitTime(new Date());
-+        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskList) && serviceSubtaskList.size() > 0) {
-+            Map<String, Object> map = new HashMap<>();
-+            map.put("result", "浠婃棩宸茬粡鍋氳繃婊℃剰搴﹁皟鏌� 锛屾棤闇�鍐嶉噸澶嶅仛绛旓紒");
-+            return map;
-+        }
-+
-+        List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyLibTemplateScripts, SvyLibTemplateScriptVO.class);
-+        //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹�
-+        ObjectMapper objectMapper = new ObjectMapper();
-+        Map<String, Map<String, String>> serviceTaskMap = null;
-+        try {
-+            serviceTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
-+        } catch (JsonProcessingException e) {
-+            e.printStackTrace();
-+        }
-+        List<Map<String, String>> mapList = new ArrayList<>();
-+
-+        for (Map<String, String> map : serviceTaskMap.values()) {
-+            mapList.add(map);
-+        }
-+        for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOS) {
-+            if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent())) {
-+                for (Map<String, String> map : mapList) {
-+                    for (String key : map.keySet()) {
-+
-+                        svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
-+                    }
-+                }
-+                //鏇挎崲鎮h�呬釜浜轰俊鎭暟鎹�
-+                log.error("闂id锛歿},   闂鍐呭锛歿}", svyLibTemplateScriptVO.getId(), svyLibTemplateScriptVO.getScriptContent());
-+                if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent()) && ObjectUtils.isNotEmpty(patArchive)) {
-+                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
-+                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
-+                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
-+                }
-+                //鑾峰彇闂閫夐」
-+                SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();
-+                svyLibTemplateTargetoption.setScriptid(svyLibTemplateScriptVO.getId());
-+                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
-+                svyLibTemplateScriptVO.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
-+            }
-+        }
-+        Map<String, Object> map = new HashMap<>();
-+        map.put("result", null);
-+        map.put("svyLibTemplateScriptVOS", svyLibTemplateScriptVOS);
-+        return map;
-+    }
- 
-     /**
-      * 闅忚淇℃伅
-Index: ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsRecordsServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.system.service.impl;\r\n\r\nimport java.io.IOException;\r\nimport java.sql.Date;\r\nimport java.time.LocalDate;\r\nimport java.util.Arrays;\r\nimport java.util.LinkedHashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport com.alibaba.fastjson2.JSONObject;\r\nimport com.fasterxml.jackson.core.JsonProcessingException;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.ruoyi.common.enums.MsgLSEnum;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.OkHttpExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.smartor.common.LSHospTokenUtil;\r\nimport com.smartor.domain.ServiceSubtask;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\nimport com.ruoyi.system.mapper.SmsRecordsMapper;\r\nimport com.ruoyi.system.domain.SmsRecords;\r\nimport com.ruoyi.system.service.ISmsRecordsService;\r\n\r\n/**\r\n * 鐭俊璁板綍Service涓氬姟灞傚鐞哱r\n *\r\n * @author smartor\r\n * @date 2023-03-06\r\n */\r\n@Slf4j\r\n@Service\r\npublic class SmsRecordsServiceImpl implements ISmsRecordsService {\r\n    @Autowired\r\n    private SmsRecordsMapper smsRecordsMapper;\r\n\r\n    @Autowired\r\n    private ISysConfigService iSysConfigService;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n    /**\r\n     * 鏌ヨ鐭俊璁板綍\r\n     *\r\n     * @param recordid 鐭俊璁板綍涓婚敭\r\n     * @return 鐭俊璁板綍\r\n     */\r\n    @Override\r\n    public SmsRecords selectSmsRecordsByRecordid(Long recordid) {\r\n        return smsRecordsMapper.selectSmsRecordsByRecordid(recordid);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鐭俊璁板綍鍒楄〃\r\n     *\r\n     * @param smsRecords 鐭俊璁板綍\r\n     * @return 鐭俊璁板綍\r\n     */\r\n    @Override\r\n    public List<SmsRecords> selectSmsRecordsList(SmsRecords smsRecords) {\r\n        return smsRecordsMapper.selectSmsRecordsList(smsRecords);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐭俊璁板綍\r\n     *\r\n     * @param smsRecords 鐭俊璁板綍\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertSmsRecords(SmsRecords smsRecords) {\r\n        smsRecords.setCreateTime(DateUtils.getNowDate());\r\n        return smsRecordsMapper.insertSmsRecords(smsRecords);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐭俊璁板綍\r\n     *\r\n     * @param smsRecords 鐭俊璁板綍\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public Boolean sendSmsRecords(SmsRecords smsRecords) {\r\n        //鑾峰彇閫氱煡鐭俊鎻愬墠\"鍑犲ぉ\"鍙戦�乗r\n        Integer days = 0;\r\n        String noticeSmsBeforeSend = iSysConfigService.selectConfigByKey(\"notice_sms_before_send\");\r\n        //鑾峰彇鍖婚櫌鏈烘瀯ID\r\n        String hospOrgid = iSysConfigService.selectConfigByKey(\"hosp_orgid\");\r\n        if (StringUtils.isNotEmpty(noticeSmsBeforeSend)) days = Integer.valueOf(noticeSmsBeforeSend);\r\n\r\n        //閫氳繃褰撳墠鏃ユ湡锛屽姞涓婃彁鍓嶇殑澶╂暟锛岃幏鍙栬\r\n        LocalDate newDate = LocalDate.now().plusDays(days);\r\n        Date date = Date.valueOf(newDate);\r\n        smsRecords.setVisitTime(date);\r\n\r\n        List<String> orgidList = null;\r\n        if (StringUtils.isNotEmpty(hospOrgid)) {\r\n            orgidList = Arrays.asList(hospOrgid.split(\",\"));\r\n            smsRecords.setOrgidList(orgidList);\r\n        }\r\n        List<SmsRecords> selectSmsRecordsList = smsRecordsMapper.selectSmsRecordsList(smsRecords);\r\n        for (SmsRecords record : selectSmsRecordsList) {\r\n            Boolean aBoolean = sendSMS(record.getOrgid(), record.getPhone(), record.getMsg());\r\n            ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n            serviceSubtask.setId(record.getSubId());\r\n            if (aBoolean) serviceSubtask.setVisitNotice(1);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n\r\n    public Boolean sendSMS(String orgid, String phone, String content) {\r\n        //涓芥按鐨勭煭淇″彂閫佹柟寮廫r\n        Boolean isSuccess = false;\r\n        try {\r\n            String url = configService.selectConfigByKey(\"token.360\",orgid);\r\n            Map<String, String> map = MsgLSEnum.getAddressByCode(orgid);\r\n            String token = LSHospTokenUtil.getToken(orgid,url);\r\n            log.info(\"銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}\", map.get(\"address\"), orgid);\r\n            String dxCode = getDXCode(map.get(\"address\"), phone, content, map.get(\"sendPersonId\"), map.get(\"sendPersonName\"), MsgLSEnum.getHeaderByCode(orgid), token);\r\n            log.info(\"銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}\", dxCode);\r\n            ObjectMapper objectMapper = new ObjectMapper();\r\n            Map<String, Object> textParam = null;\r\n            textParam = objectMapper.readValue(dxCode, Map.class);\r\n            String code = textParam.get(\"Code\").toString();\r\n            if (code.equals(\"0\")) {\r\n                isSuccess = true;\r\n            }\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n        return isSuccess;\r\n    }\r\n\r\n    /**\r\n     * 淇敼鐭俊璁板綍\r\n     *\r\n     * @param smsRecords 鐭俊璁板綍\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateSmsRecords(SmsRecords smsRecords) {\r\n        smsRecords.setUpdateTime(DateUtils.getNowDate());\r\n        return smsRecordsMapper.updateSmsRecords(smsRecords);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鐭俊璁板綍\r\n     *\r\n     * @param recordids 闇�瑕佸垹闄ょ殑鐭俊璁板綍涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteSmsRecordsByRecordids(Long[] recordids) {\r\n        return smsRecordsMapper.deleteSmsRecordsByRecordids(recordids);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鐭俊璁板綍淇℃伅\r\n     *\r\n     * @param recordid 鐭俊璁板綍涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteSmsRecordsByRecordid(Long recordid) {\r\n        return smsRecordsMapper.deleteSmsRecordsByRecordid(recordid);\r\n    }\r\n\r\n\r\n    private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) {\r\n        Map<String, Object> map = new LinkedHashMap<>();\r\n\r\n        Map<String, Object> YeWuXX = new LinkedHashMap<>();\r\n        Map<String, Object> DuanXinXX = new LinkedHashMap<>();\r\n        DuanXinXX.put(\"ShouJiHM\", ShouJiHM);\r\n        DuanXinXX.put(\"FaSongNR\", FaSongNR);\r\n        DuanXinXX.put(\"FaSongRID\", FaSongRID);\r\n        DuanXinXX.put(\"FaSongRXM\", FaSongRXM);\r\n        YeWuXX.put(\"DuanXinXX\", DuanXinXX);\r\n\r\n        map.put(\"XiaoXiTou\", headerMap);\r\n        map.put(\"YeWuXX\", YeWuXX);\r\n\r\n        String body = new Gson().toJson(map);\r\n\r\n//        String result = HttpUtils.sendPost(address, body);\r\n        String result = null;\r\n        try {\r\n            result = OkHttpExample.sendPostRequest(address, body, token);\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n        log.info(\"銆恎etDXCode銆戠煭淇″彂閫佺粨鏋滐細{}\", result);\r\n\r\n        JSONObject jsonObject = JSONObject.parseObject(result);\r\n        String code = (String) jsonObject.toString();\r\n        return code;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsRecordsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsRecordsServiceImpl.java
---- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsRecordsServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsRecordsServiceImpl.java	(date 1758703303371)
-@@ -48,7 +48,6 @@
- 
-     @Autowired
-     private ISysConfigService configService;
--
-     /**
-      * 鏌ヨ鐭俊璁板綍
-      *
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSLTDHealthcareRecordController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.smartor.domain.ServiceSLTDInhospReqVO;\r\nimport com.smartor.domain.ServiceSLTDInhospResDTO;\r\nimport com.smartor.service.IServiceSLTDHealthcareRecordService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.web.bind.annotation.PostMapping;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RestController;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨController\r\n *\r\n * @author smartor\r\n * @date 2025-08-14\r\n */\r\n@Slf4j\r\n@Api(description = \"鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨ鎺ュ彛\")\r\n@RestController\r\n@RequestMapping(\"/smartor/sltdHealthcareRecord\")\r\npublic class ServiceSLTDHealthcareRecordController extends BaseController {\r\n\r\n    @Autowired\r\n    private IServiceSLTDHealthcareRecordService serviceSLTDHealthcareRecordService;\r\n\r\n    /**\r\n     * 鏌ヨ鍦ㄩ櫌鎮h�呭仴搴疯褰曞垪琛╘r\n     */\r\n    @ApiOperation(\"鏌ヨ鍦ㄩ櫌鎮h�呭仴搴疯褰曞垪琛╘")\r\n    @PostMapping(\"/queryHealthcareRecordList\")\r\n    public AjaxResult queryHealthcareRecordList(@RequestBody ServiceSLTDInhospReqVO reqVO) {\r\n        try {\r\n            log.info(\"銆恞ueryHealthcareRecordList銆戞帴鏀跺埌鏌ヨ璇锋眰锛屽弬鏁帮細{}\", reqVO);\r\n\r\n            List<ServiceSLTDInhospResDTO> resultList = serviceSLTDHealthcareRecordService.queryHealthcareRecordList(reqVO);\r\n\r\n            log.info(\"銆恞ueryHealthcareRecordList銆戞煡璇㈡垚鍔燂紝杩斿洖{}鏉¤褰昞", resultList.size());\r\n            return AjaxResult.success(resultList);\r\n\r\n        } catch (Exception e) {\r\n            log.error(\"銆恞ueryHealthcareRecordList銆戞煡璇㈠紓甯革紝璇锋眰鍙傛暟锛歿}\", reqVO, e);\r\n            return AjaxResult.error(\"鏌ヨ鍋ュ悍璁板綍澶辫触锛歕" + e.getMessage());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅\r\n     */\r\n    @ApiOperation(\"閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅\")\r\n    @PostMapping(\"/queryHospUserInfoList\")\r\n    public AjaxResult queryHospUserInfoList(@RequestBody ServiceSLTDInhospReqVO reqVO) {\r\n        try {\r\n            log.info(\"銆恞ueryHealthcareRecordList銆戞帴鏀跺埌鏌ヨ璇锋眰锛屽弬鏁帮細{}\", reqVO);\r\n\r\n            Boolean b = serviceSLTDHealthcareRecordService.queryHospUserInfoList(reqVO);\r\n\r\n            log.info(\"銆恞ueryHospUserInfoList銆戞煡璇㈡垚鍔燂紝鏄惁鎴愬姛锛歿}\", b);\r\n            return AjaxResult.success(b);\r\n\r\n        } catch (Exception e) {\r\n            log.error(\"銆恞ueryHospUserInfoList銆戞煡璇㈠紓甯革紝璇锋眰鍙傛暟锛歿}\", reqVO, e);\r\n            return AjaxResult.error(\"鏌ヨ鍋ュ悍璁板綍澶辫触锛歕" + e.getMessage());\r\n        }\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSLTDHealthcareRecordController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSLTDHealthcareRecordController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSLTDHealthcareRecordController.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSLTDHealthcareRecordController.java	(date 1758682819356)
-@@ -2,6 +2,7 @@
- 
- import com.ruoyi.common.core.controller.BaseController;
- import com.ruoyi.common.core.domain.AjaxResult;
-+import com.smartor.domain.ServiceSLTDDeptReqVO;
- import com.smartor.domain.ServiceSLTDInhospReqVO;
- import com.smartor.domain.ServiceSLTDInhospResDTO;
- import com.smartor.service.IServiceSLTDHealthcareRecordService;
-@@ -62,6 +63,26 @@
- 
-             Boolean b = serviceSLTDHealthcareRecordService.queryHospUserInfoList(reqVO);
- 
-+            log.info("銆恞ueryHospUserInfoList銆戞煡璇㈡垚鍔燂紝鏄惁鎴愬姛锛歿}", b);
-+            return AjaxResult.success(b);
-+
-+        } catch (Exception e) {
-+            log.error("銆恞ueryHospUserInfoList銆戞煡璇㈠紓甯革紝璇锋眰鍙傛暟锛歿}", reqVO, e);
-+            return AjaxResult.error("鏌ヨ鍋ュ悍璁板綍澶辫触锛�" + e.getMessage());
-+        }
-+    }
-+
-+    /**
-+     * 閲囬泦绉戝鐥呭尯淇℃伅
-+     */
-+    @ApiOperation("閲囬泦绉戝鐥呭尯淇℃伅")
-+    @PostMapping("/queryDeptWardAreaInfoList")
-+    public AjaxResult queryDeptWardAreaInfoList(@RequestBody ServiceSLTDDeptReqVO reqVO) {
-+        try {
-+            log.info("銆恞ueryHealthcareRecordList銆戞帴鏀跺埌鏌ヨ璇锋眰锛屽弬鏁帮細{}", reqVO);
-+
-+            Boolean b = serviceSLTDHealthcareRecordService.queryDeptWardAreaInfoList(reqVO);
-+
-             log.info("銆恞ueryHospUserInfoList銆戞煡璇㈡垚鍔燂紝鏄惁鎴愬姛锛歿}", b);
-             return AjaxResult.success(b);
- 
-Index: smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.List;\r\n\r\n@ApiModel(value = \"ServiceSLTDCommonReqVO\", description = \"鐪佺珛鍚屽痉鍑哄叆闄㈣姹備俊鎭痋")\r\n@Data\r\npublic class ServiceSLTDInhospReqVO {\r\n    @ApiModelProperty(value = \"鏈烘瀯ID 鏈烘瀯鍞竴缂栧彿\")\r\n    private String orgId;\r\n\r\n    @ApiModelProperty(value = \"闄㈠尯ID\")\r\n    private Long campusIds;\r\n\r\n    @ApiModelProperty(value = \"鎮h�呭鍚�   蹇呭~涓�涓猏")\r\n    private String patientName;\r\n\r\n\r\n    @ApiModelProperty(value = \"韬唤璇佸彿   蹇呭~涓�涓猏")\r\n    private String idCardNo;\r\n\r\n    @ApiModelProperty(value = \"鐥呭尯id 蹇呭~涓�涓猏")\r\n    private Long areaId;\r\n\r\n    @ApiModelProperty(value = \"绉戝ID 蹇呭~涓�涓猏")\r\n    private Long deptId;\r\n\r\n    @ApiModelProperty(value = \"绉戝ID闆嗗悎\")\r\n    private List<Long> deptIdList;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟璁板綍鍙� 蹇呭~涓�涓猏")\r\n    private String healthcareRecordNo;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟璁板綍鍙烽泦鍚圽")\r\n    private List<String> healthcareRecordNoList;\r\n\r\n    @ApiModelProperty(value = \"鐥呭巻鍙� 蹇呭~涓�涓猏")\r\n    private String medicalRecordNo;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟璁板綍Id 蹇呭~涓�涓猏")\r\n    private Long healthcareRecordId;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟璁板綍ID闆嗗悎\")\r\n    private List<Long> idList;\r\n\r\n    @ApiModelProperty(value = \"灏辫瘖鍗″彿 蹇呭~涓�涓猏")\r\n    private String medicalCardNo;\r\n\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿-寮�濮嬫椂闂碶")\r\n    private String startHeadTime;\r\n\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿-缁撴潫鏃堕棿 yyyy-MM-dd\")\r\n    private String startTailTime;\r\n\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿-寮�濮嬫椂闂� yyyy-MM-dd\")\r\n    private String preOutHospitalHeadDate;\r\n\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿-缁撴潫鏃堕棿 yyyy-MM-dd\")\r\n    private String preOutHospitalTailDate;\r\n\r\n    @ApiModelProperty(value = \"灏辫瘖鏃堕棿-寮�濮嬫椂闂� :   闂ㄨ瘖璇婄枟璁板綍涓哄彿婧愭椂闂�  浣忛櫌璇婄枟璁板綍涓哄叆闄㈢櫥璁版椂闂� yyyy-MM-dd\")\r\n    private String encounterTimeStart;\r\n\r\n    @ApiModelProperty(value = \"灏辫瘖鏃堕棿-缁撴潫鏃堕棿 yyyy-MM-dd\")\r\n    private String encounterTimeEnd;\r\n\r\n    @ApiModelProperty(value = \"鍑洪櫌缁撶畻鏃堕棿-寮�濮嬫椂闂� yyyy-MM-dd\")\r\n    private String outHospitalSettleHeadDate;\r\n\r\n    @ApiModelProperty(value = \"鍑洪櫌缁撶畻鏃堕棿-缁撴潫鏃堕棿 yyyy-MM-dd\")\r\n    private String outHospitalSettleTailDate;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟绫诲瀷锛� FH0108.01-闂ㄨ瘖  FH0108.02-浣忛櫌   FH0108.03-鎬ヨ瘖  FH0108.04-鐣欒\" + \"FH0108.05-鎶㈡晳FH0108.06-闂ㄨ瘖浣撴   FH0108.07-浣忛櫌浣撴\")\r\n    private List<String> healthcareRecordTypeList;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟鐘舵��  鍙傝�冨�煎煙鏂囨。2.6\")\r\n    private List<String> statusList;\r\n\r\n    @ApiModelProperty(value = \"鏄惁鍙栨渶杩戜竴娆¤瘖鐤椾俊鎭�  榛樿涓篺alse\")\r\n    private Boolean recently;\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java	(date 1758682819669)
-@@ -13,7 +13,7 @@
-     private String orgId;
- 
-     @ApiModelProperty(value = "闄㈠尯ID")
--    private Long campusIds;
-+    private Long campusId;
- 
-     @ApiModelProperty(value = "鎮h�呭鍚�   蹇呭~涓�涓�")
-     private String patientName;
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.system;\r\n\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.constant.UserConstants;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.*;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.SecurityUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.ruoyi.system.service.ISysDeptService;\r\nimport com.ruoyi.system.service.ISysPostService;\r\nimport com.ruoyi.system.service.ISysRoleService;\r\nimport com.ruoyi.system.service.ISysUserService;\r\nimport com.smartor.mapper.SysUserDeptMapper;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.lang3.ArrayUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.security.access.prepost.PreAuthorize;\r\nimport org.springframework.validation.annotation.Validated;\r\nimport org.springframework.web.bind.annotation.*;\r\nimport org.springframework.web.multipart.MultipartFile;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.util.List;\r\nimport java.util.stream.Collectors;\r\n\r\n/**\r\n * 鐢ㄦ埛淇℃伅\r\n *\r\n * @author ruoyi\r\n */\r\n@Slf4j\r\n@RestController\r\n@RequestMapping(\"/system/user\")\r\npublic class SysUserController extends BaseController {\r\n    @Autowired\r\n    private ISysUserService userService;\r\n\r\n    @Autowired\r\n    private ISysRoleService roleService;\r\n\r\n    @Autowired\r\n    private ISysDeptService deptService;\r\n\r\n    @Autowired\r\n    private ISysPostService postService;\r\n\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    @Value(\"${isAdmin}\")\r\n    private List<Long> isAdmin;\r\n\r\n    /**\r\n     * 鑾峰彇鐢ㄦ埛鍒楄〃\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:list')\")\r\n    @GetMapping(\"/list\")\r\n    public TableDataInfo list(SysUser user) {\r\n        startPage();\r\n        List<SysUser> list = userService.selectUserList(user);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.EXPORT)\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:export')\")\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, SysUser user) {\r\n        List<SysUser> list = userService.selectUserList(user);\r\n        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);\r\n        util.exportExcel(response, list, \"鐢ㄦ埛鏁版嵁\");\r\n    }\r\n\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.IMPORT)\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:import')\")\r\n    @PostMapping(\"/importData\")\r\n    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {\r\n        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);\r\n        List<SysUser> userList = util.importExcel(file.getInputStream());\r\n        String operName = getUsername();\r\n        String message = userService.importUser(userList, updateSupport, operName);\r\n        return success(message);\r\n    }\r\n\r\n    @PostMapping(\"/importTemplate\")\r\n    public void importTemplate(HttpServletResponse response) {\r\n        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);\r\n        util.importTemplateExcel(response, \"鐢ㄦ埛鏁版嵁\");\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇璇︾粏淇℃伅\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:query')\")\r\n    @GetMapping(\"/getInfo/{userId}\")\r\n    public AjaxResult getInfo(@PathVariable(value = \"userId\", required = false) Long userId) {\r\n        log.info(\"--------userId鐨勫�间负锛歿}\",userId);\r\n        userService.checkUserDataScope(userId);\r\n        AjaxResult ajax = AjaxResult.success();\r\n        List<SysRole> roles = roleService.selectRoleAll();\r\n        ajax.put(\"roles\", isAdmin.contains(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));\r\n        ajax.put(\"posts\", postService.selectPostAll());\r\n        if (StringUtils.isNotNull(userId)) {\r\n            SysUser sysUser = userService.selectUserById(userId);\r\n            ajax.put(AjaxResult.DATA_TAG, sysUser);\r\n            ajax.put(\"postIds\", postService.selectPostListByUserId(userId));\r\n            ajax.put(\"roleIds\", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));\r\n        }\r\n        List<SysUserDept> sysUserDeptKSs = null;\r\n        List<SysUserDept> sysUserDeptBQs = null;\r\n        SysUserDept sysUserDept = new SysUserDept();\r\n        sysUserDept.setUserId(userId);\r\n        sysUserDept.setDeptType(\"1\");\r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        log.info(\"--------user鐨勫�间负锛歿}\",user);\r\n        sysUserDept.setOrgid(user.getOrgid());\r\n        sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        ajax.put(\"belongDepts\", sysUserDeptKSs);\r\n\r\n        sysUserDept.setDeptType(\"2\");\r\n        sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        ajax.put(\"belongWards\", sysUserDeptBQs);\r\n\r\n        return ajax;\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐢ㄦ埛\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:add')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@Validated @RequestBody SysUser user) {\r\n        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) {\r\n            return error(\"鏂板鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪\");\r\n        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {\r\n            return error(\"鏂板鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪\");\r\n        } else if (StringUtils.isNotEmpty(user.getEmail()) && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {\r\n            return error(\"鏂板鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪\");\r\n        }\r\n        user.setCreateBy(getUsername());\r\n        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));\r\n        user.setOrgid(getOrgid());\r\n        int i = userService.insertUser(user);\r\n        return success(user.getUserId().intValue());\r\n    }\r\n\r\n    /**\r\n     * 淇敼鐢ㄦ埛\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:edit')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/edit\")\r\n    public AjaxResult edit(@Validated @RequestBody SysUser user) {\r\n        userService.checkUserAllowed(user);\r\n        userService.checkUserDataScope(user.getUserId());\r\n        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) {\r\n            return error(\"淇敼鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪\");\r\n        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {\r\n            return error(\"淇敼鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪\");\r\n        } else if (StringUtils.isNotEmpty(user.getEmail()) && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {\r\n            return error(\"淇敼鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪\");\r\n        }\r\n        user.setUpdateBy(getUsername());\r\n        return toAjax(userService.updateUser(user));\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鐢ㄦ埛\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:remove')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.DELETE)\r\n    @GetMapping(\"/remove/{userIds}\")\r\n    public AjaxResult remove(@PathVariable Long[] userIds) {\r\n        if (ArrayUtils.contains(userIds, getUserId())) {\r\n            return error(\"褰撳墠鐢ㄦ埛涓嶈兘鍒犻櫎\");\r\n        }\r\n        return toAjax(userService.deleteUserByIds(userIds));\r\n    }\r\n\r\n    /**\r\n     * 閲嶇疆瀵嗙爜\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:resetPwd')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/resetPwd\")\r\n    public AjaxResult resetPwd(@RequestBody SysUser user) {\r\n        userService.checkUserAllowed(user);\r\n        userService.checkUserDataScope(user.getUserId());\r\n        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));\r\n        user.setUpdateBy(getUsername());\r\n        return toAjax(userService.resetPwd(user));\r\n    }\r\n\r\n    /**\r\n     * 鐘舵�佷慨鏀筡r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:edit')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/changeStatus\")\r\n    public AjaxResult changeStatus(@RequestBody SysUser user) {\r\n        userService.checkUserAllowed(user);\r\n        userService.checkUserDataScope(user.getUserId());\r\n        user.setUpdateBy(getUsername());\r\n        return toAjax(userService.updateUserStatus(user));\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鎺堟潈瑙掕壊\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:query')\")\r\n    @GetMapping(\"/authRole/{userId}\")\r\n    public AjaxResult authRole(@PathVariable(\"userId\") Long userId) {\r\n        AjaxResult ajax = AjaxResult.success();\r\n        SysUser user = userService.selectUserById(userId);\r\n        List<SysRole> roles = roleService.selectRolesByUserId(userId);\r\n        ajax.put(\"user\", user);\r\n        ajax.put(\"roles\", isAdmin.contains(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));\r\n        return ajax;\r\n    }\r\n\r\n    /**\r\n     * 鐢ㄦ埛鎺堟潈瑙掕壊\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:edit')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.GRANT)\r\n    @PostMapping(\"/authRole/insertAuthRole\")\r\n    public AjaxResult insertAuthRole(@RequestBody AuthRole authRole) {\r\n        log.info(\"-----鐢ㄦ埛鎺堟潈瑙掕壊鐨勫叆鍙備负锛歶serId={},roleIds={}\", authRole.getUserId(), authRole.getRoleIds());\r\n        if (ObjectUtils.isEmpty(authRole.getRoleIds())) {\r\n            throw new BaseException(\"瑙掕壊涓虹┖锛岃妫�鏌ヤ箣鍚庡啀娆″皾璇昞");\r\n        }\r\n        Long[] roleIds = authRole.getRoleIds().stream().toArray(Long[]::new);\r\n        Long userId = authRole.getUserId();\r\n        userService.checkUserDataScope(userId);\r\n        userService.insertUserAuth(userId, roleIds, getOrgid());\r\n        return success();\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇閮ㄩ棬鏍戝垪琛╘r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:list')\")\r\n    @GetMapping(\"/deptTree\")\r\n    public AjaxResult deptTree(SysDept dept) {\r\n        return success(deptService.selectDeptTreeList(dept));\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java	(date 1758682819375)
-@@ -65,6 +65,9 @@
-     @GetMapping("/list")
-     public TableDataInfo list(SysUser user) {
-         startPage();
-+        LoginUser loginUser = getLoginUser();
-+        String orgid = loginUser.getUser().getOrgid();
-+        user.setOrgid(orgid);
-         List<SysUser> list = userService.selectUserList(user);
-         return getDataTable(list);
-     }
-Index: smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport afu.org.checkerframework.checker.oigj.qual.O;\r\nimport com.alibaba.fastjson2.JSON;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.ServiceSubtaskAnswerMapper;\r\nimport com.smartor.mapper.ServiceSubtaskDetailMapper;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport com.smartor.mapper.SvyTaskTemplateTargetoptionMapper;\r\nimport com.smartor.service.IServiceSubtaskAnswerService;\r\nimport com.smartor.service.IServiceTaskService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.*;\r\nimport java.util.concurrent.TimeUnit;\r\n\r\n/**\r\n * 浠诲姟闂嵎闂閫夐」Service涓氬姟灞傚鐞哱r\n *\r\n * @author ruoyi\r\n * @date 2024-07-18\r\n */\r\n@Slf4j\r\n@Service\r\npublic class ServiceSubtaskAnswerServiceImpl implements IServiceSubtaskAnswerService {\r\n    @Autowired\r\n    private ServiceSubtaskAnswerMapper serviceSubtaskAnswerMapper;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;\r\n\r\n    @Autowired\r\n    private IServiceTaskService serviceTaskService;\r\n\r\n    @Autowired\r\n    private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper;\r\n\r\n    @Value(\"${pri_key}\")\r\n    private String pri_key;\r\n\r\n    /**\r\n     * 鏌ヨ浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param id 浠诲姟闂嵎闂閫夐」涓婚敭\r\n     * @return 浠诲姟闂嵎闂閫夐」\r\n     */\r\n    @Override\r\n    public ServiceSubtaskAnswer selectServiceSubtaskAnswerById(Long id) {\r\n        return serviceSubtaskAnswerMapper.selectServiceSubtaskAnswerById(id);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ浠诲姟闂嵎闂閫夐」鍒楄〃\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 浠诲姟闂嵎闂閫夐」\r\n     */\r\n    @Override\r\n    public List<ServiceSubtaskAnswer> selectServiceSubtaskAnswerList(ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        return serviceSubtaskAnswerMapper.selectServiceSubtaskAnswerList(serviceSubtaskAnswer);\r\n    }\r\n\r\n    /**\r\n     * 鏂板浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        serviceSubtaskAnswer.setCreateTime(DateUtils.getNowDate());\r\n        return serviceSubtaskAnswerMapper.insertServiceSubtaskAnswer(serviceSubtaskAnswer);\r\n    }\r\n\r\n    /**\r\n     * 淇敼浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        serviceSubtaskAnswer.setUpdateTime(DateUtils.getNowDate());\r\n        return serviceSubtaskAnswerMapper.updateServiceSubtaskAnswer(serviceSubtaskAnswer);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param ids 闇�瑕佸垹闄ょ殑浠诲姟闂嵎闂閫夐」涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteServiceSubtaskAnswerByIds(Long[] ids) {\r\n        return serviceSubtaskAnswerMapper.deleteServiceSubtaskAnswerByIds(ids);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎浠诲姟闂嵎闂閫夐」淇℃伅\r\n     *\r\n     * @param id 浠诲姟闂嵎闂閫夐」涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteServiceSubtaskAnswerById(Long id) {\r\n        return serviceSubtaskAnswerMapper.deleteServiceSubtaskAnswerById(id);\r\n    }\r\n\r\n\r\n    @Override\r\n    public Integer saveQuestionAnswer(ServiceSubTaskAnswerReq serviceSubTaskAnswerReq, Long flag) {\r\n        Long tid = null;\r\n        Long pid = null;\r\n        Double score = null;\r\n        Set<String> allKeys = redisCache.getAllKeys();\r\n        if (ObjectUtils.isNotEmpty(serviceSubTaskAnswerReq)) {\r\n            //闇�瑕佺珛鍗虫墽琛孿r\n            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n\r\n            if (flag == 0) {\r\n                tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam1(), pri_key));\r\n                pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam2(), pri_key));\r\n            } else if (flag == 1) {\r\n                tid = Long.valueOf(serviceSubTaskAnswerReq.getParam1());\r\n                pid = Long.valueOf(serviceSubTaskAnswerReq.getParam2());\r\n            }\r\n            if (serviceSubTaskAnswerReq.getType() != null && serviceSubTaskAnswerReq.getType() == 2) {\r\n                allKeys = new HashSet<>();\r\n                allKeys.add(pid + \"-\" + tid + \"-WJscriptCache\");\r\n            } else if (serviceSubTaskAnswerReq.getType() != null && serviceSubTaskAnswerReq.getType() == 1) {\r\n                allKeys = new HashSet<>();\r\n                allKeys.add(pid + \"-\" + tid + \"-SFscriptCache\");\r\n            }\r\n        }\r\n\r\n        Long nextScriptno = null;\r\n        aa:\r\n        for (String key : allKeys) {\r\n            String[] split = key.split(\"-\");\r\n            //鍏堝垽鏂紝鏄笉鏄綋鍓嶆彁浜や汉鐨勶紝涓嶆槸褰撳墠鎻愪氦浜虹殑锛岃烦杩嘰r\n            try {\r\n                if (ObjectUtils.isNotEmpty(split[0]) && ObjectUtils.isNotEmpty(split[1]) && !Long.valueOf(split[0]).equals(pid) && !Long.valueOf(split[1]).equals(tid)) {\r\n                    continue;\r\n                }\r\n            } catch (Exception e) {\r\n                //杩欓噷涔嬫墍浠ヨ澶勭悊寮傚父锛屾槸鍥犱负鏈夌殑KEY灏变笉鏄垜浠鐨凨EY,娌℃湁鍘绘埅鍙栵紱鏈夊紓甯镐笉澶勭悊锛岀洿鎺ヤ笅涓�涓猏r\n                continue;\r\n            }\r\n            if (key.contains(\"-WJscriptCache\")) {\r\n                List<SvyLibTemplateScriptVO> cacheList = redisCache.getCacheList(key);\r\n                cacheList.sort(Comparator.comparingLong(SvyLibTemplateScriptVO::getSort));\r\n                log.error(\"闂嵎鍥炵瓟缁撴灉锛歿}\", cacheList);\r\n                for (int i = 0; i < cacheList.size(); i++) {\r\n                    if (i == 0) {\r\n                        //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰榎r\n                        for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : cacheList) {\r\n                            if (svyLibTemplateScriptVO.getSort() == 1L) {\r\n                                //璇存槑鏄涓�棰榎r\n                                SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(0), SvyTaskTemplateScriptVO.class);\r\n                                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = cacheList.get(0).getSvyLibTemplateTargetoptions();\r\n                                List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyLibTemplateTargetoptions, SvyTaskTemplateTargetoption.class);\r\n                                svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);\r\n                                Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid);\r\n                                if (map == null) continue aa;\r\n                                nextScriptno = Long.valueOf(map.get(\"nextScriptNo\"));\r\n                                if (score == null) {\r\n                                    score = Double.valueOf(map.get(\"score\"));\r\n                                } else {\r\n                                    score = score + Double.valueOf(map.get(\"score\"));\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                    } else {\r\n                        SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), SvyTaskTemplateScriptVO.class);\r\n                        List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getSvyLibTemplateTargetoptions(), SvyTaskTemplateTargetoption.class);\r\n                        svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);\r\n\r\n                        if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {\r\n                            log.error(\"svyTaskTemplateScriptVO鐨勫�间负锛歿}\", svyTaskTemplateScriptVO);\r\n                            Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));\r\n                            log.error(\"map鐨勪俊鎭负锛歿}\", map);\r\n                            nextScriptno = Long.valueOf(map.get(\"nextScriptNo\"));\r\n                            if (score == null) {\r\n                                score = Double.valueOf(map.get(\"score\"));\r\n                            } else {\r\n                                score = score + Double.valueOf(map.get(\"score\"));\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            } else if (key.contains(\"-SFscriptCache\")) {\r\n                List<IvrLibaTemplateScriptVO> cacheList = redisCache.getCacheList(key);\r\n                cacheList.sort(Comparator.comparingLong(IvrLibaTemplateScriptVO::getSort));\r\n                log.error(\"鐢佃瘽闅忚闂嵎鍥炵瓟缁撴灉锛歿}\", cacheList);\r\n                for (int i = 0; i < cacheList.size(); i++) {\r\n                    if (i == 0) {\r\n                        //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰榎r\n                        for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : cacheList) {\r\n                            if (ivrLibaTemplateScriptVO.getSort() == 1L) {\r\n                                //璇存槑鏄涓�棰榎r\n                                IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(0), IvrTaskTemplateScriptVO.class);\r\n                                List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = cacheList.get(0).getIvrLibaScriptTargetoptionList();\r\n                                List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(ivrLibaTemplateTargetoptions, IvrTaskTemplateTargetoption.class);\r\n                                ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);\r\n                                Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid);\r\n                                nextScriptno = Long.valueOf(map.get(\"nextScriptNo\"));\r\n                                if (score == null) {\r\n                                    score = Double.valueOf(map.get(\"score\"));\r\n                                } else {\r\n                                    score = score + Double.valueOf(map.get(\"score\"));\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                    } else {\r\n                        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), IvrTaskTemplateScriptVO.class);\r\n                        List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getIvrLibaScriptTargetoptionList(), IvrTaskTemplateTargetoption.class);\r\n                        ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);\r\n\r\n                        if (ivrTaskTemplateScriptVO.getSort() != null && Long.valueOf(ivrTaskTemplateScriptVO.getSort()).equals(nextScriptno)) {\r\n                            Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));\r\n                            log.error(\"map鐨勪俊鎭负锛歿}\", map);\r\n                            nextScriptno = Long.valueOf(map.get(\"nextScriptNo\"));\r\n                            if (score == null) {\r\n                                score = Double.valueOf(map.get(\"score\"));\r\n                            } else {\r\n                                score = score + Double.valueOf(map.get(\"score\"));\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            } else {\r\n                continue;\r\n            }\r\n            //灏嗚key鍜寁alue浠巖edis涓紝鍒犻櫎\r\n            redisCache.deleteObject(key);\r\n            ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n            serviceSubtask.setTaskid(tid);\r\n            serviceSubtask.setPatid(pid);\r\n            serviceSubtask.setSubmit(1L);\r\n            serviceSubtask.setSendstate(6L);\r\n            serviceSubtask.setExcep(serviceSubTaskAnswerReq.getExcep());\r\n            serviceSubtask.setFinishtime(new Date());\r\n            serviceSubtask.setUpdateTime(new Date());\r\n            log.error(\"灏嗚key鍜寁alue浠巖edis涓�,serviceSubtask鐨勫�间负--------锛歿}\", serviceSubtask);\r\n            if (score != null) serviceSubtask.setScore(BigDecimal.valueOf(score));\r\n            serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);\r\n        }\r\n        return 1;\r\n    }\r\n\r\n\r\n    /**\r\n     * 灏嗛棶棰樹繚瀛樺埌缂撳瓨涓璡r\n     *\r\n     * @param serviceSubTaskCacheReq\r\n     * @return\r\n     */\r\n    @Override\r\n    public Integer saveQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq, Long flag) {\r\n        try {\r\n            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n            Long tid = null;\r\n            Long pid = null;\r\n            if (flag == 0L) {\r\n                tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam1(), pri_key));\r\n                pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam2(), pri_key));\r\n            } else if (flag == 1L) {\r\n                tid = Long.valueOf(serviceSubTaskCacheReq.getParam1());\r\n                pid = Long.valueOf(serviceSubTaskCacheReq.getParam2());\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS()) &&  serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS().size() > 0) {\r\n                //闂嵎\r\n                redisCache.deleteObject(pid + \"-\" + tid + \"-WJscriptCache\");\r\n                redisCache.setCacheListRight(pid + \"-\" + tid + \"-WJscriptCache\", serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS());\r\n                //璁剧疆杩囨湡鏃堕棿 3澶‐r\n                Long tims = Long.valueOf(3 * 24 * 3600);\r\n                boolean expire = redisCache.expire(pid + \"-\" + tid + \"-WJscriptCache\", tims);\r\n                return 1;\r\n            } else if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getIvrLibaTemplateScriptVOList()) && serviceSubTaskCacheReq.getIvrLibaTemplateScriptVOList().size() > 0) {\r\n                //闂嵎\r\n                redisCache.deleteObject(pid + \"-\" + tid + \"-SFscriptCache\");\r\n                redisCache.setCacheListRight(pid + \"-\" + tid + \"-SFscriptCache\", serviceSubTaskCacheReq.getIvrLibaTemplateScriptVOList());\r\n                //璁剧疆杩囨湡鏃堕棿 3澶‐r\n                Long tims = Long.valueOf(3 * 24 * 3600);\r\n                redisCache.expire(pid + \"-\" + tid + \"-SFscriptCache\", tims);\r\n                return 1;\r\n            }\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"缂撳瓨淇濆瓨澶辫触锛歿}\", e.getMessage());\r\n            return 0;\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    @Override\r\n    public Map<String, Object> getQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq, Long flag) {\r\n        Map<String, Object> map = new HashMap<>();\r\n        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n        Long tid = null;\r\n        Long pid = null;\r\n        Long subId = null;\r\n        if (flag == 0L) {\r\n            tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam1(), pri_key));\r\n            pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam2(), pri_key));\r\n            //杩欎釜鏄湁闂鐨勶紝鍏堣繖鏍凤紝鍚堝苟浠g爜鐨勬椂鍊欐病鏈夋妸param6鍚堣繘鏉r\n            if (StringUtils.isNotEmpty(serviceSubTaskCacheReq.getParam6())) {\r\n                subId = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam6(), pri_key));\r\n            }\r\n        } else if (flag == 1L) {\r\n            tid = Long.valueOf(serviceSubTaskCacheReq.getParam1());\r\n            pid = Long.valueOf(serviceSubTaskCacheReq.getParam2());\r\n            if (StringUtils.isNotEmpty(serviceSubTaskCacheReq.getParam6()))\r\n                subId = Long.valueOf(serviceSubTaskCacheReq.getParam6());\r\n\r\n        }\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskid(tid);\r\n        serviceSubtaskVO.setPatid(pid);\r\n        serviceSubtaskVO.setSubId(subId);\r\n\r\n        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n        if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {\r\n            map.put(\"submit\", 0);\r\n        } else {\r\n            map.put(\"submit\", selectServiceSubtaskList.get(0).getSubmit());\r\n            if (selectServiceSubtaskList.get(0).getSubmit() == 1) {\r\n                return map;\r\n            }\r\n        }\r\n        //闂嵎\r\n        List<SvyLibTemplateScriptVO> svyTaskTemplateScriptVOList = redisCache.getCacheList(pid + \"-\" + tid + \"-WJscriptCache\");\r\n        map.put(\"result\", svyTaskTemplateScriptVOList);\r\n        return map;\r\n    }\r\n\r\n    @Override\r\n    public Map<String, Object> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq) {\r\n        log.error(\"selectPatQuesTionResult鐨勫叆鍙備负锛歿}\", serviceSubTaskQueryReq);\r\n        Map<String, Object> map = new HashMap<>();\r\n\r\n        //鑾峰彇鏈鐨勯棶绛旂粨鏋淺r\n        Map<String, Object> scriptInfoByCondition = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom());\r\n        map = getMap(scriptInfoByCondition, serviceSubTaskQueryReq.getSubId(), serviceSubTaskQueryReq.getPatid());\r\n\r\n        //鑾峰彇涓婃鐨勯棶绛旂粨鏋淺r\n        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubTaskQueryReq.getSubId());\r\n        map.put(\"upScriptResult\", null);\r\n        map.put(\"upTaskName\", null);\r\n        if (ObjectUtils.isNotEmpty(serviceSubtask) && serviceSubtask.getUpid() != null) {\r\n            Map<String, Object> scriptInfoByCondition2 = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom());\r\n            Map<String, Object> map1 = getMap(scriptInfoByCondition2, Long.valueOf(serviceSubtask.getUpid()), serviceSubTaskQueryReq.getPatid());\r\n            if (!map1.isEmpty()) {\r\n                map.put(\"upScriptResult\", map1.get(\"scriptResult\"));\r\n                map.put(\"upTaskName\", map1.get(\"taskName\"));\r\n            }\r\n        }\r\n\r\n        return map;\r\n    }\r\n\r\n\r\n    private Map<String, Object> getMap(Map<String, Object> scriptInfoByCondition, Long subid, Long patid) {\r\n        Map<String, Object> map = new HashMap<>();\r\n        if (ObjectUtils.isNotEmpty(scriptInfoByCondition) && ObjectUtils.isNotEmpty(scriptInfoByCondition.get(\"script\"))) {\r\n//            log.error(\"-----------scriptInfoByCondition鐨勫�间负锛歿}\", scriptInfoByCondition);\r\n            if (scriptInfoByCondition.get(\"type\").equals(\"1\")) {\r\n                List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList = (List) scriptInfoByCondition.get(\"script\");\r\n                for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOList) {\r\n                    Map<String, String> scriptResult = getScriptResult(subid, patid, ivrLibaTemplateScriptVO.getId());\r\n                    if (ObjectUtils.isNotEmpty(scriptResult)) {\r\n                        ivrLibaTemplateScriptVO.setScriptResult(scriptResult.get(\"asrtext\"));\r\n                        ivrLibaTemplateScriptVO.setScriptResultId(scriptResult.get(\"asrtextId\"));\r\n                    }\r\n                }\r\n                map.put(\"scriptResult\", ivrLibaTemplateScriptVOList);\r\n                map.put(\"taskName\", scriptInfoByCondition.get(\"taskName\"));\r\n            } else if (scriptInfoByCondition.get(\"type\").equals(\"2\")) {\r\n                List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOList = (List) scriptInfoByCondition.get(\"script\");\r\n                for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOList) {\r\n                    Map<String, String> scriptResult = getScriptResult(subid, patid, svyLibTemplateScriptVO.getId());\r\n                    if (ObjectUtils.isNotEmpty(scriptResult)) {\r\n                        if (StringUtils.isNotEmpty(scriptResult.get(\"asrtext\")))\r\n                            svyLibTemplateScriptVO.setScriptResult(StringUtils.isNotEmpty(scriptResult.get(\"asrtext\")) ? scriptResult.get(\"asrtext\").replaceAll(\"^(\\\"|')(.*)\\\\1$\", \"$2\") : \"\");\r\n                        svyLibTemplateScriptVO.setScriptResultId(scriptResult.get(\"asrtextId\"));\r\n                        if (StringUtils.isNotEmpty(scriptResult.get(\"answerps\")))\r\n                            svyLibTemplateScriptVO.setAnswerps(scriptResult.get(\"answerps\"));\r\n                    }\r\n                }\r\n                map.put(\"scriptResult\", svyLibTemplateScriptVOList);\r\n                map.put(\"taskName\", scriptInfoByCondition.get(\"taskName\"));\r\n            } else if (scriptInfoByCondition.get(\"type\").equals(\"3\")) {\r\n                //瀹f暀涓嶉渶瑕佹煡鐪媆r\n                List<HeLibrary> heLibraryList = (List) scriptInfoByCondition.get(\"script\");\r\n                map.put(\"scriptResult\", heLibraryList);\r\n                map.put(\"taskName\", scriptInfoByCondition.get(\"taskName\"));\r\n            }\r\n        }\r\n        return map;\r\n    }\r\n\r\n\r\n    private Map<String, String> getScriptResult(Long subid, Long pid, Long sid) {\r\n        Map<String, String> map = new HashMap<>();\r\n        ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();\r\n        serviceSubtaskDetail.setSubId(subid);\r\n        serviceSubtaskDetail.setPatid(pid);\r\n        serviceSubtaskDetail.setScriptid(sid);\r\n        List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);\r\n        if (CollectionUtils.isNotEmpty(serviceSubtaskDetails)) {\r\n            map.put(\"asrtext\", serviceSubtaskDetails.get(0).getAsrtext());\r\n            map.put(\"asrtextId\", serviceSubtaskDetails.get(0).getId());\r\n            map.put(\"answerps\", serviceSubtaskDetails.get(0).getAnswerps());\r\n            return map;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private Map<String, String> setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid) {\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskid(taskid);\r\n        serviceSubtaskVO.setPatid(patid);\r\n        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n\r\n        String score = \"0\";\r\n        //涓嬮璺宠浆\r\n        String nextScriptNo = null;\r\n        ServiceSubtaskDetailVO serviceSubtaskDetailVO = new ServiceSubtaskDetailVO();\r\n        List<ServiceSubtaskOptionAnswer> answerList = new ArrayList<>();\r\n        if (svyTaskTemplateScriptVO.getScriptType().equals(\"1\") || svyTaskTemplateScriptVO.getScriptType().equals(\"2\")) {\r\n            //1銆�2涓哄崟閫夋垨澶氶�塡r\n            for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption : svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions()) {\r\n                //灏嗛棶棰橀�夐」璁板綍涓嬫潵\r\n                if (StringUtils.isEmpty(serviceSubtaskDetailVO.getTargetvalue())) {\r\n                    serviceSubtaskDetailVO.setTargetvalue(svyTaskTemplateTargetoption.getOptioncontent());\r\n                } else {\r\n                    serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + \"&\" + svyTaskTemplateTargetoption.getOptioncontent());\r\n                }\r\n//                if (svyTaskTemplateTargetoption.getIsUserOperation() == true) {\r\n//                    //灏嗛�変腑鐨勭粨鏋滄斁鍒癮srtext涓璡r\n//                    if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {\r\n//                        //鍜屽墠绔晢閲忥紝鍓嶇浼氬皢閫変腑鐨勭粨鏋滄洿鏂板埌闂涓奬r\n////                        serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateTargetoption.getTargetvalue());\r\n//                        serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());\r\n//                    } else {\r\n//                        //濡傛灉鏄閫夛紝绛旀闇�瑕佺敤 & 杩涜鎷兼帴(//鍜屽墠绔晢閲忥紝鍓嶇浼氬皢閫変腑鐨勭粨鏋滄洿鏂板埌闂涓�)\r\n////                        serviceSubtaskDetailVO.setAsrtext(serviceSubtaskDetailVO.getAnswerps() + \"&\" + svyTaskTemplateTargetoption.getTargetvalue());\r\n//                        serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());\r\n//                    }\r\n//                    if (svyTaskTemplateScriptVO.getScriptType().equals(\"1\") && svyTaskTemplateScriptVO.getBranchFlag().equals(\"1\")) {\r\n//                        //鏄崟閫夛紝骞朵笖鏄湁鍒嗘敮鐨�(鍜屽墠绔晢閲忥紝鍦ㄥ閾剧粨鏋滀繚瀛樻椂锛屼細灏嗛�変腑鐨勯�夐」涓婄殑璺宠浆鏇存柊鍒伴鐩笂)\r\n////                        nextScriptNo = svyTaskTemplateTargetoption.getNextQuestion().toString();\r\n//                        nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();\r\n//                        score = svyTaskTemplateTargetoption.getScore().toString();\r\n//                    } else {\r\n//                        nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();\r\n//                        score = svyTaskTemplateScriptVO.getScore().toString();\r\n//                    }\r\n//                }\r\n            }\r\n            nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();\r\n            if (svyTaskTemplateScriptVO.getScore() != null) {\r\n                score = String.valueOf(svyTaskTemplateScriptVO.getScore());\r\n            }\r\n            serviceSubtaskDetailVO.setAsrtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? \"\" : svyTaskTemplateScriptVO.getScriptResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n            serviceSubtaskDetailVO.setMatchedtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? \"\" : svyTaskTemplateScriptVO.getScriptResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n//            if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {\r\n//                nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();\r\n//            }\r\n//            serviceSubtaskDetailVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions());\r\n        } else {\r\n            //闈炲崟澶氶�塡r\n            if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptResult())) {\r\n                serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());\r\n                if (svyTaskTemplateScriptVO.getScore() != null) {\r\n                    score = String.valueOf(svyTaskTemplateScriptVO.getScore());\r\n                }\r\n            }\r\n            nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();\r\n        }\r\n        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(taskid);\r\n        serviceSubtaskDetailVO.setQuestiontext(svyTaskTemplateScriptVO.getScriptContent());\r\n        serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid));\r\n        serviceSubtaskDetailVO.setTargetid(svyTaskTemplateScriptVO.getTargetid() != null ? svyTaskTemplateScriptVO.getTargetid().intValue() : null);\r\n        serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));\r\n        serviceSubtaskDetailVO.setScriptid(svyTaskTemplateScriptVO.getId());\r\n        serviceSubtaskDetailVO.setTemplatequestionnum(StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptno()) ? Long.valueOf(svyTaskTemplateScriptVO.getScriptno()) : null);\r\n        serviceSubtaskDetailVO.setValueType(svyTaskTemplateScriptVO.getScriptType());\r\n        serviceSubtaskDetailVO.setComment(null);\r\n        serviceSubtaskDetailVO.setCreateTime(new Date());\r\n        serviceSubtaskDetailVO.setUpdateTime(new Date());\r\n        if (ObjectUtils.isNotEmpty(serviceTask)) {\r\n            serviceSubtaskDetailVO.setGuid(serviceTask.getGuid());\r\n            serviceSubtaskDetailVO.setOrgid(serviceTask.getOrgid());\r\n        }\r\n        serviceSubtaskDetailVO.setSubId(CollectionUtils.isNotEmpty(selectServiceSubtaskList) ? selectServiceSubtaskList.get(0).getId() : null);\r\n        serviceSubtaskDetailVO.setTemplatequestionnum(svyTaskTemplateScriptVO.getId());\r\n        ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class);\r\n        serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);\r\n\r\n        Map<String, String> map = new HashMap<>();\r\n        map.put(\"nextScriptNo\", nextScriptNo);\r\n        map.put(\"score\", score);\r\n        return map;\r\n    }\r\n\r\n    private Map<String, String> setSFInfo(IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, Long taskid, Long patid) {\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskid(taskid);\r\n        serviceSubtaskVO.setPatid(patid);\r\n        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n\r\n        String score = \"0\";\r\n        //涓嬮璺宠浆\r\n        String nextScriptNo = null;\r\n        ServiceSubtaskDetailVO serviceSubtaskDetailVO = new ServiceSubtaskDetailVO();\r\n        List<ServiceSubtaskOptionAnswer> answerList = new ArrayList<>();\r\n        if (ivrTaskTemplateScriptVO.getScriptType().equals(\"1\") || ivrTaskTemplateScriptVO.getScriptType().equals(\"2\")) {\r\n            //1銆�2涓哄崟閫夋垨澶氶�塡r\n            for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {\r\n                //灏嗛棶棰橀�夐」璁板綍涓嬫潵\r\n                if (StringUtils.isEmpty(serviceSubtaskDetailVO.getTargetvalue())) {\r\n                    serviceSubtaskDetailVO.setTargetvalue(ivrTaskTemplateTargetoption.getTargetvalue());\r\n                } else {\r\n                    serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + \"&\" + ivrTaskTemplateTargetoption.getTargetvalue());\r\n                }\r\n\r\n            }\r\n            nextScriptNo = ivrTaskTemplateScriptVO.getNextScriptno().toString();\r\n            if (ivrTaskTemplateScriptVO.getScore() != null) {\r\n                score = String.valueOf(ivrTaskTemplateScriptVO.getScore());\r\n            }\r\n            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getQuestionResult())) {\r\n                serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n                serviceSubtaskDetailVO.setMatchedtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n            }\r\n        } else {\r\n            //闈炲崟澶氶�塡r\n            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getQuestionResult())) {\r\n                serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n                serviceSubtaskDetailVO.setMatchedtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n                nextScriptNo = ivrTaskTemplateScriptVO.getNextScriptno().toString();\r\n                if (ivrTaskTemplateScriptVO.getScore() != null) {\r\n                    score = String.valueOf(ivrTaskTemplateScriptVO.getScore());\r\n                }\r\n            }\r\n        }\r\n        serviceSubtaskDetailVO.setTargetid(ivrTaskTemplateScriptVO.getTargetid() != null ? ivrTaskTemplateScriptVO.getTargetid().intValue() : null);\r\n        serviceSubtaskDetailVO.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());\r\n        serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid));\r\n        serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));\r\n        serviceSubtaskDetailVO.setScriptid(ivrTaskTemplateScriptVO.getScriptID());\r\n        serviceSubtaskDetailVO.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());\r\n        serviceSubtaskDetailVO.setValueType(ivrTaskTemplateScriptVO.getScriptType());\r\n        serviceSubtaskDetailVO.setComment(null);\r\n        serviceSubtaskDetailVO.setCreateTime(new Date());\r\n        serviceSubtaskDetailVO.setGuid(ivrTaskTemplateScriptVO.getGuid());\r\n        serviceSubtaskDetailVO.setOrgid(ivrTaskTemplateScriptVO.getOrgid());\r\n        serviceSubtaskDetailVO.setUpdateTime(new Date());\r\n        serviceSubtaskDetailVO.setSubId(selectServiceSubtaskList.get(0).getId());\r\n        serviceSubtaskDetailVO.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());\r\n        ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class);\r\n        serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);\r\n\r\n        Map<String, String> map = new HashMap<>();\r\n        map.put(\"nextScriptNo\", nextScriptNo);\r\n        map.put(\"score\", score);\r\n        return map;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java	(date 1758702655371)
-@@ -1,17 +1,12 @@
- package com.smartor.service.impl;
- 
--import afu.org.checkerframework.checker.oigj.qual.O;
--import com.alibaba.fastjson2.JSON;
- import com.ruoyi.common.core.redis.RedisCache;
- import com.ruoyi.common.utils.DateUtils;
- import com.ruoyi.common.utils.DtoConversionUtils;
- import com.ruoyi.common.utils.RSAPublicKeyExample;
- import com.ruoyi.common.utils.StringUtils;
- 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.mapper.*;
- import com.smartor.service.IServiceSubtaskAnswerService;
- import com.smartor.service.IServiceTaskService;
- import lombok.extern.slf4j.Slf4j;
-@@ -23,7 +18,6 @@
- 
- import java.math.BigDecimal;
- import java.util.*;
--import java.util.concurrent.TimeUnit;
- 
- /**
-  * 浠诲姟闂嵎闂閫夐」Service涓氬姟灞傚鐞�
-@@ -40,6 +34,9 @@
-     @Autowired
-     private ServiceSubtaskMapper serviceSubtaskMapper;
- 
-+    @Autowired
-+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
-+
-     @Autowired
-     private RedisCache redisCache;
- 
-@@ -50,11 +47,21 @@
-     private IServiceTaskService serviceTaskService;
- 
-     @Autowired
--    private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper;
-+    private PatArchiveMapper patArchiveMapper;
-+
-+
-+    @Autowired
-+    private PatMedInhospMapper patMedInhospMapper;
-+
-+    @Autowired
-+    private PatMedOuthospMapper patMedOuthospMapper;
- 
-     @Value("${pri_key}")
-     private String pri_key;
- 
-+    @Value("${dealDeptCode}")
-+    private String dealDeptCode;
-+
-     /**
-      * 鏌ヨ浠诲姟闂嵎闂閫夐」
-      *
-@@ -129,6 +136,7 @@
-         Long tid = null;
-         Long pid = null;
-         Double score = null;
-+        Long isabno = 0L;
-         Set<String> allKeys = redisCache.getAllKeys();
-         if (ObjectUtils.isNotEmpty(serviceSubTaskAnswerReq)) {
-             //闇�瑕佺珛鍗虫墽琛�
-@@ -179,7 +187,8 @@
-                                 svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-                                 Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid);
-                                 if (map == null) continue aa;
--                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                                if (!Objects.isNull(map.get("nextScriptNo")))
-+                                    nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                                 if (score == null) {
-                                     score = Double.valueOf(map.get("score"));
-                                 } else {
-@@ -197,7 +206,8 @@
-                             log.error("svyTaskTemplateScriptVO鐨勫�间负锛歿}", svyTaskTemplateScriptVO);
-                             Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));
-                             log.error("map鐨勪俊鎭负锛歿}", map);
--                            nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                            if (!Objects.isNull(map.get("nextScriptNo")))
-+                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                             if (score == null) {
-                                 score = Double.valueOf(map.get("score"));
-                             } else {
-@@ -221,7 +231,8 @@
-                                 List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(ivrLibaTemplateTargetoptions, IvrTaskTemplateTargetoption.class);
-                                 ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
-                                 Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid);
--                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                                if (!Objects.isNull(map.get("nextScriptNo")))
-+                                    nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                                 if (score == null) {
-                                     score = Double.valueOf(map.get("score"));
-                                 } else {
-@@ -238,7 +249,8 @@
-                         if (ivrTaskTemplateScriptVO.getSort() != null && Long.valueOf(ivrTaskTemplateScriptVO.getSort()).equals(nextScriptno)) {
-                             Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));
-                             log.error("map鐨勪俊鎭负锛歿}", map);
--                            nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                            if (!Objects.isNull(map.get("nextScriptNo")))
-+                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                             if (score == null) {
-                                 score = Double.valueOf(map.get("score"));
-                             } else {
-@@ -263,10 +275,188 @@
-             log.error("灏嗚key鍜寁alue浠巖edis涓�,serviceSubtask鐨勫�间负--------锛歿}", serviceSubtask);
-             if (score != null) serviceSubtask.setScore(BigDecimal.valueOf(score));
-             serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
-+
-+            //灏嗗綋鍓嶅彂閫佺姸鎬佹敼鎴�9瀹屾垚
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setPreachform(serviceSubtask.getCurrentPreachform());
-+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+            if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+                ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0);
-+                ssp.setSendstate("9");
-+                serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp);
-+            }
-+
-         }
-         return 1;
-     }
- 
-+    @Override
-+    public Boolean saveMYDQuestionAnswer(ServiceSubTaskMYDAnswerReq serviceSubTaskMYDAnswerReq) {
-+        //鐢ㄦ潵澶勭悊鎶曡瘔寤鸿鐨勯儴闂�
-+        String dealDept = null;
-+
-+        Long patid = null;
-+        List<PatMedInhosp> patMedInhospList = null;
-+        List<PatMedOuthosp> patMedOuthosps = null;
-+        List<Long> idList = new ArrayList<>();
-+        if (serviceSubTaskMYDAnswerReq.getMzzy().equals("1")) {
-+            //浣忛櫌
-+            PatMedInhosp patMedInhosp = new PatMedInhosp();
-+            patMedInhosp.setSerialnum(serviceSubTaskMYDAnswerReq.getSerialnum());
-+            patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
-+            if (CollectionUtils.isNotEmpty(patMedInhospList)) patid = patMedInhospList.get(0).getPatid();
-+        } else if (serviceSubTaskMYDAnswerReq.getMzzy().equals("2")) {
-+            //闂ㄨ瘖
-+            PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
-+            patMedOuthosp.setSerialnum(serviceSubTaskMYDAnswerReq.getSerialnum());
-+            patMedOuthosps = patMedOuthospMapper.selectPatMedOuthospList(patMedOuthosp);
-+            if (CollectionUtils.isNotEmpty(patMedOuthosps)) patid = patMedOuthosps.get(0).getPatid();
-+        } else if (serviceSubTaskMYDAnswerReq.getMzzy().equals("3")) {
-+            //鎸囧畾涓�涓儴闂紝鐢ㄦ潵澶勭悊鎶曡瘔寤鸿
-+            dealDept = dealDeptCode;
-+            String serialnum = serviceSubTaskMYDAnswerReq.getSerialnum();
-+            PatArchive patArchive = new PatArchive();
-+            patArchive.setPatientno(serialnum);
-+            List<PatArchive> patArchives = patArchiveMapper.selectPatArchiveList(patArchive);
-+            if (CollectionUtils.isNotEmpty(patArchives)) {
-+                patid = patArchives.get(0).getId();
-+            }
-+        }
-+
-+        if (CollectionUtils.isNotEmpty(serviceSubTaskMYDAnswerReq.getSvyLibTemplateScriptVOS())) {
-+            Double score = null;
-+            List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS = serviceSubTaskMYDAnswerReq.getSvyLibTemplateScriptVOS();
-+            Long nextScriptno = null;
-+            for (int i = 0; i < svyLibTemplateScriptVOS.size(); i++) {
-+                if (i == 0) {
-+                    //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
-+                    for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOS) {
-+                        if (svyLibTemplateScriptVO.getSort() == 1L) {
-+                            //璇存槑鏄涓�棰�
-+                            SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(0), SvyTaskTemplateScriptVO.class);
-+                            List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateScriptVOS.get(0).getSvyLibTemplateTargetoptions();
-+                            List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyLibTemplateTargetoptions, SvyTaskTemplateTargetoption.class);
-+                            svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-+                            Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()), patid);
-+                            if (map == null) continue;
-+                            if (!Objects.isNull(map.get("nextScriptNo")))
-+                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                            if (score == null) {
-+                                score = Double.valueOf(map.get("score"));
-+                            } else {
-+                                score = score + Double.valueOf(map.get("score"));
-+                            }
-+                            if (!Objects.isNull(map.get("id"))) {
-+                                idList.add(Long.valueOf(map.get("id")));
-+                            }
-+                        }
-+                    }
-+
-+                } else {
-+                    SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(i), SvyTaskTemplateScriptVO.class);
-+                    List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(i).getSvyLibTemplateTargetoptions(), SvyTaskTemplateTargetoption.class);
-+                    svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-+
-+                    if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
-+                        log.error("svyTaskTemplateScriptVO鐨勫�间负锛歿}", svyTaskTemplateScriptVO);
-+                        Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()), patid);
-+                        log.error("map鐨勪俊鎭负锛歿}", map);
-+                        if (!Objects.isNull(map.get("nextScriptNo")))
-+                            nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                        if (score == null) {
-+                            score = Double.valueOf(map.get("score"));
-+                        } else {
-+                            score = score + Double.valueOf(map.get("score"));
-+                        }
-+                        if (!Objects.isNull(map.get("id"))) {
-+                            idList.add(Long.valueOf(map.get("id")));
-+                        }
-+                    }
-+                }
-+            }
-+            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()));
-+            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);
-+
-+            if (!Objects.isNull(serviceTask)) {
-+                ServiceSubtask serviceSubtask = new ServiceSubtask();
-+                serviceSubtask.setTaskid(serviceTask.getTaskid());
-+                serviceSubtask.setTaskName(serviceTask.getTaskName());
-+                serviceSubtask.setTaskDesc(serviceTask.getTaskDesc());
-+                serviceSubtask.setTemplateid(serviceTask.getTemplateid());
-+                serviceSubtask.setTemplatename(serviceTask.getTemplatename());
-+                serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
-+                if (CollectionUtils.isNotEmpty(patMedInhospList)) {
-+                    serviceSubtask.setHospType("2");
-+                    serviceSubtask.setDeptname(patMedInhospList.get(0).getDeptname());
-+                    serviceSubtask.setDeptcode(patMedInhospList.get(0).getDeptcode());
-+                    serviceSubtask.setLeavehospitaldistrictcode(patMedInhospList.get(0).getLeavehospitaldistrictcode());
-+                    serviceSubtask.setLeavehospitaldistrictname(patMedInhospList.get(0).getLeavehospitaldistrictname());
-+                    serviceSubtask.setDrname(patMedInhospList.get(0).getDrname());
-+                    serviceSubtask.setDrcode(patMedInhospList.get(0).getDrcode());
-+                    serviceSubtask.setNurseName(patMedInhospList.get(0).getNurseName());
-+                    serviceSubtask.setNurseId(patMedInhospList.get(0).getNurseId());
-+                    serviceSubtask.setInhospid(patMedInhospList.get(0).getInhospid());
-+                    serviceSubtask.setServiceType("6");
-+                } else if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
-+                    serviceSubtask.setHospType("1");
-+                    serviceSubtask.setAdmindate(patMedOuthosps.get(0).getAdmitdate());
-+                    serviceSubtask.setHospno(patMedOuthosps.get(0).getOuthospno());
-+                    serviceSubtask.setDeptname(patMedOuthosps.get(0).getDeptname());
-+                    serviceSubtask.setDeptcode(patMedOuthosps.get(0).getDeptcode());
-+                    serviceSubtask.setDrname(patMedOuthosps.get(0).getDrname());
-+                    serviceSubtask.setDrcode(patMedOuthosps.get(0).getDrcode());
-+                    serviceSubtask.setServiceType("14");
-+                }
-+                if (!Objects.isNull(patArchive)) {
-+                    serviceSubtask.setPatid(patArchive.getId());
-+                    serviceSubtask.setSendname(patArchive.getName());
-+                    serviceSubtask.setSex(patArchive.getSex());
-+                    serviceSubtask.setPhone(patArchive.getTelcode());
-+                    serviceSubtask.setSfzh(patArchive.getIdcardno());
-+                    serviceSubtask.setAddr(patArchive.getPlaceOfResidence());
-+                    serviceSubtask.setOrgid(patArchive.getOrgid());
-+                }
-+                if (StringUtils.isNotEmpty(dealDept)) {
-+                    //鎶曡瘔寤鸿鐨勫鐞嗛儴闂�
-+                    serviceSubtask.setDeptcode(dealDept);
-+                    serviceSubtask.setServiceType("15");
-+                }
-+                serviceSubtask.setSubmit(1L);
-+                serviceSubtask.setSendstate(6L);
-+                serviceSubtask.setType("2");
-+                serviceSubtask.setExcep(null);
-+                serviceSubtask.setFinishtime(new Date());
-+                serviceSubtask.setUpdateTime(new Date());
-+                serviceSubtask.setCreateTime(new Date());
-+                serviceSubtask.setVisitTime(new Date());
-+                if (score != null) serviceSubtask.setScore(BigDecimal.valueOf(score));
-+                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
-+                //灏嗗綋鍓嶅彂閫佺姸鎬佹敼鎴�9瀹屾垚
-+                ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+                serviceSubtaskPreachform.setPreachform(serviceSubtask.getCurrentPreachform());
-+                serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+                serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+                List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+                if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+                    ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0);
-+                    ssp.setSendstate("9");
-+                    serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp);
-+                }
-+
-+                for (Long detailId : idList) {
-+                    ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
-+                    serviceSubtaskDetail.setId(detailId);
-+                    serviceSubtaskDetail.setSubId(serviceSubtask.getId());
-+                    serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail);
-+                }
-+            }
-+        }
-+
-+        return true;
-+    }
-+
- 
-     /**
-      * 灏嗛棶棰樹繚瀛樺埌缂撳瓨涓�
-@@ -287,7 +477,7 @@
-                 tid = Long.valueOf(serviceSubTaskCacheReq.getParam1());
-                 pid = Long.valueOf(serviceSubTaskCacheReq.getParam2());
-             }
--            if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS()) &&  serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS().size() > 0) {
-+            if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS()) && serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS().size() > 0) {
-                 //闂嵎
-                 redisCache.deleteObject(pid + "-" + tid + "-WJscriptCache");
-                 redisCache.setCacheListRight(pid + "-" + tid + "-WJscriptCache", serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS());
-@@ -428,7 +618,7 @@
-         List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);
-         if (CollectionUtils.isNotEmpty(serviceSubtaskDetails)) {
-             map.put("asrtext", serviceSubtaskDetails.get(0).getAsrtext());
--            map.put("asrtextId", serviceSubtaskDetails.get(0).getId());
-+            map.put("asrtextId", "" + serviceSubtaskDetails.get(0).getId());
-             map.put("answerps", serviceSubtaskDetails.get(0).getAnswerps());
-             return map;
-         }
-@@ -440,7 +630,6 @@
-         serviceSubtaskVO.setTaskid(taskid);
-         serviceSubtaskVO.setPatid(patid);
-         List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
--
-         String score = "0";
-         //涓嬮璺宠浆
-         String nextScriptNo = null;
-@@ -455,35 +644,15 @@
-                 } else {
-                     serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + "&" + svyTaskTemplateTargetoption.getOptioncontent());
-                 }
--//                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();
--//                    }
--//                }
-+
-             }
--            nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
-+            nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno();
-             if (svyTaskTemplateScriptVO.getScore() != null) {
-                 score = String.valueOf(svyTaskTemplateScriptVO.getScore());
-             }
-             serviceSubtaskDetailVO.setAsrtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? "" : svyTaskTemplateScriptVO.getScriptResult().replaceAll("^\"|\"$", ""));
-             serviceSubtaskDetailVO.setMatchedtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? "" : svyTaskTemplateScriptVO.getScriptResult().replaceAll("^\"|\"$", ""));
--//            if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {
-+            //            if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {
- //                nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
- //            }
- //            serviceSubtaskDetailVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions());
-@@ -520,6 +689,7 @@
-         Map<String, String> map = new HashMap<>();
-         map.put("nextScriptNo", nextScriptNo);
-         map.put("score", score);
-+        map.put("id", "" + serviceSubtaskDetail.getId());
-         return map;
-     }
- 
-Index: smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java
-new file mode 100644
---- /dev/null	(date 1758694941859)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java	(date 1758694941859)
-@@ -0,0 +1,89 @@
-+package com.smartor.domain;
-+
-+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;
-+
-+/**
-+ * 銆愯濉啓鍔熻兘鍚嶇О銆戝璞� service_subtask_preachform
-+ *
-+ * @author lihu
-+ * @date 2025-09-15
-+ */
-+@Data
-+@ApiModel("銆愯濉啓鍔熻兘鍚嶇О銆�")
-+public class ServiceSubtaskPreachform 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 subid;
-+
-+    /**
-+     * 鏈嶅姟ID
-+     */
-+    @ApiModelProperty("鏈嶅姟ID")
-+    @Excel(name = "鏈嶅姟ID")
-+    private Long taskid;
-+
-+    /**
-+     * 鍙戦�佹柟寮�(1,浜哄伐 2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴� 7.鏀粯瀹濆皬绋嬪簭  8.鏅鸿兘鏈哄櫒浜�  9.閽夐拤)
-+     */
-+    @ApiModelProperty("鍙戦�佹柟寮�")
-+    @Excel(name = "鍙戦�佹柟寮�")
-+    private String preachform;
-+
-+    /**
-+     * 鐭俊鐘舵�侊細1鏈彂閫�    2宸插彂閫�   3宸查鍙�   4鍙风爜閿欒(鏃犳剰涔夛紝涓轰簡鍜屽叾瀹冮厤骞�)     5鍙戦�佸け璐�      9瀹屾垚
-+     * <p>
-+     * 寰俊鐘舵�侊細1鏈彂閫�    2宸插彂閫�   3宸查鍙�   4寰俊鍙烽敊璇�(鏃犳剰涔夛紝涓轰簡鍜屽叾瀹冮厤骞�)    5鍙戦�佸け璐�     9瀹屾垚
-+     * <p>
-+     * 鏅鸿兘璇煶鐘舵�侊細1鏈墽琛�  2宸插彂閫�  3鎷掓帴鎷掕   4鍙风爜閿欒   5鎵ц澶辫触    9瀹屾垚
-+     * <p>
-+     * 浜哄伐闅忚鐘舵�侊細1鏈墽琛�   2宸插彂閫�  3鎷掓帴鎷掕  4鍙风爜閿欒   5鎵ц澶辫触    9瀹屾垚
-+     * <p>
-+     * 闈㈣鐘舵�侊細1鏈墽琛�   9瀹屾垚
-+     */
-+    @ApiModelProperty("鍙戦�佺姸鎬�")
-+    private String sendstate;
-+
-+    /**
-+     * 鏈烘瀯缂栫爜
-+     */
-+    @ApiModelProperty("鏈烘瀯缂栫爜")
-+    @Excel(name = "鏈烘瀯缂栫爜")
-+    private String orgid;
-+
-+    /**
-+     * 鍒犻櫎鐘舵��
-+     */
-+    @ApiModelProperty("鍒犻櫎鐘舵��")
-+    private String delFlag;
-+
-+    /**
-+     * 椤哄簭
-+     */
-+    @ApiModelProperty("椤哄簭")
-+    @Excel(name = "椤哄簭")
-+    private Long sort;
-+
-+    /**
-+     * 琛ュ伩鏃堕棿锛堝崟浣嶅ぉ锛�
-+     */
-+    @ApiModelProperty("琛ュ伩鏃堕棿锛堝崟浣嶅ぉ锛�")
-+    @Excel(name = "琛ュ伩鏃堕棿锛堝崟浣嶅ぉ锛�")
-+    private String compensateTime;
-+}
-+
-Index: smartor/src/main/java/com/smartor/domain/ServiceSLTDDeptReqVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSLTDDeptReqVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSLTDDeptReqVO.java
-new file mode 100644
---- /dev/null	(date 1758682819663)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSLTDDeptReqVO.java	(date 1758682819663)
-@@ -0,0 +1,48 @@
-+package com.smartor.domain;
-+
-+import io.swagger.annotations.ApiModel;
-+import io.swagger.annotations.ApiModelProperty;
-+import lombok.Data;
-+
-+import java.util.List;
-+
-+@ApiModel(value = "ServiceSLTDCommonReqVO", description = "鐪佺珛鍚屽痉鍑虹瀹ょ梾鍖鸿姹備俊鎭�")
-+@Data
-+public class ServiceSLTDDeptReqVO {
-+    @ApiModelProperty(value = "鏈烘瀯ID 鏈烘瀯鍞竴缂栧彿")
-+    private String orgId;
-+
-+    @ApiModelProperty(value = "闄㈠尯ID")
-+    private List<Long> campusIds;
-+
-+    @ApiModelProperty(value = "鏈烘瀯瀛︾锛屽瓧鍏竎ode")
-+    private String orgSubjectCode;
-+
-+
-+    @ApiModelProperty(value = "鍥介檯瀛︾锛屽瓧鍏竎ode ")
-+    private String subjectCode;
-+
-+    @ApiModelProperty(value = "绉戝鍚嶇О妯$硦鍖归厤")
-+    private Long searchText;
-+
-+    @ApiModelProperty(value = "閮ㄩ棬缁村害:  201-浜轰簨  202-涓氬姟  涓嶄紶-鍏ㄩ儴")
-+    private Long deptDimensions;
-+
-+
-+    @ApiModelProperty(value = "鏈嶅姟鑼冨洿  锛� 鎬ヨ瘖-emergency 鍖绘妧-medicalTechnology  闂ㄨ瘖-outpatient 浣忛櫌-hospitalization 浣撴-physicalExamination" +
-+            "鎵嬫湳-operation 鑽埧-drugRoom  鑽簱-drugWarehouse 鏉愭枡搴�-materialWarehouse   鎶㈡晳-rescue  鐣欒-observation 闈欓厤-venousConfig")
-+    private List<String> serviceScopes;
-+
-+
-+    @ApiModelProperty(value = "鏄惁鏄梾鍖�: 0-涓嶆槸 1-鏄�")
-+    private Integer inpatientArea;
-+
-+    @ApiModelProperty(value = "鍋滅敤鐘舵�� : 1-鏈仠鐢� 0-鍋滅敤 涓嶄紶-鍏ㄩ儴")
-+    private Integer status;
-+
-+
-+    @ApiModelProperty(value = "閮ㄩ棬绫诲瀷锛� FH0132.01-鍖荤枟   FH0132.02-鏁欏  FH0132.03-绉戠爺  FH0132.04-琛屾斂  FH0132.05-鍚庡嫟 FH0132.06-鍏朵粬")
-+    private String deptType;
-+
-+
-+}
-Index: ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.system.service.impl;\r\n\r\nimport com.ruoyi.common.annotation.DataScope;\r\nimport com.ruoyi.common.constant.UserConstants;\r\nimport com.ruoyi.common.core.domain.entity.*;\r\nimport com.ruoyi.common.exception.ServiceException;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.SecurityUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.bean.BeanValidators;\r\nimport com.ruoyi.common.utils.spring.SpringUtils;\r\nimport com.ruoyi.system.domain.SysPost;\r\nimport com.ruoyi.system.domain.SysUserPost;\r\nimport com.ruoyi.system.mapper.*;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.ruoyi.system.service.ISysUserService;\r\nimport com.smartor.domain.SvyTaskVO;\r\nimport com.smartor.mapper.SysUserDeptMapper;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Service;\r\nimport org.springframework.transaction.annotation.Transactional;\r\nimport org.springframework.util.CollectionUtils;\r\nimport org.springframework.util.ObjectUtils;\r\n\r\nimport javax.validation.Validator;\r\nimport java.util.*;\r\nimport java.util.stream.Collectors;\r\n\r\n/**\r\n * 鐢ㄦ埛 涓氬姟灞傚鐞哱r\n *\r\n * @author ruoyi\r\n */\r\n@Service\r\npublic class SysUserServiceImpl implements ISysUserService {\r\n    private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);\r\n\r\n    @Autowired\r\n    private SysUserMapper userMapper;\r\n\r\n    @Autowired\r\n    private SysDeptMapper sysDeptMapper;\r\n\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    @Autowired\r\n    private SysRoleMapper roleMapper;\r\n\r\n    @Autowired\r\n    private SysPostMapper postMapper;\r\n\r\n    @Autowired\r\n    private SysUserRoleMapper userRoleMapper;\r\n\r\n    @Autowired\r\n    private SysUserPostMapper userPostMapper;\r\n\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n    @Autowired\r\n    protected Validator validator;\r\n\r\n    @Value(\"${isAdmin}\")\r\n    private List<Long> isAdmin;\r\n\r\n    /**\r\n     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅\r\n     */\r\n    @Override\r\n    @DataScope(deptAlias = \"d\", userAlias = \"u\")\r\n    public List<SysUser> selectUserList(SysUser user) {\r\n        return userMapper.selectUserList(user);\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛╘r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅\r\n     */\r\n    @Override\r\n    @DataScope(deptAlias = \"d\", userAlias = \"u\")\r\n    public List<SysUser> selectAllocatedList(SysUser user) {\r\n        return userMapper.selectAllocatedList(user);\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛╘r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅\r\n     */\r\n    @Override\r\n    @DataScope(deptAlias = \"d\", userAlias = \"u\")\r\n    public List<SysUser> selectUnallocatedList(SysUser user) {\r\n        return userMapper.selectUnallocatedList(user);\r\n    }\r\n\r\n    /**\r\n     * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴穃r\n     *\r\n     * @param userName 鐢ㄦ埛鍚峔r\n     * @return 鐢ㄦ埛瀵硅薄淇℃伅\r\n     */\r\n    @Override\r\n    public SysUser selectUserByUserName(String userName) {\r\n        SysUser sysUser = userMapper.selectUserByUserName(userName);\r\n        List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());\r\n        List<Long> deptIds = new ArrayList<>();\r\n        for (SysDept sysDept : sysDepts) {\r\n            deptIds.add(sysDept.getDeptId());\r\n        }\r\n        SysUserDept sysUserDept = new SysUserDept();\r\n        sysUserDept.setUserId(sysUser.getUserId());\r\n        sysUserDept.setDeptType(sysUser.getSearchscope());\r\n        List<SysUserDept> sysUserDeptKSs = null;\r\n        List<SysUserDept> sysUserDeptBQs = null;\r\n        if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"0\")) {\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"1\")) {\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"2\")) {\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        }\r\n\r\n        sysUser.setDepts(deptIds);\r\n        if (!CollectionUtils.isEmpty(sysUserDeptBQs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptBQs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"districtCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"districtCode\", sud.getDeptCode());\r\n                map.put(\"districtName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"districtName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongWards(list);\r\n        }\r\n        if (!CollectionUtils.isEmpty(sysUserDeptKSs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptKSs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"deptCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"deptCode\", sud.getDeptCode());\r\n                map.put(\"deptName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"deptName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongDepts(list);\r\n        }\r\n        return sysUser;\r\n    }\r\n\r\n    @Override\r\n    public SysUser selectUserByUserName2(String userName) {\r\n        String[] split = userName.split(\"&\");\r\n        SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], null);\r\n        if (Objects.isNull(sysUser)) return sysUser;\r\n        List<SysDept> sysDepts = null;\r\n        if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n            SysDept dept = new SysDept();\r\n            dept.setOrgid(split[1]);\r\n            sysDepts = sysDeptMapper.selectDeptList(dept);\r\n        } else {\r\n            sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());\r\n        }\r\n        List<Long> deptIds = new ArrayList<>();\r\n        for (SysDept sysDept : sysDepts) {\r\n            deptIds.add(sysDept.getDeptId());\r\n        }\r\n        SysUserDept sysUserDept = new SysUserDept();\r\n        sysUserDept.setUserId(sysUser.getUserId());\r\n        sysUserDept.setDeptType(sysUser.getSearchscope());\r\n        sysUserDept.setOrgid(split[1]);\r\n        List<SysUserDept> sysUserDeptKSs = null;\r\n        List<SysUserDept> sysUserDeptBQs = null;\r\n        if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"0\")) {\r\n            if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n                sysUserDept.setUserId(null);\r\n            }\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n            //濡傛灉鏄痑dmin锛岄渶瑕佸sysUserDeptBQs锛宻ysUserDeptBQs鍘婚噸\r\n            if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n                //濡傛灉鏄痑dmin锛屽彧鑳藉幓sys_dept鍘诲彇鏁版嵁\r\n                SysDept dept = new SysDept();\r\n                dept.setOrgid(split[1]);\r\n                dept.setDeptType(\"1\");\r\n                sysDepts = sysDeptMapper.selectDeptList(dept);\r\n                sysUserDeptKSs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);\r\n\r\n                dept.setDeptType(\"2\");\r\n                sysDepts = sysDeptMapper.selectDeptList(dept);\r\n                sysUserDeptBQs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);\r\n\r\n                List<SysUserDept> distinctUserDepts = new ArrayList<>();\r\n                Set<String> uniqueDeptCodes = new HashSet<>();\r\n                for (SysUserDept userDept : sysUserDeptKSs) {\r\n                    String deptCode = userDept.getDeptCode();\r\n                    if (StringUtils.isNotEmpty(deptCode) && !uniqueDeptCodes.contains(deptCode)) {\r\n                        distinctUserDepts.add(userDept);\r\n                        uniqueDeptCodes.add(deptCode);\r\n                    }\r\n                }\r\n\r\n                List<SysUserDept> distinctUserBQs = new ArrayList<>();\r\n                Set<String> uniqueBQCodes = new HashSet<>();\r\n                for (SysUserDept userDept : sysUserDeptBQs) {\r\n                    String deptCode = userDept.getDeptCode();\r\n                    if (StringUtils.isNotEmpty(deptCode) && !uniqueBQCodes.contains(deptCode)) {\r\n                        distinctUserBQs.add(userDept);\r\n                        uniqueBQCodes.add(deptCode);\r\n                    }\r\n                }\r\n                sysUserDeptKSs = distinctUserDepts;\r\n                sysUserDeptBQs = distinctUserBQs;\r\n            }\r\n\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"1\")) {\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"2\")) {\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        }\r\n\r\n        sysUser.setDepts(deptIds);\r\n        if (!CollectionUtils.isEmpty(sysUserDeptBQs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptBQs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"districtCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"districtCode\", sud.getDeptCode());\r\n                else continue;\r\n                map.put(\"districtName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"districtName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongWards(list);\r\n        }\r\n        if (!CollectionUtils.isEmpty(sysUserDeptKSs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptKSs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"deptCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"deptCode\", sud.getDeptCode());\r\n                else continue;\r\n                map.put(\"deptName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"deptName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongDepts(list);\r\n        }\r\n        return sysUser;\r\n    }\r\n\r\n    @Override\r\n    public SysUser selectUserByUserNameAndDeptId(String userName) {\r\n        String[] split = userName.split(\"&\");\r\n        SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], split[2]);\r\n        if (Objects.isNull(sysUser)) return sysUser;\r\n        List<SysDept> sysDepts = null;\r\n        if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n            SysDept dept = new SysDept();\r\n            dept.setOrgid(split[1]);\r\n            sysDepts = sysDeptMapper.selectDeptList(dept);\r\n        } else {\r\n            sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());\r\n        }\r\n        List<Long> deptIds = new ArrayList<>();\r\n        for (SysDept sysDept : sysDepts) {\r\n            deptIds.add(sysDept.getDeptId());\r\n        }\r\n        SysUserDept sysUserDept = new SysUserDept();\r\n        sysUserDept.setUserId(sysUser.getUserId());\r\n        sysUserDept.setDeptType(sysUser.getSearchscope());\r\n        sysUserDept.setOrgid(split[1]);\r\n        List<SysUserDept> sysUserDeptKSs = null;\r\n        List<SysUserDept> sysUserDeptBQs = null;\r\n        if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"0\")) {\r\n            if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n                sysUserDept.setUserId(null);\r\n            }\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n            //濡傛灉鏄痑dmin锛岄渶瑕佸sysUserDeptBQs锛宻ysUserDeptBQs鍘婚噸\r\n            if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n                //濡傛灉鏄痑dmin锛屽彧鑳藉幓sys_dept鍘诲彇鏁版嵁\r\n                SysDept dept = new SysDept();\r\n                dept.setOrgid(split[1]);\r\n                dept.setDeptType(\"1\");\r\n                sysDepts = sysDeptMapper.selectDeptList(dept);\r\n                sysUserDeptKSs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);\r\n\r\n                dept.setDeptType(\"2\");\r\n                sysDepts = sysDeptMapper.selectDeptList(dept);\r\n                sysUserDeptBQs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);\r\n\r\n                List<SysUserDept> distinctUserDepts = new ArrayList<>();\r\n                Set<String> uniqueDeptCodes = new HashSet<>();\r\n                for (SysUserDept userDept : sysUserDeptKSs) {\r\n                    String deptCode = userDept.getDeptCode();\r\n                    if (StringUtils.isNotEmpty(deptCode) && !uniqueDeptCodes.contains(deptCode)) {\r\n                        distinctUserDepts.add(userDept);\r\n                        uniqueDeptCodes.add(deptCode);\r\n                    }\r\n                }\r\n\r\n                List<SysUserDept> distinctUserBQs = new ArrayList<>();\r\n                Set<String> uniqueBQCodes = new HashSet<>();\r\n                for (SysUserDept userDept : sysUserDeptBQs) {\r\n                    String deptCode = userDept.getDeptCode();\r\n                    if (StringUtils.isNotEmpty(deptCode) && !uniqueBQCodes.contains(deptCode)) {\r\n                        distinctUserBQs.add(userDept);\r\n                        uniqueBQCodes.add(deptCode);\r\n                    }\r\n                }\r\n                sysUserDeptKSs = distinctUserDepts;\r\n                sysUserDeptBQs = distinctUserBQs;\r\n            }\r\n\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"1\")) {\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"2\")) {\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        }\r\n\r\n        sysUser.setDepts(deptIds);\r\n        if (!CollectionUtils.isEmpty(sysUserDeptBQs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptBQs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"districtCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"districtCode\", sud.getDeptCode());\r\n                else continue;\r\n                map.put(\"districtName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"districtName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongWards(list);\r\n        }\r\n        if (!CollectionUtils.isEmpty(sysUserDeptKSs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptKSs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"deptCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"deptCode\", sud.getDeptCode());\r\n                else continue;\r\n                map.put(\"deptName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"deptName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongDepts(list);\r\n        }\r\n        return sysUser;\r\n    }\r\n\r\n\r\n    /**\r\n     * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛\r\n     *\r\n     * @param userId 鐢ㄦ埛ID\r\n     * @return 鐢ㄦ埛瀵硅薄淇℃伅\r\n     */\r\n    @Override\r\n    public SysUser selectUserById(Long userId) {\r\n        SysUser sysUser = userMapper.selectUserById(userId);\r\n        List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());\r\n        List<Long> deptIds = new ArrayList<>();\r\n        for (SysDept sysDept : sysDepts) {\r\n            deptIds.add(sysDept.getDeptId());\r\n        }\r\n        sysUser.setDepts(deptIds);\r\n        return sysUser;\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍\r\n     *\r\n     * @param userName 鐢ㄦ埛鍚峔r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String selectUserRoleGroup(String userName) {\r\n        List<SysRole> list = roleMapper.selectRolesByUserName(userName);\r\n        if (CollectionUtils.isEmpty(list)) {\r\n            return StringUtils.EMPTY;\r\n        }\r\n        return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(\",\"));\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍\r\n     *\r\n     * @param userName 鐢ㄦ埛鍚峔r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String selectUserPostGroup(String userName) {\r\n        List<SysPost> list = postMapper.selectPostsByUserName(userName);\r\n        if (CollectionUtils.isEmpty(list)) {\r\n            return StringUtils.EMPTY;\r\n        }\r\n        return list.stream().map(SysPost::getPostName).collect(Collectors.joining(\",\"));\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String checkUserNameUnique(SysUser user) {\r\n        Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();\r\n        SysUser info = userMapper.checkUserNameUnique(user.getUserName());\r\n        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {\r\n            return UserConstants.NOT_UNIQUE;\r\n        }\r\n        return UserConstants.UNIQUE;\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return\r\n     */\r\n    @Override\r\n    public String checkPhoneUnique(SysUser user) {\r\n        Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();\r\n        SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());\r\n        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {\r\n            return UserConstants.NOT_UNIQUE;\r\n        }\r\n        return UserConstants.UNIQUE;\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙email鏄惁鍞竴\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return\r\n     */\r\n    @Override\r\n    public String checkEmailUnique(SysUser user) {\r\n        Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();\r\n        SysUser info = userMapper.checkEmailUnique(user.getEmail());\r\n        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {\r\n            return UserConstants.NOT_UNIQUE;\r\n        }\r\n        return UserConstants.UNIQUE;\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     */\r\n    @Override\r\n    public void checkUserAllowed(SysUser user) {\r\n        if (StringUtils.isNotNull(user.getUserId()) && isAdmin.contains(user.getUserId())) {\r\n            throw new ServiceException(\"涓嶅厑璁告搷浣滆秴绾х鐞嗗憳鐢ㄦ埛\");\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙鐢ㄦ埛鏄惁鏈夋暟鎹潈闄怽r\n     *\r\n     * @param userId 鐢ㄦ埛id\r\n     */\r\n    @Override\r\n    public void checkUserDataScope(Long userId) {\r\n        if (!isAdmin.contains(SecurityUtils.getUserId())) {\r\n            SysUser user = new SysUser();\r\n            user.setUserId(userId);\r\n            List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);\r\n            if (StringUtils.isEmpty(users)) {\r\n                throw new ServiceException(\"娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛乗");\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鏂板淇濆瓨鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    @Transactional\r\n    public int insertUser(SysUser user) {\r\n        // 鏂板鐢ㄦ埛淇℃伅\r\n        int rows = userMapper.insertUser(user);\r\n        //鏂板鐢ㄦ埛涓庨儴闂ㄥ叧鑱擻r\n        if (!CollectionUtils.isEmpty(user.getDepts())) {\r\n            for (Long deptId : user.getDepts()) {\r\n                SysUserDept sysUserDep = new SysUserDept();\r\n                sysUserDep.setUserId(user.getUserId());\r\n                sysUserDep.setDeptId(deptId);\r\n                sysUserDep.setCreateTime(new Date());\r\n                sysUserDep.setUpdateTime(new Date());\r\n                sysUserDep.setOrgid(user.getOrgid());\r\n                sysUserDeptMapper.insertSysUserDept(sysUserDep);\r\n            }\r\n        }\r\n        // 鏂板鐢ㄦ埛宀椾綅鍏宠仈\r\n        insertUserPost(user);\r\n        // 鏂板鐢ㄦ埛涓庤鑹茬鐞哱r\n        insertUserRole(user);\r\n        return rows;\r\n    }\r\n\r\n    /**\r\n     * 娉ㄥ唽鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public boolean registerUser(SysUser user) {\r\n        return userMapper.insertUser(user) > 0;\r\n    }\r\n\r\n    /**\r\n     * 淇敼淇濆瓨鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    @Transactional\r\n    public int updateUser(SysUser user) {\r\n        Long userId = user.getUserId();\r\n        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱擻r\n        userRoleMapper.deleteUserRoleByUserId(userId);\r\n        // 鏂板鐢ㄦ埛涓庤鑹茬鐞哱r\n        insertUserRole(user);\r\n        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱擻r\n        userPostMapper.deleteUserPostByUserId(userId);\r\n        // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞哱r\n        insertUserPost(user);\r\n        //鍒犻櫎鐢ㄦ埛涓庨儴闂ㄧ殑鍏宠仈\r\n        Long[] ids = {user.getUserId()};\r\n        //鏂板鐢ㄦ埛涓庨儴闂ㄥ叧鑱擻r\n//        sysUserDeptMapper.deleteSysUserDeptByIds(ids);\r\n//        if (!CollectionUtils.isEmpty(user.getDepts())) {\r\n//            for (Long deptId : user.getDepts()) {\r\n//                SysUserDept sysUserDep = new SysUserDept();\r\n//                sysUserDep.setUserId(user.getUserId());\r\n//                sysUserDep.setDeptId(deptId);\r\n//                //鏌ヨ鏄惁 宸茬粡鍏宠仈璇ラ儴闂╘r\n//                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDep);\r\n//                if (!CollectionUtils.isEmpty(sysUserDepts)) {\r\n//                    SysUserDept sysUserDept = sysUserDepts.get(0);\r\n//                    sysUserDept.setDelFlag(0L);\r\n//                    sysUserDeptMapper.updateSysUserDept(sysUserDept);\r\n//                    continue;\r\n//                }\r\n//                sysUserDep.setCreateTime(new Date());\r\n//                sysUserDep.setUpdateTime(new Date());\r\n//                sysUserDeptMapper.insertSysUserDept(sysUserDep);\r\n//            }\r\n//        }\r\n        if (!CollectionUtils.isEmpty(user.getDeptCodes())) {\r\n            for (String deptCode : user.getDeptCodes()) {\r\n                SysDept sysDept = sysDeptMapper.selectDeptByCode(deptCode);\r\n                if (ObjectUtils.isEmpty(sysDept)) {\r\n                    continue;\r\n                }\r\n\r\n                SysUserDept sysUserDept = new SysUserDept();\r\n                sysUserDept.setUserId(user.getUserId());\r\n                sysUserDept.setOrgid(user.getOrgid());\r\n                sysUserDept.setDeptCode(deptCode);\r\n                sysUserDept.setDeptId(sysDept.getDeptId());\r\n                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n                sysUserDept.setDelFlag(0L);\r\n                sysUserDept.setDeptType(\"1\");\r\n                sysUserDept.setDeptName(sysDept.getDeptName());\r\n                sysUserDept.setUpdateTime(new Date());\r\n                if (!CollectionUtils.isEmpty(sysUserDepts)) {\r\n                    sysUserDept.setId(sysUserDepts.get(0).getId());\r\n                    sysUserDeptMapper.updateSysUserDept(sysUserDept);\r\n                    continue;\r\n                }\r\n                sysUserDept.setCreateTime(new Date());\r\n                sysUserDeptMapper.insertSysUserDept(sysUserDept);\r\n            }\r\n        }\r\n        if (!CollectionUtils.isEmpty(user.getWardCodes())) {\r\n            for (String wardCode : user.getWardCodes()) {\r\n                SysDept sysDept = sysDeptMapper.selectDeptByCode(wardCode);\r\n                if (ObjectUtils.isEmpty(sysDept)) {\r\n                    continue;\r\n                }\r\n                SysUserDept sysUserDept = new SysUserDept();\r\n                sysUserDept.setUserId(user.getUserId());\r\n                sysUserDept.setDeptCode(wardCode);\r\n                sysUserDept.setDeptId(sysDept.getDeptId());\r\n                sysUserDept.setOrgid(user.getOrgid());\r\n                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n                sysUserDept.setDelFlag(0L);\r\n                sysUserDept.setDeptType(\"2\");\r\n                sysUserDept.setOrgid(user.getOrgid());\r\n                sysUserDept.setDeptName(sysDept.getDeptName());\r\n                sysUserDept.setUpdateTime(new Date());\r\n                if (!CollectionUtils.isEmpty(sysUserDepts)) {\r\n                    sysUserDeptMapper.updateSysUserDept(sysUserDept);\r\n                    continue;\r\n                }\r\n                sysUserDept.setCreateTime(new Date());\r\n                sysUserDeptMapper.insertSysUserDept(sysUserDept);\r\n            }\r\n        }\r\n        return userMapper.updateUser(user);\r\n    }\r\n\r\n    /**\r\n     * 鐢ㄦ埛鎺堟潈瑙掕壊\r\n     *\r\n     * @param userId  鐢ㄦ埛ID\r\n     * @param roleIds 瑙掕壊缁刓r\n     */\r\n    @Override\r\n    @Transactional\r\n    public void insertUserAuth(Long userId, Long[] roleIds, String orgid) {\r\n        userRoleMapper.deleteUserRoleByUserId(userId);\r\n        insertUserRole(userId, roleIds, orgid);\r\n    }\r\n\r\n    /**\r\n     * 淇敼鐢ㄦ埛鐘舵�乗r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateUserStatus(SysUser user) {\r\n        return userMapper.updateUser(user);\r\n    }\r\n\r\n    /**\r\n     * 淇敼鐢ㄦ埛鍩烘湰淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateUserProfile(SysUser user) {\r\n        return userMapper.updateUser(user);\r\n    }\r\n\r\n    /**\r\n     * 淇敼鐢ㄦ埛澶村儚\r\n     *\r\n     * @param userName 鐢ㄦ埛鍚峔r\n     * @param avatar   澶村儚鍦板潃\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public boolean updateUserAvatar(String userName, String avatar) {\r\n        return userMapper.updateUserAvatar(userName, avatar) > 0;\r\n    }\r\n\r\n    /**\r\n     * 閲嶇疆鐢ㄦ埛瀵嗙爜\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int resetPwd(SysUser user) {\r\n        return userMapper.updateUser(user);\r\n    }\r\n\r\n    /**\r\n     * 閲嶇疆鐢ㄦ埛瀵嗙爜\r\n     *\r\n     * @param userName 鐢ㄦ埛鍚峔r\n     * @param password 瀵嗙爜\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int resetUserPwd(String userName, String password) {\r\n        return userMapper.resetUserPwd(userName, password);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐢ㄦ埛瑙掕壊淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛瀵硅薄\r\n     */\r\n    public void insertUserRole(SysUser user) {\r\n        this.insertUserRole(user.getUserId(), user.getRoleIds(), user.getOrgid());\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐢ㄦ埛宀椾綅淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛瀵硅薄\r\n     */\r\n    public void insertUserPost(SysUser user) {\r\n        Long[] posts = user.getPostIds();\r\n        if (StringUtils.isNotEmpty(posts)) {\r\n            // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞哱r\n            List<SysUserPost> list = new ArrayList<SysUserPost>(posts.length);\r\n            for (Long postId : posts) {\r\n                SysUserPost up = new SysUserPost();\r\n                up.setUserId(user.getUserId());\r\n                up.setPostId(postId);\r\n                up.setOrgid(user.getOrgid());\r\n                list.add(up);\r\n            }\r\n            userPostMapper.batchUserPost(list);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐢ㄦ埛瑙掕壊淇℃伅\r\n     *\r\n     * @param userId  鐢ㄦ埛ID\r\n     * @param roleIds 瑙掕壊缁刓r\n     */\r\n    public void insertUserRole(Long userId, Long[] roleIds, String orgid) {\r\n        if (StringUtils.isNotEmpty(roleIds)) {\r\n            // 鏂板鐢ㄦ埛涓庤鑹茬鐞哱r\n            List<SysUserRole> list = new ArrayList<SysUserRole>(roleIds.length);\r\n            for (Long roleId : roleIds) {\r\n                SysUserRole ur = new SysUserRole();\r\n                ur.setUserId(userId);\r\n                ur.setRoleId(roleId);\r\n                ur.setOrgid(orgid);\r\n                list.add(ur);\r\n            }\r\n            userRoleMapper.batchUserRole(list);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛\r\n     *\r\n     * @param userId 鐢ㄦ埛ID\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    @Transactional\r\n    public int deleteUserById(Long userId) {\r\n        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱擻r\n        userRoleMapper.deleteUserRoleByUserId(userId);\r\n        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃\r\n        userPostMapper.deleteUserPostByUserId(userId);\r\n        return userMapper.deleteUserById(userId);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    @Transactional\r\n    public int deleteUserByIds(Long[] userIds) {\r\n        for (Long userId : userIds) {\r\n            checkUserAllowed(new SysUser(userId));\r\n            checkUserDataScope(userId);\r\n        }\r\n        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱擻r\n        userRoleMapper.deleteUserRole(userIds);\r\n        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱擻r\n        userPostMapper.deleteUserPost(userIds);\r\n        return userMapper.deleteUserByIds(userIds);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎叆鐢ㄦ埛鏁版嵁\r\n     *\r\n     * @param userList        鐢ㄦ埛鏁版嵁鍒楄〃\r\n     * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁\r\n     * @param operName        鎿嶄綔鐢ㄦ埛\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {\r\n        if (StringUtils.isNull(userList) || userList.size() == 0) {\r\n            throw new ServiceException(\"瀵煎叆鐢ㄦ埛鏁版嵁涓嶈兘涓虹┖锛乗");\r\n        }\r\n        int successNum = 0;\r\n        int failureNum = 0;\r\n        StringBuilder successMsg = new StringBuilder();\r\n        StringBuilder failureMsg = new StringBuilder();\r\n        String password = configService.selectConfigByKey(\"sys.user.initPassword\");\r\n        for (SysUser user : userList) {\r\n            try {\r\n                // 楠岃瘉鏄惁瀛樺湪杩欎釜鐢ㄦ埛\r\n                SysUser u = userMapper.selectUserByUserName(user.getUserName());\r\n                if (StringUtils.isNull(u)) {\r\n                    BeanValidators.validateWithException(validator, user);\r\n                    user.setPassword(SecurityUtils.encryptPassword(password));\r\n                    user.setCreateBy(operName);\r\n                    this.insertUser(user);\r\n                    successNum++;\r\n                    successMsg.append(\"<br/>\" + successNum + \"銆佽处鍙� \" + user.getUserName() + \" 瀵煎叆鎴愬姛\");\r\n                } else if (isUpdateSupport) {\r\n                    BeanValidators.validateWithException(validator, user);\r\n                    checkUserAllowed(user);\r\n                    checkUserDataScope(user.getUserId());\r\n                    user.setUpdateBy(operName);\r\n                    this.updateUser(user);\r\n                    successNum++;\r\n                    successMsg.append(\"<br/>\" + successNum + \"銆佽处鍙� \" + user.getUserName() + \" 鏇存柊鎴愬姛\");\r\n                } else {\r\n                    failureNum++;\r\n                    failureMsg.append(\"<br/>\" + failureNum + \"銆佽处鍙� \" + user.getUserName() + \" 宸插瓨鍦╘");\r\n                }\r\n            } catch (Exception e) {\r\n                failureNum++;\r\n                String msg = \"<br/>\" + failureNum + \"銆佽处鍙� \" + user.getUserName() + \" 瀵煎叆澶辫触锛歕";\r\n                failureMsg.append(msg + e.getMessage());\r\n                log.error(msg, e);\r\n            }\r\n        }\r\n        if (failureNum > 0) {\r\n            failureMsg.insert(0, \"寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 \" + failureNum + \" 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細\");\r\n            throw new ServiceException(failureMsg.toString());\r\n        } else {\r\n            successMsg.insert(0, \"鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� \" + successNum + \" 鏉★紝鏁版嵁濡備笅锛歕");\r\n        }\r\n        return successMsg.toString();\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java	(date 1758682819291)
-@@ -272,7 +272,11 @@
-     @Override
-     public SysUser selectUserByUserNameAndDeptId(String userName) {
-         String[] split = userName.split("&");
-+        if (split[2].contains("null")) {
-+            split[2] = null;
-+        }
-         SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], split[2]);
-+        log.info("selectUserByUserNameAndDeptId鐨剆ysUser鐨勫�间负锛歿}", sysUser);
-         if (Objects.isNull(sysUser)) return sysUser;
-         List<SysDept> sysDepts = null;
-         if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) {
-@@ -512,15 +516,66 @@
-         // 鏂板鐢ㄦ埛淇℃伅
-         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());
--                sysUserDep.setOrgid(user.getOrgid());
--                sysUserDeptMapper.insertSysUserDept(sysUserDep);
-+//        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());
-+//                sysUserDep.setOrgid(user.getOrgid());
-+//                sysUserDeptMapper.insertSysUserDept(sysUserDep);
-+//            }
-+//        }
-+        if (!CollectionUtils.isEmpty(user.getDeptCodes())) {
-+            for (String deptCode : user.getDeptCodes()) {
-+                SysDept sysDept = sysDeptMapper.selectDeptByCode(deptCode);
-+                if (ObjectUtils.isEmpty(sysDept)) {
-+                    continue;
-+                }
-+
-+                SysUserDept sysUserDept = new SysUserDept();
-+                sysUserDept.setUserId(user.getUserId());
-+                sysUserDept.setOrgid(user.getOrgid());
-+                sysUserDept.setDeptCode(deptCode);
-+                sysUserDept.setDeptId(sysDept.getDeptId());
-+                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
-+                sysUserDept.setDelFlag(0L);
-+                sysUserDept.setDeptType("1");
-+                sysUserDept.setDeptName(sysDept.getDeptName());
-+                sysUserDept.setUpdateTime(new Date());
-+                if (!CollectionUtils.isEmpty(sysUserDepts)) {
-+                    sysUserDept.setId(sysUserDepts.get(0).getId());
-+                    sysUserDeptMapper.updateSysUserDept(sysUserDept);
-+                    continue;
-+                }
-+                sysUserDept.setCreateTime(new Date());
-+                sysUserDeptMapper.insertSysUserDept(sysUserDept);
-+            }
-+        }
-+        if (!CollectionUtils.isEmpty(user.getWardCodes())) {
-+            for (String wardCode : user.getWardCodes()) {
-+                SysDept sysDept = sysDeptMapper.selectDeptByCode(wardCode);
-+                if (ObjectUtils.isEmpty(sysDept)) {
-+                    continue;
-+                }
-+                SysUserDept sysUserDept = new SysUserDept();
-+                sysUserDept.setUserId(user.getUserId());
-+                sysUserDept.setDeptCode(wardCode);
-+                sysUserDept.setDeptId(sysDept.getDeptId());
-+                sysUserDept.setOrgid(user.getOrgid());
-+                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
-+                sysUserDept.setDelFlag(0L);
-+                sysUserDept.setDeptType("2");
-+                sysUserDept.setOrgid(user.getOrgid());
-+                sysUserDept.setDeptName(sysDept.getDeptName());
-+                sysUserDept.setUpdateTime(new Date());
-+                if (!CollectionUtils.isEmpty(sysUserDepts)) {
-+                    sysUserDeptMapper.updateSysUserDept(sysUserDept);
-+                    continue;
-+                }
-+                sysUserDept.setCreateTime(new Date());
-+                sysUserDeptMapper.insertSysUserDept(sysUserDept);
-             }
-         }
-         // 鏂板鐢ㄦ埛宀椾綅鍏宠仈
-Index: ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.framework.web.service;\r\n\r\nimport javax.annotation.Resource;\r\n\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.security.authentication.AuthenticationManager;\r\nimport org.springframework.security.authentication.BadCredentialsException;\r\nimport org.springframework.security.authentication.UsernamePasswordAuthenticationToken;\r\nimport org.springframework.security.core.Authentication;\r\nimport org.springframework.stereotype.Component;\r\nimport com.ruoyi.common.constant.CacheConstants;\r\nimport com.ruoyi.common.constant.Constants;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.exception.ServiceException;\r\nimport com.ruoyi.common.exception.user.CaptchaException;\r\nimport com.ruoyi.common.exception.user.CaptchaExpireException;\r\nimport com.ruoyi.common.exception.user.UserPasswordNotMatchException;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.MessageUtils;\r\nimport com.ruoyi.common.utils.ServletUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.ip.IpUtils;\r\nimport com.ruoyi.framework.manager.AsyncManager;\r\nimport com.ruoyi.framework.manager.factory.AsyncFactory;\r\nimport com.ruoyi.framework.security.context.AuthenticationContextHolder;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.ruoyi.system.service.ISysUserService;\r\n\r\n/**\r\n * 鐧诲綍鏍¢獙鏂规硶\r\n *\r\n * @author ruoyi\r\n */\r\n@Slf4j\r\n@Component\r\npublic class SysLoginService {\r\n    @Autowired\r\n    private TokenService tokenService;\r\n\r\n    @Resource\r\n    private AuthenticationManager authenticationManager;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    @Autowired\r\n    private ISysUserService userService;\r\n\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n    /**\r\n     * 鐧诲綍楠岃瘉\r\n     *\r\n     * @param username 鐢ㄦ埛鍚峔r\n     * @param password 瀵嗙爜\r\n     * @param code     楠岃瘉鐮乗r\n     * @param uuid     鍞竴鏍囪瘑\r\n     * @return 缁撴灉\r\n     */\r\n    public String login(String username, String password, String code, String uuid, String orgid) {\r\n        boolean captchaEnabled = configService.selectCaptchaEnabled();\r\n        // 楠岃瘉鐮佸紑鍏砛r\n        if (captchaEnabled) {\r\n            validateCaptcha(username, code, uuid);\r\n        }\r\n        // 鐢ㄦ埛楠岃瘉\r\n        Authentication authentication = null;\r\n        try {\r\n            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username + \"&\" + orgid, password);\r\n            AuthenticationContextHolder.setContext(authenticationToken);\r\n            // 璇ユ柟娉曚細鍘昏皟鐢║serDetailsServiceImpl.loadUserByUsername\r\n            authentication = authenticationManager.authenticate(authenticationToken);\r\n        } catch (Exception e) {\r\n            if (e instanceof BadCredentialsException) {\r\n                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message(\"user.password.not.match\")));\r\n                throw new UserPasswordNotMatchException();\r\n            } else {\r\n                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));\r\n                throw new ServiceException(e.getMessage());\r\n            }\r\n        } finally {\r\n            AuthenticationContextHolder.clearContext();\r\n        }\r\n        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message(\"user.login.success\")));\r\n        LoginUser loginUser = (LoginUser) authentication.getPrincipal();\r\n        recordLoginInfo(loginUser.getUserId());\r\n        // 鐢熸垚token\r\n        return tokenService.createToken(loginUser);\r\n    }\r\n\r\n\r\n    public String loginByUserName(String userName) {\r\n        SysUser sysUser = userService.selectUserByUserNameAndDeptId(userName);\r\n        if (ObjectUtils.isNotEmpty(sysUser)) {\r\n            // 鏋勫缓鐧诲綍鐢ㄦ埛瀵硅薄\r\n            LoginUser loginUser = new LoginUser();\r\n            loginUser.setUser(sysUser);\r\n            loginUser.setUserId(sysUser.getUserId());\r\n            // 鍒涘缓 token\r\n            String token = tokenService.createToken(loginUser);\r\n            // 鐢熸垚token\r\n            return token;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙楠岃瘉鐮乗r\n     *\r\n     * @param username 鐢ㄦ埛鍚峔r\n     * @param code     楠岃瘉鐮乗r\n     * @param uuid     鍞竴鏍囪瘑\r\n     * @return 缁撴灉\r\n     */\r\n    public void validateCaptcha(String username, String code, String uuid) {\r\n        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, \"\");\r\n        String captcha = redisCache.getCacheObject(verifyKey);\r\n        redisCache.deleteObject(verifyKey);\r\n        if (captcha == null) {\r\n            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message(\"user.jcaptcha.expire\")));\r\n            throw new CaptchaExpireException();\r\n        }\r\n        if (!code.equalsIgnoreCase(captcha)) {\r\n            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message(\"user.jcaptcha.error\")));\r\n            throw new CaptchaException();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 璁板綍鐧诲綍淇℃伅\r\n     *\r\n     * @param userId 鐢ㄦ埛ID\r\n     */\r\n    public void recordLoginInfo(Long userId) {\r\n        SysUser sysUser = new SysUser();\r\n        sysUser.setUserId(userId);\r\n        sysUser.setLoginIp(IpUtils.getIpAddr(ServletUtils.getRequest()));\r\n        sysUser.setLoginDate(DateUtils.getNowDate());\r\n        userService.updateUserProfile(sysUser);\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
---- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java	(date 1758682819271)
-@@ -96,6 +96,7 @@
- 
-     public String loginByUserName(String userName) {
-         SysUser sysUser = userService.selectUserByUserNameAndDeptId(userName);
-+        log.info("---------sysUser鐨勫�间负:{}", sysUser);
-         if (ObjectUtils.isNotEmpty(sysUser)) {
-             // 鏋勫缓鐧诲綍鐢ㄦ埛瀵硅薄
-             LoginUser loginUser = new LoginUser();
-Index: smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\n\r\n/**\r\n * 浠诲姟闂嵎闂閫夐」瀵硅薄 svy_task_answer\r\n *\r\n * @author ruoyi\r\n * @date 2024-06-27\r\n */\r\n@Data\r\n@ApiModel(value = \"SvyTaskAnswer\", description = \"浠诲姟闂嵎闂閫夐」瀵硅薄\")\r\npublic class SvyTaskAnswer extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n    @ApiModelProperty(value = \"鑷ID\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 浠诲姟ID\r\n     */\r\n    @ApiModelProperty(value = \"浠诲姟ID\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 瀛愪换鍔D\r\n     */\r\n    @ApiModelProperty(value = \"瀛愪换鍔D\")\r\n    private Long singleid;\r\n\r\n    /**\r\n     * 棰樼洰ID\r\n     */\r\n    @ApiModelProperty(value = \"棰樼洰ID\")\r\n    private Long scriptid;\r\n\r\n    /**\r\n     * 棰樼洰绫诲瀷\r\n     */\r\n    @ApiModelProperty(value = \"棰樼洰绫诲瀷\")\r\n    private Long scriptType;\r\n\r\n    /**\r\n     * 寰楀垎锛�1銆�2銆�3锛屾垨A銆丅銆丆锛屾垨浼樸�佽壇銆佸強鏍硷級\r\n     */\r\n    @ApiModelProperty(value = \"寰楀垎   1=銆�2銆�3锛屾垨A銆丅銆丆锛屾垨浼樸�佽壇銆佸強鏍糪")\r\n    private String score;\r\n\r\n    /**\r\n     * 鍥炵瓟锛堝厑璁稿閫夛級\r\n     */\r\n    @ApiModelProperty(value = \"鍥炵瓟  鍏�=璁稿閫塡")\r\n    private String answer;\r\n\r\n    /**\r\n     * 璇勮\r\n     */\r\n    @ApiModelProperty(value = \"璇勮\")\r\n    private String comment;\r\n\r\n    /**\r\n     * 闇�瑕佽窡杩涳紙鏄細1銆佸惁锛�0锛塡r\n     */\r\n    @ApiModelProperty(value = \"闇�瑕佽窡杩�  鏄�=锛�1銆佸惁锛�0\")\r\n    private String istrack;\r\n\r\n    /**\r\n     * 寮傚父棰勮锛堟槸锛�1銆佸惁锛�0锛塡r\n     */\r\n    @ApiModelProperty(value = \"寮傚父棰勮  鏄�=锛�1銆佸惁锛�0\")\r\n    private String isabnormal;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囧織锛�0锛氭湭鍒犻櫎 1锛氬凡鍒犻櫎锛塡r\n     */\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囧織锛�0锛氭湭涓婁紶 1锛氬凡涓婁紶锛塡r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏍囧織   0=锛氭湭涓婁紶,1=锛氬凡涓婁紶\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private String pid;\r\n\r\n    /**\r\n     * GUID\r\n     */\r\n    @ApiModelProperty(value = \"GUID\")\r\n    private String guid;\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java b/smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java
---- a/smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java	(date 1758682819683)
-@@ -70,10 +70,10 @@
-     private String istrack;
- 
-     /**
--     * 寮傚父棰勮锛堟槸锛�1銆佸惁锛�0锛�
-+     * 寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊
-      */
--    @ApiModelProperty(value = "寮傚父棰勮  鏄�=锛�1銆佸惁锛�0")
--    private String isabnormal;
-+    @ApiModelProperty(value = "寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊")
-+    private Long isabnormal;
- 
-     /**
-      * 鍒犻櫎鏍囧織锛�0锛氭湭鍒犻櫎 1锛氬凡鍒犻櫎锛�
-Index: smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\n\r\nimport com.smartor.mapper.UtilsMapper;\r\nimport com.smartor.service.IServiceTelInfoService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n@Slf4j\r\n@Service\r\npublic class ServiceTelInfoServiceImpl implements IServiceTelInfoService {\r\n    @Autowired\r\n    private UtilsMapper utilsMapper;\r\n\r\n    /**\r\n     * 璁剧疆鐢佃瘽鐘舵�乗r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public List<Map<String,Object>> getList() {\r\n       List<Map<String,Object>> lists= utilsMapper.getList(\"select * from service_telinfo where state=0  OR DATE_ADD(editTime, INTERVAL 10 MINUTE)< NOW()  \");\r\n        return lists;\r\n    }\r\n    /**\r\n     * 璁剧疆鐢佃瘽鐘舵�乗r\n     *\r\n     * @param id 涓婚敭\r\n     * @param state 0姝e父1鍗犵嚎\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int setState(Integer id, Integer state) {\r\n        Integer result= utilsMapper.updateSql(\"update service_telinfo set state= \"+state+\" where id=\"+id+\" \");\r\n        return result;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java	(date 1758682819496)
-@@ -23,7 +23,7 @@
-      */
-     @Override
-     public List<Map<String,Object>> getList() {
--       List<Map<String,Object>> lists= utilsMapper.getList("select * from service_telinfo where state=0  OR DATE_ADD(editTime, INTERVAL 10 MINUTE)< NOW()  ");
-+       List<Map<String,Object>> lists= utilsMapper.getList("select * from service_telinfo where state=0 ");
-         return lists;
-     }
-     /**
-Index: ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.system.service.impl;\r\n\r\nimport java.util.Collection;\r\nimport java.util.List;\r\nimport javax.annotation.PostConstruct;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\nimport com.ruoyi.common.annotation.DataSource;\r\nimport com.ruoyi.common.constant.CacheConstants;\r\nimport com.ruoyi.common.constant.UserConstants;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.core.text.Convert;\r\nimport com.ruoyi.common.enums.DataSourceType;\r\nimport com.ruoyi.common.exception.ServiceException;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.system.domain.SysConfig;\r\nimport com.ruoyi.system.mapper.SysConfigMapper;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\n\r\n/**\r\n * 鍙傛暟閰嶇疆 鏈嶅姟灞傚疄鐜癨r\n * \r\n * @author ruoyi\r\n */\r\n@Service\r\npublic class SysConfigServiceImpl implements ISysConfigService\r\n{\r\n    @Autowired\r\n    private SysConfigMapper configMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    /**\r\n     * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧弬鏁板埌缂撳瓨\r\n     */\r\n    @PostConstruct\r\n    public void init()\r\n    {\r\n        loadingConfigCache();\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     * \r\n     * @param configId 鍙傛暟閰嶇疆ID\r\n     * @return 鍙傛暟閰嶇疆淇℃伅\r\n     */\r\n    @Override\r\n    @DataSource(DataSourceType.MASTER)\r\n    public SysConfig selectConfigById(Long configId)\r\n    {\r\n        SysConfig config = new SysConfig();\r\n        config.setConfigId(configId);\r\n        return configMapper.selectConfig(config);\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     * \r\n     * @param configKey 鍙傛暟key\r\n     * @return 鍙傛暟閿�糪r\n     */\r\n    @Override\r\n    public String selectConfigByKey(String configKey)\r\n    {\r\n        String configValue = Convert.toStr(redisCache.getCacheObject(getCacheKey(configKey)));\r\n        if (StringUtils.isNotEmpty(configValue))\r\n        {\r\n            return configValue;\r\n        }\r\n        SysConfig config = new SysConfig();\r\n        config.setConfigKey(configKey);\r\n        SysConfig retConfig = configMapper.selectConfig(config);\r\n        if (StringUtils.isNotNull(retConfig))\r\n        {\r\n            redisCache.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());\r\n            return retConfig.getConfigValue();\r\n        }\r\n        return StringUtils.EMPTY;\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     *\r\n     * @param configKey 鍙傛暟key\r\n     * @return 鍙傛暟閿�糪r\n     */\r\n    @Override\r\n    public String selectConfigByKey(String configKey,String orgid)\r\n    {\r\n\r\n        SysConfig config = new SysConfig();\r\n        config.setConfigKey(configKey);\r\n        config.setOrgid(orgid);\r\n        SysConfig retConfig = configMapper.selectConfig(config);\r\n        if (StringUtils.isNotNull(retConfig))\r\n        {\r\n            return retConfig.getConfigValue();\r\n        }\r\n        return StringUtils.EMPTY;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇楠岃瘉鐮佸紑鍏砛r\n     * \r\n     * @return true寮�鍚紝false鍏抽棴\r\n     */\r\n    @Override\r\n    public boolean selectCaptchaEnabled()\r\n    {\r\n        String captchaEnabled = selectConfigByKey(\"sys.account.captchaEnabled\");\r\n        if (StringUtils.isEmpty(captchaEnabled))\r\n        {\r\n            return true;\r\n        }\r\n        return Convert.toBool(captchaEnabled);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 鍙傛暟閰嶇疆闆嗗悎\r\n     */\r\n    @Override\r\n    public List<SysConfig> selectConfigList(SysConfig config)\r\n    {\r\n        return configMapper.selectConfigList(config);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鍙傛暟閰嶇疆\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertConfig(SysConfig config)\r\n    {\r\n        int row = configMapper.insertConfig(config);\r\n        if (row > 0)\r\n        {\r\n            redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());\r\n        }\r\n        return row;\r\n    }\r\n\r\n    /**\r\n     * 淇敼鍙傛暟閰嶇疆\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateConfig(SysConfig config)\r\n    {\r\n        SysConfig temp = configMapper.selectConfigById(config.getConfigId());\r\n        if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey()))\r\n        {\r\n            redisCache.deleteObject(getCacheKey(temp.getConfigKey()));\r\n        }\r\n\r\n        int row = configMapper.updateConfig(config);\r\n        if (row > 0)\r\n        {\r\n            redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());\r\n        }\r\n        return row;\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鍙傛暟淇℃伅\r\n     * \r\n     * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID\r\n     */\r\n    @Override\r\n    public void deleteConfigByIds(Long[] configIds)\r\n    {\r\n        for (Long configId : configIds)\r\n        {\r\n            SysConfig config = selectConfigById(configId);\r\n            if (StringUtils.equals(UserConstants.YES, config.getConfigType()))\r\n            {\r\n                throw new ServiceException(String.format(\"鍐呯疆鍙傛暟銆�%1$s銆戜笉鑳藉垹闄� \", config.getConfigKey()));\r\n            }\r\n            configMapper.deleteConfigById(configId);\r\n            redisCache.deleteObject(getCacheKey(config.getConfigKey()));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    @Override\r\n    public void loadingConfigCache()\r\n    {\r\n        List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());\r\n        for (SysConfig config : configsList)\r\n        {\r\n            redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 娓呯┖鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    @Override\r\n    public void clearConfigCache()\r\n    {\r\n        Collection<String> keys = redisCache.keys(CacheConstants.SYS_CONFIG_KEY + \"*\");\r\n        redisCache.deleteObject(keys);\r\n    }\r\n\r\n    /**\r\n     * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    @Override\r\n    public void resetConfigCache()\r\n    {\r\n        clearConfigCache();\r\n        loadingConfigCache();\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String checkConfigKeyUnique(SysConfig config)\r\n    {\r\n        Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId();\r\n        SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey());\r\n        if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue())\r\n        {\r\n            return UserConstants.NOT_UNIQUE;\r\n        }\r\n        return UserConstants.UNIQUE;\r\n    }\r\n\r\n    /**\r\n     * 璁剧疆cache key\r\n     * \r\n     * @param configKey 鍙傛暟閿甛r\n     * @return 缂撳瓨閿甼ey\r\n     */\r\n    private String getCacheKey(String configKey)\r\n    {\r\n        return CacheConstants.SYS_CONFIG_KEY + configKey;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
---- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java	(date 1758683300014)
-@@ -19,7 +19,7 @@
- 
- /**
-  * 鍙傛暟閰嶇疆 鏈嶅姟灞傚疄鐜�
-- * 
-+ *
-  * @author ruoyi
-  */
- @Service
-@@ -42,7 +42,7 @@
- 
-     /**
-      * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
--     * 
-+     *
-      * @param configId 鍙傛暟閰嶇疆ID
-      * @return 鍙傛暟閰嶇疆淇℃伅
-      */
-@@ -57,7 +57,7 @@
- 
-     /**
-      * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
--     * 
-+     *
-      * @param configKey 鍙傛暟key
-      * @return 鍙傛暟閿��
-      */
-@@ -80,6 +80,22 @@
-         return StringUtils.EMPTY;
-     }
- 
-+    /**
-+     * 鑾峰彇楠岃瘉鐮佸紑鍏�
-+     *
-+     * @return true寮�鍚紝false鍏抽棴
-+     */
-+    @Override
-+    public boolean selectCaptchaEnabled()
-+    {
-+        String captchaEnabled = selectConfigByKey("sys.account.captchaEnabled");
-+        if (StringUtils.isEmpty(captchaEnabled))
-+        {
-+            return true;
-+        }
-+        return Convert.toBool(captchaEnabled);
-+    }
-+
-     /**
-      * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
-      *
-@@ -100,26 +116,9 @@
-         }
-         return StringUtils.EMPTY;
-     }
--
--    /**
--     * 鑾峰彇楠岃瘉鐮佸紑鍏�
--     * 
--     * @return true寮�鍚紝false鍏抽棴
--     */
--    @Override
--    public boolean selectCaptchaEnabled()
--    {
--        String captchaEnabled = selectConfigByKey("sys.account.captchaEnabled");
--        if (StringUtils.isEmpty(captchaEnabled))
--        {
--            return true;
--        }
--        return Convert.toBool(captchaEnabled);
--    }
--
-     /**
-      * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 鍙傛暟閰嶇疆闆嗗悎
-      */
-@@ -131,7 +130,7 @@
- 
-     /**
-      * 鏂板鍙傛暟閰嶇疆
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 缁撴灉
-      */
-@@ -148,7 +147,7 @@
- 
-     /**
-      * 淇敼鍙傛暟閰嶇疆
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 缁撴灉
-      */
-@@ -171,7 +170,7 @@
- 
-     /**
-      * 鎵归噺鍒犻櫎鍙傛暟淇℃伅
--     * 
-+     *
-      * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID
-      */
-     @Override
-@@ -224,7 +223,7 @@
- 
-     /**
-      * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 缁撴灉
-      */
-@@ -242,7 +241,7 @@
- 
-     /**
-      * 璁剧疆cache key
--     * 
-+     *
-      * @param configKey 鍙傛暟閿�
-      * @return 缂撳瓨閿甼ey
-      */
-Index: smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.PatMedInhospMapper\">\r\n\r\n    <resultMap type=\"com.smartor.domain.PatMedInhosp\" id=\"PatMedInhospResult\">\r\n        <result property=\"inhospid\" column=\"inhospid\"/>\r\n        <result property=\"inhospno\" column=\"inhospno\"/>\r\n        <result property=\"serialnum\" column=\"serialnum\"/>\r\n        <result property=\"hospitalname\" column=\"hospitalname\"/>\r\n        <result property=\"hospitalcode\" column=\"hospitalcode\"/>\r\n        <result property=\"hospitaldistrictcode\" column=\"hospitaldistrictcode\"/>\r\n        <result property=\"hospitaldistrictname\" column=\"hospitaldistrictname\"/>\r\n        <result property=\"icd10code\" column=\"icd10code\"/>\r\n        <result property=\"diagname\" column=\"diagname\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"endtime\" column=\"endtime\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"deptname\" column=\"deptname\"/>\r\n        <result property=\"roomno\" column=\"roomno\"/>\r\n        <result property=\"bedNo\" column=\"bed_no\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"leavediagname\" column=\"leavediagname\"/>\r\n        <result property=\"leaveicd10code\" column=\"leaveicd10code\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"schemestatus\" column=\"schemestatus\"/>\r\n        <result property=\"generalschemestatus\" column=\"generalschemestatus\"/>\r\n        <result property=\"leaveldeptcode\" column=\"leaveldeptcode\"/>\r\n        <result property=\"leaveldeptname\" column=\"leaveldeptname\"/>\r\n        <result property=\"hospitaldistrictid\" column=\"hospitaldistrictid\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"leavehospitaldistrictid\" column=\"leavehospitaldistrictid\"/>\r\n        <result property=\"deptid\" column=\"deptid\"/>\r\n        <result property=\"leaveldeptid\" column=\"leaveldeptid\"/>\r\n        <result property=\"schemetime\" column=\"schemetime\"/>\r\n        <result property=\"patname\" column=\"patname\"/>\r\n        <result property=\"patno\" column=\"patno\"/>\r\n        <result property=\"inhospstate\" column=\"inhospstate\"/>\r\n        <result property=\"deptcheckFlag\" column=\"deptcheck_flag\"/>\r\n        <result property=\"wardcheckFlag\" column=\"wardcheck_flag\"/>\r\n        <result property=\"diagcheckFlag\" column=\"diagcheck_flag\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"telcode\" column=\"telcode\"/>\r\n        <result property=\"longTaskReason\" column=\"long_task_reason\"/>\r\n        <result property=\"nurseId\" column=\"nurse_id\"/>\r\n        <result property=\"nurseName\" column=\"nurse_name\"/>\r\n        <result property=\"outWayId\" column=\"out_way_id\"/>\r\n        <result property=\"outWayName\" column=\"out_way_name\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"operator\" column=\"operator\"/>\r\n        <result property=\"operatorId\" column=\"operator_id\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"tagname\" column=\"tagname\"/>\r\n        <result property=\"fuflag\" column=\"fuflag\"/>\r\n        <result property=\"fudate\" column=\"fudate\"/>\r\n        <result property=\"fuperiod\" column=\"fuperiod\"/>\r\n        <result property=\"futypecode\" column=\"futypecode\"/>\r\n        <result property=\"futypedesc\" column=\"futypedesc\"/>\r\n        <result property=\"fuadvice\" column=\"fuadvice\"/>\r\n        <result property=\"fuspecialadvice\" column=\"fuspecialadvice\"/>\r\n        <result property=\"managementDoctor\" column=\"management_doctor\"/>\r\n        <result property=\"managementDoctorCode\" column=\"management_doctor_code\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectPatMedInhospVo\">\r\n        select inhospid,\r\n               patname,\r\n               fuflag,\r\n               management_doctor,\r\n               management_doctor_code,\r\n               fudate,\r\n               fuperiod,\r\n               futypecode,\r\n               futypedesc,\r\n               fuadvice,\r\n               fuspecialadvice,\r\n               remark,\r\n               guid,\r\n               operator,\r\n               operator_id,\r\n               out_way_id,\r\n               out_way_name,\r\n               nurse_id,\r\n               nurse_name,\r\n               deptcheck_flag,\r\n               wardcheck_flag,\r\n               diagcheck_flag,\r\n               inhospstate,\r\n               patno,\r\n               long_task_reason,\r\n               inhospno,\r\n               serialnum,\r\n               hospitalname,\r\n               hospitalcode,\r\n               hospitaldistrictcode,\r\n               hospitaldistrictname,\r\n               icd10code,\r\n               diagname,\r\n               starttime,\r\n               endtime,\r\n               deptcode,\r\n               deptname,\r\n               roomno,\r\n               bed_no,\r\n               orgid,\r\n               del_flag,\r\n               update_by,\r\n               update_time,\r\n               create_by,\r\n               create_time,\r\n               isupload,\r\n               upload_time,\r\n               patid,\r\n               leavediagname,\r\n               leaveicd10code,\r\n               drcode,\r\n               drname,\r\n               schemestatus,\r\n               generalschemestatus,\r\n               leaveldeptcode,\r\n               leaveldeptname,\r\n               hospitaldistrictid,\r\n               leavehospitaldistrictcode,\r\n               leavehospitaldistrictname,\r\n               leavehospitaldistrictid,\r\n               deptid,\r\n               leaveldeptid,\r\n               schemetime\r\n        from pat_med_inhosp\r\n    </sql>\r\n\r\n    <select id=\"selectPatMedInhospList\" parameterType=\"com.smartor.domain.PatMedInhosp\" resultMap=\"PatMedInhospResult\">\r\n        select CONCAT( a.age, a.age_unit ) AS age,\r\n        a.telcode as telcode,\r\n        a.sex,\r\n        b.inhospid,\r\n        b.nurse_id,\r\n        b.nurse_name,\r\n        b.patname,\r\n        b.management_doctor,\r\n        b.management_doctor_code,\r\n        b.out_way_id,\r\n        b.out_way_name,\r\n        b.deptcheck_flag,\r\n        b.wardcheck_flag,\r\n        b.diagcheck_flag,\r\n        b.inhospstate,\r\n        b.patno,\r\n        b.inhospno,\r\n        b.serialnum,\r\n        b.hospitalname,\r\n        b.hospitalcode,\r\n        b.hospitaldistrictcode,\r\n        b.hospitaldistrictname,\r\n        b.icd10code,\r\n        b.diagname,\r\n        b.starttime,\r\n        b.endtime,\r\n        b.deptcode,\r\n        b.deptname,\r\n        b.roomno,\r\n        b.bed_no,\r\n        b.orgid,\r\n        b.del_flag,\r\n        b.update_by,\r\n        b.update_time,\r\n        b.create_by,\r\n        b.create_time,\r\n        b.isupload,\r\n        b.upload_time,\r\n        b.patid,\r\n        b.leavediagname,\r\n        b.leaveicd10code,\r\n        b.drcode,\r\n        b.drname,\r\n        b.schemestatus,\r\n        b.generalschemestatus,\r\n        b.leaveldeptcode,\r\n        b.leaveldeptname,\r\n        b.hospitaldistrictid,\r\n        b.leavehospitaldistrictcode,\r\n        b.leavehospitaldistrictname,\r\n        b.leavehospitaldistrictid,\r\n        b.deptid,\r\n        b.leaveldeptid,\r\n        b.long_task_reason,\r\n        b.schemetime,\r\n        b.fuflag,\r\n        b.fudate,\r\n        b.fuperiod,\r\n        b.futypecode,\r\n        b.futypedesc,\r\n        b.fuadvice,\r\n        b.fuspecialadvice,\r\n        a.idcardno\r\n        FROM\r\n        pat_med_inhosp b\r\n        JOIN\r\n        pat_archive a ON a.id = b.patid\r\n        LEFT JOIN\r\n        pat_archivetag c ON c.patid = a.id AND (c.del_flag = 0 OR c.del_flag IS NULL)\r\n        <where>\r\n            a.del_flag = 0\r\n            AND b.del_flag = 0\r\n            AND a.idcardno IS NOT NULL\r\n            <if test=\"startOutHospTime != null \">and date_format(b.endtime,'%y%m%d') &gt;=\r\n                date_format(#{startOutHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"endOutHospTime != null \">and date_format(b.endtime,'%y%m%d') &lt;=\r\n                date_format(#{endOutHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"startInHospTime != null \">and date_format(b.starttime,'%y%m%d') &gt;=\r\n                date_format(#{startInHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"endInHospTime != null \">and date_format(b.starttime,'%y%m%d') &lt;=\r\n                date_format(#{endInHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"hospitalname != null  and hospitalname != ''\">and hospitalname like concat('%', #{hospitalname},\r\n                '%')\r\n            </if>\r\n            <if test=\"patname != null  and patname != ''\">and patname like concat('%', #{patname}, '%')</if>\r\n            <if test=\"hospitaldistrictname != null  and hospitaldistrictname != ''\">and hospitaldistrictname like\r\n                concat('%', #{hospitaldistrictname}, '%')\r\n            </if>\r\n            <if test=\"endtime != null \">and b.endtime = #{endtime}</if>\r\n            <if test=\"managementDoctor != null \">and b.management_doctor = #{managementDoctor}</if>\r\n            <if test=\"managementDoctorCode != null \">and b.management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"inhospno != null \">and b.inhospno = #{inhospno}</if>\r\n            <if test=\"fuflag != null \">and b.fuflag = #{fuflag}</if>\r\n            <if test=\"orgid != null \">and b.orgid = #{orgid}</if>\r\n            <if test=\"serialnum != null \">and b.serialnum = #{serialnum}</if>\r\n            <if test=\"endtime != null \">and b.endtime = #{endtime}</if>\r\n            <if test=\"patno != null \">and b.patno = #{patno}</if>\r\n            <if test=\"nurseId != null \">and b.nurse_id = #{nurseId}</if>\r\n            <if test=\"nurseName != null and nurseName != ''\">and b.nurse_name = #{nurseName}</if>\r\n            <if test=\"deptcheckFlag != null \">and b.deptcheck_flag = #{deptcheckFlag}</if>\r\n            <if test=\"wardcheckFlag != null \">and b.wardcheck_flag = #{wardcheckFlag}</if>\r\n            <if test=\"diagcheckFlag != null \">and b.diagcheck_flag = #{diagcheckFlag}</if>\r\n            <if test=\"cry != null and cry == 0 \">and b.endtime is null</if>\r\n            <if test=\"cry != null and cry == 1 \">and b.inhospstate=1</if>\r\n            <if test=\"inhospstate != null \">and b.inhospstate = #{inhospstate}</if>\r\n            <if test=\"schemestatus != null \">and b.schemestatus = #{schemestatus}</if>\r\n            <if test=\"outWayId != null \">and b.out_way_id = #{outWayId}</if>\r\n            <if test=\"outWayName != null \">and b.out_way_name = #{outWayName}</if>\r\n            <if test=\"leaveldeptcode != null \">and b.leaveldeptcode = #{leaveldeptcode}</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">and b.leavediagname like concat('%',\r\n                #{leavediagname}, '%')\r\n            </if>\r\n            <if test=\"drname != null  and drname != ''\">and b.drname like concat('%', #{drname}, '%')</if>\r\n            <if test=\"leaveldeptname != null  and leaveldeptname != ''\">and b.leaveldeptname like concat('%',\r\n                #{leaveldeptname}, '%')\r\n            </if>\r\n            <if test=\"deptname != null  and deptname != ''\">and b.deptname like concat('%',\r\n                #{deptname}, '%')\r\n            </if>\r\n            <if test=\"patid != null  and patid != ''\">and a.id =#{patid}\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">and\r\n                b.leavehospitaldistrictname like concat('%', #{leavehospitaldistrictname}, '%')\r\n            </if>\r\n\r\n            <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0\">\r\n                AND b.leavehospitaldistrictcode IN\r\n                <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leavehospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"leaveldeptcodes != null and leaveldeptcodes.size()>0\">\r\n                AND b.leaveldeptcode IN\r\n                <foreach collection=\"leaveldeptcodes\" item=\"leaveldeptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leaveldeptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        GROUP BY\r\n        b.inhospid,\r\n        a.age,\r\n        a.age_unit,\r\n        a.telcode,\r\n        a.id,\r\n        a.sex\r\n        <if test=\"cry==1\">\r\n            order by b.endtime desc\r\n        </if>\r\n        <if test=\"cry==0\">\r\n            order by b.starttime desc\r\n        </if>\r\n    </select>\r\n\r\n    <select id=\"selectPatMedInhospListBySerialnum\" parameterType=\"com.smartor.domain.PatMedInhosp\" resultMap=\"PatMedInhospResult\">\r\n        select\r\n        b.inhospid,\r\n        b.nurse_id,\r\n        b.nurse_name,\r\n        b.patname,\r\n        b.management_doctor,\r\n        b.management_doctor_code,\r\n        b.out_way_id,\r\n        b.out_way_name,\r\n        b.deptcheck_flag,\r\n        b.wardcheck_flag,\r\n        b.diagcheck_flag,\r\n        b.inhospstate,\r\n        b.patno,\r\n        b.inhospno,\r\n        b.serialnum,\r\n        b.hospitalname,\r\n        b.hospitalcode,\r\n        b.hospitaldistrictcode,\r\n        b.hospitaldistrictname,\r\n        b.icd10code,\r\n        b.diagname,\r\n        b.starttime,\r\n        b.endtime,\r\n        b.deptcode,\r\n        b.deptname,\r\n        b.roomno,\r\n        b.bed_no,\r\n        b.orgid,\r\n        b.del_flag,\r\n        b.update_by,\r\n        b.update_time,\r\n        b.create_by,\r\n        b.create_time,\r\n        b.isupload,\r\n        b.upload_time,\r\n        b.patid,\r\n        b.leavediagname,\r\n        b.leaveicd10code,\r\n        b.drcode,\r\n        b.drname,\r\n        b.schemestatus,\r\n        b.generalschemestatus,\r\n        b.leaveldeptcode,\r\n        b.leaveldeptname,\r\n        b.hospitaldistrictid,\r\n        b.leavehospitaldistrictcode,\r\n        b.leavehospitaldistrictname,\r\n        b.leavehospitaldistrictid,\r\n        b.deptid,\r\n        b.leaveldeptid,\r\n        b.long_task_reason,\r\n        b.schemetime,\r\n        b.fuflag,\r\n        b.fudate,\r\n        b.fuperiod,\r\n        b.futypecode,\r\n        b.futypedesc,\r\n        b.fuadvice,\r\n        b.fuspecialadvice\r\n        FROM\r\n        pat_med_inhosp b\r\n\r\n        <where>\r\n            <if test=\"serialnum != null \">and b.serialnum = #{serialnum}</if>\r\n\r\n        </where>\r\n        order by b.inhospid desc\r\n    </select>\r\n\r\n    <select id=\"selectPatMedInhospListByCondition\" parameterType=\"com.smartor.domain.PatMedInhospVO\"\r\n            resultMap=\"PatMedInhospResult\">\r\n        select CONCAT( a.age, a.age_unit ) AS age,\r\n        a.telcode as telcode,\r\n        b.inhospid,\r\n        b.management_doctor,\r\n        b.management_doctor_code,\r\n        b.patname,\r\n        b.operator_id,\r\n        b.operator,\r\n        b.remark,\r\n        b.out_way_id,\r\n        b.out_way_name,\r\n        b.nurse_id,\r\n        b.nurse_name,\r\n        b.deptcheckFlag,\r\n        b.diagcheckFlag,\r\n        b.wardcheckFlag,\r\n        b.inhospstate,\r\n        b.patno,\r\n        b.inhospno,\r\n        b.serialnum,\r\n        b.hospitalname,\r\n        b.hospitalcode,\r\n        b.hospitaldistrictcode,\r\n        b.hospitaldistrictname,\r\n        b.icd10code,\r\n        b.diagname,\r\n        b.starttime,\r\n        b.endtime,\r\n        b.deptcode,\r\n        b.deptname,\r\n        b.roomno,\r\n        b.bed_no,\r\n        b.orgid,\r\n        b.del_flag,\r\n        b.update_by,\r\n        b.update_time,\r\n        b.create_by,\r\n        b.create_time,\r\n        b.isupload,\r\n        b.upload_time,\r\n        b.patid,\r\n        b.leavediagname,\r\n        b.leaveicd10code,\r\n        b.drcode,\r\n        b.drname,\r\n        b.schemestatus,\r\n        b.generalschemestatus,\r\n        b.leaveldeptcode,\r\n        b.leaveldeptname,\r\n        b.hospitaldistrictid,\r\n        b.leavehospitaldistrictcode,\r\n        b.leavehospitaldistrictname,\r\n        b.leavehospitaldistrictid,\r\n        b.deptid,\r\n        b.leaveldeptid,\r\n        b.long_task_reason,\r\n        b.fuflag,\r\n        b.fudate,\r\n        b.fuperiod,\r\n        b.futypecode,\r\n        b.futypedesc,\r\n        b.fuadvice,\r\n        b.fuspecialadvice\r\n        b.schemetime\r\n        FROM\r\n        pat_med_inhosp b,\r\n        pat_archive a\r\n        <where>\r\n            a.del_flag=0\r\n            and b.del_flag=0\r\n            and a.id = b.patid\r\n            AND a.idcardno != ''\r\n            <if test=\"hospitalname != null  and hospitalname != ''\">and hospitalname like concat('%', #{hospitalname},\r\n                '%')\r\n            </if>\r\n            <if test=\"managementDoctor != null \">and b.management_doctor = #{managementDoctor}</if>\r\n            <if test=\"managementDoctorCode != null \">and b.management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"patname != null  and patname != ''\">and patname like concat('%', #{patname}, '%')</if>\r\n            <if test=\"hospitaldistrictname != null  and hospitaldistrictname != ''\">and hospitaldistrictname like\r\n                concat('%', #{hospitaldistrictname}, '%')\r\n            </if>\r\n            <if test=\"endtime != null \">and b.endtime = #{endtime}</if>\r\n            <if test=\"fuflag != null \">and b.fuflag = #{fuflag}</if>\r\n            <if test=\"nurseId != null \">and b.nurse_id = #{nurseId}</if>\r\n            <if test=\"nurseName != null \">and b.nurse_name = #{nurseName}</if>\r\n            <if test=\"patno != null \">and b.patno = #{patno}</if>\r\n            <if test=\"diagcheckFlag != null \">and b.diagcheck_flag = #{diagcheckFlag}</if>\r\n            <if test=\"deptcheckFlag != null \">and b.deptcheck_flag = #{deptcheckFlag}</if>\r\n            <if test=\"wardcheckFlag != null \">and b.wardcheck_flag = #{wardcheckFlag}</if>\r\n            <if test=\"inhospstate != null \">and b.inhospstate = #{inhospstate}</if>\r\n            <if test=\"schemestatus != null \">and b.schemestatus = #{schemestatus}</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">and b.leavediagname like concat('%',\r\n                #{leavediagname}, '%')\r\n            </if>\r\n            <if test=\"drname != null  and drname != ''\">and b.drname like concat('%', #{drname}, '%')</if>\r\n            <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0\">\r\n                AND b.leavehospitaldistrictcode IN\r\n                <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leavehospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"leaveldeptcodes != null and leaveldeptcodes.size()>0\">\r\n                AND b.leaveldeptcode IN\r\n                <foreach collection=\"leaveldeptcodes\" item=\"leaveldeptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leaveldeptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        order by b.inhospid desc\r\n    </select>\r\n\r\n\r\n    <select id=\"getTagnameBypatid\" parameterType=\"Long\" resultType=\"string\">\r\n        SELECT GROUP_CONCAT(d.tagname, ', ')\r\n        FROM pat_archivetag d\r\n        WHERE d.patid = #{patid}\r\n          AND d.del_flag = 0\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatMedInhospByInhospid\" parameterType=\"Long\" resultMap=\"PatMedInhospResult\">\r\n        <include refid=\"selectPatMedInhospVo\"/>\r\n        where inhospid = #{inhospid}\r\n    </select>\r\n\r\n\r\n    <insert id=\"insertPatMedInhosp\" parameterType=\"com.smartor.domain.PatMedInhosp\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"inhospid\">\r\n        insert into pat_med_inhosp\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">serialnum,</if>\r\n            <if test=\"hospitalname != null\">hospitalname,</if>\r\n            <if test=\"hospitalcode != null\">hospitalcode,</if>\r\n            <if test=\"hospitaldistrictcode != null\">hospitaldistrictcode,</if>\r\n            <if test=\"hospitaldistrictname != null\">hospitaldistrictname,</if>\r\n            <if test=\"icd10code != null\">icd10code,</if>\r\n            <if test=\"diagname != null\">diagname,</if>\r\n            <if test=\"starttime != null\">starttime,</if>\r\n            <if test=\"endtime != null\">endtime,</if>\r\n            <if test=\"deptcode != null\">deptcode,</if>\r\n            <if test=\"deptname != null\">deptname,</if>\r\n            <if test=\"roomno != null\">roomno,</if>\r\n            <if test=\"bedNo != null\">bed_no,</if>\r\n            <if test=\"orgid != null\">orgid,</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag,</if>\r\n            <if test=\"updateBy != null\">update_by,</if>\r\n            <if test=\"updateTime != null\">update_time,</if>\r\n            <if test=\"createBy != null\">create_by,</if>\r\n            <if test=\"createTime != null\">create_time,</if>\r\n            <if test=\"isupload != null\">isupload,</if>\r\n            <if test=\"uploadTime != null\">upload_time,</if>\r\n            <if test=\"patid != null\">patid,</if>\r\n            <if test=\"leavediagname != null\">leavediagname,</if>\r\n            <if test=\"leaveicd10code != null\">leaveicd10code,</if>\r\n            <if test=\"drcode != null\">drcode,</if>\r\n            <if test=\"drname != null\">drname,</if>\r\n            <if test=\"schemestatus != null\">schemestatus,</if>\r\n            <if test=\"generalschemestatus != null\">generalschemestatus,</if>\r\n            <if test=\"leaveldeptcode != null\">leaveldeptcode,</if>\r\n            <if test=\"leaveldeptname != null\">leaveldeptname,</if>\r\n            <if test=\"hospitaldistrictid != null\">hospitaldistrictid,</if>\r\n            <if test=\"leavehospitaldistrictcode != null\">leavehospitaldistrictcode,</if>\r\n            <if test=\"leavehospitaldistrictname != null\">leavehospitaldistrictname,</if>\r\n            <if test=\"leavehospitaldistrictid != null\">leavehospitaldistrictid,</if>\r\n            <if test=\"deptid != null\">deptid,</if>\r\n            <if test=\"leaveldeptid != null\">leaveldeptid,</if>\r\n            <if test=\"schemetime != null\">schemetime,</if>\r\n            <if test=\"patname!= null\">patname,</if>\r\n            <if test=\"patno != null\">patno,</if>\r\n            <if test=\"inhospstate != null\">inhospstate,</if>\r\n            <if test=\"deptcheckFlag != null\">deptcheck_flag,</if>\r\n            <if test=\"wardcheckFlag != null\">wardcheck_flag,</if>\r\n            <if test=\"diagcheckFlag != null\">diagcheck_flag,</if>\r\n            <if test=\"longTaskReason != null\">long_task_reason,</if>\r\n            <if test=\"nurseId != null \">nurse_id,</if>\r\n            <if test=\"nurseName != null \">nurse_name,</if>\r\n            <if test=\"outWayId != null \">out_way_id,</if>\r\n            <if test=\"outWayName != null \">out_way_name,</if>\r\n            <if test=\"guid != null \">guid,</if>\r\n            <if test=\"operator != null \">operator,</if>\r\n            <if test=\"operatorId != null \">operator_id,</if>\r\n            <if test=\"inhospno != null \">inhospno,</if>\r\n            <if test=\"remark != null \">remark,</if>\r\n            <if test=\"fuflag != null \">fuflag,</if>\r\n            <if test=\"fudate != null \">fudate,</if>\r\n            <if test=\"fuperiod != null \">fuperiod,</if>\r\n            <if test=\"futypecode != null \">futypecode,</if>\r\n            <if test=\"futypedesc != null \">futypedesc,</if>\r\n            <if test=\"fuadvice != null \">fuadvice,</if>\r\n            <if test=\"fuspecialadvice != null \">fuspecialadvice,</if>\r\n            <if test=\"managementDoctor != null \">management_doctor,</if>\r\n            <if test=\"managementDoctorCode != null \">management_doctor_code,</if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">#{serialnum},</if>\r\n            <if test=\"hospitalname != null\">#{hospitalname},</if>\r\n            <if test=\"hospitalcode != null\">#{hospitalcode},</if>\r\n            <if test=\"hospitaldistrictcode != null\">#{hospitaldistrictcode},</if>\r\n            <if test=\"hospitaldistrictname != null\">#{hospitaldistrictname},</if>\r\n            <if test=\"icd10code != null\">#{icd10code},</if>\r\n            <if test=\"diagname != null\">#{diagname},</if>\r\n            <if test=\"starttime != null\">#{starttime},</if>\r\n            <if test=\"endtime != null\">#{endtime},</if>\r\n            <if test=\"deptcode != null\">#{deptcode},</if>\r\n            <if test=\"deptname != null\">#{deptname},</if>\r\n            <if test=\"roomno != null\">#{roomno},</if>\r\n            <if test=\"bedNo != null\">#{bedNo},</if>\r\n            <if test=\"orgid != null\">#{orgid},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">#{delFlag},</if>\r\n            <if test=\"updateBy != null\">#{updateBy},</if>\r\n            <if test=\"updateTime != null\">#{updateTime},</if>\r\n            <if test=\"createBy != null\">#{createBy},</if>\r\n            <if test=\"createTime != null\">#{createTime},</if>\r\n            <if test=\"isupload != null\">#{isupload},</if>\r\n            <if test=\"uploadTime != null\">#{uploadTime},</if>\r\n            <if test=\"patid != null\">#{patid},</if>\r\n            <if test=\"leavediagname != null\">#{leavediagname},</if>\r\n            <if test=\"leaveicd10code != null\">#{leaveicd10code},</if>\r\n            <if test=\"drcode != null\">#{drcode},</if>\r\n            <if test=\"drname != null\">#{drname},</if>\r\n            <if test=\"schemestatus != null\">#{schemestatus},</if>\r\n            <if test=\"generalschemestatus != null\">#{generalschemestatus},</if>\r\n            <if test=\"leaveldeptcode != null\">#{leaveldeptcode},</if>\r\n            <if test=\"leaveldeptname != null\">#{leaveldeptname},</if>\r\n            <if test=\"hospitaldistrictid != null\">#{hospitaldistrictid},</if>\r\n            <if test=\"leavehospitaldistrictcode != null\">#{leavehospitaldistrictcode},</if>\r\n            <if test=\"leavehospitaldistrictname != null\">#{leavehospitaldistrictname},</if>\r\n            <if test=\"leavehospitaldistrictid != null\">#{leavehospitaldistrictid},</if>\r\n            <if test=\"deptid != null\">#{deptid},</if>\r\n            <if test=\"leaveldeptid != null\">#{leaveldeptid},</if>\r\n            <if test=\"schemetime != null\">#{schemetime},</if>\r\n            <if test=\"patname!= null\">#{patname},</if>\r\n            <if test=\"patno != null\">#{patno},</if>\r\n            <if test=\"inhospstate != null\">#{inhospstate},</if>\r\n            <if test=\"deptcheckFlag != null\">#{deptcheckFlag},</if>\r\n            <if test=\"wardcheckFlag != null\">#{wardcheckFlag},</if>\r\n            <if test=\"diagcheckFlag != null\">#{diagcheckFlag},</if>\r\n            <if test=\"longTaskReason != null\">#{longTaskReason},</if>\r\n            <if test=\"nurseId != null \">#{nurseId},</if>\r\n            <if test=\"nurseName != null \">#{nurseName},</if>\r\n            <if test=\"outWayId != null \">#{outWayId},</if>\r\n            <if test=\"outWayName != null \">#{outWayName},</if>\r\n            <if test=\"guid != null \">#{guid},</if>\r\n            <if test=\"operator != null \">#{operator},</if>\r\n            <if test=\"operatorId != null \">#{operatorId},</if>\r\n            <if test=\"inhospno != null \">#{inhospno},</if>\r\n            <if test=\"remark != null \">#{remark},</if>\r\n            <if test=\"fuflag != null \">#{fuflag},</if>\r\n            <if test=\"fudate != null \">#{fudate},</if>\r\n            <if test=\"fuperiod != null \">#{fuperiod},</if>\r\n            <if test=\"futypecode != null \">#{futypecode},</if>\r\n            <if test=\"futypedesc != null \">#{futypedesc},</if>\r\n            <if test=\"fuadvice != null \">#{fuadvice},</if>\r\n            <if test=\"fuspecialadvice != null \">#{fuspecialadvice},</if>\r\n            <if test=\"managementDoctor != null \">#{managementDoctor},</if>\r\n            <if test=\"managementDoctorCode != null \">#{managementDoctorCode},</if>\r\n        </trim>\r\n    </insert>\r\n\r\n\r\n    <insert id=\"insertPatMedInhospBatch\" parameterType=\"java.util.List\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"item.inhospid\">\r\n        insert into pat_med_inhosp (\r\n        serialnum, hospitalname, hospitalcode, hospitaldistrictcode, hospitaldistrictname,\r\n        icd10code, diagname, starttime, endtime, deptcode, deptname, roomno, bed_no,\r\n        orgid, del_flag, update_by, update_time, create_by, create_time, isupload,\r\n        upload_time, patid, leavediagname, leaveicd10code, drcode, drname,\r\n        schemestatus, generalschemestatus, leaveldeptcode, leaveldeptname, hospitaldistrictid,\r\n        leavehospitaldistrictcode, leavehospitaldistrictname, leavehospitaldistrictid,\r\n        deptid, leaveldeptid, schemetime, patname, patno, inhospstate,\r\n        deptcheck_flag, wardcheck_flag, diagcheck_flag, long_task_reason,\r\n        nurse_id, nurse_name, out_way_id, out_way_name, guid,\r\n        operator, operator_id, inhospno, remark,\r\n        fuflag, fudate, fuperiod, futypecode, futypedesc, fuadvice, fuspecialadvice, management_doctor,\r\n        management_doctor_doctor\r\n        )\r\n        values\r\n        <foreach collection=\"list\" item=\"item\" separator=\",\">\r\n            (\r\n            #{item.serialnum}, #{item.hospitalname}, #{item.hospitalcode}, #{item.hospitaldistrictcode},\r\n            #{item.hospitaldistrictname},\r\n            #{item.icd10code}, #{item.diagname}, #{item.starttime}, #{item.endtime}, #{item.deptcode}, #{item.deptname},\r\n            #{item.roomno}, #{item.bedNo},\r\n            #{item.orgid}, #{item.delFlag}, #{item.updateBy}, #{item.updateTime}, #{item.createBy}, #{item.createTime},\r\n            #{item.isupload},\r\n            #{item.uploadTime}, #{item.patid}, #{item.leavediagname}, #{item.leaveicd10code}, #{item.drcode},\r\n            #{item.drname},\r\n            #{item.schemestatus}, #{item.generalschemestatus}, #{item.leaveldeptcode}, #{item.leaveldeptname},\r\n            #{item.hospitaldistrictid},\r\n            #{item.leavehospitaldistrictcode}, #{item.leavehospitaldistrictname}, #{item.leavehospitaldistrictid},\r\n            #{item.deptid}, #{item.leaveldeptid}, #{item.schemetime}, #{item.patname}, #{item.patno},\r\n            #{item.inhospstate},\r\n            #{item.deptcheckFlag}, #{item.wardcheckFlag}, #{item.diagcheckFlag}, #{item.longTaskReason},\r\n            #{item.nurseId}, #{item.nurseName}, #{item.outWayId}, #{item.outWayName}, #{item.guid},\r\n            #{item.operator}, #{item.operatorId}, #{item.inhospno}, #{item.remark},\r\n            #{item.fuflag}, #{item.fudate}, #{item.fuperiod}, #{item.futypecode}, #{item.futypedesc}, #{item.fuadvice},\r\n            #{item.fuspecialadvice}, #{item.managementDoctor}, #{item.managementDoctorCode}\r\n            )\r\n        </foreach>\r\n    </insert>\r\n\r\n\r\n    <update id=\"updatePatMedInhosp\" parameterType=\"com.smartor.domain.PatMedInhosp\">\r\n        update pat_med_inhosp\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">serialnum = #{serialnum},</if>\r\n            <if test=\"hospitalname != null\">hospitalname = #{hospitalname},</if>\r\n            <if test=\"hospitalcode != null\">hospitalcode = #{hospitalcode},</if>\r\n            <if test=\"hospitaldistrictcode != null\">hospitaldistrictcode = #{hospitaldistrictcode},</if>\r\n            <if test=\"hospitaldistrictname != null\">hospitaldistrictname = #{hospitaldistrictname},</if>\r\n            <if test=\"icd10code != null\">icd10code = #{icd10code},</if>\r\n            <if test=\"diagname != null\">diagname = #{diagname},</if>\r\n            <if test=\"starttime != null\">starttime = #{starttime},</if>\r\n            <if test=\"endtime != null\">endtime = #{endtime},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"deptname != null\">deptname = #{deptname},</if>\r\n            <if test=\"roomno != null\">roomno = #{roomno},</if>\r\n            <if test=\"bedNo != null\">bed_no = #{bedNo},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag = #{delFlag},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"patid != null\">patid = #{patid},</if>\r\n            <if test=\"leavediagname != null\">leavediagname = #{leavediagname},</if>\r\n            <if test=\"leaveicd10code != null\">leaveicd10code = #{leaveicd10code},</if>\r\n            <if test=\"drcode != null\">drcode = #{drcode},</if>\r\n            <if test=\"drname != null\">drname = #{drname},</if>\r\n            <if test=\"schemestatus != null\">schemestatus = #{schemestatus},</if>\r\n            <if test=\"generalschemestatus != null\">generalschemestatus = #{generalschemestatus},</if>\r\n            <if test=\"leaveldeptcode != null\">leaveldeptcode = #{leaveldeptcode},</if>\r\n            <if test=\"leaveldeptname != null\">leaveldeptname = #{leaveldeptname},</if>\r\n            <if test=\"hospitaldistrictid != null\">hospitaldistrictid = #{hospitaldistrictid},</if>\r\n            <if test=\"leavehospitaldistrictcode != null\">leavehospitaldistrictcode = #{leavehospitaldistrictcode},</if>\r\n            <if test=\"leavehospitaldistrictname != null\">leavehospitaldistrictname = #{leavehospitaldistrictname},</if>\r\n            <if test=\"leavehospitaldistrictid != null\">leavehospitaldistrictid = #{leavehospitaldistrictid},</if>\r\n            <if test=\"deptid != null\">deptid = #{deptid},</if>\r\n            <if test=\"leaveldeptid != null\">leaveldeptid = #{leaveldeptid},</if>\r\n            <if test=\"schemetime != null\">schemetime = #{schemetime},</if>\r\n            <if test=\"patname!= null\">patname = #{patname},</if>\r\n            <if test=\"patno != null\">patno = #{patno},</if>\r\n            <if test=\"inhospstate != null\">inhospstate = #{inhospstate},</if>\r\n            <if test=\"deptcheckFlag != null\">deptcheck_flag = #{deptcheckFlag},</if>\r\n            <if test=\"wardcheckFlag != null\">wardcheck_flag = #{wardcheckFlag},</if>\r\n            <if test=\"diagcheckFlag != null\">diagcheck_flag = #{diagcheckFlag},</if>\r\n            <if test=\"longTaskReason != null\">long_task_reason = #{longTaskReason},</if>\r\n            <if test=\"nurseId != null \">nurse_id = #{nurseId},</if>\r\n            <if test=\"nurseName != null \">nurse_name = #{nurseName},</if>\r\n            <if test=\"outWayId != null \">out_way_id = #{outWayId},</if>\r\n            <if test=\"outWayName != null \">out_way_name = #{outWayName},</if>\r\n            <if test=\"guid != null \">guid = #{guid},</if>\r\n            <if test=\"operator != null \">operator = #{operator},</if>\r\n            <if test=\"operatorId != null \">operator_id = #{operatorId},</if>\r\n            <if test=\"remark != null \">remark = #{remark},</if>\r\n            <if test=\"fuflag != null \">fuflag = #{fuflag},</if>\r\n            <if test=\"fudate != null \">fudate = #{fudate},</if>\r\n            <if test=\"fuperiod != null \">fuperiod = #{fuperiod},</if>\r\n            <if test=\"futypecode != null \">futypecode = #{futypecode},</if>\r\n            <if test=\"futypedesc != null \">futypedesc = #{futypedesc},</if>\r\n            <if test=\"fuadvice != null \">fuadvice = #{fuadvice},</if>\r\n            <if test=\"fuspecialadvice != null \">fuspecialadvice = #{fuspecialadvice},</if>\r\n            <if test=\"managementDoctor != null \">management_doctor = #{managementDoctor},</if>\r\n            <if test=\"managementDoctorCode != null \">management_doctor_code = #{managementDoctorCode}</if>\r\n\r\n        </trim>\r\n        where inhospid = #{inhospid}\r\n    </update>\r\n\r\n    <delete id=\"deletePatMedInhospByInhospid\" parameterType=\"Long\">\r\n        update pat_med_inhosp\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where inhospid = #{inhospid}\r\n    </delete>\r\n\r\n    <delete id=\"deletePatMedInhospByInhospno\" parameterType=\"String\">\r\n        update pat_med_inhosp\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where inhospno = #{inhospno}\r\n    </delete>\r\n\r\n    <delete id=\"deletePatMedInhospByInhospids\" parameterType=\"String\">\r\n        delete from pat_med_inhosp where inhospid in\r\n        <foreach item=\"inhospid\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{inhospid}\r\n        </foreach>\r\n    </delete>\r\n\r\n    <select id=\"getDeptRanking\" parameterType=\"com.smartor.domain.PatMedReq\" resultType=\"com.smartor.domain.PatMedRes\">\r\n        SELECT deptname, COUNT(1) AS rc\r\n        FROM (\r\n        <if test=\"mz != null\">\r\n            SELECT deptname\r\n            FROM pat_med_outhosp\r\n            <where>\r\n                del_flag=0\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and deptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </where>\r\n        </if>\r\n        <if test=\"mz != null and zy != null\">\r\n            UNION ALL\r\n        </if>\r\n        <if test=\"zy != null\">\r\n            SELECT deptname\r\n            FROM pat_med_inhosp\r\n            <where>\r\n                del_flag=0\r\n                and inhospstate=0\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and deptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </where>\r\n        </if>\r\n        <if test=\"cy != null and zy != null\">\r\n            UNION ALL\r\n            SELECT deptname\r\n            FROM pat_med_inhosp\r\n            <where>\r\n                del_flag=0\r\n                and inhospstate=1\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and deptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </where>\r\n        </if>\r\n        <if test=\"mz != null and zy != null and cy==null\">\r\n            UNION ALL\r\n            SELECT deptname\r\n            FROM pat_med_inhosp\r\n            <where>\r\n                del_flag=0\r\n                and inhospstate=1\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and deptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </where>\r\n        </if>\r\n        ) AS combined\r\n        GROUP BY deptname;\r\n    </select>\r\n    <select id=\"selectPatMedInhospCount\" parameterType=\"com.smartor.domain.PatMedReq\"\r\n            resultType=\"com.smartor.domain.PatMedRes\">\r\n        SELECT SUM( rs ) AS rs,\r\n        SUM( rc ) AS rc\r\n        FROM (\r\n        SELECT\r\n        COUNT(1) AS rc,\r\n        0 AS rs\r\n        FROM\r\n        pat_med_inhosp\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"orgid != null\">\r\n                AND orgid = #{orgid}\r\n            </if>\r\n            <if test=\"zy != null\">\r\n                and inhospstate=0\r\n                and date_format(starttime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n                and date_format(starttime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and deptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </if>\r\n            <if test=\"cy != null\">\r\n                and inhospstate=1\r\n                and date_format(endtime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n                and date_format(endtime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and leaveldeptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </if>\r\n\r\n        </where>\r\n        union all\r\n        select\r\n        0 AS rc,\r\n        count(1) AS rs\r\n        FROM\r\n        service_subtask\r\n        <where>\r\n            del_flag = 0\r\n            and service_type=2\r\n            <if test=\"orgid != null\">\r\n                AND orgid = #{orgid}\r\n            </if>\r\n            <if test=\"startDate != null\">\r\n                AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )\r\n            </if>\r\n            <if test=\"endDate != null\">\r\n                AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')\r\n            </if>\r\n            <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                and deptcode in\r\n                <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        ) AS combined_data\r\n    </select>\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml	(date 1758682819410)
-@@ -387,9 +387,9 @@
-         b.out_way_name,
-         b.nurse_id,
-         b.nurse_name,
--        b.deptcheckFlag,
--        b.diagcheckFlag,
--        b.wardcheckFlag,
-+        b.deptcheck_flag,
-+        b.diagcheck_flag,
-+        b.wardcheck_flag,
-         b.inhospstate,
-         b.patno,
-         b.inhospno,
-@@ -436,7 +436,7 @@
-         b.futypecode,
-         b.futypedesc,
-         b.fuadvice,
--        b.fuspecialadvice
-+        b.fuspecialadvice,
-         b.schemetime
-         FROM
-         pat_med_inhosp b,
-@@ -456,6 +456,7 @@
-                 concat('%', #{hospitaldistrictname}, '%')
-             </if>
-             <if test="endtime != null ">and b.endtime = #{endtime}</if>
-+            <if test="serialnum != null ">and b.serialnum = #{serialnum}</if>
-             <if test="fuflag != null ">and b.fuflag = #{fuflag}</if>
-             <if test="nurseId != null ">and b.nurse_id = #{nurseId}</if>
-             <if test="nurseName != null ">and b.nurse_name = #{nurseName}</if>
-Index: smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\n\r\n/**\r\n * 鎮h�呴棬璇婅褰曞璞� pat_med_outhosp\r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\n@Data\r\n@ApiModel(value = \"PatMedOuthosp\", description = \"鎮h�呴棬璇婅褰曞璞")\r\npublic class PatMedOuthosp extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 鑷ID\r\n     */\r\n    @ApiModelProperty(value = \"鑷ID\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 闂ㄨ瘖缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"闂ㄨ瘖缂栧彿\")\r\n    private String outhospno;\r\n\r\n    @ApiModelProperty(value = \"闀挎湡浠诲姟闅忚鏍囪瘑锛�0涓嶉渶瑕侊紝1闇�瑕乗")\r\n    private String fuflag;\r\n\r\n    /**\r\n     * 娴佹按鍙穃r\n     */\r\n    @ApiModelProperty(value = \"娴佹按鍙穃")\r\n    private String serialnum;\r\n\r\n    /**\r\n     * 妗fID\r\n     */\r\n    @ApiModelProperty(value = \"妗fID\")\r\n    private Long patid;\r\n\r\n    /**\r\n     * 鐥呬汉濮撳悕\r\n     */\r\n    @ApiModelProperty(value = \" 鐥呬汉濮撳悕\")\r\n    private String patname;\r\n\r\n    /**\r\n     * 鍖婚櫌鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖婚櫌鍚嶇О\")\r\n    private String hospitalname;\r\n\r\n    /**\r\n     * 鍖婚櫌缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍖婚櫌缂栧彿\")\r\n    private String hospitalcode;\r\n\r\n    /**\r\n     * 璇婃柇ICD鍊糪r\n     */\r\n    @ApiModelProperty(value = \"璇婃柇ICD鍊糪")\r\n    private String icd10code;\r\n\r\n    /**\r\n     * 璇婃柇鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"璇婃柇鍚嶇О\")\r\n    private String diagname;\r\n\r\n    /**\r\n     * 绉戝浠g爜\r\n     */\r\n    @ApiModelProperty(value = \"绉戝浠g爜\")\r\n    private String deptcode;\r\n\r\n    /**\r\n     * 绉戝鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"绉戝鍚嶇О\")\r\n    @Excel(name = \" 绉戝鍚嶇О \")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 鍖荤敓宸ュ彿\r\n     */\r\n    @ApiModelProperty(value = \"鍖荤敓宸ュ彿\")\r\n    private String drcode;\r\n\r\n    /**\r\n     * 鍖荤敓鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖荤敓鍚嶇О\")\r\n    private String drname;\r\n\r\n    /**\r\n     * 灏辫瘖鏃ユ湡\r\n     */\r\n    @ApiModelProperty(value = \"灏辫瘖鏃ユ湡\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 灏辫瘖鏃ユ湡 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date admitdate;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏄惁鐢熸垚鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚灏辫瘖 9鏃犲尮閰嶆柟妗圽r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鐢熸垚鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚灏辫瘖 9鏃犲尮閰嶆柟妗圽")\r\n    private Long schemestatus;\r\n\r\n    /**\r\n     * 绉戝ID\r\n     */\r\n    @ApiModelProperty(value = \"绉戝ID\")\r\n    private Long deptid;\r\n\r\n    /**\r\n     * 鏂规鐘舵�佹搷浣滄椂闂碶r\n     */\r\n    @ApiModelProperty(value = \"鏂规鐘舵�佹搷浣滄椂闂碶")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鏂规鐘舵�佹搷浣滄椂闂� \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date schemetime;\r\n\r\n    /**\r\n     * 鐜扮梾鍙瞈r\n     */\r\n    @ApiModelProperty(value = \"鐜扮梾鍙瞈")\r\n    private String hpi;\r\n\r\n    /**\r\n     鎮h�呮。妗堢紪鍙� 鐜扮梾鍙瞈r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呮。妗堢紪鍙穃")\r\n    private String patno;\r\n\r\n    /**\r\n     * 涓昏堪\r\n     */\r\n    @ApiModelProperty(value = \"涓昏堪\")\r\n    private String mainsuit;\r\n\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @ApiModelProperty(\"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(\"pageSize\")\r\n    private Integer pageSize;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @ApiModelProperty(value = \"骞撮緞\")\r\n    private String age;\r\n\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @ApiModelProperty(value = \"鎵嬫満鍙穃")\r\n    private String telcode;\r\n\r\n    /**\r\n     * 鐤剧梾闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊\r\n     */\r\n    @ApiModelProperty(value = \"鐤剧梾闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊鎴愬姛    2澶勭悊澶辫触 \")\r\n    private String diagcheckFlag;\r\n\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"寮�濮嬪氨璇婃椂闂碶")\r\n    private Date beginTime;\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"缁撴潫灏辫瘖鏃堕棿\")\r\n    private Date endTime;\r\n\r\n    @ApiModelProperty(value = \"鎸囧畾鐨勯殢璁挎棩鏈焅")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date fudate;\r\n\r\n    /**\r\n     * 璇佷欢鍙风爜\r\n     */\r\n    @ApiModelProperty(\"璇佷欢鍙风爜\")\r\n    @Excel(name = \" 璇佷欢鍙风爜 \")\r\n    private String idcardno;\r\n\r\n    @ApiModelProperty(value = \"鏄惁鏈夐殢璁�0娌℃湁;>=1鏈夐殢璁� \")\r\n    private String serverState;\r\n\r\n    @ApiModelProperty(value = \"鏈�鍚庡紑濮嬫椂闂碶")\r\n    private String lastStartTime;\r\n\r\n    @ApiModelProperty(value = \"鏈�鍚庣粨鏉熸椂闂碶")\r\n    private String lastEndTime;\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java b/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java
---- a/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java	(date 1758682819692)
-@@ -8,6 +8,7 @@
- import lombok.Data;
- 
- import java.util.Date;
-+import java.util.List;
- 
- /**
-  * 鎮h�呴棬璇婅褰曞璞� pat_med_outhosp
-@@ -83,6 +84,12 @@
-     @ApiModelProperty(value = "绉戝浠g爜")
-     private String deptcode;
- 
-+    /**
-+     * 绉戝浠g爜
-+     */
-+    @ApiModelProperty(value = "绉戝浠g爜闆嗗悎")
-+    private List<String> deptcodes;
-+
-     /**
-      * 绉戝鍚嶇О
-      */
-@@ -161,7 +168,7 @@
-     private String hpi;
- 
-     /**
--     鎮h�呮。妗堢紪鍙� 鐜扮梾鍙�
-+     * 鎮h�呮。妗堢紪鍙� 鐜扮梾鍙�
-      */
-     @ApiModelProperty(value = "鎮h�呮。妗堢紪鍙�")
-     private String patno;
-Index: ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.framework.config;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.context.annotation.Bean;\r\nimport org.springframework.http.HttpMethod;\r\nimport org.springframework.security.authentication.AuthenticationManager;\r\nimport org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;\r\nimport org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;\r\nimport org.springframework.security.config.annotation.web.builders.HttpSecurity;\r\nimport org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;\r\nimport org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;\r\nimport org.springframework.security.config.http.SessionCreationPolicy;\r\nimport org.springframework.security.core.userdetails.UserDetailsService;\r\nimport org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;\r\nimport org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;\r\nimport org.springframework.security.web.authentication.logout.LogoutFilter;\r\nimport org.springframework.web.filter.CorsFilter;\r\nimport com.ruoyi.framework.config.properties.PermitAllUrlProperties;\r\nimport com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter;\r\nimport com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl;\r\nimport com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl;\r\n\r\n/**\r\n * spring security閰嶇疆\r\n *\r\n * @author ruoyi\r\n */\r\n@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)\r\npublic class SecurityConfig extends WebSecurityConfigurerAdapter {\r\n    /**\r\n     * 鑷畾涔夌敤鎴疯璇侀�昏緫\r\n     */\r\n    @Autowired\r\n    private UserDetailsService userDetailsService;\r\n\r\n    /**\r\n     * 璁よ瘉澶辫触澶勭悊绫籠r\n     */\r\n    @Autowired\r\n    private AuthenticationEntryPointImpl unauthorizedHandler;\r\n\r\n    /**\r\n     * 閫�鍑哄鐞嗙被\r\n     */\r\n    @Autowired\r\n    private LogoutSuccessHandlerImpl logoutSuccessHandler;\r\n\r\n    /**\r\n     * token璁よ瘉杩囨护鍣╘r\n     */\r\n    @Autowired\r\n    private JwtAuthenticationTokenFilter authenticationTokenFilter;\r\n\r\n    /**\r\n     * 璺ㄥ煙杩囨护鍣╘r\n     */\r\n    @Autowired\r\n    private CorsFilter corsFilter;\r\n\r\n    /**\r\n     * 鍏佽鍖垮悕璁块棶鐨勫湴鍧�\r\n     */\r\n    @Autowired\r\n    private PermitAllUrlProperties permitAllUrl;\r\n\r\n    /**\r\n     * 瑙e喅 鏃犳硶鐩存帴娉ㄥ叆 AuthenticationManager\r\n     *\r\n     * @return\r\n     * @throws Exception\r\n     */\r\n    @Bean\r\n    @Override\r\n    public AuthenticationManager authenticationManagerBean() throws Exception {\r\n        return super.authenticationManagerBean();\r\n    }\r\n\r\n    /**\r\n     * anyRequest          |   鍖归厤鎵�鏈夎姹傝矾寰刓r\n     * access              |   SpringEl琛ㄨ揪寮忕粨鏋滀负true鏃跺彲浠ヨ闂甛r\n     * anonymous           |   鍖垮悕鍙互璁块棶\r\n     * denyAll             |   鐢ㄦ埛涓嶈兘璁块棶\r\n     * fullyAuthenticated  |   鐢ㄦ埛瀹屽叏璁よ瘉鍙互璁块棶锛堥潪remember-me涓嬭嚜鍔ㄧ櫥褰曪級\r\n     * hasAnyAuthority     |   濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず鏉冮檺锛屽垯鍏朵腑浠讳綍涓�涓潈闄愬彲浠ヨ闂甛r\n     * hasAnyRole          |   濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず瑙掕壊锛屽垯鍏朵腑浠讳綍涓�涓鑹插彲浠ヨ闂甛r\n     * hasAuthority        |   濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず鏉冮檺锛屽垯鍏舵潈闄愬彲浠ヨ闂甛r\n     * hasIpAddress        |   濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧずIP鍦板潃锛屽鏋滅敤鎴稩P鍜屽弬鏁板尮閰嶏紝鍒欏彲浠ヨ闂甛r\n     * hasRole             |   濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず瑙掕壊锛屽垯鍏惰鑹插彲浠ヨ闂甛r\n     * permitAll           |   鐢ㄦ埛鍙互浠绘剰璁块棶\r\n     * rememberMe          |   鍏佽閫氳繃remember-me鐧诲綍鐨勭敤鎴疯闂甛r\n     * authenticated       |   鐢ㄦ埛鐧诲綍鍚庡彲璁块棶\r\n     */\r\n    @Override\r\n    protected void configure(HttpSecurity httpSecurity) throws Exception {\r\n        // 娉ㄨВ鏍囪鍏佽鍖垮悕璁块棶鐨剈rl\r\n        ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity.authorizeRequests();\r\n        permitAllUrl.getUrls().forEach(url -> registry.antMatchers(url).permitAll());\r\n\r\n        httpSecurity\r\n                // CSRF绂佺敤锛屽洜涓轰笉浣跨敤session\r\n                .csrf().disable()\r\n                // 绂佺敤HTTP鍝嶅簲鏍囧ご\r\n                .headers().cacheControl().disable().and()\r\n                // 璁よ瘉澶辫触澶勭悊绫籠r\n                .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()\r\n                // 鍩轰簬token锛屾墍浠ヤ笉闇�瑕乻ession\r\n                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()\r\n                // 杩囨护璇锋眰\r\n                .authorizeRequests()\r\n                // 瀵逛簬鐧诲綍login 娉ㄥ唽register 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶\r\n                .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/subtaskAnswer/saveQuestionAnswer\", \"/smartor/import/download\", \"/smartor/serviceSubtask/recordAccept\", \"/smartor/outPath/getInfoByParam\", \"/smartor/serviceExternal/addDeptInfo\", \"/smartor/serviceExternal/**\", \"/sso/**\",\"/smartor/sltdHealthcareRecord/**\",\"/smartor/servicetask/getScriptByCondition\",\"/smartor/subtaskAnswer/saveMYDQuestionAnswer\").permitAll()\r\n                .antMatchers(HttpMethod.GET, \"/SSOLogin/**\").permitAll()\r\n                // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂甛r\n                .antMatchers(HttpMethod.GET, \"/\", \"/*.html\", \"/**/*.html\", \"/**/*.css\", \"/**/*.js\", \"/profile/**\",\"/getDept/*\").permitAll().antMatchers(\"/swagger-ui.html\", \"/swagger-resources/**\", \"/webjars/**\", \"/*/api-docs\", \"/druid/**\").permitAll()\r\n                .antMatchers(\"/smartor/organization/list\").permitAll()\r\n                // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇乗r\n                .anyRequest().authenticated().and().headers().frameOptions().disable();\r\n        // 娣诲姞Logout filter\r\n        httpSecurity.logout().logoutUrl(\"/logout\").logoutSuccessHandler(logoutSuccessHandler);\r\n        // 娣诲姞JWT filter\r\n        httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);\r\n        // 娣诲姞CORS filter\r\n        httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class);\r\n        httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class);\r\n    }\r\n\r\n    /**\r\n     * 寮烘暎鍒楀搱甯屽姞瀵嗗疄鐜癨r\n     */\r\n    @Bean\r\n    public BCryptPasswordEncoder bCryptPasswordEncoder() {\r\n        return new BCryptPasswordEncoder();\r\n    }\r\n\r\n    /**\r\n     * 韬唤璁よ瘉鎺ュ彛\r\n     */\r\n    @Override\r\n    protected void configure(AuthenticationManagerBuilder auth) throws Exception {\r\n        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java	(date 1758682819267)
-@@ -109,9 +109,8 @@
-                 .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/subtaskAnswer/getQuestionCache", "/smartor/subtaskAnswer/saveQuestionCache", "/smartor/servicetask/getScriptInfoByCondition", "/smartor/subtaskAnswer/saveQuestionAnswer", "/smartor/import/download", "/smartor/serviceSubtask/recordAccept", "/smartor/outPath/getInfoByParam", "/smartor/serviceExternal/addDeptInfo", "/smartor/serviceExternal/**", "/sso/**","/smartor/sltdHealthcareRecord/**","/smartor/servicetask/getScriptByCondition","/smartor/subtaskAnswer/saveMYDQuestionAnswer").permitAll()
--                .antMatchers(HttpMethod.GET, "/SSOLogin/**").permitAll()
-                 // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂�
--                .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**","/getDept/*").permitAll().antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
-+                .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**","/getDept/*","/SSOLogin/**").permitAll().antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
-                 .antMatchers("/smartor/organization/list").permitAll()
-                 // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
-                 .anyRequest().authenticated().and().headers().frameOptions().disable();
-Index: ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.ruoyi.system.mapper.SysDeptMapper\">\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysDept\" id=\"SysDeptResult\">\r\n        <id property=\"deptId\" column=\"dept_id\"/>\r\n        <id property=\"hisDeptId\" column=\"his_dept_id\"/>\r\n        <result property=\"parentId\" column=\"parent_id\"/>\r\n        <result property=\"hisParentId\" column=\"his_parent_id\"/>\r\n        <result property=\"ancestors\" column=\"ancestors\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"orderNum\" column=\"order_num\"/>\r\n        <result property=\"leader\" column=\"leader\"/>\r\n        <result property=\"phone\" column=\"phone\"/>\r\n        <result property=\"email\" column=\"email\"/>\r\n        <result property=\"status\" column=\"status\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"parentName\" column=\"parent_name\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptType\" column=\"dept_type\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectDeptVo\">\r\n        select d.dept_id,\r\n               d.dept_code,\r\n               d.parent_id,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.dept_type,\r\n               d.email,\r\n               d.status,\r\n               d.del_flag,\r\n               d.create_by,\r\n               d.guid,\r\n               d.orgid,\r\n               d.create_time,\r\n               d.his_dept_id,\r\n               d.his_parent_id\r\n        from sys_dept d\r\n    </sql>\r\n\r\n    <select id=\"selectDeptList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\" resultMap=\"SysDeptResult\">\r\n        <include refid=\"selectDeptVo\"/>\r\n        where d.del_flag = '0'\r\n        <if test=\"deptId != null and deptId != 0\">\r\n            AND dept_id = #{deptId}\r\n        </if>\r\n        <if test=\"parentId != null and parentId != 0\">\r\n            AND parent_id = #{parentId}\r\n        </if>\r\n        <if test=\"deptName != null and deptName != ''\">\r\n            AND dept_name like concat('%', #{deptName}, '%')\r\n        </if>\r\n        <if test=\"status != null and status != ''\">\r\n            AND status = #{status}\r\n        </if>\r\n        <if test=\"deptCode != null and deptCode != ''\">\r\n            AND dept_code = #{deptCode}\r\n        </if>\r\n        <if test=\"deptType != null and deptType != ''\">\r\n            AND dept_type = #{deptType}\r\n        </if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">\r\n            AND his_dept_id = #{hisDeptId}\r\n        </if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">\r\n            AND his_parent_id = #{hisParentId}\r\n        </if>\r\n            <if test=\"orgid != null and orgid != ''\">\r\n            AND orgid = #{orgid}\r\n        </if>\r\n        <!-- 鏁版嵁鑼冨洿杩囨护 -->\r\n        ${params.dataScope}\r\n        order by d.dept_type asc, d.parent_id, d.order_num\r\n    </select>\r\n\r\n    <select id=\"selectDeptListByRoleId\" resultType=\"Long\">\r\n        select d.dept_id\r\n        from sys_dept d\r\n        left join sys_role_dept rd on d.dept_id = rd.dept_id\r\n        where rd.role_id = #{roleId}\r\n        <if test=\"deptCheckStrictly\">\r\n            and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id =\r\n            rd.dept_id and rd.role_id = #{roleId})\r\n        </if>\r\n        order by d.parent_id, d.order_num\r\n    </select>\r\n\r\n    <select id=\"selectDeptById\" parameterType=\"Long\" resultMap=\"SysDeptResult\">\r\n        select d.dept_id,\r\n               d.parent_id,\r\n               d.dept_code,\r\n               d.dept_type,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.email,\r\n               d.status,\r\n               d.his_dept_id,\r\n               d.his_parent_id,\r\n               (select dept_name from sys_dept where dept_id = d.parent_id) parent_name\r\n        from sys_dept d\r\n        where d.dept_id = #{deptId}\r\n    </select>\r\n\r\n    <select id=\"selectDeptByCode\" parameterType=\"string\" resultMap=\"SysDeptResult\">\r\n        select d.dept_id,\r\n               d.parent_id,\r\n               d.dept_code,\r\n               d.dept_type,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.email,\r\n               d.his_dept_id,\r\n               d.his_parent_id,\r\n               d.status\r\n        from sys_dept d\r\n        where del_flag = 0\r\n          and d.dept_code = #{deptCode}\r\n    </select>\r\n\r\n    <select id=\"checkDeptExistUser\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(1)\r\n        from sys_user\r\n        where dept_id = #{deptId}\r\n          and del_flag = '0'\r\n    </select>\r\n\r\n    <select id=\"hasChildByDeptId\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(1)\r\n        from sys_dept\r\n        where del_flag = '0'\r\n          and parent_id = #{deptId} limit 1\r\n    </select>\r\n\r\n    <select id=\"selectChildrenDeptById\" parameterType=\"Long\" resultMap=\"SysDeptResult\">\r\n        select *\r\n        from sys_dept\r\n        where find_in_set(#{deptId}, ancestors)\r\n    </select>\r\n\r\n    <select id=\"selectNormalChildrenDeptById\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(*)\r\n        from sys_dept\r\n        where status = 0\r\n          and del_flag = '0'\r\n          and find_in_set(#{deptId}, ancestors)\r\n    </select>\r\n\r\n    <select id=\"checkDeptNameUnique\" resultMap=\"SysDeptResult\">\r\n        <include refid=\"selectDeptVo\"/>\r\n        where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1\r\n    </select>\r\n\r\n    <insert id=\"insertDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        insert into sys_dept(\r\n        <if test=\"deptId != null and deptId != 0\">dept_id,</if>\r\n        <if test=\"parentId != null and parentId != 0\">parent_id,</if>\r\n        <if test=\"deptName != null and deptName != ''\">dept_name,</if>\r\n        <if test=\"ancestors != null and ancestors != ''\">ancestors,</if>\r\n        <if test=\"orderNum != null\">order_num,</if>\r\n        <if test=\"leader != null and leader != ''\">leader,</if>\r\n        <if test=\"phone != null and phone != ''\">phone,</if>\r\n        <if test=\"email != null and email != ''\">email,</if>\r\n        <if test=\"status != null\">status,</if>\r\n        <if test=\"deptCode != null\">dept_code,</if>\r\n        <if test=\"deptType != null\">dept_type,</if>\r\n        <if test=\"createBy != null and createBy != ''\">create_by,</if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">his_dept_id,</if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">his_parent_id,</if>\r\n        <if test=\"orgid != null and orgid != ''\">orgid,</if>\r\n        create_time\r\n        )values(\r\n        <if test=\"deptId != null and deptId != 0\">#{deptId},</if>\r\n        <if test=\"parentId != null and parentId != 0\">#{parentId},</if>\r\n        <if test=\"deptName != null and deptName != ''\">#{deptName},</if>\r\n        <if test=\"ancestors != null and ancestors != ''\">#{ancestors},</if>\r\n        <if test=\"orderNum != null\">#{orderNum},</if>\r\n        <if test=\"leader != null and leader != ''\">#{leader},</if>\r\n        <if test=\"phone != null and phone != ''\">#{phone},</if>\r\n        <if test=\"email != null and email != ''\">#{email},</if>\r\n        <if test=\"status != null\">#{status},</if>\r\n        <if test=\"deptCode != null\">#{deptCode},</if>\r\n        <if test=\"deptType != null\">#{deptType},</if>\r\n        <if test=\"createBy != null and createBy != ''\">#{createBy},</if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">#{hisDeptId},</if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">#{hisParentId},</if>\r\n        <if test=\"orgid != null and orgid != ''\">#{orgid},</if>\r\n        sysdate()\r\n        )\r\n    </insert>\r\n\r\n    <update id=\"updateDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        update sys_dept\r\n        <set>\r\n            <if test=\"parentId != null and parentId != 0\">parent_id = #{parentId},</if>\r\n            <if test=\"deptName != null and deptName != ''\">dept_name = #{deptName},</if>\r\n            <if test=\"ancestors != null and ancestors != ''\">ancestors = #{ancestors},</if>\r\n            <if test=\"orderNum != null\">order_num = #{orderNum},</if>\r\n            <if test=\"leader != null\">leader = #{leader},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"email != null\">email = #{email},</if>\r\n            <if test=\"status != null and status != ''\">status = #{status},</if>\r\n            <if test=\"deptCode != null\">dept_code=#{deptCode},</if>\r\n            <if test=\"deptType != null\">dept_type=#{deptType},</if>\r\n            <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\r\n            <if test=\"hisParentId != null and hisParentId != ''\">his_parent_id = #{hisParentId},</if>\r\n            <if test=\"hisDeptId != null and hisDeptId != ''\">his_dept_id = #{hisDeptId},</if>\r\n            <if test=\"orgid != null and orgid != ''\">orgid = #{orgid},</if>\r\n            update_time = sysdate()\r\n        </set>\r\n        where dept_id = #{deptId}\r\n    </update>\r\n\r\n    <update id=\"updateDeptChildren\" parameterType=\"java.util.List\">\r\n        update sys_dept set ancestors =\r\n        <foreach collection=\"depts\" item=\"item\" index=\"index\"\r\n                 separator=\" \" open=\"case dept_id\" close=\"end\">\r\n            when #{item.deptId} then #{item.ancestors}\r\n        </foreach>\r\n        where dept_id in\r\n        <foreach collection=\"depts\" item=\"item\" index=\"index\"\r\n                 separator=\",\" open=\"(\" close=\")\">\r\n            #{item.deptId}\r\n        </foreach>\r\n    </update>\r\n\r\n    <update id=\"updateDeptStatusNormal\" parameterType=\"Long\">\r\n        update sys_dept set status = '0' where dept_id in\r\n        <foreach collection=\"array\" item=\"deptId\" open=\"(\" separator=\",\" close=\")\">\r\n            #{deptId}\r\n        </foreach>\r\n    </update>\r\n\r\n    <delete id=\"deleteDeptById\" parameterType=\"Long\">\r\n        update sys_dept\r\n        set del_flag = '2'\r\n        where dept_id = #{deptId}\r\n    </delete>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
---- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml	(date 1758682819281)
-@@ -250,7 +250,7 @@
- 
-     <delete id="deleteDeptById" parameterType="Long">
-         update sys_dept
--        set del_flag = '2'
-+        set del_flag = '1'
-         where dept_id = #{deptId}
-     </delete>
- 
-Index: ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.ruoyi.system.mapper.SysUserMapper\">\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysUser\" id=\"SysUserResult\">\r\n        <id property=\"userId\" column=\"user_id\"/>\r\n        <id property=\"hisUserId\" column=\"his_user_id\"/>\r\n        <result property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"hospInfo\" column=\"hosp_info\"/>\r\n        <result property=\"deptInfo\" column=\"dept_info\"/>\r\n        <result property=\"userName\" column=\"user_name\"/>\r\n        <result property=\"nickName\" column=\"nick_name\"/>\r\n        <result property=\"email\" column=\"email\"/>\r\n        <result property=\"phonenumber\" column=\"phonenumber\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"avatar\" column=\"avatar\"/>\r\n        <result property=\"password\" column=\"password\"/>\r\n        <result property=\"status\" column=\"status\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"loginIp\" column=\"login_ip\"/>\r\n        <result property=\"loginDate\" column=\"login_date\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"idCard\" column=\"id_card\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"title\" column=\"title\"/>\r\n        <result property=\"birthday\" column=\"birthday\"/>\r\n        <result property=\"jobPhone\" column=\"job_phone\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"userType\" column=\"user_type\"/>\r\n        <result property=\"searchscope\" column=\"searchscope\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <association property=\"dept\" column=\"dept_id\" javaType=\"com.ruoyi.common.core.domain.entity.SysDept\"\r\n                     resultMap=\"deptResult\"/>\r\n        <collection property=\"roles\" javaType=\"java.util.List\" resultMap=\"RoleResult\"/>\r\n    </resultMap>\r\n\r\n    <resultMap id=\"deptResult\" type=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        <id property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"parentId\" column=\"parent_id\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"ancestors\" column=\"ancestors\"/>\r\n        <result property=\"orderNum\" column=\"order_num\"/>\r\n        <result property=\"leader\" column=\"leader\"/>\r\n        <result property=\"status\" column=\"dept_status\"/>\r\n    </resultMap>\r\n\r\n    <resultMap id=\"RoleResult\" type=\"com.ruoyi.common.core.domain.entity.SysRole\">\r\n        <id property=\"roleId\" column=\"role_id\"/>\r\n        <result property=\"roleName\" column=\"role_name\"/>\r\n        <result property=\"roleKey\" column=\"role_key\"/>\r\n        <result property=\"roleSort\" column=\"role_sort\"/>\r\n        <result property=\"dataScope\" column=\"data_scope\"/>\r\n        <result property=\"status\" column=\"role_status\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectUserVo\">\r\n        select u.user_id,\r\n               u.dept_id,\r\n               u.id_card,\r\n               u.hosp_info,\r\n               u.dept_info,\r\n               u.searchscope,\r\n               u.user_name,\r\n               u.user_type,\r\n               u.nick_name,\r\n               u.dept_code,\r\n               u.dept_name,\r\n               u.title,\r\n               u.his_user_id,\r\n               u.job_phone,\r\n               u.birthday,\r\n               u.email,\r\n               u.avatar,\r\n               u.phonenumber,\r\n               u.password,\r\n               u.sex,\r\n               u.status,\r\n               u.del_flag,\r\n               u.login_ip,\r\n               u.login_date,\r\n               u.create_by,\r\n               u.create_time,\r\n               u.remark,\r\n               u.guid,\r\n               u.orgid,\r\n               d.dept_id,\r\n               d.parent_id,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.status as dept_status,\r\n               r.role_id,\r\n               r.role_name,\r\n               r.role_key,\r\n               r.role_sort,\r\n               r.data_scope,\r\n               r.status as role_status\r\n        from sys_user u\r\n                 left join sys_dept d on u.dept_id = d.dept_id\r\n                 left join sys_user_role ur on u.user_id = ur.user_id\r\n                 left join sys_role r on r.role_id = ur.role_id\r\n    </sql>\r\n\r\n    <select id=\"selectUserList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\" resultMap=\"SysUserResult\">\r\n        select u.user_id,u.title,u.his_user_id,u.hosp_info,u.dept_info, u.searchscope, u.dept_id, u.user_type,\r\n        u.nick_name, u.user_name,\r\n        u.email,u.id_card,\r\n        u.avatar,\r\n        u.dept_name,\r\n        u.dept_code,\r\n        u.birthday,\r\n        u.job_phone,\r\n        u.phonenumber, u.sex, u.status,\r\n        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\r\n        u\r\n        left join sys_dept d on u.dept_id = d.dept_id\r\n        where u.del_flag = '0'\r\n        <if test=\"userId != null\">\r\n            AND u.user_id = #{userId}\r\n        </if>\r\n        <if test=\"orgid != null and orgid != ''\">\r\n            AND u.orgid = #{orgid}\r\n        </if>\r\n        <if test=\"userName != null and userName != ''\">\r\n            AND u.user_name like concat('%', #{userName}, '%')\r\n        </if>\r\n        <if test=\"nickName != null and nickName != ''\">\r\n            AND u.nick_name like concat('%', #{nickName}, '%')\r\n        </if>\r\n        <if test=\"status != null and status != ''\">\r\n            AND u.status = #{status}\r\n        </if>\r\n        <if test=\"idCard != null and idCard != ''\">\r\n            AND u.id_card = #{idCard}\r\n        </if>\r\n        <if test=\"title != null and title != ''\">\r\n            AND u.title = #{title}\r\n        </if>\r\n        <if test=\"jobPhone != null and jobPhone != ''\">\r\n            AND u.job_phone = #{jobPhone}\r\n        </if>\r\n        <if test=\"birthday != null and birthday != ''\">\r\n            AND u.birthday = #{birthday}\r\n        </if>\r\n        <if test=\"deptName != null and deptName != ''\">\r\n            AND u.dept_name = #{deptName}\r\n        </if>\r\n        <if test=\"deptCode != null and deptCode != ''\">\r\n            AND u.dept_code = #{deptCode}\r\n        </if>\r\n        <if test=\"hisUserId != null and hisUserId != ''\">\r\n            AND u.his_user_id = #{hisUserId}\r\n        </if>\r\n        <if test=\"phonenumber != null and phonenumber != ''\">\r\n            AND u.phonenumber like concat('%', #{phonenumber}, '%')\r\n        </if>\r\n        <if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 寮�濮嬫椂闂存绱� -->\r\n            AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')\r\n        </if>\r\n        <if test=\"params.endTime != null and params.endTime != ''\"><!-- 缁撴潫鏃堕棿妫�绱� -->\r\n            AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')\r\n        </if>\r\n        <if test=\"deptId != null and deptId != 0\">\r\n            AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId},\r\n            ancestors) ))\r\n        </if>\r\n        <!-- 鏁版嵁鑼冨洿杩囨护 -->\r\n        ${params.dataScope}\r\n    </select>\r\n\r\n    <select id=\"selectAllocatedList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\"\r\n            resultMap=\"SysUserResult\">\r\n        select distinct u.user_id,u.his_user_id,u.title,u.hosp_info,u.dept_info, u.searchscope, u.dept_id, u.user_name,\r\n        u.user_type,\r\n        u.nick_name,\r\n        u.email,\r\n        u.dept_code,\r\n        u.dept_name,\r\n        u.birthday,\r\n        u.job_phone,\r\n        u.phonenumber, u.status,u.id_card,\r\n        u.create_time\r\n        from sys_user u\r\n        left join sys_dept d on u.dept_id = d.dept_id\r\n        left join sys_user_role ur on u.user_id = ur.user_id\r\n        left join sys_role r on r.role_id = ur.role_id\r\n        where u.del_flag = '0' and r.role_id = #{roleId}\r\n        <if test=\"userName != null and userName != ''\">\r\n            AND u.user_name like concat('%', #{userName}, '%')\r\n        </if>\r\n        <if test=\"phonenumber != null and phonenumber != ''\">\r\n            AND u.phonenumber like concat('%', #{phonenumber}, '%')\r\n        </if>\r\n        <if test=\"title != null and title != ''\">\r\n            AND u.title = #{title}\r\n        </if>\r\n        <if test=\"hisUserId != null and hisUserId != ''\">\r\n            AND u.his_user_id = #{hisUserId}\r\n        </if>\r\n        <!-- 鏁版嵁鑼冨洿杩囨护 -->\r\n        ${params.dataScope}\r\n    </select>\r\n\r\n    <select id=\"selectUnallocatedList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\"\r\n            resultMap=\"SysUserResult\">\r\n        select distinct u.user_id, u.dept_id, u.hosp_info, u.dept_info,u.searchscope, u.user_name, u.user_type,\r\n        u.nick_name,\r\n        u.email,\r\n        u.his_user_id,\r\n        u.title,\r\n        u.dept_code,\r\n        u.dept_name,\r\n        u.job_phone,\r\n        u.birthday,\r\n        u.phonenumber, u.status,u.id_card,\r\n        u.create_time\r\n        from sys_user u\r\n        left join sys_dept d on u.dept_id = d.dept_id\r\n        left join sys_user_role ur on u.user_id = ur.user_id\r\n        left join sys_role r on r.role_id = ur.role_id\r\n        where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)\r\n        and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and\r\n        ur.role_id = #{roleId})\r\n        <if test=\"userName != null and userName != ''\">\r\n            AND u.user_name like concat('%', #{userName}, '%')\r\n        </if>\r\n        <if test=\"phonenumber != null and phonenumber != ''\">\r\n            AND u.phonenumber like concat('%', #{phonenumber}, '%')\r\n        </if>\r\n        <!-- 鏁版嵁鑼冨洿杩囨护 -->\r\n        ${params.dataScope}\r\n    </select>\r\n\r\n    <select id=\"selectUserByUserName\" parameterType=\"String\" resultMap=\"SysUserResult\">\r\n        <include refid=\"selectUserVo\"/>\r\n        where u.user_name = #{userName} and u.del_flag = '0'\r\n    </select>\r\n\r\n    <select id=\"selectUserByUserNameByCondition\" parameterType=\"String\" resultMap=\"SysUserResult\">\r\n        <include refid=\"selectUserVo\"/>\r\n        <where>\r\n            u.del_flag = '0'\r\n            <if test=\"userName != null and userName != ''\">\r\n                AND u.user_name = #{userName}\r\n            </if>\r\n            <if test=\"orgid != null and orgid != ''\">\r\n                AND u.orgid = #{orgid}\r\n            </if>\r\n            <if test=\"deptId != null and deptId != ''\">\r\n                AND u.dept_id = #{deptId}\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectUserById\" parameterType=\"Long\" resultMap=\"SysUserResult\">\r\n        <include refid=\"selectUserVo\"/>\r\n        where u.user_id = #{userId}\r\n    </select>\r\n\r\n    <select id=\"checkUserNameUnique\" parameterType=\"String\" resultMap=\"SysUserResult\">\r\n        select user_id, user_name\r\n        from sys_user\r\n        where user_name = #{userName}\r\n          and del_flag = '0' limit 1\r\n    </select>\r\n\r\n    <select id=\"checkPhoneUnique\" parameterType=\"String\" resultMap=\"SysUserResult\">\r\n        select user_id, phonenumber\r\n        from sys_user\r\n        where phonenumber = #{phonenumber}\r\n          and del_flag = '0' limit 1\r\n    </select>\r\n\r\n    <select id=\"checkEmailUnique\" parameterType=\"String\" resultMap=\"SysUserResult\">\r\n        select user_id, email\r\n        from sys_user\r\n        where email = #{email}\r\n          and del_flag = '0' limit 1\r\n    </select>\r\n\r\n    <insert id=\"insertUser\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"userId\">\r\n        insert into sys_user(\r\n        <if test=\"userId != null and userId != 0\">user_id,</if>\r\n        <if test=\"deptId != null and deptId != 0\">dept_id,</if>\r\n        <if test=\"userName != null and userName != ''\">user_name,</if>\r\n        <if test=\"nickName != null and nickName != ''\">nick_name,</if>\r\n        <if test=\"email != null and email != ''\">email,</if>\r\n        <if test=\"avatar != null and avatar != ''\">avatar,</if>\r\n        <if test=\"phonenumber != null and phonenumber != ''\">phonenumber,</if>\r\n        <if test=\"sex != null and sex != ''\">sex,</if>\r\n        <if test=\"password != null and password != ''\">password,</if>\r\n        <if test=\"status != null and status != ''\">status,</if>\r\n        <if test=\"createBy != null and createBy != ''\">create_by,</if>\r\n        <if test=\"remark != null and remark != ''\">remark,</if>\r\n        <if test=\"userType != null and userType != ''\">user_type,</if>\r\n        <if test=\"deptInfo != null and deptInfo != ''\">dept_info,</if>\r\n        <if test=\"hospInfo != null and hospInfo != ''\">hosp_info,</if>\r\n        <if test=\"searchscope != null and searchscope != ''\">searchscope,</if>\r\n        <if test=\"idCard != null and idCard != ''\">id_card,</if>\r\n        <if test=\"title != null and title != ''\">title,</if>\r\n        <if test=\"hisUserId != null and hisUserId != ''\">his_user_id,</if>\r\n        <if test=\"jobPhone != null and jobPhone != ''\">job_phone,</if>\r\n        <if test=\"birthday != null \">birthday,</if>\r\n        <if test=\"hisUserId != null and hisUserId != ''\">his_user_id,</if>\r\n        <if test=\"orgid != null and orgid != ''\">orgid,</if>\r\n        <if test=\"deptCode != null and deptCode != ''\">dept_code,</if>\r\n        <if test=\"deptName != null and deptName != ''\">dept_name,</if>\r\n        create_time\r\n        )values(\r\n        <if test=\"userId != null and userId != ''\">#{userId},</if>\r\n        <if test=\"deptId != null and deptId != ''\">#{deptId},</if>\r\n        <if test=\"userName != null and userName != ''\">#{userName},</if>\r\n        <if test=\"nickName != null and nickName != ''\">#{nickName},</if>\r\n        <if test=\"email != null and email != ''\">#{email},</if>\r\n        <if test=\"avatar != null and avatar != ''\">#{avatar},</if>\r\n        <if test=\"phonenumber != null and phonenumber != ''\">#{phonenumber},</if>\r\n        <if test=\"sex != null and sex != ''\">#{sex},</if>\r\n        <if test=\"password != null and password != ''\">#{password},</if>\r\n        <if test=\"status != null and status != ''\">#{status},</if>\r\n        <if test=\"createBy != null and createBy != ''\">#{createBy},</if>\r\n        <if test=\"remark != null and remark != ''\">#{remark},</if>\r\n        <if test=\"userType != null and userType != ''\">#{userType},</if>\r\n        <if test=\"deptInfo != null and deptInfo != ''\">#{deptInfo},</if>\r\n        <if test=\"hospInfo != null and hospInfo != ''\">#{hospInfo},</if>\r\n        <if test=\"searchscope != null and searchscope != ''\">#{searchscope},</if>\r\n        <if test=\"idCard != null and idCard != ''\">#{idCard},</if>\r\n        <if test=\"title != null and title != ''\">#{title},</if>\r\n        <if test=\"jobPhone != null and jobPhone != ''\">#{jobPhone},</if>\r\n        <if test=\"birthday != null and birthday != ''\">#{birthday},</if>\r\n        <if test=\"hisUserId != null and hisUserId != ''\">#{hisUserId},</if>\r\n        <if test=\"orgid != null and orgid != ''\">#{orgid},</if>\r\n        <if test=\"deptCode != null and deptCode != ''\">#{deptCode},</if>\r\n        <if test=\"deptName != null and deptName != ''\">#{deptName},</if>\r\n        sysdate()\r\n        )\r\n    </insert>\r\n\r\n    <update id=\"updateUser\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\">\r\n        update sys_user\r\n        <set>\r\n            <if test=\"deptId != null and deptId != 0\">dept_id = #{deptId},</if>\r\n            <if test=\"userName != null and userName != ''\">user_name = #{userName},</if>\r\n            <if test=\"nickName != null and nickName != ''\">nick_name = #{nickName},</if>\r\n            <if test=\"email != null \">email = #{email},</if>\r\n            <if test=\"phonenumber != null \">phonenumber = #{phonenumber},</if>\r\n            <if test=\"sex != null and sex != ''\">sex = #{sex},</if>\r\n            <if test=\"avatar != null and avatar != ''\">avatar = #{avatar},</if>\r\n            <if test=\"password != null and password != ''\">password = #{password},</if>\r\n            <if test=\"status != null and status != ''\">status = #{status},</if>\r\n            <if test=\"loginIp != null and loginIp != ''\">login_ip = #{loginIp},</if>\r\n            <if test=\"loginDate != null\">login_date = #{loginDate},</if>\r\n            <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\r\n            <if test=\"remark != null\">remark = #{remark},</if>\r\n            <if test=\"userType != null\">user_type = #{userType},</if>\r\n            <if test=\"searchscope != null\">searchscope = #{searchscope},</if>\r\n            <if test=\"deptInfo != null and deptInfo != ''\">dept_info=#{deptInfo},</if>\r\n            <if test=\"hospInfo != null and hospInfo != ''\">hosp_info=#{hospInfo},</if>\r\n            <if test=\"idCard != null and idCard != ''\">id_card=#{idCard},</if>\r\n            <if test=\"jobPhone != null and jobPhone != ''\">job_phone=#{jobPhone},</if>\r\n            <if test=\"birthday != null \">birthday=#{birthday},</if>\r\n            <if test=\"orgid != null \">orgid=#{orgid},</if>\r\n            <if test=\"title != null and title != ''\">\r\n                title = #{title},\r\n            </if>\r\n            <if test=\"hisUserId != null and hisUserId != ''\">\r\n                his_user_id = #{hisUserId},\r\n            </if>\r\n            <if test=\"deptCode != null and deptCode != ''\">dept_code=#{deptCode},</if>\r\n            <if test=\"deptName != null and deptName != ''\">dept_name=#{deptName},</if>\r\n            update_time = sysdate()\r\n        </set>\r\n        where user_id = #{userId}\r\n    </update>\r\n\r\n    <update id=\"updateUserStatus\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\">\r\n        update sys_user\r\n        set status = #{status}\r\n        where user_id = #{userId}\r\n    </update>\r\n\r\n    <update id=\"updateUserAvatar\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\">\r\n        update sys_user\r\n        set avatar = #{avatar}\r\n        where user_name = #{userName}\r\n    </update>\r\n\r\n    <update id=\"resetUserPwd\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\">\r\n        update sys_user\r\n        set password = #{password}\r\n        where user_name = #{userName}\r\n    </update>\r\n\r\n    <delete id=\"deleteUserById\" parameterType=\"Long\">\r\n        update sys_user\r\n        set del_flag = '2'\r\n        where user_id = #{userId}\r\n    </delete>\r\n\r\n    <delete id=\"deleteUserByIds\" parameterType=\"Long\">\r\n        update sys_user set del_flag = '2' where user_id in\r\n        <foreach collection=\"array\" item=\"userId\" open=\"(\" separator=\",\" close=\")\">\r\n            #{userId}\r\n        </foreach>\r\n    </delete>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
---- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml	(date 1758682819276)
-@@ -119,9 +119,9 @@
-         u.birthday,
-         u.job_phone,
-         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.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name from sys_user
-         u
--        left join sys_dept d on u.dept_id = d.dept_id
-+        left join sys_user_dept d on u.user_id = d.user_id
-         where u.del_flag = '0'
-         <if test="userId != null">
-             AND u.user_id = #{userId}
-@@ -401,12 +401,12 @@
- 
-     <delete id="deleteUserById" parameterType="Long">
-         update sys_user
--        set del_flag = '2'
-+        set del_flag = '1'
-         where user_id = #{userId}
-     </delete>
- 
-     <delete id="deleteUserByIds" parameterType="Long">
--        update sys_user set del_flag = '2' where user_id in
-+        update sys_user set del_flag = '1' where user_id in
-         <foreach collection="array" item="userId" open="(" separator="," close=")">
-             #{userId}
-         </foreach>
-Index: smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 闅忚浠诲姟妯$増闂璇濇湳搴撳璞� ivr_task_template_script\r\n *\r\n * @author ruoyi\r\n * @date 2024-05-13\r\n */\r\n@Data\r\n@ApiModel(value = \"IvrTaskTemplateScriptVO\", description = \"闅忚浠诲姟妯$増闂璇濇湳搴撳璞")\r\npublic class IvrTaskTemplateScriptVO extends BaseEntity {\r\n\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 涓婚敭ID\r\n     */\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 鍒嗘暟\r\n     */\r\n    @Excel(name = \"鍒嗘暟\")\r\n    @ApiModelProperty(value = \"鍒嗘暟\")\r\n    private BigDecimal score;\r\n\r\n    /**\r\n     * 浠诲姟id\r\n     */\r\n    @Excel(name = \"浠诲姟id\")\r\n    @ApiModelProperty(value = \"浠诲姟id\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 妯℃澘璇濇湳缂栧彿\r\n     */\r\n    @Excel(name = \"妯℃澘璇濇湳缂栧彿\")\r\n    @ApiModelProperty(value = \"妯℃澘璇濇湳缂栧彿\")\r\n    private Long scriptno;\r\n\r\n\r\n    /**\r\n     * 閫傜敤棰樺瀷锛�1.鍗曢�� 2澶氶�� 3濉┖ 4鍏跺畠锛塡r\n     */\r\n    @Excel(name = \"閫傜敤棰樺瀷锛�1.鍗曢�� 2澶氶�� 3濉┖ 4鍏跺畠锛塡")\r\n    @ApiModelProperty(value = \"閫傜敤棰樺瀷锛�1.鍗曢�� 2澶氶�� 3闂瓟 4濉┖  5鍏跺畠锛塡")\r\n    private String scriptType;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"妯℃澘ID\")\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private Long templateID;\r\n\r\n    /**\r\n     * 璇濇湳ID\r\n     */\r\n    @Excel(name = \"璇濇湳ID\")\r\n    @ApiModelProperty(value = \"璇濇湳ID\")\r\n    private Long scriptID;\r\n\r\n    /**\r\n     * 闂鐐筡r\n     */\r\n    @Excel(name = \"闂鐐筡")\r\n    @ApiModelProperty(value = \"闂鐐筡")\r\n    private String questionPoint;\r\n\r\n    /**\r\n     * 璇濇湳鍐呭\r\n     */\r\n    @Excel(name = \"璇濇湳鍐呭\")\r\n    @ApiModelProperty(value = \"璇濇湳鍐呭\")\r\n    private String scriptContent;\r\n\r\n    /**\r\n     * 璇濇湳璇煶\r\n     */\r\n    @Excel(name = \"璇濇湳璇煶\")\r\n    @ApiModelProperty(value = \"璇濇湳璇煶\")\r\n    private String scriptVoice;\r\n\r\n    /**\r\n     * 鏃犲尮閰嶈瘽鏈痋r\n     */\r\n    @Excel(name = \"鏃犲尮閰嶈瘽鏈痋")\r\n    @ApiModelProperty(value = \"鏃犲尮閰嶈瘽鏈痋")\r\n    private String noMatchText;\r\n\r\n    /**\r\n     * 鏃犲尮閰嶈瘽鏈闊砛r\n     */\r\n    @Excel(name = \"鏃犲尮閰嶈瘽鏈闊砛")\r\n    @ApiModelProperty(value = \"鏃犲尮閰嶈瘽鏈闊砛")\r\n    private String noMatchVoice;\r\n\r\n    /**\r\n     * 闈欓粯璇濇湳\r\n     */\r\n    @Excel(name = \"闈欓粯璇濇湳\")\r\n    @ApiModelProperty(value = \"闈欓粯璇濇湳\")\r\n    private String slienceText;\r\n\r\n    /**\r\n     * 闈欓粯璇濇湳璇煶\r\n     */\r\n    @Excel(name = \"闈欓粯璇濇湳璇煶\")\r\n    @ApiModelProperty(value = \"闈欓粯璇濇湳璇煶\")\r\n    private String slienceVoice;\r\n\r\n    /**\r\n     * 閫氱敤搴撳尮閰嶅悗璇濇湳\r\n     */\r\n    @Excel(name = \"閫氱敤搴撳尮閰嶅悗璇濇湳\")\r\n    @ApiModelProperty(value = \"閫氱敤搴撳尮閰嶅悗璇濇湳\")\r\n    private String submoduleText;\r\n\r\n    /**\r\n     * 閫氱敤搴撳尮閰嶅悗璇濇湳璇煶\r\n     */\r\n    @Excel(name = \"閫氱敤搴撳尮閰嶅悗璇濇湳璇煶\")\r\n    @ApiModelProperty(value = \"閫氱敤搴撳尮閰嶅悗璇濇湳璇煶\")\r\n    private String submoduleVoice;\r\n\r\n    /**\r\n     * 鍚笉娓呰瘽鏈痋r\n     */\r\n    @Excel(name = \"鍚笉娓呰瘽鏈痋")\r\n    @ApiModelProperty(value = \"鍚笉娓呰瘽鏈痋")\r\n    private String noClearlyText;\r\n\r\n    /**\r\n     * 鍚笉娓呰瘽鏈闊砛r\n     */\r\n    @Excel(name = \"鍚笉娓呰瘽鏈闊砛")\r\n    @ApiModelProperty(value = \"鍚笉娓呰瘽鏈闊砛")\r\n    private String noClearlyVoice;\r\n\r\n    /**\r\n     * 缁勫埆\r\n     */\r\n    @Excel(name = \"缁勫埆\")\r\n    @ApiModelProperty(value = \"缁勫埆\")\r\n    private String groupName;\r\n\r\n    /**\r\n     * 绫诲埆鍚峔r\n     */\r\n    @Excel(name = \"绫诲埆鍚峔")\r\n    @ApiModelProperty(value = \"绫诲埆鍚峔")\r\n    private String categoryName;\r\n\r\n    /**\r\n     * 鎸囨爣閫夐」\r\n     */\r\n    @Excel(name = \"鎸囨爣閫夐」\")\r\n    @ApiModelProperty(value = \"鎸囨爣閫夐」\")\r\n    private String targetOptions;\r\n\r\n    /**\r\n     * 璇濇湳璇煶鏂囨湰\r\n     */\r\n    @Excel(name = \"璇濇湳璇煶鏂囨湰\")\r\n    @ApiModelProperty(value = \"璇濇湳璇煶鏂囨湰\")\r\n    private String ivrtext;\r\n\r\n    /**\r\n     * 璇█\r\n     */\r\n    @Excel(name = \"璇█\")\r\n    @ApiModelProperty(value = \"璇█\")\r\n    private String language;\r\n\r\n    /**\r\n     * 鍙兘鎾斁WAV绫诲瀷\r\n     */\r\n    @Excel(name = \"鍙兘鎾斁WAV绫诲瀷\")\r\n    @ApiModelProperty(value = \"鍙兘鎾斁WAV绫诲瀷\")\r\n    private Long playWavOnly;\r\n\r\n    /**\r\n     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級\r\n     */\r\n    @Excel(name = \"鍊肩被鍨媆", readConverterExp = \"鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級\")\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private Long valueType;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @Excel(name = \"鐖禝D\")\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private Long pid;\r\n\r\n    /**\r\n     * GUID\r\n     */\r\n    @Excel(name = \"GUID\")\r\n    @ApiModelProperty(value = \"GUID\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 鍩虹鎸囨爣绫诲瀷\r\n     */\r\n    @Excel(name = \"鍩虹鎸囨爣绫诲瀷\")\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣绫诲瀷\")\r\n    private String targettype;\r\n\r\n    /**\r\n     * 鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)\r\n     */\r\n    @Excel(name = \"鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)\")\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)\")\r\n    private Long targetid;\r\n\r\n    /**\r\n     * 鍩虹鎸囨爣鍊糪r\n     */\r\n    @Excel(name = \"鍩虹鎸囨爣鍊糪")\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣鍊糪")\r\n    private String targetvalue;\r\n\r\n    /**\r\n     * 鏍囬\r\n     */\r\n    @Excel(name = \"鏍囬\")\r\n    @ApiModelProperty(value = \"鏍囬\")\r\n    private String scriptTopic;\r\n\r\n    /**\r\n     * 涓嬩竴棰榎r\n     */\r\n    @Excel(name = \"涓嬩竴棰榎")\r\n    @ApiModelProperty(value = \"涓嬩竴棰榎")\r\n    private Long nextScriptno;\r\n\r\n    /**\r\n     * 鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級\r\n     */\r\n    @Excel(name = \"鍏跺畠鏁版嵁\", readConverterExp = \"瀛�=鍌ㄥ彉閲廫")\r\n    @ApiModelProperty(value = \"鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級\")\r\n    private String otherdata;\r\n\r\n    /**\r\n     * 鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛塡r\n     */\r\n    @Excel(name = \"鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    \", readConverterExp = \"缁�=浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧\")\r\n    @ApiModelProperty(value = \"鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛塡")\r\n    private String isMust;\r\n\r\n    /**\r\n     * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級\r\n     */\r\n    @Excel(name = \"闂缁撴灉\", readConverterExp = \"缁�=鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨刓")\r\n    @ApiModelProperty(value = \"闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級\")\r\n    private String questionResult;\r\n\r\n    @ApiModelProperty(value = \"閫氱敤搴撳尮閰嶅埌鐨勮瘽鏈痋")\r\n    private String extemplateText;\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n    /**\r\n     * 閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\r\n     */\r\n    @Excel(name = \"閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\")\r\n    @ApiModelProperty(value = \"閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\")\r\n    private String branchFlag;\r\n\r\n    /**\r\n     * 搴忓彿\r\n     */\r\n    @ApiModelProperty(value = \"搴忓彿\")\r\n    private Integer sort;\r\n\r\n    /**\r\n     * 璇濇湳閫夐」\r\n     */\r\n    @ApiModelProperty(value = \"璇濇湳閫夐」\")\r\n    private List<IvrTaskTemplateTargetoption> ivrTaskScriptTargetoptionList = new ArrayList<>();\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java
---- a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java	(date 1758682819667)
-@@ -319,6 +319,12 @@
-     @ApiModelProperty(value = "搴忓彿")
-     private Integer sort;
- 
-+    /**
-+     * 寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊
-+     */
-+    @ApiModelProperty(value = "寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊")
-+    private Long isabnormal;
-+
-     /**
-      * 璇濇湳閫夐」
-      */
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.system;\r\n\r\nimport java.util.List;\r\nimport javax.servlet.http.HttpServletResponse;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysUserRole;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.validation.annotation.Validated;\r\nimport org.springframework.web.bind.annotation.GetMapping;\r\nimport org.springframework.web.bind.annotation.PathVariable;\r\nimport org.springframework.web.bind.annotation.PostMapping;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RestController;\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.constant.UserConstants;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport com.ruoyi.common.core.domain.entity.SysRole;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.ruoyi.framework.web.service.SysPermissionService;\r\nimport com.ruoyi.framework.web.service.TokenService;\r\nimport com.ruoyi.system.service.ISysDeptService;\r\nimport com.ruoyi.system.service.ISysRoleService;\r\nimport com.ruoyi.system.service.ISysUserService;\r\n\r\n/**\r\n * 瑙掕壊淇℃伅\r\n *\r\n * @author ruoyi\r\n */\r\n@RestController\r\n@RequestMapping(\"/system/role\")\r\npublic class SysRoleController extends BaseController {\r\n    @Autowired\r\n    private ISysRoleService roleService;\r\n\r\n    @Autowired\r\n    private TokenService tokenService;\r\n\r\n    @Autowired\r\n    private SysPermissionService permissionService;\r\n\r\n    @Autowired\r\n    private ISysUserService userService;\r\n\r\n    @Autowired\r\n    private ISysDeptService deptService;\r\n    \r\n    @Value(\"${isAdmin}\")\r\n    private List<Long> isAdmin;\r\n\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:list')\")\r\n    @GetMapping(\"/list\")\r\n    public TableDataInfo list(SysRole role) {\r\n        startPage();\r\n        List<SysRole> list = roleService.selectRoleList(role);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.EXPORT)\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:export')\")\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, SysRole role) {\r\n        List<SysRole> list = roleService.selectRoleList(role);\r\n        ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);\r\n        util.exportExcel(response, list, \"瑙掕壊鏁版嵁\");\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁瑙掕壊缂栧彿鑾峰彇璇︾粏淇℃伅\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:query')\")\r\n    @GetMapping(value = \"/{roleId}\")\r\n    public AjaxResult getInfo(@PathVariable Long roleId) {\r\n        roleService.checkRoleDataScope(roleId);\r\n        return success(roleService.selectRoleById(roleId));\r\n    }\r\n\r\n    /**\r\n     * 鏂板瑙掕壊\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:add')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@Validated @RequestBody SysRole role) {\r\n        role.setOrgid(getLoginUser().getUser().getOrgid());\r\n        if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) {\r\n            return error(\"鏂板瑙掕壊'\" + role.getRoleName() + \"'澶辫触锛岃鑹插悕绉板凡瀛樺湪\");\r\n        } else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) {\r\n            return error(\"鏂板瑙掕壊'\" + role.getRoleName() + \"'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪\");\r\n        }\r\n        role.setCreateBy(getUsername());\r\n        return toAjax(roleService.insertRole(role));\r\n\r\n    }\r\n\r\n    /**\r\n     * 淇敼淇濆瓨瑙掕壊\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/edit\")\r\n    public AjaxResult edit(@Validated @RequestBody SysRole role) {\r\n        role.setOrgid(getLoginUser().getUser().getOrgid());\r\n        roleService.checkRoleAllowed(role);\r\n        roleService.checkRoleDataScope(role.getRoleId());\r\n        if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) {\r\n            return error(\"淇敼瑙掕壊'\" + role.getRoleName() + \"'澶辫触锛岃鑹插悕绉板凡瀛樺湪\");\r\n        } else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) {\r\n            return error(\"淇敼瑙掕壊'\" + role.getRoleName() + \"'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪\");\r\n        }\r\n        role.setUpdateBy(getUsername());\r\n\r\n        if (roleService.updateRole(role) > 0) {\r\n            // 鏇存柊缂撳瓨鐢ㄦ埛鏉冮檺\r\n            LoginUser loginUser = getLoginUser();\r\n            if (StringUtils.isNotNull(loginUser.getUser()) && !isAdmin.contains(loginUser.getUser().getUserId())) {\r\n                loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));\r\n                loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));\r\n                tokenService.setLoginUser(loginUser);\r\n            }\r\n            return success();\r\n        }\r\n        return error(\"淇敼瑙掕壊'\" + role.getRoleName() + \"'澶辫触锛岃鑱旂郴绠$悊鍛榎");\r\n    }\r\n\r\n    /**\r\n     * 淇敼淇濆瓨鏁版嵁鏉冮檺\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/dataScope\")\r\n    public AjaxResult dataScope(@RequestBody SysRole role) {\r\n        roleService.checkRoleAllowed(role);\r\n        roleService.checkRoleDataScope(role.getRoleId());\r\n        return toAjax(roleService.authDataScope(role));\r\n    }\r\n\r\n    /**\r\n     * 鐘舵�佷慨鏀筡r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/changeStatus\")\r\n    public AjaxResult changeStatus(@RequestBody SysRole role) {\r\n        roleService.checkRoleAllowed(role);\r\n        roleService.checkRoleDataScope(role.getRoleId());\r\n        role.setUpdateBy(getUsername());\r\n        return toAjax(roleService.updateRoleStatus(role));\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎瑙掕壊\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:remove')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.DELETE)\r\n    @GetMapping(\"/remove/{roleIds}\")\r\n    public AjaxResult remove(@PathVariable Long[] roleIds) {\r\n        return toAjax(roleService.deleteRoleByIds(roleIds));\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛╘r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:query')\")\r\n    @GetMapping(\"/optionselect\")\r\n    public AjaxResult optionselect() {\r\n        return success(roleService.selectRoleAll());\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛╘r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:list')\")\r\n    @GetMapping(\"/authUser/allocatedList\")\r\n    public TableDataInfo allocatedList(SysUser user) {\r\n        startPage();\r\n        List<SysUser> list = userService.selectAllocatedList(user);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛╘r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:list')\")\r\n    @GetMapping(\"/authUser/unallocatedList\")\r\n    public TableDataInfo unallocatedList(SysUser user) {\r\n        startPage();\r\n        List<SysUser> list = userService.selectUnallocatedList(user);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    /**\r\n     * 鍙栨秷鎺堟潈鐢ㄦ埛\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.GRANT)\r\n    @PostMapping(\"/authUser/cancel\")\r\n    public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) {\r\n        return toAjax(roleService.deleteAuthUser(userRole));\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.GRANT)\r\n    @PostMapping(\"/authUser/cancelAll\")\r\n    public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) {\r\n        return toAjax(roleService.deleteAuthUsers(roleId, userIds));\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺閫夋嫨鐢ㄦ埛鎺堟潈\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.GRANT)\r\n    @PostMapping(\"/authUser/selectAll\")\r\n    public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) {\r\n        roleService.checkRoleDataScope(roleId);\r\n        return toAjax(roleService.insertAuthUsers(roleId, userIds));\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇瀵瑰簲瑙掕壊閮ㄩ棬鏍戝垪琛╘r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:query')\")\r\n    @GetMapping(value = \"/deptTree/{roleId}\")\r\n    public AjaxResult deptTree(@PathVariable(\"roleId\") Long roleId) {\r\n        AjaxResult ajax = AjaxResult.success();\r\n        ajax.put(\"checkedKeys\", deptService.selectDeptListByRoleId(roleId));\r\n        ajax.put(\"depts\", deptService.selectDeptTreeList(new SysDept()));\r\n        return ajax;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java	(date 1758682819377)
-@@ -4,6 +4,7 @@
- import javax.servlet.http.HttpServletResponse;
- 
- import com.ruoyi.common.core.domain.entity.SysUserRole;
-+import com.ruoyi.common.utils.SecurityUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.validation.annotation.Validated;
-@@ -53,7 +54,7 @@
- 
-     @Autowired
-     private ISysDeptService deptService;
--    
-+
-     @Value("${isAdmin}")
-     private List<Long> isAdmin;
- 
-@@ -61,6 +62,8 @@
-     @GetMapping("/list")
-     public TableDataInfo list(SysRole role) {
-         startPage();
-+        SysUser user = SecurityUtils.getLoginUser().getUser();
-+        role.setOrgid(user.getOrgid());
-         List<SysRole> list = roleService.selectRoleList(role);
-         return getDataTable(list);
-     }
-Index: ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.ruoyi.system.mapper.SysRoleMapper\">\r\n\r\n\t<resultMap type=\"SysRole\" id=\"SysRoleResult\">\r\n\t\t<id     property=\"roleId\"             column=\"role_id\"               />\r\n\t\t<result property=\"roleName\"           column=\"role_name\"             />\r\n\t\t<result property=\"roleKey\"            column=\"role_key\"              />\r\n\t\t<result property=\"roleSort\"           column=\"role_sort\"             />\r\n\t\t<result property=\"dataScope\"          column=\"data_scope\"            />\r\n\t\t<result property=\"menuCheckStrictly\"  column=\"menu_check_strictly\"   />\r\n\t\t<result property=\"deptCheckStrictly\"  column=\"dept_check_strictly\"   />\r\n\t\t<result property=\"status\"             column=\"status\"                />\r\n\t\t<result property=\"delFlag\"            column=\"del_flag\"              />\r\n\t\t<result property=\"createBy\"           column=\"create_by\"             />\r\n\t\t<result property=\"createTime\"         column=\"create_time\"           />\r\n\t\t<result property=\"updateBy\"           column=\"update_by\"             />\r\n\t\t<result property=\"updateTime\"         column=\"update_time\"           />\r\n\t\t<result property=\"remark\"             column=\"remark\"                />\r\n\t\t<result property=\"guid\"             column=\"guid\"                />\r\n\t\t<result property=\"orgid\"             column=\"orgid\"                />\r\n\t</resultMap>\r\n\r\n\t<sql id=\"selectRoleVo\">\r\n\t    select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,\r\n            r.status, r.del_flag, r.create_time, r.remark , r.guid, r.orgid\r\n        from sys_role r\r\n\t        left join sys_user_role ur on ur.role_id = r.role_id\r\n\t        left join sys_user u on u.user_id = ur.user_id\r\n\t        left join sys_dept d on u.dept_id = d.dept_id\r\n    </sql>\r\n\r\n    <select id=\"selectRoleList\" parameterType=\"SysRole\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\twhere r.del_flag = '0'\r\n\t\t<if test=\"roleId != null and roleId != 0\">\r\n\t\t\tAND r.role_id = #{roleId}\r\n\t\t</if>\r\n\t\t<if test=\"roleName != null and roleName != ''\">\r\n\t\t\tAND r.role_name like concat('%', #{roleName}, '%')\r\n\t\t</if>\r\n\t\t<if test=\"status != null and status != ''\">\r\n\t\t\tAND r.status = #{status}\r\n\t\t</if>\r\n\t\t<if test=\"roleKey != null and roleKey != ''\">\r\n\t\t\tAND r.role_key like concat('%', #{roleKey}, '%')\r\n\t\t</if>\r\n\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 寮�濮嬫椂闂存绱� -->\r\n\t\t\tand date_format(r.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')\r\n\t\t</if>\r\n\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 缁撴潫鏃堕棿妫�绱� -->\r\n\t\t\tand date_format(r.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')\r\n\t\t</if>\r\n\t\t<!-- 鏁版嵁鑼冨洿杩囨护 -->\r\n\t\t${params.dataScope}\r\n\t\torder by r.role_sort\r\n\t</select>\r\n\r\n\t<select id=\"selectRolePermissionByUserId\" parameterType=\"Long\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\tWHERE r.del_flag = '0' and ur.user_id = #{userId}\r\n\t</select>\r\n\r\n\t<select id=\"selectRoleAll\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t</select>\r\n\r\n\t<select id=\"selectRoleListByUserId\" parameterType=\"Long\" resultType=\"Long\">\r\n\t\tselect r.role_id\r\n        from sys_role r\r\n\t        left join sys_user_role ur on ur.role_id = r.role_id\r\n\t        left join sys_user u on u.user_id = ur.user_id\r\n\t    where u.user_id = #{userId}\r\n\t</select>\r\n\r\n\t<select id=\"selectRoleById\" parameterType=\"Long\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\twhere r.role_id = #{roleId}\r\n\t</select>\r\n\r\n\t<select id=\"selectRolesByUserName\" parameterType=\"String\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\tWHERE r.del_flag = '0' and u.user_name = #{userName}\r\n\t</select>\r\n\r\n\t<select id=\"checkRoleNameUnique\" parameterType=\"String\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\t where r.role_name=#{roleName} and r.del_flag = '0' limit 1\r\n\t</select>\r\n\r\n\t<select id=\"checkRoleKeyUnique\" parameterType=\"String\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\t where r.role_key=#{roleKey} and r.del_flag = '0' limit 1\r\n\t</select>\r\n\r\n \t<insert id=\"insertRole\" parameterType=\"SysRole\" useGeneratedKeys=\"true\" keyProperty=\"roleId\">\r\n \t\tinsert into sys_role(\r\n \t\t\t<if test=\"roleId != null and roleId != 0\">role_id,</if>\r\n \t\t\t<if test=\"roleName != null and roleName != ''\">role_name,</if>\r\n \t\t\t<if test=\"roleKey != null and roleKey != ''\">role_key,</if>\r\n \t\t\t<if test=\"roleSort != null\">role_sort,</if>\r\n \t\t\t<if test=\"dataScope != null and dataScope != ''\">data_scope,</if>\r\n \t\t\t<if test=\"menuCheckStrictly != null\">menu_check_strictly,</if>\r\n \t\t\t<if test=\"deptCheckStrictly != null\">dept_check_strictly,</if>\r\n \t\t\t<if test=\"status != null and status != ''\">status,</if>\r\n \t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\r\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\r\n \t\t\t<if test=\"guid != null and guid != ''\">guid,</if>\r\n \t\t\t<if test=\"orgid != null and orgid != ''\">orgid,</if>\r\n \t\t\tcreate_time\r\n \t\t)values(\r\n \t\t\t<if test=\"roleId != null and roleId != 0\">#{roleId},</if>\r\n \t\t\t<if test=\"roleName != null and roleName != ''\">#{roleName},</if>\r\n \t\t\t<if test=\"roleKey != null and roleKey != ''\">#{roleKey},</if>\r\n \t\t\t<if test=\"roleSort != null\">#{roleSort},</if>\r\n \t\t\t<if test=\"dataScope != null and dataScope != ''\">#{dataScope},</if>\r\n \t\t\t<if test=\"menuCheckStrictly != null\">#{menuCheckStrictly},</if>\r\n \t\t\t<if test=\"deptCheckStrictly != null\">#{deptCheckStrictly},</if>\r\n \t\t\t<if test=\"status != null and status != ''\">#{status},</if>\r\n \t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\r\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\r\n \t\t\t<if test=\"guid != null and guid != ''\">#{guid},</if>\r\n \t\t\t<if test=\"orgid != null and orgid != ''\">#{orgid},</if>\r\n \t\t\tsysdate()\r\n \t\t)\r\n\t</insert>\r\n\r\n\t<update id=\"updateRole\" parameterType=\"SysRole\">\r\n \t\tupdate sys_role\r\n \t\t<set>\r\n \t\t\t<if test=\"roleName != null and roleName != ''\">role_name = #{roleName},</if>\r\n \t\t\t<if test=\"roleKey != null and roleKey != ''\">role_key = #{roleKey},</if>\r\n \t\t\t<if test=\"roleSort != null\">role_sort = #{roleSort},</if>\r\n \t\t\t<if test=\"dataScope != null and dataScope != ''\">data_scope = #{dataScope},</if>\r\n \t\t\t<if test=\"menuCheckStrictly != null\">menu_check_strictly = #{menuCheckStrictly},</if>\r\n \t\t\t<if test=\"deptCheckStrictly != null\">dept_check_strictly = #{deptCheckStrictly},</if>\r\n \t\t\t<if test=\"status != null and status != ''\">status = #{status},</if>\r\n \t\t\t<if test=\"remark != null\">remark = #{remark},</if>\r\n \t\t\t<if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\r\n \t\t\t<if test=\"guid != null and guid != ''\">guid = #{guid},</if>\r\n \t\t\t<if test=\"orgid != null and orgid != ''\">orgid = #{orgid},</if>\r\n \t\t\tupdate_time = sysdate()\r\n \t\t</set>\r\n \t\twhere role_id = #{roleId}\r\n\t</update>\r\n\r\n\t<delete id=\"deleteRoleById\" parameterType=\"Long\">\r\n \t\tupdate sys_role set del_flag = '2' where role_id = #{roleId}\r\n \t</delete>\r\n\r\n \t<delete id=\"deleteRoleByIds\" parameterType=\"Long\">\r\n \t    update sys_role set del_flag = '2' where role_id in\r\n \t\t<foreach collection=\"array\" item=\"roleId\" open=\"(\" separator=\",\" close=\")\">\r\n \t\t\t#{roleId}\r\n        </foreach>\r\n \t</delete>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
---- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml	(date 1758682819279)
-@@ -1,160 +1,176 @@
- <?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.ruoyi.system.mapper.SysRoleMapper">
- 
--	<resultMap type="SysRole" id="SysRoleResult">
--		<id     property="roleId"             column="role_id"               />
--		<result property="roleName"           column="role_name"             />
--		<result property="roleKey"            column="role_key"              />
--		<result property="roleSort"           column="role_sort"             />
--		<result property="dataScope"          column="data_scope"            />
--		<result property="menuCheckStrictly"  column="menu_check_strictly"   />
--		<result property="deptCheckStrictly"  column="dept_check_strictly"   />
--		<result property="status"             column="status"                />
--		<result property="delFlag"            column="del_flag"              />
--		<result property="createBy"           column="create_by"             />
--		<result property="createTime"         column="create_time"           />
--		<result property="updateBy"           column="update_by"             />
--		<result property="updateTime"         column="update_time"           />
--		<result property="remark"             column="remark"                />
--		<result property="guid"             column="guid"                />
--		<result property="orgid"             column="orgid"                />
--	</resultMap>
-+    <resultMap type="SysRole" id="SysRoleResult">
-+        <id property="roleId" column="role_id"/>
-+        <result property="roleName" column="role_name"/>
-+        <result property="roleKey" column="role_key"/>
-+        <result property="roleSort" column="role_sort"/>
-+        <result property="dataScope" column="data_scope"/>
-+        <result property="menuCheckStrictly" column="menu_check_strictly"/>
-+        <result property="deptCheckStrictly" column="dept_check_strictly"/>
-+        <result property="status" column="status"/>
-+        <result property="delFlag" column="del_flag"/>
-+        <result property="createBy" column="create_by"/>
-+        <result property="createTime" column="create_time"/>
-+        <result property="updateBy" column="update_by"/>
-+        <result property="updateTime" column="update_time"/>
-+        <result property="remark" column="remark"/>
-+        <result property="guid" column="guid"/>
-+        <result property="orgid" column="orgid"/>
-+    </resultMap>
- 
--	<sql id="selectRoleVo">
--	    select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,
--            r.status, r.del_flag, r.create_time, r.remark , r.guid, r.orgid
-+    <sql id="selectRoleVo">
-+        select distinct r.role_id,
-+                        r.role_name,
-+                        r.role_key,
-+                        r.role_sort,
-+                        r.data_scope,
-+                        r.menu_check_strictly,
-+                        r.dept_check_strictly,
-+                        r.status,
-+                        r.del_flag,
-+                        r.create_time,
-+                        r.remark,
-+                        r.guid,
-+                        r.orgid
-         from sys_role r
--	        left join sys_user_role ur on ur.role_id = r.role_id
--	        left join sys_user u on u.user_id = ur.user_id
--	        left join sys_dept d on u.dept_id = d.dept_id
-+                 left join sys_user_role ur on ur.role_id = r.role_id
-+                 left join sys_user u on u.user_id = ur.user_id
-+                 left join sys_dept d on u.dept_id = d.dept_id
-     </sql>
- 
-     <select id="selectRoleList" parameterType="SysRole" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		where r.del_flag = '0'
--		<if test="roleId != null and roleId != 0">
--			AND r.role_id = #{roleId}
--		</if>
--		<if test="roleName != null and roleName != ''">
--			AND r.role_name like concat('%', #{roleName}, '%')
--		</if>
--		<if test="status != null and status != ''">
--			AND r.status = #{status}
--		</if>
--		<if test="roleKey != null and roleKey != ''">
--			AND r.role_key like concat('%', #{roleKey}, '%')
--		</if>
--		<if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
--			and date_format(r.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
--		</if>
--		<if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
--			and date_format(r.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
--		</if>
--		<!-- 鏁版嵁鑼冨洿杩囨护 -->
--		${params.dataScope}
--		order by r.role_sort
--	</select>
-+        <include refid="selectRoleVo"/>
-+        where r.del_flag = '0'
-+        <if test="roleId != null and roleId != 0">
-+            AND r.role_id = #{roleId}
-+        </if>
-+        <if test="roleName != null and roleName != ''">
-+            AND r.role_name like concat('%', #{roleName}, '%')
-+        </if>
-+        <if test="status != null and status != ''">
-+            AND r.status = #{status}
-+        </if>
-+        <if test="orgid != null and orgid != ''">
-+            AND r.orgid = #{orgid}
-+        </if>
-+        <if test="roleKey != null and roleKey != ''">
-+            AND r.role_key like concat('%', #{roleKey}, '%')
-+        </if>
-+        <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
-+            and date_format(r.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
-+        </if>
-+        <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
-+            and date_format(r.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
-+        </if>
-+        <!-- 鏁版嵁鑼冨洿杩囨护 -->
-+        ${params.dataScope}
-+        order by r.role_sort
-+    </select>
- 
--	<select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		WHERE r.del_flag = '0' and ur.user_id = #{userId}
--	</select>
-+    <select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+        WHERE r.del_flag = '0' and ur.user_id = #{userId}
-+    </select>
- 
--	<select id="selectRoleAll" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--	</select>
-+    <select id="selectRoleAll" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+    </select>
- 
--	<select id="selectRoleListByUserId" parameterType="Long" resultType="Long">
--		select r.role_id
-+    <select id="selectRoleListByUserId" parameterType="Long" resultType="Long">
-+        select r.role_id
-         from sys_role r
--	        left join sys_user_role ur on ur.role_id = r.role_id
--	        left join sys_user u on u.user_id = ur.user_id
--	    where u.user_id = #{userId}
--	</select>
-+                 left join sys_user_role ur on ur.role_id = r.role_id
-+                 left join sys_user u on u.user_id = ur.user_id
-+        where u.user_id = #{userId}
-+    </select>
- 
--	<select id="selectRoleById" parameterType="Long" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		where r.role_id = #{roleId}
--	</select>
-+    <select id="selectRoleById" parameterType="Long" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+        where r.role_id = #{roleId}
-+    </select>
- 
--	<select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		WHERE r.del_flag = '0' and u.user_name = #{userName}
--	</select>
-+    <select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+        WHERE r.del_flag = '0' and u.user_name = #{userName}
-+    </select>
- 
--	<select id="checkRoleNameUnique" parameterType="String" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		 where r.role_name=#{roleName} and r.del_flag = '0' limit 1
--	</select>
-+    <select id="checkRoleNameUnique" parameterType="String" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+        where r.role_name=#{roleName} and r.del_flag = '0' limit 1
-+    </select>
- 
--	<select id="checkRoleKeyUnique" parameterType="String" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		 where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
--	</select>
-+    <select id="checkRoleKeyUnique" parameterType="String" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+        where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
-+    </select>
- 
-- 	<insert id="insertRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId">
-- 		insert into sys_role(
-- 			<if test="roleId != null and roleId != 0">role_id,</if>
-- 			<if test="roleName != null and roleName != ''">role_name,</if>
-- 			<if test="roleKey != null and roleKey != ''">role_key,</if>
-- 			<if test="roleSort != null">role_sort,</if>
-- 			<if test="dataScope != null and dataScope != ''">data_scope,</if>
-- 			<if test="menuCheckStrictly != null">menu_check_strictly,</if>
-- 			<if test="deptCheckStrictly != null">dept_check_strictly,</if>
-- 			<if test="status != null and status != ''">status,</if>
-- 			<if test="remark != null and remark != ''">remark,</if>
-- 			<if test="createBy != null and createBy != ''">create_by,</if>
-- 			<if test="guid != null and guid != ''">guid,</if>
-- 			<if test="orgid != null and orgid != ''">orgid,</if>
-- 			create_time
-- 		)values(
-- 			<if test="roleId != null and roleId != 0">#{roleId},</if>
-- 			<if test="roleName != null and roleName != ''">#{roleName},</if>
-- 			<if test="roleKey != null and roleKey != ''">#{roleKey},</if>
-- 			<if test="roleSort != null">#{roleSort},</if>
-- 			<if test="dataScope != null and dataScope != ''">#{dataScope},</if>
-- 			<if test="menuCheckStrictly != null">#{menuCheckStrictly},</if>
-- 			<if test="deptCheckStrictly != null">#{deptCheckStrictly},</if>
-- 			<if test="status != null and status != ''">#{status},</if>
-- 			<if test="remark != null and remark != ''">#{remark},</if>
-- 			<if test="createBy != null and createBy != ''">#{createBy},</if>
-- 			<if test="guid != null and guid != ''">#{guid},</if>
-- 			<if test="orgid != null and orgid != ''">#{orgid},</if>
-- 			sysdate()
-- 		)
--	</insert>
-+    <insert id="insertRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId">
-+        insert into sys_role(
-+        <if test="roleId != null and roleId != 0">role_id,</if>
-+        <if test="roleName != null and roleName != ''">role_name,</if>
-+        <if test="roleKey != null and roleKey != ''">role_key,</if>
-+        <if test="roleSort != null">role_sort,</if>
-+        <if test="dataScope != null and dataScope != ''">data_scope,</if>
-+        <if test="menuCheckStrictly != null">menu_check_strictly,</if>
-+        <if test="deptCheckStrictly != null">dept_check_strictly,</if>
-+        <if test="status != null and status != ''">status,</if>
-+        <if test="remark != null and remark != ''">remark,</if>
-+        <if test="createBy != null and createBy != ''">create_by,</if>
-+        <if test="guid != null and guid != ''">guid,</if>
-+        <if test="orgid != null and orgid != ''">orgid,</if>
-+        create_time
-+        )values(
-+        <if test="roleId != null and roleId != 0">#{roleId},</if>
-+        <if test="roleName != null and roleName != ''">#{roleName},</if>
-+        <if test="roleKey != null and roleKey != ''">#{roleKey},</if>
-+        <if test="roleSort != null">#{roleSort},</if>
-+        <if test="dataScope != null and dataScope != ''">#{dataScope},</if>
-+        <if test="menuCheckStrictly != null">#{menuCheckStrictly},</if>
-+        <if test="deptCheckStrictly != null">#{deptCheckStrictly},</if>
-+        <if test="status != null and status != ''">#{status},</if>
-+        <if test="remark != null and remark != ''">#{remark},</if>
-+        <if test="createBy != null and createBy != ''">#{createBy},</if>
-+        <if test="guid != null and guid != ''">#{guid},</if>
-+        <if test="orgid != null and orgid != ''">#{orgid},</if>
-+        sysdate()
-+        )
-+    </insert>
- 
--	<update id="updateRole" parameterType="SysRole">
-- 		update sys_role
-- 		<set>
-- 			<if test="roleName != null and roleName != ''">role_name = #{roleName},</if>
-- 			<if test="roleKey != null and roleKey != ''">role_key = #{roleKey},</if>
-- 			<if test="roleSort != null">role_sort = #{roleSort},</if>
-- 			<if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if>
-- 			<if test="menuCheckStrictly != null">menu_check_strictly = #{menuCheckStrictly},</if>
-- 			<if test="deptCheckStrictly != null">dept_check_strictly = #{deptCheckStrictly},</if>
-- 			<if test="status != null and status != ''">status = #{status},</if>
-- 			<if test="remark != null">remark = #{remark},</if>
-- 			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
-- 			<if test="guid != null and guid != ''">guid = #{guid},</if>
-- 			<if test="orgid != null and orgid != ''">orgid = #{orgid},</if>
-- 			update_time = sysdate()
-- 		</set>
-- 		where role_id = #{roleId}
--	</update>
-+    <update id="updateRole" parameterType="SysRole">
-+        update sys_role
-+        <set>
-+            <if test="roleName != null and roleName != ''">role_name = #{roleName},</if>
-+            <if test="roleKey != null and roleKey != ''">role_key = #{roleKey},</if>
-+            <if test="roleSort != null">role_sort = #{roleSort},</if>
-+            <if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if>
-+            <if test="menuCheckStrictly != null">menu_check_strictly = #{menuCheckStrictly},</if>
-+            <if test="deptCheckStrictly != null">dept_check_strictly = #{deptCheckStrictly},</if>
-+            <if test="status != null and status != ''">status = #{status},</if>
-+            <if test="remark != null">remark = #{remark},</if>
-+            <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
-+            <if test="guid != null and guid != ''">guid = #{guid},</if>
-+            <if test="orgid != null and orgid != ''">orgid = #{orgid},</if>
-+            update_time = sysdate()
-+        </set>
-+        where role_id = #{roleId}
-+    </update>
- 
--	<delete id="deleteRoleById" parameterType="Long">
-- 		update sys_role set del_flag = '2' where role_id = #{roleId}
-- 	</delete>
-+    <delete id="deleteRoleById" parameterType="Long">
-+        update sys_role
-+        set del_flag = '1'
-+        where role_id = #{roleId}
-+    </delete>
- 
-- 	<delete id="deleteRoleByIds" parameterType="Long">
-- 	    update sys_role set del_flag = '2' where role_id in
-- 		<foreach collection="array" item="roleId" open="(" separator="," close=")">
-- 			#{roleId}
-+    <delete id="deleteRoleByIds" parameterType="Long">
-+        update sys_role set del_flag = '1' where role_id in
-+        <foreach collection="array" item="roleId" open="(" separator="," close=")">
-+            #{roleId}
-         </foreach>
-- 	</delete>
-+    </delete>
- 
- </mapper>
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport com.github.pagehelper.ISelect;\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.PageUtils;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.service.IServiceSubtaskService;\r\nimport com.smartor.service.IServiceTaskService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.web.bind.annotation.*;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.util.List;\r\nimport java.util.stream.Collectors;\r\n\r\n/**\r\n * 闅忚浠诲姟Controller\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@Slf4j\r\n@Api(description = \"闅忚浠诲姟\")\r\n@RestController\r\n@RequestMapping(\"/smartor/servicetask\")\r\npublic class ServiceTaskController extends BaseController {\r\n    @Autowired\r\n    private IServiceTaskService serviceTaskService;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskService iServiceTaskCallService;\r\n\r\n    @Value(\"${pub_key}\")\r\n    private String pub_key;\r\n\r\n    @Value(\"${pri_key}\")\r\n    private String pri_key;\r\n\r\n    @Autowired\r\n    private RSAPublicKeyExample rsaPublicKeyExample;\r\n\r\n    /**\r\n     * 鏌ヨ璇煶浠诲姟鍒楄〃\r\n     */\r\n    @ApiOperation(\"鏌ヨ浠诲姟鍒楄〃\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:list')\")\r\n    @PostMapping(\"/list\")\r\n    public TableDataInfo list(@RequestBody ServiceTask serviceTask) {\r\n        PageUtils.startPageByPost(serviceTask.getPageNum(), serviceTask.getPageSize());\r\n//        List<ServiceTask> list = serviceTaskService.selectServiceTaskList(serviceTask);\r\n        List<ServiceTask> list = serviceTaskService.selectServiceTaskAndtaskDeptList(serviceTask);\r\n        List<ServiceTaskVO> serviceTaskVOS = DtoConversionUtils.sourceToTarget(list, ServiceTaskVO.class);\r\n\r\n        if (CollectionUtils.isNotEmpty(serviceTaskVOS)) {\r\n            for (ServiceTaskVO ServiceTaskVO : serviceTaskVOS) {\r\n                ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n                serviceSubtaskVO.setTaskid(ServiceTaskVO.getTaskid());\r\n                serviceSubtaskVO.setStartOutHospTime(serviceTask.getStartOutHospTime());\r\n                serviceSubtaskVO.setEndOutHospTime(serviceTask.getEndOutHospTime());\r\n                List<ServiceSubtask> ServiceTaskcalls = iServiceTaskCallService.selectServiceSubtaskList(serviceSubtaskVO);\r\n                if (CollectionUtils.isNotEmpty(ServiceTaskcalls)) {\r\n                    //宸插彂閫侊紙瀛愪换鍔′腑鐨� sendstate=1涓鸿棰嗗彇锛塡r\n                    long yfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> (serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() >= 3L) || (serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 1L)).collect(Collectors.toList()).stream().count();\r\n                    //鏈彂閫乗r\n                    long wfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 2L).collect(Collectors.toList()).stream().count();\r\n                    ServiceTaskVO.setYfs(yfs);\r\n                    ServiceTaskVO.setWfs(wfs);\r\n                }\r\n\r\n            }\r\n            //鑾峰彇total\r\n            long total = PageUtils.count(new ISelect() {\r\n                @Override\r\n                public void doSelect() {\r\n                    serviceTask.setPageNum(null);\r\n                    serviceTask.setPageSize(null);\r\n                    serviceTaskService.selectServiceTaskAndtaskDeptList(serviceTask);\r\n                }\r\n            });\r\n\r\n            return getDataTable2(total, serviceTaskVOS);\r\n        }\r\n\r\n        return getDataTable2(0, serviceTaskVOS);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎嚭浠诲姟鍒楄〃\r\n     */\r\n    @ApiOperation(\"瀵煎嚭浠诲姟鍒楄〃\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:export')\")\r\n    @Log(title = \"璇煶浠诲姟\", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, ServiceTask ServiceTask) {\r\n        List<ServiceTask> list = serviceTaskService.selectServiceTaskList(ServiceTask);\r\n        ExcelUtil<ServiceTask> util = new ExcelUtil<ServiceTask>(ServiceTask.class);\r\n        util.exportExcel(response, list, \"璇煶浠诲姟鏁版嵁\");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇浠诲姟璇︾粏淇℃伅\r\n     */\r\n    @ApiOperation(\"鑾峰彇浠诲姟璇︾粏淇℃伅\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:query')\")\r\n    @GetMapping(value = \"/{taskid}\")\r\n    public AjaxResult getInfo(@PathVariable(\"taskid\") Long taskid) {\r\n        return success(serviceTaskService.selectServiceTaskByTaskid(taskid));\r\n    }\r\n\r\n    /**\r\n     * 鏂板浠诲姟\r\n     */\r\n    @ApiOperation(\"鏂板浠诲姟\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:add')\")\r\n    @Log(title = \"璇煶浠诲姟\", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@RequestBody ServiceTask ServiceTask) {\r\n        SysUser user = getLoginUser().getUser();\r\n        ServiceTask.setOrgid(user.getOrgid());\r\n        return toAjax(serviceTaskService.insertServiceTask(ServiceTask));\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇闅忚鍙婃椂鐜嘰r\n     */\r\n    @ApiOperation(\"鑾峰彇闅忚鍙婃椂鐜嘰")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:add')\")\r\n    @Log(title = \"鑾峰彇闅忚鍙婃椂鐜嘰", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/selectTimelyRate\")\r\n    public AjaxResult selectTimelyRate(@RequestBody ServiceSubtask serviceSubtask) {\r\n        SysUser user = getLoginUser().getUser();\r\n        serviceSubtask.setOrgid(user.getOrgid());\r\n        return success(serviceTaskService.selectTimelyRate(serviceSubtask));\r\n    }\r\n\r\n    /**\r\n     * 淇敼璇煶浠诲姟\r\n     */\r\n    @ApiOperation(\"淇敼浠诲姟\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:edit')\")\r\n    @Log(title = \"浠诲姟\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/edit\")\r\n    public AjaxResult edit(@RequestBody ServiceTask ServiceTask) {\r\n        return toAjax(serviceTaskService.updateServiceTask(ServiceTask));\r\n    }\r\n\r\n//    /**\r\n//     * 鍒犻櫎璇煶浠诲姟\r\n//     */\r\n//    @ApiOperation(\"鍒犻櫎浠诲姟\")\r\n//    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:remove')\")\r\n//    @Log(title = \"璇煶浠诲姟\", businessType = BusinessType.DELETE)\r\n//    @GetMapping(\"/remove/{taskids}\")\r\n//    public AjaxResult remove(@PathVariable Long[] taskids) {\r\n//        return toAjax(ServiceTaskService.deleteServiceTaskByTaskids(taskids));\r\n//    }\r\n//\r\n\r\n    /**\r\n     * 鍒犻櫎浠诲姟(鍖呮嫭瀹冨搴旂殑鎮h�呬俊鎭�)\r\n     */\r\n    @ApiOperation(\"鍒犻櫎浠诲姟(鍖呮嫭瀹冨搴旂殑鎮h�呬俊鎭�)\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:remove')\")\r\n    @Log(title = \"璇煶浠诲姟\", businessType = BusinessType.DELETE)\r\n    @GetMapping(\"/remove/{taskId}\")\r\n    public AjaxResult removeTask(@PathVariable(\"taskId\") String taskId) {\r\n        if (StringUtils.isEmpty(taskId)) {\r\n            AjaxResult.error(\"鍏ュ弬涓嶈兘涓虹┖\");\r\n        }\r\n        Long tid = Long.valueOf(taskId);\r\n        return toAjax(serviceTaskService.deleteServiceTaskByTaskid(tid));\r\n    }\r\n\r\n    /**\r\n     * 閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅\r\n     *\r\n     * @return\r\n     */\r\n    @ApiOperation(\"閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅\")\r\n    @PostMapping(\"/getScriptInfoByCondition\")\r\n    public AjaxResult getScriptInfoByCondition(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) {\r\n        Long tid = null;\r\n        Long pid = null;\r\n        log.info(\"getScriptInfoByCondition鍏ュ弬涓猴細{}\", serviceTaskScriptQues);\r\n        try {\r\n            tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam1(), pri_key));\r\n            pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam2(), pri_key));\r\n        } catch (Exception e) {\r\n            log.error(\"getScriptInfoByCondition鎶ラ敊浜嗭細{}\", e.getMessage());\r\n        }\r\n\r\n        log.info(\"tid鍜宲id鐨勫�间负锛歿},{}\", tid, pid);\r\n        if (StringUtils.isEmpty(serviceTaskScriptQues.getPatfrom())) serviceTaskScriptQues.setPatfrom(\"0\");\r\n        return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom()));\r\n    }\r\n\r\n\r\n    /**\r\n     * 閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅\r\n     *\r\n     * @return\r\n     */\r\n    @ApiOperation(\"閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅(灏忕▼搴�)\")\r\n    @PostMapping(\"/getScriptInfoByConditionXCH\")\r\n    public AjaxResult getScriptInfoByConditionXCH(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) {\r\n        Long tid = null;\r\n        Long pid = null;\r\n        log.error(\"getScriptInfoByCondition鍏ュ弬涓猴細{}\", serviceTaskScriptQues);\r\n        try {\r\n            tid = Long.valueOf(serviceTaskScriptQues.getParam1());\r\n            pid = Long.valueOf(serviceTaskScriptQues.getParam2());\r\n        } catch (Exception e) {\r\n            log.error(\"getScriptInfoByCondition鎶ラ敊浜嗭細{}\", e.getMessage());\r\n        }\r\n\r\n        log.info(\"tid鍜宲id鐨勫�间负锛歿},{}\", tid, pid);\r\n        if (StringUtils.isEmpty(serviceTaskScriptQues.getPatfrom())) serviceTaskScriptQues.setPatfrom(\"0\");\r\n        return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom()));\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java	(date 1758682819369)
-@@ -25,6 +25,7 @@
- 
- import javax.servlet.http.HttpServletResponse;
- import java.util.List;
-+import java.util.Map;
- import java.util.stream.Collectors;
- 
- /**
-@@ -232,4 +233,31 @@
-         return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom()));
-     }
- 
-+
-+    /**
-+     * 閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅
-+     *
-+     * @return
-+     */
-+    @ApiOperation("閫氳繃浠诲姟ID鍜岃瘖鐤楄褰曞彿鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅")
-+    @PostMapping("/getScriptByCondition")
-+    public AjaxResult getScriptByCondition(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) {
-+        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+        Long taskId = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam1(), pri_key));
-+        String zyserialnum = null;
-+        String mzserialnum = null;
-+        String tsserialnum = null;
-+        if (StringUtils.isNotEmpty(serviceTaskScriptQues.getParam2()))
-+            zyserialnum = rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam2(), pri_key);
-+        if (StringUtils.isNotEmpty(serviceTaskScriptQues.getParam3()))
-+            mzserialnum = rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam3(), pri_key);
-+        if (StringUtils.isNotEmpty(serviceTaskScriptQues.getParam4()))
-+            tsserialnum = rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam4(), pri_key);
-+        Map<String, Object> scriptByCondition = serviceTaskService.getScriptByCondition(taskId, zyserialnum, mzserialnum, tsserialnum);
-+        scriptByCondition.put("zy", serviceTaskScriptQues.getParam2());
-+        scriptByCondition.put("mz", serviceTaskScriptQues.getParam3());
-+        scriptByCondition.put("tid", serviceTaskScriptQues.getParam1());
-+        return success(scriptByCondition);
-+    }
-+
- }
-Index: smartor/src/main/java/com/smartor/domain/ServiceSubTaskMYDAnswerReq.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubTaskMYDAnswerReq.java b/smartor/src/main/java/com/smartor/domain/ServiceSubTaskMYDAnswerReq.java
-new file mode 100644
---- /dev/null	(date 1758682819658)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubTaskMYDAnswerReq.java	(date 1758682819658)
-@@ -0,0 +1,30 @@
-+package com.smartor.domain;
-+
-+import io.swagger.annotations.ApiModel;
-+import io.swagger.annotations.ApiModelProperty;
-+import lombok.Data;
-+
-+import java.util.List;
-+
-+/**
-+ * 鐢佃瘽闂鍥炵瓟鏄庣粏
-+ *
-+ * @author ls
-+ * @date 2023-06-05
-+ */
-+@ApiModel(value = "ServiceSubTaskAnswerReq", description = "闂鍥炵瓟鏄庣粏")
-+@Data
-+public class ServiceSubTaskMYDAnswerReq {
-+
-+    @ApiModelProperty(value = "闂嵎缁撴灉")
-+    private List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS;
-+
-+    @ApiModelProperty(value = "娴佹按鍙�")
-+    private String serialnum;
-+
-+    @ApiModelProperty(value = "浠诲姟ID")
-+    private String taskId;
-+
-+    @ApiModelProperty(value = "浣忛櫌 1   闂ㄨ瘖2    鎶曡瘔3")
-+    private String mzzy;
-+}
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceExternalController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport cn.hutool.core.bean.BeanUtil;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.service.IServiceExternalService;\r\nimport com.smartor.service.IServiceSubtaskDetailService;\r\nimport com.smartor.service.ISvyTaskSingleService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.web.bind.annotation.PostMapping;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RestController;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 绗笁鏂硅皟鐢ㄦ帴鍙ontroller\r\n *\r\n * @author smartor\r\n * @date 2024-12-10\r\n */\r\n@Slf4j\r\n@Api(description = \"绗笁鏂硅皟鐢ㄦ帴鍙")\r\n@RestController\r\n@RequestMapping(\"/smartor/serviceExternal\")\r\npublic class ServiceExternalController extends BaseController {\r\n    @Autowired\r\n    private IServiceExternalService serviceExternalService;\r\n    @Autowired\r\n    private ISvyTaskSingleService svyTaskSingleService;\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n    /**\r\n     * 閫氱敤鎺ュ彛\r\n     */\r\n    @ApiOperation(\"閫氱敤鎺ュ彛\")\r\n    @PostMapping(\"/generalInterface\")\r\n    public Map<String, Object> generalInterface(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n\r\n        try {\r\n            aBoolean = serviceExternalService.generalInterface(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---generalInterface鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板浣撴浠诲姟杩涘瓙浠诲姟\r\n     */\r\n    @ApiOperation(\"鏂板浣撴浠诲姟杩涘瓙浠诲姟\")\r\n    @PostMapping(\"/generalInterfaceAddTask\")\r\n    public AjaxResult generalInterfaceAddTask(@RequestBody ServiceTaskInfo serviceTaskInfo) {\r\n        log.info(\"------serviceTaskInfo鐨勫�间负锛歿}\", serviceTaskInfo);\r\n        Integer res = 0;\r\n        try {\r\n            res = svyTaskSingleService.insertTaskInfo(serviceTaskInfo);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---generalInterfaceAddTask鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n        }\r\n        return toAjax(res);\r\n    }\r\n\r\n\r\n    /**\r\n     * 360鎮h�呬俊鎭幏鍙朶r\n     */\r\n    @ApiOperation(\"360鎮h�呬俊鎭幏鍙朶")\r\n    @PostMapping(\"/query360PatInfo\")\r\n    public Map query360PatInfo(@RequestBody ServiceQueryInfo serviceQueryInfo) {\r\n        log.info(\"------serviceQueryInfo鐨勫叆鍙備负锛歿}\", serviceQueryInfo);\r\n        Map map = null;\r\n        try {\r\n            String url = configService.selectConfigByKey(\"token.360\",serviceQueryInfo.getXiaoXiTou().getFaSongJGID());\r\n            serviceQueryInfo.setUrl(url);\r\n           String url360 = configService.selectConfigByKey(\"url.360\",serviceQueryInfo.getXiaoXiTou().getFaSongJGID());\r\n            serviceQueryInfo.setUrl360(url360);\r\n            map = svyTaskSingleService.query360PatInfo(serviceQueryInfo);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"query360PatInfo---query360PatInfo锛歿}\", e.getMessage());\r\n        }\r\n        return map;\r\n    }\r\n\r\n    /**\r\n     * 鍖诲槺鐭ヨ瘑鎻愮ず\r\n     */\r\n    @ApiOperation(\"鍖诲槺鐭ヨ瘑鎻愮ず\")\r\n    @PostMapping(\"/focus\")\r\n    public Map focus(@RequestBody ServiceQueryFocus serviceQueryFocus) {\r\n        Map map = null;\r\n        try {\r\n            map = svyTaskSingleService.focus(serviceQueryFocus);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"query360PatInfo---query360PatInfo锛歿}\", e.getMessage());\r\n        }\r\n        return map;\r\n    }\r\n\r\n\r\n    /**\r\n     * 鏂板绉戝淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板绉戝淇℃伅\")\r\n    @PostMapping(\"/addDeptInfo\")\r\n    public Map<String, Object> addDeptInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addDeptInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addDeptInfo鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板绉戝淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鐢ㄦ埛淇℃伅\")\r\n    @PostMapping(\"/addUserInfo\")\r\n    public Map<String, Object> addUserInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addUserInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addUserInfo鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n\r\n    }\r\n\r\n\r\n    /**\r\n     * 鏂板鏈烘瀯淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鏈烘瀯淇℃伅\")\r\n    @PostMapping(\"/addOrganInfo\")\r\n    public Map<String, Object> addOrganInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addOrganInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addOrganInfo鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鍏ラ櫌淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鍏ラ櫌淇℃伅\")\r\n    @PostMapping(\"/addInHospInfo\")\r\n    public Map<String, Object> addInHospInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addInHospInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addInHospInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鍙栨秷鍏ラ櫌鐧昏淇℃伅\r\n     */\r\n    @ApiOperation(\"鍙栨秷鍏ラ櫌鐧昏淇℃伅\")\r\n    @PostMapping(\"/cancelInHospInfo\")\r\n    public Map<String, Object> cancelInHospInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.cancelInHospInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---cancelInHospInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鍑洪櫌鐧昏淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鍑洪櫌鐧昏淇℃伅\")\r\n    @PostMapping(\"/addOutHospInfo\")\r\n    public Map<String, Object> addOutHospInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addOutHospInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addOutHospInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     *\r\n     */\r\n    @ApiOperation(\"鏂板鍑洪櫌璁板綍鐧昏淇℃伅\")\r\n    @PostMapping(\"/addOutHospJLInfo\")\r\n    public Map<String, Object> addOutHospJLInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addOutHospJLInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addOutHospJLInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鍙栨秷鍑洪櫌鐧昏淇℃伅\r\n     */\r\n    @ApiOperation(\"鍙栨秷鍑洪櫌鐧昏淇℃伅\")\r\n    @PostMapping(\"/cancelOutHospInfo\")\r\n    public Map<String, Object> cancelOutHospInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.cancelOutHospInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---cancelOutHospInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鍑洪櫌鐧昏淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板棰勫嚭闄㈢櫥璁颁俊鎭痋")\r\n    @PostMapping(\"/addPreOutHospInfo\")\r\n    public Map<String, Object> addPreOutHospInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addPreOutHospInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addPreOutHospInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板瀹屾垚鎺ヨ瘖淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板瀹屾垚鎺ヨ瘖淇℃伅\")\r\n    @PostMapping(\"/addFinshJZInfo\")\r\n    public Map<String, Object> addFinshJZInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addFinshJZInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addFinshJZInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板瀹屾垚鎺ヨ瘖淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鐤剧梾淇℃伅\")\r\n    @PostMapping(\"/addDiseaseInfo\")\r\n    public Map<String, Object> addDiseaseInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addDiseaseInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addDiseaseInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐥呭尯淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鐥呭尯淇℃伅\")\r\n    @PostMapping(\"/addWardAreaInfo\")\r\n    public Map<String, Object> addWardAreaInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addWardAreaInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addWardAreaInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n\r\n    /**\r\n     * 妫�鏌ョ敵璇锋湇鍔�/妫�鏌ヤ慨鏀规湇鍔r\n     */\r\n    @ApiOperation(\"妫�鏌ョ敵璇锋湇鍔")\r\n    @PostMapping(\"/addInspectService\")\r\n    public Map<String, Object> addInspectService(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addInspectService(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addInspectService锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 妫�鏌ユ姤鍛婃湇鍔r\n     */\r\n    @ApiOperation(\"妫�鏌ユ姤鍛婃湇鍔")\r\n    @PostMapping(\"/addInspectBGService\")\r\n    public Map<String, Object> addInspectBGService(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addInspectBGService(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addInspectBGService锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n\r\n\r\n    private Map<String, Object> returnParam(Boolean b, Map dataMap) {\r\n        Map yeWuXX = (Map) dataMap.get(\"YeWuXX\");\r\n        String XiaoXiID = (String) yeWuXX.get(\"XiaoXiID\");\r\n\r\n        Map<String, Object> map = new HashMap<>();\r\n        if (b) {\r\n            map.put(\"Code\", \"0\");\r\n            map.put(\"Message\", \"success\");\r\n        } else {\r\n            map.put(\"Code\", \"500\");\r\n            map.put(\"Message\", \"error\");\r\n        }\r\n\r\n        Map<String, Object> map2 = new HashMap<>();\r\n        map2.put(\"XiaoXiID\", XiaoXiID);\r\n        map2.put(\"ChuangJianSJ\", new Date());\r\n        map.put(\"Data\", map2);\r\n        return map;\r\n    }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceExternalController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceExternalController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceExternalController.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceExternalController.java	(date 1758682819363)
-@@ -5,7 +5,6 @@
- import com.ruoyi.common.core.controller.BaseController;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.common.utils.DtoConversionUtils;
--import com.ruoyi.system.service.ISysConfigService;
- import com.smartor.domain.*;
- import com.smartor.service.IServiceExternalService;
- import com.smartor.service.IServiceSubtaskDetailService;
-@@ -38,8 +37,6 @@
-     private IServiceExternalService serviceExternalService;
-     @Autowired
-     private ISvyTaskSingleService svyTaskSingleService;
--    @Autowired
--    private ISysConfigService configService;
- 
-     /**
-      * 閫氱敤鎺ュ彛
-@@ -86,10 +83,6 @@
-         log.info("------serviceQueryInfo鐨勫叆鍙備负锛歿}", serviceQueryInfo);
-         Map map = null;
-         try {
--            String url = configService.selectConfigByKey("token.360",serviceQueryInfo.getXiaoXiTou().getFaSongJGID());
--            serviceQueryInfo.setUrl(url);
--           String url360 = configService.selectConfigByKey("url.360",serviceQueryInfo.getXiaoXiTou().getFaSongJGID());
--            serviceQueryInfo.setUrl360(url360);
-             map = svyTaskSingleService.query360PatInfo(serviceQueryInfo);
-         } catch (Exception e) {
-             e.printStackTrace();
-Index: smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service;\r\n\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.smartor.domain.*;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 浠诲姟闂嵎闂閫夐」Service鎺ュ彛\r\n *\r\n * @author ruoyi\r\n * @date 2024-07-18\r\n */\r\npublic interface IServiceSubtaskAnswerService {\r\n    /**\r\n     * 鏌ヨ浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param id 浠诲姟闂嵎闂閫夐」涓婚敭\r\n     * @return 浠诲姟闂嵎闂閫夐」\r\n     */\r\n    public ServiceSubtaskAnswer selectServiceSubtaskAnswerById(Long id);\r\n\r\n    /**\r\n     * 鏌ヨ浠诲姟闂嵎闂閫夐」鍒楄〃\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 浠诲姟闂嵎闂閫夐」闆嗗悎\r\n     */\r\n    public List<ServiceSubtaskAnswer> selectServiceSubtaskAnswerList(ServiceSubtaskAnswer serviceSubtaskAnswer);\r\n\r\n    /**\r\n     * 鏂板浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 缁撴灉\r\n     */\r\n    public int insertServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer);\r\n\r\n    /**\r\n     * 淇敼浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 缁撴灉\r\n     */\r\n    public int updateServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer);\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param ids 闇�瑕佸垹闄ょ殑浠诲姟闂嵎闂閫夐」涓婚敭闆嗗悎\r\n     * @return 缁撴灉\r\n     */\r\n    public int deleteServiceSubtaskAnswerByIds(Long[] ids);\r\n\r\n    /**\r\n     * 鍒犻櫎浠诲姟闂嵎闂閫夐」淇℃伅\r\n     *\r\n     * @param id 浠诲姟闂嵎闂閫夐」涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    public int deleteServiceSubtaskAnswerById(Long id);\r\n\r\n    /**\r\n     * 灏嗙紦瀛樼殑鏁版嵁淇濆瓨鍒版暟鎹簱\r\n     *\r\n     * @param serviceSubTaskAnswerReq\r\n     * @return\r\n     */\r\n    public Integer saveQuestionAnswer(ServiceSubTaskAnswerReq serviceSubTaskAnswerReq,Long flag);\r\n\r\n    /**\r\n     * 灏嗛棶棰樹繚瀛樺埌缂撳瓨\r\n     *\r\n     * @param serviceSubTaskCacheReq\r\n     * @return\r\n     */\r\n    public Integer saveQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq,Long flag);\r\n\r\n    public Map<String,Object> getQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq, Long flag);\r\n\r\n    public Map<String, Object> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq);\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java
---- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java	(date 1758682819449)
-@@ -70,6 +70,8 @@
-      */
-     public Integer saveQuestionAnswer(ServiceSubTaskAnswerReq serviceSubTaskAnswerReq,Long flag);
- 
-+    public Boolean saveMYDQuestionAnswer(ServiceSubTaskMYDAnswerReq serviceSubTaskMYDAnswerReq);
-+
-     /**
-      * 灏嗛棶棰樹繚瀛樺埌缂撳瓨
-      *
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.test;\r\n\r\nimport com.alibaba.fastjson2.JSONObject;\r\nimport com.ruoyi.common.config.RuoYiConfig;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.file.FileUploadUtils;\r\nimport com.ruoyi.common.utils.file.FileUtils;\r\nimport com.ruoyi.common.utils.http.HttpUtils;\r\nimport com.smartor.domain.ServiceSubtaskDetail;\r\nimport com.smartor.domain.ThiedInhospInfo;\r\nimport com.smartor.service.IHNGatherPatArchiveService;\r\nimport io.swagger.models.auth.In;\r\nimport org.junit.Test;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.mock.web.MockMultipartFile;\r\nimport org.springframework.web.multipart.MultipartFile;\r\n\r\nimport java.io.*;\r\nimport java.math.BigInteger;\r\nimport java.nio.file.Files;\r\nimport java.security.MessageDigest;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.concurrent.CompletableFuture;\r\nimport java.util.regex.Matcher;\r\nimport java.util.regex.Pattern;\r\nimport java.util.stream.Collectors;\r\n\r\nimport static cn.hutool.core.convert.Convert.toHex;\r\nimport static org.eclipse.jetty.http.HttpGenerator.CHUNK_SIZE;\r\n\r\n//@SpringBootTest\r\n//@RunWith(SpringRunner.class)\r\npublic class MQTest {\r\n    @Autowired\r\n    private IHNGatherPatArchiveService ihnGatherPatArchiveService;\r\n\r\n    @Test\r\n    public void testSend22() {\r\n//        uploadFileInChunks(new File(\"C:\\\\Users\\\\86176\\\\Desktop\\\\19-鍥捐Вes鍐呴儴鍩轰簬_version涔愯閿佹帶鍒�.mp4\"));\r\n        File file = new File(\"C:\\\\Users\\\\86176\\\\Desktop\\\\19-鍥捐Вes鍐呴儴鍩轰簬_version涔愯閿佹帶鍒�.mp4\");\r\n\r\n\r\n        FileInputStream input = null;\r\n        try {\r\n            input = new FileInputStream(new File(\"C:\\\\Users\\\\86176\\\\Desktop\\\\19-鍥捐Вes鍐呴儴鍩轰簬_version涔愯閿佹帶鍒�.mp4\"));\r\n            MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(), \"application/octet-stream\", input);\r\n            aa(multipartFile);\r\n        } catch (FileNotFoundException e) {\r\n            e.printStackTrace();\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n    }\r\n\r\n    @Test\r\n    public void bb() {\r\n        Boolean aBoolean = ihnGatherPatArchiveService.hnDataGather(null);\r\n    }\r\n\r\n    @Test\r\n    public void cc() {\r\n        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n        String s = rsaPublicKeyExample.encryptedData(\"1012320966\", \"MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==\");\r\n        System.out.println(\"鍔犲瘑缁撴灉涓猴細\" + s);\r\n        String s1 = rsaPublicKeyExample.decryptedData(s, \"MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==\");\r\n        System.out.println(\"瑙e瘑缁撴灉涓猴細\"+s1);\r\n    }\r\n\r\n    public void aa(MultipartFile file) throws IOException {\r\n        System.out.println(\"寮�濮婣a锛歕" + System.currentTimeMillis());\r\n        String filePath = \"D:\\\\test\\\\Ab\";\r\n        // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О\r\n        String fileName = FileUploadUtils.upload(filePath, file);\r\n        System.out.println(\"缁撴潫Aa锛歕" + System.currentTimeMillis());\r\n\r\n    }\r\n\r\n\r\n    public static String encode(String arg) {\r\n        if (arg == null) {\r\n            arg = \"\";\r\n        }\r\n        MessageDigest md5 = null;\r\n        try {\r\n            md5 = MessageDigest.getInstance(\"MD5\");\r\n            md5.update(arg.getBytes(\"UTF-8\"));\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n        return toHex(md5.digest());\r\n    }\r\n\r\n}\r\n\r\n\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java	(date 1758682819395)
-@@ -65,7 +65,7 @@
-     @Test
-     public void cc() {
-         RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
--        String s = rsaPublicKeyExample.encryptedData("1012320966", "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==");
-+        String s = rsaPublicKeyExample.encryptedData("20250815001094", "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==");
-         System.out.println("鍔犲瘑缁撴灉涓猴細" + s);
-         String s1 = rsaPublicKeyExample.decryptedData(s, "MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==");
-         System.out.println("瑙e瘑缁撴灉涓猴細"+s1);
-Index: smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥殢璁匡級瀵硅薄 ivr_tasksingle\r\n *\r\n * @author ruoyi\r\n * @date 2024-02-02\r\n */\r\n@ApiModel(value = \"ServiceSubtask\", description = \"鍗曚竴闅忚浠诲姟\")\r\n@Data\r\npublic class ServiceSubtask extends PatArchive {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 涓婚敭\r\n     */\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 浠诲姟ID\r\n     */\r\n    @ApiModelProperty(value = \"浠诲姟ID\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 绗笁鏂逛换鍔D\r\n     */\r\n    @ApiModelProperty(value = \"绗笁鏂逛换鍔D\")\r\n    private String taskGuid;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呬汉璁板綍ID\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呬汉璁板綍ID\")\r\n    private Long inhospid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @Excel(name = \"鐖禝D\")\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private Long pid;\r\n\r\n    /**\r\n     * 澶囨敞\r\n     */\r\n    @ApiModelProperty(value = \"澶囨敞\")\r\n    private String remark;\r\n\r\n    /**\r\n     * 澶囨敞\r\n     */\r\n    @ApiModelProperty(value = \"\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 寮傚父鏍囪瘑\r\n     */\r\n    @ApiModelProperty(value = \"寮傚父鏍囪瘑\")\r\n    @Excel(name = \" 寮傚父鏍囪瘑 \")\r\n    private String excep;\r\n\r\n    /**\r\n     * 鍑洪櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date endtime;\r\n\r\n    /**\r\n     * 鍏ラ櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date starttime;\r\n\r\n    /**\r\n     * 鏄惁鎻愪氦\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鎻愪氦锛�0鏈彁浜�   1宸叉彁浜")\r\n    private Long submit;\r\n\r\n    /**\r\n     * 鍙戦�佷汉\r\n     */\r\n    @Excel(name = \" 鍙戦�佷汉锛堟偅鑰咃級 \")\r\n    @ApiModelProperty(value = \"鍙戦�佷汉锛堟偅鑰咃級\")\r\n    private String sendname;\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @Excel(name = \" 鎵嬫満鍙� \")\r\n    @ApiModelProperty(value = \"鎵嬫満鍙穃")\r\n    private String phone;\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @Excel(name = \" 鎵嬫満鍙� \")\r\n    @ApiModelProperty(value = \"鎵嬫満鍙穃")\r\n    private String openid;\r\n\r\n    /**\r\n     * 鎬у埆\r\n     */\r\n    @Excel(name = \"  鎬у埆\")\r\n    @ApiModelProperty(value = \"鎬у埆\")\r\n    private Long sex;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @Excel(name = \" 骞撮緞 \")\r\n    @ApiModelProperty(value = \"骞撮緞\")\r\n    private Long age;\r\n\r\n    /**\r\n     * 韬唤璇佸彿\r\n     */\r\n    @Excel(name = \" 韬唤璇佸彿 \")\r\n    @ApiModelProperty(value = \"韬唤璇佸彿\")\r\n    private String sfzh;\r\n\r\n    /**\r\n     * 鍦板潃\r\n     */\r\n    @Excel(name = \" 鍦板潃 \")\r\n    @ApiModelProperty(value = \"鍦板潃\")\r\n    private String addr;\r\n\r\n    /**\r\n     * 鍙戦�佷汉璇︽儏\r\n     */\r\n    @Excel(name = \"  鍙戦�佷汉璇︽儏\")\r\n    @ApiModelProperty(value = \"鍙戦�佷汉璇︽儏\")\r\n    private String senderdetail;\r\n\r\n    /**\r\n     * 浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)\r\n     */\r\n    @Excel(name = \"浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶锛堥殢璁匡級  2锛岄棶鍗凤紱3锛岄�氱煡锛堝鏁欙級\")\r\n    @ApiModelProperty(value = \"浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶锛堥殢璁匡級  2锛岄棶鍗凤紱3锛屽鏁欙紱 4.閫氱煡)\")\r\n    private String type;\r\n\r\n    /**\r\n     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)\r\n     */\r\n    @Excel(name = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)\")\r\n    @ApiModelProperty(value = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚\")\r\n    private String serviceType;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"  妯℃澘ID\")\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private Long templateid;\r\n\r\n    /**\r\n     * 妯℃澘鍚峔r\n     */\r\n    @Excel(name = \" 妯℃澘鍚� \")\r\n    @ApiModelProperty(value = \"鎷夊彇鏃堕棿\")\r\n    private String templatename;\r\n\r\n    /**\r\n     * 鍙戝鐞嗘剰瑙侊細1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫閫乁UID\r\n     */\r\n    @Excel(name = \" 澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫 \")\r\n    @ApiModelProperty(value = \"澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫\")\r\n    private String suggest;\r\n\r\n    /**\r\n     * 鍙戦�佹棩鏈焅r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鍙戦�佹棩鏈� \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"鍙戦�佹棩鏈焅")\r\n    private Date senddate;\r\n\r\n    /**\r\n     * 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitabegin;\r\n\r\n    /**\r\n     * 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitaend;\r\n\r\n    /**\r\n     * 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitpbegin;\r\n\r\n    /**\r\n     * 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitpend;\r\n\r\n    /**\r\n     * 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitnbegin;\r\n\r\n    /**\r\n     * 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitnend;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬乗r\n     */\r\n//    @Excel(name = \" 鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴怽\\") \")\r\n    @ApiModelProperty(value = \"鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴怽")\r\n    private Long sendstate;\r\n\r\n    /**\r\n     * 鏆傚仠鐘� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1\r\n     */\r\n//    @Excel(name = \" 鏆傚仠鐘� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1 \")\r\n    @ApiModelProperty(value = \"鏆傚仠鐘� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1\")\r\n    private Long stopState;\r\n\r\n    /**\r\n     * 鍙戦�乁UID\r\n     */\r\n//    @Excel(name = \" 鍙戦�乁UID \")\r\n    @ApiModelProperty(value = \"鍙戦�乁UID\")\r\n    private String senduuid;\r\n\r\n    /**\r\n     * 缁撴灉\r\n     */\r\n//    @Excel(name = \" 缁撴灉 \")\r\n    @ApiModelProperty(value = \"缁撴灉\")\r\n    private String result;\r\n\r\n    /**\r\n     * 瀹屾垚鏃堕棿\r\n     */\r\n    @JsonFormat(timezone = \"GMT+8\", pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @ApiModelProperty(value = \"瀹屾垚鏃堕棿\")\r\n    private Date finishtime;\r\n\r\n    /**\r\n     * 灏辫瘖璁板綍缂栧彿\r\n     */\r\n    @Excel(name = \" 灏辫瘖璁板綍缂栧彿 \")\r\n    @ApiModelProperty(value = \"灏辫瘖璁板綍缂栧彿\")\r\n    private Long recordid;\r\n\r\n    /**\r\n     * 褰撳墠閲嶆嫧娆℃暟\r\n     */\r\n    @Excel(name = \" 褰撳墠閲嶆嫧娆℃暟 \")\r\n    @ApiModelProperty(value = \"褰撳墠閲嶆嫧娆℃暟\")\r\n    private Long exrecallcount;\r\n\r\n    /**\r\n     * 鎷夊彇鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鎷夊彇鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"鎷夊彇鏃堕棿\")\r\n    private Date pulltime;\r\n\r\n    /**\r\n     * 閮ㄩ棬code\r\n     */\r\n    @Excel(name = \"  閮ㄩ棬code\")\r\n    @ApiModelProperty(value = \"閮ㄩ棬code\")\r\n    private String deptcode;\r\n\r\n    /**\r\n     * 鍖荤敓缂栫爜\r\n     */\r\n    @Excel(name = \"  鍖荤敓缂栫爜\")\r\n    @ApiModelProperty(value = \"鍖荤敓缂栫爜\")\r\n    private String drcode;\r\n\r\n    /**\r\n     * 鍖荤敓濮撳悕\r\n     */\r\n    @Excel(name = \"  鍖荤敓濮撳悕\")\r\n    @ApiModelProperty(value = \"鍖荤敓濮撳悕\")\r\n    private String drname;\r\n\r\n    /**\r\n     * 鏍囩鐘舵�乗r\n     */\r\n    @Excel(name = \"  鏍囩鐘舵�乗")\r\n    @ApiModelProperty(value = \"鏍囩鐘舵�乗")\r\n    private Long labelstatus;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鏂囨湰鍙橀噺鍙傛暟\r\n     */\r\n    @Excel(name = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    private String textParam;\r\n\r\n    /**\r\n     * 瀹f暀褰㈠紡 : 1,鐭俊銆�2,绾夸笅銆�3,璇煶銆�4,瑙嗛銆�5,绾歌川  6.閾炬帴  7.閽夐拤   8.寰俊\r\n     */\r\n    @Excel(name = \" 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤\")\r\n    @ApiModelProperty(\"瀹f暀褰㈠紡 : 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤\")\r\n    private String preachform;\r\n\r\n    /**\r\n     * 搴婂彿\r\n     */\r\n    @Excel(name = \"搴婂彿\")\r\n    @ApiModelProperty(value = \"搴婂彿\")\r\n    private String bedNo;\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @Excel(name = \"pageNum\")\r\n    @ApiModelProperty(value = \"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @Excel(name = \"pageSize\")\r\n    @ApiModelProperty(value = \"pageSize\")\r\n    private Integer pageSize;\r\n\r\n\r\n    /**\r\n     * 鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦�乗r\n     */\r\n    @ApiModelProperty(value = \"鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦�乗")\r\n    private String sendType;\r\n\r\n    /**\r\n     * 浠诲姟鍚嶇О\r\n     */\r\n    @Excel(name = \"浠诲姟鍚嶇О\")\r\n    @ApiModelProperty(value = \"浠诲姟鍚嶇О\")\r\n    private String taskName;\r\n\r\n    /**\r\n     * 浠诲姟鎻忚堪\r\n     */\r\n    @Excel(name = \"浠诲姟鎻忚堪\")\r\n    @ApiModelProperty(value = \"浠诲姟鎻忚堪\")\r\n    private String taskDesc;\r\n\r\n\r\n    /**\r\n     * 闅忚浜篭r\n     */\r\n    @Excel(name = \"  闅忚浜�  \")\r\n    @ApiModelProperty(value = \"闅忚浜篭")\r\n    private String operator;\r\n\r\n    /**\r\n     * 闅忚浜篭r\n     */\r\n    @Excel(name = \"  闅忚浜虹紪鍙�  \")\r\n    @ApiModelProperty(value = \"闅忚浜虹紪鍙穃")\r\n    private String operatorNo;\r\n\r\n    /**\r\n     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�  \")\r\n    @ApiModelProperty(value = \"灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡")\r\n    private String hospno;\r\n\r\n    /**\r\n     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡")\r\n    @ApiModelProperty(value = \"灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌 3.涓撶梾 4.澶栭儴瀵煎叆 5鎬ヨ瘖銆�5浣忛櫌銆�7浣撴锛塡")\r\n    private String hospType;\r\n\r\n\r\n    /**\r\n     * 寰俊\r\n     */\r\n    @Excel(name = \"  寰俊\")\r\n    @ApiModelProperty(value = \"寰俊\")\r\n    private String wechat;\r\n\r\n    /**\r\n     * 鍑洪櫌璇婃柇缂栫爜\r\n     */\r\n    @Excel(name = \"  鍑洪櫌璇婃柇缂栫爜\")\r\n    @ApiModelProperty(value = \"鍑洪櫌璇婃柇缂栫爜\")\r\n    private String leaveicd10code;\r\n    /**\r\n     * 鍑洪櫌璇婃柇鍚嶇О\r\n     */\r\n    @Excel(name = \"  鍑洪櫌璇婃柇鍚嶇О\")\r\n    @ApiModelProperty(value = \"鍑洪櫌璇婃柇鍚嶇О\")\r\n    private String leavediagname;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"  鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private Long patid;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"  鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private String patguid;\r\n\r\n    /**\r\n     * 绉戝鍚嶇О\r\n     */\r\n    @Excel(name = \"绉戝鍚嶇О\")\r\n    @ApiModelProperty(value = \"绉戝鍚嶇О\")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 灏辫瘖鏃ユ湡\r\n     */\r\n    @Excel(name = \" 灏辫瘖鏃ユ湡\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @ApiModelProperty(value = \"灏辫瘖鏃ユ湡\")\r\n    private Date admindate;\r\n\r\n    /**\r\n     * 鐥呮埧鍙穃r\n     */\r\n    @Excel(name = \"  鐥呮埧鍙穃")\r\n    @ApiModelProperty(value = \"鐥呮埧鍙穃")\r\n    private String roomno;\r\n\r\n    /**\r\n     * 妯℃澘搴撴ā鐗圛D\r\n     */\r\n    @Excel(name = \"妯℃澘搴撴ā鐗圛D\")\r\n    @ApiModelProperty(value = \"妯℃澘搴撴ā鐗圛D\")\r\n    private Long libtemplateid;\r\n\r\n    /**\r\n     * 鎬诲垎\r\n     */\r\n    @Excel(name = \"鎬诲垎\")\r\n    @ApiModelProperty(value = \"鎬诲垎\")\r\n    private BigDecimal score;\r\n\r\n    /**\r\n     * 妯℃澘搴撴ā鐗堝悕绉癨r\n     */\r\n    @Excel(name = \"妯℃澘搴撴ā鐗堝悕绉癨")\r\n    @ApiModelProperty(value = \"妯℃澘搴撴ā鐗堝悕绉癨")\r\n    private String libtemplatename;\r\n\r\n\r\n    /**\r\n     * 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\r\n     */\r\n    @Excel(name = \" 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\")\r\n    @ApiModelProperty(value = \"闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\")\r\n    private Date longSendTime;\r\n\r\n    /**\r\n     * 璐d换鎶ゅ+缂栫爜\r\n     */\r\n    @Excel(name = \"璐d换鎶ゅ+缂栫爜\")\r\n    @ApiModelProperty(\"璐d换鎶ゅ+缂栫爜\")\r\n    private String nurseId;\r\n\r\n    /**\r\n     * 璐d换鎶ゅ+濮撳悕\r\n     */\r\n    @Excel(name = \"璐d换鎶ゅ+濮撳悕\")\r\n    @ApiModelProperty(\"璐d换鎶ゅ+濮撳悕\")\r\n    private String nurseName;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿\")\r\n    private String leavehospitaldistrictcode;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿闆嗗悎\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎\")\r\n    private List<String> leaveldeptcodes;\r\n\r\n    @ApiModelProperty(value = \"鍙戦�佽鎯匼")\r\n    private List<ServiceSubtaskRecord> serviceSubtaskRecordList;\r\n\r\n    @ApiModelProperty(value = \"url\")\r\n    private String url;\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呮潵婧愶細0鏈湴鎮h�呰〃    1澶栭儴鎮h�呰〃\")\r\n    private String patfrom;\r\n\r\n    /**\r\n     * 闅忚娆℃暟\r\n     */\r\n    @ApiModelProperty(value = \"闅忚娆℃暟\")\r\n    private Integer visitCount;\r\n\r\n    /**\r\n     * 澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡\r\n     */\r\n    @ApiModelProperty(value = \"澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡\")\r\n    private Integer visitNotice;\r\n\r\n    /**\r\n     * 鏄惁鍦ㄦ闅忚锛�1鍚�    2鏄痋r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鍦ㄦ闅忚锛�1鏄�    2鍚")\r\n    private Integer isVisitAgain;\r\n\r\n    /**\r\n     * 鎮h�呬笂娆¢殢璁跨殑subId\r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呬笂娆¢殢璁跨殑subId\")\r\n    private Integer upid;\r\n\r\n    @ApiModelProperty(value = \"闅忚鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date visitTime;\r\n\r\n    /**\r\n     * 闅忚鏂瑰紡\r\n     */\r\n    @ApiModelProperty(value = \"闅忚鏂瑰紡\")\r\n    private String visitType;\r\n\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬缂栫爜\")\r\n    private String visitDeptCode;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬鍚嶇О\")\r\n    private String visitDeptName;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬缂栫爜闆嗗悎\")\r\n    private List<String> visitDeptCodes;\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @Excel(name = \"pn\")\r\n    @ApiModelProperty(value = \"pn\")\r\n    private Integer pn;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @Excel(name = \"ps\")\r\n    @ApiModelProperty(value = \"ps\")\r\n    private Integer ps;\r\n\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"缁忕鍖荤敓缂栫爜\")\r\n    private String managementDoctorCode;\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"缁忕鍖荤敓\")\r\n    private String managementDoctor;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java	(revision ae8dfb86654fd98592e57bbfe820b7c2275ce8a5)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java	(date 1758629526879)
-@@ -68,8 +68,8 @@
-     /**
-      * 寮傚父鏍囪瘑
-      */
--    @ApiModelProperty(value = "寮傚父鏍囪瘑")
--    @Excel(name = " 寮傚父鏍囪瘑 ")
-+    @ApiModelProperty(value = "寮傚父鏍囪瘑锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊")
-+    @Excel(name = " 寮傚父鏍囪瘑:0缁胯壊锛�1绾㈣壊锛�2榛勮壊 ")
-     private String excep;
- 
-     /**
-@@ -158,8 +158,8 @@
-     /**
-      * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)
-      */
--    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)")
--    @ApiModelProperty(value = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚")
-+    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿 16璇鹃闅忚")
-+    @ApiModelProperty(value = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿  16璇鹃闅忚")
-     private String serviceType;
- 
-     /**
-@@ -360,6 +360,13 @@
-     @ApiModelProperty("瀹f暀褰㈠紡 : 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤")
-     private String preachform;
- 
-+    /**
-+     * 褰撳墠鍙戦�佹柟寮�
-+     */
-+    @Excel(name = " 褰撳墠鍙戦�佹柟寮�")
-+    @ApiModelProperty("褰撳墠鍙戦�佹柟寮�")
-+    private String currentPreachform;
-+
-     /**
-      * 搴婂彿
-      */
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_25_19_00__Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_25_19_00__Changes_.xml
deleted file mode 100644
index abbcb2a..0000000
--- a/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_25_19_00__Changes_.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<changelist name="Uncommitted_changes_before_Update_at_2025_9_25_19_00_[Changes]" date="1758798203984" recycled="true" deleted="true">
-  <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_25_19_00_[Changes]/shelved.patch" />
-  <option name="DESCRIPTION" value="Uncommitted changes before Update at 2025/9/25 19:00 [Changes]" />
-</changelist>
\ No newline at end of file
diff --git "a/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_29_17_53_\133Changes\135/shelved.patch" "b/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_29_17_53_\133Changes\135/shelved.patch"
deleted file mode 100644
index 1812111..0000000
--- "a/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_29_17_53_\133Changes\135/shelved.patch"
+++ /dev/null
@@ -1,8313 +0,0 @@
-Index: ruoyi-admin/src/main/resources/application.yml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+># 椤圭洰鐩稿叧閰嶇疆\r\nruoyi:\r\n  # 鍚嶇О\r\n  name: lihu\r\n  # 鐗堟湰\r\n  version: 3.8.5\r\n  # 鐗堟潈骞翠唤\r\n  copyrightYear: 2023\r\n  # 瀹炰緥婕旂ず寮�鍏砛r\n  demoEnabled: true\r\n  # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛塡r\n  profile: D:/ruoyi/uploadPath\r\n  # 鑾峰彇ip鍦板潃寮�鍏砛r\n  addressEnabled: false\r\n  # 楠岃瘉鐮佺被鍨� math 鏁扮粍璁$畻 char 瀛楃楠岃瘉\r\n  captchaType: math\r\n\r\n#  寮�鍙戠幆澧冮厤缃甛r\nserver:\r\n  # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080\r\n  port: 8095\r\n  servlet:\r\n    # 搴旂敤鐨勮闂矾寰刓r\n    context-path: /\r\n  tomcat:\r\n    # tomcat鐨刄RI缂栫爜\r\n    uri-encoding: UTF-8\r\n    # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100\r\n    accept-count: 1000\r\n    threads:\r\n      # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200\r\n      max: 800\r\n      # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10\r\n      min-spare: 100\r\n\r\n# 鏃ュ織閰嶇疆\r\nlogging:\r\n  # 鏃ュ織璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/logs锛孡inux閰嶇疆 /home/ruoyi/logs,涓嶅~鍚岀骇鐩綍logs锛塡r\n  path: D:/ruoyi/ls/logs\r\n  # 瀛楃缂栫爜\r\n  charset:\r\n    console: UTF-8\r\n    file: UTF-8\r\n  # 鏃ュ織鏂囦欢閰嶇疆\r\n  file:\r\n    name: ${logging.path}/ruoyi.log\r\n    max-size: 100MB\r\n    max-history: 30\r\n  # 鏃ュ織绾у埆閰嶇疆\r\n  level:\r\n    com.ruoyi: info\r\n    com.smartor: info\r\n    org.springframework: warn\r\n    org.apache.ibatis: warn\r\n    # 鎺у埗鍙拌緭鍑虹骇鍒玕r\n    root: info\r\n  # 鏃ュ織鏍煎紡閰嶇疆\r\n  pattern:\r\n    console: \"%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n\"\r\n    file: \"%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n\"\r\n\r\n# 鐢ㄦ埛閰嶇疆\r\nuser:\r\n  password:\r\n    # 瀵嗙爜鏈�澶ч敊璇鏁癨r\n    maxRetryCount: 5\r\n    # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛塡r\n    lockTime: 10\r\n\r\n# Spring閰嶇疆\r\nspring:\r\n  # 璧勬簮淇℃伅\r\n  messages:\r\n    # 鍥介檯鍖栬祫婧愭枃浠惰矾寰刓r\n    basename: i18n/messages\r\n  profiles:\r\n    active: hzszlyy\r\n  # 鏂囦欢涓婁紶\r\n  servlet:\r\n    multipart:\r\n      # 鍗曚釜鏂囦欢澶у皬\r\n      max-file-size: 500MB\r\n      # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬\r\n      max-request-size: 750MB\r\n  # 鏈嶅姟妯″潡\r\n  devtools:\r\n    restart:\r\n      # 鐑儴缃插紑鍏砛r\n      enabled: true\r\n\r\n# minio鏂囦欢绠$悊杩炴帴\r\nminio:\r\n  endpoint: http://192.168.1.4\r\n  port: 9002\r\n  accessKey: lihu\r\n  secretKey: lihu@123\r\n  bucketName: lihu\r\n  secure: false\r\n\r\n# token閰嶇疆\r\ntoken:\r\n  # 浠ょ墝鑷畾涔夋爣璇哱r\n  header: Authorization\r\n  # 浠ょ墝瀵嗛挜\r\n  secret: abcdefghijklmnopqrstuvwxyz\r\n  # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛塡r\n  expireTime: 120\r\n\r\n# MyBatis閰嶇疆\r\nmybatis:\r\n  # 鎼滅储鎸囧畾鍖呭埆鍚峔r\n  typeAliasesPackage: com.ruoyi.**.domain,com.smartor.domain\r\n  # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢\r\n  mapperLocations: classpath*:mapper/**/*Mapper.xml\r\n  # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠禱r\n  configLocation: classpath:mybatis/mybatis-config.xml\r\n  #configuration:\r\n  #  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\r\n\r\n\r\n# 娌冲崡SSO閰嶇疆锛堜附姘寸敤涓嶅埌锛塡r\nsso:\r\n  enabled: true\r\n  client_id: \"mbglxt\"  # 淇¢�氶櫌鎻愪緵\r\n  client_secret: \"mbglxt\"  # 淇¢�氶櫌鎻愪緵\r\n  # 鍐呯綉閰嶇疆\r\n  internal:\r\n    authorize_url: \"http://10.10.13.112:37727/connect/authorize\"\r\n    token_url: \"http://10.10.13.112:37727/connect/token\"\r\n    userinfo_url: \"http://10.10.13.112:37727/connect/userinfo\"\r\n    redirect_uri: \"http://172.20.111.142:8096/login\"\r\n  # 澶栫綉閰嶇疆\r\n  external:\r\n    authorize_url: \"http://172.20.111.142:37727/connect/authorize\"\r\n    token_url: \"http://172.20.111.142:37727/connect/token\"\r\n    userinfo_url: \"http://172.20.111.142:37727/connect/userinfo\"\r\n    redirect_uri: \"http://172.20.111.142:8096/login\"\r\n  state: \"smartor\"  # 浣犱滑绯荤粺鏍囪瘑\r\n  scope: \"openid%20roles%20profile\"\r\n\r\n# 闃叉XSS鏀诲嚮\r\nxss:\r\n  # 杩囨护寮�鍏砛r\n  enabled: true\r\n  # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛塡r\n  excludes: /system/notice\r\n  # 鍖归厤閾炬帴\r\n  urlPatterns: /system/*,/monitor/*,/tool/*\r\n\r\n#涓嶉渶瑕佽繘琛岄暱鏈熶换鍔$殑鏈烘瀯\r\nnoLongTask:\r\n\r\n#鐪佺珛鍚屽痉鍙栨暟鎹叕鍏辨帴鍙r\nsltd_pub_path: \"http://open-tdyy.cfuture.shop/kapi/gw-api/\"\r\n\r\n#鐢ㄦ埛榛樿瀵嗙爜\r\nuserPwd: 123456\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
---- a/ruoyi-admin/src/main/resources/application.yml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/resources/application.yml	(date 1759130548350)
-@@ -74,7 +74,7 @@
-     # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
-     basename: i18n/messages
-   profiles:
--    active: hzszlyy
-+    active: druid
-   # 鏂囦欢涓婁紶
-   servlet:
-     multipart:
-@@ -137,6 +137,10 @@
-     redirect_uri: "http://172.20.111.142:8096/login"
-   state: "smartor"  # 浣犱滑绯荤粺鏍囪瘑
-   scope: "openid%20roles%20profile"
-+  #鍗曠偣鐧婚檰鐧藉悕鍗旾P閰嶇疆
-+  whitelist:
-+    ips:
-+
- 
- # 闃叉XSS鏀诲嚮
- xss:
-Index: smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 璇煶浠诲姟瀵硅薄 ivr_task\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@Data\r\npublic class ServiceTaskVO extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 浠诲姟鎻忚堪\r\n     */\r\n    @Excel(name = \"浠诲姟鎻忚堪\")\r\n    @ApiModelProperty(value = \"浠诲姟鎻忚堪\")\r\n    private String taskDesc;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(\"鏄惁鏄暱鏈熶换鍔� 0锛氫笉鏄�    1锛氭槸\")\r\n    private Integer longTask = 0;\r\n\r\n    /**\r\n     *\r\n     */\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 鍙戦�佸ぉ鏁癨r\n     */\r\n    @Excel(name = \"鍙戦�佸ぉ鏁癨")\r\n    @ApiModelProperty(value = \"鍙戦�佸ぉ鏁癨")\r\n    private Long sendDay;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String taskName;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿闆嗗悎\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎\")\r\n    private List<String> leaveldeptcodes;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long templateid;\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String libtemplateid;\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String libtemplatename;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String templatename;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String labelinfo;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long state;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long count;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long executed;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long unexecuted;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long fail;\r\n\r\n    /**\r\n     * 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤\r\n     */\r\n    @Excel(name = \"  浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 \")\r\n    @ApiModelProperty(value = \" 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 \")\r\n    private String preachform;\r\n\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String userid;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String username;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date addtime;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String checkuserid;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private String checkusername;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date checktime;\r\n\r\n    /**\r\n     * 浠诲姟绫诲瀷(閫氱煡銆侀棶鍗枫�佹満鍣ㄤ汉璇煶)\r\n     */\r\n    @Excel(name = \" 浠诲姟绫诲瀷(閫氱煡銆侀棶鍗枫�佹満鍣ㄤ汉璇煶) \")\r\n    private String type;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"绫诲瀷鍚嶇О\")\r\n    private String typename;\r\n\r\n    /**\r\n     * 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊\r\n     */\r\n    @Excel(name = \" 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 \")\r\n    private Long usebqsms;\r\n\r\n    /**\r\n     * 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊\r\n     */\r\n    @Excel(name = \" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 \")\r\n    private Long usebhsms;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"  \")\r\n    private Long usesendsms;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"绉戝缂栫爜\")\r\n    private String deptcode;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \"绉戝鍚峔")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 宸插彂閫乗r\n     */\r\n    @Excel(name = \" 宸插彂閫� \")\r\n    private Long yfs;\r\n\r\n    /**\r\n     * 鏈彂閫乗r\n     */\r\n    @Excel(name = \" 鏈彂閫� \")\r\n    private Long wfs;\r\n\r\n    /**\r\n     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡")\r\n    @ApiModelProperty(value = \"灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌 3.涓撶梾锛塡")\r\n    private String hospType;\r\n\r\n    /**\r\n     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�  \")\r\n    @ApiModelProperty(value = \"灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡")\r\n    private String hospno;\r\n\r\n    /**\r\n     * 鍙戦�佹椂闂存\r\n     */\r\n    @ApiModelProperty(value = \"鍙戦�佹椂闂存 \")\r\n    private List<TaskSendTimeVO> sendTimeslot;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬侊細  0  澶辫触   1鎴愬姛\r\n     */\r\n    @Excel(name = \" 鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 \")\r\n    @ApiModelProperty(value = \"鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 \")\r\n    private Long sendState;\r\n\r\n\r\n    /**\r\n     * 鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚圽r\n     */\r\n    @Excel(name = \" 瀹f偅鑰呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚圽")\r\n    @ApiModelProperty(value = \"鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚圽")\r\n    private List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n    /**\r\n     * 鏂囨湰鍙橀噺鍙傛暟\r\n     */\r\n    @Excel(name = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    private Map<String, Map<String, String>> textParam;\r\n\r\n\r\n    /**\r\n     * 鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦�乗r\n     */\r\n    @ApiModelProperty(value = \"鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鍗冲埢鍙戦�乗")\r\n    private Long sendType;\r\n\r\n    @ApiModelProperty(value = \"涓婂崍鏃堕棿\")\r\n    private String showTimeMorn;\r\n\r\n    @ApiModelProperty(value = \"涓崍鏃堕棿\")\r\n    private String showTimeNoon;\r\n\r\n    @ApiModelProperty(value = \"鏅氬崍鏃堕棿\")\r\n    private String showTimeNight;\r\n\r\n    @ApiModelProperty(value = \"灞曠ず鏃ユ湡\")\r\n    private String showDate;\r\n\r\n    /**\r\n     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\r\n     */\r\n    @Excel(name = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\")\r\n    @ApiModelProperty(value = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\")\r\n    private String serviceType;\r\n\r\n    @ApiModelProperty(value = \"寮�鍦虹櫧\")\r\n    private String kcb;\r\n\r\n    @ApiModelProperty(value = \"缁撴潫璇璡")\r\n    private String jsy;\r\n\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿闆嗗悎\")\r\n    private String leavehospitaldistrictcode;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽焅r\n     */\r\n    @ApiModelProperty(value = \"琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽� \")\r\n    @Excel(name = \" 琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽� \")\r\n    private String compensateDate;\r\n\r\n\r\n    @ApiModelProperty(value = \"闂嵎妯℃澘\")\r\n    private SvyTaskTemplateVO svyTaskTemplateVO;\r\n\r\n    @ApiModelProperty(value = \"璇煶妯℃澘\")\r\n    private IvrTaskTemplateVO ivrTaskTemplateVO;\r\n\r\n    @ApiModelProperty(value = \"鏄惁寰幆鎵ц鎮h�咃紙0:涓嶅惊鐜�           1锛氬惊鐜級\")\r\n    private Long patCycle = 0L;\r\n    /**\r\n     * 鏄惁鏈変笅涓换鍔★紝鐢ㄤ簬澶氫换鍔″叧鑱擻r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鏈変笅涓换鍔★紙0:鏃� 1锛氭湁锛塡")\r\n    @Excel(name = \"鏄惁鏈変笅涓换鍔★紙0:鏃� 1锛氭湁锛塡")\r\n    private String nexttaskflag;\r\n    /**\r\n     * 涓嬩竴涓换鍔d\r\n     */\r\n    @ApiModelProperty(value = \"涓嬩竴涓换鍔d\")\r\n    @Excel(name = \" 涓嬩竴涓换鍔d\")\r\n    private Long nexttaskid;\r\n    /**\r\n     * 涓嬩竴涓换鍔″悕绉癨r\n     */\r\n    @ApiModelProperty(value = \"涓嬩竴涓换鍔″悕绉癨")\r\n    @Excel(name = \" 涓嬩竴涓换鍔″悕绉癨")\r\n    private String nexttaskname;\r\n\r\n    /**\r\n     * 绉戝id\r\n     */\r\n    @ApiModelProperty(\"绉戝id\")\r\n    @Excel(name = \"绉戝id\")\r\n    private Long icd10id;\r\n\r\n    /**\r\n     * 鐤剧梾缂栫爜\r\n     */\r\n    @ApiModelProperty(\"鐤剧梾缂栫爜\")\r\n    @Excel(name = \"鐤剧梾缂栫爜\")\r\n    private String icd10code;\r\n\r\n    /**\r\n     * 鐤剧梾鍚嶇О\r\n     */\r\n    @ApiModelProperty(\"鐤剧梾鍚嶇О\")\r\n    @Excel(name = \"鐤剧梾鍚嶇О\")\r\n    private String icd10name;\r\n\r\n    /**\r\n     * 鎵嬫湳缂栫爜\r\n     */\r\n    @ApiModelProperty(\"鎵嬫湳缂栫爜\")\r\n    @Excel(name = \"鎵嬫湳缂栫爜\")\r\n    private String opcode;\r\n\r\n    /**\r\n     * 鎵嬫湳鍚嶇О\r\n     */\r\n    @ApiModelProperty(\"鎵嬫湳鍚嶇О\")\r\n    @Excel(name = \"鎵嬫湳鍚嶇О\")\r\n    private String opdesc;\r\n\r\n    /**\r\n     * 閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\r\n     */\r\n    @ApiModelProperty(\"閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\")\r\n    @Excel(name = \"閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\")\r\n    private String appltype;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬缂栫爜\")\r\n    private String visitDeptCode;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬鍚嶇О\")\r\n    private String visitDeptName;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java b/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceTaskVO.java	(date 1758798202549)
-@@ -121,14 +121,27 @@
-      */
-     @Excel(name = "  ")
-     private Long fail;
--
-     /**
-      * 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤
-      */
--    @Excel(name = "  浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
--    @ApiModelProperty(value = " 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
-+    @Excel(name = "  浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
-+    @ApiModelProperty(value = " 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
-     private String preachform;
- 
-+    /**
-+     * 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤
-+     * [
-+     *     {
-+     *         "sort": 1,   //搴忓彿
-+     *         "preachform": "1",  //鍙戦�佹柟寮�
-+     *         "compensateTime": 2   //琛ュ伩鏃堕棿
-+     *     }
-+     * ]
-+     */
-+    @Excel(name = "  浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
-+    @ApiModelProperty(value = " 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 ")
-+    private List<ServiceSubtaskPreachform> preachformList;
-+
- 
-     /**
-      *
-Index: ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.quartz.task;\r\n\r\nimport com.alibaba.fastjson2.JSONObject;\r\nimport com.fasterxml.jackson.databind.JsonNode;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.enums.MsgLSEnum;\r\nimport com.ruoyi.common.enums.ServiceFromEnum;\r\nimport com.ruoyi.common.enums.VisitSendStateEnum;\r\nimport com.ruoyi.common.enums.WxGZHEnum;\r\nimport com.ruoyi.common.utils.HttpUtil;\r\nimport com.ruoyi.common.utils.OkHttpExample;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.http.HttpUtils;\r\nimport com.ruoyi.common.utils.sms.smsUtils;\r\nimport com.ruoyi.quartz.service.ICollectHISService;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.smartor.common.LSHospTokenUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.HeLibraryMapper;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport com.smartor.mapper.ServiceTaskMapper;\r\nimport com.smartor.mapper.SysUserImportMapper;\r\nimport com.smartor.service.*;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Component;\r\n\r\nimport java.io.IOException;\r\nimport java.net.URLEncoder;\r\nimport java.nio.charset.StandardCharsets;\r\nimport java.nio.file.Files;\r\nimport java.nio.file.Paths;\r\nimport java.security.MessageDigest;\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.time.LocalTime;\r\nimport java.time.ZoneId;\r\nimport java.time.format.DateTimeFormatter;\r\nimport java.util.*;\r\nimport java.util.stream.Collectors;\r\n\r\nimport static cn.hutool.core.convert.Convert.toHex;\r\n\r\n/**\r\n * 瀹氭椂浠诲姟璋冨害娴嬭瘯\r\n *\r\n * @author ruoyi\r\n */\r\n@Slf4j\r\n@Component(\"ryTask\")\r\npublic class RyTask {\r\n    @Autowired\r\n    private IServiceThirdDataService iServiceThirdDataService;\r\n\r\n    @Autowired\r\n    private IServiceOutPathService iServiceOutPathService;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskAnswerService serviceSubtaskAnswerService;\r\n\r\n    @Autowired\r\n    private IPatMedInhospService iPatMedInhospService;\r\n\r\n    @Autowired\r\n    private IPatMedOuthospService iPatMedOuthospService;\r\n\r\n    @Autowired\r\n    private IPatMedOperationService iPatMedOperationService;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskService iServiceSubtaskService;\r\n\r\n    @Autowired\r\n    private IServicePatientTempService iServicePatientTempService;\r\n\r\n    @Autowired\r\n    private IHNGatherPatArchiveService ihnGatherPatArchiveService;\r\n\r\n    @Autowired\r\n    private SysUserImportMapper sysUserImportMapper;\r\n\r\n    @Autowired\r\n    private HeLibraryMapper heLibraryMapper;\r\n\r\n    @Autowired\r\n    private ICollectHISService ichService;\r\n\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n\r\n    @Value(\"${localIP}\")\r\n    private String localIP;\r\n\r\n    @Value(\"${xhsmsPath}\")\r\n    private String xhsmsPath;\r\n\r\n    @Value(\"${xhsmsAccount}\")\r\n    private String xhsmsAccount;\r\n\r\n    @Value(\"${xhsmsPwd}\")\r\n    private String xhsmsPwd;\r\n\r\n    @Value(\"${pub_key}\")\r\n    private String pub_key;\r\n\r\n    @Value(\"${req_path}\")\r\n    private String req_path;\r\n\r\n    @Value(\"${visitHosp}\")\r\n    private Integer visitHosp;\r\n\r\n    @Autowired\r\n    private ServiceTaskMapper serviceTaskMapper;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskRecordService serviceSubtaskRecordService;\r\n\r\n    @Autowired\r\n    IBaseSmsaccountService baseSmsaccountService;\r\n\r\n    @Autowired\r\n    IPatArchiveService patArchiveService;\r\n\r\n\r\n    @Autowired\r\n    IPatMedOuthospService patMedOuthospService;\r\n\r\n    @Autowired\r\n    ISvyTaskTemplateService svyTaskTemplateService;\r\n\r\n    @Autowired\r\n    IIvrTaskTemplateService iIvrTaskTemplateService;\r\n\r\n    @Autowired\r\n    IXHGatherPatArchiveService ixhGatherPatArchiveService;\r\n\r\n    @Autowired\r\n    ICollectHISService icollectHis;\r\n\r\n\r\n    @Value(\"${appid}\")\r\n    private String appid;\r\n\r\n    @Value(\"${server.port}\")\r\n    private String port;\r\n\r\n\r\n    @Value(\"${spring.profiles.active}\")\r\n    private String active;\r\n\r\n    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {\r\n        System.out.println(StringUtils.format(\"鎵ц澶氬弬鏂规硶锛� 瀛楃涓茬被鍨媨}锛屽竷灏旂被鍨媨}锛岄暱鏁村瀷{}锛屾诞鐐瑰瀷{}锛屾暣褰}\", s, b, l, d, i));\r\n    }\r\n\r\n    public void ryParams(String params) {\r\n        System.out.println(\"鎵ц鏈夊弬鏂规硶锛歕" + params);\r\n    }\r\n\r\n    public void ryNoParams() {\r\n        System.out.println(\"鎵ц鏃犲弬鏂规硶\");\r\n    }\r\n\r\n    public void importData() {\r\n        String filePath = \"C:\\\\Users\\\\86176\\\\Desktop\\\\鏂板缓鏂囨湰鏂囨。 4.txt\"; // 鏇挎崲涓轰綘鐨勬枃浠惰矾寰刓r\n\r\n        try {\r\n            // 璇诲彇鏂囦欢鍐呭\r\n            String jsonContent = new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);\r\n\r\n            // 鍒涘缓ObjectMapper瀵硅薄\r\n            ObjectMapper objectMapper = new ObjectMapper();\r\n            // 瑙f瀽JSON涓篔sonNode\r\n            JsonNode rootNode = objectMapper.readTree(jsonContent);\r\n            // 鑾峰彇resultList\r\n            JsonNode resultListNode = rootNode.path(\"results\").path(\"resultList\");\r\n            // 閬嶅巻resultList涓殑姣忎釜瀵硅薄\r\n            for (JsonNode item : resultListNode) {\r\n\r\n                SysUserImport person = objectMapper.treeToValue(item, SysUserImport.class);\r\n                person.setStaffPhoto(\"\");\r\n                sysUserImportMapper.insertSysUserImport(person);\r\n\r\n            }\r\n\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n    }\r\n\r\n    public void analysisData() {\r\n        System.out.println(\"---------------------------\");\r\n        //鏁版嵁瑙f瀽\r\n        ServiceThirdData serviceThirdData = new ServiceThirdData();\r\n        serviceThirdData.setDataType(\"ADT^A03\");\r\n        serviceThirdData.setIsDeal(0);\r\n        serviceThirdData.setCreateTime(new Date());\r\n        iServiceThirdDataService.queryList(serviceThirdData);\r\n\r\n    }\r\n\r\n    /**\r\n     * 瀹氭椂澶勭悊澶栭摼鐨勬暟鎹甛r\n     */\r\n    public void runServiceSubTaskAnswer() {\r\n        serviceSubtaskAnswerService.saveQuestionAnswer(null, 0L);\r\n    }\r\n\r\n\r\n    /**\r\n     * 澶勭悊HIS鏁版嵁閲囬泦\r\n     * 瀹氭椂浠诲姟锛氶噰闆嗘偅鑰呬俊鎭�佸嚭闄€�侀棬璇婃暟鎹甛r\n     */\r\n    public void dealHisData() {\r\n        log.info(\"銆恉ealHisData銆戝紑濮嬫墽琛孒IS鏁版嵁閲囬泦浠诲姟\");\r\n        // 鑾峰彇鏄ㄥぉ0鐐瑰埌浠婂ぉ0鐐圭殑鏃堕棿鑼冨洿\r\n        LocalDateTime todayZero = LocalDateTime.now().with(LocalTime.MIN);\r\n        LocalDateTime yesterdayZero = todayZero.minusDays(1);\r\n        log.info(\"銆恉ealHisData銆戦噰闆嗘椂闂磋寖鍥达細{} ~ {}\", yesterdayZero, todayZero);\r\n\r\n        if (active.trim().equals(\"xh\")) {\r\n            try {\r\n                // 閲囬泦鍏ラ櫌鏁版嵁\r\n                log.info(\"銆恉ealHisData銆戞柊鍗庡紑濮嬮噰闆嗗叆闄㈡暟鎹甛");\r\n                ixhGatherPatArchiveService.getInHospDataGather(\"0\", yesterdayZero, todayZero);\r\n                log.info(\"銆恉ealHisData銆戞柊鍗庡叆闄㈡暟鎹噰闆嗗畬鎴怽");\r\n\r\n                // 閲囬泦鍑洪櫌鏁版嵁\r\n                log.info(\"銆恉ealHisData銆戞柊鍗庡紑濮嬮噰闆嗗嚭闄㈡暟鎹甛");\r\n                ixhGatherPatArchiveService.getInHospDataGather(\"1\", yesterdayZero, todayZero);\r\n                log.info(\"銆恉ealHisData銆戞柊鍗庡嚭闄㈡暟鎹噰闆嗗畬鎴怽");\r\n\r\n            } catch (Exception e) {\r\n                log.error(\"銆恉ealHisData銆戞柊鍗庢暟鎹噰闆嗗紓甯竆", e);\r\n            }\r\n        } else if (active.trim().equals(\"hn\")) {\r\n            try {\r\n                // 娌冲崡鏁版嵁閲囬泦\r\n                HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();\r\n                log.info(\"銆恉ealHisData銆戞渤鍗楀紑濮嬮噰闆嗘暟鎹甛");\r\n                ihnGatherPatArchiveService.hnDataGather(hnDataGatherVO);\r\n                log.info(\"銆恉ealHisData銆戞渤鍗楃粨鏉熼噰闆嗘暟鎹甛");\r\n            } catch (Exception e) {\r\n                log.error(\"銆恉ealHisData銆戞渤鍗楁暟鎹噰闆嗗紓甯竆", e);\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 杩欎釜鍙槸鏂板崕涓存椂浣跨敤锛屽钩鏃剁敤涓嶅埌\r\n     */\r\n    public void dealHisData2() {\r\n        //灏嗘偅鑰呬俊鎭�佸嚭鍏ラ櫌鏁版嵁鍏ㄩ儴閲囬泦\r\n        // 鎸囧畾鐨勫紑濮嬫棩鏈焅r\n        LocalDate endDate = LocalDate.of(2025, 3, 3);\r\n        // 褰撳墠鏃ユ湡\r\n        LocalDate currentDate = LocalDate.now();\r\n        // 瀹氫箟鏃ユ湡鏍煎紡\r\n        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(\"yyyy-MM-dd \");\r\n\r\n        // 浠庡紑濮嬫棩鏈熷埌褰撳墠鏃ユ湡閫愬ぉ鎵撳嵃\r\n        for (LocalDate date = endDate; !date.isAfter(currentDate); date = date.plusDays(1)) {\r\n            System.out.println(date.format(formatter));\r\n            ixhGatherPatArchiveService.getInHospDataGather(\"0\", date.minusDays(1).atStartOfDay(), date.atStartOfDay());\r\n            ixhGatherPatArchiveService.getInHospDataGather(\"1\", date.minusDays(1).atStartOfDay(), date.atStartOfDay());\r\n        }\r\n\r\n    }\r\n\r\n    /**\r\n     * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃\r\n     */\r\n    public void dealOutHospInfo() {\r\n        if (port.equals(\"8095\")) {\r\n            //鍑洪櫌琛╘r\n            iPatMedInhospService.dealOutHospInfo();\r\n            //闂ㄨ瘖琛╘r\n            if (visitHosp != 1) {\r\n                iPatMedOuthospService.dealOutpatientInfo();\r\n            }\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * 澶勭悊鎵嬫湳淇℃伅锛岃繘鍏ュ瓙浠诲姟琛╘r\n     */\r\n    public void dealOperationInfo() {\r\n        if (port.equals(\"8095\")) iPatMedOperationService.dealOperationInfo();\r\n\r\n    }\r\n\r\n    /**\r\n     * 澶勭悊鎮h�呬俊鎭紝杩涘叆瀛愪换鍔¤〃(寰俊灏忕▼搴�)\r\n     */\r\n    public void dealOutHospInfoXHC() {\r\n        if (port.equals(\"8095\")) {\r\n            PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n            //鑾峰彇鏈鐞嗙殑鏁版嵁\r\n            List<ServicePatientTemp> servicePatientTemps = iServicePatientTempService.selectServicePatientTempList(new ServicePatientTemp());\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * 闀挎湡浠诲姟鎵ц\r\n     */\r\n    public void longTaskSend() {\r\n        //鑾峰彇浠诲姟淇℃伅\r\n        ServiceTask st = new ServiceTask();\r\n        st.setDelFlag(\"0\");\r\n        st.setLongTask(1);\r\n        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);\r\n        log.info(\"銆恖ongTaskSend銆戣幏鍙栧埌{}涓暱鏈熶换鍔", serviceTasks.size());\r\n        for (ServiceTask serviceTask : serviceTasks) {\r\n            CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ();\r\n            commonTaskcallMQ.setTaskid(serviceTask.getTaskid());\r\n            commonTaskcallMQ.setPreachform(serviceTask.getPreachform());\r\n            commonTaskcallMQ.setSendType(\"2\");\r\n            sfHandlle(commonTaskcallMQ, localIP);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鍒ゆ柇鏃ユ湡鏄惁鏄粖澶‐r\n     *\r\n     * @param date\r\n     * @return\r\n     */\r\n    public boolean isDateToday(Date date) {\r\n        if (date == null) {\r\n            return false;\r\n        }\r\n        // 灏� Date 杞负 LocalDate\r\n        LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();\r\n        // 鑾峰彇浠婂ぉ鐨� LocalDate\r\n        LocalDate today = LocalDate.now();\r\n        // 濡傛灉鏃ユ湡鏃╀簬鎴栫瓑浜庝粖澶╋紝杩斿洖 true\r\n        return !localDate.isAfter(today);\r\n    }\r\n\r\n    public void sfHandlle(CommonTaskcallMQ commonTaskcallMQ, String ip) {\r\n        log.info(\"銆恠fHandlle銆戝紑濮嬪鐞嗕换鍔★紝浠诲姟ID锛歿}\", commonTaskcallMQ.getTaskid());\r\n        //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜哱r\n        ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());\r\n\r\n        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {\r\n            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖\r\n            String[] split = commonTaskcallMQ.getPreachform().split(\",\");\r\n            log.info(\"銆恠fHandlle銆戜换鍔″彂閫佹柟寮忥細{}\", Arrays.toString(split));\r\n            for (String serviceFrom : split) {\r\n                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));\r\n                //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭痋r\n                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();\r\n                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());\r\n                ivrTaskcall.setSendstate(2L);\r\n                List<ServiceSubtask> subtaskList = iServiceSubtaskService.selectServiceSubtaskList(ivrTaskcall);\r\n                //涓芥按鏈夌殑鍖婚櫌杩樻病娉曞仛闀挎湡浠诲姟闅忚\r\n                List<ServiceSubtask> subtaskList2 = new ArrayList<>();\r\n                if (visitHosp == 2) {\r\n                    try {\r\n                        for (ServiceSubtask serviceSubtask : subtaskList) {\r\n                            Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid());\r\n\r\n                            if (b) subtaskList2.add(serviceSubtask);\r\n                        }\r\n                    } catch (Exception e) {\r\n                        log.error(\"-------闀挎湡浠诲姟寮傚父涓猴細\", e);\r\n                        continue;\r\n                    }\r\n//                    for (ServiceSubtask serviceSubtask : subtaskList) {\r\n//                        Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid());\r\n//\r\n//                        if (b) subtaskList2.add(serviceSubtask);\r\n//                    }\r\n                    subtaskList = subtaskList2;\r\n                }\r\n\r\n                // 鎸夌収 endtime 绂诲綋鍓嶆椂闂存渶杩戠殑鎺掑簭\r\n                List<ServiceSubtask> selectServiceSubtaskList = subtaskList.stream().sorted(Comparator.comparing(subtask -> Math.abs(subtask.getEndtime().getTime() - new Date().getTime()))).collect(Collectors.toList());\r\n\r\n                if (descByCode.equals(\"鐢佃瘽\")) {\r\n                    String value = \"\";\r\n                    List<String> list = new ArrayList<>();\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        ServiceTask ivrTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                        if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {\r\n                            //濡備綍浠诲姟琚玕"鏆傚仠\"鎴朶"缁堟\"\r\n                            break;\r\n                        }\r\n                        if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {\r\n                            serviceSubtask.setRemark(\"鎵嬫満鍙蜂负绌篭");\r\n                            serviceSubtask.setSendstate(4L);\r\n                            serviceSubtask.setResult(\"error\");\r\n//                            serviceSubtask.setFinishtime(new Date());\r\n                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n                            continue;\r\n                        }\r\n                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());\r\n                        //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝   displayNo涓嶇煡閬撴�庝箞閰嶇疆)\r\n                        if (dateToday) {\r\n                            list.add(serviceSubtask.getId().toString());\r\n                            //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓媆r\n                            String uuid = UUID.randomUUID().toString();\r\n                            serviceSubtask.setResult(\"success\");\r\n                            serviceSubtask.setRemark(\"闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔焅");\r\n                            serviceSubtask.setGuid(uuid);\r\n                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                            //浠诲姟鍙戦�佽褰昞r\n                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                            serviceSubtaskRecord.setUuid(uuid);\r\n                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                            serviceSubtaskRecord.setPreachform(\"3\");\r\n                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                            serviceSubtaskRecord.setRemark(\"闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔焅");\r\n                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n\r\n                        }\r\n                    }\r\n                    //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑\r\n                    if (list.size() > 0) {\r\n//                        redisCache.setCacheListLeft(\"cache-0\", list);\r\n                        redisCache.setCacheListLeftAndDistinct(\"cache-0\", list);\r\n                        log.info(\"銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}\", list.size());\r\n                    }\r\n                } else if (descByCode.equals(\"澶氬獟浣揬")) {\r\n                    //澶氬獟浣揬r\n                } else if (descByCode.equals(\"绾歌川\")) {\r\n                    //绾歌川\r\n                } else if (descByCode.equals(\"寰俊灏忕▼搴廫")) {\r\n                    //寰俊灏忕▼搴廫r\n                    log.info(\"銆恠fHandlle銆戝鐞嗗井淇″皬绋嬪簭浠诲姟锛屼换鍔′俊鎭細{}\", ivrTask1);\r\n                    if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {\r\n                        //璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨刓r\n                        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n                        serviceSubtaskVO.setTaskid(ivrTask1.getTaskid());\r\n                        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n                        //杩欓噷闇�瑕佹牴鎹韩浠借瘉鍘婚噸\r\n                        List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>();\r\n                        aa:\r\n                        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                            for (ServiceSubtask ss : serviceSubtaskListFilter) {\r\n                                if (ss.getSfzh().equals(serviceSubtask.getSfzh())) {\r\n                                    continue aa;\r\n                                }\r\n                            }\r\n                            serviceSubtaskListFilter.add(serviceSubtask);\r\n                        }\r\n                        for (ServiceSubtask serviceSubtask : serviceSubtaskListFilter) {\r\n                            //灏嗗瓙浠诲姟ID鍒犻櫎 銆乻endstate鏀规垚3\r\n                            serviceSubtask.setSendstate(3L);\r\n                            serviceSubtask.setId(null);\r\n                            serviceSubtask.setFinishtime(null);\r\n                            serviceSubtask.setCreateTime(new Date());\r\n                            serviceSubtask.setUpdateTime(new Date());\r\n                            //澶勭悊閲嶅鏂板闂锛屽厛鏌ヤ竴涓嬩粖澶╂槸涓嶆槸鏈夋柊澧炶繃锛屾柊澧炶繃灏变笉鏂板浜哱r\n                            ServiceSubtaskVO ssvo = new ServiceSubtaskVO();\r\n                            LocalDate today = LocalDate.now();\r\n                            LocalTime startOfDay = LocalTime.of(0, 0, 0);\r\n                            LocalTime endOfDay = LocalTime.of(23, 59, 59);\r\n                            Date startOfDayDate = Date.from(today.atTime(startOfDay).atZone(ZoneId.systemDefault()).toInstant());\r\n                            Date endOfDayDate = Date.from(today.atTime(endOfDay).atZone(ZoneId.systemDefault()).toInstant());\r\n                            ssvo.setCreateStartTime(startOfDayDate);\r\n                            ssvo.setCreateEndTime(endOfDayDate);\r\n                            ssvo.setCreateBy(serviceSubtask.getCreateBy());\r\n                            ssvo.setSendname(serviceSubtask.getSendname());\r\n                            ssvo.setSfzh(serviceSubtask.getSfzh());\r\n                            List<ServiceSubtask> serviceSubtaskListByCreateTime = serviceSubtaskMapper.selectServiceSubtaskListByCreateTime(ssvo);\r\n                            if (CollectionUtils.isEmpty(serviceSubtaskListByCreateTime))\r\n                                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n                        }\r\n                    }\r\n                } else if (descByCode.equals(\"鐭俊\")) {\r\n                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        log.info(\"銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}\", serviceSubtask.getPatid());\r\n                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());\r\n                        if (dateToday) {\r\n                            try {\r\n                                //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦�乗r\n                                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());\r\n                                if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == \"1\") {\r\n                                    //涓嶉渶瑕佸彂閫乗r\n                                    serviceSubtask.setResult(\"error\");\r\n                                    serviceSubtask.setRemark(patArchive.getNotrequiredreason());\r\n                                    serviceSubtask.setSendstate(4L);\r\n                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);\r\n                                    continue;\r\n                                }\r\n                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);\r\n                                String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);\r\n                                SendMagParam sendMagParam = new SendMagParam();\r\n                                sendMagParam.setType(\"4\");\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setParam3(ivrTask1.getTaskName());\r\n                                serviceOutPath.setParam6(subId);\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                //鍏堝垽鏂竴涓嬪彂鐨勬槸涓嶆槸瀹f暀\r\n                                if (!\"3\".equals(serviceSubtask.getType())) {\r\n                                    sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                    sendMagParam.setUrl(ip + \":\" + req_path + \"/wt?p=\" + format);\r\n                                    sendMagParam.setContent(\"銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"濉啓銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                } else {\r\n                                    HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());\r\n                                    if (\"2\".equals(heLibrary.getHetype())) {\r\n                                        sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                        sendMagParam.setContent(heLibrary.getPreachcontent());\r\n                                    }\r\n                                }\r\n                                String isSuccess = null;\r\n                                if (visitHosp == 1) {\r\n                                    Map<String, String> req = new HashMap<>();\r\n                                    req.put(\"phone\", sendMagParam.getPhone());\r\n                                    req.put(\"content\", sendMagParam.getContent());\r\n                                    isSuccess = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));\r\n                                } else if (visitHosp == 2) {\r\n                                    String url = configService.selectConfigByKey(\"token.360\",serviceSubtask.getOrgid());\r\n                                    //涓芥按鐨勭煭淇″彂閫佹柟寮廫r\n                                    Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());\r\n                                    String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(),url);\r\n                                    if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get(\"address\"))) {\r\n                                        ServiceSubtask ss = new ServiceSubtask();\r\n                                        ss.setResult(\"error\");\r\n                                        ss.setRemark(\"鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�\");\r\n                                        ss.setSendstate(5L);\r\n                                        ss.setId(serviceSubtask.getId());\r\n//                                        ss.setFinishtime(new Date());\r\n                                        serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                        continue;\r\n                                    }\r\n                                    log.info(\"銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}\", map.get(\"address\"), sendMagParam, serviceSubtask.getOrgid());\r\n                                    String dxCode = getDXCode(map.get(\"address\"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get(\"sendPersonId\"), map.get(\"sendPersonName\"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);\r\n                                    log.info(\"銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}\", dxCode);\r\n                                    ObjectMapper objectMapper = new ObjectMapper();\r\n                                    Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);\r\n                                    String code = textParam.get(\"Code\").toString();\r\n                                    if (code.equals(\"0\")) {\r\n                                        isSuccess = \"true\";\r\n                                    }\r\n                                }else if (visitHosp == 3) {//甯備竴鍖婚櫌\r\n                                    String content=sendMagParam.getContent().replace(\"銆愭柊鍗庡尰闄€�慭",\"\");\r\n                                    smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,sendMagParam.getPhone(),content);\r\n                                }\r\n                                //浠诲姟鍙戦�佽褰昞r\n                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                                serviceSubtaskRecord.setPreachform(\"4\");\r\n                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                                serviceSubtaskRecord.setResult(\"success\");\r\n                                if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals(\"true\"))\r\n                                    serviceSubtaskRecord.setResult(\"error\");\r\n                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n\r\n                                //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬乗r\n                                serviceSubtask.setSendstate(3L);\r\n                                if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals(\"true\")) {\r\n                                    serviceSubtask.setResult(\"success\");\r\n                                    serviceSubtask.setRemark(\"鐭俊鍙戦�佹垚鍔焅");\r\n                                } else {\r\n                                    serviceSubtask.setResult(\"error\");\r\n                                    serviceSubtask.setSendstate(5L);\r\n                                    serviceSubtask.setRemark(\"鐭俊鍙戦�佸け璐");\r\n                                }\r\n                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);\r\n                            } catch (Exception e) {\r\n                                String guid = UUID.randomUUID().toString();\r\n                                log.error(\"銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}\", e.getMessage(), guid);\r\n                                serviceSubtask.setResult(\"error\");\r\n                                serviceSubtask.setRemark(\"绯荤粺閿欒\");\r\n                                serviceSubtask.setSendstate(5L);\r\n                                serviceSubtask.setGuid(guid);\r\n                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);\r\n                            }\r\n                        }\r\n                    }\r\n                } else if (descByCode.equals(\"鍏紬鍙穃")) {\r\n                    log.info(\"銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}\", ivrTask1);\r\n                    //鍏紬鍙穃r\n                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());\r\n                        if (dateToday) {\r\n                            try {\r\n                                //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦�乗r\n                                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());\r\n                                if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == \"1\") {\r\n                                    //涓嶉渶瑕佸彂閫乗r\n                                    serviceSubtask.setResult(\"error\");\r\n                                    serviceSubtask.setRemark(patArchive.getNotrequiredreason());\r\n                                    serviceSubtask.setSendstate(4L);\r\n                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);\r\n                                    continue;\r\n                                }\r\n                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);\r\n                                String url = null;\r\n                                url = ip + \":\" + req_path + \"/outsideChainwt?param1=\" + taskId + \"&param2=\" + patid + \"&param3=\" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + \"&param5=false\";\r\n\r\n                                //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D\r\n                                List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());\r\n                                if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {\r\n                                    ServiceSubtask ss = new ServiceSubtask();\r\n                                    ss.setResult(\"error\");\r\n                                    ss.setRemark(\"璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫乗");\r\n                                    ss.setSendstate(5L);\r\n                                    ss.setId(serviceSubtask.getId());\r\n                                    serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                    continue;\r\n                                }\r\n\r\n                                if (StringUtils.isEmpty(patArchive.getPatidHis())) {\r\n                                    ServiceSubtask ss = new ServiceSubtask();\r\n                                    ss.setResult(\"error\");\r\n                                    ss.setRemark(\"鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖\");\r\n                                    ss.setSendstate(5L);\r\n                                    ss.setId(serviceSubtask.getId());\r\n                                    serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                    continue;\r\n                                }\r\n                                String wxCode = \"\";\r\n                                if (visitHosp == 3) {//甯備竴鍖婚櫌\r\n                                    String urlTemp=\"http://192.200.54.14:5003/sfjk/SendMessage?sfzh=\"+serviceSubtask.getSfzh()\r\n                                            +\"&title=鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑诲~鍐欍��&content=鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑诲~鍐欍��&phone=\"+patArchive.getTelcode()\r\n                                            +\"&url=\"+url+\"&key=ff76f8904f5f32b5ee1739e8ea46e60g\";\r\n                                    HttpUtils.sendGet(urlTemp);\r\n                                }else{\r\n                                    wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx);\r\n                                }\r\n                                Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);\r\n                                //浠诲姟鍙戦�佽褰昞r\n                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                                serviceSubtaskRecord.setPreachform(\"4\");\r\n                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                                serviceSubtaskRecord.setResult(\"success\");\r\n                                if (!map.isEmpty() && (Boolean) map.get(\"succ\") == false)\r\n                                    serviceSubtaskRecord.setResult(\"error\");\r\n                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n\r\n                                //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬乗r\n                                serviceSubtask.setSendstate(3L);\r\n                                if ((Boolean) map.get(\"succ\") == true) {\r\n                                    serviceSubtask.setResult(\"success\");\r\n                                } else {\r\n                                    log.error(\"銆恠fHandlle銆戝叕浼楀彿鍙戦�佸け璐ワ紝鎮h�呬俊鎭細{}锛岄敊璇俊鎭細{}\", serviceSubtask, map.get(\"msg\"));\r\n                                    serviceSubtask.setResult(\"error\");\r\n                                    serviceSubtask.setSendstate(5L);\r\n                                    serviceSubtask.setRemark(map.get(\"msg\").toString());\r\n                                }\r\n                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);\r\n                            } catch (Exception e) {\r\n                                String guid = UUID.randomUUID().toString();\r\n                                log.error(\"銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}\", e.getMessage(), guid);\r\n                                serviceSubtask.setResult(\"error\");\r\n                                serviceSubtask.setRemark(\"绯荤粺閿欒\");\r\n                                serviceSubtask.setSendstate(5L);\r\n                                serviceSubtask.setGuid(guid);\r\n                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛塡r\n            }\r\n        }\r\n    }\r\n\r\n    private String getKey() {\r\n        Map<String, String> map = new HashMap<>();\r\n        for (int i = 0; i < 6; i++) {\r\n            Boolean aBoolean = redisCache.hasKey(\"cache-\" + i);\r\n            if (!aBoolean) {\r\n                redisCache.setCacheObject(\"cache-\" + i, \"\");\r\n                map.put(\"cache-\" + i, \"\");\r\n            } else {\r\n                map.put(\"cache-\" + i, redisCache.getCacheObject(\"cache-\" + i));\r\n            }\r\n        }\r\n\r\n        String key = null;\r\n        String value = \"\";\r\n        for (Map.Entry<String, String> entry : map.entrySet()) {\r\n            if (StringUtils.isEmpty(value)) {\r\n                value = entry.getValue();\r\n                key = entry.getKey();\r\n            } else {\r\n                if (entry.getValue().split(\",\").length < value.split(\",\").length) {\r\n                    value = entry.getValue();\r\n                    key = entry.getKey();\r\n                }\r\n            }\r\n        }\r\n        return key;\r\n    }\r\n\r\n    private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) {\r\n        Map<String, Object> map = new LinkedHashMap<>();\r\n\r\n        Map<String, Object> YeWuXX = new LinkedHashMap<>();\r\n        Map<String, Object> DuanXinXX = new LinkedHashMap<>();\r\n        DuanXinXX.put(\"ShouJiHM\", ShouJiHM);\r\n        DuanXinXX.put(\"FaSongNR\", FaSongNR);\r\n        DuanXinXX.put(\"FaSongRID\", FaSongRID);\r\n        DuanXinXX.put(\"FaSongRXM\", FaSongRXM);\r\n        YeWuXX.put(\"DuanXinXX\", DuanXinXX);\r\n\r\n        map.put(\"XiaoXiTou\", headerMap);\r\n        map.put(\"YeWuXX\", YeWuXX);\r\n\r\n        String body = new Gson().toJson(map);\r\n\r\n//        String result = HttpUtils.sendPost(address, body);\r\n        String result = null;\r\n        try {\r\n            result = OkHttpExample.sendPostRequest(address, body, token);\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n        log.info(\"銆恎etDXCode銆戠煭淇″彂閫佺粨鏋滐細{}\", result);\r\n\r\n        JSONObject jsonObject = JSONObject.parseObject(result);\r\n        String code = (String) jsonObject.toString();\r\n        return code;\r\n    }\r\n\r\n\r\n    private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String setPatientname, String setPatientid, List<String> wxqqxx) {\r\n        XinHuaWXReq xinHuaWXReq = new XinHuaWXReq();\r\n        xinHuaWXReq.setIdcard(idcard);\r\n        xinHuaWXReq.setUrl(url);\r\n        xinHuaWXReq.setPatientid(setPatientid);\r\n        xinHuaWXReq.setPatientname(setPatientname);\r\n        xinHuaWXReq.setMobile(phone);\r\n        xinHuaWXReq.setMedcardno(null);\r\n        xinHuaWXReq.setTitlename(taskName);\r\n        xinHuaWXReq.setContent(taskDesc);\r\n        xinHuaWXReq.setAppid(wxqqxx.get(1));\r\n        log.info(\"銆恎etWXCode銆戝井淇″叕浼楀彿璇锋眰鍙傛暟锛歿}\", xinHuaWXReq);\r\n        String body = new Gson().toJson(xinHuaWXReq);\r\n        String encode = encode(wxqqxx.get(2).concat(body));\r\n        Map<String, String> headerMap = new HashMap<>();\r\n        headerMap.put(\"sign\", encode);\r\n        String result = HttpUtils.sendPostByHeader(wxqqxx.get(3), body, headerMap);\r\n\r\n        JSONObject jsonObject = JSONObject.parseObject(result);\r\n        String code = (String) jsonObject.toString();\r\n        return code;\r\n    }\r\n\r\n\r\n    public String encode(String arg) {\r\n        if (arg == null) {\r\n            arg = \"\";\r\n        }\r\n        MessageDigest md5 = null;\r\n        try {\r\n            md5 = MessageDigest.getInstance(\"MD5\");\r\n            md5.update(arg.getBytes(\"UTF-8\"));\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n        return toHex(md5.digest());\r\n    }\r\n\r\n    public void collectHIS() {\r\n        try {\r\n            // HIS鏁版嵁閲囬泦\r\n            log.info(\"銆恉ealHisData銆慔IS寮�濮嬮噰闆嗘暟鎹甛");\r\n            ichService.sync();\r\n            log.info(\"銆恉ealHisData銆慔IS缁撴潫閲囬泦鏁版嵁\");\r\n        } catch (Exception e) {\r\n            log.error(\"銆恉ealHisData銆慔IS鏁版嵁閲囬泦寮傚父\", e);\r\n        }\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java	(date 1759129823472)
-@@ -5,9 +5,9 @@
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.google.gson.Gson;
- import com.ruoyi.common.core.redis.RedisCache;
-+import com.ruoyi.common.dx.MessageSend;
- import com.ruoyi.common.enums.MsgLSEnum;
- import com.ruoyi.common.enums.ServiceFromEnum;
--import com.ruoyi.common.enums.VisitSendStateEnum;
- import com.ruoyi.common.enums.WxGZHEnum;
- import com.ruoyi.common.utils.HttpUtil;
- import com.ruoyi.common.utils.OkHttpExample;
-@@ -19,10 +19,7 @@
- import com.ruoyi.system.service.ISysConfigService;
- import com.smartor.common.LSHospTokenUtil;
- import com.smartor.domain.*;
--import com.smartor.mapper.HeLibraryMapper;
--import com.smartor.mapper.ServiceSubtaskMapper;
--import com.smartor.mapper.ServiceTaskMapper;
--import com.smartor.mapper.SysUserImportMapper;
-+import com.smartor.mapper.*;
- import com.smartor.service.*;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.collections4.CollectionUtils;
-@@ -82,6 +79,9 @@
-     @Autowired
-     private IHNGatherPatArchiveService ihnGatherPatArchiveService;
- 
-+    @Autowired
-+    private IServiceSLTDHealthcareRecordService serviceSLTDHealthcareRecordService;
-+
-     @Autowired
-     private SysUserImportMapper sysUserImportMapper;
- 
-@@ -94,7 +94,6 @@
-     @Autowired
-     private ISysConfigService configService;
- 
--
-     @Value("${localIP}")
-     private String localIP;
- 
-@@ -147,6 +146,9 @@
-     @Autowired
-     IXHGatherPatArchiveService ixhGatherPatArchiveService;
- 
-+    @Autowired
-+    ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
-+
-     @Autowired
-     ICollectHISService icollectHis;
- 
-@@ -251,11 +253,60 @@
-                 // 娌冲崡鏁版嵁閲囬泦
-                 HnDataGatherVO hnDataGatherVO = new HnDataGatherVO();
-                 log.info("銆恉ealHisData銆戞渤鍗楀紑濮嬮噰闆嗘暟鎹�");
-+                Date startTime = Date.from(yesterdayZero.atZone(ZoneId.systemDefault()).toInstant());
-+                Date endTime = Date.from(todayZero.atZone(ZoneId.systemDefault()).toInstant());
-+
-+                hnDataGatherVO.setStartTime(startTime);
-+                hnDataGatherVO.setEndTime(endTime);
-                 ihnGatherPatArchiveService.hnDataGather(hnDataGatherVO);
-                 log.info("銆恉ealHisData銆戞渤鍗楃粨鏉熼噰闆嗘暟鎹�");
-             } catch (Exception e) {
-                 log.error("銆恉ealHisData銆戞渤鍗楁暟鎹噰闆嗗紓甯�", e);
-             }
-+        } else if (active.trim().equals("sltd")) {
-+            try {
-+                // 鐪佺珛鍚屽痉鏁版嵁閲囬泦
-+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃叆闄⑩�濆紑濮嬮噰闆嗘暟鎹�");
-+                String yesterday = LocalDate.now().minusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-+                ServiceSLTDInhospReqVO serviceSLTDInhospReqVO = new ServiceSLTDInhospReqVO();
-+                serviceSLTDInhospReqVO.setOrgId("20001001");
-+                serviceSLTDInhospReqVO.setCampusId(30001002L);
-+                serviceSLTDInhospReqVO.setStartHeadTime(yesterday);
-+                serviceSLTDInhospReqVO.setStartTailTime(yesterday);
-+                List<String> list = new ArrayList<>();
-+                list.add("FH0108.02");
-+                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list);
-+                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
-+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃叆闄⑩�濈祼鏉熼噰闆嗘暟鎹�");
-+
-+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滈棬鎬ヨ瘖鈥濆紑濮嬮噰闆嗘暟鎹�");
-+                serviceSLTDInhospReqVO.setStartHeadTime(null);
-+                serviceSLTDInhospReqVO.setStartTailTime(null);
-+                serviceSLTDInhospReqVO.setEncounterTimeStart(yesterday);
-+                serviceSLTDInhospReqVO.setEncounterTimeEnd(yesterday);
-+                List<String> list1 = new ArrayList<>();
-+                list1.add("FH0108.01");
-+                list1.add("FH0108.03");
-+                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list1);
-+                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
-+                log.info("銆恉ealHisData銆戞渤鍗楃粨鈥滈棬鎬ヨ瘖鈥濇潫閲囬泦鏁版嵁");
-+
-+                log.info("銆恉ealHisData銆戠渷绔嬪悓寰封�滃嚭闄⑩�濆紑濮嬮噰闆嗘暟鎹�");
-+                serviceSLTDInhospReqVO.setStartHeadTime(null);
-+                serviceSLTDInhospReqVO.setStartTailTime(null);
-+                serviceSLTDInhospReqVO.setEncounterTimeStart(null);
-+                serviceSLTDInhospReqVO.setEncounterTimeEnd(null);
-+                serviceSLTDInhospReqVO.setPreOutHospitalHeadDate(yesterday);
-+                serviceSLTDInhospReqVO.setPreOutHospitalTailDate(yesterday);
-+                List<String> list2 = new ArrayList<>();
-+                list2.add("FH0108.02");
-+                serviceSLTDInhospReqVO.setHealthcareRecordTypeList(list2);
-+                serviceSLTDHealthcareRecordService.queryHealthcareRecordList(serviceSLTDInhospReqVO);
-+                log.info("銆恉ealHisData銆戞渤鍗楃粨鈥滃嚭闄⑩�濇潫閲囬泦鏁版嵁");
-+
-+            } catch (Exception e) {
-+                log.error("銆恉ealHisData銆戠渷绔嬪悓寰锋暟鎹噰闆嗗紓甯�", e);
-+            }
-         }
-     }
- 
-@@ -330,9 +381,69 @@
-             commonTaskcallMQ.setTaskid(serviceTask.getTaskid());
-             commonTaskcallMQ.setPreachform(serviceTask.getPreachform());
-             commonTaskcallMQ.setSendType("2");
--            sfHandlle(commonTaskcallMQ, localIP);
-+
-+            //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�,骞朵笖闅忚鏃堕棿寰楁槸浠婂ぉ涔嬪墠鐨�
-+            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-+            serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
-+            serviceSubtaskVO.setSendstate(2L);
-+            serviceSubtaskVO.setVisitTime(new Date());
-+            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.queryServiceSubtaskList(serviceSubtaskVO);
-+            for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
-+                sfHandlle(serviceSubtask);
-+            }
-+
-         }
-     }
-+
-+    /**
-+     * 澶勭悊琛ュ伩浠诲姟
-+     */
-+    public void compensateTask() {
-+        //鑾峰彇鍒皊endstate=3 骞朵笖 visit_time涓轰粖澶╃殑subtask
-+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-+        serviceSubtaskVO.setSendstate(3L);
-+        serviceSubtaskVO.setVisitTime(new Date());
-+        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-+        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-+            //鏍规嵁褰撳墠鐨勬墽琛屾柟寮忥紝鑾峰彇涓嬩竴绉嶆墽琛屾柟寮�
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+            serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+            //鑾峰彇褰撳墠鎵ц鏂瑰紡鐨勫簭鍙�
-+            Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
-+            Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst();
-+            if (currentSort.isPresent()) {
-+                //1鍏堟鏌ヤ竴涓嬶紝鏄笉鏄湁鎵ц鐘舵�佹槸瀹屾垚鐨勶紙鎬曚箣鍓嶅凡缁忔湁瀹岀殑浜嗭紝娌℃湁灏唖ervuce_subtask鐨勭姸鎬佹敼鎴愬姛锛岃繖閲屽啀妫�鏌ヤ竴涓嬶級
-+                boolean finishState = serviceSubtaskPreachforms.stream().allMatch(item -> item.getSendstate().equals("9"));
-+                if (finishState) {
-+                    serviceSubtask.setSendstate(6L);
-+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                    continue;
-+                }
-+
-+                //2鍒ゆ柇涓�涓嬶紝褰撳墠鐨剆ort鏄笉鏄瓑浜庨渶瑕佹墽琛岀殑鎬讳釜鏁帮紝濡傛灉绛変簬鐨勮瘽锛岃鏄庢槸鏈�鍚庝竴涓紝鐩存帴灏唖ervuce_subtask鐨勭姸鎬佹敼鎴�5锛屾墽琛屽け璐ュ氨琛屼簡
-+                Long cs = currentSort.get();
-+                if (cs.equals(serviceSubtaskPreachforms.size())) {
-+                    serviceSubtask.setSendstate(5L);
-+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                    //淇敼鍙戦�佹柟寮忕殑鐘舵�佷负澶辫触
-+                    serviceSubtaskPreachform.setSendstate("5");
-+                    serviceSubtaskPreachform.setId(id.get());
-+                    serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform);
-+                    continue;
-+                }
-+
-+                //3.涓嶆槸鏈�鍚庝竴涓紝鑾峰彇鍒颁笅涓�涓墽琛屾柟寮�(鍥犱负閮芥槸鍦ㄤ粖澶╂墽琛岋紝閭e氨鐩存帴鍙戝嚭鍘诲氨瀹屼簡)
-+                sfHandlle(serviceSubtask);
-+
-+            }
-+
-+        }
-+
-+    }
-+
- 
-     /**
-      * 鍒ゆ柇鏃ユ湡鏄惁鏄粖澶�
-@@ -352,374 +463,334 @@
-         return !localDate.isAfter(today);
-     }
- 
--    public void sfHandlle(CommonTaskcallMQ commonTaskcallMQ, String ip) {
--        log.info("銆恠fHandlle銆戝紑濮嬪鐞嗕换鍔★紝浠诲姟ID锛歿}", commonTaskcallMQ.getTaskid());
--        //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
--        ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
--
--        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {
--            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖
--            String[] split = commonTaskcallMQ.getPreachform().split(",");
--            log.info("銆恠fHandlle銆戜换鍔″彂閫佹柟寮忥細{}", Arrays.toString(split));
--            for (String serviceFrom : split) {
--                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
--                //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
--                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();
--                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
--                ivrTaskcall.setSendstate(2L);
--                List<ServiceSubtask> subtaskList = iServiceSubtaskService.selectServiceSubtaskList(ivrTaskcall);
--                //涓芥按鏈夌殑鍖婚櫌杩樻病娉曞仛闀挎湡浠诲姟闅忚
--                List<ServiceSubtask> subtaskList2 = new ArrayList<>();
--                if (visitHosp == 2) {
--                    try {
--                        for (ServiceSubtask serviceSubtask : subtaskList) {
--                            Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid());
--
--                            if (b) subtaskList2.add(serviceSubtask);
--                        }
--                    } catch (Exception e) {
--                        log.error("-------闀挎湡浠诲姟寮傚父涓猴細", e);
--                        continue;
--                    }
--//                    for (ServiceSubtask serviceSubtask : subtaskList) {
--//                        Boolean b = VisitSendStateEnum.getDescByCode(serviceSubtask.getOrgid());
--//
--//                        if (b) subtaskList2.add(serviceSubtask);
--//                    }
--                    subtaskList = subtaskList2;
--                }
-+    public void sfHandlle(ServiceSubtask serviceSubtask) {
-+        //杩欓噷闇�瑕佹牴鎹韩浠借瘉鍘婚噸(缁欏井淇″皬绋嬪簭鐨勫浐瀹氫换鍔$敤鐨�)
-+        List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>();
-+        ServiceTask ivrTask1 = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+        //鑾峰彇鍙戦�佹柟寮�
-+        String sendPreachform = getSendPreachform(serviceSubtaskPreachform, serviceSubtask);
-+        if (sendPreachform.equals("-1") || serviceSubtask.getSendstate() == 6 || serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 4) {
-+            //璇存槑宸茬粡鍏ㄩ儴閬嶅巻瀹屼簡锛屽綋鍓嶇殑鎵ц鏂瑰紡搴忓彿鏄渶鍚庝竴涓簡   鎴栬��  璇ユ偅鑰呭凡缁忛殢璁跨粨鏉燂紙鎴愬姛鎴栧け璐ヤ簡鎴栦笉鎵ц锛�
-+            return;
-+        }
-+        //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
-+        PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
-+        if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
-+            //涓嶉渶瑕佸彂閫�
-+            serviceSubtask.setResult("鎮h�呬笉闇�瑕侀殢璁�");
-+            serviceSubtask.setRemark(patArchive.getNotrequiredreason());
-+            serviceSubtask.setSendstate(4L);
-+            iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
-+            setSuccessPreachForm(serviceSubtask, "-1", "涓嶉渶瑕佹墽琛�", "6");
-+            return;
-+        }
- 
--                // 鎸夌収 endtime 绂诲綋鍓嶆椂闂存渶杩戠殑鎺掑簭
--                List<ServiceSubtask> selectServiceSubtaskList = subtaskList.stream().sorted(Comparator.comparing(subtask -> Math.abs(subtask.getEndtime().getTime() - new Date().getTime()))).collect(Collectors.toList());
--
--                if (descByCode.equals("鐢佃瘽")) {
--                    String value = "";
--                    List<String> list = new ArrayList<>();
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        ServiceTask ivrTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
--                        if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
--                            //濡備綍浠诲姟琚�"鏆傚仠"鎴�"缁堟"
--                            break;
--                        }
--                        if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
--                            serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
--                            serviceSubtask.setSendstate(4L);
--                            serviceSubtask.setResult("error");
--//                            serviceSubtask.setFinishtime(new Date());
--                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--                            continue;
--                        }
--                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
--                        //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝   displayNo涓嶇煡閬撴�庝箞閰嶇疆)
--                        if (dateToday) {
--                            list.add(serviceSubtask.getId().toString());
--                            //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
--                            String uuid = UUID.randomUUID().toString();
--                            serviceSubtask.setResult("success");
--                            serviceSubtask.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�");
--                            serviceSubtask.setGuid(uuid);
--                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--
--                            //浠诲姟鍙戦�佽褰�
--                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                            serviceSubtaskRecord.setUuid(uuid);
--                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                            serviceSubtaskRecord.setPreachform("3");
--                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                            serviceSubtaskRecord.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�");
--                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--
--                        }
--                    }
--                    //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑
--                    if (list.size() > 0) {
--//                        redisCache.setCacheListLeft("cache-0", list);
--                        redisCache.setCacheListLeftAndDistinct("cache-0", list);
--                        log.info("銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}", list.size());
--                    }
--                } else if (descByCode.equals("澶氬獟浣�")) {
--                    //澶氬獟浣�
--                } else if (descByCode.equals("绾歌川")) {
--                    //绾歌川
--                } else if (descByCode.equals("寰俊灏忕▼搴�")) {
--                    //寰俊灏忕▼搴�
--                    log.info("銆恠fHandlle銆戝鐞嗗井淇″皬绋嬪簭浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
--                    if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {
--                        //璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨�
--                        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
--                        serviceSubtaskVO.setTaskid(ivrTask1.getTaskid());
--                        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
--                        //杩欓噷闇�瑕佹牴鎹韩浠借瘉鍘婚噸
--                        List<ServiceSubtask> serviceSubtaskListFilter = new ArrayList<>();
--                        aa:
--                        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
--                            for (ServiceSubtask ss : serviceSubtaskListFilter) {
--                                if (ss.getSfzh().equals(serviceSubtask.getSfzh())) {
--                                    continue aa;
--                                }
--                            }
--                            serviceSubtaskListFilter.add(serviceSubtask);
--                        }
--                        for (ServiceSubtask serviceSubtask : serviceSubtaskListFilter) {
--                            //灏嗗瓙浠诲姟ID鍒犻櫎 銆乻endstate鏀规垚3
--                            serviceSubtask.setSendstate(3L);
--                            serviceSubtask.setId(null);
--                            serviceSubtask.setFinishtime(null);
--                            serviceSubtask.setCreateTime(new Date());
--                            serviceSubtask.setUpdateTime(new Date());
--                            //澶勭悊閲嶅鏂板闂锛屽厛鏌ヤ竴涓嬩粖澶╂槸涓嶆槸鏈夋柊澧炶繃锛屾柊澧炶繃灏变笉鏂板浜�
--                            ServiceSubtaskVO ssvo = new ServiceSubtaskVO();
--                            LocalDate today = LocalDate.now();
--                            LocalTime startOfDay = LocalTime.of(0, 0, 0);
--                            LocalTime endOfDay = LocalTime.of(23, 59, 59);
--                            Date startOfDayDate = Date.from(today.atTime(startOfDay).atZone(ZoneId.systemDefault()).toInstant());
--                            Date endOfDayDate = Date.from(today.atTime(endOfDay).atZone(ZoneId.systemDefault()).toInstant());
--                            ssvo.setCreateStartTime(startOfDayDate);
--                            ssvo.setCreateEndTime(endOfDayDate);
--                            ssvo.setCreateBy(serviceSubtask.getCreateBy());
--                            ssvo.setSendname(serviceSubtask.getSendname());
--                            ssvo.setSfzh(serviceSubtask.getSfzh());
--                            List<ServiceSubtask> serviceSubtaskListByCreateTime = serviceSubtaskMapper.selectServiceSubtaskListByCreateTime(ssvo);
--                            if (CollectionUtils.isEmpty(serviceSubtaskListByCreateTime))
--                                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
--                        }
--                    }
--                } else if (descByCode.equals("鐭俊")) {
--                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
--                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        log.info("銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}", serviceSubtask.getPatid());
--                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
--                        if (dateToday) {
--                            try {
--                                //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
--                                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
--                                if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
--                                    //涓嶉渶瑕佸彂閫�
--                                    serviceSubtask.setResult("error");
--                                    serviceSubtask.setRemark(patArchive.getNotrequiredreason());
--                                    serviceSubtask.setSendstate(4L);
--                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
--                                    continue;
--                                }
--                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
--                                String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
--                                SendMagParam sendMagParam = new SendMagParam();
--                                sendMagParam.setType("4");
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setParam3(ivrTask1.getTaskName());
--                                serviceOutPath.setParam6(subId);
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                //鍏堝垽鏂竴涓嬪彂鐨勬槸涓嶆槸瀹f暀
--                                if (!"3".equals(serviceSubtask.getType())) {
--                                    sendMagParam.setPhone(serviceSubtask.getPhone());
--                                    sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format);
--                                    sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
--                                } else {
--                                    HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
--                                    if ("2".equals(heLibrary.getHetype())) {
--                                        sendMagParam.setPhone(serviceSubtask.getPhone());
--                                        sendMagParam.setContent(heLibrary.getPreachcontent());
--                                    }
--                                }
--                                String isSuccess = null;
--                                if (visitHosp == 1) {
--                                    Map<String, String> req = new HashMap<>();
--                                    req.put("phone", sendMagParam.getPhone());
--                                    req.put("content", sendMagParam.getContent());
--                                    isSuccess = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
--                                } else if (visitHosp == 2) {
--                                    String url = configService.selectConfigByKey("token.360",serviceSubtask.getOrgid());
--                                    //涓芥按鐨勭煭淇″彂閫佹柟寮�
--                                    Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
--                                    String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(),url);
--                                    if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
--                                        ServiceSubtask ss = new ServiceSubtask();
--                                        ss.setResult("error");
--                                        ss.setRemark("鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�");
--                                        ss.setSendstate(5L);
--                                        ss.setId(serviceSubtask.getId());
--//                                        ss.setFinishtime(new Date());
--                                        serviceSubtaskMapper.updateServiceSubtask(ss);
--                                        continue;
--                                    }
--                                    log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}", map.get("address"), sendMagParam, serviceSubtask.getOrgid());
--                                    String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);
--                                    log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}", dxCode);
--                                    ObjectMapper objectMapper = new ObjectMapper();
--                                    Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
--                                    String code = textParam.get("Code").toString();
--                                    if (code.equals("0")) {
--                                        isSuccess = "true";
--                                    }
--                                }else if (visitHosp == 3) {//甯備竴鍖婚櫌
--                                    String content=sendMagParam.getContent().replace("銆愭柊鍗庡尰闄€��","");
--                                    smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,sendMagParam.getPhone(),content);
--                                }
--                                //浠诲姟鍙戦�佽褰�
--                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                                serviceSubtaskRecord.setPreachform("4");
--                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                                serviceSubtaskRecord.setResult("success");
--                                if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true"))
--                                    serviceSubtaskRecord.setResult("error");
--                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+        String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(sendPreachform));
-+        if (descByCode.equals("鐢佃瘽")) {
-+            List<String> list = new ArrayList<>();
-+            ServiceTask ivrTask = serviceTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-+            if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
-+                //濡備綍浠诲姟琚�"鏆傚仠"鎴�"缁堟"
-+                return;
-+            }
-+
-+            if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
-+                setSuccessPreachForm(serviceSubtask, sendPreachform, "鎵嬫満鍙蜂负绌�", "4");
-+                return;
-+            }
-+            boolean dateToday = isDateToday(serviceSubtask.getVisitTime());
-+            //璇存槑鏄珛鍗冲彂閫�(鍏堟妸娑堟伅鏀惧埌cache-0涓紝   displayNo涓嶇煡閬撴�庝箞閰嶇疆)
-+            if (dateToday) {
-+                list.add(serviceSubtask.getId().toString());
-+                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                setSuccessPreachForm(serviceSubtask, sendPreachform, "闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�", "2");
-+                //浠诲姟鍙戦�佽褰�
-+                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                serviceSubtaskRecord.setPreachform("3");
-+                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                serviceSubtaskRecord.setRemark("闀挎湡浠诲姟锛岀數璇濊繘鍏ラ槦鍒楁垚鍔�");
-+                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+            }
-+            //灏嗚鎵ц鐨勬斁鍒扮紦瀛樹腑
-+            if (list.size() > 0) {
-+                redisCache.setCacheListLeftAndDistinct("cache-0", list);
-+                log.info("銆恠fHandlle銆戠數璇濅换鍔″凡鍔犲叆闃熷垪锛屾暟閲忥細{}", list.size());
-+            }
-+        } else if (descByCode.equals("寰俊灏忕▼搴�")) {
-+            //寰俊灏忕▼搴�
-+            if (ObjectUtils.isNotEmpty(ivrTask1) && ivrTask1.getPatCycle() == 1) {
-+                //璇存槑璇ヤ换鍔$殑鎮h�呮槸寰幆鎵ц鐨�
-+                //鍒ゆ柇鎮h�呰繃婊ら泦鍚堜腑锛屾槸鍚﹀瓨鍦ㄥ綋鍓嶆墽琛屾偅鑰呯殑韬唤璇�
-+                boolean continutFlag = false;
-+                for (ServiceSubtask ss : serviceSubtaskListFilter) {
-+                    if (ss.getSfzh().equals(serviceSubtask.getSfzh())) {
-+                        continutFlag = true;
-+                    }
-+                }
-+                //濡傛灉瀛樺湪褰撳墠鎵ц鎮h�呯殑韬唤璇侊紝鍒欎笉鎵ц璇ユ偅鑰呬簡
-+                if (continutFlag) {
-+                    return;
-+                }
-+
-+                //灏嗗瓙浠诲姟ID鍒犻櫎 銆乻endstate鏀规垚3锛堝惊鐜换鍔″氨鏄繖鏍凤級
-+                serviceSubtask.setSendstate(3L);
-+                serviceSubtask.setId(null);
-+                serviceSubtask.setFinishtime(null);
-+                serviceSubtask.setCreateTime(new Date());
-+                serviceSubtask.setUpdateTime(new Date());
-+                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
-+
-+                //灏嗗綋鍓嶈鎵ц鐨勬偅鑰呮斁鍒拌繃婊ゆ偅鑰呴泦鍚堜腑
-+                serviceSubtaskListFilter.add(serviceSubtask);
-+            }
-+        } else if (descByCode.equals("鐭俊")) {
-+            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+            String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
-+            log.info("銆恠fHandlle銆戝鐞嗙煭淇¢暱鏈熶换鍔★紝鎮h�匢D锛歿}", serviceSubtask.getPatid());
-+            boolean dateToday = isDateToday(serviceSubtask.getVisitTime());
-+            if (dateToday) {
-+                try {
-+                    String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-+                    String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
-+                    SendMagParam sendMagParam = new SendMagParam();
-+                    sendMagParam.setType("4");
-+                    ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                    serviceOutPath.setParam1(taskId);
-+                    serviceOutPath.setParam2(patid);
-+                    serviceOutPath.setParam3(ivrTask1.getTaskName());
-+                    serviceOutPath.setParam6(subId);
-+                    serviceOutPath.setCreateTime(new Date());
-+                    iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                    String format = String.format("%03X", serviceOutPath.getId());
-+                    serviceOutPath.setRadix(format);
-+                    serviceOutPath.setUpdateTime(new Date());
-+                    iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                    //鍏堝垽鏂竴涓嬪彂鐨勬槸涓嶆槸瀹f暀
-+                    if (!"3".equals(serviceSubtask.getType())) {
-+                        sendMagParam.setPhone(serviceSubtask.getPhone());
-+                        sendMagParam.setUrl(localIP + ":" + req_path + "/wt?p=" + format);
-+                        //濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛�
-+                        if (serviceSubtask.getType().equals("1"))
-+                            sendMagParam.setUrl(localIP + ":" + req_path + "/sf?p=" + format);
-+                        sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
-+                    } else {
-+                        HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
-+                        if ("2".equals(heLibrary.getHetype())) {
-+                            sendMagParam.setPhone(serviceSubtask.getPhone());
-+                            sendMagParam.setContent(heLibrary.getPreachcontent());
-+                        }
-+                    }
-+                    String isSuccess = null;
-+                    if (visitHosp == 1) {
-+                        Map<String, String> req = new HashMap<>();
-+                        req.put("phone", sendMagParam.getPhone());
-+                        req.put("content", sendMagParam.getContent());
-+                        isSuccess = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
-+                    } else if (visitHosp == 2) {
-+                        String url = configService.selectConfigByKey("token.360", serviceSubtask.getOrgid());
-+                        //涓芥按鐨勭煭淇″彂閫佹柟寮�
-+                        Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
-+                        String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(), url);
-+                        if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
-+                            setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�", "5");
-+                            return;
-+                        }
-+                        log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}", map.get("address"), sendMagParam, serviceSubtask.getOrgid());
-+                        String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);
-+                        log.info("銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}", dxCode);
-+                        ObjectMapper objectMapper = new ObjectMapper();
-+                        Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
-+                        String code = textParam.get("Code").toString();
-+                        if (code.equals("0")) {
-+                            isSuccess = "true";
-+                        }
-+                    } else if (visitHosp == 4) {
-+                        //鐪佺珛鍚屽痉鐨勭煭淇″彂閫佹柟寮�
-+                        JSONObject data = MessageSend.sendMsg(sendMagParam.getContent(), "2", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
-+                        String code = data.get("code").toString();
-+                        if (StringUtils.isNotEmpty(code) && code.equals("00000")) {
-+                            isSuccess = "true";
-+                        }
-+                    } else if (visitHosp == 3) {//甯備竴鍖婚櫌
-+                        String content = sendMagParam.getContent().replace("銆愭柊鍗庡尰闄€��", "");
-+                        String result = smsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, sendMagParam.getPhone(), content);
-+                        //杩欓噷闇�瑕佹牴鎹畆esult杩斿洖鐨勫�煎幓鍒ゆ柇锛屾槸鍚︽垚鍔燂紝鐒跺悗灏嗗�艰祴鍊肩粰isSuccess
-+
-+
-+                    }
-+                    //浠诲姟鍙戦�佽褰�
-+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                    serviceSubtaskRecord.setPreachform("4");
-+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                    serviceSubtaskRecord.setResult("success");
-+                    if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true"))
-+                        serviceSubtaskRecord.setResult("error");
-+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
- 
--                                //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
--                                serviceSubtask.setSendstate(3L);
--                                if (StringUtils.isNotEmpty(isSuccess) && !isSuccess.equals("true")) {
--                                    serviceSubtask.setResult("success");
--                                    serviceSubtask.setRemark("鐭俊鍙戦�佹垚鍔�");
--                                } else {
--                                    serviceSubtask.setResult("error");
--                                    serviceSubtask.setSendstate(5L);
--                                    serviceSubtask.setRemark("鐭俊鍙戦�佸け璐�");
--                                }
--                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
--                            } catch (Exception e) {
--                                String guid = UUID.randomUUID().toString();
--                                log.error("銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
--                                serviceSubtask.setResult("error");
--                                serviceSubtask.setRemark("绯荤粺閿欒");
--                                serviceSubtask.setSendstate(5L);
--                                serviceSubtask.setGuid(guid);
--                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
--                            }
--                        }
--                    }
--                } else if (descByCode.equals("鍏紬鍙�")) {
--                    log.info("銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
--                    //鍏紬鍙�
--                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
--                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        boolean dateToday = isDateToday(serviceSubtask.getLongSendTime());
--                        if (dateToday) {
--                            try {
--                                //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
--                                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtask.getPatid());
--                                if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
--                                    //涓嶉渶瑕佸彂閫�
--                                    serviceSubtask.setResult("error");
--                                    serviceSubtask.setRemark(patArchive.getNotrequiredreason());
--                                    serviceSubtask.setSendstate(4L);
--                                    iServiceSubtaskService.insertServiceSubtask(serviceSubtask);
--                                    continue;
--                                }
--                                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
--                                String url = null;
--                                url = ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false";
-+                    //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
-+                    serviceSubtask.setSendstate(3L);
-+                    if (StringUtils.isNotEmpty(isSuccess) && isSuccess.equals("true")) {
-+                        serviceSubtask.setResult("success");
-+                        serviceSubtask.setRemark("鐭俊鍙戦�佹垚鍔�");
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佹垚鍔�", "2");
-+                    } else {
-+                        serviceSubtask.setResult("error");
-+                        serviceSubtask.setRemark("鐭俊鍙戦�佸け璐�");
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
-+                    }
-+                } catch (Exception e) {
-+                    String guid = UUID.randomUUID().toString();
-+                    log.error("銆恠fHandlle銆戦暱鏈熶换鍔$煭淇″彂閫佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
-+                    setSuccessPreachForm(serviceSubtask, sendPreachform, "闀挎湡浠诲姟鐭俊鍙戦�佸け璐�:绯荤粺閿欒", "5");
-+                }
-+            }
-+
-+        } else if (descByCode.equals("鍏紬鍙�")) {
-+            log.info("銆恠fHandlle銆戝鐞嗗叕浼楀彿浠诲姟锛屼换鍔′俊鎭細{}", ivrTask1);
-+            //鍏紬鍙�
-+            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+            String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
-+            boolean dateToday = isDateToday(serviceSubtask.getVisitTime());
-+            if (dateToday) {
-+                try {
-+                    String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-+                    String url = null;
-+                    url = localIP + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false";
- 
--                                //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
--                                List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
--                                if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
--                                    ServiceSubtask ss = new ServiceSubtask();
--                                    ss.setResult("error");
--                                    ss.setRemark("璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�");
--                                    ss.setSendstate(5L);
--                                    ss.setId(serviceSubtask.getId());
--                                    serviceSubtaskMapper.updateServiceSubtask(ss);
--                                    continue;
--                                }
-+                    //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
-+                    List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
-+                    if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戣鏈烘瀯鐨勫叕浼楀彿閰嶇疆淇℃伅涓嶅叏锛屾棤娉曢�氳繃鍏紬鍙峰彂閫�", "4");
-+                        return;
-+                    }
- 
--                                if (StringUtils.isEmpty(patArchive.getPatidHis())) {
--                                    ServiceSubtask ss = new ServiceSubtask();
--                                    ss.setResult("error");
--                                    ss.setRemark("鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖");
--                                    ss.setSendstate(5L);
--                                    ss.setId(serviceSubtask.getId());
--                                    serviceSubtaskMapper.updateServiceSubtask(ss);
--                                    continue;
--                                }
--                                String wxCode = "";
--                                if (visitHosp == 3) {//甯備竴鍖婚櫌
--                                    String urlTemp="http://192.200.54.14:5003/sfjk/SendMessage?sfzh="+serviceSubtask.getSfzh()
--                                            +"&title=鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑诲~鍐欍��&content=鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑诲~鍐欍��&phone="+patArchive.getTelcode()
--                                            +"&url="+url+"&key=ff76f8904f5f32b5ee1739e8ea46e60g";
--                                    HttpUtils.sendGet(urlTemp);
--                                }else{
--                                    wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx);
--                                }
--                                Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
--                                //浠诲姟鍙戦�佽褰�
--                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                                serviceSubtaskRecord.setPreachform("4");
--                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                                serviceSubtaskRecord.setResult("success");
--                                if (!map.isEmpty() && (Boolean) map.get("succ") == false)
--                                    serviceSubtaskRecord.setResult("error");
--                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                    if (StringUtils.isEmpty(patArchive.getPatidHis())) {
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖", "5");
-+                        return;
-+                    }
-+                    String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskDesc(), patArchive.getTelcode(), serviceSubtask.getSendname(), patArchive.getPatidHis(), wxqqxx);
-+
-+                    Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
-+                    //浠诲姟鍙戦�佽褰�
-+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                    serviceSubtaskRecord.setPreachform("4");
-+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                    serviceSubtaskRecord.setResult("success");
-+                    if (!map.isEmpty() && (Boolean) map.get("succ") == false) serviceSubtaskRecord.setResult("error");
-+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
- 
--                                //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
--                                serviceSubtask.setSendstate(3L);
--                                if ((Boolean) map.get("succ") == true) {
--                                    serviceSubtask.setResult("success");
--                                } else {
--                                    log.error("銆恠fHandlle銆戝叕浼楀彿鍙戦�佸け璐ワ紝鎮h�呬俊鎭細{}锛岄敊璇俊鎭細{}", serviceSubtask, map.get("msg"));
--                                    serviceSubtask.setResult("error");
--                                    serviceSubtask.setSendstate(5L);
--                                    serviceSubtask.setRemark(map.get("msg").toString());
--                                }
--                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
--                            } catch (Exception e) {
--                                String guid = UUID.randomUUID().toString();
--                                log.error("銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
--                                serviceSubtask.setResult("error");
--                                serviceSubtask.setRemark("绯荤粺閿欒");
--                                serviceSubtask.setSendstate(5L);
--                                serviceSubtask.setGuid(guid);
--                                iServiceSubtaskService.updateServiceSubtask(serviceSubtask);
--                            }
--                        }
--                    }
-+                    //鍙戦�佸畬鎴愬悗锛屼慨鏀圭姸鎬�
-+                    serviceSubtask.setSendstate(3L);
-+                    if ((Boolean) map.get("succ") == true) {
-+                        serviceSubtask.setResult("success");
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佹垚鍔�", "2");
-+                    } else {
-+                        log.error("銆恠fHandlle銆戝叕浼楀彿鍙戦�佸け璐ワ紝鎮h�呬俊鎭細{}锛岄敊璇俊鎭細{}", serviceSubtask, map.get("msg"));
-+                        setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戝叕浼楀彿鍙戦�佸け璐�", "5");
-+                    }
-+                } catch (Exception e) {
-+                    String guid = UUID.randomUUID().toString();
-+                    log.error("銆恠fHandlle銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛歿}锛孏UID锛歿}", e.getMessage(), guid);
-+                    setSuccessPreachForm(serviceSubtask, sendPreachform, "銆愬叕浼楀彿銆戦暱鏈熶换鍔″叕浼楀彿鍙戦�佸け璐ワ紝鍘熷洜锛�" + e.getMessage(), "5");
-+                }
-+            }
-+        } else if (descByCode.equals("浜哄伐")) {
-+            setSuccessPreachForm(serviceSubtask, sendPreachform, "浜哄伐寰呮墽琛�", "2");
-+        }
-+
-+    }
-+
-+
-+    private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) {
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(subid);
-+        serviceSubtaskPreachform.setTaskid(taskid);
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            String compensateTime = serviceSubtaskPreachforms.get(0).getCompensateTime();
-+            int hoursToAdd = Integer.valueOf(compensateTime) * 24;
-+            Calendar calendar = Calendar.getInstance();
-+            calendar.setTime(visitTime);
-+            calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd);
-+            Date newDate = calendar.getTime();
-+            return newDate;
-+        }
-+        return visitTime;
-+    }
-+
-+    private String getSendPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform, ServiceSubtask serviceSubtask) {
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        // 鎯呭喌1锛歝urrentPreachform涓虹┖锛屽彇sort涓�1鐨刾reachform
-+        if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
-+            return serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
-+        }
-+
-+        // 鎯呭喌2锛歝urrentPreachform涓嶄负绌猴紝鎵句笅涓�涓猻ort
-+        Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
-+
-+        if (currentSort.isPresent()) {
-+            // 妫�鏌ユ槸鍚︽墍鏈塻endstate涓嶇瓑浜�9
-+            boolean allSendStateNot1AndNot9 = serviceSubtaskPreachforms.stream().allMatch(item -> !item.getSendstate().equals("9"));
-+            if (!allSendStateNot1AndNot9) {
-+                //璇存槑锛屽湪鏌愮鏂瑰紡鍙戦�佸け璐ュ悗锛屽張鎴愬姛浜嗭紙渚嬪鐭俊鎴栧叕浼楀彿锛屽湪瑙勫畾鏃堕棿澶栨偅鑰呭仛瀹屼簡锛岃繖涓椂鍊欙紝鐘舵�佹敼鎴愪簡9锛�
-+                serviceSubtask.setSendstate(6L);
-+                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                return "-1";
-+            }
-+
-+            // 褰搒ort绛変簬鍒楄〃size鏃讹紝骞朵笖鎵�鏈塻endstate閮戒笉绛変簬9锛屽垯杩斿洖-1
-+            if (currentSort.get().equals((long) serviceSubtaskPreachforms.size())) {
-+                if (allSendStateNot1AndNot9) {
-+                    //璇存槑鍏ㄥ彂閫佸け璐ヤ簡
-+                    serviceSubtask.setSendstate(5L);
-+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                    //淇敼鍙戦�佺姸鎬�
-+                    setFail(serviceSubtaskPreachforms, serviceSubtask);
-                 }
--                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
-+                return "-1";
-             }
--        }
--    }
- 
--    private String getKey() {
--        Map<String, String> map = new HashMap<>();
--        for (int i = 0; i < 6; i++) {
--            Boolean aBoolean = redisCache.hasKey("cache-" + i);
--            if (!aBoolean) {
--                redisCache.setCacheObject("cache-" + i, "");
--                map.put("cache-" + i, "");
--            } else {
--                map.put("cache-" + i, redisCache.getCacheObject("cache-" + i));
-+            // 褰搒ort绛変簬鍒楄〃size鏃讹紝涓嬩竴涓猻ort涓�-1
-+            Long nextSort = currentSort.get() + 1;
-+
-+            //濡傛灉褰撳墠鐨勫彂閫佹柟寮忎笉涓虹┖锛屽苟涓斿紑濮嬪噯澶囪鐢ㄤ笅涓�绉嶆柟寮忓彂閫佷簡锛岄偅褰撳墠鐨勮偗瀹氭病鏈夊彂閫佹垚鍔燂紝闇�瑕佽缃け璐�
-+            // (杩欓噷涓昏鏄紝浜哄伐濡傛灉娌℃湁闅忚锛岀劧鍚庡埌鍏紬鍙风殑鏃跺�欙紝灏变笉浼氬啀鍘荤浜哄伐鏄惁鎴愬姛锛屼汉宸ョ殑鐘舵�佷細涓�鐩村崱鍦�2鐨勭姸鎬佷笂)
-+            if (StringUtils.isNotEmpty(serviceSubtask.getCurrentPreachform())) {
-+                setFail(serviceSubtaskPreachforms, serviceSubtask);
-             }
-+
-+            // 鎵惧埌涓嬩竴涓猻ort瀵瑰簲鐨刾reachform
-+            return serviceSubtaskPreachforms.stream().filter(item -> nextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse("-1");
-         }
- 
--        String key = null;
--        String value = "";
--        for (Map.Entry<String, String> entry : map.entrySet()) {
--            if (StringUtils.isEmpty(value)) {
--                value = entry.getValue();
--                key = entry.getKey();
--            } else {
--                if (entry.getValue().split(",").length < value.split(",").length) {
--                    value = entry.getValue();
--                    key = entry.getKey();
--                }
--            }
-+        return null;
-+    }
-+
-+    private Integer setFail(List<ServiceSubtaskPreachform> serviceSubtaskPreachforms, ServiceSubtask serviceSubtask) {
-+        Optional<Long> id = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getId).findFirst();
-+        if (id.isPresent()) {
-+            ServiceSubtaskPreachform subtaskPreachform = new ServiceSubtaskPreachform();
-+            subtaskPreachform.setSendstate("5");
-+            subtaskPreachform.setId(id.get());
-+            return serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(subtaskPreachform);
-         }
--        return key;
-+        return 0;
-     }
-+
- 
-     private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) {
-         Map<String, Object> map = new LinkedHashMap<>();
-@@ -800,4 +871,61 @@
-             log.error("銆恉ealHisData銆慔IS鏁版嵁閲囬泦寮傚父", e);
-         }
-     }
-+
-+    public Boolean setSuccessPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
-+        if (preachform.equals("-1")) {
-+            //璇存槑閮戒笉闇�瑕佹墽琛屼簡
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+            serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+            serviceSubtaskPreachform.setSendstate(failSendstate);
-+            serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
-+            return true;
-+        }
-+
-+
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+        List<ServiceSubtaskPreachform> sspCount = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        serviceSubtaskPreachform.setPreachform(preachform);
-+        //1:鏈彂閫佺姸鎬�
-+        serviceSubtaskPreachform.setSendstate("1");
-+        //鐢佃瘽鐨勬湭鍙戦�佺姸鎬侊紝闇�瑕佹煡2锛屽洜涓猴紝鏁版嵁鍙兘鍗″湪闃熷垪閲屼簡; 锛堟病杩涢槦鍒楋紝鐢佃瘽鐘舵�佽繕鏄�1锛�
-+        if (preachform.equals("3") && StringUtils.isNotEmpty(failSendstate) && Long.valueOf(failSendstate) > 2)
-+            serviceSubtaskPreachform.setSendstate("2");
-+        //浜哄伐鐨勬湭鍙戦�佺姸鎬侊紝闇�瑕佹煡2
-+        if (preachform.equals("1") && StringUtils.isNotEmpty(failSendstate) && Long.valueOf(failSendstate) > 2)
-+            serviceSubtaskPreachform.setSendstate("2");
-+
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
-+            serviceSubtaskPreachform1.setSendstate(failSendstate);
-+            serviceSubtaskPreachform1.setRemark(remark);
-+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
-+
-+            //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
-+            if (serviceSubtaskPreachform1.getSort() == sspCount.size()) {
-+                if (failSendstate.equals("4") || failSendstate.equals("5")) {
-+                    serviceSubtask.setCurrentPreachform(preachform);
-+                    serviceSubtask.setSendstate(5L);
-+                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                    return true;
-+                }
-+            }
-+        } else {
-+            log.error("銆愬畾鏃朵换鍔′腑璇ユ偅鑰呮病鏈夋煡璇㈠埌灞炰簬浠栫殑鍙戦�佹柟寮忥紝subid锛歿},prechform:{},orgid:{}銆�", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid());
-+            return false;
-+        }
-+        //灏嗕笅涓�娆$殑闅忚鏃堕棿涓庡綋鍓嶆墽琛屾柟寮忚褰曚竴涓�
-+        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
-+        serviceSubtask.setCurrentPreachform(preachform);
-+        serviceSubtask.setSendstate(3L);
-+        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+        return true;
-+    }
- }
-Index: smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.SecurityUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.*;\r\nimport com.smartor.service.IPatMedInhospService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.time.Instant;\r\nimport java.time.temporal.ChronoUnit;\r\nimport java.util.*;\r\nimport java.util.stream.Collectors;\r\n\r\n/**\r\n * 鎮h�呬綇闄㈣褰昐ervice涓氬姟灞傚鐞哱r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\n@Slf4j\r\n@Service\r\npublic class PatMedInhospServiceImpl implements IPatMedInhospService {\r\n    @Autowired\r\n    private PatMedInhospMapper patMedInhospMapper;\r\n\r\n    @Autowired\r\n    private ServiceTaskdeptMapper serviceTaskdeptMapper;\r\n\r\n    @Autowired\r\n    private ServiceTaskdiagMapper serviceTaskdiagMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n    @Autowired\r\n    private PatArchiveImportMapper patArchiveImportMapper;\r\n    @Autowired\r\n    private ServiceTaskMapper serviceTaskMapper;\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    @Value(\"${visitHosp}\")\r\n    private Integer visitHosp;\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呬綇闄㈣褰昞r\n     *\r\n     * @param inhospid 鎮h�呬綇闄㈣褰曚富閿甛r\n     * @return 鎮h�呬綇闄㈣褰昞r\n     */\r\n    @Override\r\n    public PatMedInhosp selectPatMedInhospByInhospid(Long inhospid) {\r\n        return patMedInhospMapper.selectPatMedInhospByInhospid(inhospid);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呬綇闄㈣褰曞垪琛╘r\n     *\r\n     * @param patMedInhosp 鎮h�呬綇闄㈣褰昞r\n     * @return 鎮h�呬綇闄㈣褰昞r\n     */\r\n    @Override\r\n    public List<PatMedInhosp> selectPatMedInhospList(PatMedInhosp patMedInhosp) {\r\n        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n        for (PatMedInhosp patMedInhosp1 : patMedInhospList) {\r\n            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n            patMedInhosp1.setTagname(tagname);\r\n        }\r\n        return patMedInhospList;\r\n    }\r\n\r\n    @Override\r\n    public Map<String, Integer> queryPersonCount(PatServiceCount patServiceCount) {\r\n        if (patServiceCount.getInterval() == 1) {\r\n            //鍛╘r\n        } else if (patServiceCount.getInterval() == 2) {\r\n            //鏈圽r\n        } else if (patServiceCount.getInterval() == 3) {\r\n            //骞碶r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ褰撳墠鐧婚檰浜鸿嚜宸憋紙鐥呭尯銆侀儴闂級鐨勬偅鑰呬綇闄㈣褰曞垪琛╘r\n     *\r\n     * @param patMedInhospVO\r\n     * @return\r\n     */\r\n    public List<PatMedInhosp> selectPatMedInhospListByCondition(PatMedInhospVO patMedInhospVO) {\r\n        return patMedInhospMapper.selectPatMedInhospListByCondition(patMedInhospVO);\r\n    }\r\n\r\n\r\n    @Override\r\n    public PatMedInhosp getDeptCodeByPatId(PatMedInhosp patMedInhosp) {\r\n        List<PatMedInhosp> patMedInhosps = selectPatMedInhospList(patMedInhosp);\r\n        if (!org.springframework.util.CollectionUtils.isEmpty(patMedInhosps)) {\r\n\r\n            if (patMedInhosp.getInhospstate().equals(\"0\")) {\r\n                //鍏堝幓鎺夋椂闂翠负绌虹殑\r\n                patMedInhosps.removeIf(PatMedInhosp -> PatMedInhosp.getStarttime() == null);\r\n                Collections.sort(patMedInhosps, Comparator.comparing(PatMedInhosp::getStarttime).reversed());\r\n            } else if (patMedInhosp.getInhospstate().equals(\"1\")) {\r\n                //鍏堝幓鎺夋椂闂翠负绌虹殑\r\n                patMedInhosps.removeIf(PatMedInhosp -> PatMedInhosp.getEndtime() == null);\r\n                Collections.sort(patMedInhosps, Comparator.comparing(PatMedInhosp::getEndtime).reversed());\r\n            }\r\n        }\r\n        if (patMedInhosps != null && patMedInhosps.size() > 0) return patMedInhosps.get(0);\r\n        else return null;\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鍑哄叆闄汉娆r\n     *\r\n     * @param patMedReq\r\n     * @return\r\n     */\r\n    @Override\r\n    public PatMedRes selectPatMedInhospListCount(PatMedReq patMedReq) {\r\n        PatMedRes patMedRes = null;\r\n        // 鑾峰彇褰撳墠鐧婚檰浜虹殑閮ㄩ棬鏉冮檺\r\n        if (org.springframework.util.CollectionUtils.isEmpty(patMedReq.getDeptcodeList())) {\r\n//            Long userId = SecurityUtils.getUserId();\r\n//            List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(userId);\r\n//            List<String> deptCode = new ArrayList<>();\r\n//            for (SysDept sysDept : sysDepts) {\r\n//                deptCode.add(sysDept.getDeptId().toString());\r\n//            }\r\n//            patMedReq.setDeptcodeList(deptCode);\r\n//            patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);\r\n        }\r\n        patMedRes = patMedInhospMapper.selectPatMedInhospCount(patMedReq);\r\n        return patMedRes;\r\n    }\r\n\r\n    /**\r\n     * 鏂板鎮h�呬綇闄㈣褰昞r\n     *\r\n     * @param patMedInhosp 鎮h�呬綇闄㈣褰昞r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertPatMedInhosp(PatMedInhosp patMedInhosp) {\r\n        patMedInhosp.setCreateTime(DateUtils.getNowDate());\r\n        patMedInhosp.setUpdateTime(DateUtils.getNowDate());\r\n        return patMedInhospMapper.insertPatMedInhosp(patMedInhosp);\r\n    }\r\n\r\n    /**\r\n     * 淇敼鎮h�呬綇闄㈣褰昞r\n     *\r\n     * @param patMedInhosp 鎮h�呬綇闄㈣褰昞r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updatePatMedInhosp(PatMedInhosp patMedInhosp) {\r\n        patMedInhosp.setUpdateTime(DateUtils.getNowDate());\r\n        return patMedInhospMapper.updatePatMedInhosp(patMedInhosp);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鎮h�呬綇闄㈣褰昞r\n     *\r\n     * @param inhospids 闇�瑕佸垹闄ょ殑鎮h�呬綇闄㈣褰曚富閿甛r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deletePatMedInhospByInhospids(Long[] inhospids) {\r\n        return patMedInhospMapper.deletePatMedInhospByInhospids(inhospids);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鎮h�呬綇闄㈣褰曚俊鎭痋r\n     *\r\n     * @param inhospid 鎮h�呬綇闄㈣褰曚富閿甛r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deletePatMedInhospByInhospid(Long inhospid) {\r\n        return patMedInhospMapper.deletePatMedInhospByInhospid(inhospid);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鎮h�呬綇闄㈣褰曚俊鎭痋r\n     *\r\n     * @param inhospno 鎮h�呬綇闄㈢紪鐮乗r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deletePatMedInhospByInhospno(String inhospno) {\r\n        return patMedInhospMapper.deletePatMedInhospByInhospno(inhospno);\r\n    }\r\n\r\n    @Override\r\n    public int dealOutHospInfo() {\r\n\r\n        PatMedInhosp pmks = new PatMedInhosp();\r\n        //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁\r\n        pmks.setDeptcheckFlag(\"0\");\r\n        pmks.setInhospstate(\"1\");\r\n        pmks.setFuflag(\"1\");\r\n        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(pmks);\r\n        log.info(\"dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌閮ㄩ棬鎮h�呬俊鎭細{}\", patMedInhosps);\r\n        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {\r\n            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n            patMedInhosp1.setTagname(tagname);\r\n        }\r\n\r\n        //绉戝\r\n        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {\r\n            //鑾峰彇鎮h�呬俊鎭痋r\n            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());\r\n            if (Objects.isNull(patArchive)) {\r\n                patMedInhosp1.setDeptcheckFlag(\"2\");\r\n                patMedInhosp1.setLongTaskReason(\"鎮h�呭熀鏈俊鎭负绌篭");\r\n                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n                continue;\r\n            }\r\n            try {\r\n                //鏍规嵁鎮h�呮墍鍦ㄧ瀹わ紝鑾峰彇璇ョ瀹ょ殑闀挎湡浠诲姟\r\n                ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n                serviceTaskdept.setLongtask(1L);\r\n                serviceTaskdept.setDeptCode(patMedInhosp1.getLeaveldeptcode());\r\n                serviceTaskdept.setDeptType(\"1\");\r\n                serviceTaskdept.setOrgid(patMedInhosp1.getOrgid());\r\n                List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);\r\n                //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛塡r\n                if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {\r\n                    PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());\r\n                    patMedInhosp1.setDeptcheckFlag(\"2\");\r\n                    patMedInhosp1.setLongTaskReason(patMedInhosp.getLongTaskReason() + \"璇ユ偅鑰呮墍鍦ㄧ瀹ゆ湭閰嶇疆闀挎湡浠诲姟;\");\r\n                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n                } else {\r\n                    for (ServiceTaskdept serviceTaskdept1 : serviceTaskdepts) {\r\n                        writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedInhosp1, patArchive, 1);\r\n                    }\r\n                    patMedInhosp1.setDeptcheckFlag(\"1\");\r\n                    patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n                }\r\n\r\n            } catch (Exception e) {\r\n                e.printStackTrace();\r\n                log.error(\"浜哄憳澶勭悊鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n            }\r\n        }\r\n\r\n        //鏍规嵁鎮h�呮墍鍦ㄧ梾鍖猴紝鑾峰彇璇ョ梾鍖虹殑闀挎湡浠诲姟,鏂板崕鍖婚櫌鍙互鍏堜笉鐢ㄦ牴鎹梾鍖哄拰鐤剧梾鏉ュ仛\r\n        if (visitHosp != 1) {\r\n\r\n            PatMedInhosp pmbq = new PatMedInhosp();\r\n            //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁\r\n            pmbq.setWardcheckFlag(\"0\");\r\n            pmbq.setInhospstate(\"1\");\r\n            pmbq.setFuflag(\"1\");\r\n            List<PatMedInhosp> patMedInhospBQs = patMedInhospMapper.selectPatMedInhospList(pmbq);\r\n            log.info(\"dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鐥呭尯鎮h�呬俊鎭細{}\", patMedInhosps);\r\n            for (PatMedInhosp patMedInhosp1 : patMedInhospBQs) {\r\n                String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n                patMedInhosp1.setTagname(tagname);\r\n            }\r\n\r\n            //鐥呭尯鏁版嵁澶勭悊\r\n            for (PatMedInhosp pmiBQ1 : patMedInhospBQs) {\r\n                //鑾峰彇鎮h�呬俊鎭痋r\n                PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(pmiBQ1.getPatid());\r\n                if (Objects.isNull(patArchive)) {\r\n                    pmiBQ1.setWardcheckFlag(\"2\");\r\n                    pmiBQ1.setLongTaskReason(\"鎮h�呭熀鏈俊鎭负绌篭");\r\n                    patMedInhospMapper.updatePatMedInhosp(pmiBQ1);\r\n                    continue;\r\n                }\r\n                try {\r\n                    ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n                    serviceTaskdept.setLongtask(1L);\r\n                    serviceTaskdept.setDeptCode(pmiBQ1.getLeavehospitaldistrictcode());\r\n                    serviceTaskdept.setDeptType(\"2\");\r\n                    serviceTaskdept.setOrgid(pmiBQ1.getOrgid());\r\n                    List<ServiceTaskdept> serviceTaskdeptList = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);\r\n                    //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛塡r\n                    if (CollectionUtils.isEmpty(serviceTaskdeptList) || serviceTaskdeptList.size() == 0) {\r\n                        PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiBQ1.getInhospid());\r\n                        pmiBQ1.setWardcheckFlag(\"2\");\r\n                        pmiBQ1.setLongTaskReason(patMedInhosp.getLongTaskReason() + \"璇ユ偅鑰呮墍鍦ㄧ梾鍖烘湭閰嶇疆闀挎湡浠诲姟;\");\r\n                        patMedInhospMapper.updatePatMedInhosp(pmiBQ1);\r\n                    } else {\r\n                        for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) {\r\n                            writeInSubTask(serviceTaskdept1.getTaskId(), true, pmiBQ1, patArchive, 2);\r\n                        }\r\n                        pmiBQ1.setWardcheckFlag(\"1\");\r\n                        patMedInhospMapper.updatePatMedInhosp(pmiBQ1);\r\n                    }\r\n\r\n\r\n                } catch (Exception e) {\r\n                    e.printStackTrace();\r\n                    log.error(\"浜哄憳澶勭悊鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n                }\r\n            }\r\n\r\n            PatMedInhosp pmjb = new PatMedInhosp();\r\n            //鑾峰彇闇�瑕佸嚭闄㈢柧鐥呴殢璁匡紝鏈鐞嗙殑鏁版嵁\r\n            pmjb.setDiagcheckFlag(\"0\");\r\n            pmjb.setInhospstate(\"1\");\r\n            pmjb.setFuflag(\"1\");\r\n            List<PatMedInhosp> patMedInhospJBs = patMedInhospMapper.selectPatMedInhospList(pmjb);\r\n            log.info(\"dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鐤剧梾鎮h�呬俊鎭細{}\", patMedInhosps);\r\n            for (PatMedInhosp patMedInhosp1 : patMedInhospJBs) {\r\n                String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n                patMedInhosp1.setTagname(tagname);\r\n            }\r\n\r\n            for (PatMedInhosp pmiJB : patMedInhospJBs) {\r\n                //鑾峰彇鎮h�呬俊鎭痋r\n                PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(pmiJB.getPatid());\r\n                if (Objects.isNull(patArchive)) {\r\n                    pmiJB.setDiagcheckFlag(\"2\");\r\n                    pmiJB.setLongTaskReason(\"鎮h�呭熀鏈俊鎭负绌篭");\r\n                    patMedInhospMapper.updatePatMedInhosp(pmiJB);\r\n                    continue;\r\n                }\r\n                try {\r\n                    if (StringUtils.isEmpty(pmiJB.getLeaveicd10code())) {\r\n                        continue;\r\n                    }\r\n                    // 鏍规嵁鎮h�呯殑鐤剧梾锛岃幏鍙栬鐤剧梾鐨勯暱鏈熶换鍔r\n                    ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();\r\n                    serviceTaskdiag.setLongtask(1L);\r\n                    serviceTaskdiag.setIcd10code(pmiJB.getLeaveicd10code());\r\n                    serviceTaskdiag.setOrgid(pmiJB.getOrgid());\r\n\r\n                    List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);\r\n                    //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛塡r\n                    if (CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) {\r\n                        PatMedInhosp patMedInhosp = patMedInhospMapper.selectPatMedInhospByInhospid(pmiJB.getInhospid());\r\n                        pmiJB.setDiagcheckFlag(\"2\");\r\n                        pmiJB.setLongTaskReason(patMedInhosp.getLongTaskReason() + \"鎵�鎮g殑鐤剧梾鏈厤缃暱鏈熶换鍔�;\");\r\n                        patMedInhospMapper.updatePatMedInhosp(pmiJB);\r\n                    } else {\r\n                        for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) {\r\n                            writeInSubTask(serviceTaskdept1.getTaskId(), true, pmiJB, patArchive, 3);\r\n                        }\r\n                        pmiJB.setDiagcheckFlag(\"1\");\r\n                        patMedInhospMapper.updatePatMedInhosp(pmiJB);\r\n                    }\r\n\r\n                } catch (Exception e) {\r\n                    e.printStackTrace();\r\n                    log.error(\"浜哄憳澶勭悊鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n                }\r\n            }\r\n        }\r\n\r\n        //鑾峰彇鏈鐞嗗湪闄㈢殑鏁版嵁(濡傛灉鍒氬垰鍑洪櫌鐨勬偅鑰呮暟鎹殑鍑洪櫌鏃堕棿,鍦ㄤ笅闈㈡煡璇㈠嚭鐨勫叆闄㈡椂闂翠箣鍓�,閭d箣鍓嶇殑鍑洪櫌鎮h�呯殑鏁版嵁,涔熷緱鍋滄帀,鍥犱负鍙堝叆闄簡)\r\n        PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n        //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁\r\n        patMedInhosp.setDeptcheckFlag(\"0\");\r\n        patMedInhosp.setInhospstate(\"0\");\r\n        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n        if (CollectionUtils.isNotEmpty(patMedInhospList) && patMedInhospList.size() > 0) {\r\n            dealInHospInfo(patMedInhospList);\r\n        }\r\n        return 1;\r\n    }\r\n\r\n//\r\n//    @Override\r\n//    public int dealOutHospInfo() {\r\n//        PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n//        //鑾峰彇闇�瑕佸嚭闄㈤儴闂ㄩ殢璁匡紝鏈鐞嗙殑鏁版嵁\r\n//        patMedInhosp.setDeptcheckFlag(\"0\");\r\n//        patMedInhosp.setInhospstate(\"1\");\r\n//        patMedInhosp.setFuflag(\"1\");\r\n//        List<PatMedInhosp> patMedInhosps = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n//        log.error(\"dealOutHospInfo闇�瑕佸鐞嗙殑鍑洪櫌鎮h�呬俊鎭細{}\", patMedInhosps);\r\n//        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {\r\n//            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n//            patMedInhosp1.setTagname(tagname);\r\n//        }\r\n//\r\n//        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {\r\n//            //鍏堟牴鎹瀹ゅ幓service_check鏌ヨcheck_visit_flag鏄牴鎹�滅瀹も�濋殢璁匡紝杩樻槸鏍规嵁鈥滅涓�璇婃柇鈥濋殢璁縗r\n//            ServiceCheck serviceCheck = new ServiceCheck();\r\n//            serviceCheck.setDeptCode(patMedInhosp1.getDeptcode());\r\n//            serviceCheck.setOrgid(patMedInhosp1.getOrgid());\r\n//            List<ServiceCheck> serviceChecks = serviceCheckMapper.selectServiceCheckList(serviceCheck);\r\n//            //鑾峰彇鎮h�呬俊鎭痋r\n//            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhosp1.getPatid());\r\n//            if (Objects.isNull(patArchive)) {\r\n//                patMedInhosp1.setDeptcheckFlag(\"2\");\r\n//                patMedInhosp1.setLongTaskReason(\"鎮h�呭熀鏈俊鎭负绌篭");\r\n//                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n//                continue;\r\n//            }\r\n//            try {\r\n//                if (CollectionUtils.isEmpty(serviceChecks) || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 1 || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 3) {\r\n//                    //鏍规嵁鎮h�呮墍鍦ㄧ瀹わ紝鑾峰彇璇ョ瀹ょ殑闀挎湡浠诲姟\r\n//                    ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n//                    serviceTaskdept.setLongtask(1L);\r\n//                    serviceTaskdept.setDeptCode(patMedInhosp1.getLeaveldeptcode());\r\n//                    serviceTaskdept.setServiceType(\"2\");\r\n//                    List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);\r\n//                    //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堟殏瀹氾紝灏嗗嚭鍏ラ櫌琛ㄧ殑check_flag璁剧疆涓�2  锛宭ong_task_reason 璁板綍鍘熷洜锛塡r\n//                    if (CollectionUtils.isEmpty(serviceTaskdepts) || serviceTaskdepts.size() == 0) {\r\n//                        patMedInhosp1.setDeptcheckFlag(\"2\");\r\n//                        patMedInhosp1.setLongTaskReason(\"璇ユ偅鑰呮墍鍦ㄧ瀹わ紝鏈厤缃暱鏈熶换鍔�;\");\r\n//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n//                        continue;\r\n//                    } else if (serviceTaskdepts.size() > 1) {\r\n//                        //濡傛灉鏌ヨ鍑哄涓换鍔★紝閭e氨鍙栫涓�涓紝骞跺湪鎮h�呭娉ㄤ竴涓媆r\n//                        List<Long> tempList = serviceTaskdepts.stream().map(ServiceTaskdept::getTaskId).collect(Collectors.toList());\r\n//                        patMedInhosp1.setLongTaskReason(\"璇ユ偅鑰呮墍鍦ㄧ瀹わ紝鏈夊涓嚭闄㈤殢璁块暱鏈熶换鍔�:\" + tempList);\r\n//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n//                        ServiceTaskdept serviceTaskdept1 = serviceTaskdepts.get(0);\r\n//                        serviceTaskdepts = new ArrayList<>();\r\n//                        serviceTaskdepts.add(serviceTaskdept1);\r\n//                    }\r\n//\r\n//                    writeInSubTask(serviceTaskdepts.get(0).getTaskId(), true, patMedInhosp1, patArchive);\r\n//                }\r\n//                if (serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 2 || serviceChecks != null && serviceChecks.get(0).getCheckVisitFlag() == 3) {\r\n//                    //涓芥按闇�瑕佹牴鎹闄㈢柧鐥呭璇ョ梾浜虹敓鎴愪竴娆¢殢璁縗r\n//                    String[] split = patMedInhosp1.getIcd10code().split(\",\");\r\n//                    ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();\r\n//                    serviceTaskdiag.setLongtask(1L);\r\n//                    serviceTaskdiag.setIcd10code(split[0]);\r\n//                    serviceTaskdiag.setServiceType(\"2\");\r\n//                    List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);\r\n//                    PatMedInhosp patMedInhosp2 = patMedInhospMapper.selectPatMedInhospByInhospid(patMedInhosp1.getInhospid());\r\n//                    //濡傛灉鐤剧梾缂栫爜涓虹┖锛堟殏瀹氾紝灏嗗嚭鍏ラ櫌琛ㄧ殑check_flag璁剧疆涓�3  锛宭ong_task_reason 璁板綍鍘熷洜锛塡r\n//                    if (CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) {\r\n//                        patMedInhosp1.setDeptcheckFlag(\"3\");\r\n//                        patMedInhosp1.setLongTaskReason(patMedInhosp2.getLongTaskReason() + \"璇ユ偅鑰呯殑绗竴鐤剧梾缂栫爜锛屾湭閰嶇疆闀挎湡浠诲姟;\");\r\n//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n//                        continue;\r\n//                    } else if (serviceTaskdiags.size() > 1) {\r\n//                        //濡傛灉鏌ヨ鍑哄涓换鍔★紝閭e氨鍙栫涓�涓紝骞跺湪鎮h�呭娉ㄤ竴涓媆r\n//                        List<Long> tempList = serviceTaskdiags.stream().map(ServiceTaskdiag::getTaskId).collect(Collectors.toList());\r\n//                        patMedInhosp1.setLongTaskReason(patMedInhosp2.getLongTaskReason() + \"璇ユ偅鑰呯殑绗竴鐤剧梾缂栫爜锛屾湁澶氫釜鍑洪櫌闅忚闀挎湡浠诲姟:\" + tempList);\r\n//                        patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n//                        ServiceTaskdiag serviceTaskdiag1 = serviceTaskdiags.get(0);\r\n//                        serviceTaskdiags = new ArrayList<>();\r\n//                        serviceTaskdiags.add(serviceTaskdiag1);\r\n//                    }\r\n//                    writeInSubTask(serviceTaskdiags.get(0).getTaskId(), false, patMedInhosp1, patArchive);\r\n//                }\r\n//\r\n//            } catch (Exception e) {\r\n//                e.printStackTrace();\r\n//                log.error(\"浜哄憳澶勭悊鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n//            }\r\n//        }\r\n//\r\n//        //鑾峰彇鏈鐞嗗湪闄㈢殑鏁版嵁(濡傛灉鍒氬垰鍑洪櫌鐨勬偅鑰呮暟鎹殑鍑洪櫌鏃堕棿,鍦ㄤ笅闈㈡煡璇㈠嚭鐨勫叆闄㈡椂闂翠箣鍓�,閭d箣鍓嶇殑鍑洪櫌鎮h�呯殑鏁版嵁,涔熷緱鍋滄帀,鍥犱负鍙堝叆闄簡)\r\n//        patMedInhosp.setDeptcheckFlag(\"0\");\r\n//        patMedInhosp.setInhospstate(\"0\");\r\n//        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n//        for (PatMedInhosp patMedInhosp1 : patMedInhosps) {\r\n//            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n//            patMedInhosp1.setTagname(tagname);\r\n//        }\r\n//        if (CollectionUtils.isNotEmpty(patMedInhospList) && patMedInhospList.size() > 0) {\r\n//            dealInHospInfo(patMedInhospList);\r\n//        }\r\n//        return 1;\r\n//    }\r\n\r\n    /**\r\n     * 鑾峰彇鍑洪櫌锛屼綇闄紝闂ㄨ瘖鏈嶅姟浜烘\r\n     *\r\n     * @param patMedReq\r\n     * @return\r\n     */\r\n    @Override\r\n    public List<PatMedRes> getDeptRanking(PatMedReq patMedReq) {\r\n\r\n        return serviceSubtaskMapper.getDeptRanking(patMedReq);\r\n    }\r\n\r\n    @Override\r\n    public List<PatMedInhosp> getDocAndPat(PatMedInhosp patMedInhosp) {\r\n        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n        for (PatMedInhosp patMedInhosp1 : patMedInhospList) {\r\n            String tagname = patMedInhospMapper.getTagnameBypatid(patMedInhosp1.getPatid());\r\n            patMedInhosp1.setTagname(tagname);\r\n        }\r\n        if (StringUtils.isNotEmpty(patMedInhosp.getPatname()) || StringUtils.isNotEmpty(patMedInhosp.getNurseName()) || StringUtils.isNotEmpty(patMedInhosp.getDrname())) {\r\n            //鑾峰彇澶栭儴瀵煎叆淇℃伅,骞跺皢澶栭儴鎮h�呮斁鍒皃atMedInhospList涓璡r\n            PatArchiveImport patArchiveImport = new PatArchiveImport();\r\n            if (StringUtils.isNotEmpty(patMedInhosp.getPatname())) {\r\n                patArchiveImport.setName(patMedInhosp.getPatname());\r\n            }\r\n            if (StringUtils.isNotEmpty(patMedInhosp.getNurseName()))\r\n                patArchiveImport.setCreateBy(patMedInhosp.getNurseName());\r\n            if (StringUtils.isNotEmpty(patMedInhosp.getDrname()))\r\n                patArchiveImport.setCreateBy(patMedInhosp.getDrname());\r\n            List<PatArchiveImport> patArchiveImports = patArchiveImportMapper.selectPatArchiveImportList(patArchiveImport);\r\n            if (CollectionUtils.isNotEmpty(patArchiveImports)) {\r\n                for (PatArchiveImport patArchiveImport1 : patArchiveImports) {\r\n                    PatMedInhosp patMedInhosp1 = new PatMedInhosp();\r\n                    patMedInhosp1.setPatname(patArchiveImport1.getName());\r\n                    patMedInhosp1.setSex(patArchiveImport1.getSex());\r\n                    patMedInhosp1.setNurseName(patArchiveImport1.getCreateBy());\r\n                    patMedInhosp1.setOutImport(1);\r\n                    patMedInhosp1.setTelcode(patArchiveImport1.getTelcode());\r\n                    patMedInhospList.add(patMedInhosp1);\r\n                }\r\n            }\r\n        }\r\n\r\n        return patMedInhospList;\r\n    }\r\n\r\n    private Date addDays(Date date, Integer days) {\r\n        if (days == null) {\r\n            days = 1;\r\n        }\r\n        Calendar calendar = Calendar.getInstance();\r\n        calendar.setTime(date);\r\n        calendar.add(Calendar.DAY_OF_MONTH, days);\r\n        return calendar.getTime();\r\n    }\r\n\r\n    //灏嗘偅鑰呮斁鍒皊ubtask涓璡r\n    private void writeInSubTask(Long taskid, Boolean check, PatMedInhosp patMedInhosp1, PatArchive patArchive, Integer type) {\r\n        String longTaskReason = patMedInhosp1.getLongTaskReason();\r\n        if (StringUtils.isEmpty(longTaskReason)) longTaskReason = \"\";\r\n        ServiceTask st = new ServiceTask();\r\n        st.setTaskid(taskid);\r\n        st.setSendState(2L);\r\n        List<ServiceTask> serviceTasks = serviceTaskMapper.selectServiceTaskList(st);\r\n        if (CollectionUtils.isEmpty(serviceTasks) && type == 1) {\r\n            log.info(\"璇ユ偅鑰呭嚭闄㈤殢璁块暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓猴細{}\", taskid);\r\n            patMedInhosp1.setDeptcheckFlag(\"2\");\r\n            patMedInhosp1.setLongTaskReason(longTaskReason + \" & 璇ユ偅鑰呯闄㈢瀹ら暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:\" + taskid);\r\n            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n            return;\r\n        } else if (CollectionUtils.isEmpty(serviceTasks) && type == 2) {\r\n            patMedInhosp1.setWardcheckFlag(\"2\");\r\n            patMedInhosp1.setLongTaskReason(longTaskReason + \" & 璇ユ偅鑰呯闄㈢梾鍖洪暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:\" + taskid);\r\n            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n            return;\r\n        } else if (CollectionUtils.isEmpty(serviceTasks) && type == 3) {\r\n            patMedInhosp1.setDiagcheckFlag(\"2\");\r\n            patMedInhosp1.setLongTaskReason(longTaskReason + \" & 璇ユ偅鑰呯柧鐥呴暱鏈熶换鍔′笉瀛樺湪,浠诲姟ID涓�:\" + taskid);\r\n            patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n            return;\r\n        }\r\n        ServiceTask serviceTask = serviceTasks.get(0);\r\n        //灏佽serviceSubtask\r\n        ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patMedInhosp1, patArchive);\r\n        if (type != 2) {\r\n            //绉戝鍜岀柧鐥� 閮界敤 绉戝濉厖\r\n            serviceSubtask.setVisitDeptCode(patMedInhosp1.getLeaveldeptcode());\r\n            serviceSubtask.setVisitDeptName(patMedInhosp1.getLeaveldeptname());\r\n        } else if (type == 2) {\r\n            serviceSubtask.setVisitDeptCode(patMedInhosp1.getLeavehospitaldistrictcode());\r\n            serviceSubtask.setVisitDeptName(patMedInhosp1.getLeavehospitaldistrictname());\r\n        }\r\n\r\n\r\n        Integer i = 0;\r\n        //鍏堝垽鏂竴涓嬶紝鏄惁闇�瑕佹牎楠孿r\n        if (check) {\r\n            //鍦ㄦ柊澧炰箣鍓嶏紝鍏堥�氳繃鎮h�匢D锛宻endstate=2鏌ヨ涓�涓嬶紝鍦ㄦ墍鏈夐暱鏈熶换鍔′腑锛屾槸涓嶆槸杩樻湁璇ユ偅鑰呭緟鎵ц鐨勪换鍔★紝鏈夌殑璇�,姣旇緝涔嬪墠鐨別ndtime鏄惁灏忎簬褰撳墠鐨別ndtaime,濡傛灉涔嬪墠鐨勫皬浜庣幇鍦ㄧ殑锛屽垯鐩存帴灏嗕箣鍓嶇殑鍋滄帀锛堝師鍥犲啀鍏ラ櫌锛塡r\n            ServiceSubtaskVO subtask = new ServiceSubtaskVO();\r\n            subtask.setPatid(patArchive.getId());\r\n            subtask.setSendstate(2L);\r\n            subtask.setTaskid(taskid);\r\n            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask);\r\n            log.info(\"璇ユ偅鑰呭緟鎵ц鐨勪换鍔�:{}\", selectServiceSubtaskList);\r\n            if (CollectionUtils.isNotEmpty(selectServiceSubtaskList) && selectServiceSubtaskList.size() > 0) {\r\n                for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {\r\n                    if (Objects.isNull(serviceSubtask1.getLongSendTime())) {\r\n                        //涓嶆槸闀挎湡浠诲姟锛屼笉澶勭悊\r\n                        continue;\r\n                    }\r\n                    //type = 1鎴�2 琛ㄧず 鈥濈瀹ゃ�佺梾鍖衡�淺r\n                    if (type == 1 || type == 2) {\r\n                        if (serviceSubtask1.getEndtime().before(serviceSubtask.getEndtime()) && serviceSubtask1.getServiceType().equals(\"2\")) {\r\n                            //濡傛灉褰撳墠寰幆鐨勫瓙浠诲姟鐨勫嚭闄㈡椂闂村湪鈥滃噯澶囨柊澧炵殑瀛愪换鍔♀�濈殑鍑洪櫌鏃堕棿涔嬪墠锛屽垯灏嗗惊鐜殑瀛愪换鍔″仠鎺塡r\n                            serviceSubtask1.setSendstate(4L);\r\n                            serviceSubtask1.setRemark(\"鎮h�呭啀鍏ラ櫌\");\r\n                            serviceSubtask1.setResult(\"error\");\r\n//                            serviceSubtask1.setFinishtime(new Date());\r\n                            serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy());\r\n                            serviceSubtask1.setUpdateTime(new Date());\r\n                            Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n                            if (aBoolean) i = 1;\r\n                        } else {\r\n                            //鐩稿弽,鍒欏皢褰撴湁鐨勬暟鎹仠鎺塡r\n                            serviceSubtask.setResult(\"error\");\r\n//                            serviceSubtask.setFinishtime(new Date());\r\n                            serviceSubtask.setSendstate(4L);\r\n                            serviceSubtask.setRemark(\"褰撳墠鎮h�呭嚭闄㈡椂闂村悗鏈夊緟鎵ц鐨勫嚭闄㈤殢璁块暱鏈熶换鍔");\r\n                            serviceSubtask.setCreateBy(serviceTask.getCreateBy());\r\n                            serviceSubtask.setCreateTime(new Date());\r\n                            i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n                        }\r\n                    } else if (type == 3) {\r\n                        //type=3 琛ㄧず鐤剧梾\r\n                        //灏嗕箣鍓嶇殑鍋滄帀\r\n                        serviceSubtask1.setSendstate(4L);\r\n                        serviceSubtask1.setRemark(\"鐤剧梾鎮h�呭啀鍏ラ櫌\");\r\n                        serviceSubtask1.setResult(\"error\");\r\n//                        serviceSubtask1.setFinishtime(new Date());\r\n                        serviceSubtask1.setUpdateBy(serviceTask.getUpdateBy());\r\n                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n                        //閲嶆柊鏂板瀛愪换鍔r\n                        i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n\r\n                    }\r\n                }\r\n            } else {\r\n                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {\r\n                    serviceSubtask.setRemark(\"鎵嬫満鍙蜂负绌篭");\r\n                    serviceSubtask.setSendstate(4L);\r\n                    serviceSubtask.setResult(\"error\");\r\n//                    serviceSubtask.setFinishtime(new Date());\r\n                }\r\n                serviceSubtask.setCreateBy(serviceTask.getCreateBy());\r\n                serviceSubtask.setCreateTime(new Date());\r\n                i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n            }\r\n        } else {\r\n            if (StringUtils.isEmpty(serviceSubtask.getPhone())) {\r\n                serviceSubtask.setRemark(\"鎵嬫満鍙蜂负绌篭");\r\n                serviceSubtask.setSendstate(4L);\r\n                serviceSubtask.setResult(\"error\");\r\n//                serviceSubtask.setFinishtime(new Date());\r\n\r\n            }\r\n            serviceSubtask.setCreateBy(serviceTask.getCreateBy());\r\n            serviceSubtask.setCreateTime(new Date());\r\n            i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n        }\r\n        if (i == 1) {\r\n            //灏哻heck_flag鏀规垚1锛堝凡澶勭悊锛塡r\n            PatMedInhosp patMedInhosp2 = new PatMedInhosp();\r\n            patMedInhosp2.setInhospid(patMedInhosp1.getInhospid());\r\n            if (type == 1) patMedInhosp2.setDeptcheckFlag(\"1\");\r\n            if (type == 2) patMedInhosp2.setWardcheckFlag(\"1\");\r\n            if (type == 3) patMedInhosp2.setDiagcheckFlag(\"1\");\r\n\r\n            patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);\r\n        } else {\r\n            //鐢熸垚瀛愪换鍔″け璐ワ紝\r\n            log.info(\"鐢熸垚瀛愪换鍔″け璐erviceSubtask涓猴細{}\", serviceSubtask);\r\n            PatMedInhosp patMedInhosp2 = new PatMedInhosp();\r\n            patMedInhosp2.setInhospid(patMedInhosp1.getInhospid());\r\n            if (type == 1) patMedInhosp2.setDeptcheckFlag(\"2\");\r\n            if (type == 2) patMedInhosp2.setWardcheckFlag(\"2\");\r\n            if (type == 3) patMedInhosp2.setDiagcheckFlag(\"2\");\r\n            patMedInhosp2.setRemark(\"鐢熸垚瀛愪换鍔″け璐� \" + type);\r\n            patMedInhospMapper.updatePatMedInhosp(patMedInhosp2);\r\n        }\r\n    }\r\n\r\n    //灏佽serviceSubtask\r\n    private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive) {\r\n        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);\r\n        serviceSubtask.setTaskid(serviceTask.getTaskid());\r\n        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))\r\n            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));\r\n        serviceSubtask.setNurseId(patMedInhosp1.getNurseId());\r\n        serviceSubtask.setNurseName(patMedInhosp1.getNurseName());\r\n        serviceSubtask.setInhospid(patMedInhosp1.getInhospid());\r\n        serviceSubtask.setDrcode(patMedInhosp1.getDrcode());\r\n        serviceSubtask.setDrname(patMedInhosp1.getDrname());\r\n        serviceSubtask.setDeptcode(patMedInhosp1.getLeaveldeptcode());\r\n        serviceSubtask.setDeptname(patMedInhosp1.getLeaveldeptname());\r\n        serviceSubtask.setLeaveicd10code(patMedInhosp1.getLeaveicd10code());\r\n        serviceSubtask.setLeavediagname(patMedInhosp1.getDiagname());\r\n        serviceSubtask.setTemplateid(serviceTask.getTemplateid());\r\n        serviceSubtask.setTemplatename(serviceTask.getTemplatename());\r\n        serviceSubtask.setPatid(patArchive.getId());\r\n        serviceSubtask.setSendname(patArchive.getName());\r\n        serviceSubtask.setSfzh(patArchive.getIdcardno());\r\n        serviceSubtask.setPhone(patArchive.getTelcode());\r\n        if (StringUtils.isBlank(patArchive.getTelcode())) serviceSubtask.setPhone(patArchive.getRelativetelcode());\r\n        serviceSubtask.setSex(patArchive.getSex());\r\n        serviceSubtask.setAge(patArchive.getAge());\r\n        serviceSubtask.setSendstate(2L);\r\n        serviceSubtask.setManagementDoctor(patMedInhosp1.getManagementDoctor());\r\n        serviceSubtask.setManagementDoctorCode(patMedInhosp1.getManagementDoctorCode());\r\n        serviceSubtask.setStarttime(patMedInhosp1.getStarttime());\r\n        serviceSubtask.setEndtime(patMedInhosp1.getEndtime());\r\n        serviceSubtask.setServiceType(serviceTask.getServiceType());\r\n        serviceSubtask.setPreachform(serviceTask.getPreachform());\r\n        serviceSubtask.setHospType(\"2\");\r\n        serviceSubtask.setCreateTime(new Date());\r\n        serviceSubtask.setUpdateTime(new Date());\r\n        serviceSubtask.setCreateBy(patMedInhosp1.getNurseName());\r\n        serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());\r\n        serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());\r\n        serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());\r\n        serviceSubtask.setUpdateTime(new Date());\r\n        //璁剧疆鍙戦�佹椂闂碶r\n        if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L);\r\n        Date newDate = addDays(patMedInhosp1.getEndtime(), serviceTask.getSendDay().intValue());\r\n        serviceSubtask.setLongSendTime(newDate);\r\n        serviceSubtask.setVisitTime(newDate);\r\n        //濡傛灉鏄�氱煡鐨勮瘽锛岄渶瑕佹彁鍓嶅嚑澶╁皢閫氳繃鐭俊鍙戝嚭鍘伙紙鍏蜂綋鍑犲ぉ锛岃繖涓彲浠ラ厤缃湪sys_conf琛ㄤ腑锛塡r\n        if (\"3\".equals(serviceTask.getType())) {\r\n            serviceSubtask.setVisitTime(minusDay(newDate, 2));\r\n        }\r\n\r\n\r\n        //鎮h�呭彂閫佹椂闂碶r\n        if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals(\"1\")) {\r\n            String remark = patArchive.getNotrequiredreason();\r\n            serviceSubtask.setRemark(remark);\r\n            serviceSubtask.setResult(\"error\");\r\n            //涓嶆墽琛孿r\n            serviceSubtask.setSendstate(4L);\r\n        }\r\n        return serviceSubtask;\r\n    }\r\n\r\n    /**\r\n     * 鍑忓幓鐩稿簲澶╂暟\r\n     *\r\n     * @param originalDate\r\n     * @param day\r\n     * @return\r\n     */\r\n    public Date minusDay(Date originalDate, Integer day) {\r\n        // 1. 灏� Date 杞崲涓� Instant\r\n        Instant instant = originalDate.toInstant();\r\n\r\n        // 2. 鍦� Instant 涓婂噺鍘�2澶‐r\n        Instant twoDaysAgoInstant = instant.minus(2, ChronoUnit.DAYS);\r\n\r\n        // 3. 灏嗚绠楀悗鐨� Instant 杞洖 Date\r\n        return Date.from(twoDaysAgoInstant);\r\n    }\r\n\r\n    //澶勭悊鍏ラ櫌淇℃伅\r\n    private void dealInHospInfo(List<PatMedInhosp> patMedInhospList) {\r\n        for (PatMedInhosp patMedInhosp1 : patMedInhospList) {\r\n            try {\r\n                //鑾峰彇褰撳墠鍏ラ櫌鎮h�呯殑寰呮墽琛岀殑鍑洪櫌瀛愪换鍔¢殢璁夸俊鎭痋r\n                ServiceSubtaskVO subtask = new ServiceSubtaskVO();\r\n                subtask.setPatid(patMedInhosp1.getPatid());\r\n                subtask.setSendstate(2L);\r\n                List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(subtask);\r\n//                log.error(\"鍏ラ櫌鐨勬偅鑰呭緟鎵ц鐨勪换鍔�:{}\", selectServiceSubtaskList);\r\n                if (CollectionUtils.isNotEmpty(selectServiceSubtaskList) && selectServiceSubtaskList.size() > 0) {\r\n                    for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {\r\n                        if (Objects.isNull(serviceSubtask1.getLongSendTime())) {\r\n                            //涓嶆槸闀挎湡浠诲姟锛屼笉澶勭悊\r\n                            continue;\r\n                        }\r\n                        if (serviceSubtask1.getEndtime().before(patMedInhosp1.getStarttime())) {\r\n                            //濡傛灉褰撳墠寰幆鐨勫瓙浠诲姟鐨勫嚭闄㈡椂闂村湪鈥滃噯澶囨柊澧炵殑瀛愪换鍔♀�濈殑鍑洪櫌鏃堕棿涔嬪墠锛屽垯灏嗗惊鐜殑瀛愪换鍔″仠鎺塡r\n//                            log.error(\"鎮h�呭啀鍏ラ櫌鐨剆erviceSubtask1涓�:{}\", serviceSubtask1);\r\n                            serviceSubtask1.setSendstate(4L);\r\n                            serviceSubtask1.setRemark(\"鎮h�呭啀鍏ラ櫌\");\r\n                            serviceSubtask1.setResult(\"error\");\r\n//                            serviceSubtask1.setFinishtime(new Date());\r\n                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n                        }\r\n                    }\r\n                }\r\n                //灏嗘偅鍏ョ殑鍏ラ櫌鏁版嵁璁剧疆涓哄凡澶勭悊\r\n                patMedInhospMapper.updatePatMedInhosp(patMedInhosp1);\r\n            } catch (Exception e) {\r\n                log.error(\"鍏ラ櫌鏁版嵁淇℃伅鍑哄紓甯镐簡锛歿},{}\", patMedInhosp1, e.getMessage());\r\n            }\r\n        }\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedInhospServiceImpl.java	(date 1759040222226)
-@@ -1,5 +1,8 @@
- package com.smartor.service.impl;
- 
-+import com.fasterxml.jackson.core.JsonProcessingException;
-+import com.fasterxml.jackson.core.type.TypeReference;
-+import com.fasterxml.jackson.databind.ObjectMapper;
- import com.ruoyi.common.core.domain.entity.SysDept;
- import com.ruoyi.common.utils.DateUtils;
- import com.ruoyi.common.utils.DtoConversionUtils;
-@@ -46,7 +49,7 @@
-     @Autowired
-     private ServiceSubtaskMapper serviceSubtaskMapper;
-     @Autowired
--    private SysUserDeptMapper sysUserDeptMapper;
-+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
- 
-     @Value("${visitHosp}")
-     private Integer visitHosp;
-@@ -619,31 +622,17 @@
-                         serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
-                         //閲嶆柊鏂板瀛愪换鍔�
-                         i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
-+                        //杩欓噷闇�瑕佸叏澶辫触
-+                        addServiceSubtaskPreachform(serviceSubtask, "5");
- 
-                     }
-                 }
--            } else {
--                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
--                    serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
--                    serviceSubtask.setSendstate(4L);
--                    serviceSubtask.setResult("error");
--//                    serviceSubtask.setFinishtime(new Date());
--                }
--                serviceSubtask.setCreateBy(serviceTask.getCreateBy());
--                serviceSubtask.setCreateTime(new Date());
--                i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
--            }
--        } else {
--            if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
--                serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
--                serviceSubtask.setSendstate(4L);
--                serviceSubtask.setResult("error");
--//                serviceSubtask.setFinishtime(new Date());
--
--            }
-+            }
-+        } else {
-             serviceSubtask.setCreateBy(serviceTask.getCreateBy());
-             serviceSubtask.setCreateTime(new Date());
-             i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
-+            addServiceSubtaskPreachform(serviceSubtask, null);
-         }
-         if (i == 1) {
-             //灏哻heck_flag鏀规垚1锛堝凡澶勭悊锛�
-@@ -667,6 +656,36 @@
-         }
-     }
- 
-+    private Integer addServiceSubtaskPreachform(ServiceSubtask serviceSubtask, String sendstate) {
-+        //灏唒reachform鐨刯son瀵硅薄锛屾斁鍒發ist闆嗗悎涓�
-+        String preachform = serviceSubtask.getPreachform();
-+        ObjectMapper objectMapper = new ObjectMapper();
-+        if (org.apache.commons.lang3.StringUtils.isNotEmpty(preachform)) {
-+            List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = null;
-+            try {
-+                serviceSubtaskPreachformList = objectMapper.readValue(preachform, new TypeReference<List<ServiceSubtaskPreachform>>() {
-+                });
-+            } catch (JsonProcessingException e) {
-+                log.error("preachform杞琇ist<ServiceSubtaskPreachform>鎶ラ敊浜嗭細{}", e.getMessage());
-+            }
-+            for (ServiceSubtaskPreachform serviceSubtaskPreachform : serviceSubtaskPreachformList) {
-+                serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+                serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+                //杩欎釜sendstate闇�瑕佸湪鏁版嵁搴撹缃竴涓粯璁ゅ�间负鈥�1鈥�
-+                serviceSubtaskPreachform.setSendstate("1");
-+                if (StringUtils.isNotEmpty(sendstate)) serviceSubtaskPreachform.setSendstate(sendstate);
-+
-+                serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+                return serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
-+
-+            }
-+
-+        }
-+
-+        return 0;
-+    }
-+
-+
-     //灏佽serviceSubtask
-     private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedInhosp patMedInhosp1, PatArchive patArchive) {
-         ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport com.github.pagehelper.ISelect;\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.enums.PreachFormEnum;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.PageUtils;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.PatMedInhospMapper;\r\nimport com.smartor.mapper.PatMedOuthospMapper;\r\nimport com.smartor.service.IServiceSubtaskRecordService;\r\nimport com.smartor.service.IServiceSubtaskService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.web.bind.annotation.*;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥殢璁匡級Controller\r\n *\r\n * @author ruoyi\r\n * @date 2024-02-02\r\n */\r\n@Slf4j\r\n@Api(description = \"鍗曚竴浠诲姟锛堥殢璁垮鏁欙級\")\r\n@RestController\r\n@RequestMapping(\"/smartor/serviceSubtask\")\r\npublic class ServiceSubtaskController extends BaseController {\r\n    @Autowired\r\n    private IServiceSubtaskService serviceSubtaskService;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskRecordService serviceSubtaskRecordService;\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呴殢璁夸俊鎭痋r\n     */\r\n    @ApiOperation(\"鏌ヨ鎮h�呴殢璁夸俊鎭痋")\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:list')\")\r\n    @PostMapping(\"/patItem\")\r\n    public TableDataInfo patItem(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {\r\n        PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());\r\n        List<ServiceSubtask> serviceSubtaskList = null;\r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        serviceSubtaskVO.setOrgid(user.getOrgid());\r\n        if (serviceSubtaskVO != null) {\r\n            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);\r\n        }\r\n        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n            serviceSubtaskRecord.setOrgid(serviceSubtask.getOrgid());\r\n            if (ObjectUtils.isNotEmpty((serviceSubtask.getTaskid())))\r\n                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n            serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));\r\n        }\r\n        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);\r\n        map.put(\"serviceSubtaskList\", serviceSubtaskList);\r\n        List<Map<String, Object>> list = new ArrayList<>();\r\n        list.add(map);\r\n        //鑾峰彇total\r\n        long total = PageUtils.count(new ISelect() {\r\n            @Override\r\n            public void doSelect() {\r\n                serviceSubtaskVO.setPageNum(null);\r\n                serviceSubtaskVO.setPageSize(null);\r\n                serviceSubtaskService.patItem(serviceSubtaskVO);\r\n            }\r\n        });\r\n        return getDataTable2(total, list);\r\n//        return getDataTable(serviceSubtaskService.patItem(ivrTaskcall));\r\n    }\r\n\r\n\r\n    /**\r\n     * 瀵煎嚭鍗曚竴浠诲姟锛堥殢璁垮鏁欙級鍒楄〃\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:export')\")\r\n    @Log(title = \"鍗曚竴浠诲姟锛堥殢璁垮鏁欙級\", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/patItemExport\")\r\n    public void patItemExport(HttpServletResponse response, ServiceSubtaskVO serviceSubtaskVO) {\r\n        List<ServiceSubtask> serviceSubtaskList = null;\r\n        if (serviceSubtaskVO != null) {\r\n            if (serviceSubtaskVO.getPageNum() != null && serviceSubtaskVO.getPageSize() != null)\r\n                PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());\r\n            serviceSubtaskList = serviceSubtaskService.patItem(serviceSubtaskVO);\r\n        }\r\n        List<ServiceSubtaskExprot> serviceSubtaskExprots = null;\r\n        if (!CollectionUtils.isEmpty(serviceSubtaskList)) {\r\n            serviceSubtaskExprots = DtoConversionUtils.sourceToTarget(serviceSubtaskList, ServiceSubtaskExprot.class);\r\n            for (ServiceSubtaskExprot serviceSubtaskExprot : serviceSubtaskExprots) {\r\n                String pf = PreachFormEnum.getDescByCode(serviceSubtaskExprot.getPreachform());\r\n                serviceSubtaskExprot.setPreachform(pf);\r\n            }\r\n\r\n        }\r\n\r\n\r\n        ExcelUtil<ServiceSubtaskExprot> util = new ExcelUtil<ServiceSubtaskExprot>(ServiceSubtaskExprot.class);\r\n        util.exportExcel(response, serviceSubtaskExprots, \"鎮h�呴殢璁夸俊鎭〃鍗昞");\r\n    }\r\n\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呴殢璁夸俊鎭痋r\n     */\r\n    @ApiOperation(\"鏌ヨ鎮h�呴殢璁夸俊鎭痋")\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:list')\")\r\n    @PostMapping(\"/patItemByCondition\")\r\n    public TableDataInfo patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {\r\n        List<ServiceSubtask> serviceSubtaskList = null;\r\n        if (serviceSubtaskVO != null) {\r\n            PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());\r\n            serviceSubtaskList = serviceSubtaskService.patItem2(serviceSubtaskVO);\r\n        }\r\n        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n            serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));\r\n        }\r\n        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);\r\n        map.put(\"serviceSubtaskList\", serviceSubtaskList);\r\n        List<Map<String, Object>> list = new ArrayList<>();\r\n        list.add(map);\r\n        //鑾峰彇total\r\n        long total = PageUtils.count(new ISelect() {\r\n            @Override\r\n            public void doSelect() {\r\n                serviceSubtaskVO.setPageNum(null);\r\n                serviceSubtaskVO.setPageSize(null);\r\n                serviceSubtaskService.patItem2(serviceSubtaskVO);\r\n            }\r\n        });\r\n        return getDataTable2(total, list);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎嚭鍗曚竴浠诲姟锛堥殢璁垮鏁欙級鍒楄〃\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:export')\")\r\n    @Log(title = \"鍗曚竴浠诲姟锛堥殢璁垮鏁欙級\", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, ServiceSubtask serviceSubtask) {\r\n        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);\r\n        List<ServiceSubtask> list = serviceSubtaskService.selectServiceSubtaskList(serviceSubtaskVO);\r\n        ExcelUtil<ServiceSubtask> util = new ExcelUtil<ServiceSubtask>(ServiceSubtask.class);\r\n        util.exportExcel(response, list, \"鍗曚竴浠诲姟锛堥殢璁匡級鏁版嵁\");\r\n    }\r\n\r\n\r\n    /**\r\n     * 鍐嶆闅忚鏁版嵁鏌ヨ\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:export')\")\r\n    @Log(title = \"鍐嶆闅忚鏁版嵁鏌ヨ\", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/querySubtaskListAgain\")\r\n    public TableDataInfo querySubtaskListAgain(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {\r\n        PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());\r\n        serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskVO);\r\n        return getDataTable(serviceSubtaskService.selectServiceSubtaskListAgain(serviceSubtaskVO));\r\n    }\r\n\r\n\r\n    /**\r\n     * 鑾峰彇鍗曚竴浠诲姟锛堥殢璁匡級璇︾粏淇℃伅\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:query')\")\r\n    @GetMapping(value = \"/getInfo/{id}\")\r\n    public AjaxResult getInfo(@PathVariable(\"id\") Long id) {\r\n        return success(serviceSubtaskService.selectServiceSubtaskById(id));\r\n    }\r\n\r\n    /**\r\n     * 鏂板鎴栦慨鏀瑰垹闄ゅ崟涓�浠诲姟\r\n     */\r\n    @ApiOperation(\"鏂板鎴栦慨鏀瑰垹闄ゅ崟涓�浠诲姟\")\r\n    //@PreAuthorize(\"@ss.hasPermi('system:task:add')\")\r\n    @Log(title = \"鍗曚竴浠诲姟锛堥殢璁匡級\", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/insertOrUpdateTask\")\r\n    public AjaxResult insertOrUpdateHeTask(@RequestBody ServiceTaskVO ivrTaskVO) {\r\n        log.info(\"insertOrUpdateHeTask鐨勫叆鍙備负锛歿}\", ivrTaskVO);\r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        ivrTaskVO.setCreateBy(user.getNickName());\r\n        ivrTaskVO.setUpdateBy(user.getNickName());\r\n        ivrTaskVO.setOrgid(user.getOrgid());\r\n        return success(serviceSubtaskService.insertOrUpdateTask(ivrTaskVO));\r\n    }\r\n\r\n    @ApiOperation(\"淇敼瀛愪换鍔")\r\n    @PostMapping(\"/update\")\r\n    public AjaxResult update(@RequestBody ServiceSubtask serviceSubtask) {\r\n        serviceSubtask.setUpdateBy(getLoginUser().getUser().getNickName());\r\n        return toAjax(serviceSubtaskService.updateServiceSubtask(serviceSubtask));\r\n    }\r\n\r\n    @ApiOperation(\"鏂板瀛愪换鍔")\r\n    @PostMapping(\"/addSubTask\")\r\n    public AjaxResult addSubTask(@RequestBody ServiceSubtask serviceSubtask) {\r\n        SysUser user = getLoginUser().getUser();\r\n        if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setOrgid(user.getOrgid());\r\n        return toAjax(serviceSubtaskService.insertServiceSubtask(serviceSubtask));\r\n    }\r\n\r\n    @ApiOperation(\"鎮h�呭啀娆¢殢璁縗")\r\n    @PostMapping(\"/addSubTaskAgain\")\r\n    public AjaxResult addSubTaskAgain(@RequestBody ServiceSubtask serviceSubtask) {\r\n        SysUser user = getLoginUser().getUser();\r\n        if (ObjectUtils.isNotEmpty(user)) serviceSubtask.setOrgid(user.getOrgid());\r\n        return success(serviceSubtaskService.addSubTaskAgain(serviceSubtask));\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅\r\n     */\r\n    @ApiOperation(\"鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅\")\r\n    @PostMapping(\"/queryTaskByCondition\")\r\n    public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO ivrTaskcallVO) {\r\n        //鏍规嵁鍏ュ弬鏌ヨ淇℃伅\r\n        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, ServiceSubtask.class);\r\n        ServiceTaskVO ivrTaskVO = serviceSubtaskService.queryTaskByCondition(serviceSubtask);\r\n        return success(ivrTaskVO);\r\n    }\r\n\r\n    /**\r\n     * 鐢佃瘽鍥炶皟浠诲姟(涓婃捣)\r\n     */\r\n    @ApiOperation(\"鐢佃瘽鍥炶皟浠诲姟\")\r\n    @PostMapping(\"/phoneCallBack\")\r\n    public AjaxResult phoneCallBack(@RequestBody PhoneCallBackVO phoneCallBackVO) {\r\n        serviceSubtaskService.phoneCallBack(phoneCallBackVO);\r\n        return success();\r\n    }\r\n\r\n    @ApiOperation(\"鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划)\")\r\n    @PostMapping(\"/phoneCallBackYQ\")\r\n    public PhoneCallBackYQVO phoneCallBackYQ(@RequestBody PhoneCallReqYQVO phoneCallReqYQVO) {\r\n        log.info(\"鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划) 锛焮}\", phoneCallReqYQVO);\r\n//        SysUser user = getLoginUser().getUser();\r\n//        phoneCallReqYQVO.setOrgid(user.getOrgid());\r\n        PhoneCallBackYQVO phoneCallBackYQVO = serviceSubtaskService.phoneCallBackYQ(phoneCallReqYQVO);\r\n        return phoneCallBackYQVO;\r\n    }\r\n\r\n    /**\r\n     * 鐢佃瘽浠诲姟鎷夊彇(闆ㄧ划)\r\n     */\r\n    @ApiOperation(\"鐢佃瘽浠诲姟鎷夊彇(闆ㄧ划)\")\r\n    @PostMapping(\"/taskPull\")\r\n    public List<PullTaskVO> taskPull() {\r\n        log.info(\"鐢佃瘽浠诲姟鎷夊彇(闆ㄧ划)\");\r\n        List<PullTaskVO> pullTaskVOList = serviceSubtaskService.taskPull();\r\n        log.info(\"鐢佃瘽浠诲姟鎷夊彇鏁版嵁(闆ㄧ划):{}\", pullTaskVOList);\r\n        return pullTaskVOList;\r\n    }\r\n\r\n    /**\r\n     * 鎮h�呴棶棰樼粨鏋滆褰昞r\n     */\r\n    @ApiOperation(\"鎮h�呴棶棰樼粨鏋滆褰曪紙鐢佃瘽锛塡")\r\n    @PostMapping(\"/saveQuestionAnswerPhone\")\r\n    public AjaxResult saveQuestionAnswerPhone(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) {\r\n//        SysUser user = getLoginUser().getUser();\r\n//        serviceSubTaskDetailReq.setOrgid(user.getOrgid());\r\n        return toAjax(serviceSubtaskService.saveQuestionAnswerPhone(serviceSubTaskDetailReq));\r\n    }\r\n\r\n    /**\r\n     * 閫氳瘽璁板綍鍥炶皟\r\n     */\r\n    @ApiOperation(\"閫氳瘽璁板綍鍥炶皟(涓婃捣)\")\r\n    @PostMapping(\"/recordAcceptshanghai\")\r\n    public AjaxResult recordAccepshanghait(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) {\r\n        return toAjax(serviceSubtaskService.saveQuestionAnswerPhone(serviceSubTaskDetailReq));\r\n    }\r\n\r\n    /**\r\n     * 閫氳瘽璁板綍鍥炶皟\r\n     */\r\n    @ApiOperation(\"閫氳瘽璁板綍鍥炶皟(闆ㄧ划)\")\r\n    @PostMapping(\"/recordAccept\")\r\n    public AjaxResult recordAccept(@RequestBody PhoneCallRecordVO phoneCallRecordVO) {\r\n        log.info(\"閫氳瘽璁板綍鍥炶皟(闆ㄧ划):{}\", phoneCallRecordVO);\r\n        serviceSubtaskService.recordAccept(phoneCallRecordVO);\r\n        return success();\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇姣忎釜鏈堢殑闅忚銆佸璇婇噺\r\n     */\r\n    @ApiOperation(\"鑾峰彇姣忎釜鏈堢殑闅忚銆佸璇婇噺\")\r\n    @PostMapping(\"/getSfFzInfoEveryMonth\")\r\n    public TableDataInfo getSfFzInfoEveryMonth(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        return getDataTable(serviceSubtaskService.getSfFzInfoEveryMonth(serviceSubtaskCountReq));\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇闅忚缁熻姣斾緥\r\n     */\r\n    @ApiOperation(\"鑾峰彇闅忚缁熻姣斾緥\")\r\n    @PostMapping(\"/getSfStatistics\")\r\n    public AjaxResult getSfStatistics(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {\r\n            return error(\"鏈嶅姟绫诲瀷涓嶈兘涓虹┖\");\r\n        }\r\n        return success(serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq));\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇闅忚缁熻姣斾緥\r\n     */\r\n    @ApiOperation(\"鑾峰彇闅忚婊℃剰搴︾粺璁")\r\n    @PostMapping(\"/getSfStatisticsJoy\")\r\n    public AjaxResult getSfStatisticsJoy(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {\r\n            return error(\"鏈嶅姟绫诲瀷涓嶈兘涓虹┖\");\r\n        }\r\n        return success(serviceSubtaskService.getSfStatisticsJoy(serviceSubtaskCountReq));\r\n    }\r\n\r\n    /**\r\n     * 闅忚缁熻瀵煎嚭\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:taskcall:export')\")\r\n    @Log(title = \"闅忚缁熻瀵煎嚭锛塡", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/getSfStatisticsExport\")\r\n    public void export(HttpServletResponse response, ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        List<ServiceSubtaskStatistic> sfStatistics = serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq);\r\n        ExcelUtil<ServiceSubtaskStatistic> util = new ExcelUtil<ServiceSubtaskStatistic>(ServiceSubtaskStatistic.class);\r\n        util.exportExcel(response, sfStatistics, \"闅忚缁熻瀵煎嚭\");\r\n    }\r\n\r\n    /**\r\n     * 闅忚缁熻瀵煎嚭\r\n     */\r\n    @ApiOperation(\"鏈嶅姟缁熻鏌ヨ-鎸夋椂闂寸淮搴︾粺璁″嚭闄�/闂ㄨ瘖闅忚鏁版嵁\")\r\n    @PostMapping(\"/getServiceStatistics\")\r\n    public AjaxResult getServiceStatistics(@RequestBody ServiceStatisticsRequest serviceStatisticsRequest) {\r\n        SysUser user = getLoginUser().getUser();\r\n        serviceStatisticsRequest.setOrgid(user.getOrgid());\r\n        List<ServiceStatisticsResponse> serviceStatistics = serviceSubtaskService.getServiceStatistics(serviceStatisticsRequest);\r\n        return success(serviceStatistics);\r\n    }\r\n\r\n\r\n    /**\r\n     * 鑾峰彇闅忚缁熻姣斾緥\r\n     */\r\n    @ApiOperation(\"鑾峰彇闅忚婊℃剰搴︽槑缁哱")\r\n    @PostMapping(\"/getSfStatisticsJoydetails\")\r\n    public AjaxResult getSfStatisticsJoydetails(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size()==0&&\r\n                serviceSubtaskCountReq.getDeptcodes().size()==0) {\r\n            return error(\"绉戝鎴栫梾鍖轰笉鑳戒负绌篭");\r\n        }\r\n        return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq));\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java	(date 1758798202615)
-@@ -85,7 +85,6 @@
-             }
-         });
-         return getDataTable2(total, list);
--//        return getDataTable(serviceSubtaskService.patItem(ivrTaskcall));
-     }
- 
- 
-@@ -111,8 +110,6 @@
-             }
- 
-         }
--
--
-         ExcelUtil<ServiceSubtaskExprot> util = new ExcelUtil<ServiceSubtaskExprot>(ServiceSubtaskExprot.class);
-         util.exportExcel(response, serviceSubtaskExprots, "鎮h�呴殢璁夸俊鎭〃鍗�");
-     }
-@@ -254,8 +251,6 @@
-     @PostMapping("/phoneCallBackYQ")
-     public PhoneCallBackYQVO phoneCallBackYQ(@RequestBody PhoneCallReqYQVO phoneCallReqYQVO) {
-         log.info("鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划) 锛焮}", phoneCallReqYQVO);
--//        SysUser user = getLoginUser().getUser();
--//        phoneCallReqYQVO.setOrgid(user.getOrgid());
-         PhoneCallBackYQVO phoneCallBackYQVO = serviceSubtaskService.phoneCallBackYQ(phoneCallReqYQVO);
-         return phoneCallBackYQVO;
-     }
-Index: smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.alibaba.fastjson2.JSON;\r\nimport com.fasterxml.jackson.core.JsonProcessingException;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.enums.HospTypeEnum;\r\nimport com.ruoyi.common.enums.ServiceTaskTypeEnum;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.*;\r\nimport com.smartor.common.LSHospTokenUtil;\r\nimport com.smartor.common.LyraTokenUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.BaseOrganizationMapper;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport com.smartor.service.IServiceTaskService;\r\nimport com.smartor.service.ISvyTaskSingleService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.io.IOException;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.*;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥棶鍗凤級Service涓氬姟灞傚鐞哱r\n *\r\n * @author ruoyi\r\n * @date 2024-06-12\r\n */\r\n@Slf4j\r\n@Service\r\npublic class SvyTaskSingleServiceImpl implements ISvyTaskSingleService {\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private IServiceTaskService iServiceTaskService;\r\n\r\n    @Autowired\r\n    private BaseOrganizationMapper baseOrganizationMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n\r\n    @Override\r\n    public int insertOrUpdateSvyTask(ServiceTaskVO serviceTaskVO) {\r\n        if (ObjectUtils.isEmpty(serviceTaskVO)) {\r\n            log.info(\"闂嵎浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n            throw new BaseException(\"闂嵎浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n        }\r\n        Integer integer = 1;\r\n        ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);\r\n        serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));\r\n        if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {\r\n            //寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))\r\n                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));\r\n            if (serviceTask.getSendState() == null) serviceTask.setSendState(1L);\r\n            serviceTask.setTemplateid(Long.valueOf(serviceTaskVO.getLibtemplateid()));\r\n            iServiceTaskService.insertServiceTask(serviceTask);\r\n\r\n            //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓璡r\n            ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);\r\n            serviceSubtask.setTaskid(serviceTask.getTaskid());\r\n            //鏂板\r\n            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {\r\n                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {\r\n                    //灏嗕换鍔′俊鎭柊澧炲埌闅忚鏈嶅姟琛ㄤ腑\r\n                    serviceSubtask.setSendname(patTaskRelevance.getName());\r\n                    serviceSubtask.setAge(patTaskRelevance.getAge());\r\n                    serviceSubtask.setSfzh(patTaskRelevance.getSfzh());\r\n                    serviceSubtask.setPhone(patTaskRelevance.getPhone());\r\n                    serviceSubtask.setAddr(patTaskRelevance.getAddr());\r\n                    serviceSubtask.setPatid(patTaskRelevance.getPatid());\r\n                    serviceSubtask.setSendstate(1L);\r\n                    serviceSubtask.setHospType(patTaskRelevance.getHospType());\r\n                    serviceSubtask.setCreateTime(DateUtils.getNowDate());\r\n                    serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n                    integer = serviceSubtask.getId().intValue();\r\n                }\r\n            }\r\n\r\n        } else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {\r\n            //浠诲姟淇敼\r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))\r\n                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));\r\n            //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1\r\n            ServiceTask serviceTask2 = iServiceTaskService.selectServiceTaskByTaskid(serviceTaskVO.getTaskid());\r\n//            serviceTask2.setStopState(serviceTask.getStopState() + 1);\r\n            serviceTask2.setTemplateid(Long.valueOf(serviceTaskVO.getLibtemplateid()));\r\n            iServiceTaskService.updateServiceTask(serviceTask2);\r\n\r\n            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎\r\n            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n            serviceSubtaskVO.setTaskid(serviceTask2.getTaskid());\r\n            serviceSubtaskVO.setSendstate(2L);\r\n            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskVO.setSendstate(1L);\r\n            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);\r\n            } else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                    log.info(\"insertOrUpdateSvyTask闇�瑕佺Щ闄ょ殑subId涓猴細{}\", serviceSubtask.getId().toString());\r\n                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());\r\n                    redisCache.removeElementFromList(\"cache-exist\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-0\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-1\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-2\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-3\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-4\", serviceSubtask.getId().toString());\r\n                }\r\n            }\r\n\r\n\r\n            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {\r\n                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {\r\n\r\n                    ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);\r\n                    serviceSubtask.setSendname(patTaskRelevance.getName());\r\n                    serviceSubtask.setAge(patTaskRelevance.getAge());\r\n                    serviceSubtask.setSfzh(patTaskRelevance.getSfzh());\r\n                    serviceSubtask.setPhone(patTaskRelevance.getPhone());\r\n                    serviceSubtask.setAddr(patTaskRelevance.getAddr());\r\n                    serviceSubtask.setPatid(patTaskRelevance.getPatid());\r\n                    serviceSubtask.setHospType(patTaskRelevance.getHospType());\r\n                    serviceSubtask.setCreateTime(DateUtils.getNowDate());\r\n                    serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));\r\n                    if (patTaskRelevance.getIsoperation() != null) {\r\n                        optionHandle(serviceSubtask, serviceTaskVO.getTaskid(), patTaskRelevance.getIsoperation(), patTaskRelevance.getPatid());\r\n                    } else if (patTaskRelevance.getIsoperation() == null) {\r\n                        optionHandle(serviceSubtask, serviceTaskVO.getTaskid(), serviceTaskVO.getIsoperation(), patTaskRelevance.getPatid());\r\n                    }\r\n                    integer = serviceSubtask.getTaskid().intValue();\r\n                }\r\n            }\r\n        }\r\n        return integer;\r\n    }\r\n\r\n    @Override\r\n    public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {\r\n        //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚圽r\n        List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskid(serviceSubtask.getTaskid());\r\n        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n        if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {\r\n            return new ServiceTaskVO();\r\n        }\r\n        ServiceTask serviceTask = iServiceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n        //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ivrTasksingleVO涓璡r\n        ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(selectServiceSubtaskList.get(0), ServiceTaskVO.class);\r\n        serviceTaskVO.setShowDate(serviceTask.getShowDate());\r\n        serviceTaskVO.setShowTimeMorn(serviceTask.getShowTimeMorn());\r\n        serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon());\r\n        serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight());\r\n        serviceTaskVO.setPreachform(serviceTask.getPreachform());\r\n        String sendTimeSlot = serviceTask.getSendTimeSlot();\r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        try {\r\n            //鑾峰彇鍒板彂閫佹椂闂寸殑闆嗗悎\r\n            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {\r\n                List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);\r\n                serviceTaskVO.setSendTimeslot(taskSendTimeVOList);\r\n                serviceTaskVO.setSendType(serviceTask.getSendType());\r\n            }\r\n            //鏂囨湰鍙橀噺鍙傛暟\r\n            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(serviceTask.getTextParam())) {\r\n                Map<String, Map<String, String>> textParam = objectMapper.readValue(serviceTask.getTextParam(), Map.class);\r\n                serviceTaskVO.setTextParam(textParam);\r\n            }\r\n        } catch (JsonProcessingException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n        for (ServiceSubtask serviceSubtask1 : selectServiceSubtaskList) {\r\n            PatTaskRelevance patTaskRelevance = new PatTaskRelevance();\r\n            if (!serviceSubtask1.getHospType().equals(\"2\")) {\r\n                log.info(\"闅忚鏌ヨ涓嶄负鍑洪櫌锛寋}\", serviceSubtask1.getHospType());\r\n                //鑾峰彇鍒版偅鑰呬俊鎭紝骞舵斁鍏ュ埌闆嗗悎涓璡r\n                patTaskRelevance.setName(serviceSubtask1.getSendname());\r\n                patTaskRelevance.setAge(serviceSubtask1.getAge());\r\n                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());\r\n                patTaskRelevance.setPhone(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setAddr(serviceSubtask1.getAddr());\r\n                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());\r\n                patTaskRelevance.setPatid(serviceSubtask1.getPatid());\r\n                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());\r\n                patTaskRelevances.add(patTaskRelevance);\r\n            }\r\n            if (serviceSubtask1.getHospType().equals(\"2\")) {\r\n                log.info(\"闅忚鏌ヨ涓哄嚭闄紝{}\", serviceSubtask1.getHospType());\r\n                patTaskRelevance.setName(serviceSubtask1.getSendname());\r\n                patTaskRelevance.setAge(serviceSubtask1.getAge());\r\n                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());\r\n                patTaskRelevance.setPhone(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setAddr(serviceSubtask1.getAddr());\r\n                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());\r\n                patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());\r\n                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());\r\n                patTaskRelevance.setPatid(serviceSubtask1.getPatid());\r\n                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());\r\n                patTaskRelevances.add(patTaskRelevance);\r\n            }\r\n        }\r\n\r\n        serviceTaskVO.setPatTaskRelevances(patTaskRelevances);\r\n        return serviceTaskVO;\r\n    }\r\n\r\n    private void optionHandle(ServiceSubtask serviceSubtask, Long taskId, Integer isoperation, Long patid) {\r\n        if (isoperation == 1) {\r\n            serviceSubtask.setSendstate(1L);\r\n            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n        } else if (isoperation == 2) serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n        else if (isoperation == 3) serviceSubtaskMapper.deleteServiceSubtaskByCondition(taskId, patid);\r\n    }\r\n\r\n    @Override\r\n    public int insertTaskInfo(ServiceTaskInfo serviceTaskVO) {\r\n        if (ObjectUtils.isEmpty(serviceTaskVO)) {\r\n            log.info(\"鏂板浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n            throw new BaseException(\"鏂板浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n        }\r\n        //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓璡r\n        ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n        serviceSubtask.setTaskGuid(serviceTaskVO.getTaskguid());\r\n        String type = \"0\";\r\n        if (StringUtils.isNotEmpty(serviceTaskVO.getServicetype()))\r\n            type = ServiceTaskTypeEnum.getDescByCode(serviceTaskVO.getServicetype());\r\n        serviceSubtask.setServiceType(type);\r\n        //绗笁鏂逛紶杩囨潵鐨勶紝鐩存帴缁熶竴瀹氫负闂嵎\r\n        serviceSubtask.setType(\"2\");\r\n        serviceSubtask.setLabelstatus(serviceTaskVO.getTaskstate());\r\n        serviceSubtask.setTaskName(serviceTaskVO.getTaskname());\r\n        serviceSubtask.setTaskDesc(serviceTaskVO.getTaskdesc());\r\n        //绗笁鏂逛紶杩囨潵鐨勶紝鐩存帴缁熶竴瀹氫负\"浜哄伐\"\r\n        serviceSubtask.setPreachform(\"1\");\r\n        serviceSubtask.setCreateBy(serviceTaskVO.getCreateBy());\r\n        serviceSubtask.setCreateTime(serviceTaskVO.getCreateTime());\r\n        serviceSubtask.setOperatorNo(serviceTaskVO.getOperatorno());\r\n        serviceSubtask.setRemark(serviceTaskVO.getRemark());\r\n        serviceSubtask.setOperator(serviceTaskVO.getOperatorname());\r\n        serviceSubtask.setEndtime(serviceTaskVO.getFinishtime());\r\n        serviceSubtask.setResult(serviceTaskVO.getResult());\r\n        serviceSubtask.setSuggest(serviceTaskVO.getSuggest());\r\n        serviceSubtask.setDelFlag(serviceTaskVO.getDelflag());\r\n        serviceSubtask.setOrgid(serviceTaskVO.getOrgguid());\r\n        serviceSubtask.setPatguid(serviceTaskVO.getPatguid());\r\n        serviceSubtask.setSendname(serviceTaskVO.getPatname());\r\n        if (StringUtils.isNotEmpty(serviceTaskVO.getPatsex()) && serviceTaskVO.getPatsex().equals(\"鐢穃"))\r\n            serviceSubtask.setSex(1L);\r\n        if (StringUtils.isNotEmpty(serviceTaskVO.getPatsex()) && serviceTaskVO.getPatsex().equals(\"濂砛"))\r\n            serviceSubtask.setSex(2L);\r\n        serviceSubtask.setAge(serviceTaskVO.getPatage());\r\n        serviceSubtask.setSfzh(serviceTaskVO.getPatidno());\r\n        serviceSubtask.setPhone(serviceTaskVO.getPatphone());\r\n        serviceSubtask.setAddr(serviceTaskVO.getPataddr());\r\n        serviceSubtask.setWechat(serviceTaskVO.getPatopenid());\r\n        serviceSubtask.setInhospno(serviceTaskVO.getInhosno());\r\n        String hosptype = \"-1\";\r\n        hosptype = HospTypeEnum.getDescByCode(serviceTaskVO.getVisittype());\r\n        serviceSubtask.setHospType(hosptype);\r\n        serviceSubtask.setHospno(serviceTaskVO.getVisitno());\r\n        serviceSubtask.setAdmindate(serviceTaskVO.getVisittime());\r\n        serviceSubtask.setRoomno(serviceTaskVO.getRoomno());\r\n        serviceSubtask.setBedNo(serviceTaskVO.getBedno());\r\n        serviceSubtask.setDeptname(serviceTaskVO.getDeptname());\r\n        serviceSubtask.setDeptcode(serviceTaskVO.getDeptcode());\r\n        serviceSubtask.setSendstate(6L);\r\n        serviceSubtask.setVisitTime(serviceTaskVO.getVisittime());\r\n        serviceSubtask.setCreateTime(new Date());\r\n        serviceSubtask.setLeavehospitaldistrictcode(serviceTaskVO.getDistrictcode());\r\n        //鍏堟煡璇竴閬嶏紝璇askGuid鏄惁瀛樺湪\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskGuid(serviceTaskVO.getTaskguid());\r\n        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n        if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n            serviceSubtask.setId(serviceSubtaskList.get(0).getId());\r\n            serviceSubtask.setUpdateTime(new Date());\r\n            serviceSubtaskMapper.updateServiceSubtaskByTaskGuid(serviceSubtask);\r\n        } else {\r\n            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n        }\r\n        Integer integer = serviceSubtask.getId().intValue();\r\n        log.error(\"鎻掑叆鐨処D鏄細{}\", integer);\r\n        return integer;\r\n    }\r\n\r\n\r\n    @Override\r\n    public Map query360PatInfo(ServiceQueryInfo serviceQueryInfo) {\r\n        if (ObjectUtils.isEmpty(serviceQueryInfo)) {\r\n            log.info(\"360鏌ヨ鏉′欢涓虹┖\");\r\n            throw new BaseException(\"360鏌ヨ鏉′欢涓虹┖\");\r\n        }\r\n        String token = LSHospTokenUtil.getToken(serviceQueryInfo.getXiaoXiTou().getFaSongJGID(),serviceQueryInfo.getUrl());\r\n//        LyraTokenUtil lyraTokenUtil = null;\r\n//        if (serviceQueryInfo.getXiaoXiTou().getFaSongJGID().equals(\"47255004333112711A1001\"))  //鏅畞\r\n//            lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(\"https://9.0.124.104:13021/mediinfo-lyra-authserver/connect/token\", \"zjhes.suifangxt\", \"OIjdJvx2ALjFVGZoCZO4I8O\");\r\n//        if (serviceQueryInfo.getXiaoXiTou().getFaSongJGID().equals(\"47231022633110211A2101\"))  //涓尰闄r\n//            lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(\"https://9.0.124.104:13011/mediinfo-lyra-authserver/connect/token\", \"zjhes.suifangxt\", \"OIjdJvx2ALjFVGZoCZO4I8O\");\r\n//\r\n//        try {\r\n//            token = lyraTokenUtil.getToken();\r\n//        } catch (IOException e) {\r\n//            e.printStackTrace();\r\n//        }\r\n\r\n        //鐢ㄦ埛淇℃伅锛岄�氳繃ZuZhiJGID鍘籦se_organization涓幏鍙栨満鏋勪俊鎭痋r\n        if (StringUtils.isBlank(serviceQueryInfo.getYeWuXX().getYongHuXX().getZuZhiJGID()))\r\n            throw new BaseException(\"鏈烘瀯id涓嶈兘涓虹┖锛乗");\r\n        BaseOrganization baseOrganization = new BaseOrganization();\r\n        baseOrganization.setGuid(serviceQueryInfo.getYeWuXX().getYongHuXX().getZuZhiJGID());\r\n        List<BaseOrganization> baseOrganizations = baseOrganizationMapper.selectBaseOrganizationList(baseOrganization);\r\n        if (CollectionUtils.isNotEmpty(baseOrganizations)) {\r\n            YongHuXX yongHuXX = serviceQueryInfo.getYeWuXX().getYongHuXX();\r\n            yongHuXX.setZuZhiJGID(baseOrganizations.get(0).getGuid());\r\n            yongHuXX.setZuZhiJGMC(baseOrganizations.get(0).getOrganizationName());\r\n            serviceQueryInfo.getYeWuXX().setYongHuXX(yongHuXX);\r\n        }\r\n\r\n        //娑堟伅澶翠俊鎭椂闂碶r\n        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(\"YYYY-MM-dd HH:mm:ss\");\r\n        serviceQueryInfo.getXiaoXiTou().setFaSongSJ(simpleDateFormat.format(new Date()));\r\n\r\n        log.error(new Gson().toJson(serviceQueryInfo));\r\n        log.error(\"serviceQueryInfo鐨勭粨鏋滀负锛歿}\", serviceQueryInfo);\r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        String result = null;\r\n        Map map = new HashMap();\r\n        try {\r\n            String jsonString = objectMapper.writeValueAsString(serviceQueryInfo);\r\n            log.error(\"token鐨勫�间负锛歿}\", token);\r\n            if (serviceQueryInfo.getXiaoXiTou().getFaSongJGID().equals(\"47255004333112711A1001\")) {  //鏅畞\r\n                result = OkHttpExample.sendPostRequest(\"https://9.0.124.104:13021/mediinfo-grus-fuwuzxwg/api/esb/lyraSyncRun\", jsonString, token);\r\n            }else if (serviceQueryInfo.getXiaoXiTou().getFaSongJGID().equals(\"47231022633110211A2101\")) {  //涓尰闄r\n                result = OkHttpExample.sendPostRequest(\"https://9.0.124.104:13011/mediinfo-grus-fuwuzxwg/api/esb/lyraSyncRun\", jsonString, token);\r\n            }else if(ObjectUtils.isNotEmpty(serviceQueryInfo.getUrl360())){\r\n                result = OkHttpExample.sendPostRequest(serviceQueryInfo.getUrl360(), jsonString, token);\r\n            }\r\n                map = objectMapper.readValue(result, Map.class);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n        Integer code = (Integer) map.get(\"code\");\r\n        if (code != null && code == 0) {\r\n            map.put(\"code\", 200);\r\n        }\r\n\r\n        return map;\r\n    }\r\n\r\n    @Override\r\n    public Map focus(ServiceQueryFocus serviceQueryFocus) {\r\n        return null;\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/impl/SvyTaskSingleServiceImpl.java	(date 1758798202692)
-@@ -350,7 +350,7 @@
-             }else if(ObjectUtils.isNotEmpty(serviceQueryInfo.getUrl360())){
-                 result = OkHttpExample.sendPostRequest(serviceQueryInfo.getUrl360(), jsonString, token);
-             }
--                map = objectMapper.readValue(result, Map.class);
-+            map = objectMapper.readValue(result, Map.class);
-         } catch (Exception e) {
-             e.printStackTrace();
-         }
-@@ -362,6 +362,7 @@
-         return map;
-     }
- 
-+
-     @Override
-     public Map focus(ServiceQueryFocus serviceQueryFocus) {
-         return null;
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.component;\r\n\r\nimport com.alibaba.fastjson2.JSONObject;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.GsonBuilder;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.enums.MsgLSEnum;\r\nimport com.ruoyi.common.enums.ServiceFromEnum;\r\nimport com.ruoyi.common.enums.WxGZHEnum;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.HttpUtil;\r\nimport com.ruoyi.common.utils.OkHttpExample;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.http.HttpUtils;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.smartor.common.LSHospTokenUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.HeLibraryMapper;\r\nimport com.smartor.mapper.PatArchiveMapper;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport com.smartor.mapper.ServiceTaskMapper;\r\nimport com.smartor.service.IBaseSmsaccountService;\r\nimport com.smartor.service.IServiceOutPathService;\r\nimport com.smartor.service.IServiceSubtaskRecordService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.data.redis.connection.Message;\r\nimport org.springframework.data.redis.listener.KeyExpirationEventMessageListener;\r\nimport org.springframework.data.redis.listener.RedisMessageListenerContainer;\r\nimport org.springframework.stereotype.Component;\r\n\r\nimport java.io.IOException;\r\nimport java.security.MessageDigest;\r\nimport java.util.*;\r\nimport java.util.concurrent.ExecutorService;\r\nimport java.util.concurrent.Executors;\r\nimport java.util.concurrent.TimeUnit;\r\n\r\nimport static cn.hutool.core.convert.Convert.toHex;\r\n\r\n@Slf4j\r\n@Component//鐩戝惉姝ら槦鍒梊r\npublic class RedisMqReceiver extends KeyExpirationEventMessageListener {\r\n\r\n    @Value(\"${phonePath}\")\r\n    private String phonePath;\r\n\r\n    @Value(\"${pub_key}\")\r\n    private String pub_key;\r\n\r\n    @Value(\"${localIP}\")\r\n    private String localIP;\r\n\r\n    @Value(\"${req_path}\")\r\n    private String req_path;\r\n\r\n    @Autowired\r\n    private IServiceOutPathService iServiceOutPathService;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper ivrTaskcallMapper;\r\n\r\n    @Autowired\r\n    private HeLibraryMapper heLibraryMapper;\r\n\r\n    @Autowired\r\n    private ServiceTaskMapper ivrTaskMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    @Autowired\r\n    private ServiceTaskMapper svyTaskMapper;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskRecordService serviceSubtaskRecordService;\r\n\r\n    @Autowired\r\n    IBaseSmsaccountService baseSmsaccountService;\r\n\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n    @Value(\"${xhsmsPath}\")\r\n    private String xhsmsPath;\r\n\r\n    @Value(\"${visitHosp}\")\r\n    private Integer visitHosp;\r\n\r\n    @Value(\"${server.port}\")\r\n    private String port;\r\n\r\n    // 鍒涘缓鍥哄畾澶у皬鐨勭嚎绋嬫睜\r\n    private static final ExecutorService executorService = Executors.newFixedThreadPool(10);\r\n\r\n    public RedisMqReceiver(RedisMessageListenerContainer listenerContainer) {\r\n        super(listenerContainer);\r\n    }\r\n\r\n    @Override\r\n    public void onMessage(Message message, byte[] pattern) {\r\n        log.info(\"鐩戝惉Redis key杩囨湡锛宬ey锛歿}锛宑hannel锛歿}\", message.toString(), new String(pattern));\r\n        String ip = localIP;\r\n        log.info(\"鏈満鐨勭綉缁淚P涓�:{}\", ip);\r\n        String content = message.toString();\r\n        //鍒ゆ柇鏄笉鏄换鍔′俊鎭紝濡傛灉涓嶆槸锛岀洿鎺ヨ繑鍥烇紝涓嶉渶瑕佹墽琛孿r\n        if (!content.contains(\"taskid\") || !port.equals(\"8095\")) {\r\n            log.error(\"涓嶆槸浠诲姟淇℃伅\");\r\n            return;\r\n        }\r\n        CommonTaskcallMQ commonTaskcallMQ = null;\r\n        try {\r\n            ObjectMapper mapper = new ObjectMapper();\r\n            if (!content.startsWith(\"{\")) {\r\n                commonTaskcallMQ = mapper.readValue(\"{\" + content + \"}\", CommonTaskcallMQ.class);\r\n            } else {\r\n                commonTaskcallMQ = mapper.readValue(content, CommonTaskcallMQ.class);\r\n            }\r\n            if (commonTaskcallMQ != null) tsakHandle(commonTaskcallMQ, ip, commonTaskcallMQ.getTaskType());\r\n\r\n            //澶勭悊瀹屾垚锛岀Щ闄edis\r\n            redisCache.deleteObject(message.toString());\r\n            //灏嗙姸鎬佹敼鎴愬畬鎴怽r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(Long.valueOf(commonTaskcallMQ.getTaskid()));\r\n            serviceTask.setSendState(5L);\r\n            serviceTask.setFail(1L);\r\n            svyTaskMapper.updateServiceTask(serviceTask);\r\n        } catch (Exception e) {\r\n            Integer integer = redisCache.getCacheObject(commonTaskcallMQ.getTaskid().toString());\r\n            if (integer != null && integer == 3) {\r\n                redisCache.deleteObject(message.toString());\r\n                ServiceTask serviceTask = new ServiceTask();\r\n                serviceTask.setTaskid(Long.valueOf(commonTaskcallMQ.getTaskid().toString()));\r\n                serviceTask.setFail(0L);\r\n                svyTaskMapper.updateServiceTask(serviceTask);\r\n                //灏嗘秷鎭粠闃熷垪涓垹闄r\n            } else if (integer == null) {\r\n                redisCache.setCacheObject(commonTaskcallMQ.getTaskid().toString(), 1, 120, TimeUnit.MINUTES);\r\n            } else {\r\n                redisCache.setCacheObject(commonTaskcallMQ.getTaskid().toString(), integer + 1, 120, TimeUnit.MINUTES);\r\n            }\r\n            log.error(\"============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!==============  {}\", e.getMessage());\r\n            redisCache.setCacheObject(message.toString(), message.toString(), 60, TimeUnit.SECONDS);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 浠诲姟澶勭悊\r\n     *\r\n     * @param commonTaskcallMQ\r\n     */\r\n    public void tsakHandle(CommonTaskcallMQ commonTaskcallMQ, String ip, Integer type) {\r\n        log.info(\"杩涗换鍔′簡鍚楋紵{}\", commonTaskcallMQ);\r\n        //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜哱r\n        ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());\r\n\r\n//        if (ivrTask1.getStopState() != commonTaskcallMQ.getStopState()) {\r\n//            //灏嗘秷鎭粠闃熷垪涓墧闄r\n//            return;\r\n//        }\r\n\r\n        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {\r\n            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖\r\n            String[] split = commonTaskcallMQ.getPreachform().split(\",\");\r\n            log.info(\"split鐨勫�间负锛歿}\", split);\r\n\r\n            //瀹氫箟涓�涓泦鍚堬紝鐢ㄤ笌瀛樻病鏈夋墽琛岀殑瀛愪换鍔D\r\n            List<Long> subIds = new ArrayList<>();\r\n            //涓存椂瀛樻病鏈夋墽琛岀殑瀛愪换鍔D\r\n            List<Long> lssubIds = new ArrayList<>();\r\n            //鏄惁灏嗗叏閮ㄦ偅鑰呰�呭彂閫佸畬\r\n            Boolean isSend = false;\r\n\r\n            aa:\r\n            for (String serviceFrom : split) {\r\n                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));\r\n                if (isSend == true) {\r\n                    break aa;\r\n                }\r\n\r\n                //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭痋r\n                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();\r\n                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());\r\n                ivrTaskcall.setSendstate(1L);\r\n                List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall);\r\n                if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {\r\n                    continue;\r\n                }\r\n                if (descByCode.equals(\"鐢佃瘽\")) {\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        //鍏堝垽鏂竴涓嬶紝subIds鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛屽彧鎵цsubIds閲岀殑鎮h�匼r\n                        if (CollectionUtils.isNotEmpty(subIds)) {\r\n                            boolean contains = subIds.contains(serviceSubtask.getId());\r\n                            //濡傛灉contains涓嶄负true,璇存槑褰撳墠鐨勬偅鑰呭凡缁忓彂閫佹垚鍔燂紝鐩存帴寰幆涓嬩竴涓汉灏辫\r\n                            if (!contains) continue;\r\n                        }\r\n\r\n                        try {\r\n                            ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {\r\n                                //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩�漒r\n                                break;\r\n                            }\r\n                            //鑾峰彇鍒皏alue鍊兼渶灏戠殑key\r\n                            String key = getKey();\r\n                            if (commonTaskcallMQ.getSendType().equals(\"2\")) {\r\n                                //璇存槑鏄珛鍗冲彂閫乗r\n                                ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();\r\n                                serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());\r\n                                log.info(\"缂撳瓨涓璼erviceSubtask1鐨勫�间负锛歿}\", serviceSubtask1);\r\n                                List<String> list = new ArrayList<>();\r\n                                List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);\r\n                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {\r\n                                    list.add(serviceSubtask2.getId().toString());\r\n                                }\r\n                                log.info(\"缂撳瓨涓璫ache-0鐨勫�间负锛歿}\", list);\r\n//                                redisCache.setCacheListLeft(\"cache-0\", list);\r\n                                redisCache.setCacheListLeftAndDistinct(\"cache-0\", list);\r\n                            } else {\r\n                                //闈炵珛鍗冲彂閫乗r\n                                ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();\r\n                                serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());\r\n                                List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);\r\n                                List<String> list = new ArrayList<>();\r\n                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {\r\n                                    list.add(serviceSubtask2.getId().toString());\r\n                                }\r\n//                                redisCache.setCacheListLeft(key, list);\r\n                                redisCache.setCacheListLeftAndDistinct(key, list);\r\n                            }\r\n                        } catch (Exception exception) {\r\n                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                            serviceSubtaskRecord.setPreachform(\"3\");\r\n                            serviceSubtaskRecord.setResult(\"fail\");\r\n                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                            serviceSubtaskRecord.setRemark(\"闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐");\r\n                            log.error(\"闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐ワ細{}\", exception.getMessage());\r\n                            lssubIds.add(serviceSubtask.getId());\r\n                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                            continue;\r\n                        }\r\n                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓媆r\n                        String uuid = UUID.randomUUID().toString();\r\n                        serviceSubtask.setResult(\"success\");\r\n                        serviceSubtask.setRemark(\"闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔焅");\r\n                        serviceSubtask.setGuid(uuid);\r\n                        serviceSubtask.setSendstate(3L);\r\n                        serviceSubtask.setFinishtime(new Date());\r\n                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                        //浠诲姟鍙戦�佽褰昞r\n                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                        serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                        serviceSubtaskRecord.setUuid(uuid);\r\n                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                        serviceSubtaskRecord.setPreachform(\"3\");\r\n                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                        serviceSubtaskRecord.setRemark(\"闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔焅");\r\n                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                    }\r\n                    if (CollectionUtils.isEmpty(lssubIds)) {\r\n                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜哱r\n                        isSend = true;\r\n                    }\r\n                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓璡r\n                    subIds.clear();\r\n                    subIds.addAll(lssubIds);\r\n                    lssubIds.clear();\r\n                } else if (descByCode.equals(\"澶氬獟浣揬")) {\r\n                    //澶氬獟浣揬r\n                    continue;\r\n                } else if (descByCode.equals(\"绾歌川\")) {\r\n                    //绾歌川\r\n                    continue;\r\n                } else if (descByCode.equals(\"鐭俊\")) {\r\n                    //鐭俊\r\n                    //瀵箄rl涓袱涓弬鏁板姞瀵哱r\n                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);\r\n\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        //鍏堝垽鏂竴涓嬶紝subIds鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛屽彧鎵цsubIds閲岀殑鎮h�匼r\n                        if (CollectionUtils.isNotEmpty(subIds)) {\r\n                            boolean contains = subIds.contains(serviceSubtask.getId());\r\n                            //濡傛灉contains涓嶄负true,璇存槑褰撳墠鐨勬偅鑰呭凡缁忓彂閫佹垚鍔燂紝鐩存帴寰幆涓嬩竴涓汉灏辫\r\n                            if (!contains) continue;\r\n                        }\r\n\r\n                        try {\r\n                            String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);\r\n                            String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);\r\n                            SendMagParam sendMagParam = new SendMagParam();\r\n                            sendMagParam.setType(\"4\");\r\n                            if (type == 1) {\r\n                                //闅忚\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setParam6(subId);\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n//                                sendMagParam.setUrl(ip + \":\" + req_path + \"/followvisit/particty?param1=\" + taskId + \"&param2=\" + patid + \"&param5=false\");\r\n                                //杞垚16杩涘埗\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                sendMagParam.setUrl(ip + \":\" + req_path + \"/sf?p=\" + format);\r\n                                if (visitHosp == 2) {\r\n                                    sendMagParam.setContent(\"鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                } else if (visitHosp == 1) {\r\n                                    sendMagParam.setContent(\"銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"濉啓銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                }\r\n\r\n                            } else if (type == 2) {\r\n                                //闂埜锛堥棶棰橈級\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setParam6(subId);\r\n//                                serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()));\r\n                                serviceOutPath.setParam3(ivrTask1.getTaskName());\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n//                                sendMagParam.setUrl(ip + \":\" + req_path + \"/outsideChainwt?param1=\" + taskId + \"&param2=\" + patid + \"&param3=\" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + \"&param5=false\");\r\n                                sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                sendMagParam.setUrl(ip + \":\" + req_path + \"/wt?p=\" + format);\r\n                                if (serviceSubtask.getOrgid().equals(\"47255004333112711A1001\")) {\r\n                                    sendMagParam.setContent(\"銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                } else if (serviceSubtask.getOrgid().equals(\"47255004333112711A1001\")) {\r\n                                    sendMagParam.setContent(\"銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                } else\r\n                                    sendMagParam.setContent(\"銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"濉啓銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                            } else if (type == 3) {\r\n                                //瀹f暀\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setParam6(subId);\r\n                                serviceOutPath.setParam3(ivrTask1.getTaskName());\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                //闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡\r\n                                HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());\r\n                                if (heLibrary.getHetype().equals(\"1\")) {\r\n                                    sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                    sendMagParam.setUrl(ip + \":\" + req_path + \"/xj?p=\" + format);\r\n                                    if (serviceSubtask.getOrgid().equals(\"47255004333112711A1001\")) {\r\n                                        sendMagParam.setContent(\"銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                    } else if (serviceSubtask.getOrgid().equals(\"47255004333112711A1001\")) {\r\n                                        sendMagParam.setContent(\"銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                    } else\r\n                                        sendMagParam.setContent(\"銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛乗");\r\n                                } else {\r\n                                    //閫氱煡\r\n                                    sendMagParam.setPhone(serviceSubtask.getPhone());\r\n                                    sendMagParam.setContent(heLibrary.getPreachcontent());\r\n                                }\r\n                            }\r\n                            //鐭俊杩橀渶瑕佹ā鏉縗r\n                            String s = null;\r\n                            if (visitHosp == 1) {\r\n                                //鏂板崕鐨勭煭淇″彂閫佹柟寮廫r\n                                Map<String, String> req = new HashMap<>();\r\n                                req.put(\"phone\", sendMagParam.getPhone());\r\n                                req.put(\"content\", sendMagParam.getContent());\r\n                                s = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));\r\n                            } else if (visitHosp == 2) {\r\n                                String url = configService.selectConfigByKey(\"token.360\",serviceSubtask.getOrgid());\r\n                                //涓芥按鐨勭煭淇″彂閫佹柟寮廫r\n                                Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());\r\n                                String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(),url);\r\n                                log.info(\"-----------token鐨勫�间负锛歿}\", token);\r\n                                if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get(\"address\"))) {\r\n                                    ServiceSubtask ss = new ServiceSubtask();\r\n                                    ss.setResult(\"error\");\r\n                                    ss.setRemark(\"鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�\");\r\n                                    ss.setSendstate(5L);\r\n                                    ss.setId(serviceSubtask.getId());\r\n//                                    ss.setFinishtime(new Date());\r\n                                    serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                    continue;\r\n                                }\r\n                                log.info(\"---------mq涓芥按鐭俊鍙戦�佸叆鍙俛ddress锛歿},  sendMagParam:{},  orgid:{}-------\", map.get(\"address\"), sendMagParam, serviceSubtask.getOrgid());\r\n                                String dxCode = getDXCode(map.get(\"address\"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get(\"sendPersonId\"), map.get(\"sendPersonName\"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);\r\n                                log.info(\"---------涓芥按鐭俊鍙戦�佺粨鏋滐細{}-------\", dxCode);\r\n                                ObjectMapper objectMapper = new ObjectMapper();\r\n                                Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);\r\n                                String code = textParam.get(\"Code\").toString();\r\n                                if (code.equals(\"0\")) {\r\n                                    s = \"true\";\r\n                                } else {\r\n                                    throw new BaseException(null);\r\n                                }\r\n                            }\r\n                            if (s.equals(\"true\")) {\r\n                                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓媆r\n                                String uuid = UUID.randomUUID().toString();\r\n                                serviceSubtask.setResult(\"success\");\r\n                                serviceSubtask.setRemark(\"鐭俊鍙戦�佹垚鍔焅");\r\n                                serviceSubtask.setGuid(uuid);\r\n                                serviceSubtask.setSendstate(3L);\r\n                                serviceSubtask.setFinishtime(new Date());\r\n                                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                                //浠诲姟鍙戦�佽褰昞r\n                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                                serviceSubtaskRecord.setUuid(uuid);\r\n                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                                serviceSubtaskRecord.setPreachform(\"5\");\r\n                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                                serviceSubtaskRecord.setResult(\"success\");\r\n                                serviceSubtaskRecord.setRemark(\"鐭俊鍙戦�佹垚鍔焅");\r\n                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                                log.error(\"serviceSubtaskRecord淇濆瓨鎴愬姛浜嗗悧锛燂細{}\", serviceSubtaskRecord);\r\n                            }\r\n                        } catch (Exception e) {\r\n                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                            serviceSubtaskRecord.setPreachform(\"4\");\r\n                            serviceSubtaskRecord.setResult(\"fail\");\r\n                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                            serviceSubtaskRecord.setRemark(\"鐭俊鍙戦�佸け璐");\r\n                            log.error(\"鐭俊鍙戦�佸け璐ワ細{}\", e.getMessage());\r\n                            lssubIds.add(serviceSubtask.getId());\r\n                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                            continue;\r\n                        }\r\n\r\n\r\n                    }\r\n                    if (CollectionUtils.isEmpty(lssubIds)) {\r\n                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜哱r\n                        isSend = true;\r\n                    }\r\n                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓璡r\n                    subIds.clear();\r\n                    subIds.addAll(lssubIds);\r\n                    lssubIds.clear();\r\n                } else if (descByCode.equals(\"鍏紬鍙穃")) {\r\n                    //鍏紬鍙穃r\n                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);\r\n                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n                        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);\r\n                        try {\r\n                            SendMagParam sendMagParam = new SendMagParam();\r\n                            sendMagParam.setType(\"5\");\r\n                            String url = null;\r\n                            Boolean aBoolean = false;\r\n                            if (type == 1) {\r\n                                //闅忚\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                url = ip + \":\" + req_path + \"/sf?p=\" + format;\r\n                            } else if (type == 2) {\r\n                                //闂埜\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n//                                serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()));\r\n                                serviceOutPath.setParam3(ivrTask1.getTaskName());\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                url = ip + \":\" + req_path + \"/wt?p=\" + format;\r\n                            } else if (type == 3) {\r\n                                //瀹f暀\r\n                                ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n                                serviceOutPath.setParam1(taskId);\r\n                                serviceOutPath.setParam2(patid);\r\n                                serviceOutPath.setParam3(ivrTask1.getTaskName());\r\n                                serviceOutPath.setCreateTime(new Date());\r\n                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n                                String format = String.format(\"%03X\", serviceOutPath.getId());\r\n                                serviceOutPath.setRadix(format);\r\n                                serviceOutPath.setUpdateTime(new Date());\r\n                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n                                url = ip + \":\" + req_path + \"/xj?p=\" + format;\r\n                            }\r\n                            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid());\r\n                            if (StringUtils.isEmpty(patArchive.getPatidHis())) {\r\n                                ServiceSubtask ss = new ServiceSubtask();\r\n                                ss.setResult(\"error\");\r\n                                ss.setRemark(\"鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖\");\r\n                                ss.setSendstate(5L);\r\n                                ss.setId(serviceSubtask.getId());\r\n//                                ss.setFinishtime(new Date());\r\n                                serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                continue;\r\n                            }\r\n\r\n                            //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D\r\n                            log.error(\"鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D锛歿}\", patArchive.getOrgid());\r\n                            List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());\r\n                            if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {\r\n                                ServiceSubtask ss = new ServiceSubtask();\r\n                                ss.setResult(\"error\");\r\n                                ss.setRemark(\"璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫乗");\r\n                                ss.setSendstate(5L);\r\n                                ss.setId(serviceSubtask.getId());\r\n//                                ss.setFinishtime(new Date());\r\n                                serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                continue;\r\n                            }\r\n\r\n\r\n                            String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskName(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(), wxqqxx);\r\n                            log.error(\"wxCode鐨勫�间负:{}\", wxCode);\r\n                            Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);\r\n                            log.error(\"map鐨勫�间负:{}\", map);\r\n                            if (!map.isEmpty()) {\r\n                                serviceSubtask.setResult(\"success\");\r\n                                serviceSubtask.setSendstate(3L);\r\n                                log.error(\"aBoolean鐨勫�间负:{}\", aBoolean);\r\n                                if (map.get(\"succ\").toString().equals(\"true\")) {\r\n                                    aBoolean = true;\r\n                                }\r\n                                if (aBoolean == false) {\r\n                                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                                    serviceSubtaskRecord.setPreachform(\"5\");\r\n                                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                                    serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get(\"msg\")) ? map.get(\"msg\").toString() : null);\r\n                                    lssubIds.add(serviceSubtask.getId());\r\n                                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                                    continue;\r\n                                }\r\n                            }\r\n                        } catch (Exception e) {\r\n                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());\r\n                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());\r\n                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                            serviceSubtaskRecord.setPreachform(\"5\");\r\n                            serviceSubtaskRecord.setResult(\"fail\");\r\n                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                            serviceSubtaskRecord.setRemark(\"鍏紬鍙峰彂閫佸け璐");\r\n                            log.error(\"鍏紬鍙峰彂閫佸け璐ワ細{}\", e.getMessage());\r\n                            lssubIds.add(serviceSubtask.getId());\r\n                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                            continue;\r\n                        }\r\n                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓媆r\n                        String uuid = UUID.randomUUID().toString();\r\n                        serviceSubtask.setResult(\"success\");\r\n                        serviceSubtask.setRemark(\"鍏紬鍙峰彂閫佹垚鍔焅");\r\n                        serviceSubtask.setGuid(uuid);\r\n                        serviceSubtask.setSendstate(3L);\r\n                        serviceSubtask.setFinishtime(new Date());\r\n                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                        //浠诲姟鍙戦�佽褰昞r\n                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();\r\n                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());\r\n                        serviceSubtaskRecord.setUuid(uuid);\r\n                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());\r\n                        serviceSubtaskRecord.setPreachform(\"5\");\r\n                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());\r\n                        serviceSubtaskRecord.setResult(\"success\");\r\n                        serviceSubtaskRecord.setRemark(\"鍏紬鍙峰彂閫佹垚鍔焅");\r\n                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);\r\n                    }\r\n                    if (CollectionUtils.isEmpty(lssubIds)) {\r\n                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜哱r\n                        isSend = true;\r\n                    }\r\n                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓璡r\n                    subIds.clear();\r\n                    subIds.addAll(lssubIds);\r\n                    lssubIds.clear();\r\n                }\r\n                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛塡r\n            }\r\n            if (CollectionUtils.isNotEmpty(subIds)) {\r\n                //濡傛灉鍏ㄩ儴鐨勫彂閫佹柟寮忛兘鍙戝畬浜嗭紝杩樻湁鏄湭鍙戦�佺殑,闇�瑕佸幓subTask琛ㄤ腑锛岃褰曚竴涓嬶紝鍙戦�佸け璐r\n                for (Long id : subIds) {\r\n                    ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n                    serviceSubtask.setResult(\"error\");\r\n                    serviceSubtask.setRemark(\"鍙戦�佸け璐");\r\n                    serviceSubtask.setSendstate(5L);\r\n                    serviceSubtask.setId(id);\r\n//                    serviceSubtask.setFinishtime(new Date());\r\n                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n                }\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    //    /**\r\n//     * 鏈哄櫒浜虹涓�鍙ヨ瘽璇煶\r\n//     * concurrency = \"50\"  骞跺彂鏁颁负50\r\n//     */\r\n//    @RabbitListener(queues = \"ob_queue\", concurrency = \"50\")\r\n//    public void obVisit(String content, Message message, Channel channel) throws IOException {\r\n//        try {\r\n//            IvrTaskcallPhoneMQ commonTaskcallMQ = null;\r\n//            ObjectMapper mapper = new ObjectMapper();\r\n//            commonTaskcallMQ = mapper.readValue(content, IvrTaskcallPhoneMQ.class);\r\n//            //鍒ゆ柇鎮h�呮槸鍚﹀凡缁忔帴鐢佃瘽\r\n//            String str = redisCache.getCacheObject(commonTaskcallMQ.getUuid() + \"state_id\");\r\n//            System.out.println(\"-----------------\" + str);\r\n//            if (StringUtils.isNotEmpty(str) && str.equals(\"0\")) {\r\n//                //鎮h�呭凡缁忔帴鍚簡鐢佃瘽\r\n//                new PhoneUtils().ttsPlayback(commonTaskcallMQ.getScript(), commonTaskcallMQ.getUuid());\r\n//            } else if (StringUtils.isNotEmpty(str) && str.equals(\"-10\")) {\r\n//                //杩欎釜璇存槑,宸茬粡鎵撲簡鎸囧畾閬嶆暟杩樻槸娌℃湁浜烘帴锛屽彲浠ュ皢娑堟伅浠庨槦鍒椾腑绉婚櫎浜哱r\n//                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);\r\n//                return;\r\n//            } else {\r\n//                //杩涜闃熷垪灏鹃儴锛岃繘琛屼笅涓�娆℃牎楠孿r\n////                channel.basicRecover(false);\r\n//                channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);\r\n//                System.out.println(\"++++++++++++++++++++++\" + str);\r\n//                return;\r\n//            }\r\n//            //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛塡r\n//            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);\r\n//        } catch (Exception e) {\r\n//            log.error(\"============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!==============\");\r\n//            log.error(e.getMessage());\r\n//            channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);\r\n//        }\r\n//    }\r\n    private String getKey() {\r\n        Map<String, String> map = new HashMap<>();\r\n        for (int i = 0; i < 6; i++) {\r\n            Boolean aBoolean = redisCache.hasKey(\"cache-\" + i);\r\n            if (!aBoolean) {\r\n                redisCache.setCacheObject(\"cache-\" + i, \"\");\r\n                map.put(\"cache-\" + i, \"\");\r\n            } else {\r\n                map.put(\"cache-\" + i, redisCache.getCacheObject(\"cache-\" + i));\r\n            }\r\n        }\r\n\r\n        String key = null;\r\n        String value = \"\";\r\n        for (Map.Entry<String, String> entry : map.entrySet()) {\r\n            if (StringUtils.isEmpty(value)) {\r\n                value = entry.getValue();\r\n                key = entry.getKey();\r\n            } else {\r\n                if (entry.getValue().split(\",\").length < value.split(\",\").length) {\r\n                    value = entry.getValue();\r\n                    key = entry.getKey();\r\n                }\r\n            }\r\n        }\r\n        return key;\r\n    }\r\n\r\n    private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String patientname, String setPatientid, List<String> wxqqxx) {\r\n        XinHuaWXReq xinHuaWXReq = new XinHuaWXReq();\r\n        xinHuaWXReq.setIdcard(idcard);\r\n        xinHuaWXReq.setUrl(url);\r\n        xinHuaWXReq.setPatientid(setPatientid);\r\n        xinHuaWXReq.setPatientname(patientname);\r\n        xinHuaWXReq.setMobile(phone);\r\n        xinHuaWXReq.setMedcardno(null);\r\n        xinHuaWXReq.setTitlename(taskName);\r\n        xinHuaWXReq.setContent(taskDesc);\r\n        xinHuaWXReq.setAppid(wxqqxx.get(1));\r\n        log.error(\"-----寰俊鍏紬鍙风殑鍑哄弬涓�----锛歿}\", xinHuaWXReq);\r\n//         new Gson().toJson(xinHuaWXReq);\r\n        GsonBuilder gb = new GsonBuilder();\r\n        gb.disableHtmlEscaping();\r\n        String body = gb.create().toJson(xinHuaWXReq);\r\n\r\n        log.error(\"encode鐨勫叆鍙備负wxqqxx 锛歿},   body:{}\", wxqqxx.get(2), body);\r\n        String encode = encode(wxqqxx.get(2).concat(body));\r\n        log.error(\"--------encode鐨勫�间负锛歿}-----\", encode);\r\n        Map<String, String> headerMap = new HashMap<>();\r\n        headerMap.put(\"sign\", encode);\r\n        String result = HttpUtils.sendPostByHeader(wxqqxx.get(3), body, headerMap);\r\n        log.error(\"--------result鐨勫�间负锛歿}-----\", result);\r\n\r\n        JSONObject jsonObject = JSONObject.parseObject(result);\r\n        String code = (String) jsonObject.toString();\r\n        return code;\r\n    }\r\n\r\n\r\n    private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) {\r\n        Map<String, Object> map = new LinkedHashMap<>();\r\n\r\n        Map<String, Object> YeWuXX = new LinkedHashMap<>();\r\n        Map<String, Object> DuanXinXX = new LinkedHashMap<>();\r\n        DuanXinXX.put(\"ShouJiHM\", ShouJiHM);\r\n        DuanXinXX.put(\"FaSongNR\", FaSongNR);\r\n        DuanXinXX.put(\"FaSongRID\", FaSongRID);\r\n        DuanXinXX.put(\"FaSongRXM\", FaSongRXM);\r\n        YeWuXX.put(\"DuanXinXX\", DuanXinXX);\r\n\r\n        map.put(\"XiaoXiTou\", headerMap);\r\n        map.put(\"YeWuXX\", YeWuXX);\r\n\r\n        String body = new Gson().toJson(map);\r\n\r\n//        String result = HttpUtils.sendPost(address, body);\r\n        String result = null;\r\n        try {\r\n            result = OkHttpExample.sendPostRequest(address, body, token);\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n        log.error(\"--------result鐨勫�间负锛歿}-----\", result);\r\n\r\n        JSONObject jsonObject = JSONObject.parseObject(result);\r\n        String code = (String) jsonObject.toString();\r\n        return code;\r\n    }\r\n\r\n\r\n    public String encode(String arg) {\r\n        if (arg == null) {\r\n            arg = \"\";\r\n        }\r\n        MessageDigest md5 = null;\r\n        try {\r\n            md5 = MessageDigest.getInstance(\"MD5\");\r\n            md5.update(arg.getBytes(\"UTF-8\"));\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n        return toHex(md5.digest());\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java	(date 1759130091209)
-@@ -5,6 +5,7 @@
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- import com.ruoyi.common.core.redis.RedisCache;
-+import com.ruoyi.common.dx.MessageSend;
- import com.ruoyi.common.enums.MsgLSEnum;
- import com.ruoyi.common.enums.ServiceFromEnum;
- import com.ruoyi.common.enums.WxGZHEnum;
-@@ -17,10 +18,7 @@
- import com.ruoyi.system.service.ISysConfigService;
- import com.smartor.common.LSHospTokenUtil;
- import com.smartor.domain.*;
--import com.smartor.mapper.HeLibraryMapper;
--import com.smartor.mapper.PatArchiveMapper;
--import com.smartor.mapper.ServiceSubtaskMapper;
--import com.smartor.mapper.ServiceTaskMapper;
-+import com.smartor.mapper.*;
- import com.smartor.service.IBaseSmsaccountService;
- import com.smartor.service.IServiceOutPathService;
- import com.smartor.service.IServiceSubtaskRecordService;
-@@ -36,6 +34,8 @@
- 
- import java.io.IOException;
- import java.security.MessageDigest;
-+import java.time.LocalDateTime;
-+import java.time.format.DateTimeFormatter;
- import java.util.*;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
-@@ -65,6 +65,7 @@
-     @Autowired
-     private ServiceSubtaskMapper ivrTaskcallMapper;
- 
-+
-     @Autowired
-     private HeLibraryMapper heLibraryMapper;
- 
-@@ -83,15 +84,15 @@
-     @Autowired
-     private ServiceSubtaskMapper serviceSubtaskMapper;
- 
-+    @Autowired
-+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
-+
-     @Autowired
-     private IServiceSubtaskRecordService serviceSubtaskRecordService;
- 
-     @Autowired
-     IBaseSmsaccountService baseSmsaccountService;
- 
--    @Autowired
--    private ISysConfigService configService;
--
-     @Value("${xhsmsPath}")
-     private String xhsmsPath;
- 
-@@ -101,6 +102,9 @@
-     @Value("${server.port}")
-     private String port;
- 
-+    @Autowired
-+    private ISysConfigService configService;
-+
-     // 鍒涘缓鍥哄畾澶у皬鐨勭嚎绋嬫睜
-     private static final ExecutorService executorService = Executors.newFixedThreadPool(10);
- 
-@@ -166,535 +170,571 @@
-         //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
-         ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
- 
--//        if (ivrTask1.getStopState() != commonTaskcallMQ.getStopState()) {
--//            //灏嗘秷鎭粠闃熷垪涓墧闄�
--//            return;
--//        }
--
--        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {
--            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖
--            String[] split = commonTaskcallMQ.getPreachform().split(",");
--            log.info("split鐨勫�间负锛歿}", split);
--
--            //瀹氫箟涓�涓泦鍚堬紝鐢ㄤ笌瀛樻病鏈夋墽琛岀殑瀛愪换鍔D
--            List<Long> subIds = new ArrayList<>();
--            //涓存椂瀛樻病鏈夋墽琛岀殑瀛愪换鍔D
--            List<Long> lssubIds = new ArrayList<>();
--            //鏄惁灏嗗叏閮ㄦ偅鑰呰�呭彂閫佸畬
--            Boolean isSend = false;
--
--            aa:
--            for (String serviceFrom : split) {
--                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
--                if (isSend == true) {
--                    break aa;
--                }
--
--                //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
--                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();
--                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
--                ivrTaskcall.setSendstate(1L);
--                List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall);
--                if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {
--                    continue;
--                }
--                if (descByCode.equals("鐢佃瘽")) {
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        //鍏堝垽鏂竴涓嬶紝subIds鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛屽彧鎵цsubIds閲岀殑鎮h��
--                        if (CollectionUtils.isNotEmpty(subIds)) {
--                            boolean contains = subIds.contains(serviceSubtask.getId());
--                            //濡傛灉contains涓嶄负true,璇存槑褰撳墠鐨勬偅鑰呭凡缁忓彂閫佹垚鍔燂紝鐩存帴寰幆涓嬩竴涓汉灏辫
--                            if (!contains) continue;
--                        }
--
--                        try {
--                            ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
--                            if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
--                                //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩��
--                                break;
--                            }
--                            //鑾峰彇鍒皏alue鍊兼渶灏戠殑key
--                            String key = getKey();
--                            if (commonTaskcallMQ.getSendType().equals("2")) {
--                                //璇存槑鏄珛鍗冲彂閫�
--                                ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();
--                                serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());
--                                log.info("缂撳瓨涓璼erviceSubtask1鐨勫�间负锛歿}", serviceSubtask1);
--                                List<String> list = new ArrayList<>();
--                                List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);
--                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
--                                    list.add(serviceSubtask2.getId().toString());
--                                }
--                                log.info("缂撳瓨涓璫ache-0鐨勫�间负锛歿}", list);
--//                                redisCache.setCacheListLeft("cache-0", list);
--                                redisCache.setCacheListLeftAndDistinct("cache-0", list);
--                            } else {
--                                //闈炵珛鍗冲彂閫�
--                                ServiceSubtaskVO serviceSubtask1 = new ServiceSubtaskVO();
--                                serviceSubtask1.setTaskid(commonTaskcallMQ.getTaskid());
--                                List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);
--                                List<String> list = new ArrayList<>();
--                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
--                                    list.add(serviceSubtask2.getId().toString());
--                                }
--//                                redisCache.setCacheListLeft(key, list);
--                                redisCache.setCacheListLeftAndDistinct(key, list);
--                            }
--                        } catch (Exception exception) {
--                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                            serviceSubtaskRecord.setPreachform("3");
--                            serviceSubtaskRecord.setResult("fail");
--                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                            serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐�");
--                            log.error("闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐ワ細{}", exception.getMessage());
--                            lssubIds.add(serviceSubtask.getId());
--                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                            continue;
--                        }
--                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
--                        String uuid = UUID.randomUUID().toString();
--                        serviceSubtask.setResult("success");
--                        serviceSubtask.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�");
--                        serviceSubtask.setGuid(uuid);
--                        serviceSubtask.setSendstate(3L);
--                        serviceSubtask.setFinishtime(new Date());
--                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+        //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
-+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-+        serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
-+        serviceSubtaskVO.setSendstate(2L);
-+        List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtaskVO);
-+
-+        for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
-+            //鍏堝垽鏂偅鑰呮槸涓嶆槸杩樿鍙戦��
-+            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid());
-+            if (!Objects.isNull(patArchive) && patArchive.getNotrequiredFlag() == "1") {
-+                //涓嶉渶瑕佸彂閫�
-+                serviceSubtask.setResult("鎮h�呬笉闇�瑕侀殢璁�");
-+                serviceSubtask.setRemark(patArchive.getNotrequiredreason());
-+                serviceSubtask.setSendstate(4L);
-+                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                setFailPreachForm(serviceSubtask, "-1", "涓嶉渶瑕佹墽琛�", "6");
-+                continue;
-+            }
-+
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+            //鑾峰彇鍙戦�佹柟寮�
-+            String sendPreachform = getSendPreachform(serviceSubtaskPreachform, serviceSubtask);
-+            if (sendPreachform.equals("-1") || serviceSubtask.getSendstate() == 6 || serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 4) {
-+                //璇存槑宸茬粡鍏ㄩ儴閬嶅巻瀹屼簡锛屽綋鍓嶇殑鎵ц鏂瑰紡搴忓彿鏄渶鍚庝竴涓簡   鎴栬��  璇ユ偅鑰呭凡缁忛殢璁跨粨鏉燂紙鎴愬姛鎴栧け璐ヤ簡鎴栦笉鎵ц锛�
-+                continue;
-+            }
-+
-+            String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(sendPreachform));
-+            if (descByCode.equals("鐢佃瘽")) {
-+                try {
-+                    ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-+                    if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) {
-+                        //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩��
-+                        break;
-+                    }
-+                    if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
-+                        serviceSubtask.setCurrentPreachform(sendPreachform);
-+                        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
-+                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                        setFailPreachForm(serviceSubtask, sendPreachform, "鎵嬫満鍙蜂负绌�", "4");
-+                        continue;
-+                    }
-+
-+                    //鑾峰彇鍒皏alue鍊兼渶灏戠殑key
-+                    String key = getKey();
-+                    if (commonTaskcallMQ.getSendType().equals("2")) {
-+                        //璇存槑鏄珛鍗冲彂閫�
-+                        List<String> list = new ArrayList<>();
-+                        list.add(serviceSubtask.getId().toString());
-+                        log.info("缂撳瓨涓璫ache-0鐨勫�间负锛歿}", list);
-+                        redisCache.setCacheListLeftAndDistinct("cache-0", list);
-+                    } else {
-+                        //闈炵珛鍗冲彂閫�
-+                        List<String> list = new ArrayList<>();
-+                        list.add(serviceSubtask.getId().toString());
-+                        redisCache.setCacheListLeftAndDistinct(key, list);
-+                    }
-+                } catch (Exception exception) {
-+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                    serviceSubtaskRecord.setPreachform("3");
-+                    serviceSubtaskRecord.setResult("fail");
-+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                    serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐�");
-+                    log.error("闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐ワ細{}", exception.getMessage());
-+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                    //灏嗙數璇濈姸鎬佽缃负澶辫触
-+                    setFailPreachForm(serviceSubtask, sendPreachform, "闃熷垪浠诲姟鐢佃瘽鍙戦�佸け璐�", "5");
-+
-+                    continue;
-+                }
-+                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                setFailPreachForm(serviceSubtask, sendPreachform, "闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�", "2");
- 
--                        //浠诲姟鍙戦�佽褰�
--                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                        serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                        serviceSubtaskRecord.setUuid(uuid);
--                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                        serviceSubtaskRecord.setPreachform("3");
--                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                        serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�");
--                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                    }
--                    if (CollectionUtils.isEmpty(lssubIds)) {
--                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜�
--                        isSend = true;
--                    }
--                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓�
--                    subIds.clear();
--                    subIds.addAll(lssubIds);
--                    lssubIds.clear();
--                } else if (descByCode.equals("澶氬獟浣�")) {
--                    //澶氬獟浣�
--                    continue;
--                } else if (descByCode.equals("绾歌川")) {
--                    //绾歌川
--                    continue;
--                } else if (descByCode.equals("鐭俊")) {
--                    //鐭俊
--                    //瀵箄rl涓袱涓弬鏁板姞瀵�
--                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
--                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
-+                //浠诲姟鍙戦�佽褰�
-+                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                serviceSubtaskRecord.setPreachform("3");
-+                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�");
-+                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+
-+            } else if (descByCode.equals("鐭俊")) {
-+                //鐭俊
-+                //瀵箄rl涓袱涓弬鏁板姞瀵�
-+                RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+                String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
- 
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        //鍏堝垽鏂竴涓嬶紝subIds鏄惁涓虹┖锛屽鏋滀笉涓虹┖锛屽彧鎵цsubIds閲岀殑鎮h��
--                        if (CollectionUtils.isNotEmpty(subIds)) {
--                            boolean contains = subIds.contains(serviceSubtask.getId());
--                            //濡傛灉contains涓嶄负true,璇存槑褰撳墠鐨勬偅鑰呭凡缁忓彂閫佹垚鍔燂紝鐩存帴寰幆涓嬩竴涓汉灏辫
--                            if (!contains) continue;
--                        }
-+                if (org.apache.commons.lang3.StringUtils.isEmpty(serviceSubtask.getPhone())) {
-+                    setFailPreachForm(serviceSubtask, sendPreachform, "鎵嬫満鍙蜂负绌�", "4");
-+                    continue;
-+                }
- 
--                        try {
--                            String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
--                            String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
--                            SendMagParam sendMagParam = new SendMagParam();
--                            sendMagParam.setType("4");
--                            if (type == 1) {
--                                //闅忚
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setParam6(subId);
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                try {
-+                    String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-+                    String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
-+                    SendMagParam sendMagParam = new SendMagParam();
-+                    sendMagParam.setType("4");
-+                    if (type == 1) {
-+                        //闅忚
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setParam6(subId);
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
- //                                sendMagParam.setUrl(ip + ":" + req_path + "/followvisit/particty?param1=" + taskId + "&param2=" + patid + "&param5=false");
--                                //杞垚16杩涘埗
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                sendMagParam.setPhone(serviceSubtask.getPhone());
--                                sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
--                                if (visitHosp == 2) {
--                                    sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                } else if (visitHosp == 1) {
--                                    sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
--                                }
-+                        //杞垚16杩涘埗
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        sendMagParam.setPhone(serviceSubtask.getPhone());
-+                        sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
-+                        if (visitHosp == 2) {
-+                            sendMagParam.setContent("鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                        } else if (visitHosp == 1) {
-+                            sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
-+                        }
- 
--                            } else if (type == 2) {
--                                //闂埜锛堥棶棰橈級
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setParam6(subId);
-+                    } else if (type == 2) {
-+                        //闂埜锛堥棶棰橈級
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setParam6(subId);
- //                                serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()));
--                                serviceOutPath.setParam3(ivrTask1.getTaskName());
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        serviceOutPath.setParam3(ivrTask1.getTaskName());
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
- //                                sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false");
--                                sendMagParam.setPhone(serviceSubtask.getPhone());
--                                sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format);
--                                if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
--                                    sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
--                                    sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                } else
--                                    sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
--                            } else if (type == 3) {
--                                //瀹f暀
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setParam6(subId);
--                                serviceOutPath.setParam3(ivrTask1.getTaskName());
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                //闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡
--                                HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
--                                if (heLibrary.getHetype().equals("1")) {
--                                    sendMagParam.setPhone(serviceSubtask.getPhone());
--                                    sendMagParam.setUrl(ip + ":" + req_path + "/xj?p=" + format);
--                                    if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
--                                        sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                    } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
--                                        sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                    } else
--                                        sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
--                                } else {
--                                    //閫氱煡
--                                    sendMagParam.setPhone(serviceSubtask.getPhone());
--                                    sendMagParam.setContent(heLibrary.getPreachcontent());
--                                }
--                            }
--                            //鐭俊杩橀渶瑕佹ā鏉�
--                            String s = null;
--                            if (visitHosp == 1) {
--                                //鏂板崕鐨勭煭淇″彂閫佹柟寮�
--                                Map<String, String> req = new HashMap<>();
--                                req.put("phone", sendMagParam.getPhone());
--                                req.put("content", sendMagParam.getContent());
--                                s = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
--                            } else if (visitHosp == 2) {
--                                String url = configService.selectConfigByKey("token.360",serviceSubtask.getOrgid());
--                                //涓芥按鐨勭煭淇″彂閫佹柟寮�
--                                Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
--                                String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(),url);
--                                log.info("-----------token鐨勫�间负锛歿}", token);
--                                if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
--                                    ServiceSubtask ss = new ServiceSubtask();
--                                    ss.setResult("error");
--                                    ss.setRemark("鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�");
--                                    ss.setSendstate(5L);
--                                    ss.setId(serviceSubtask.getId());
--//                                    ss.setFinishtime(new Date());
--                                    serviceSubtaskMapper.updateServiceSubtask(ss);
--                                    continue;
--                                }
--                                log.info("---------mq涓芥按鐭俊鍙戦�佸叆鍙俛ddress锛歿},  sendMagParam:{},  orgid:{}-------", map.get("address"), sendMagParam, serviceSubtask.getOrgid());
--                                String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);
--                                log.info("---------涓芥按鐭俊鍙戦�佺粨鏋滐細{}-------", dxCode);
--                                ObjectMapper objectMapper = new ObjectMapper();
--                                Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
--                                String code = textParam.get("Code").toString();
--                                if (code.equals("0")) {
--                                    s = "true";
--                                } else {
--                                    throw new BaseException(null);
--                                }
--                            }
--                            if (s.equals("true")) {
--                                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
--                                String uuid = UUID.randomUUID().toString();
--                                serviceSubtask.setResult("success");
--                                serviceSubtask.setRemark("鐭俊鍙戦�佹垚鍔�");
--                                serviceSubtask.setGuid(uuid);
--                                serviceSubtask.setSendstate(3L);
--                                serviceSubtask.setFinishtime(new Date());
--                                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--
--                                //浠诲姟鍙戦�佽褰�
--                                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                                serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                                serviceSubtaskRecord.setUuid(uuid);
--                                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                                serviceSubtaskRecord.setPreachform("5");
--                                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                                serviceSubtaskRecord.setResult("success");
--                                serviceSubtaskRecord.setRemark("鐭俊鍙戦�佹垚鍔�");
--                                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                                log.error("serviceSubtaskRecord淇濆瓨鎴愬姛浜嗗悧锛燂細{}", serviceSubtaskRecord);
--                            }
--                        } catch (Exception e) {
--                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                            serviceSubtaskRecord.setPreachform("4");
--                            serviceSubtaskRecord.setResult("fail");
--                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                            serviceSubtaskRecord.setRemark("鐭俊鍙戦�佸け璐�");
--                            log.error("鐭俊鍙戦�佸け璐ワ細{}", e.getMessage());
--                            lssubIds.add(serviceSubtask.getId());
--                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                            continue;
--                        }
-+                        sendMagParam.setPhone(serviceSubtask.getPhone());
-+                        sendMagParam.setUrl(ip + ":" + req_path + "/wt?p=" + format);
-+                        //濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛�
-+                        if (serviceSubtask.getType().equals("1"))
-+                            sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
-+                        if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
-+                            sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                        } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
-+                            sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                        } else sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
-+                    } else if (type == 3) {
-+                        //瀹f暀
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setParam6(subId);
-+                        serviceOutPath.setParam3(ivrTask1.getTaskName());
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        //闇�瑕侀�氳繃妯℃澘ID鍘诲垽鏂鍙戠殑鍐呭鏄鏁欒繕鏄�氱煡
-+                        HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(serviceSubtask.getLibtemplateid());
-+                        if (heLibrary.getHetype().equals("1")) {
-+                            sendMagParam.setPhone(serviceSubtask.getPhone());
-+                            sendMagParam.setUrl(ip + ":" + req_path + "/xj?p=" + format);
-+                            if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
-+                                sendMagParam.setContent("銆愭櫙瀹佺暡鏃忚嚜娌诲幙浜烘皯鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                            } else if (serviceSubtask.getOrgid().equals("47255004333112711A1001")) {
-+                                sendMagParam.setContent("銆愪附姘翠腑鍖婚櫌銆戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                            } else
-+                                sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌瀹f暀璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-+                        } else {
-+                            //閫氱煡
-+                            sendMagParam.setPhone(serviceSubtask.getPhone());
-+                            sendMagParam.setContent(heLibrary.getPreachcontent());
-+                        }
-+                    }
-+
-+                    //鐭俊杩橀渶瑕佹ā鏉�
-+                    String s = null;
-+                    if (visitHosp == 1) {
-+                        //鏂板崕鐨勭煭淇″彂閫佹柟寮�
-+                        Map<String, String> req = new HashMap<>();
-+                        req.put("phone", sendMagParam.getPhone());
-+                        req.put("content", sendMagParam.getContent());
-+                        s = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(req));
-+                    } else if (visitHosp == 2) {
-+                        String url = configService.selectConfigByKey("token.360", serviceSubtask.getOrgid());
-+                        //涓芥按鐨勭煭淇″彂閫佹柟寮�
-+                        Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
-+                        String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid(), url);
-+                        log.info("-----------token鐨勫�间负锛歿}", token);
-+                        if (ObjectUtils.isNotEmpty(map) && StringUtils.isEmpty(map.get("address"))) {
-+                            serviceSubtask.setCurrentPreachform(sendPreachform);
-+                            serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
-+                            setFailPreachForm(serviceSubtask, descByCode, "鐭俊鍙戦�佸け璐�,璇ユ満鏋勬病鏈夐厤缃煭淇″湴鍧�", "5");
-+                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                            continue;
-+                        }
-+                        log.info("---------mq涓芥按鐭俊鍙戦�佸叆鍙俛ddress锛歿},  sendMagParam:{},  orgid:{}-------", map.get("address"), sendMagParam, serviceSubtask.getOrgid());
-+                        String dxCode = getDXCode(map.get("address"), sendMagParam.getPhone(), sendMagParam.getContent(), map.get("sendPersonId"), map.get("sendPersonName"), MsgLSEnum.getHeaderByCode(serviceSubtask.getOrgid()), token);
-+                        log.info("---------涓芥按鐭俊鍙戦�佺粨鏋滐細{}-------", dxCode);
-+                        ObjectMapper objectMapper = new ObjectMapper();
-+                        Map<String, Object> textParam = objectMapper.readValue(dxCode, Map.class);
-+                        String code = textParam.get("Code").toString();
-+                        if (code.equals("0")) {
-+                            s = "true";
-+                        } else {
-+                            setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
-+                            throw new BaseException("鐭俊鍙戦�佸け璐�");
-+                        }
-+                    } else if (visitHosp == 3) {
-+                        //鐪佺珛鍚屽痉鐨勭煭淇″彂閫佹柟寮�
-+                        JSONObject data = MessageSend.sendMsg(sendMagParam.getContent(), "2", sendMagParam.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
-+                        String code = data.get("code").toString();
-+                        if (StringUtils.isNotEmpty(code) && code.equals("00000")) {
-+                            s = "true";
-+                        } else {
-+                            setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
-+                            throw new BaseException("鐭俊鍙戦�佸け璐�");
-+                        }
-+                    }
-+                    if (s.equals("true")) {
-+                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                        setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佹垚鍔�", "2");
-+                        //浠诲姟鍙戦�佽褰�
-+                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                        serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                        serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                        serviceSubtaskRecord.setPreachform("5");
-+                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                        serviceSubtaskRecord.setResult("success");
-+                        serviceSubtaskRecord.setRemark("鐭俊鍙戦�佹垚鍔�");
-+                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                        log.error("serviceSubtaskRecord淇濆瓨鎴愬姛浜嗗悧锛燂細{}", serviceSubtaskRecord);
-+                    } else {
-+                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                        setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
-+                    }
-+                } catch (Exception e) {
-+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                    serviceSubtaskRecord.setPreachform("4");
-+                    serviceSubtaskRecord.setResult("fail");
-+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                    serviceSubtaskRecord.setRemark("鐭俊鍙戦�佸け璐�");
-+                    log.error("鐭俊鍙戦�佸け璐ワ細{}", e.getMessage());
-+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                    setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
-+                    continue;
-+                }
- 
--
--                    }
--                    if (CollectionUtils.isEmpty(lssubIds)) {
--                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜�
--                        isSend = true;
--                    }
--                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓�
--                    subIds.clear();
--                    subIds.addAll(lssubIds);
--                    lssubIds.clear();
--                } else if (descByCode.equals("鍏紬鍙�")) {
--                    //鍏紬鍙�
--                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
--                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
--                    for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
--                        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
--                        try {
--                            SendMagParam sendMagParam = new SendMagParam();
--                            sendMagParam.setType("5");
--                            String url = null;
--                            Boolean aBoolean = false;
--                            if (type == 1) {
--                                //闅忚
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                url = ip + ":" + req_path + "/sf?p=" + format;
--                            } else if (type == 2) {
--                                //闂埜
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--//                                serviceOutPath.setParam3(URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()));
--                                serviceOutPath.setParam3(ivrTask1.getTaskName());
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                url = ip + ":" + req_path + "/wt?p=" + format;
--                            } else if (type == 3) {
--                                //瀹f暀
--                                ServiceOutPath serviceOutPath = new ServiceOutPath();
--                                serviceOutPath.setParam1(taskId);
--                                serviceOutPath.setParam2(patid);
--                                serviceOutPath.setParam3(ivrTask1.getTaskName());
--                                serviceOutPath.setCreateTime(new Date());
--                                iServiceOutPathService.insertServiceOutPath(serviceOutPath);
--                                String format = String.format("%03X", serviceOutPath.getId());
--                                serviceOutPath.setRadix(format);
--                                serviceOutPath.setUpdateTime(new Date());
--                                iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--                                url = ip + ":" + req_path + "/xj?p=" + format;
--                            }
--                            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid());
--                            if (StringUtils.isEmpty(patArchive.getPatidHis())) {
--                                ServiceSubtask ss = new ServiceSubtask();
--                                ss.setResult("error");
--                                ss.setRemark("鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖");
--                                ss.setSendstate(5L);
--                                ss.setId(serviceSubtask.getId());
--//                                ss.setFinishtime(new Date());
--                                serviceSubtaskMapper.updateServiceSubtask(ss);
--                                continue;
--                            }
-+            } else if (descByCode.equals("鍏紬鍙�")) {
-+                //鍏紬鍙�
-+                RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+                String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
-+                String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-+
-+                try {
-+                    SendMagParam sendMagParam = new SendMagParam();
-+                    sendMagParam.setType("5");
-+                    String url = null;
-+                    Boolean aBoolean = false;
-+                    if (type == 1) {
-+                        //闅忚
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        url = ip + ":" + req_path + "/sf?p=" + format;
-+                    } else if (type == 2) {
-+                        //闂埜
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setParam3(ivrTask1.getTaskName());
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        url = ip + ":" + req_path + "/wt?p=" + format;
-+                        //濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛�
-+                        if (serviceSubtask.getType().equals("1"))
-+                            sendMagParam.setUrl(ip + ":" + req_path + "/sf?p=" + format);
-+                    } else if (type == 3) {
-+                        //瀹f暀
-+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
-+                        serviceOutPath.setParam1(taskId);
-+                        serviceOutPath.setParam2(patid);
-+                        serviceOutPath.setParam3(ivrTask1.getTaskName());
-+                        serviceOutPath.setCreateTime(new Date());
-+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-+                        String format = String.format("%03X", serviceOutPath.getId());
-+                        serviceOutPath.setRadix(format);
-+                        serviceOutPath.setUpdateTime(new Date());
-+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-+                        url = ip + ":" + req_path + "/xj?p=" + format;
-+                    }
-+                    if (StringUtils.isEmpty(patArchive.getPatidHis())) {
-+                        serviceSubtask.setCurrentPreachform(sendPreachform);
-+                        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
-+                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                        //澶辫触璁板綍
-+                        setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�,his绯荤粺鐨勬偅鑰卛d涓虹┖", "5");
-+                        continue;
-+                    }
- 
--                            //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
--                            log.error("鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D锛歿}", patArchive.getOrgid());
--                            List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
--                            if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
--                                ServiceSubtask ss = new ServiceSubtask();
--                                ss.setResult("error");
--                                ss.setRemark("璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�");
--                                ss.setSendstate(5L);
--                                ss.setId(serviceSubtask.getId());
--//                                ss.setFinishtime(new Date());
--                                serviceSubtaskMapper.updateServiceSubtask(ss);
--                                continue;
--                            }
-+                    //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D
-+                    log.error("鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処D锛歿}", patArchive.getOrgid());
-+                    List<String> wxqqxx = WxGZHEnum.getDescByCode(patArchive.getOrgid());
-+                    if (CollectionUtils.isEmpty(wxqqxx) || wxqqxx.size() < 4) {
-+                        serviceSubtask.setCurrentPreachform(sendPreachform);
-+                        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
-+                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+
-+                        //澶辫触璁板綍
-+                        setFailPreachForm(serviceSubtask, sendPreachform, "璇ユ満鏋勭殑鍏紬鍙烽厤缃俊鎭笉鍏紝鏃犳硶閫氳繃鍏紬鍙峰彂閫�", "5");
-+                        continue;
-+                    }
- 
- 
--                            String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskName(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(), wxqqxx);
--                            log.error("wxCode鐨勫�间负:{}", wxCode);
--                            Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
--                            log.error("map鐨勫�间负:{}", map);
--                            if (!map.isEmpty()) {
--                                serviceSubtask.setResult("success");
--                                serviceSubtask.setSendstate(3L);
--                                log.error("aBoolean鐨勫�间负:{}", aBoolean);
--                                if (map.get("succ").toString().equals("true")) {
--                                    aBoolean = true;
--                                }
--                                if (aBoolean == false) {
--                                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                                    serviceSubtaskRecord.setPreachform("5");
--                                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                                    serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get("msg")) ? map.get("msg").toString() : null);
--                                    lssubIds.add(serviceSubtask.getId());
--                                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                                    continue;
--                                }
--                            }
--                        } catch (Exception e) {
--                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
--                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
--                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                            serviceSubtaskRecord.setPreachform("5");
--                            serviceSubtaskRecord.setResult("fail");
--                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                            serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佸け璐�");
--                            log.error("鍏紬鍙峰彂閫佸け璐ワ細{}", e.getMessage());
--                            lssubIds.add(serviceSubtask.getId());
--                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                            continue;
--                        }
--                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
--                        String uuid = UUID.randomUUID().toString();
--                        serviceSubtask.setResult("success");
--                        serviceSubtask.setRemark("鍏紬鍙峰彂閫佹垚鍔�");
--                        serviceSubtask.setGuid(uuid);
--                        serviceSubtask.setSendstate(3L);
--                        serviceSubtask.setFinishtime(new Date());
--                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--
--                        //浠诲姟鍙戦�佽褰�
--                        ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
--                        serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
--                        serviceSubtaskRecord.setUuid(uuid);
--                        serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
--                        serviceSubtaskRecord.setPreachform("5");
--                        serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
--                        serviceSubtaskRecord.setResult("success");
--                        serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佹垚鍔�");
--                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
--                    }
--                    if (CollectionUtils.isEmpty(lssubIds)) {
--                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜�
--                        isSend = true;
--                    }
--                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓�
--                    subIds.clear();
--                    subIds.addAll(lssubIds);
--                    lssubIds.clear();
--                }
--                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
--            }
--            if (CollectionUtils.isNotEmpty(subIds)) {
--                //濡傛灉鍏ㄩ儴鐨勫彂閫佹柟寮忛兘鍙戝畬浜嗭紝杩樻湁鏄湭鍙戦�佺殑,闇�瑕佸幓subTask琛ㄤ腑锛岃褰曚竴涓嬶紝鍙戦�佸け璐�
--                for (Long id : subIds) {
--                    ServiceSubtask serviceSubtask = new ServiceSubtask();
--                    serviceSubtask.setResult("error");
--                    serviceSubtask.setRemark("鍙戦�佸け璐�");
-+                    String wxCode = getWXCode(serviceSubtask.getSfzh(), url, serviceSubtask.getTaskName(), serviceSubtask.getTaskName(), patArchive.getTelcode(), patArchive.getName(), patArchive.getPatidHis(), wxqqxx);
-+                    log.error("wxCode鐨勫�间负:{}", wxCode);
-+                    Map<String, Object> map = JSONObject.parseObject(wxCode, Map.class);
-+                    log.error("map鐨勫�间负:{}", map);
-+                    if (!map.isEmpty()) {
-+                        serviceSubtask.setResult("success");
-+                        serviceSubtask.setSendstate(3L);
-+                        log.error("aBoolean鐨勫�间负:{}", aBoolean);
-+                        if (map.get("succ").toString().equals("true")) {
-+                            aBoolean = true;
-+                        }
-+                        if (aBoolean == false) {
-+                            ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                            serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                            serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                            serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                            serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                            serviceSubtaskRecord.setPreachform("5");
-+                            serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                            serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get("msg")) ? map.get("msg").toString() : null);
-+                            serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                            //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                            setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�", "5");
-+                            continue;
-+                        }
-+                    }
-+                } catch (Exception e) {
-+                    ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                    serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                    serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-+                    serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                    serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                    serviceSubtaskRecord.setPreachform("5");
-+                    serviceSubtaskRecord.setResult("fail");
-+                    serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                    serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佸け璐�");
-+                    log.error("鍏紬鍙峰彂閫佸け璐ワ細{}", e.getMessage());
-+                    serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+                    //澶辫触璁板綍
-+                    setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�", "5");
-+                    continue;
-+                }
-+                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-+                setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佹垚鍔�", "2");
-+                //浠诲姟鍙戦�佽褰�
-+                ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
-+                serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
-+                serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
-+                serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-+                serviceSubtaskRecord.setPreachform("5");
-+                serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-+                serviceSubtaskRecord.setResult("success");
-+                serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佹垚鍔�");
-+                serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
-+
-+            } else if (descByCode.equals("浜哄伐")) {
-+                setFailPreachForm(serviceSubtask, sendPreachform, "浜哄伐寰呮墽琛�", "2");
-+            }
-+        }
-+
-+    }
-+
-+    private Date getNextVisitTime(Long subid, Long taskid, Date visitTime, String currentPreachform) {
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(subid);
-+        serviceSubtaskPreachform.setTaskid(taskid);
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            Optional<String> ct = serviceSubtaskPreachforms.stream().filter(item -> currentPreachform.equals(item.getPreachform())).map(ServiceSubtaskPreachform::getCompensateTime).findFirst();
-+            String compensateTime = "0";
-+            if (ct.isPresent()) compensateTime = ct.get();
-+            int hoursToAdd = Integer.valueOf(compensateTime) * 24;
-+            Calendar calendar = Calendar.getInstance();
-+            calendar.setTime(visitTime);
-+            calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd);
-+            Date newDate = calendar.getTime();
-+            return newDate;
-+        }
-+        return visitTime;
-+    }
-+
-+    private String getSendPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform, ServiceSubtask serviceSubtask) {
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        // 鎯呭喌1锛歝urrentPreachform涓虹┖锛屽彇sort涓�1鐨刾reachform
-+        if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
-+            return serviceSubtaskPreachforms.stream().filter(item -> item.getSort() == 1L).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
-+        }
-+
-+        // 鎯呭喌2锛歝urrentPreachform涓嶄负绌猴紝鎵句笅涓�涓猻ort
-+        Optional<Long> currentSort = serviceSubtaskPreachforms.stream().filter(item -> serviceSubtask.getCurrentPreachform().equals(item.getPreachform())).map(ServiceSubtaskPreachform::getSort).findFirst();
-+
-+        if (currentSort.isPresent()) {
-+            // 妫�鏌ユ槸鍚︽墍鏈塻endstate涓嶇瓑浜�9
-+            boolean allSendStateNot1AndNot9 = serviceSubtaskPreachforms.stream().allMatch(item -> !item.getSendstate().equals("9"));
-+
-+            // 褰搒ort绛変簬鍒楄〃size鏃讹紝骞朵笖鎵�鏈塻endstate閮戒笉绛変簬9锛屽垯杩斿洖-1
-+            if (currentSort.get().equals((long) serviceSubtaskPreachforms.size())) {
-+                if (allSendStateNot1AndNot9) {
-+                    //璇存槑鍏ㄥ彂閫佸け璐ヤ簡
-                     serviceSubtask.setSendstate(5L);
--                    serviceSubtask.setId(id);
--//                    serviceSubtask.setFinishtime(new Date());
-                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-                 }
-+                return "-1";
-             }
-+
-+            // 褰搒ort绛変簬鍒楄〃size鏃讹紝涓嬩竴涓猻ort涓�-1
-+            Long nextSort = currentSort.get() + 1;
-+
-+            // 鎵惧埌涓嬩竴涓猻ort瀵瑰簲鐨刾reachform
-+            return serviceSubtaskPreachforms.stream().filter(item -> nextSort.equals(item.getSort())).map(ServiceSubtaskPreachform::getPreachform).findFirst().orElse(null);
-         }
- 
-+        return null;
-     }
- 
--    //    /**
--//     * 鏈哄櫒浜虹涓�鍙ヨ瘽璇煶
--//     * concurrency = "50"  骞跺彂鏁颁负50
--//     */
--//    @RabbitListener(queues = "ob_queue", concurrency = "50")
--//    public void obVisit(String content, Message message, Channel channel) throws IOException {
--//        try {
--//            IvrTaskcallPhoneMQ commonTaskcallMQ = null;
--//            ObjectMapper mapper = new ObjectMapper();
--//            commonTaskcallMQ = mapper.readValue(content, IvrTaskcallPhoneMQ.class);
--//            //鍒ゆ柇鎮h�呮槸鍚﹀凡缁忔帴鐢佃瘽
--//            String str = redisCache.getCacheObject(commonTaskcallMQ.getUuid() + "state_id");
--//            System.out.println("-----------------" + str);
--//            if (StringUtils.isNotEmpty(str) && str.equals("0")) {
--//                //鎮h�呭凡缁忔帴鍚簡鐢佃瘽
--//                new PhoneUtils().ttsPlayback(commonTaskcallMQ.getScript(), commonTaskcallMQ.getUuid());
--//            } else if (StringUtils.isNotEmpty(str) && str.equals("-10")) {
--//                //杩欎釜璇存槑,宸茬粡鎵撲簡鎸囧畾閬嶆暟杩樻槸娌℃湁浜烘帴锛屽彲浠ュ皢娑堟伅浠庨槦鍒椾腑绉婚櫎浜�
--//                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
--//                return;
--//            } else {
--//                //杩涜闃熷垪灏鹃儴锛岃繘琛屼笅涓�娆℃牎楠�
--////                channel.basicRecover(false);
--//                channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
--//                System.out.println("++++++++++++++++++++++" + str);
--//                return;
--//            }
--//            //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
--//            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
--//        } catch (Exception e) {
--//            log.error("============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!==============");
--//            log.error(e.getMessage());
--//            channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
--//        }
--//    }
-+
-+    /**
-+     * @param serviceSubtask
-+     * @param preachform
-+     * @param remark
-+     * @param failSendstate
-+     * @return
-+     */
-+    public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
-+        if (preachform.equals("-1")) {
-+            //璇存槑閮戒笉闇�瑕佹墽琛屼簡
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+            serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+            serviceSubtaskPreachform.setSendstate(failSendstate);
-+            serviceSubtaskPreachformMapper.updateSSPByCondition(serviceSubtaskPreachform);
-+            return true;
-+        }
-+
-+        //灏嗙姸鎬佽缃负澶辫触
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+        //鑾峰彇璇ユ偅鑰呯殑鍙戦�佹柟寮忔�绘暟
-+        List<ServiceSubtaskPreachform> spSize = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        serviceSubtaskPreachform.setPreachform(preachform);
-+        //1:鏈彂閫佺姸鎬�
-+        serviceSubtaskPreachform.setSendstate("1");
-+        //鐢佃瘽鐨勬湭鍙戦�佺姸鎬侊紝闇�瑕佹煡2锛屽洜涓猴紝鏁版嵁鍙兘鍗″湪闃熷垪閲屼簡
-+        if (preachform.equals("3")) serviceSubtaskPreachform.setSendstate("2");
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
-+            serviceSubtaskPreachform1.setSendstate(failSendstate);
-+            serviceSubtaskPreachform1.setRemark(remark);
-+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
-+            //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡,骞朵笖鏈杩樻槸鍙戦�佸け璐ワ紝閭g洿鎺ュ皢serviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
-+            if (serviceSubtaskPreachform1.getSort() == spSize.size()) {
-+                if (serviceSubtaskPreachform1.getSort() == spSize.size()) {
-+                    if (failSendstate.equals("4") || failSendstate.equals("5")) {
-+                        serviceSubtask.setCurrentPreachform(preachform);
-+                        serviceSubtask.setSendstate(5L);
-+                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                        return true;
-+                    }
-+                }
-+            }
-+        } else {
-+            log.error("銆怣Q涓鎮h�呮病鏈夋煡璇㈠埌灞炰簬浠栫殑鍙戦�佹柟寮忥紝subid锛歿},prechform:{},orgid:{}銆�", serviceSubtask.getId(), preachform, serviceSubtask.getOrgid());
-+            return false;
-+        }
-+
-+        serviceSubtask.setCurrentPreachform(preachform);
-+        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime(), serviceSubtask.getCurrentPreachform()));
-+        serviceSubtask.setSendstate(3L);
-+        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+        return true;
-+    }
-+
-     private String getKey() {
--        Map<String, String> map = new HashMap<>();
--        for (int i = 0; i < 6; i++) {
--            Boolean aBoolean = redisCache.hasKey("cache-" + i);
--            if (!aBoolean) {
--                redisCache.setCacheObject("cache-" + i, "");
--                map.put("cache-" + i, "");
--            } else {
--                map.put("cache-" + i, redisCache.getCacheObject("cache-" + i));
-+        String targetKey = null;
-+        long minSize = Long.MAX_VALUE;
-+
-+        for (int i = 1; i < 6; i++) {
-+            String key = "cache-" + i;
-+
-+            // 鑾峰彇 list 鐨勯暱搴︼紙鍗� value 鐨勫厓绱犱釜鏁帮級
-+            Long size = redisCache.getListSize(key);
-+            if (size == null) {
-+                size = 0L; // 濡傛灉 key 涓嶅瓨鍦紝璁や负鏄� 0
-             }
--        }
- 
--        String key = null;
--        String value = "";
--        for (Map.Entry<String, String> entry : map.entrySet()) {
--            if (StringUtils.isEmpty(value)) {
--                value = entry.getValue();
--                key = entry.getKey();
--            } else {
--                if (entry.getValue().split(",").length < value.split(",").length) {
--                    value = entry.getValue();
--                    key = entry.getKey();
--                }
-+            // 鍙栨渶灏忓��
-+            if (size < minSize) {
-+                minSize = size;
-+                targetKey = key;
-             }
-         }
--        return key;
-+        return targetKey;
-     }
-+
-+//    private String getKey() {
-+//        Map<String, List> map = new HashMap<>();
-+//        for (int i = 0; i < 6; i++) {
-+//            Boolean aBoolean = redisCache.hasKey("cache-" + i);
-+//            if (!aBoolean) {
-+//                redisCache.setCacheList("cache-" + i, new ArrayList<String>());
-+//                map.put("cache-" + i, new ArrayList<String>());
-+//            } else {
-+//                map.put("cache-" + i, redisCache.getCacheObject("cache-" + i));
-+//            }
-+//        }
-+//
-+//        String key = null;
-+//        List<String> value = new ArrayList<String>();
-+//        for (Map.Entry<String, List> entry : map.entrySet()) {
-+//            if (CollectionUtils.isEmpty(value)) {
-+//                value = entry.getValue();
-+//                key = entry.getKey();
-+//            } else {
-+//                value = entry.getValue();
-+//                key = entry.getKey();
-+//            }
-+//        }
-+//        return key;
-+//    }
- 
-     private String getWXCode(String idcard, String url, String taskName, String taskDesc, String phone, String patientname, String setPatientid, List<String> wxqqxx) {
-         XinHuaWXReq xinHuaWXReq = new XinHuaWXReq();
-Index: ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.common.utils;\r\n\r\nimport com.github.pagehelper.PageHelper;\r\nimport com.ruoyi.common.core.page.PageDomain;\r\nimport com.ruoyi.common.core.page.TableSupport;\r\nimport com.ruoyi.common.utils.sql.SqlUtil;\r\n\r\n/**\r\n * 鍒嗛〉宸ュ叿绫籠r\n *\r\n * @author ruoyi\r\n */\r\npublic class PageUtils extends PageHelper {\r\n    /**\r\n     * 璁剧疆璇锋眰鍒嗛〉鏁版嵁\r\n     */\r\n    public static void startPage() {\r\n        PageDomain pageDomain = TableSupport.buildPageRequest();\r\n        Integer pageNum = pageDomain.getPageNum();\r\n        Integer pageSize = pageDomain.getPageSize();\r\n        String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());\r\n        Boolean reasonable = pageDomain.getReasonable();\r\n        PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);\r\n    }\r\n\r\n    /**\r\n     * 璁剧疆璇锋眰鍒嗛〉鏁版嵁\r\n     */\r\n    public static void startPageByPost(Integer pageNum, Integer pageSize) {\r\n        if (pageNum == null) pageNum = 1;\r\n        if (pageSize == null) pageSize = 10;\r\n        PageHelper.startPage(pageNum, pageSize, \"\").setReasonable(true);\r\n    }\r\n\r\n    /**\r\n     * 娓呯悊鍒嗛〉鐨勭嚎绋嬪彉閲廫r\n     */\r\n    public static void clearPage() {\r\n        PageHelper.clearPage();\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java
---- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java	(date 1759137107782)
-@@ -38,4 +38,14 @@
-     public static void clearPage() {
-         PageHelper.clearPage();
-     }
-+
-+    /**
-+     * 璁$畻鍋忕Щ閲�
-+     */
-+    public static Integer getOffset(Integer pageNum, Integer pageSize) {
-+        if (pageNum == null) pageNum = 1;
-+        if (pageSize == null) pageSize = 10;
-+        return (pageNum - 1) * pageSize;
-+
-+    }
- }
-Index: smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.alibaba.fastjson2.JSON;\r\nimport com.fasterxml.jackson.core.JsonProcessingException;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.*;\r\nimport com.smartor.common.FtpService;\r\nimport com.smartor.config.PhoneUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.*;\r\nimport com.smartor.service.*;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.data.redis.core.ListOperations;\r\nimport org.springframework.data.redis.core.RedisTemplate;\r\nimport org.springframework.stereotype.Service;\r\nimport org.springframework.transaction.annotation.Transactional;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.math.RoundingMode;\r\nimport java.text.DecimalFormat;\r\nimport java.text.SimpleDateFormat;\r\nimport java.time.Duration;\r\nimport java.time.LocalDate;\r\nimport java.time.LocalTime;\r\nimport java.time.ZoneId;\r\nimport java.time.format.DateTimeFormatter;\r\nimport java.util.*;\r\nimport java.util.concurrent.TimeUnit;\r\nimport java.util.regex.Matcher;\r\nimport java.util.regex.Pattern;\r\nimport java.util.stream.Collectors;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥殢璁匡級Service涓氬姟灞傚鐞哱r\n *\r\n * @author ruoyi\r\n * @date 2024-02-02\r\n */\r\n@Slf4j\r\n@Service\r\npublic class ServiceSubtaskServiceImpl implements IServiceSubtaskService {\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;\r\n\r\n    @Autowired\r\n    private IServiceTaskService serviceTaskService;\r\n\r\n    @Autowired\r\n    private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;\r\n\r\n    @Autowired\r\n    private IvrTaskVisitResultMapper serviceTaskVisitResultMapper;\r\n\r\n    @Autowired\r\n    private IServiceTaskdeptService serviceTaskdeptService;\r\n\r\n    @Autowired\r\n    private IServiceTaskdiagService serviceTaskdiagService;\r\n\r\n    @Autowired\r\n    private IServiceTaskoperService serviceTaskoperService;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    @Autowired\r\n    private IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper;\r\n\r\n    @Autowired\r\n    private IIvrTaskTemplateService ivrTaskTemplateService;\r\n\r\n    @Autowired\r\n    private ISvyTaskTemplateService svyTaskTemplateService;\r\n\r\n    @Autowired\r\n    private IIvrTaskTemplateScriptService iIvrTaskTemplateScriptService;\r\n\r\n    @Autowired\r\n    private IServiceOutPathService iServiceOutPathService;\r\n\r\n    @Autowired\r\n    private FtpService ftpService;\r\n\r\n    @Autowired\r\n    private PatMedInhospMapper patMedInhospMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n\r\n    @Value(\"${pri_key}\")\r\n    private String pri_key;\r\n\r\n    @Value(\"${pub_key}\")\r\n    private String pub_key;\r\n\r\n    @Value(\"${ASRCallBackPath}\")\r\n    private String ASRCallBackPath;\r\n\r\n    @Autowired\r\n    private RedisTemplate redisTemplate;\r\n\r\n    @Value(\"${hangup}\")\r\n    private String hangup;\r\n\r\n    @Value(\"${app_key_yq}\")\r\n    private String app_key_yq;\r\n\r\n    @Value(\"${ruoyi.profile}\")\r\n    private String profile;\r\n\r\n    @Value(\"${voicePathPrefix}\")\r\n    private String voicePathPrefix;\r\n\r\n    @Value(\"${localIP}\")\r\n    private String localIP;\r\n\r\n    @Value(\"${req_path}\")\r\n    private String req_path;\r\n\r\n    @Value(\"${xhsmsPath}\")\r\n    private String xhsmsPath;\r\n\r\n    @Value(\"${phoneUpEveryHour}\")\r\n    private Integer phoneUpEveryHour;\r\n    @Value(\"${phoneEndHour}\")\r\n    private Integer phoneEndHour;\r\n\r\n    /**\r\n     * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param id 鍗曚竴浠诲姟锛堥殢璁匡級涓婚敭\r\n     * @return 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     */\r\n    @Override\r\n    public ServiceSubtask selectServiceSubtaskById(Long id) {\r\n        return serviceSubtaskMapper.selectServiceSubtaskById(id);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級鍒楄〃\r\n     *\r\n     * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     */\r\n    @Override\r\n    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO) {\r\n        return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n    }\r\n\r\n    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO) {\r\n        return serviceSubtaskMapper.selectServiceSubtaskListAgain(serviceSubtaskVO);\r\n    }\r\n\r\n    @Override\r\n    public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {\r\n        //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚圽r\n        List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();\r\n        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);\r\n        List<ServiceSubtask> list = selectServiceSubtaskList(serviceSubtaskVO);\r\n\r\n        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n        if (CollectionUtils.isEmpty(list) || list.size() == 0) {\r\n            return DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);\r\n        }\r\n\r\n\r\n        //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ServiceSubtaskVO涓璡r\n        ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);\r\n        serviceTaskVO.setShowDate(serviceTask.getShowDate());\r\n        serviceTaskVO.setShowTimeMorn(serviceTask.getShowTimeMorn());\r\n        serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon());\r\n        serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight());\r\n        serviceTaskVO.setPreachform(serviceTask.getPreachform());\r\n        String sendTimeSlot = serviceTask.getSendTimeSlot();\r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        try {\r\n            //鑾峰彇鍒板彂閫佹椂闂寸殑闆嗗悎\r\n            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {\r\n                List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);\r\n                serviceTaskVO.setSendTimeslot(taskSendTimeVOList);\r\n                serviceTaskVO.setSendType(serviceTask.getSendType());\r\n            }\r\n            //鏂囨湰鍙橀噺鍙傛暟\r\n            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(serviceTask.getTextParam())) {\r\n                Map<String, Map<String, String>> textParam = objectMapper.readValue(serviceTask.getTextParam(), Map.class);\r\n                serviceTaskVO.setTextParam(textParam);\r\n            }\r\n        } catch (JsonProcessingException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n        for (ServiceSubtask serviceSubtask1 : list) {\r\n            PatTaskRelevance patTaskRelevance = new PatTaskRelevance();\r\n            if (!serviceSubtask1.getHospType().equals(\"2\")) {\r\n                log.info(\"闅忚鏌ヨ涓嶄负鍑洪櫌锛寋}\", serviceSubtask1.getHospType());\r\n                //鑾峰彇鍒版偅鑰呬俊鎭紝骞舵斁鍏ュ埌闆嗗悎涓璡r\n                patTaskRelevance.setName(serviceSubtask1.getSendname());\r\n                patTaskRelevance.setAge(serviceSubtask1.getAge());\r\n                patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime());\r\n                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());\r\n                patTaskRelevance.setPhone(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setTelcode(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setAddr(serviceSubtask1.getAddr());\r\n                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());\r\n                patTaskRelevance.setPatid(serviceSubtask1.getPatid());\r\n                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());\r\n                patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode());\r\n                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());\r\n                patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode());\r\n                patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname());\r\n                patTaskRelevance.setInhosptime(serviceSubtask1.getInhosptime());\r\n                patTaskRelevance.setDrname(serviceSubtask1.getDrname());\r\n                patTaskRelevance.setDrcode(serviceSubtask1.getDrcode());\r\n                patTaskRelevance.setEndtime(serviceSubtask1.getEndtime());\r\n                patTaskRelevance.setNurseId(serviceSubtask1.getNurseId());\r\n                patTaskRelevance.setNurseName(serviceSubtask1.getNurseName());\r\n                patTaskRelevances.add(patTaskRelevance);\r\n            }\r\n            if (serviceSubtask1.getHospType().equals(\"2\")) {\r\n                log.info(\"闅忚鏌ヨ涓哄嚭闄紝{}\", serviceSubtask1.getHospType());\r\n                patTaskRelevance.setName(serviceSubtask1.getSendname());\r\n                patTaskRelevance.setAge(serviceSubtask1.getAge());\r\n                patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());\r\n                patTaskRelevance.setPhone(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setTelcode(serviceSubtask1.getPhone());\r\n                patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime());\r\n                patTaskRelevance.setAddr(serviceSubtask1.getAddr());\r\n                patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());\r\n                patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode());\r\n                patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());\r\n                patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());\r\n                patTaskRelevance.setPatid(serviceSubtask1.getPatid());\r\n                patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());\r\n                patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode());\r\n                patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname());\r\n                patTaskRelevance.setInhosptime(serviceSubtask1.getInhosptime());\r\n                patTaskRelevance.setStarttime(serviceSubtask1.getStarttime());\r\n                patTaskRelevance.setDrname(serviceSubtask1.getDrname());\r\n                patTaskRelevance.setDrcode(serviceSubtask1.getDrcode());\r\n                patTaskRelevance.setEndtime(serviceSubtask1.getEndtime());\r\n                patTaskRelevance.setStarttime(serviceSubtask1.getStarttime());\r\n                patTaskRelevance.setNurseId(serviceSubtask1.getNurseId());\r\n                patTaskRelevance.setNurseName(serviceSubtask1.getNurseName());\r\n                patTaskRelevances.add(patTaskRelevance);\r\n            }\r\n        }\r\n\r\n        serviceTaskVO.setPatTaskRelevances(patTaskRelevances);\r\n        return serviceTaskVO;\r\n    }\r\n\r\n    @Override\r\n    public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) {\r\n        List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);\r\n        return selectServiceSubtaskList;\r\n    }\r\n\r\n    @Override\r\n    public List<ServiceSubtask> patItem2(ServiceSubtaskVO serviceSubtaskVO) {\r\n        List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();\r\n        for (Long sendstate : serviceSubtaskVO.getSendstates()) {\r\n            serviceSubtaskVO.setSendstate(sendstate);\r\n            List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskList.addAll(serviceSubtasks);\r\n        }\r\n        return serviceSubtaskList;\r\n    }\r\n\r\n\r\n    @Override\r\n    public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) {\r\n        serviceSubtaskVO.setPageSize(99999999);\r\n        serviceSubtaskVO.setPageNum(1);\r\n        List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);\r\n        Map<String, Object> map = new HashMap<>();\r\n        Integer wzx = 0;\r\n        Integer ysf = 0;\r\n        Integer yc = 0;\r\n        Integer fssb = 0;\r\n        Integer yfs = 0;\r\n        Integer blq = 0;\r\n        Integer dsf = 0;\r\n        for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {\r\n            if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;\r\n            else if (serviceSubtask.getSendstate() != 4L && serviceSubtask.getSendstate() != 2L) ysf = ysf + 1;\r\n            if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;\r\n            if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;\r\n            if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;\r\n            if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;\r\n            if (serviceSubtask.getExcep().equals(\"1\")) yc = yc + 1;\r\n        }\r\n        map.put(\"wzx\", wzx);\r\n        map.put(\"ysf\", ysf);\r\n        map.put(\"yc\", yc);\r\n        map.put(\"fssb\", fssb);\r\n        map.put(\"yfs\", yfs);\r\n        map.put(\"blq\", blq);\r\n        map.put(\"dsf\", dsf);\r\n\r\n        return map;\r\n    }\r\n\r\n    /**\r\n     * 鏂板鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param serviceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertServiceSubtask(ServiceSubtask serviceSubtask) {\r\n        serviceSubtask.setCreateTime(DateUtils.getNowDate());\r\n        return serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n    }\r\n\r\n    /**\r\n     * 鍐嶆鏂板鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param serviceSubtask 鍐嶆鏂板鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String addSubTaskAgain(ServiceSubtask serviceSubtask) {\r\n        ServiceSubtask serviceSubtask1 = selectServiceSubtaskById(serviceSubtask.getId());\r\n        PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n        patMedInhosp.setPatid(serviceSubtask1.getPatid());\r\n        patMedInhosp.setInhospstate(\"0\");\r\n        List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);\r\n        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask1.getPatid());\r\n\r\n        if (patMedInhospList.size() > 0) {\r\n            serviceSubtask1.setIsVisitAgain(2);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n            return \"鏃犻渶鍐嶆闅忚锛屾偅鑰呭啀鍏ラ櫌浜哱";\r\n        } else if (serviceSubtask1.getSendstate() == 4L) {\r\n            serviceSubtask1.setIsVisitAgain(2);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n            return \"鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц\";\r\n        } else if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals(\"1\")) {\r\n            serviceSubtask1.setIsVisitAgain(2);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n            return \"鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟\";\r\n        } else if (ObjectUtils.isNotEmpty(serviceSubtask1.getIsVisitAgain()) && serviceSubtask1.getIsVisitAgain() == 2) {\r\n            return \"鏃犻渶鍐嶆闅忚锛岃浠诲姟宸茬粡鍐嶆闅忚杩囦簡\";\r\n        }\r\n        //鏂板鍐嶆闅忚浠诲姟\r\n        ServiceSubtask serviceSubtask2 = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtask.class);\r\n        serviceSubtask2.setId(null);\r\n        serviceSubtask2.setUpid(serviceSubtask1.getId().intValue());\r\n        serviceSubtask2.setVisitCount(serviceSubtask1.getVisitCount() + 1);\r\n        serviceSubtask2.setSendstate(2L);\r\n        serviceSubtask2.setCreateTime(new Date());\r\n        serviceSubtask2.setUpdateTime(new Date());\r\n        serviceSubtask2.setVisitType(serviceSubtask.getVisitType());\r\n        serviceSubtask2.setVisitDeptCode(serviceSubtask.getVisitDeptCode());\r\n        serviceSubtask2.setVisitDeptName(serviceSubtask.getVisitDeptName());\r\n        int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask2);\r\n        if (i == 1) {\r\n            //鏂板鎴愬姛鍚庯紝闇�瑕佸皢涔嬪墠鐨勪换鍔¤缃负涓嶈鍐嶉殢璁匡紙闃叉閲嶅鐐癸紝鐒跺悗閲嶅鐢熸垚锛塡r\n            serviceSubtask1.setIsVisitAgain(2);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);\r\n            return \"鍐嶆闅忚浠诲姟鍒涘缓鎴愬姛\";\r\n        }\r\n        return \"鍐嶆闅忚浠诲姟鍒涘缓澶辫触锛屽啀璇锋閲嶈瘯\";\r\n    }\r\n\r\n    /**\r\n     * 淇敼鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param serviceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public Boolean updateServiceSubtask(ServiceSubtask serviceSubtask) {\r\n        serviceSubtask.setUpdateTime(DateUtils.getNowDate());\r\n        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 6)\r\n            serviceSubtask.setFinishtime(new Date());\r\n        return serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteServiceSubtaskByIds(Long[] ids) {\r\n        Integer i = 0;\r\n        for (Long id : ids) {\r\n            i = serviceSubtaskMapper.deleteServiceSubtaskById(id);\r\n        }\r\n        return i;\r\n    }\r\n\r\n    /**\r\n     * 鍗曚竴浠诲姟\r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    @Transactional(rollbackFor = Exception.class)\r\n    @Override\r\n    public Map<String, Integer> insertOrUpdateTask(ServiceTaskVO serviceTaskVO) {\r\n        if (ObjectUtils.isEmpty(serviceTaskVO)) {\r\n            log.info(\"浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n            throw new BaseException(\"浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙俓");\r\n        }\r\n        ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);\r\n        serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));\r\n        if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {\r\n            //鏂板妯℃澘淇℃伅\r\n            Long tempid = null;\r\n            String tempName = null;\r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSvyTaskTemplateVO())) {\r\n                tempid = Long.valueOf(svyTaskTemplateService.saveOrUpdateTemplate(serviceTaskVO.getSvyTaskTemplateVO()));\r\n                tempName = svyTaskTemplateService.selectSvyTaskTemplateBySvyid(tempid).getSvyname();\r\n            }\r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {\r\n                tempid = Long.valueOf(ivrTaskTemplateService.saveOrUpdateTempScript(serviceTaskVO.getIvrTaskTemplateVO()));\r\n                tempName = ivrTaskTemplateService.selectIvrTaskTemplateByID(tempid).getTemplateName();\r\n            }\r\n\r\n            //寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))\r\n                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));\r\n            if (serviceTask.getSendState() == null) {\r\n                serviceTask.setSendState(1L);\r\n                serviceTaskVO.setSendState(1L);\r\n            } else {\r\n                serviceTask.setSendState(serviceTaskVO.getSendState());\r\n            }\r\n            if (StringUtils.isNotEmpty(serviceTaskVO.getLibtemplateid())) {\r\n                serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid());\r\n                serviceTask.setLibtemplatename(serviceTaskVO.getLibtemplatename());\r\n            }\r\n            if (serviceTaskVO.getTemplateid() != null) {\r\n                serviceTask.setTemplateid(serviceTaskVO.getTemplateid());\r\n                serviceTask.setTemplatename(serviceTaskVO.getTemplatename());\r\n            } else {\r\n                serviceTask.setTemplateid(tempid);\r\n                serviceTask.setTemplatename(tempName);\r\n            }\r\n            serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes());\r\n            serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode());\r\n            if (serviceTaskVO.getLongTask() == 1) serviceTask.setSendState(2L);\r\n            serviceTask.setCreateTime(new Date());\r\n            serviceTask.setUpdateTime(new Date());\r\n            serviceTaskService.insertServiceTask(serviceTask);\r\n            log.info(\"----serviceTaskVO.getAppltype()鐨勫�间负锛歿}\", serviceTaskVO.getAppltype());\r\n            if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype())) {\r\n                if (serviceTaskVO.getAppltype().equals(\"3\")) {\r\n                    ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();\r\n                    serviceTaskdiag.setTaskId(serviceTask.getTaskid());\r\n                    serviceTaskdiag.setTaskName(serviceTask.getTaskName());\r\n                    serviceTaskdiag.setLongtask(0L);\r\n                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdiag.setLongtask(1L);\r\n                    serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());\r\n                    serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());\r\n                    serviceTaskdiag.setGuid(serviceTask.getGuid());\r\n                    serviceTaskdiag.setOrgid(serviceTask.getOrgid());\r\n                    serviceTaskdiag.setCreateTime(new Date());\r\n                    log.info(\"----serviceTaskdiag鐨勫�间负锛歿}\", serviceTaskdiag);\r\n                    if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {\r\n                        String[] Icd10codes = serviceTaskVO.getIcd10code().split(\",\");\r\n                        for (String icd10code : Icd10codes) {\r\n                            serviceTaskdiag.setIcd10code(icd10code);\r\n                            serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag);\r\n                        }\r\n                    }\r\n                } else if (serviceTaskVO.getAppltype().equals(\"4\")) {\r\n                    ServiceTaskoper serviceTaskoper = new ServiceTaskoper();\r\n                    serviceTaskoper.setOpcode(serviceTaskVO.getOpcode());\r\n                    serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());\r\n                    serviceTaskoper.setTaskId(serviceTask.getTaskid());\r\n                    serviceTaskoper.setTaskName(serviceTask.getTaskName());\r\n                    serviceTaskoper.setLongtask(0L);\r\n                    serviceTaskoper.setGuid(serviceTask.getGuid());\r\n                    serviceTaskoper.setOrgid(serviceTask.getOrgid());\r\n                    serviceTaskoper.setCreateTime(new Date());\r\n                    if (serviceTaskVO.getLongTask() == 1) serviceTaskoper.setLongtask(1L);\r\n                    if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {\r\n                        String[] opcodes = serviceTaskVO.getOpcode().split(\",\");\r\n                        for (String opcode : opcodes) {\r\n                            serviceTaskoper.setOpcode(opcode);\r\n                            log.info(\"----serviceTaskoper鐨勫�间负锛歿}\", serviceTaskoper);\r\n                            serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);\r\n                        }\r\n                    }\r\n\r\n                } else {\r\n                    ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n                    serviceTaskdept.setTaskId(serviceTask.getTaskid());\r\n                    serviceTaskdept.setTaskName(serviceTask.getTaskName());\r\n                    serviceTaskdept.setOrgid(serviceTask.getOrgid());\r\n                    serviceTaskdept.setLongtask(0L);\r\n                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);\r\n                    if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {\r\n                        String[] deptcodes = serviceTaskVO.getDeptcode().split(\",\");\r\n                        for (String deptCode : deptcodes) {\r\n                            serviceTaskdept.setDeptCode(deptCode);\r\n                            serviceTaskdept.setDeptType(\"1\");\r\n                            serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());\r\n                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);\r\n                        }\r\n                    }\r\n                    if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) {\r\n                        String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(\",\");\r\n                        for (String districtcode : leavehospitaldistrictcodes) {\r\n                            serviceTaskdept.setDeptCode(districtcode);\r\n                            serviceTaskdept.setDeptType(\"2\");\r\n                            serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());\r\n                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {\r\n                Map<String, Integer> map = new HashMap<>();\r\n                map.put(\"taskId\", serviceTask.getTaskid().intValue());\r\n                return map;\r\n            }\r\n\r\n            //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓璡r\n            ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);\r\n            serviceSubtask.setTaskid(serviceTask.getTaskid().longValue());\r\n            serviceSubtask.setTemplatename(tempName);\r\n            serviceSubtask.setTemplateid(tempid);\r\n            //鏂板\r\n            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {\r\n                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {\r\n                    //灏嗕换鍔′俊鎭柊澧炲埌闅忚鏈嶅姟琛ㄤ腑\r\n                    serviceSubtask.setSendname(patTaskRelevance.getName());\r\n                    serviceSubtask.setAge(patTaskRelevance.getAge());\r\n//                    serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));\r\n                    serviceSubtask.setSfzh(patTaskRelevance.getIdcardno());\r\n                    serviceSubtask.setPhone(patTaskRelevance.getTelcode());\r\n                    serviceSubtask.setAddr(patTaskRelevance.getAddr());\r\n                    serviceSubtask.setPatid(patTaskRelevance.getPatid());\r\n                    serviceSubtask.setCreateTime(DateUtils.getNowDate());\r\n                    serviceSubtask.setSendstate(1L);\r\n                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)\r\n                        serviceSubtask.setSendstate(2L);\r\n                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode());\r\n                    serviceSubtask.setDeptname(patTaskRelevance.getDeptName());\r\n                    serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());\r\n                    serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());\r\n                    serviceSubtask.setType(serviceTaskVO.getType());\r\n                    serviceSubtask.setHospType(patTaskRelevance.getHospType());\r\n                    serviceSubtask.setOpenid(patTaskRelevance.getOpenid());\r\n                    serviceSubtask.setDrname(patTaskRelevance.getDrname());\r\n                    serviceSubtask.setDrcode(patTaskRelevance.getDrcode());\r\n                    serviceSubtask.setInhosptime(patTaskRelevance.getInhosptime());\r\n                    serviceSubtask.setLeaveicd10code(patTaskRelevance.getLeaveicd10code());\r\n                    serviceSubtask.setLeavediagname(patTaskRelevance.getLeavediagname());\r\n                    serviceSubtask.setEndtime(patTaskRelevance.getEndtime());\r\n                    serviceSubtask.setNurseId(patTaskRelevance.getNurseId());\r\n                    serviceSubtask.setNurseName(patTaskRelevance.getNurseName());\r\n                    serviceSubtask.setCreateBy(serviceTask.getCreateBy());\r\n                    serviceSubtask.setUpdateBy(serviceTask.getCreateBy());\r\n                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());\r\n                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)\r\n                        serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());\r\n                    serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n                    serviceSubtask.getId().intValue();\r\n                }\r\n            }\r\n\r\n        } else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {\r\n            //浠诲姟淇敼\r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))\r\n                serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));\r\n            //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1\r\n            ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());\r\n//            long l = serviceTask1.getStopState() + 1;\r\n//            serviceTask.setStopState(l);\r\n            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎\r\n            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n            serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());\r\n            serviceSubtaskVO.setSendstate(2L);\r\n            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskVO.setSendstate(1L);\r\n            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);\r\n            } else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                    log.info(\"insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}\", serviceSubtask.getId().toString());\r\n                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());\r\n                    redisCache.removeElementFromList(\"cache-exist\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-0\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-1\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-2\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-3\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-4\", serviceSubtask.getId().toString());\r\n                }\r\n            }\r\n\r\n            if (serviceTaskVO.getLibtemplateid() != null)\r\n                serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString());\r\n            serviceTask.setTemplateid(serviceTaskVO.getTemplateid());\r\n            serviceTask.setLongTask(serviceTaskVO.getLongTask());\r\n            serviceTask.setUpdateTime(new Date());\r\n            serviceTaskService.updateServiceTask(serviceTask);\r\n            if (serviceTaskVO.getAppltype().equals(\"1\") || serviceTaskVO.getAppltype().equals(\"2\")) {\r\n\r\n\r\n                if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {\r\n                    String[] deptcodes = serviceTaskVO.getDeptcode().split(\",\");\r\n                    for (String deptCode : deptcodes) {\r\n                        ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n                        serviceTaskdept.setTaskId(serviceTask.getTaskid());\r\n                        serviceTaskdept.setTaskName(serviceTask.getTaskName());\r\n                        serviceTaskdept.setLongtask(0L);\r\n                        serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());\r\n                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);\r\n                        serviceTaskdept.setDeptCode(deptCode);\r\n                        serviceTaskdept.setDeptType(\"1\");\r\n                        serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());\r\n                        ServiceTaskdept st = new ServiceTaskdept();\r\n                        st.setDeptCode(deptCode);\r\n                        st.setTaskId(serviceTask.getTaskid());\r\n                        List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st);\r\n                        if (CollectionUtils.isEmpty(serviceTaskdepts)) {\r\n                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);\r\n                        } else {\r\n                            serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept);\r\n                        }\r\n                    }\r\n                }\r\n                if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) {\r\n                    String[] leavehospitaldistrictcodes = serviceTaskVO.getLeavehospitaldistrictcode().split(\",\");\r\n                    for (String districtcode : leavehospitaldistrictcodes) {\r\n                        ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n                        serviceTaskdept.setTaskId(serviceTask.getTaskid());\r\n                        serviceTaskdept.setTaskName(serviceTask.getTaskName());\r\n                        serviceTaskdept.setLongtask(0L);\r\n                        serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());\r\n                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);\r\n                        serviceTaskdept.setDeptCode(districtcode);\r\n                        serviceTaskdept.setDeptType(\"2\");\r\n                        serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());\r\n                        //鍏堥�氳繃浠诲姟ID銆侀儴闂╟ode,鍒ゆ柇ServiceTaskdept鏄惁瀛樺湪锛屼笉瀛樺湪鍒欐柊澧烇紝瀛樺湪鍒欎慨鏀筡r\n                        ServiceTaskdept st = new ServiceTaskdept();\r\n                        st.setDeptCode(districtcode);\r\n                        st.setTaskId(serviceTask.getTaskid());\r\n                        List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st);\r\n                        if (CollectionUtils.isEmpty(serviceTaskdepts)) {\r\n                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);\r\n                        } else {\r\n                            serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept);\r\n                        }\r\n                    }\r\n                }\r\n            } else if (serviceTaskVO.getAppltype().equals(\"3\")) {\r\n                ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();\r\n                serviceTaskdiag.setTaskId(serviceTask.getTaskid());\r\n                serviceTaskdiag.setTaskName(serviceTask.getTaskName());\r\n                if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) {\r\n                    throw new BaseException(\"鐤剧梾缂栫爜涓虹┖\");\r\n                }\r\n//                serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());\r\n\r\n                serviceTaskdiag.setLongtask(1L);\r\n                serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());\r\n                serviceTaskdiag.setGuid(serviceTask.getGuid());\r\n                serviceTaskdiag.setOrgid(serviceTask.getOrgid());\r\n                serviceTaskdiag.setUpdateTime(new Date());\r\n                if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {\r\n                    String[] icd10codes = serviceTaskVO.getIcd10code().split(\",\");\r\n                    for (String icdcode : icd10codes) {\r\n                        //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦╘r\n                        ServiceTaskdiag serviceTaskdiag2 = new ServiceTaskdiag();\r\n                        serviceTaskdiag2.setTaskId(serviceTaskVO.getTaskid());\r\n                        serviceTaskdiag2.setIcd10code(icdcode);\r\n                        List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagService.selectServiceTaskdiagList(serviceTaskdiag2);\r\n                        serviceTaskdiag.setIcd10code(icdcode);\r\n                        log.info(\"----serviceTaskdiag鏇存柊鐨勫�间负锛歿}\", serviceTaskdiag);\r\n                        if (CollectionUtils.isNotEmpty(serviceTaskdiags)) {\r\n                            serviceTaskdiag.setId(serviceTaskdiags.get(0).getId());\r\n                            serviceTaskdiagService.updateServiceTaskdiag(serviceTaskdiag);\r\n                        } else {\r\n                            serviceTaskdiagService.insertServiceTaskdiag(serviceTaskdiag);\r\n                        }\r\n                    }\r\n                }\r\n\r\n\r\n            } else if (serviceTaskVO.getAppltype().equals(\"4\")) {\r\n                ServiceTaskoper serviceTaskoper = new ServiceTaskoper();\r\n                if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) {\r\n                    throw new BaseException(\"鎵嬫湳缂栫爜涓虹┖\");\r\n                }\r\n//                serviceTaskoper.setOpcode(serviceTaskVO.getOpcode());\r\n                serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());\r\n                serviceTaskoper.setTaskId(serviceTask.getTaskid());\r\n                serviceTaskoper.setTaskName(serviceTask.getTaskName());\r\n                serviceTaskoper.setLongtask(1L);\r\n                serviceTaskoper.setGuid(serviceTask.getGuid());\r\n                serviceTaskoper.setOrgid(serviceTask.getOrgid());\r\n                serviceTaskoper.setCreateTime(new Date());\r\n                if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {\r\n                    String[] opcodes = serviceTaskVO.getOpcode().split(\",\");\r\n                    for (String opcode : opcodes) {\r\n                        //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦╘r\n                        ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper();\r\n                        serviceTaskoper2.setTaskId(serviceTaskVO.getTaskid());\r\n                        serviceTaskoper2.setOpcode(serviceTaskVO.getOpcode());\r\n                        List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(serviceTaskoper2);\r\n\r\n                        serviceTaskoper.setOpcode(opcode);\r\n                        log.info(\"----serviceTaskoper鐨勫�间负锛歿}\", serviceTaskoper);\r\n                        if (CollectionUtils.isNotEmpty(serviceTaskopers)) {\r\n                            serviceTaskoper.setId(serviceTaskopers.get(0).getId());\r\n                            serviceTaskoperService.updateServiceTaskoper(serviceTaskoper);\r\n                        } else {\r\n                            serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);\r\n                        }\r\n                    }\r\n                }\r\n\r\n            }\r\n            if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {\r\n                IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate();\r\n                ivrTaskTemplate.setTaskid(serviceTaskVO.getIvrTaskTemplateVO().getTaskid());\r\n                ivrTaskTemplate.setId(serviceTaskVO.getIvrTaskTemplateVO().getId());\r\n                ivrTaskTemplateService.updateIvrTaskTemplate(ivrTaskTemplate);\r\n            } else if (ObjectUtils.isNotEmpty(serviceTaskVO.getSvyTaskTemplateVO())) {\r\n                SvyTaskTemplate svyTaskTemplate = new SvyTaskTemplate();\r\n                svyTaskTemplate.setTaskid(serviceTaskVO.getSvyTaskTemplateVO().getTaskid());\r\n                svyTaskTemplate.setId(serviceTaskVO.getSvyTaskTemplateVO().getId());\r\n                svyTaskTemplateService.updateSvyTaskTemplate(svyTaskTemplate);\r\n            }\r\n\r\n            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) {\r\n                //杩欓噷闇�瑕佸皢浠诲姟id涓庝换鍔℃ā鏉縄D锛屽湪浠诲姟妯℃澘涓粦瀹歕r\n                Map<String, Integer> map = new HashMap<>();\r\n                map.put(\"taskId\", serviceTask.getTaskid().intValue());\r\n                return map;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {\r\n                for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {\r\n                    ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);\r\n                    serviceSubtask.setSendname(patTaskRelevance.getName());\r\n                    serviceSubtask.setAge(patTaskRelevance.getAge());\r\n                    serviceSubtask.setSfzh(patTaskRelevance.getSfzh());\r\n                    serviceSubtask.setPhone(patTaskRelevance.getTelcode());\r\n                    serviceSubtask.setAddr(patTaskRelevance.getAddr());\r\n                    serviceSubtask.setPatid(patTaskRelevance.getPatid());\r\n                    serviceSubtask.setOpenid(patTaskRelevance.getOpenid());\r\n                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode());\r\n                    serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());\r\n                    serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());\r\n                    serviceSubtask.setDeptname(patTaskRelevance.getDeptName());\r\n                    serviceSubtask.setType(serviceTaskVO.getType());\r\n                    serviceSubtask.setCreateTime(DateUtils.getNowDate());\r\n                    serviceSubtask.setDrname(patTaskRelevance.getDrname());\r\n                    serviceSubtask.setDrcode(patTaskRelevance.getDrcode());\r\n                    serviceSubtask.setInhosptime(patTaskRelevance.getInhosptime());\r\n                    serviceSubtask.setHospType(patTaskRelevance.getHospType());\r\n                    serviceSubtask.setEndtime(patTaskRelevance.getEndtime());\r\n                    serviceSubtask.setNurseId(patTaskRelevance.getNurseId());\r\n                    serviceSubtask.setNurseName(patTaskRelevance.getNurseName());\r\n                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());\r\n                    serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));\r\n                    if (patTaskRelevance.getIsoperation() != null) {\r\n                        if (patTaskRelevance.getIsoperation() == 2)\r\n                            serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());\r\n                        serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);\r\n                        if (patTaskRelevance.getIsoperation() == 1) {\r\n                            serviceSubtask.setSendstate(1L);\r\n                            serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());\r\n                            serviceSubtask.setCreateBy(serviceTask.getUpdateBy());\r\n                            serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);\r\n                        }\r\n                        if (patTaskRelevance.getIsoperation() == 3)\r\n                            //  閫氳繃taskid鍜宲atid鍘诲垹闄よ鏉℃暟鎹甛r\n                            serviceSubtaskMapper.deleteServiceSubtaskByCondition(serviceTaskVO.getTaskid(), patTaskRelevance.getPatid());\r\n                    }\r\n                    serviceSubtask.getTaskid().intValue();\r\n                }\r\n            }\r\n        }\r\n        Map<String, Integer> map = new HashMap<>();\r\n        map.put(\"taskId\", serviceTask.getTaskid().intValue());\r\n        return map;\r\n    }\r\n\r\n\r\n    @Override\r\n    public void phoneCallBack(PhoneCallBackVO phoneCallBackVO) {\r\n        phoneCallBackVO.setTextResult(phoneCallBackVO.getTextResult().substring(0, phoneCallBackVO.getTextResult().length() - 1));\r\n        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(\"YYYY-MM-dd HH:mm:ss\");\r\n\r\n        //鑾峰彇鏁版嵁\r\n        Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());\r\n        if (!aBoolean) {\r\n            throw new BaseException(\"璇uid涓嶅瓨鍦╘");\r\n        }\r\n        Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"hangup\");\r\n        PhoneUtils phoneUtils = new PhoneUtils();\r\n        if (hangupValue != null && hangupValue == 1) {\r\n            String date = simpleDateFormat1.format(new Date());\r\n            log.info(\"鐢佃瘽瑕佹寕鏂簡: {}\", date);\r\n            //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽\r\n            phoneUtils.hangup(\"\", \"\", \"\", \"\", \"\", \"\", \"\", phoneCallBackVO.getUuid());\r\n            return;\r\n        }\r\n\r\n        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());\r\n        ServiceSubtask serviceSubtask = (ServiceSubtask) map.get(\"ServiceSubtask\");\r\n        List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOs = (List<IvrTaskTemplateScriptVO>) map.get(\"IvrTaskTemplateScriptVO\");\r\n        //灏唘uid鏇存柊鍒版暟鎹簱涓璡r\n        serviceSubtask.setSenduuid(phoneCallBackVO.getUuid());\r\n        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n        //鑾峰彇妯℃澘淇℃伅\r\n        IvrTaskTemplateVO ivrTaskTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"IvrTaskTemplateVO\");\r\n\r\n        //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3\r\n        Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"noVoice\");\r\n        QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"returnQues\");\r\n        //灏嗕紶鍥炵殑缁撴灉鏀惧埌鍥炲瀵硅薄涓璡r\n        returnQues.setContent(phoneCallBackVO.getTextResult());\r\n\r\n        IvrTaskTemplateScriptVO nowQuestion = returnQues.getNowQuestion();\r\n\r\n        if (StringUtils.isEmpty(returnQues.getContent())) {\r\n            //鏃犲洖璇漒r\n            //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у�糪r\n            if (noVoice == ivrTaskTemplateVO.getNoVoiceNum().intValue()) {\r\n                //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰榎r\n                if (nowQuestion.getTargetid() == IvrTaskTemplateScriptVOs.size()) {\r\n                    ServiceSubtask ss = new ServiceSubtask();\r\n                    ss.setId(serviceSubtask.getId());\r\n                    ss.setSendstate(5L);\r\n                    ss.setRemark(\"鐢佃瘽鏃犲搷搴擻");\r\n                    serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                    //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻\r\n                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"hangup\", 1, 120, TimeUnit.MINUTES);\r\n                    phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());\r\n                    return;\r\n                } else {\r\n                    //鏈変笅涓�棰榎r\n                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", 0, 120, TimeUnit.MINUTES);\r\n                    IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(IvrTaskTemplateScriptVOs, nowQuestion);\r\n                    // 闂锛�  鍘昏皟鐢╘"tts鍚堟垚鍜屾挱鏀綷"鎺ュ彛\r\n                    String date = simpleDateFormat1.format(new Date());\r\n                    log.info(\"鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                    phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());\r\n                }\r\n            } else {\r\n                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", noVoice + 1, 120, TimeUnit.MINUTES);\r\n                //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)\r\n                String slienceText = nowQuestion.getSlienceText();\r\n                //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢╘"tts鍚堟垚鍜屾挱鏀綷"鎺ュ彛\r\n                String date = simpleDateFormat1.format(new Date());\r\n                log.info(\"闈欓粯璇濇湳  + 闂,鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                phoneUtils.ttsPlayback(slienceText + nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());\r\n                return;\r\n            }\r\n\r\n        } else {\r\n            //isppd鐢ㄦ潵璁板綍鏄惁鍖归厤鍒癨r\n            Boolean isppd = false;\r\n            //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛塡r\n            for (int j = 0; j < nowQuestion.getIvrTaskScriptTargetoptionList().size(); j++) {\r\n                //鍖呭惈\r\n                Matcher matcher = null;\r\n                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex())) {\r\n                    Pattern pattern = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex());\r\n                    matcher = pattern.matcher(phoneCallBackVO.getTextResult());\r\n                }\r\n                //涓嶅寘鍚玕r\n                Matcher matcher2 = null;\r\n                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2())) {\r\n                    Pattern pattern2 = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());\r\n                    matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());\r\n                }\r\n                log.error(\"PCB--getQuestionText闂涓猴細{},UUID锛歿}\", nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());\r\n                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {\r\n                    //璇存槑鍖归厤姝g‘浜哱r\n                    //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉昞r\n                    nowQuestion.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1);\r\n                    serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(nowQuestion.getIvrTaskScriptTargetoptionList().get(j));\r\n\r\n                    //灏嗛潤榛樼疆涓�0\r\n                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", 0, 120, TimeUnit.MINUTES);\r\n                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", 0, 120, TimeUnit.MINUTES);\r\n\r\n                    //灏嗘偅鑰呯殑鍥炵鍐欒繘琛ㄩ噷\r\n                    IvrTaskVisitResult serviceTaskVisitResult = DtoConversionUtils.sourceToTarget(serviceSubtask, IvrTaskVisitResult.class);\r\n                    serviceTaskVisitResult.setId(null);\r\n                    serviceTaskVisitResult.setQuestion(nowQuestion.getIvrtext());\r\n                    serviceTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());\r\n                    serviceTaskVisitResult.setCreateTime(new Date());\r\n                    serviceTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue());\r\n                    serviceTaskVisitResultMapper.insertIvrTaskVisitResult(serviceTaskVisitResult);\r\n\r\n                    //灏嗗尮閰嶅埌鐨勬爣璇嗘敼鎴恡rue\r\n                    isppd = true;\r\n\r\n                    //鑾峰彇涓嬩竴棰榎r\n                    Long nextQuestion = nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();\r\n                    for (IvrTaskTemplateScriptVO script : IvrTaskTemplateScriptVOs) {\r\n                        if (script.getTargetid() == nextQuestion) {\r\n                            QuestionMessage questionMessage = new QuestionMessage();\r\n                            questionMessage.setNowQuestion(script);\r\n                            questionMessage.setQuestionList(IvrTaskTemplateScriptVOs);\r\n                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n                            phoneUtils.ttsPlayback(script.getIvrtext(), phoneCallBackVO.getUuid());\r\n                            return;\r\n                        } else if (nextQuestion > IvrTaskTemplateScriptVOs.size()) {\r\n                            //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜哱r\n                            ServiceSubtask ss = new ServiceSubtask();\r\n                            ss.setId(serviceSubtask.getId());\r\n                            ss.setSendstate(6L);\r\n                            serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                            String date = simpleDateFormat1.format(new Date());\r\n                            log.error(\"娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"hangup\", 1, 120, TimeUnit.MINUTES);\r\n                            phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());\r\n                            try {\r\n                                Thread.sleep(3000);\r\n                            } catch (InterruptedException e) {\r\n                                e.printStackTrace();\r\n                            }\r\n                            phoneUtils.hangup(\"\", \"\", ivrTaskTemplateVO.getRevisitAfter(), \"\", \"\", \"\", \"\", phoneCallBackVO.getUuid());\r\n                            return;\r\n                        }\r\n                    }\r\n                    return;\r\n                } else {\r\n                    //娌℃湁鍖归厤涓婂綋鍓峯ption\r\n                    //Targetregex2 涓篺alse锛岃〃绀哄湪Targetregex2涓瓨鍦�  璇彞涓殑鍏抽敭瀛楋紝杩欎釜option灏变笉鐢ㄥ啀缁х画鍖归厤浜嗭紝鐩存帴鍖归厤涓嬩竴涓猳ption\r\n                    continue;\r\n                }\r\n            }\r\n\r\n            if (isppd != true) {\r\n                //娌℃湁鍖归厤鍒癨r\n                Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"mateNum\");\r\n                if (mateNum == null) mateNum = 0;\r\n                //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜哱r\n                if (mateNum == ivrTaskTemplateVO.getMateNum().intValue()) {\r\n                    //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣\r\n                    if (nowQuestion.getTargetid() < IvrTaskTemplateScriptVOs.size()) {\r\n                        QuestionMessage questionMessage = new QuestionMessage();\r\n                        IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(IvrTaskTemplateScriptVOs, nowQuestion);\r\n                        questionMessage.setQuestionList(IvrTaskTemplateScriptVOs);\r\n                        questionMessage.setNowQuestion(nextQuestion);\r\n                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", 0, 120, TimeUnit.MINUTES);\r\n                        String date = simpleDateFormat1.format(new Date());\r\n                        log.info(\"濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                        phoneUtils.ttsPlayback(nextQuestion.getIvrtext(), phoneCallBackVO.getUuid());\r\n                        return;\r\n                    } else {\r\n                        //灏卞彲浠ユ寕鏂數璇濅簡\r\n                        ServiceSubtask ss = new ServiceSubtask();\r\n                        ss.setId(serviceSubtask.getId());\r\n                        ss.setSendstate(6L);\r\n                        serviceSubtaskMapper.updateServiceSubtask(ss);\r\n\r\n                        String date = simpleDateFormat1.format(new Date());\r\n                        log.info(\"灏卞彲浠ユ寕鏂數璇濅簡------: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"hangup\", 1, 120, TimeUnit.MINUTES);\r\n                        phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());\r\n                        try {\r\n                            Thread.sleep(3000);\r\n                        } catch (InterruptedException e) {\r\n                            e.printStackTrace();\r\n                        }\r\n                        phoneUtils.hangup(\"\", \"\", ivrTaskTemplateVO.getRevisitAfter(), \"\", \"\", \"\", \"\", phoneCallBackVO.getUuid());\r\n                        return;\r\n                    }\r\n                } else if (mateNum < ivrTaskTemplateVO.getMateNum().intValue()) {\r\n                    //娌℃湁闂埌瑙勫畾娆℃暟\r\n                    mateNum = mateNum + 1;\r\n                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", mateNum, 120, TimeUnit.MINUTES);\r\n                }\r\n            }\r\n            //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆r\n            String extemplateID = ivrTaskTemplateVO.getSubmoduleID();\r\n            String[] split = extemplateID.split(\",\");\r\n            List<String> list = Arrays.asList(split);\r\n            List<Long> list1 = new ArrayList<>();\r\n            if (StringUtils.isNotEmpty(extemplateID)) {\r\n                for (String str : list) {\r\n                    list1.add(Long.valueOf(str));\r\n                }\r\n                List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);\r\n                for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {\r\n                    Matcher matcher = null;\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {\r\n                        Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());\r\n                        matcher = pattern.matcher(returnQues.getContent());\r\n                    }\r\n\r\n                    Matcher matcher2 = null;\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {\r\n                        Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());\r\n                        matcher2 = pattern2.matcher(returnQues.getContent());\r\n                    }\r\n                    log.error(\"++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}\", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {\r\n                        QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"returnQues\");\r\n                        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = returnQues.getNowQuestion();\r\n                        ivrTaskTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());\r\n                        ivrTaskTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());\r\n                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n                        if (ivrLibaExtemplatescript.getIsEnd() == 1) {\r\n                            //灏嗛棶棰樼疆绌篭r\n                            IvrTaskTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();\r\n                            nowQuestion1.setScriptContent(null);\r\n                            nowQuestion1.setScriptVoice(null);\r\n                            questionMessage.setNowQuestion(nowQuestion1);\r\n                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"isOver\", 1, 120, TimeUnit.MINUTES);\r\n                        }\r\n                        //璋冪敤\"15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback\"灏嗙粨鏋滀紶鍥瀄r\n                        String date = simpleDateFormat1.format(new Date());\r\n                        log.info(\"璋冪敤tts鍚堟垚鍜屾挱鏀�------: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                        phoneUtils.ttsPlayback(nowQuestion.getIvrtext() + ivrTaskTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid());\r\n                    }\r\n                    break;\r\n                }\r\n                String date = simpleDateFormat1.format(new Date());\r\n                log.info(\"鏈�鍚庣殑淇℃伅鍥炲-: {},uuid涓猴細{}\", date, phoneCallBackVO.getUuid());\r\n                phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划)\r\n     *\r\n     * @param phoneCallReqYQVO\r\n     */\r\n    @Override\r\n    public PhoneCallBackYQVO phoneCallBackYQ(PhoneCallReqYQVO phoneCallReqYQVO) {\r\n        //鍏堟妸璇ubId浠巆ache_exist涓墧闄わ紝鍙鏈夊洖璋冨氨鍓旈櫎锛堢洰鐨勬槸锛屽敖蹇cache-exist涓虹┖锛屽幓缂撳瓨涓嬩竴鎵硅鎵撶殑鐢佃瘽;杩欓噷鍓旈櫎涓嶅奖鍝嶇數璇濈殑姝e父涓氬姟锛塡r\n        redisCache.removeElementFromList(\"cache-exist\", phoneCallReqYQVO.getTaskid());\r\n\r\n        //鍒ゆ柇鏄惁鎸傛満\r\n        String hangupState = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"- hangup\");\r\n        Object cacheObject1 = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\");\r\n        if (StringUtils.isNotEmpty(hangupState) && hangup.equals(\"1\") || ObjectUtils.isNotEmpty(cacheObject1) && String.valueOf(cacheObject1).equals(\"1\")) {\r\n            return new PhoneCallBackYQVO();\r\n        }\r\n        if (\"AsrCallback\".equals(phoneCallReqYQVO.getOperate()) && phoneCallReqYQVO.getEnd_time() != null && phoneCallReqYQVO.getEnd_time() != -1) {\r\n            //澶勭悊鎸傛柇\r\n            if (phoneCallReqYQVO.getAsrtext().contains(\"鎷ㄥ彨鐨勭敤鎴锋蹇橽")) {\r\n                //鍒ゆ柇 recordAccept-hungup 鏄惁鏈夊�硷紝濡傛灉鏈夛紝鍒欒鏄庝笉鐢ㄥ鐞嗕簡锛屼箣鍓嶅凡缁忓鐞嗚繃浜嗭紙recordAccept-hungup杩欎釜涓昏鏄粰\"閫氳瘽璁板綍鐢ㄧ殑锛孿"锛塡r\n                Object cacheObject = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\");\r\n                if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals(\"1\")) {\r\n                    return new PhoneCallBackYQVO();\r\n                }\r\n                //濡傛灉鍙戦�佺姸鎬佷负6锛屽氨璇存槑宸茬粡鎵撳畬浜嗭紝涔熸病鏈夊繀瑕佺户缁線涓嬭蛋浜哱r\n                if (StringUtils.isNotEmpty(phoneCallReqYQVO.getTaskid())) {\r\n                    ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n                    if (serviceSubtask.getSendstate() == 6L) return new PhoneCallBackYQVO();\r\n                }\r\n\r\n                ServiceSubtask serviceSubtask2 = new ServiceSubtask();\r\n                serviceSubtask2.setRemark(\"鐢佃瘽鍙戦�佹垚鍔燂紙鎮h�呮寕鏂級\");\r\n                serviceSubtask2.setSenduuid(phoneCallReqYQVO.getUuid());\r\n                serviceSubtask2.setId(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask2);\r\n                Map<String, String> req = new HashMap<>();\r\n                req.put(\"uuid\", phoneCallReqYQVO.getUuid());\r\n                req.put(\"caller\", phoneCallReqYQVO.getPhone());\r\n                HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));\r\n                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- hangup\", \"1\", 2, TimeUnit.MINUTES);\r\n                //鍏堟妸榛樿鐨剅ecordAccept-hungup鍒犻櫎锛屽啀鏇存柊\r\n                redisCache.deleteObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\");\r\n                redisCache.setCacheObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\", \"1\", 10, TimeUnit.MINUTES);\r\n                //杩欎釜鏃跺�欏氨闇�瑕佽蛋琛ュ伩鏈哄埗浜嗭紝鍏堟殏瀹氳蛋鐭俊\r\n                getSmsCompensate(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n                return new PhoneCallBackYQVO();\r\n            }\r\n        }\r\n        //瀹氫箟涓�涓垎鏁扮殑鍙橀噺\r\n        Boolean aBoolean1 = redisCache.hasKey(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n        if (!aBoolean1) redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\", 0.0, 120, TimeUnit.MINUTES);\r\n        PhoneCallBackYQVO phoneCallBackYQVO = new PhoneCallBackYQVO();\r\n        //channel_create 閫氶亾鍒涘缓鐨勬椂鍊欙紝鍙互鎵ц涓�浜涘叾瀹冩搷浣滐紝璀鍙戜釜鐭俊涔嬬被鐨�;  鎴戜滑鐨勪笟鍔″彲浠ヤ笉鐢ㄧ    PlayEventCallback 杩欎釜鏄挱鏀捐闊崇殑,鏆傛椂鐢ㄤ笉鍒�     End_time()= -1鎴杗ull琛ㄧず褰撳墠鐨刟srtext涓嶆槸涓�鍙ュ畬鏁寸殑璇漒r\n        if (phoneCallReqYQVO.getOperate().equals(\"channel_create\")) {\r\n            return phoneCallBackYQVO;\r\n        }\r\n        //PlayEventCallback 杩欎釜鏄挱鏀捐闊崇殑    playstart锛氭斁闊冲紑濮嬶紙闂鎾姤寮�濮嬶級    playstop锛� 鏀鹃煶缁撴潫锛堥棶棰樻挱鎶ョ粨鏉燂級\r\n        if (phoneCallReqYQVO.getOperate().equals(\"PlayEventCallback\")) {\r\n            String cacheJSY = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\");\r\n            if (phoneCallReqYQVO.getOperate().equals(\"PlayEventCallback\") && phoneCallReqYQVO.getPlaystop() == false) {\r\n                //鍒ゆ柇redis涓槸鍚︽湁缁撴潫璇璡r\n                if (StringUtils.isEmpty(cacheJSY)) {\r\n                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\", false, 120, TimeUnit.MINUTES);\r\n                    log.error(\"PlayEventCallbackPlaystop鐨勫�间负-------锛歿}\", false);\r\n                }\r\n            } else {\r\n                //濡傛灉缁撴潫璇笉涓虹┖锛屽垯瑕佹寕鐢佃瘽浜哱r\n                if (StringUtils.isNotEmpty(cacheJSY)) {\r\n                    Map<String, String> req = new HashMap<>();\r\n                    req.put(\"uuid\", phoneCallReqYQVO.getUuid());\r\n                    req.put(\"caller\", phoneCallReqYQVO.getPhone());\r\n//                    HttpUtils.sendPost(hangup, new Gson().toJson(req));\r\n                    HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));\r\n                    //鍒犻櫎缁撴潫璇殑鎮e瓨\r\n                    redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"- jsy\");\r\n                } else {\r\n                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\", true, 120, TimeUnit.MINUTES);\r\n                    log.error(\"-------PlayEventCallbackPlaystop鐨勫�间负锛歿}\", true);\r\n                }\r\n            }\r\n            return phoneCallBackYQVO;\r\n        }\r\n        //鑾峰彇鏀鹃煶鏄惁缁撴潫\r\n        Object isPlayEventOverObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n        if (ObjectUtils.isNotEmpty(isPlayEventOverObj)) {\r\n            Boolean isPlayEventOver = (Boolean) isPlayEventOverObj;\r\n            if (!isPlayEventOver) {\r\n                return phoneCallBackYQVO;\r\n            }\r\n        }\r\n\r\n        //閫氳繃瀛愪换鍔D鑾峰彇鍒版ā鏉夸俊鎭痋r\n        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n        IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());\r\n        //鑾峰彇妯℃澘闂\r\n        IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();\r\n        ivrTaskTemplateScript.setTemplateID(serviceSubtask.getTemplateid());\r\n        List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);\r\n        //鑾峰彇闂ID 鍜� 搴忓彿\r\n        String scriptId = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"-\" + phoneCallReqYQVO.getPhone().trim());\r\n        log.error(\"scriptId鏄灏戯細{}\", scriptId);\r\n        //褰撳墠棰樼殑淇℃伅\r\n        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = iIvrTaskTemplateScriptService.getTaskTempScriptInfoByid(Long.valueOf(scriptId));\r\n        //鍒ゆ柇UUID鏄惁瀛樺湪\r\n        Boolean aBoolean = redisCache.hasKey(phoneCallReqYQVO.getUuid());\r\n        if (!aBoolean) {\r\n            //缁欓潤榛樿缃竴涓粯璁ゆ鏁板湪redis涓璡r\n            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"noVoice\", 0, 120, TimeUnit.MINUTES);\r\n            //濡傛灉涓嶅瓨鍦紝灏辨妸褰撳墠鐨刄UID鍋氫负key锛屾斁鍒板璞′腑鍘籠r\n            redisCache.setCacheObject(phoneCallReqYQVO.getUuid(), phoneCallReqYQVO, 120, TimeUnit.MINUTES);\r\n        }\r\n\r\n        if (\"SilentCallback\".equals(phoneCallReqYQVO.getOperate())) {\r\n            //濡傛灉鏄潤榛樺洖璋僜r\n            Integer num = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"noVoice\");\r\n            //鍒ゆ柇闈欓粯鍥炶皟娆℃暟鏄惁灏忎笌妯℃澘瑙勫畾鐨勬鏁癨r\n            if (num < ivrTaskTemplate.getNoVoiceNum()) {\r\n                //灏忎笌鐨勮瘽,灏辩户缁棶鎮h�匼r\n                phoneCallBackYQVO.setType(\"text\");\r\n                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                String scriptContent = ivrTaskTemplateScriptVO.getIvrtext();\r\n                log.error(\"SilentCallback鐨勯棶棰樺唴瀹箂criptContent锛歿}\", scriptContent);\r\n                phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent));\r\n                //灏嗛潤榛樻鏁板姞1\r\n                Integer noVoiceNum = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"noVoice\");\r\n                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"noVoice\", noVoiceNum + 1, 120, TimeUnit.MINUTES);\r\n                return phoneCallBackYQVO;\r\n            } else {\r\n                log.error(\"闈欓粯娆℃暟杈惧埌,鎸傛帀鐢佃瘽锛歿}\", num);\r\n                ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                ServiceSubtask ss = new ServiceSubtask();\r\n                ss.setId(serviceSubtask.getId());\r\n                ss.setSendstate(5L);\r\n                ss.setRemark(\"鐢佃瘽闈欓粯\");\r\n                serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                //澶т笌绛変簬鐨勮瘽,鐩存帴鎸傛柇\r\n                phoneCallBackYQVO.setType(\"text\");\r\n                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                phoneCallBackYQVO.setValue(serviceTask1.getJsy());\r\n                //灏嗙粨鏋滃啓鍒癲etail涓璡r\n                ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();\r\n                List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();\r\n                serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));\r\n                serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);\r\n                serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                saveQuestionAnswerPhone(serviceSubTaskDetailReq);\r\n                //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎\r\n                Long id = serviceSubtask.getId();\r\n                //鍏堟洿鏂颁竴涓嬪垎鏁癨r\n                double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                serviceSubtask.setScore(BigDecimal.valueOf(score));\r\n                serviceSubtask.setFinishtime(new Date());\r\n                serviceSubtask.setUpdateTime(new Date());\r\n                log.error(\"鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆erviceSubtask鐨勫�间负锛歿}\", serviceSubtask);\r\n                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n                Map<String, String> map = delRedisValue(null, id.toString());\r\n                if (ObjectUtils.isNotEmpty(map)) redisCache.setCacheObject(map.get(\"cacheName\"), map.get(\"val\"));\r\n                redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n                //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n            }\r\n            return phoneCallBackYQVO;\r\n        } else if (\"AsrCallback\".equals(phoneCallReqYQVO.getOperate()) && phoneCallReqYQVO.getEnd_time() != null && phoneCallReqYQVO.getEnd_time() != -1) {\r\n            //鍋氫竴涓爣璇嗭紝鐢ㄦ潵鍦ㄩ�氳瘽璇︽儏鎺ュ彛閲岋紝鍒ゆ柇鏄惁鏈変汉鎺ョ數璇濓紙value=2,琛ㄧず鏈変汉鎺ワ級\r\n            redisCache.deleteObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\");\r\n            redisCache.setCacheObject(phoneCallReqYQVO.getTaskid() + \"recordAccept-hungup\", \"2\", 10, TimeUnit.MINUTES);\r\n            // 鍏堝閫氳瘽杩涜閫氱敤搴撳尮閰嶄竴娆r\n            String extemplateID = ivrTaskTemplate.getSubmoduleID();\r\n            if (StringUtils.isNotEmpty(extemplateID)) {\r\n                String[] split = extemplateID.split(\",\");\r\n                List<String> list = Arrays.asList(split);\r\n                List<Long> list1 = new ArrayList<>();\r\n                for (String str : list) {\r\n                    list1.add(Long.valueOf(str));\r\n                }\r\n                List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);\r\n                IvrLibaExtemplatescript les = null;\r\n                for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {\r\n                    Matcher matcher = null;\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {\r\n                        Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());\r\n                        matcher = pattern.matcher(phoneCallReqYQVO.getAsrtext());\r\n                    }\r\n\r\n                    Matcher matcher2 = null;\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {\r\n                        Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());\r\n                        matcher2 = pattern2.matcher(phoneCallReqYQVO.getAsrtext());\r\n                    }\r\n                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {\r\n                        //灏嗛�氱敤搴撳尮閰嶇殑锛屾斁鍒拌繑鍥炲�间腑\r\n//                        phoneCallBackYQVO.setValue(phoneCallBackYQVO.getValue() + ivrLibaExtemplatescript.getSwitchText());\r\n                        phoneCallBackYQVO.setCommonValue(ivrLibaExtemplatescript.getSwitchText());\r\n                        les = ivrLibaExtemplatescript;\r\n                    }\r\n                    break;\r\n                }\r\n                log.info(\"鏄惁闇�瑕佹寕鏈猴細{}\", les);\r\n                if (ObjectUtils.isNotEmpty(les)) {\r\n                    //瀵瑰尮閰嶇殑缁撴灉澶勭悊涓�涓�(鐪嬬湅鏄笉鏄渶瑕佹寕鏈�)\r\n                    if (les.getIsEnd() != null && les.getIsEnd() == 1) {\r\n                        ServiceSubtask ss = new ServiceSubtask();\r\n                        ss.setId(serviceSubtask.getId());\r\n                        ss.setSendstate(6L);\r\n                        ss.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n                        serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                        //鍙互鎸傛満浜哱r\n                        redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                        redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                        redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n                        redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"noVoice\");\r\n                        //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                        redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n                        phoneCallBackYQVO.setType(\"text\");\r\n                        phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + les.getSwitchText());\r\n                        //灏嗙粨鏋滃啓杩沝etail琛╘r\n                        ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();\r\n                        List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();\r\n                        ivrTaskTemplateScriptVO.setExtemplateText(les.getSwitchText());\r\n                        serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));\r\n                        serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);\r\n                        serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                        serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                        saveQuestionAnswerPhone(serviceSubTaskDetailReq);\r\n                        return phoneCallBackYQVO;\r\n                    }\r\n                }\r\n            }\r\n\r\n            //濡傛灉鏄枃鏈洖璋僜r\n            //鏍规嵁闂ID鑾峰彇璇ラ棶棰樼殑绫诲瀷\r\n            if (ivrTaskTemplateScriptVO.getScriptType().equals(\"1\")) {\r\n                //鐢ㄦ潵鏍囪锛屾槸鍚︽湁鍖归厤涓婄殑\r\n                Integer flag = 0;\r\n                //鏄�夋嫨棰榎r\n                for (int j = 0; j < ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size(); j++) {\r\n                    log.error(\"phoneCallReqYQVO.getAsrtext()鐨勫�间负锛歿}\", phoneCallReqYQVO.getAsrtext());\r\n                    if (StringUtils.isEmpty(phoneCallReqYQVO.getAsrtext())) {\r\n                        continue;\r\n                    }\r\n                    //鍖呭惈\r\n                    Matcher matcher = null;\r\n                    if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex())) {\r\n                        Pattern pattern = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex());\r\n                        matcher = pattern.matcher(phoneCallReqYQVO.getAsrtext());\r\n                    }\r\n                    //涓嶅寘鍚玕r\n                    Matcher matcher2 = null;\r\n                    if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2())) {\r\n                        Pattern pattern2 = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());\r\n                        matcher2 = pattern2.matcher(phoneCallReqYQVO.getAsrtext());\r\n                    }\r\n                    if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {\r\n                        //璇存槑鍖归厤姝g‘浜哱r\n                        //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉昞r\n                        log.info(\"鍖归厤姝g‘浜嗗悧--------------\");\r\n                        ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1);\r\n                        serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j));\r\n\r\n                        //灏嗘偅鑰呯殑鍥炵鍐欒繘service_subtask_detail涓璡r\n                        ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();\r\n                        List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();\r\n                        ivrTaskTemplateScriptVO.setQuestionResult(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getOptiondesc());\r\n                        ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);\r\n                        //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛塡r\n                        if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {\r\n                            String questionvoice = serviceSubtaskDetail.getQuestionvoice();\r\n                            String[] split = questionvoice.split(\"\\\\\\\\\");\r\n                            if (split.length > 0) {\r\n                                String lastPart = split[split.length - 1];\r\n                                serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);\r\n                            }\r\n                        }\r\n                        serviceSubtaskDetailList.add(serviceSubtaskDetail);\r\n                        serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);\r\n                        serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                        serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                        saveQuestionAnswerPhone(serviceSubTaskDetailReq);\r\n                        //鍒ゆ柇涓�涓嬶紝杩欎釜閫夐」缁撴灉鏄笉鏄繕鏈夌户缁棶涓嬪幓鐨勫繀瑕侊紝渚嬪閫夐」缁撴灉鏄埆浜轰笉鎯崇户缁洖绛旈棶棰橈紝灏辫缁撴潫鎺塡r\n                        if (ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getIsEnd() == 1) {\r\n                            redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"noVoice\");\r\n                            //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n                            phoneCallBackYQVO.setType(\"text\");\r\n                            phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());\r\n                            return phoneCallBackYQVO;\r\n                        }\r\n\r\n                        flag = 1;\r\n                        //灏嗗綋鍓嶅墠鐨勬挱鎶ョ姸鎬佸垹闄わ紝缁欎笅涓�棰樿浣峔r\n                        redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n//                        //鑾峰彇涓嬩竴棰榎r\n                        log.error(\"鑾峰彇涓嬩竴棰樼殑淇℃伅锛歿}\", ivrTaskTemplateScriptVO);\r\n                        if (ivrTaskTemplateScriptVO.getBranchFlag().equals(\"1\") || ivrTaskTemplateScriptVO.getBranchFlag().equals(\"0\") && ivrTaskTemplateScriptVO.getNextScriptno() != null && ivrTaskTemplateScriptVO.getNextScriptno() != 0) {\r\n                            Long nextQuestion = null;\r\n                            if (ivrTaskTemplateScriptVO.getBranchFlag().equals(\"1\")) {\r\n                                nextQuestion = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();\r\n                                //鏇存柊鍒嗘暟\r\n                                double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                                score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore()).doubleValue();\r\n                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\", score);\r\n                            } else {\r\n                                nextQuestion = ivrTaskTemplateScriptVO.getNextScriptno();\r\n                                //鏇存柊鍒嗘暟\r\n                                Object obj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                                Double score = (obj == null ? new Double(0.00) : new Double(((Double) obj).doubleValue()));\r\n                                score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore()).doubleValue();\r\n                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\", score, 120, TimeUnit.MINUTES);\r\n                            }\r\n                            if (nextQuestion == null || nextQuestion == 0L) {\r\n                                //濡傛灉涓嬩竴棰樹负绌猴紝鎴栬�呬负0锛屽垯鎸傛満\r\n                                ServiceSubtask ss = new ServiceSubtask();\r\n                                ss.setId(serviceSubtask.getId());\r\n                                ss.setSendstate(6L);\r\n                                ss.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n                                serviceSubtaskMapper.updateServiceSubtask(ss);\r\n                                redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"noVoice\");\r\n                                //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n                                phoneCallBackYQVO.setType(\"text\");\r\n                                phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());\r\n                                //灏嗙粨鏋滃啓杩沝etail琛╘r\n                                ServiceSubTaskDetailReq ssdReq = new ServiceSubTaskDetailReq();\r\n                                List<ServiceSubtaskDetail> serviceSubtaskDetailList2 = new ArrayList<>();\r\n                                serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));\r\n                                serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList2);\r\n                                ssdReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                                ssdReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                                saveQuestionAnswerPhone(ssdReq);\r\n                                return phoneCallBackYQVO;\r\n                            }\r\n\r\n                            for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {\r\n                                if (script.getSort() == nextQuestion.intValue()) {\r\n                                    phoneCallBackYQVO.setType(\"text\");\r\n                                    phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                                    String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();\r\n                                    log.error(\"涓嬩竴棰橀棶棰橈細{}\", scriptContent);\r\n                                    log.error(\"涓嬩竴棰樼殑瀛愪换鍔℃槸锛歿}\", serviceSubtask);\r\n                                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));\r\n                                    //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀筡r\n                                    redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"-\" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);\r\n                                    //鍒犻櫎鏃犲搷搴擻r\n                                    redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid());\r\n                                }\r\n                            }\r\n                        } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {\r\n                            ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            phoneCallBackYQVO.setType(\"text\");\r\n                            phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                            //鏇存柊涓�涓嬪垎鏁癨r\n                            double score = 0.0;\r\n                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (double) scoreObj;\r\n                            serviceSubtask.setScore(BigDecimal.valueOf(score));\r\n                            serviceSubtask.setFinishtime(new Date());\r\n                            serviceSubtask.setSendstate(6L);\r\n                            serviceSubtask.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n                            //璁剧疆缁撴潫璇璡r\n                            phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());\r\n                            Long id = serviceSubtask.getId();\r\n                            Map<String, String> map = delRedisValue(null, id.toString());\r\n                            log.error(\"map鐨勫�间负锛歿}\", map);\r\n                            if (ObjectUtils.isNotEmpty(map))\r\n                                redisCache.setCacheObject(map.get(\"cacheName\"), map.get(\"val\"));\r\n                            redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid());\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"PlayEventCallbackPlaystop\");\r\n                            //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n//                                return phoneCallBackYQVO;\r\n\r\n                        }\r\n                    } else {\r\n                        log.info(\"娌℃湁鍖归厤涓�----------------------------\");\r\n                        //flag=0,璇存槑娌� 鍖归厤涓婏紝涔熻鎶婃偅鑰呰鐨勮瘽璁板綍涓嬫潵\r\n                        if (j == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size() - 1 && flag == 0) {\r\n                            ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();\r\n                            List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();\r\n                            ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);\r\n                            //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛塡r\n                            if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {\r\n                                String questionvoice = serviceSubtaskDetail.getQuestionvoice();\r\n                                String[] split = questionvoice.split(\"\\\\\\\\\");\r\n                                if (split.length > 0) {\r\n                                    String lastPart = split[split.length - 1];\r\n                                    serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);\r\n                                }\r\n                            }\r\n                            serviceSubtaskDetailList.add(serviceSubtaskDetail);\r\n                            //濡傛灉娌℃湁 鍖归厤涓婏紝杩欎釜蹇呴』涓簄ull\r\n                            serviceSubtaskDetailList.get(0).setMatchedtext(\"\");\r\n                            serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);\r\n                            serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                            serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                            saveQuestionAnswerPhone(serviceSubTaskDetailReq);\r\n                        }\r\n                        continue;\r\n                    }\r\n                }\r\n                //閮芥病鏈夊尮閰嶅埌\r\n                if (StringUtils.isEmpty(phoneCallBackYQVO.getValue())) {\r\n                    log.info(\"閮芥病鏈夊尮閰嶅埌-------------------------\");\r\n                    Integer count = null;\r\n                    Object countObj = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid());\r\n                    if (ObjectUtils.isNotEmpty(countObj)) count = (Integer) countObj;\r\n                    if (count != null && count >= ivrTaskTemplate.getMateNum()) {\r\n                        //濡傛灉count宸茬粡澶т簬鎴栫瓑浜庢病鏈夊尮閰嶆鏁癨r\n                        if (ivrTaskTemplateScriptVO.getBranchFlag().equals(\"0\") && ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getBranchFlag().equals(\"0\") && ivrTaskTemplateScriptVO.getNextScriptno() == 0 || ivrTaskTemplateScriptVO.getBranchFlag().equals(\"1\") && ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getBranchFlag().equals(\"1\") && ivrTaskTemplateScriptVO.getNextScriptno() == 0) {\r\n                            //濡傛灉鏄渶鍚庝竴閬撻锛屾垨鑰呮病鏈変笅涓�棰樹簡锛屽氨鐩存帴鎸傛満\r\n                            ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            phoneCallBackYQVO.setType(\"text\");\r\n                            phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                            if (StringUtils.isNotEmpty(phoneCallBackYQVO.getValue()))\r\n                                phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + phoneCallBackYQVO.getValue() + serviceTask1.getJsy());\r\n                            else phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());\r\n\r\n                            //鏇存柊涓�涓嬪垎鏁癨r\n                            Double score = null;\r\n                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;\r\n                            serviceSubtask.setScore(BigDecimal.valueOf(score));\r\n                            serviceSubtask.setFinishtime(new Date());\r\n                            serviceSubtask.setSendstate(6L);\r\n                            serviceSubtask.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                            //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask.getJsy(), 120, TimeUnit.MINUTES);\r\n                            //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎\r\n                            Long id = serviceSubtask.getId();\r\n                            Map<String, String> map = delRedisValue(null, id.toString());\r\n                            if (ObjectUtils.isNotEmpty(map)) {\r\n                                redisCache.setCacheObject(map.get(\"cacheName\"), map.get(\"val\"));\r\n                                redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            }\r\n//                            return phoneCallBackYQVO;\r\n                        } else {\r\n                            //鏍规嵁ivrTaskTemplateScriptVO.getNextScriptno()鑾峰彇涓嬩竴棰樿繘琛屾彁闂甛r\n                            for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {\r\n                                if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {\r\n                                    phoneCallBackYQVO.setType(\"text\");\r\n                                    phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                                    String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();\r\n                                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));\r\n                                    //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀筡r\n                                    redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"-\" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);\r\n\r\n                                    //鏇存柊涓�涓嬪垎鏁癨r\n                                    Double score = null;\r\n                                    Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                                    if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;\r\n                                    score = BigDecimal.valueOf(score).add(script.getScore()).doubleValue();\r\n\r\n                                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\", score, 120, TimeUnit.MINUTES);\r\n                                }\r\n                            }\r\n                        }\r\n                    } else {\r\n                        if (count == null)\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid(), 1, 120, TimeUnit.MINUTES);\r\n                        else\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid(), count + 1, 120, TimeUnit.MINUTES);\r\n\r\n                        phoneCallBackYQVO.setType(\"text\");\r\n                        phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, ivrTaskTemplateScriptVO.getIvrtext()));\r\n                    }\r\n                }\r\n\r\n            } else {\r\n                //涓嶆槸閫夋嫨棰�,鐩存帴璁板綍绛旀锛屽皢缁撴灉鍐欏埌detail涓璡r\n                ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();\r\n                List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();\r\n                ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);\r\n                //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛塡r\n                if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {\r\n                    String questionvoice = serviceSubtaskDetail.getQuestionvoice();\r\n                    String[] split = questionvoice.split(\"\\\\\\\\\");\r\n                    if (split.length > 0) {\r\n                        String lastPart = split[split.length - 1];\r\n                        serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);\r\n                    }\r\n                }\r\n                serviceSubtaskDetailList.add(serviceSubtaskDetail);\r\n                serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);\r\n                serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());\r\n                serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());\r\n                saveQuestionAnswerPhone(serviceSubTaskDetailReq);\r\n                //    String xh = idSort.split(\"-\")[1];\r\n\r\n                //濡傛灉閫夐」鍒嗘敮涓�1鐨勮瘽锛屽垯闇�瑕佹牴鎹棶棰樹笂鐨刵extScriptno杩涜璺宠浆\r\n                //闂瓟棰樻病鏈夎烦杞琝r\n                if (ivrTaskTemplateScriptVO.getNextScriptno() != null && ivrTaskTemplateScriptVO.getNextScriptno() != 0) {\r\n                    for (IvrTaskTemplateScript ivrTaskTemplateScript1 : ivrTaskTemplateScripts) {\r\n                        if (ivrTaskTemplateScriptVO.getNextScriptno().intValue() == ivrTaskTemplateScript1.getSort()) {\r\n                            phoneCallBackYQVO.setType(\"text\");\r\n                            phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                            String scriptContent = StringUtils.isNotEmpty(ivrTaskTemplateScript1.getIvrtext()) ? ivrTaskTemplateScript1.getIvrtext() : ivrTaskTemplateScript1.getScriptContent();\r\n\r\n                            phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));\r\n                            redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + \"&&\" + \"mate\" + \"&&\" + phoneCallReqYQVO.getUuid());\r\n                            redisCache.setCacheObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone(), ivrTaskTemplateScript1.getId().toString());\r\n\r\n                            //鏇存柊涓�涓嬪垎鏁癨r\n                            Double score = null;\r\n                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;\r\n                            score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getScore()).doubleValue();\r\n                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\", score, 120, TimeUnit.MINUTES);\r\n\r\n                        }\r\n                    }\r\n                } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {\r\n                    //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜哱r\n                    ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                    phoneCallBackYQVO.setType(\"text\");\r\n                    phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());\r\n                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());\r\n\r\n                    //鏇存柊涓�涓嬪垎鏁癨r\n                    Double score = null;\r\n                    Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                    if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;\r\n                    serviceSubtask.setScore(BigDecimal.valueOf(score));\r\n                    serviceSubtask.setFinishtime(new Date());\r\n                    serviceSubtask.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n                    serviceSubtask.setSendstate(6L);\r\n                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n                    //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎\r\n                    Long id = serviceSubtask.getId();\r\n                    Map<String, String> map = delRedisValue(null, id.toString());\r\n                    redisCache.setCacheObject(map.get(\"cacheName\"), map.get(\"val\"));\r\n                    //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄r\n                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + \"- jsy\", serviceTask1.getJsy(), 120, TimeUnit.MINUTES);\r\n                    redisCache.deleteObject(serviceSubtask.getId() + \"-\" + serviceSubtask.getPhone());\r\n                    redisCache.deleteObject(phoneCallReqYQVO.getUuid() + \"SCORE\");\r\n                }\r\n            }\r\n        }\r\n        log.error(\"phoneCallBackYQVO鐨勮繑鍥炲�兼槸锛歿}\", phoneCallBackYQVO);\r\n        return phoneCallBackYQVO;\r\n    }\r\n\r\n\r\n    private String getObject(ServiceSubtask serviceSubtask, String scriptContent) {\r\n        Map<String, Map<String, String>> param = getParam(serviceSubtask.getTaskid());\r\n        for (Map<String, String> map : param.values()) {\r\n            for (String key : map.keySet()) {\r\n                scriptContent = scriptContent.replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : \"\");\r\n            }\r\n        }\r\n        if (StringUtils.isEmpty(scriptContent)) {\r\n            return scriptContent;\r\n        }\r\n        scriptContent = scriptContent.replace(\"${name}\", StringUtils.isNotEmpty(serviceSubtask.getSendname()) ? serviceSubtask.getSendname() : \"\");\r\n        scriptContent = scriptContent.replace(\"${dzz}\", StringUtils.isNotEmpty(serviceSubtask.getAddr()) ? serviceSubtask.getAddr() : \"\");\r\n        scriptContent = scriptContent.replace(\"${phone}\", StringUtils.isNotEmpty(serviceSubtask.getTelcode()) ? serviceSubtask.getTelcode() : \"\");\r\n\r\n        return scriptContent;\r\n    }\r\n\r\n\r\n    /**\r\n     * 鑾峰彇浠诲姟閲岀殑閫氶厤绗r\n     *\r\n     * @param taskId\r\n     * @return\r\n     */\r\n    private Map<String, Map<String, String>> getParam(Long taskId) {\r\n        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(taskId);\r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        Map<String, Map<String, String>> serviceTaskMap = null;\r\n        try {\r\n            serviceTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);\r\n        } catch (JsonProcessingException e) {\r\n            e.printStackTrace();\r\n        }\r\n        return serviceTaskMap;\r\n    }\r\n\r\n    private Map<String, String> delRedisValue(String cache, String id) {\r\n        id = \",\" + id + \",\";\r\n        String val = \"\";\r\n        String cacheName = \"\";\r\n        Map<String, String> map = new HashMap<>();\r\n\r\n        if (StringUtils.isNotEmpty(cache)) {\r\n            val = redisCache.getCacheObject(cache);\r\n            if (!StringUtils.isEmpty(val)) {\r\n                if (val.contains(id)) {\r\n                    val = val.replaceAll(id, \"\");\r\n                }\r\n            }\r\n            map.put(\"val\", val);\r\n            map.put(\"cacheName\", cache);\r\n            return map;\r\n        }\r\n\r\n        for (int i = 0; i < 6; i++) {\r\n            val = redisCache.getCacheObject(\"cache-0\" + i);\r\n            if (!StringUtils.isEmpty(val)) {\r\n                if (val.contains(id)) {\r\n                    val = val.replaceAll(id, \"\");\r\n                    map.put(\"val\", val);\r\n                    map.put(\"cacheName\", \"cache-0\" + i);\r\n                }\r\n            }\r\n        }\r\n        return map;\r\n    }\r\n\r\n\r\n    /**\r\n     * 闆ㄧ划浠诲姟鎷夊彇\r\n     *\r\n     * @return\r\n     */\r\n    @Override\r\n    public List<PullTaskVO> taskPull() {\r\n        //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖\r\n        List<PullTaskVO> pullTaskVOList = new ArrayList<>();\r\n        List<String> cacheList = new ArrayList<>();\r\n        ListOperations<String, String> listOps = redisTemplate.opsForList();\r\n        //蹇呴』绛塧che-exist鍏ㄩ儴鎵撳畬鎵嶈兘鎷夊彇涓嬩竴鎵癸紙涓昏鏄�曟墍鏈夌殑鏁版嵁閮藉爢鍦ㄧ數璇濈殑缂撳瓨閲岋紝鍦ㄨ瀹氱殑鏃堕棿鎵撲笉瀹岋級\r\n        long existSize = listOps.size(\"cache-exist\");\r\n        if (existSize > 0) return pullTaskVOList;\r\n        int count = 0;\r\n        long size = listOps.size(\"cache-0\");\r\n        log.error(\"---------鎵撶數璇濅箣鍓嶇紦瀛樹腑鐨勬暟鎹噺锛歿}\", size);\r\n        if (size > 0) {\r\n            //phoneCount()  閫氳繃缁欏嚭鐨勬瘡涓皬鏃堕渶瑕佹墦鍑虹殑鐢佃瘽閲忥紝绠楀嚭鍒版櫄涓�8鐐逛竴鐐硅兘鎵撳嚭澶氬皯涓數璇濓紝鑾峰彇鍒版�婚噺\r\n            //濡傛灉闇�瑕佺珛鍗虫墽琛岀殑鏁版嵁閲忓ぇ浜庝竴澶╄鎵ц鐨勪笂闄愶紝鍒欏彧鍙栦笂闄愮殑鏁伴噺锛屽叾瀹冪殑鍒欐斁鍥瀝edis涓璡r\n            count = Math.min(phoneCount(), (int) size);\r\n            if (count != 0) {\r\n                cacheList = listOps.range(\"cache-0\", 0, count - 1);\r\n            }\r\n        }\r\n\r\n\r\n        log.error(\"浠诲姟鎷夊彇cache-0鐨勫�兼槸澶氬皯锛歿}\", cacheList);\r\n        //  cache-0涓虹珛鍗冲彂璧风殑,鍏跺畠鐨勫厛鎺ㄨ繜\r\n        if (!CollectionUtils.isEmpty(cacheList)) {\r\n            pullTaskVOList = getPullTaskList(cacheList, \"cache-0\");\r\n            // 鍒犻櫎宸插鐞嗙殑鏁版嵁\r\n            listOps.trim(\"cache-0\", count, -1);\r\n            log.error(\"鎵撶數璇濅箣鍚庣紦瀛樹腑鐨勬暟鎹噺---------锛歿}\", listOps.size(\"cache-0\"));\r\n        } else {\r\n            for (int i = 1; i < 6; i++) {\r\n                //鍙栧嚭浠巆ache-1 鍒� cache-5鐨勭涓�涓瓙浠诲姟淇℃伅\r\n                try {\r\n                    Long size1 = listOps.size(\"cache-\" + i);\r\n                    if (size1 == null || size1 == 0) continue;\r\n                    int count1 = Math.min(phoneCount(), size1.intValue());\r\n                    List<String> value = listOps.range(\"cache-0\" + i, 0, count1 - 1);\r\n\r\n                    List<PullTaskVO> pullTaskVOList2 = getPullTaskList(value, \"cache-\" + i);\r\n                    if (CollectionUtils.isNotEmpty(pullTaskVOList2) && pullTaskVOList2.size() > 0) {\r\n                        pullTaskVOList.addAll(pullTaskVOList2);\r\n                    }\r\n                    //灏嗗鐞嗚繃鐨勬暟鎹垹闄r\n                    listOps.trim(\"cache-0\" + i, count1, -1);\r\n                } catch (Exception e) {\r\n//                    log.error(\"鐪嬬潃鐑");\r\n                }\r\n            }\r\n        }\r\n        //existList鐢ㄦ潵璁板綍鎺ヤ笅鏉ラ渶瑕佹墽琛岀殑瀛愪换鍔D\r\n        List<String> existList = new ArrayList<>();\r\n        if (CollectionUtils.isNotEmpty(pullTaskVOList)) {\r\n            //缁欏洖璋冨弬鏁拌祴鍊糪r\n            for (PullTaskVO pullTaskVO : pullTaskVOList) {\r\n                existList.add(pullTaskVO.getTaskid());\r\n                pullTaskVO.setAsrcallback(ASRCallBackPath);\r\n            }\r\n        }\r\n        if (existList.size() != 0) redisCache.setCacheListRight(\"cache-exist\", existList);\r\n        log.error(\"-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}\", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null);\r\n        return pullTaskVOList;\r\n    }\r\n\r\n\r\n    private List<PullTaskVO> getPullTaskList(List<String> subIds, String cacheName) {\r\n        log.error(\"浠诲姟鎷夊彇subIds鐨勫�兼槸澶氬皯锛歿}\", subIds);\r\n        //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖\r\n        List<PullTaskVO> pullTaskVOList = new ArrayList<>();\r\n        //newValue0鐢ㄤ簬淇濆瓨娌℃湁澶勭悊鐨勫瓙 浠诲姟\r\n//        String newValue0 = \"\";\r\n        List<String> newValue0 = new ArrayList<>();\r\n        //鏍规嵁,鑾峰彇瀛愪换鍔$殑ID\r\n//        String[] split = subIds.split(\",,\");\r\n        for (int i = 0; i < subIds.size(); i++) {\r\n            if (cacheName.equals(\"cache-0\") && i < subIds.size() || !cacheName.equals(\"cache-0\") && i < 1) {\r\n                PullTaskVO pullTaskVO = new PullTaskVO();\r\n                String subId = subIds.get(i).trim();\r\n                ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(subId));\r\n                if (ObjectUtils.isEmpty(serviceSubtask)) {\r\n                    log.error(\"璇ubId鏈夐棶棰橈紝鍦ㄨ〃涓煡璇笉鍒帮細{}\", subId);\r\n                    continue;\r\n                }\r\n                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {\r\n                    serviceSubtask.setRemark(\"鎵嬫満鍙蜂负绌篭");\r\n                    serviceSubtask.setSendstate(4L);\r\n                    serviceSubtask.setResult(\"error\");\r\n//                    serviceSubtask.setFinishtime(new Date());\r\n                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n                    continue;\r\n                }\r\n                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());\r\n                IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());\r\n                if (ObjectUtils.isEmpty(ivrTaskTemplate)) continue;\r\n                //閫氳繃浠诲姟妯℃澘涓殑\"绗竴娆¢棶棰樼紪鍙穃"鑾峰彇绗竴涓棶棰�;\r\n                IvrTaskTemplateScript ivrTaskTemplateScript = null;\r\n                IvrTaskTemplateScript ivrTaskTemplateScript1 = new IvrTaskTemplateScript();\r\n                ivrTaskTemplateScript1.setTemplateID(ivrTaskTemplate.getId());\r\n                List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript1);\r\n                aa:\r\n                for (IvrTaskTemplateScript ivrTaskTemplateScript2 : ivrTaskTemplateScripts) {\r\n                    if (ivrTaskTemplate.getFirstQuestionNum() == Long.valueOf(ivrTaskTemplateScript2.getSort())) {\r\n                        ivrTaskTemplateScript = ivrTaskTemplateScript2;\r\n                        break aa;\r\n                    }\r\n                }\r\n                //濡傛灉ivrTaskTemplateScript涓虹┖锛屼篃灏辨病鏈夊線涓嬫墽琛岀殑蹇呰浜哱r\n                if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) {\r\n                    log.error(\"---------杩欎釜ivrTaskTemplate.getId()鐨勯棶棰樹负绌猴細{}\", ivrTaskTemplate.getId());\r\n                    continue;\r\n                }\r\n                //鑾峰彇閫氶厤绗﹀尮閰嶈繃鍚庣殑闂\r\n                String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getIvrtext());\r\n                String kcb = serviceTask.getKcb() + \",\" + scrContent;\r\n\r\n                //灏佽杩斿洖鏁版嵁\r\n                //taskId = 瀛愪换鍔D + 闂ID +闂搴忓彿\r\n                pullTaskVO.setTaskid(subId);\r\n                pullTaskVO.setAppkey(app_key_yq);\r\n                pullTaskVO.setSections(LocalTime.now().format(DateTimeFormatter.ofPattern(\"hh:mm\")) + \"-\" + LocalTime.now().plusMinutes(1).format(DateTimeFormatter.ofPattern(\"hh:mm\")));\r\n                pullTaskVO.setPhones(serviceSubtask.getPhone());\r\n                pullTaskVO.setPrologue(kcb);\r\n                if (cacheName.equals(\"cache-0\")) pullTaskVO.setDisplayNo(\"2\");\r\n                else pullTaskVO.setDisplayNo(\"2\");\r\n                pullTaskVOList.add(pullTaskVO);\r\n                redisCache.setCacheObject(subId.trim() + \"-\" + serviceSubtask.getPhone().trim(), ivrTaskTemplateScript.getId().toString(), 120, TimeUnit.MINUTES);\r\n            } else {\r\n                newValue0.add(subIds.get(i));\r\n                redisCache.setCacheListRight(cacheName, newValue0);\r\n            }\r\n        }\r\n\r\n        return pullTaskVOList;\r\n    }\r\n\r\n\r\n    //涓嬮潰鐨勪唬鐮佷笉鑳藉垹闄わ紝涓婇潰鐨勬柟娉曞彧鏄厤鍚堢數璇濈鑱旇皟鐢ㄧ殑锛孿r\n//    @Override\r\n//    public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO) {\r\n//        log.error(\"phoneCallBackVO鐨勫叆鍙傦細{},{},{},{},{},{},{}\", phoneCallBackVO.getResultType(), phoneCallBackVO.getUuid(), phoneCallBackVO.getErrResult(), phoneCallBackVO.getTextResult(), phoneCallBackVO.getHangUpResult(), phoneCallBackVO.getEnumState(), phoneCallBackVO.getUint8());\r\n//        //鑾峰彇鏁版嵁\r\n//        Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());\r\n//        if (!aBoolean) {\r\n//            throw new BaseException(\"璇uid涓嶅瓨鍦╘");\r\n//        }\r\n//        Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"hangup\");\r\n//        if (hangupValue != null && hangupValue == 1) {\r\n//            //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽\r\n//            PhoneUtils phoneUtils = new PhoneUtils();\r\n//            phoneUtils.hangup(phoneCallBackVO.getUuid(), null, null, null, null, null, null, null);\r\n//\r\n//        }\r\n//\r\n//        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());\r\n////        ObjectMapper objectMapper = new ObjectMapper();\r\n////        Map<String, Object> map = null;\r\n////        try {\r\n////            map = objectMapper.readValue(cacheObject, Map.class);\r\n////        } catch (JsonProcessingException e) {\r\n////            e.printStackTrace();\r\n////        }\r\n//\r\n//        ServiceSubtask ServiceSubtask = (ServiceSubtask) map.get(\"ServiceSubtask\");\r\n//        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get(\"ivrLibaTemplateScriptVO\");\r\n//        //灏唘uid鏇存柊鍒版暟鎹簱涓璡r\n//        ServiceSubtask.setSenduuid(phoneCallBackVO.getUuid());\r\n//        ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);\r\n//\r\n//        //鑾峰彇妯℃澘淇℃伅\r\n//        IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"ivrLibaTemplateVO\");\r\n//\r\n//\r\n//        //棣栧厛鍒ゆ柇resultType\r\n//        if (phoneCallBackVO.getResultType() == 1) {\r\n//            //鍛煎彨缁撴灉鎺ュ彛: 1\r\n//            if (phoneCallBackVO.getUint8() == 1) {\r\n//                //鍛煎彨澶辫触锛屽幓redis涓褰曚竴涓嬪け璐ユ鏁帮紝杩涜鍐嶆鍛煎彨\r\n//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"uint8\");\r\n//                if (integer != null) {\r\n//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"uint8\", integer + 1, 120, TimeUnit.MINUTES);\r\n//                } else {\r\n//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"uint8\", 1, 120, TimeUnit.MINUTES);\r\n//                }\r\n//\r\n//                if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {\r\n//                    log.info(\"鏃犱汉鎺ュ惉锛歿},   {}\", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid());\r\n//                    //杩炵画鎵撹瀹氭锛屽鏋滆娌′汉鎺ワ紝閭e氨缁撴潫\r\n//                    ServiceSubtask.setResult(phoneCallBackVO.getErrResult());\r\n//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);\r\n//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + \"uint8\");\r\n//                } else if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {\r\n//                    //杩涜閲嶆嫧\r\n//                    PhoneUtils phoneUtils = new PhoneUtils();\r\n//                    phoneUtils.ob(null, null, null, null, null, null, null, ServiceSubtask.getPhone(), phoneCallBackVO.getUuid(), true);\r\n//                }\r\n//            }\r\n//\r\n//        } else if (phoneCallBackVO.getResultType() == 2) {\r\n//            //閫氳瘽鐘舵�佹洿鏂版帴鍙�: 2\r\n//            if (phoneCallBackVO.getEnumState() == 0) {\r\n//                // 0-鎸搩\r\n//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"enumState\");\r\n//\r\n//                if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {\r\n//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"enumState\", integer + 1, 120, TimeUnit.MINUTES);\r\n//                } else if (integer == null) {\r\n//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"enumState\", 1, 120, TimeUnit.MINUTES);\r\n//                } else if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {\r\n//                    ServiceSubtask.setResult(\"鏃犱汉鎺ュ惉\");\r\n//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);\r\n//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + \"enumState\");\r\n//                }\r\n//            } else if (phoneCallBackVO.getEnumState() == 2) {\r\n//                //鎮h�呮寕鏂數璇漒r\n//                log.info(\"鎮h�呮寕鏂數璇濓細{}\", phoneCallBackVO.getUuid());\r\n//                ServiceSubtask.setResult(phoneCallBackVO.getHangUpResult());\r\n//                ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);\r\n//                redisCache.deleteObject(phoneCallBackVO.getUuid() + \"enumState\");\r\n//            }\r\n//\r\n//\r\n//        } else if (phoneCallBackVO.getResultType() == 3) {\r\n//            //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3\r\n//            Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"noVoice\");\r\n//            QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"returnQues\");\r\n//            IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();\r\n//            PhoneUtils phoneUtils = new PhoneUtils();\r\n//\r\n//            if (StringUtils.isEmpty(phoneCallBackVO.getTextResult())) {\r\n//                //鏃犲洖璇漒r\n//                //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у�糪r\n//                if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {\r\n//                    //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰榎r\n//                    if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {\r\n//                        //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻\r\n//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"hangup\", 1, 120, TimeUnit.MINUTES);\r\n//                        phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());\r\n//                    } else {\r\n//                        //鏈変笅涓�棰榎r\n//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", 0, 120, TimeUnit.MINUTES);\r\n//                        IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);\r\n//                        // 闂锛�  鍘昏皟鐢╘"tts鍚堟垚鍜屾挱鏀綷"鎺ュ彛\r\n//                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());\r\n//                    }\r\n//                } else {\r\n//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", noVoice + 1, 120, TimeUnit.MINUTES);\r\n//                    //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)\r\n//                    String slienceText = nowQuestion.getSlienceText();\r\n//                    //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢╘"tts鍚堟垚鍜屾挱鏀綷"鎺ュ彛\r\n//                    phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());\r\n//                    return new PhoneCallBackVO();\r\n//                }\r\n//\r\n//            } else {\r\n//                //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛塡r\n//                for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {\r\n//                    //鍖呭惈\r\n//                    Matcher matcher = null;\r\n//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {\r\n//                        Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());\r\n//                        matcher = pattern.matcher(phoneCallBackVO.getTextResult());\r\n//                    }\r\n//                    //涓嶅寘鍚玕r\n//                    Matcher matcher2 = null;\r\n//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {\r\n//                        Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());\r\n//                        matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());\r\n//                    }\r\n//                    log.info(\"phoneCallBack--Targetregex鐨勫�间负锛歿}, phoneCallBack--Targetregex2鐨勫�间负锛歿}\", nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());\r\n//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {\r\n//                        //璇存槑鍖归厤姝g‘浜哱r\n//                        //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉昞r\n//                        nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);\r\n//                        ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));\r\n//\r\n//\r\n//                        //灏嗛潤榛樼疆涓�0\r\n//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"noVoice\", 0, 120, TimeUnit.MINUTES);\r\n//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", 0, 120, TimeUnit.MINUTES);\r\n//                        //鑾峰彇涓嬩竴棰榎r\n//                        Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();\r\n//                        for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {\r\n//                            if (script.getTargetid() == nextQuestion) {\r\n//                                QuestionMessage questionMessage = new QuestionMessage();\r\n//                                questionMessage.setNowQuestion(script);\r\n//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n//                                break;\r\n//                            }\r\n//                        }\r\n//                        break;\r\n//                    } else {\r\n//                        //娌℃湁鍖归厤鍒癨r\n//                        Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"mateNum\");\r\n//                        //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜哱r\n//                        if (mateNum == ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {\r\n//                            //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣\r\n//                            if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {\r\n//                                QuestionMessage questionMessage = new QuestionMessage();\r\n//                                IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);\r\n//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);\r\n//                                questionMessage.setNowQuestion(nextQuestion);\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", 0, 120, TimeUnit.MINUTES);\r\n//                            } else {\r\n//                                //灏卞彲浠ユ寕鏂數璇濅簡\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"hangup\", 1, 120, TimeUnit.MINUTES);\r\n//                                phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());\r\n//                                break;\r\n//                            }\r\n//                        } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {\r\n//                            //娌℃湁闂埌瑙勫畾娆℃暟\r\n//                            mateNum = mateNum + 1;\r\n//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"mateNum\", mateNum, 120, TimeUnit.MINUTES);\r\n//                        }\r\n//                    }\r\n//\r\n//                }\r\n//                //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆r\n//                String extemplateID = ivrLibaTemplateVO.getSubmoduleID();\r\n//                String[] split = extemplateID.split(\",\");\r\n//                List<String> list = Arrays.asList(split);\r\n//                List<Long> list1 = new ArrayList<>();\r\n//                if (StringUtils.isNotEmpty(extemplateID)) {\r\n//                    for (String str : list) {\r\n//                        list1.add(Long.valueOf(str));\r\n//                    }\r\n//                    List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);\r\n//                    for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {\r\n//                        Matcher matcher = null;\r\n//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {\r\n//                            Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());\r\n//                            matcher = pattern.matcher(returnQues.getContent());\r\n//                        }\r\n//\r\n//                        Matcher matcher2 = null;\r\n//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {\r\n//                            Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());\r\n//                            matcher2 = pattern2.matcher(returnQues.getContent());\r\n//                        }\r\n//                        log.info(\"++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}\", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());\r\n//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {\r\n//                            QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + \"returnQues\");\r\n//                            IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();\r\n//                            ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());\r\n//                            ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());\r\n//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n//                            if (ivrLibaExtemplatescript.getIsEnd() == 1) {\r\n//                                //灏嗛棶棰樼疆绌篭r\n//                                IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();\r\n//                                nowQuestion1.setQuestionText(null);\r\n//                                nowQuestion1.setQuestionVoice(null);\r\n//                                questionMessage.setNowQuestion(nowQuestion1);\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"returnQues\", questionMessage, 120, TimeUnit.MINUTES);\r\n//\r\n//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + \"isOver\", 1, 120, TimeUnit.MINUTES);\r\n//                            }\r\n//\r\n//                            //璋冪敤\"15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback\"灏嗙粨鏋滀紶鍥瀄r\n//\r\n//\r\n//                        }\r\n//                        break;\r\n//                    }\r\n//                }\r\n//\r\n//            }\r\n//        }\r\n//        return phoneCallBackVO;\r\n//    }\r\n\r\n    @Override\r\n    public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {\r\n        int i = 0;\r\n        if (StringUtils.isNotEmpty(serviceSubTaskDetailReq.getParam1())) {\r\n            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n            Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam1(), pri_key));\r\n            Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam2(), pri_key));\r\n            ServiceSubtaskVO ivrTaskSingle = new ServiceSubtaskVO();\r\n            ivrTaskSingle.setTaskid(tid);\r\n            ivrTaskSingle.setPatid(pid);\r\n            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ivrTaskSingle);\r\n            if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {\r\n                log.error(\"鎶ラ敊浜嗭紝selectServiceSubtaskList鏁版嵁涓虹┖浜嗭細{}\", ivrTaskSingle);\r\n                return 0;\r\n            }\r\n            //闅忚\r\n            for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {\r\n                serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());\r\n                serviceSubtaskDetail.setId(UUID.randomUUID().toString());\r\n                serviceSubtaskDetail.setCreateTime(new Date());\r\n                serviceSubtaskDetail.setGuid(selectServiceSubtaskList.get(0).getGuid());\r\n                serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());\r\n                serviceSubtaskDetail.setGuid(serviceSubTaskDetailReq.getGuid());\r\n                i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);\r\n            }\r\n        } else {\r\n            if (serviceSubTaskDetailReq != null && CollectionUtils.isNotEmpty(serviceSubTaskDetailReq.getServiceSubtaskDetailList())) {\r\n                for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {\r\n                    serviceSubtaskDetail.setCreateTime(new Date());\r\n                    serviceSubtaskDetail.setGuid(serviceSubTaskDetailReq.getGuid());\r\n                    serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());\r\n                    //鍏堟牴鎹瓙浠诲姟id,浠诲姟ID鍜岄棶棰樺簭鍙锋煡璇竴涓嬶紝璇ラ棶棰樻槸鍚﹀凡缁忔湁鍊硷紝濡傛灉鏈夊�硷紝鐩存帴淇敼锛屽鏋滀负绌猴紝鐩存帴鎻掑叆\r\n                    ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();\r\n                    ssd.setSubId(serviceSubtaskDetail.getSubId());\r\n                    ssd.setTaskid(serviceSubtaskDetail.getTaskid());\r\n                    ssd.setScriptid(serviceSubtaskDetail.getScriptid());\r\n                    if (serviceSubtaskDetail.getSubId() != null) {\r\n                        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskDetail.getSubId());\r\n                        ssd.setGuid(serviceSubtask.getGuid());\r\n                        ssd.setOrgid(serviceSubtask.getOrgid());\r\n                    }\r\n                    List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(ssd);\r\n                    if (CollectionUtils.isNotEmpty(serviceSubtaskDetails) && StringUtils.isNotEmpty(serviceSubtaskDetails.get(0).getMatchedtext())) {\r\n                        serviceSubtaskDetail.setId(serviceSubtaskDetails.get(0).getId());\r\n                        serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail);\r\n                    } else {\r\n                        if (serviceSubtaskDetail.getSubId() != null) {\r\n                            ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskDetail.getSubId());\r\n                            serviceSubtaskDetail.setGuid(serviceSubtask.getGuid());\r\n                            serviceSubtaskDetail.setOrgid(serviceSubtask.getOrgid());\r\n                        }\r\n                        i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer recordAccept(PhoneCallRecordVO phoneCallRecordVO) {\r\n        Object cacheObject = redisCache.getCacheObject(phoneCallRecordVO.getTaskid() + \"recordAccept-hungup\");\r\n        if (phoneCallRecordVO.getHangup_cause().equals(\"NO_USER_RESPONSE\") || ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals(\"1\")) {\r\n            //鏃犱汉鎺ュ惉\r\n            getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid()));\r\n            redisCache.deleteObject(phoneCallRecordVO.getTaskid() + \"recordAccept-hungup\");\r\n            redisCache.removeElementFromList(\"cache-exist\", phoneCallRecordVO.getTaskid());\r\n        } else if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals(\"2\")) {\r\n//        if (phoneCallRecordVO.getAnswered() != null && phoneCallRecordVO.getAnswered() == true) {\r\n            log.error(\"鏈変汉鎺ョ數璇濅簡锛屽苟涓斿畬浜哱");\r\n            //璇存槑鏈変汉鎺ヤ簡\r\n            int startIndex = phoneCallRecordVO.getRecord_path().indexOf(\"voice\") + \"voice\".length() + 1;  // 鍔�1鏄烦杩�/绗﹀彿\r\n            int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf(\"/\");\r\n            String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);\r\n            ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n            serviceSubtask.setRemark(\"鐢佃瘽鎷ㄦ墦宸插畬鎴怽");\r\n            serviceSubtask.setSendstate(6L);\r\n            serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));\r\n            serviceSubtask.setFinishtime(new Date());\r\n            serviceSubtask.setUpdateTime(new Date());\r\n            log.error(\"鐢佃瘽鎷ㄦ墦宸插畬鎴恠erviceSubtask鐨勫�间负:{}\", serviceSubtask);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n            //涓嬭浇鏂囦欢\r\n            ftpService.downloadFolder(\"/\" + LocalDate.now().toString(), profile + \"/upload/vadio/voice/\" + LocalDate.now().toString());\r\n            redisCache.deleteObject(phoneCallRecordVO.getTaskid() + \"recordAccept-hungup\");\r\n        } else {\r\n            //鎮h�呮嫆缁濋殢璁縗r\n            //鍏堟妸璇ubId浠巆ache_exist涓墧闄わ紝鍙鏈夊洖璋冨氨鍓旈櫎锛堢洰鐨勬槸锛屽敖蹇cache-exist涓虹┖锛屽幓缂撳瓨涓嬩竴鎵硅鎵撶殑鐢佃瘽;杩欓噷鍓旈櫎涓嶅奖鍝嶇數璇濈殑姝e父涓氬姟锛塡r\n            redisCache.removeElementFromList(\"cache-exist\", phoneCallRecordVO.getTaskid());\r\n            ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n            serviceSubtask.setRemark(\"鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁縗");\r\n            serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));\r\n            serviceSubtask.setSendstate(6L);\r\n            serviceSubtask.setFinishtime(new Date());\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n//            int startIndex = phoneCallRecordVO.getRecord_path().indexOf(\"voice\") + \"voice\".length() + 1;  // 鍔�1鏄烦杩�/绗﹀彿\r\n//            int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf(\"/\");\r\n//            String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);\r\n            //涓嬭浇鏂囦欢\r\n            ftpService.downloadFolder(\"/\" + LocalDate.now().toString(), profile + \"/upload/vadio/voice/\" + LocalDate.now().toString());\r\n            redisCache.deleteObject(phoneCallRecordVO.getTaskid() + \"recordAccept-hungup\");\r\n        }\r\n\r\n        return 1;\r\n    }\r\n\r\n    @Override\r\n    public List<ServiceSubtaskCount> getSfFzInfoEveryMonth(ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        if (serviceSubtaskCountReq.getUserId() == null) {\r\n            Long userId = SecurityUtils.getUserId();\r\n            serviceSubtaskCountReq.setUserId(userId);\r\n        }\r\n        if (serviceSubtaskCountReq.getStartTime() == null) {\r\n            LocalDate of = LocalDate.of(LocalDate.now().getYear(), 1, 1);\r\n            serviceSubtaskCountReq.setStartTime(Date.from(of.atStartOfDay(ZoneId.systemDefault()).toInstant()));\r\n        }\r\n        if (serviceSubtaskCountReq.getEndTime() == null) {\r\n            serviceSubtaskCountReq.setEndTime(new Date());\r\n        }\r\n        List<ServiceSubtaskCount> sfFzInfoEveryMonth = serviceSubtaskMapper.getSfFzInfoEveryMonth(serviceSubtaskCountReq);\r\n        List<ServiceSubtaskCount> result = sfFzInfoEveryMonth.stream().collect(Collectors.groupingBy(ServiceSubtaskCount::getMonth, Collectors.groupingBy(ServiceSubtaskCount::getServiceType, Collectors.summingLong(ServiceSubtaskCount::getCount)))).entrySet().stream().flatMap(monthEntry -> monthEntry.getValue().entrySet().stream().map(typeEntry -> new ServiceSubtaskCount(monthEntry.getKey(), typeEntry.getKey(), typeEntry.getValue()))).collect(Collectors.toList());\r\n\r\n        List<ServiceSubtaskCount> result2 = new ArrayList<>();\r\n        //鏍规嵁鏈嶅姟绫诲瀷杩涜绛涢�塡r\n        if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getServiceType())) {\r\n            for (ServiceSubtaskCount serviceSubtaskCount : result) {\r\n                for (Long type : serviceSubtaskCountReq.getServiceType()) {\r\n                    if (type == serviceSubtaskCount.getServiceType()) {\r\n                        result2.add(serviceSubtaskCount);\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            result2 = result;\r\n        }\r\n        return result2;\r\n    }\r\n\r\n    /**\r\n     * 鏈嶅姟缁熻鏌ヨ - 鎸夋椂闂寸淮搴︾粺璁″嚭闄�/闂ㄨ瘖闅忚鏁版嵁\r\n     *\r\n     * @param request 缁熻璇锋眰鍙傛暟\r\n     * @return 缁熻缁撴灉鍒楄〃\r\n     */\r\n    @Override\r\n    public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest request) {\r\n        log.info(\"getServiceStatistics鐨勫叆鍙備负锛歿}\", request);\r\n\r\n        // 鍙傛暟鏍¢獙\r\n        if (request.getStartDate() == null || request.getEndDate() == null) {\r\n            throw new IllegalArgumentException(\"寮�濮嬫棩鏈熷拰缁撴潫鏃ユ湡涓嶈兘涓虹┖\");\r\n        }\r\n\r\n        if (request.getStartDate().after(request.getEndDate())) {\r\n            throw new IllegalArgumentException(\"寮�濮嬫棩鏈熶笉鑳芥櫄浜庣粨鏉熸棩鏈焅");\r\n        }\r\n\r\n        // 濡傛灉timeType涓虹┖锛岄粯璁ゆ寜澶╃粺璁r\n        if (StringUtils.isEmpty(request.getTimeType())) {\r\n            request.setTimeType(\"day\");\r\n        }\r\n\r\n        List<ServiceStatisticsResponse> result = serviceSubtaskMapper.getServiceStatistics(request);\r\n\r\n\r\n        log.info(\"getServiceStatistics杩斿洖缁撴灉鏁伴噺锛歿}\", result.size());\r\n        return result;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇闅忚缁熻姣斾緥\r\n     *\r\n     * @param serviceSubtaskCountReq\r\n     * @return\r\n     */\r\n    @Override\r\n    public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        log.error(\"getSfStatistics鐨勫叆鍙備负锛歿}\", serviceSubtaskCountReq);\r\n        List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();\r\n        List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);\r\n        \r\n        // 鏍规嵁鏉′欢杩涜鍒嗙粍\r\n        Map<String, List<ServiceSubtask>> collect = new HashMap<>();\r\n        \r\n        if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) {\r\n            if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse(\"Unknown\")));\r\n            } else {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse(\"Unknown\")));\r\n            }\r\n        } else if (serviceSubtaskCountReq.getDeptcodes() != null && serviceSubtaskCountReq.getDeptcodes().size() > 0) {\r\n            if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse(\"Unknown\")));\r\n            } else {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse(\"Unknown\")));\r\n            }\r\n        }\r\n        \r\n        for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {\r\n            if (CollectionUtils.isEmpty(serviceSubtaskList)) {\r\n                continue;\r\n            }\r\n            ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList);\r\n\r\n            //鍙婃椂鐜嘰r\n            ServiceSubtask ss = new ServiceSubtask();\r\n            ss.setOrgid(serviceSubtaskList.get(0).getOrgid());\r\n\r\n            // 濡傛灉鏈夊尰鐢熺紪鐮侊紝璁剧疆鍖荤敓缂栫爜鐢ㄤ簬鍙婃椂鐜囨煡璇r\n            if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {\r\n                ss.setDrcode(serviceSubtaskList.get(0).getDrcode());\r\n            }else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {\r\n                    ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());\r\n                } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) {\r\n                    ss.setDeptcode(serviceSubtaskList.get(0).getDeptcode());\r\n                }\r\n            }\r\n            \r\n            ss.setStarttime(serviceSubtaskCountReq.getStartTime());\r\n            ss.setEndtime(serviceSubtaskCountReq.getEndTime());\r\n            if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {\r\n                ss.setEndtime(new Date());\r\n            }\r\n            Double jsRate = serviceSubtaskMapper.selectTimelyRate(ss);\r\n            statistic.setRate(jsRate);\r\n\r\n            if (ObjectUtils.isNotEmpty(statistic)) {\r\n                serviceSubtaskStatistics.add(statistic);\r\n            }\r\n        }\r\n        return serviceSubtaskStatistics;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇闅忚缁熻姣斾緥\r\n     *\r\n     * @param serviceSubtaskCountReq\r\n     * @return\r\n     */\r\n    @Override\r\n    public List<ServiceSubtaskStatistic> getSfStatisticsJoy(ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n        log.error(\"getSfStatistics鐨勫叆鍙備负锛歿}\", serviceSubtaskCountReq);\r\n        List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();\r\n\r\n        // 鏍规嵁鏉′欢杩涜鍒嗙粍\r\n        Map<String, List<ServiceSubtask>> collect = new HashMap<>();\r\n\r\n        if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) {\r\n            if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse(\"Unknown\")));\r\n\r\n            } else {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse(\"Unknown\")));\r\n            }\r\n        } else if (serviceSubtaskCountReq.getDeptcodes() != null && serviceSubtaskCountReq.getDeptcodes().size() > 0) {\r\n            if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse(\"Unknown\")));\r\n            } else {\r\n                collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse(\"Unknown\")));\r\n            }\r\n        }\r\n        List<ServiceSubtaskCount> joySubCount=serviceSubtaskMapper.getSfStatisticsJoy(serviceSubtaskCountReq);\r\n        for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {\r\n            if (CollectionUtils.isEmpty(serviceSubtaskList)) {\r\n                continue;\r\n            }\r\n            ServiceSubtaskStatistic statistic = getStatisticJoy(serviceSubtaskList,joySubCount);\r\n            if(statistic.getJoyCount()!=0&&statistic.getJoyAllCount()!=0) {\r\n                Double joyTotal = Double.parseDouble(statistic.getJoyCount() + \"\") / Double.parseDouble(statistic.getJoyAllCount() + \"\") * 100;\r\n                statistic.setJoyTotal(String.format(\"%.2f\", joyTotal)+\"%\");\r\n            }\r\n            //鍙婃椂鐜嘰r\n            ServiceSubtask ss = new ServiceSubtask();\r\n            ss.setOrgid(serviceSubtaskList.get(0).getOrgid());\r\n\r\n            // 濡傛灉鏈夊尰鐢熺紪鐮侊紝璁剧疆鍖荤敓缂栫爜鐢ㄤ簬鍙婃椂鐜囨煡璇r\n            if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {\r\n                ss.setDrcode(serviceSubtaskList.get(0).getDrcode());\r\n            }else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {\r\n                    ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());\r\n                } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) {\r\n                    ss.setDeptcode(serviceSubtaskList.get(0).getDeptcode());\r\n                }\r\n            }\r\n\r\n            ss.setStarttime(serviceSubtaskCountReq.getStartTime());\r\n            ss.setEndtime(serviceSubtaskCountReq.getEndTime());\r\n            if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {\r\n                ss.setEndtime(new Date());\r\n            }\r\n            Double jsRate = serviceSubtaskMapper.selectTimelyRate(ss);\r\n            statistic.setRate(jsRate);\r\n\r\n            if (ObjectUtils.isNotEmpty(statistic)) {\r\n                serviceSubtaskStatistics.add(statistic);\r\n            }\r\n        }\r\n        return serviceSubtaskStatistics;\r\n    }\r\n\r\n    private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) {\r\n        ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();\r\n        //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮\r\n        DecimalFormat percentFormat = new DecimalFormat(\"##.##%\");\r\n        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());\r\n        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());\r\n        serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());\r\n        serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());\r\n        serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());\r\n        serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());\r\n        //鍑洪櫌浜烘\r\n        serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());\r\n        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n            //鏃犻渶闅忚浜烘\r\n            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {\r\n                serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);\r\n            }\r\n            //搴旈殢璁夸汉娆r\n            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {\r\n                serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L);\r\n            }\r\n\r\n            //棣栨鍑洪櫌闅忚\r\n            if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) {\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {\r\n                    serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {\r\n                    serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && ( serviceSubtask.getSendstate() == 6)) {\r\n                    serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {\r\n                    serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);\r\n                }\r\n                if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {\r\n                    double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp();\r\n                    serviceSubtaskStatistic.setFollowUpRate(percentFormat.format(rate));\r\n                } else {\r\n                    serviceSubtaskStatistic.setFollowUpRate(\"0.00%\");\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"4\")) {\r\n                    serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"5\")) {\r\n                    serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setAbnormal(serviceSubtaskStatistic.getAbnormal() + 1L);\r\n                }\r\n            }//浜屾鍑洪櫌闅忚\r\n            else if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) {\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {\r\n                    serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {\r\n                    serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {\r\n                    serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {\r\n                    serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L);\r\n                }\r\n                if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {\r\n                    double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain();\r\n                    serviceSubtaskStatistic.setFollowUpRateAgain(percentFormat.format(rate));\r\n                } else {\r\n                    serviceSubtaskStatistic.setFollowUpRateAgain(\"0.00%\");\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"4\")) {\r\n                    serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"5\")) {\r\n                    serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L);\r\n                }\r\n            }\r\n\r\n\r\n        }\r\n\r\n\r\n        return serviceSubtaskStatistic;\r\n    }\r\n\r\n    private ServiceSubtaskStatistic getStatisticJoy(List<ServiceSubtask> serviceSubtaskList,List<ServiceSubtaskCount> joySubCount) {\r\n        ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();\r\n        //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮\r\n        DecimalFormat percentFormat = new DecimalFormat(\"##.##%\");\r\n        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());\r\n        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());\r\n        serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());\r\n        serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());\r\n        serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());\r\n        serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());\r\n        //鍑洪櫌浜烘\r\n        serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());\r\n        serviceSubtaskStatistic.setJoyCount(0);\r\n        serviceSubtaskStatistic.setJoyAllCount(0);\r\n        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n            //婊℃剰搴r\n            List<ServiceSubtaskCount> joyCountTemp= joySubCount.stream().filter(r->r.getSubTaskId().equals(serviceSubtask.getId()))\r\n                    .collect(Collectors.toList());\r\n            if(joyCountTemp!=null&&joyCountTemp.size()>0){\r\n                if(ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyCount()))\r\n                    serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount()+joyCountTemp.get(0).getJoyCount());\r\n                if(ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyAllCount()))\r\n                    serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount()+joyCountTemp.get(0).getJoyAllCount());\r\n            }\r\n            //鏃犻渶闅忚浜烘\r\n            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {\r\n                serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);\r\n            }\r\n            //搴旈殢璁夸汉娆r\n            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {\r\n                serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L);\r\n            }\r\n\r\n            //棣栨鍑洪櫌闅忚\r\n            if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) {\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {\r\n                    serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {\r\n                    serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && ( serviceSubtask.getSendstate() == 6)) {\r\n                    serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {\r\n                    serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);\r\n                }\r\n                if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {\r\n                    double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp();\r\n                    serviceSubtaskStatistic.setFollowUpRate(percentFormat.format(rate));\r\n                } else {\r\n                    serviceSubtaskStatistic.setFollowUpRate(\"0.00%\");\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"4\")) {\r\n                    serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"5\")) {\r\n                    serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setAbnormal(serviceSubtaskStatistic.getAbnormal() + 1L);\r\n                }\r\n            }//浜屾鍑洪櫌闅忚\r\n            else if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) {\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {\r\n                    serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {\r\n                    serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {\r\n                    serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {\r\n                    serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L);\r\n                }\r\n                if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {\r\n                    double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain();\r\n                    serviceSubtaskStatistic.setFollowUpRateAgain(percentFormat.format(rate));\r\n                } else {\r\n                    serviceSubtaskStatistic.setFollowUpRateAgain(\"0.00%\");\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"4\")) {\r\n                    serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals(\"5\")) {\r\n                    serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);\r\n                }\r\n                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals(\"1\")) {\r\n                    serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L);\r\n                }\r\n            }\r\n\r\n\r\n        }\r\n\r\n\r\n        return serviceSubtaskStatistic;\r\n    }\r\n\r\n    private IvrTaskTemplateScriptVO getNextQuestion(List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO IvrTaskTemplateScriptVO) {\r\n\r\n        for (int j = 0; j < IvrTaskTemplateScriptVOList.size(); j++) {\r\n            if (IvrTaskTemplateScriptVOList.get(j).getTargetid() == IvrTaskTemplateScriptVO.getTargetid() + 1) {\r\n                // 瀵硅鏉emplateScriptVO杩涜澶勭悊\r\n                return IvrTaskTemplateScriptVOList.get(j);\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private ServiceSubtaskDetail getServiceSubtaskDetail(PhoneCallReqYQVO phoneCallReqYQVO, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask, IvrTaskTemplate ivrTaskTemplate) {\r\n        log.info(\"-----------------phoneCallReqYQVO鐨勫�间负锛歿}\", phoneCallReqYQVO);\r\n\r\n        ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();\r\n        serviceSubtaskDetail.setSubId(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n        ServiceSubtask serviceSubtask1 = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));\r\n        if (serviceSubtask1 != null) {\r\n            serviceSubtaskDetail.setTaskid(serviceSubtask1.getTaskid());\r\n            serviceSubtaskDetail.setPatid(serviceSubtask1.getPatid());\r\n        }\r\n        serviceSubtaskDetail.setTargetid(ivrTaskTemplateScriptVO.getTargetid() != null ? ivrTaskTemplateScriptVO.getTargetid().intValue() : null);\r\n        serviceSubtaskDetail.setUuid(phoneCallReqYQVO.getUuid());\r\n        serviceSubtaskDetail.setPhone(phoneCallReqYQVO.getPhone());\r\n        serviceSubtaskDetail.setOperate(serviceSubtask.getCreateBy());\r\n        serviceSubtaskDetail.setDisplayno(phoneCallReqYQVO.getPhone());\r\n        serviceSubtaskDetail.setAssigntime(System.currentTimeMillis());\r\n        serviceSubtaskDetail.setStarttime(System.currentTimeMillis());\r\n        serviceSubtaskDetail.setAnswertime(System.currentTimeMillis());\r\n        serviceSubtaskDetail.setAsrtext(\"鏃犲簲绛擻");\r\n        if (StringUtils.isNotEmpty(phoneCallReqYQVO.getAsrtext()))\r\n            serviceSubtaskDetail.setAsrtext(phoneCallReqYQVO.getAsrtext());\r\n        serviceSubtaskDetail.setBeginTime(System.currentTimeMillis());\r\n        serviceSubtaskDetail.setEndTime(System.currentTimeMillis());\r\n        serviceSubtaskDetail.setSentEnd(1L);\r\n        serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString());\r\n        serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());\r\n        serviceSubtaskDetail.setQuestiontext(StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent());\r\n        serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath());\r\n        serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType());\r\n        serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());\r\n        serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText());\r\n        serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId());\r\n\r\n        int i = 1;\r\n        for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {\r\n            if (ivrTaskTemplateTargetoption.getIsUserOperation() == 1) {\r\n                serviceSubtaskDetail.setMatchedtext(ivrTaskTemplateTargetoption.getTargetvalue());\r\n            }\r\n            serviceSubtaskDetail.setTargetvalue(StringUtils.isEmpty(serviceSubtaskDetail.getTargetvalue()) ? ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetail.getTargetvalue() + \"&\" + ivrTaskTemplateTargetoption.getTargetvalue());\r\n        }\r\n\r\n        serviceSubtaskDetail.setAddtime(new Date());\r\n        serviceSubtaskDetail.setIsupload(0L);\r\n        serviceSubtaskDetail.setUploadTime(new Date());\r\n        serviceSubtaskDetail.setDelFlag(\"0\");\r\n        serviceSubtaskDetail.setValueType(ivrTaskTemplateScriptVO.getScriptType());\r\n        return serviceSubtaskDetail;\r\n    }\r\n\r\n    private void getSmsCompensate(Long subTaskId) {\r\n        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(subTaskId);\r\n        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n        String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);\r\n        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);\r\n        String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);\r\n        ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n        serviceOutPath.setParam1(taskId);\r\n        serviceOutPath.setParam2(patid);\r\n        serviceOutPath.setCreateTime(new Date());\r\n        serviceOutPath.setParam6(subId);\r\n        iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n        //杞垚16杩涘埗\r\n        String format = String.format(\"%03X\", serviceOutPath.getId());\r\n        serviceOutPath.setRadix(format);\r\n        serviceOutPath.setUpdateTime(new Date());\r\n        iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n        SendMagParam sendMagParam = new SendMagParam();\r\n        sendMagParam.setUrl(localIP + \":\" + req_path + \"/sf?p=\" + format);\r\n        sendMagParam.setContent(\"銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑籠" + sendMagParam.getUrl() + \"濉啓銆傛劅璋㈡偍閰嶅悎锛乗");\r\n        Map<String, String> map = new HashMap<>();\r\n        map.put(\"phone\", serviceSubtask.getPhone());\r\n        map.put(\"content\", sendMagParam.getContent());\r\n        String result = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(map));\r\n        redisCache.setCacheObject(subTaskId + \"recordAccept-hungup\", \"1\", 10, TimeUnit.MINUTES);\r\n        if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) serviceSubtask.setRemark(\"鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔焅");\r\n        else serviceSubtask.setRemark(\"鐭俊琛ュ伩鍙戦�佹垚鍔焅");\r\n        serviceSubtask.setSendstate(3L);\r\n        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n\r\n    }\r\n\r\n    //閫氳繃褰撳墠鏃堕棿锛屾媺鍙栫數璇濇�绘暟\r\n    private Integer phoneCount() {\r\n        // 褰撳墠鏃堕棿\r\n        LocalTime currentTime = LocalTime.now();\r\n        // 鐩爣鏃堕棿锛堟櫄涓� 8 鐐癸級\r\n        LocalTime targetTime = LocalTime.of(phoneEndHour, 0);\r\n        // 璁$畻褰撳墠鏃堕棿鍒扮洰鏍囨椂闂寸殑鏃堕暱\r\n        Duration duration = Duration.between(currentTime, targetTime);\r\n        // 鑾峰彇鍓╀綑鏃堕棿鐨勫皬鏃舵暟\r\n        long remainingHours = 0;\r\n        long remainingMinutes = duration.toMinutes();\r\n        //濡傛灉瓒呰繃8鐐�,灏辫缃负0\r\n        //璺濈缁撴潫鏃堕棿灏忎簬20鍒嗛挓锛屽氨涓嶆媺鍙栦簡\r\n        if (remainingMinutes < 20) remainingHours = 0;\r\n        else if (remainingMinutes < 60 && remainingMinutes > 20) remainingHours = 1;\r\n        else if (remainingMinutes > 60) remainingHours = remainingMinutes / 60;\r\n        // 璁$畻鍓╀綑鍙互鎵撶殑鐢佃瘽鏁癨r\n        int remainingCalls = (int) (remainingHours * phoneUpEveryHour);\r\n        return remainingCalls;\r\n    }\r\n\r\n    public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq) {\r\n       return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java	(date 1759134020071)
-@@ -1,6 +1,7 @@
- package com.smartor.service.impl;
- 
- import com.alibaba.fastjson2.JSON;
-+import com.fasterxml.jackson.annotation.JsonFormat;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.google.gson.Gson;
-@@ -49,6 +50,9 @@
-     @Autowired
-     private ServiceSubtaskMapper serviceSubtaskMapper;
- 
-+    @Autowired
-+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
-+
-     @Autowired
-     private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;
- 
-@@ -173,7 +177,6 @@
-             return DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);
-         }
- 
--
-         //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ServiceSubtaskVO涓�
-         ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);
-         serviceTaskVO.setShowDate(serviceTask.getShowDate());
-@@ -253,6 +256,14 @@
-                 patTaskRelevance.setNurseName(serviceSubtask1.getNurseName());
-                 patTaskRelevances.add(patTaskRelevance);
-             }
-+
-+            //鑾峰彇璇ユ偅鑰呮墍鏈夌殑鎵ц鐘舵��
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
-+            serviceSubtaskPreachform.setSubid(serviceSubtask1.getId());
-+            List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+            serviceTaskVO.setPreachformList(serviceSubtaskPreachformList);
-+
-         }
- 
-         serviceTaskVO.setPatTaskRelevances(patTaskRelevances);
-@@ -297,7 +308,8 @@
-             if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;
-             if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;
-             if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
--            if (serviceSubtask.getExcep().equals("1")) yc = yc + 1;
-+            if (StringUtils.isNotEmpty(serviceSubtask.getExcep()) && !serviceSubtask.getExcep().equals("0"))
-+                yc = yc + 1;
-         }
-         map.put("wzx", wzx);
-         map.put("ysf", ysf);
-@@ -414,6 +426,16 @@
-             throw new BaseException("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
-         }
-         ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);
-+        if (CollectionUtils.isEmpty(serviceTaskVO.getPreachformList())) throw new BaseException("浠诲姟鐨勫彂閫佹柟寮忎负绌�");
-+        //灏唒reachfromList鏀惧埌serviceTask涓殑preachfrom涓�
-+        ObjectMapper mapper = new ObjectMapper();
-+        try {
-+            String preachformList = mapper.writeValueAsString(serviceTaskVO.getPreachformList());
-+            serviceTask.setPreachform(preachformList);
-+        } catch (JsonProcessingException e) {
-+            e.printStackTrace();
-+        }
-+
-         serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));
-         if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {
-             //鏂板妯℃澘淇℃伅
-@@ -460,7 +482,7 @@
-                     ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
-                     serviceTaskdiag.setTaskId(serviceTask.getTaskid());
-                     serviceTaskdiag.setTaskName(serviceTask.getTaskName());
--                    serviceTaskdiag.setLongtask(0L);
-+                    serviceTaskdiag.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                     if (serviceTaskVO.getLongTask() == 1) serviceTaskdiag.setLongtask(1L);
-                     serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());
-                     serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
-@@ -481,11 +503,10 @@
-                     serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
-                     serviceTaskoper.setTaskId(serviceTask.getTaskid());
-                     serviceTaskoper.setTaskName(serviceTask.getTaskName());
--                    serviceTaskoper.setLongtask(0L);
-+                    serviceTaskoper.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                     serviceTaskoper.setGuid(serviceTask.getGuid());
-                     serviceTaskoper.setOrgid(serviceTask.getOrgid());
-                     serviceTaskoper.setCreateTime(new Date());
--                    if (serviceTaskVO.getLongTask() == 1) serviceTaskoper.setLongtask(1L);
-                     if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {
-                         String[] opcodes = serviceTaskVO.getOpcode().split(",");
-                         for (String opcode : opcodes) {
-@@ -500,8 +521,7 @@
-                     serviceTaskdept.setTaskId(serviceTask.getTaskid());
-                     serviceTaskdept.setTaskName(serviceTask.getTaskName());
-                     serviceTaskdept.setOrgid(serviceTask.getOrgid());
--                    serviceTaskdept.setLongtask(0L);
--                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
-+                    serviceTaskdept.setLongtask(Long.valueOf(serviceTaskVO.getLongTask()));
-                     if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
-                         String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
-                         for (String deptCode : deptcodes) {
-@@ -522,11 +542,12 @@
-                     }
-                 }
-             }
--            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {
--                Map<String, Integer> map = new HashMap<>();
--                map.put("taskId", serviceTask.getTaskid().intValue());
--                return map;
--            }
-+//闀挎湡浠诲姟锛屼篃鍏佽鍔犱汉浜�
-+//            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {
-+//                Map<String, Integer> map = new HashMap<>();
-+//                map.put("taskId", serviceTask.getTaskid().intValue());
-+//                return map;
-+//            }
- 
-             //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓�
-             ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
-@@ -565,11 +586,25 @@
-                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
-                     serviceSubtask.setCreateBy(serviceTask.getCreateBy());
-                     serviceSubtask.setUpdateBy(serviceTask.getCreateBy());
--                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
-+                    serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
-                     if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
-                         serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
-                     serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
-                     serviceSubtask.getId().intValue();
-+
-+                    //闇�瑕佹寜service_task閲岀殑preachform鐨勯『搴忓皢鍙戦�佹柟寮忎繚瀛樺埌service_subtask_preachform琛ㄤ腑
-+                    if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformList())) {
-+                        List<ServiceSubtaskPreachform> pfList = serviceTaskVO.getPreachformList();
-+                        for (ServiceSubtaskPreachform serviceSubtaskPreachform : pfList) {
-+                            serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
-+                            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+                            //杩欎釜sendstate闇�瑕佸湪鏁版嵁搴撹缃竴涓粯璁ゅ�间负鈥�1鈥�
-+                            serviceSubtaskPreachform.setSendstate("1");
-+                            serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
-+                            serviceSubtaskPreachform.setCreateTime(new Date());
-+                            serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
-+                        }
-+                    }
-                 }
-             }
- 
-@@ -579,8 +614,6 @@
-                 serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
-             //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1
-             ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
--//            long l = serviceTask1.getStopState() + 1;
--//            serviceTask.setStopState(l);
-             //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
-             ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-             serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
-@@ -593,18 +626,6 @@
-             } else {
-                 if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;
-             }
--            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
--                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
--                    log.info("insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
--                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());
--                    redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
--                    redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
--                    redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString());
--                    redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
--                    redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
--                    redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
--                }
--            }
- 
-             if (serviceTaskVO.getLibtemplateid() != null)
-                 serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString());
-@@ -613,17 +634,14 @@
-             serviceTask.setUpdateTime(new Date());
-             serviceTaskService.updateServiceTask(serviceTask);
-             if (serviceTaskVO.getAppltype().equals("1") || serviceTaskVO.getAppltype().equals("2")) {
--
--
-                 if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
-                     String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
-                     for (String deptCode : deptcodes) {
-                         ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
-                         serviceTaskdept.setTaskId(serviceTask.getTaskid());
-                         serviceTaskdept.setTaskName(serviceTask.getTaskName());
--                        serviceTaskdept.setLongtask(0L);
-+                        serviceTaskdept.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                         serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());
--                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
-                         serviceTaskdept.setDeptCode(deptCode);
-                         serviceTaskdept.setDeptType("1");
-                         serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
-@@ -644,9 +662,8 @@
-                         ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
-                         serviceTaskdept.setTaskId(serviceTask.getTaskid());
-                         serviceTaskdept.setTaskName(serviceTask.getTaskName());
--                        serviceTaskdept.setLongtask(0L);
-+                        serviceTaskdept.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                         serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());
--                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
-                         serviceTaskdept.setDeptCode(districtcode);
-                         serviceTaskdept.setDeptType("2");
-                         serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
-@@ -669,9 +686,7 @@
-                 if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) {
-                     throw new BaseException("鐤剧梾缂栫爜涓虹┖");
-                 }
--//                serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());
--
--                serviceTaskdiag.setLongtask(1L);
-+                serviceTaskdiag.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                 serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
-                 serviceTaskdiag.setGuid(serviceTask.getGuid());
-                 serviceTaskdiag.setOrgid(serviceTask.getOrgid());
-@@ -695,7 +710,6 @@
-                     }
-                 }
- 
--
-             } else if (serviceTaskVO.getAppltype().equals("4")) {
-                 ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
-                 if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) {
-@@ -705,7 +719,7 @@
-                 serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
-                 serviceTaskoper.setTaskId(serviceTask.getTaskid());
-                 serviceTaskoper.setTaskName(serviceTask.getTaskName());
--                serviceTaskoper.setLongtask(1L);
-+                serviceTaskoper.setLongtask(Long.valueOf(serviceTask.getLongTask()));
-                 serviceTaskoper.setGuid(serviceTask.getGuid());
-                 serviceTaskoper.setOrgid(serviceTask.getOrgid());
-                 serviceTaskoper.setCreateTime(new Date());
-@@ -728,7 +742,6 @@
-                         }
-                     }
-                 }
--
-             }
-             if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
-                 IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate();
-@@ -771,12 +784,13 @@
-                     serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
-                     serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
-                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
--                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
-+                    serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
-                     serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
-                     if (patTaskRelevance.getIsoperation() != null) {
--                        if (patTaskRelevance.getIsoperation() == 2)
-+                        if (patTaskRelevance.getIsoperation() == 2) {
-                             serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
--                        serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
-+                            serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
-+                        }
-                         if (patTaskRelevance.getIsoperation() == 1) {
-                             serviceSubtask.setSendstate(1L);
-                             serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
-@@ -790,6 +804,32 @@
-                     serviceSubtask.getTaskid().intValue();
-                 }
-             }
-+            // 鏈夊彲鑳戒細鎶婂彂閫侀『搴忎篃淇敼浜嗭紙闇�瑕佹牴鎹畉askId灏嗘墍鏈夌殑sendstate锛�=4,5,6鐨剆ubTask鎷夊嚭鏉ワ紝杩涜淇敼涓�涓嬶級
-+            ServiceSubtaskVO ssVo = new ServiceSubtaskVO();
-+            ssVo.setTaskid(serviceTaskVO.getTaskid());
-+            ssVo.setDelFlag("0");
-+            List<Long> ssList = new ArrayList<>();
-+            ssList.add(1l);
-+            ssList.add(2L);
-+            ssList.add(3L);
-+            ssVo.setSendstates(ssList);
-+            List<ServiceSubtask> ssTaskList = serviceSubtaskMapper.selectServiceSubtaskBySendstate(ssVo);
-+            for (int i = 0; i < ssTaskList.size(); i++) {
-+                ServiceSubtask serviceSubtask = ssTaskList.get(i);
-+                serviceSubtaskPreachformMapper.deleteServiceSubtaskPreachformBySubid(serviceSubtask.getId());
-+                if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformList())) {
-+                    List<ServiceSubtaskPreachform> pfList = serviceTaskVO.getPreachformList();
-+                    for (ServiceSubtaskPreachform serviceSubtaskPreachform : pfList) {
-+                        serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
-+                        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+                        //杩欎釜sendstate闇�瑕佸湪鏁版嵁搴撹缃竴涓粯璁ゅ�间负鈥�1鈥�
-+                        serviceSubtaskPreachform.setSendstate("1");
-+                        serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
-+//                        serviceSubtaskPreachform.setSort(Long.valueOf(i));
-+                        serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
-+                    }
-+                }
-+            }
-         }
-         Map<String, Integer> map = new HashMap<>();
-         map.put("taskId", serviceTask.getTaskid().intValue());
-@@ -1055,7 +1095,7 @@
-         //鍒ゆ柇鏄惁鎸傛満
-         String hangupState = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "- hangup");
-         Object cacheObject1 = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
--        if (StringUtils.isNotEmpty(hangupState) && hangup.equals("1") || ObjectUtils.isNotEmpty(cacheObject1) && String.valueOf(cacheObject1).equals("1")) {
-+        if (StringUtils.isNotEmpty(hangupState) && hangupState.equals("1") || ObjectUtils.isNotEmpty(cacheObject1) && String.valueOf(cacheObject1).equals("1")) {
-             return new PhoneCallBackYQVO();
-         }
-         if ("AsrCallback".equals(phoneCallReqYQVO.getOperate()) && phoneCallReqYQVO.getEnd_time() != null && phoneCallReqYQVO.getEnd_time() != -1) {
-@@ -1064,6 +1104,8 @@
-                 //鍒ゆ柇 recordAccept-hungup 鏄惁鏈夊�硷紝濡傛灉鏈夛紝鍒欒鏄庝笉鐢ㄥ鐞嗕簡锛屼箣鍓嶅凡缁忓鐞嗚繃浜嗭紙recordAccept-hungup杩欎釜涓昏鏄粰"閫氳瘽璁板綍鐢ㄧ殑锛�"锛�
-                 Object cacheObject = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
-                 if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("1")) {
-+                    ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-+                    setFailPreachForm(serviceSubtask, "3", "鎷ㄥ彨鐨勭敤鎴锋蹇�", "4");
-                     return new PhoneCallBackYQVO();
-                 }
-                 //濡傛灉鍙戦�佺姸鎬佷负6锛屽氨璇存槑宸茬粡鎵撳畬浜嗭紝涔熸病鏈夊繀瑕佺户缁線涓嬭蛋浜�
-@@ -1085,8 +1127,12 @@
-                 //鍏堟妸榛樿鐨剅ecordAccept-hungup鍒犻櫎锛屽啀鏇存柊
-                 redisCache.deleteObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
-                 redisCache.setCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
-+
-+                //璁板綍鐢佃瘽鍙戦�佺姸鎬�
-+                setFailPreachForm(serviceSubtask2, "3", "鐢佃瘽鍙戦�佹垚鍔燂紙鎮h�呮寕鏂級", "4");
-+
-                 //杩欎釜鏃跺�欏氨闇�瑕佽蛋琛ュ伩鏈哄埗浜嗭紝鍏堟殏瀹氳蛋鐭俊
--                getSmsCompensate(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-+//                getSmsCompensate(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-                 return new PhoneCallBackYQVO();
-             }
-         }
-@@ -1115,6 +1161,9 @@
-                     req.put("caller", phoneCallReqYQVO.getPhone());
- //                    HttpUtils.sendPost(hangup, new Gson().toJson(req));
-                     HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));
-+                    ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-+                    //璁板綍鐢佃瘽鍙戦�佺姸鎬�
-+                    setFailPreachForm(serviceSubtask, "3", "閫氳瘽姝e父缁撴潫", "9");
-                     //鍒犻櫎缁撴潫璇殑鎮e瓨
-                     redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "- jsy");
-                 } else {
-@@ -1122,6 +1171,7 @@
-                     log.error("-------PlayEventCallbackPlaystop鐨勫�间负锛歿}", true);
-                 }
-             }
-+
-             return phoneCallBackYQVO;
-         }
-         //鑾峰彇鏀鹃煶鏄惁缁撴潫
-@@ -1198,6 +1248,9 @@
-                 serviceSubtask.setUpdateTime(new Date());
-                 log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆erviceSubtask鐨勫�间负锛歿}", serviceSubtask);
-                 serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                //璁板綍鐘舵��
-+                setFailPreachForm(serviceSubtask, "3", "闈欓粯娆℃暟杈惧埌" + num + "娆�", "4");
-+
-                 Map<String, String> map = delRedisValue(null, id.toString());
-                 if (ObjectUtils.isNotEmpty(map)) redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
-                 redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-@@ -1252,6 +1305,8 @@
-                         ss.setSendstate(6L);
-                         ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                         serviceSubtaskMapper.updateServiceSubtask(ss);
-+                        //璁板綍鐘舵��
-+                        setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                         //鍙互鎸傛満浜�
-                         redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-                         redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-@@ -1336,6 +1391,8 @@
-                             redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-                             phoneCallBackYQVO.setType("text");
-                             phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());
-+                            //璁板綍鐘舵��
-+                            setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                             return phoneCallBackYQVO;
-                         }
- 
-@@ -1367,6 +1424,9 @@
-                                 ss.setSendstate(6L);
-                                 ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                                 serviceSubtaskMapper.updateServiceSubtask(ss);
-+                                //璁板綍鐘舵��
-+                                setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-+
-                                 redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-                                 redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                                 redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-@@ -1414,6 +1474,8 @@
-                             serviceSubtask.setSendstate(6L);
-                             serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                            //璁板綍鐘舵��
-+                            setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                             //璁剧疆缁撴潫璇�
-                             phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
-                             Long id = serviceSubtask.getId();
-@@ -1484,7 +1546,8 @@
-                             serviceSubtask.setSendstate(6L);
-                             serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--
-+                            //璁板綍鐘舵��
-+                            setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                             //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                             ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                             redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-@@ -1588,7 +1651,8 @@
-                     serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                     serviceSubtask.setSendstate(6L);
-                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
--
-+                    //璁板綍鐘舵��
-+                    setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                     //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
-                     Long id = serviceSubtask.getId();
-                     Map<String, String> map = delRedisValue(null, id.toString());
-@@ -1813,241 +1877,6 @@
-     }
- 
- 
--    //涓嬮潰鐨勪唬鐮佷笉鑳藉垹闄わ紝涓婇潰鐨勬柟娉曞彧鏄厤鍚堢數璇濈鑱旇皟鐢ㄧ殑锛�
--//    @Override
--//    public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
--//        log.error("phoneCallBackVO鐨勫叆鍙傦細{},{},{},{},{},{},{}", phoneCallBackVO.getResultType(), phoneCallBackVO.getUuid(), phoneCallBackVO.getErrResult(), phoneCallBackVO.getTextResult(), phoneCallBackVO.getHangUpResult(), phoneCallBackVO.getEnumState(), phoneCallBackVO.getUint8());
--//        //鑾峰彇鏁版嵁
--//        Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());
--//        if (!aBoolean) {
--//            throw new BaseException("璇uid涓嶅瓨鍦�");
--//        }
--//        Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "hangup");
--//        if (hangupValue != null && hangupValue == 1) {
--//            //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽
--//            PhoneUtils phoneUtils = new PhoneUtils();
--//            phoneUtils.hangup(phoneCallBackVO.getUuid(), null, null, null, null, null, null, null);
--//
--//        }
--//
--//        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());
--////        ObjectMapper objectMapper = new ObjectMapper();
--////        Map<String, Object> map = null;
--////        try {
--////            map = objectMapper.readValue(cacheObject, Map.class);
--////        } catch (JsonProcessingException e) {
--////            e.printStackTrace();
--////        }
--//
--//        ServiceSubtask ServiceSubtask = (ServiceSubtask) map.get("ServiceSubtask");
--//        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO");
--//        //灏唘uid鏇存柊鍒版暟鎹簱涓�
--//        ServiceSubtask.setSenduuid(phoneCallBackVO.getUuid());
--//        ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
--//
--//        //鑾峰彇妯℃澘淇℃伅
--//        IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO");
--//
--//
--//        //棣栧厛鍒ゆ柇resultType
--//        if (phoneCallBackVO.getResultType() == 1) {
--//            //鍛煎彨缁撴灉鎺ュ彛: 1
--//            if (phoneCallBackVO.getUint8() == 1) {
--//                //鍛煎彨澶辫触锛屽幓redis涓褰曚竴涓嬪け璐ユ鏁帮紝杩涜鍐嶆鍛煎彨
--//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "uint8");
--//                if (integer != null) {
--//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", integer + 1, 120, TimeUnit.MINUTES);
--//                } else {
--//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", 1, 120, TimeUnit.MINUTES);
--//                }
--//
--//                if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {
--//                    log.info("鏃犱汉鎺ュ惉锛歿},   {}", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid());
--//                    //杩炵画鎵撹瀹氭锛屽鏋滆娌′汉鎺ワ紝閭e氨缁撴潫
--//                    ServiceSubtask.setResult(phoneCallBackVO.getErrResult());
--//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
--//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "uint8");
--//                } else if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {
--//                    //杩涜閲嶆嫧
--//                    PhoneUtils phoneUtils = new PhoneUtils();
--//                    phoneUtils.ob(null, null, null, null, null, null, null, ServiceSubtask.getPhone(), phoneCallBackVO.getUuid(), true);
--//                }
--//            }
--//
--//        } else if (phoneCallBackVO.getResultType() == 2) {
--//            //閫氳瘽鐘舵�佹洿鏂版帴鍙�: 2
--//            if (phoneCallBackVO.getEnumState() == 0) {
--//                // 0-鎸搩
--//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "enumState");
--//
--//                if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {
--//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", integer + 1, 120, TimeUnit.MINUTES);
--//                } else if (integer == null) {
--//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", 1, 120, TimeUnit.MINUTES);
--//                } else if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {
--//                    ServiceSubtask.setResult("鏃犱汉鎺ュ惉");
--//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
--//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
--//                }
--//            } else if (phoneCallBackVO.getEnumState() == 2) {
--//                //鎮h�呮寕鏂數璇�
--//                log.info("鎮h�呮寕鏂數璇濓細{}", phoneCallBackVO.getUuid());
--//                ServiceSubtask.setResult(phoneCallBackVO.getHangUpResult());
--//                ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
--//                redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
--//            }
--//
--//
--//        } else if (phoneCallBackVO.getResultType() == 3) {
--//            //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3
--//            Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
--//            QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
--//            IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
--//            PhoneUtils phoneUtils = new PhoneUtils();
--//
--//            if (StringUtils.isEmpty(phoneCallBackVO.getTextResult())) {
--//                //鏃犲洖璇�
--//                //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у��
--//                if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {
--//                    //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰�
--//                    if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {
--//                        //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
--//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
--//                        phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
--//                    } else {
--//                        //鏈変笅涓�棰�
--//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
--//                        IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
--//                        // 闂锛�  鍘昏皟鐢�"tts鍚堟垚鍜屾挱鏀�"鎺ュ彛
--//                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
--//                    }
--//                } else {
--//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
--//                    //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
--//                    String slienceText = nowQuestion.getSlienceText();
--//                    //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢�"tts鍚堟垚鍜屾挱鏀�"鎺ュ彛
--//                    phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
--//                    return new PhoneCallBackVO();
--//                }
--//
--//            } else {
--//                //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛�
--//                for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {
--//                    //鍖呭惈
--//                    Matcher matcher = null;
--//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {
--//                        Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());
--//                        matcher = pattern.matcher(phoneCallBackVO.getTextResult());
--//                    }
--//                    //涓嶅寘鍚�
--//                    Matcher matcher2 = null;
--//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {
--//                        Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
--//                        matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
--//                    }
--//                    log.info("phoneCallBack--Targetregex鐨勫�间负锛歿}, phoneCallBack--Targetregex2鐨勫�间负锛歿}", nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
--//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
--//                        //璇存槑鍖归厤姝g‘浜�
--//                        //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
--//                        nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
--//                        ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));
--//
--//
--//                        //灏嗛潤榛樼疆涓�0
--//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
--//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
--//                        //鑾峰彇涓嬩竴棰�
--//                        Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
--//                        for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {
--//                            if (script.getTargetid() == nextQuestion) {
--//                                QuestionMessage questionMessage = new QuestionMessage();
--//                                questionMessage.setNowQuestion(script);
--//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
--//                                break;
--//                            }
--//                        }
--//                        break;
--//                    } else {
--//                        //娌℃湁鍖归厤鍒�
--//                        Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum");
--//                        //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
--//                        if (mateNum == ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
--//                            //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
--//                            if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {
--//                                QuestionMessage questionMessage = new QuestionMessage();
--//                                IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
--//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
--//                                questionMessage.setNowQuestion(nextQuestion);
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
--//                            } else {
--//                                //灏卞彲浠ユ寕鏂數璇濅簡
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
--//                                phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
--//                                break;
--//                            }
--//                        } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
--//                            //娌℃湁闂埌瑙勫畾娆℃暟
--//                            mateNum = mateNum + 1;
--//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES);
--//                        }
--//                    }
--//
--//                }
--//                //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
--//                String extemplateID = ivrLibaTemplateVO.getSubmoduleID();
--//                String[] split = extemplateID.split(",");
--//                List<String> list = Arrays.asList(split);
--//                List<Long> list1 = new ArrayList<>();
--//                if (StringUtils.isNotEmpty(extemplateID)) {
--//                    for (String str : list) {
--//                        list1.add(Long.valueOf(str));
--//                    }
--//                    List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);
--//                    for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {
--//                        Matcher matcher = null;
--//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {
--//                            Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());
--//                            matcher = pattern.matcher(returnQues.getContent());
--//                        }
--//
--//                        Matcher matcher2 = null;
--//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {
--//                            Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
--//                            matcher2 = pattern2.matcher(returnQues.getContent());
--//                        }
--//                        log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
--//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {
--//                            QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
--//                            IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();
--//                            ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
--//                            ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
--//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
--//                            if (ivrLibaExtemplatescript.getIsEnd() == 1) {
--//                                //灏嗛棶棰樼疆绌�
--//                                IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
--//                                nowQuestion1.setQuestionText(null);
--//                                nowQuestion1.setQuestionVoice(null);
--//                                questionMessage.setNowQuestion(nowQuestion1);
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
--//
--//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES);
--//                            }
--//
--//                            //璋冪敤"15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback"灏嗙粨鏋滀紶鍥�
--//
--//
--//                        }
--//                        break;
--//                    }
--//                }
--//
--//            }
--//        }
--//        return phoneCallBackVO;
--//    }
--
-     @Override
-     public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
-         int i = 0;
-@@ -2066,7 +1895,7 @@
-             //闅忚
-             for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
-                 serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());
--                serviceSubtaskDetail.setId(UUID.randomUUID().toString());
-+//                serviceSubtaskDetail.setId(UUID.randomUUID().toString());
-                 serviceSubtaskDetail.setCreateTime(new Date());
-                 serviceSubtaskDetail.setGuid(selectServiceSubtaskList.get(0).getGuid());
-                 serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());
-@@ -2112,7 +1941,11 @@
-         Object cacheObject = redisCache.getCacheObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
-         if (phoneCallRecordVO.getHangup_cause().equals("NO_USER_RESPONSE") || ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("1")) {
-             //鏃犱汉鎺ュ惉
--            getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid()));
-+            //璁板綍鐢佃瘽鍙戦�佺姸鎬�
-+            ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallRecordVO.getTaskid()));
-+            setFailPreachForm(serviceSubtask, "3", "鏃犱汉鎺ュ惉", "4");
-+            //杩涜鐭俊琛ュ伩
-+//            getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid()));
-             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
-             redisCache.removeElementFromList("cache-exist", phoneCallRecordVO.getTaskid());
-         } else if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("2")) {
-@@ -2130,6 +1963,7 @@
-             serviceSubtask.setUpdateTime(new Date());
-             log.error("鐢佃瘽鎷ㄦ墦宸插畬鎴恠erviceSubtask鐨勫�间负:{}", serviceSubtask);
-             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+            setFailPreachForm(serviceSubtask, StringUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) ? serviceSubtask.getCurrentPreachform() : "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-             //涓嬭浇鏂囦欢
-             ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
-             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
-@@ -2147,8 +1981,10 @@
- //            int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/");
- //            String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);
-             //涓嬭浇鏂囦欢
--            ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
-+//            ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
-             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
-+            ServiceSubtask ss = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtask.getId());
-+            setFailPreachForm(ss, StringUtils.isNotEmpty(ss.getCurrentPreachform()) ? ss.getCurrentPreachform() : "3", "鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�", "5");
-         }
- 
-         return 1;
-@@ -2227,11 +2063,11 @@
-     public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {
-         log.error("getSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
-         List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
--        List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
--        
-+//        List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
-+
-         // 鏍规嵁鏉′欢杩涜鍒嗙粍
-         Map<String, List<ServiceSubtask>> collect = new HashMap<>();
--        
-+
-         if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) {
-             if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
-                 collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown")));
-@@ -2245,7 +2081,7 @@
-                 collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
-             }
-         }
--        
-+
-         for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
-             if (CollectionUtils.isEmpty(serviceSubtaskList)) {
-                 continue;
-@@ -2259,14 +2095,14 @@
-             // 濡傛灉鏈夊尰鐢熺紪鐮侊紝璁剧疆鍖荤敓缂栫爜鐢ㄤ簬鍙婃椂鐜囨煡璇�
-             if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
-                 ss.setDrcode(serviceSubtaskList.get(0).getDrcode());
--            }else {
-+            } else {
-                 if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {
-                     ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
-                 } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) {
-                     ss.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
-                 }
-             }
--            
-+
-             ss.setStarttime(serviceSubtaskCountReq.getStartTime());
-             ss.setEndtime(serviceSubtaskCountReq.getEndTime());
-             if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {
-@@ -2310,15 +2146,15 @@
-                 collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
-             }
-         }
--        List<ServiceSubtaskCount> joySubCount=serviceSubtaskMapper.getSfStatisticsJoy(serviceSubtaskCountReq);
-+        List<ServiceSubtaskCount> joySubCount = serviceSubtaskMapper.getSfStatisticsJoy(serviceSubtaskCountReq);
-         for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
-             if (CollectionUtils.isEmpty(serviceSubtaskList)) {
-                 continue;
-             }
--            ServiceSubtaskStatistic statistic = getStatisticJoy(serviceSubtaskList,joySubCount);
--            if(statistic.getJoyCount()!=0&&statistic.getJoyAllCount()!=0) {
-+            ServiceSubtaskStatistic statistic = getStatisticJoy(serviceSubtaskList, joySubCount);
-+            if (statistic.getJoyCount() != 0 && statistic.getJoyAllCount() != 0) {
-                 Double joyTotal = Double.parseDouble(statistic.getJoyCount() + "") / Double.parseDouble(statistic.getJoyAllCount() + "") * 100;
--                statistic.setJoyTotal(String.format("%.2f", joyTotal)+"%");
-+                statistic.setJoyTotal(String.format("%.2f", joyTotal) + "%");
-             }
-             //鍙婃椂鐜�
-             ServiceSubtask ss = new ServiceSubtask();
-@@ -2327,7 +2163,7 @@
-             // 濡傛灉鏈夊尰鐢熺紪鐮侊紝璁剧疆鍖荤敓缂栫爜鐢ㄤ簬鍙婃椂鐜囨煡璇�
-             if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
-                 ss.setDrcode(serviceSubtaskList.get(0).getDrcode());
--            }else {
-+            } else {
-                 if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {
-                     ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
-                 } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) {
-@@ -2380,7 +2216,7 @@
-                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
-                     serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
-                 }
--                if (serviceSubtask.getSendstate() != null && ( serviceSubtask.getSendstate() == 6)) {
-+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
-                     serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
-                 }
-                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
-@@ -2445,7 +2281,7 @@
-         return serviceSubtaskStatistic;
-     }
- 
--    private ServiceSubtaskStatistic getStatisticJoy(List<ServiceSubtask> serviceSubtaskList,List<ServiceSubtaskCount> joySubCount) {
-+    private ServiceSubtaskStatistic getStatisticJoy(List<ServiceSubtask> serviceSubtaskList, List<ServiceSubtaskCount> joySubCount) {
-         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
-         //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
-         DecimalFormat percentFormat = new DecimalFormat("##.##%");
-@@ -2461,13 +2297,12 @@
-         serviceSubtaskStatistic.setJoyAllCount(0);
-         for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-             //婊℃剰搴�
--            List<ServiceSubtaskCount> joyCountTemp= joySubCount.stream().filter(r->r.getSubTaskId().equals(serviceSubtask.getId()))
--                    .collect(Collectors.toList());
--            if(joyCountTemp!=null&&joyCountTemp.size()>0){
--                if(ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyCount()))
--                    serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount()+joyCountTemp.get(0).getJoyCount());
--                if(ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyAllCount()))
--                    serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount()+joyCountTemp.get(0).getJoyAllCount());
-+            List<ServiceSubtaskCount> joyCountTemp = joySubCount.stream().filter(r -> r.getSubTaskId().equals(serviceSubtask.getId())).collect(Collectors.toList());
-+            if (joyCountTemp != null && joyCountTemp.size() > 0) {
-+                if (ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyCount()))
-+                    serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount() + joyCountTemp.get(0).getJoyCount());
-+                if (ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyAllCount()))
-+                    serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount() + joyCountTemp.get(0).getJoyAllCount());
-             }
-             //鏃犻渶闅忚浜烘
-             if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
-@@ -2486,7 +2321,7 @@
-                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
-                     serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
-                 }
--                if (serviceSubtask.getSendstate() != null && ( serviceSubtask.getSendstate() == 6)) {
-+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
-                     serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
-                 }
-                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
-@@ -2611,6 +2446,11 @@
-         return serviceSubtaskDetail;
-     }
- 
-+    /**
-+     * 鐢佃瘽鐨勮ˉ鍋挎柟娉曪紙鑰侊級
-+     *
-+     * @param subTaskId
-+     */
-     private void getSmsCompensate(Long subTaskId) {
-         ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(subTaskId);
-         RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-@@ -2641,6 +2481,34 @@
-         serviceSubtask.setSendstate(3L);
-         serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- 
-+        //闇�瑕佸湪servicePreachform閲岃褰曚竴涓嬬煭淇$姸鎬�
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setPreachform("4");
-+        serviceSubtaskPreachform.setSubid(subTaskId);
-+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
-+            serviceSubtaskPreachform1.setSendstate("9");
-+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
-+        } else if (CollectionUtils.isEmpty(serviceSubtaskPreachforms)) {
-+            //濡傛灉涓虹┖鐨勮瘽锛岃鏄庣敤鎴锋病鏈夐�夌煭淇″彂閫佹柟寮忥紝杩欎釜鏃跺�欓渶瑕佸己鍒舵柊澧炰竴鏉�
-+            //鑾峰彇sort鐨勬渶澶у��
-+            ServiceSubtaskPreachform ssp = new ServiceSubtaskPreachform();
-+            ssp.setSubid(subTaskId);
-+            ssp.setTaskid(serviceSubtask.getTaskid());
-+            ssp.setOrgid(serviceSubtask.getOrgid());
-+            List<ServiceSubtaskPreachform> sspf2 = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(ssp);
-+
-+            serviceSubtaskPreachform.setSort(0L);
-+            if (CollectionUtils.isNotEmpty(sspf2)) {
-+                serviceSubtaskPreachform.setSort(Long.valueOf(sspf2.size()));
-+            }
-+            serviceSubtaskPreachform.setSendstate("2");
-+            serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
-+        }
-+
-     }
- 
-     //閫氳繃褰撳墠鏃堕棿锛屾媺鍙栫數璇濇�绘暟
-@@ -2665,6 +2533,72 @@
-     }
- 
-     public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq) {
--       return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);
-+        return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);
-     }
-+
-+
-+    /**
-+     * @param serviceSubtask
-+     * @param preachform
-+     * @param remark
-+     * @param failSendstate
-+     * @return
-+     */
-+    public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
-+        //灏嗙姸鎬佽缃负澶辫触
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
-+        //鑾峰彇璇ユ偅鑰呯殑鍙戦�佹柟寮忔�绘暟
-+        List<ServiceSubtaskPreachform> spSize = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+
-+        serviceSubtaskPreachform.setPreachform(preachform);
-+        //1:鏈彂閫佺姸鎬�
-+        serviceSubtaskPreachform.setSendstate("1");
-+        if (preachform.equals("3")) {
-+            //鐢佃瘽杩涘叆闃熷垪鍚庯紝鐘舵�佷細鍙樻垚2
-+            serviceSubtaskPreachform.setSendstate("2");
-+        }
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
-+            serviceSubtaskPreachform1.setSendstate(failSendstate);
-+            serviceSubtaskPreachform1.setRemark(remark);
-+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
-+
-+            //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
-+            if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
-+                serviceSubtask.setCurrentPreachform(preachform);
-+                serviceSubtask.setSendstate(5L);
-+                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+                return true;
-+            }
-+        }
-+
-+        serviceSubtask.setCurrentPreachform(preachform);
-+        serviceSubtask.setSendstate(3L);
-+        //濡傛灉绛変簬9锛屽垯璇存槑鐢佃瘽姝e父缁撴潫浜�
-+        if (failSendstate.equals("9")) serviceSubtask.setSendstate(6L);
-+        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
-+        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+        return true;
-+    }
-+
-+    private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) {
-+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+        serviceSubtaskPreachform.setSubid(subid);
-+        serviceSubtaskPreachform.setTaskid(taskid);
-+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+            String compensateTime = serviceSubtaskPreachforms.get(0).getCompensateTime();
-+            int hoursToAdd = Integer.valueOf(compensateTime) * 24;
-+            Calendar calendar = Calendar.getInstance();
-+            calendar.setTime(visitTime);
-+            calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd);
-+            Date newDate = calendar.getTime();
-+            return newDate;
-+        }
-+        return visitTime;
-+    }
- }
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport com.github.pagehelper.ISelect;\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.utils.PageUtils;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.service.IPatArchiveService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiImplicitParam;\r\nimport io.swagger.annotations.ApiImplicitParams;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.security.access.prepost.PreAuthorize;\r\nimport org.springframework.util.CollectionUtils;\r\nimport org.springframework.web.bind.annotation.*;\r\nimport org.springframework.web.multipart.MultipartFile;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.util.List;\r\nimport java.util.concurrent.Executor;\r\nimport java.util.concurrent.Executors;\r\n\r\n/**\r\n * 鎮h�呮。妗圕ontroller\r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\n@Slf4j\r\n@Api(description = \"鎮h�呮。妗圽")\r\n@RestController\r\n@RequestMapping(\"/smartor/patarchive\")\r\npublic class PatArchiveController extends BaseController {\r\n    @Autowired\r\n    private IPatArchiveService patArchiveService;\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呮。妗堝垪琛╘r\n     */\r\n    @ApiOperation(\"鏌ヨ鎮h�呮。妗堝垪琛╘")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:patarchive:list')\")\r\n    @PostMapping(\"/list\")\r\n    public TableDataInfo list(@RequestBody PatArchive patArchive) {\r\n        PageUtils.startPageByPost(patArchive.getPageNum(), patArchive.getPageSize());\r\n        List<PatArchive> list = patArchiveService.selectPatArchiveList(patArchive);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎嚭鎮h�呮。妗堝垪琛╘r\n     */\r\n    @ApiOperation(\"瀵煎嚭鎮h�呮。妗堝垪琛╘")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:patarchive:export')\")\r\n    @Log(title = \"鎮h�呮。妗圽", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, PatArchive patArchive) {\r\n        List<PatArchive> list = patArchiveService.selectPatArchiveList(patArchive);\r\n        ExcelUtil<PatArchive> util = new ExcelUtil<PatArchive>(PatArchive.class);\r\n        util.exportExcel(response, list, \"鎮h�呮。妗堟暟鎹甛");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鎮h�呮。妗堣缁嗕俊鎭痋r\n     */\r\n    @ApiOperation(\"鑾峰彇鎮h�呮。妗堣缁嗕俊鎭痋")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:patarchive:query')\")\r\n    @GetMapping(value = \"/getInfo/{patid}\")\r\n    @ApiImplicitParam(name = \"patid\", value = \"鎮h�卛d\")\r\n    public AjaxResult getInfo(@PathVariable(name = \"patid\") Long patid) {\r\n        return success(patArchiveService.selectPatArchiveByPatid(patid));\r\n    }\r\n\r\n    /**\r\n     * 鏂板鎮h�呮。妗圽r\n     */\r\n    @ApiOperation(\"鏂板鎮h�呮。妗圽")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:patarchive:add')\")\r\n    @Log(title = \"鎮h�呮。妗圽", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@RequestBody PatArchive patArchive) {\r\n        return toAjax(patArchiveService.insertPatArchive(patArchive));\r\n    }\r\n\r\n    /**\r\n     * 鏂板鎮h�呮。妗圽r\n     */\r\n    @ApiOperation(\"淇敼鎮h�呮。妗圽")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:patarchive:update')\")\r\n    @Log(title = \"鎮h�呮。妗圽", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/update\")\r\n    public AjaxResult update(@RequestBody PatArchive patArchive) {\r\n        return toAjax(patArchiveService.update(patArchive));\r\n    }\r\n\r\n    /**\r\n     * 鏂板鎴栦慨鏀规偅鑰呮。淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鎴栦慨鏀规偅鑰呮。淇℃伅\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:patarchive:edit')\")\r\n    @Log(title = \"鎮h�呮。妗圽", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/saveOrUpdatePatInfo\")\r\n    public AjaxResult saveOrUpdatePatInfo(@RequestBody PatArchiveVO patArchiveVO) {\r\n        SysUser user = getLoginUser().getUser();\r\n        patArchiveVO.setOrgid(user.getOrgid());\r\n        return toAjax(patArchiveService.saveOrUpdatePatInfo(patArchiveVO));\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鎮h�呮。妗圽r\n     */\r\n    @ApiOperation(\"鍒犻櫎鎮h�呮。妗圽")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:patarchive:remove')\")\r\n    @Log(title = \"鎮h�呮。妗圽", businessType = BusinessType.DELETE)\r\n    @GetMapping(\"/remove/{patids}\")\r\n    @ApiImplicitParam(name = \"patids\", value = \"鎮h�卛d闆嗗悎\", dataType = \"long\", dataTypeClass = Long.class)\r\n    public AjaxResult remove(@PathVariable Long[] patids) {\r\n        return toAjax(patArchiveService.deletePatArchiveByPatids(patids));\r\n    }\r\n\r\n\r\n    /**\r\n     * 瀵煎叆鎮h�呮枃浠跺鐞哱r\n     *\r\n     * @param multipartFile\r\n     */\r\n    @ApiOperation(\"瀵煎叆鎮h�呮枃浠跺鐞哱")\r\n    @PostMapping(\"/importFilehandle\")\r\n    @ApiImplicitParams({@ApiImplicitParam(name = \"tags\", value = \"鏍囩\"), @ApiImplicitParam(name = \"multipartFile\", value = \"涓婁紶鏂囦欢\")})\r\n    public AjaxResult importFilehandle(@RequestParam(\"tags\") String tags, @RequestParam(\"multipartFile\") MultipartFile multipartFile) {\r\n        Executor executor = Executors.newFixedThreadPool(3);\r\n        //鑾峰彇褰撳墠鐧婚檰浜篭r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        PatUpInfoVO patUpInfoVO = patArchiveService.importFilehandle(user, tags, multipartFile);\r\n        return success(patUpInfoVO);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎叆鎮h�呬俊鎭ā鏉縗r\n     *\r\n     * @param response\r\n     */\r\n    @ApiOperation(\"鎮h�呬俊鎭鍏ユā鏉縗")\r\n    @PostMapping(\"/patImportTemplate\")\r\n    public void patImportTemplate(HttpServletResponse response) {\r\n//        ExcelUtil<PatImportInfoVO> util = new ExcelUtil<PatImportInfoVO>(PatImportInfoVO.class);\r\n        ExcelUtil<PatArchive> util = new ExcelUtil<PatArchive>(PatArchive.class);\r\n        util.importTemplateExcel(response, \"鎮h�呬俊鎭鍏");\r\n    }\r\n\r\n    /**\r\n     * 瀵煎嚭鎮h�呴敊璇俊鎭痋r\n     *\r\n     * @param patArchiveList\r\n     */\r\n    @ApiOperation(\"瀵煎嚭鎮h�呴敊璇俊鎭痋")\r\n    @PostMapping(value = \"/exportErrPatInfo\")\r\n    public void exportErrPatInfo(HttpServletResponse response, @RequestBody List<PatImportInfoVO> patArchiveList) {\r\n\r\n        ExcelUtil<PatImportInfoVO> util = new ExcelUtil<PatImportInfoVO>(PatImportInfoVO.class);\r\n        util.exportExcel(response, patArchiveList, \"瀵煎嚭鎮h�呴敊璇俊鎭痋");\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呭垪琛╘r\n     */\r\n    @ApiOperation(\"鏌ヨ鎮h�呭垪琛╘")\r\n    @PostMapping(\"/patInfoByContion\")\r\n    public TableDataInfo patInfoByCondition(@RequestBody PatArchiveReq patArchive) {\r\n//       PageUtils.startPageByPost(patArchive.getPageNum(), patArchive.getPageSize());\r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        patArchive.setOrgid(user.getOrgid());\r\n        if (CollectionUtils.isEmpty(patArchive.getLeavehospitaldistrictcodes()) || patArchive.getLeavehospitaldistrictcodes().size() == 0) {\r\n            patArchive.setLeavehospitaldistrictcodes(null);\r\n        }\r\n        if (CollectionUtils.isEmpty(patArchive.getLeaveldeptcodes()) || patArchive.getLeaveldeptcodes().size() == 0) {\r\n            patArchive.setLeaveldeptcodes(null);\r\n        }\r\n        List<PatArchive> patArchives = patArchiveService.patInfoByContion(patArchive);\r\n        long count = PageUtils.count(new ISelect() {\r\n            @Override\r\n            public void doSelect() {\r\n                patArchive.setPn(null);\r\n                patArchive.setPs(null);\r\n                patArchiveService.patInfoByContion(patArchive);\r\n            }\r\n        });\r\n        return getDataTable2(count, patArchives);\r\n    }\r\n\r\n\r\n    /**\r\n     * 瀵煎嚭鎮h�呭垪琛ㄦ牴鎹潯浠禱r\n     */\r\n    @ApiOperation(\"瀵煎嚭鎮h�呭垪琛ㄦ牴鎹潯浠禱")\r\n    @PostMapping(\"/exportPatInfo\")\r\n    public void exportPpatInfo(HttpServletResponse response, @RequestBody PatArchiveReq patArchive) {\r\n        startPage();\r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        patArchive.setOrgid(user.getOrgid());\r\n        List<PatArchive> patArchives = patArchiveService.patInfoByContion(patArchive);\r\n        if (!CollectionUtils.isEmpty(patArchives)) {\r\n            for (int i = 0; i < patArchives.size(); i++) {\r\n                patArchives.get(i).setTag(patArchives.get(i).getTagList().toString());\r\n            }\r\n        }\r\n        ExcelUtil<PatArchive> util = new ExcelUtil<PatArchive>(PatArchive.class);\r\n        util.exportExcel(response, patArchives, \"鎮h�呮。妗堟暟鎹甛");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鎮h�呬俊鎭痋r\n     */\r\n    @ApiOperation(\"鑾峰彇鎮h�呬俊鎭痋")\r\n    @PostMapping(\"/getPatientInfo\")\r\n    public TableDataInfo getPatientInfo(@RequestBody PatArchiveReq patArchiveReq) {\r\n        PageUtils.startPageByPost(patArchiveReq.getPageNum(), patArchiveReq.getPageSize());\r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        patArchiveReq.setOrgid(user.getOrgid());\r\n        if (CollectionUtils.isEmpty(patArchiveReq.getLeavehospitaldistrictcodes()) || patArchiveReq.getLeavehospitaldistrictcodes().size() == 0) {\r\n            patArchiveReq.setLeavehospitaldistrictcodes(null);\r\n        }\r\n        if (CollectionUtils.isEmpty(patArchiveReq.getLeaveldeptcodes()) || patArchiveReq.getLeaveldeptcodes().size() == 0) {\r\n            patArchiveReq.setLeaveldeptcodes(null);\r\n        }\r\n        List<PatArchiveOthreInfo> patientInfo = patArchiveService.getPatientInfo(patArchiveReq);\r\n        long count = PageUtils.count(new ISelect() {\r\n            @Override\r\n            public void doSelect() {\r\n                patArchiveService.getPatientInfo(patArchiveReq);\r\n            }\r\n        });\r\n        return getDataTable2(count, patientInfo);\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鎮h�呬俊鎭痋r\n     */\r\n    @ApiOperation(\"鑾峰彇鎮h�呬俊鎭痋")\r\n    @PostMapping(\"/getPatientInfoQC\")\r\n    public TableDataInfo getPatientInfoQC(@RequestBody PatArchiveReq patArchiveReq) {\r\n        PageUtils.startPageByPost(patArchiveReq.getPageNum(), patArchiveReq.getPageSize());\r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        patArchiveReq.setOrgid(user.getOrgid());\r\n        if (CollectionUtils.isEmpty(patArchiveReq.getLeavehospitaldistrictcodes()) || patArchiveReq.getLeavehospitaldistrictcodes().size() == 0) {\r\n            patArchiveReq.setLeavehospitaldistrictcodes(null);\r\n        }\r\n        if (CollectionUtils.isEmpty(patArchiveReq.getLeaveldeptcodes()) || patArchiveReq.getLeaveldeptcodes().size() == 0) {\r\n            patArchiveReq.setLeaveldeptcodes(null);\r\n        }\r\n        List<PatArchiveOthreInfo> patientInfo = patArchiveService.getPatientInfoQC(patArchiveReq);\r\n        long count = PageUtils.count(new ISelect() {\r\n            @Override\r\n            public void doSelect() {\r\n                patArchiveService.getPatientInfoQC(patArchiveReq);\r\n            }\r\n        });\r\n        return getDataTable2(count, patientInfo);\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/PatArchiveController.java	(date 1759137107770)
-@@ -25,6 +25,7 @@
- 
- import javax.servlet.http.HttpServletResponse;
- import java.util.List;
-+import java.util.Map;
- import java.util.concurrent.Executor;
- import java.util.concurrent.Executors;
- 
-@@ -249,8 +250,9 @@
-      */
-     @ApiOperation("鑾峰彇鎮h�呬俊鎭�")
-     @PostMapping("/getPatientInfoQC")
--    public TableDataInfo getPatientInfoQC(@RequestBody PatArchiveReq patArchiveReq) {
--        PageUtils.startPageByPost(patArchiveReq.getPageNum(), patArchiveReq.getPageSize());
-+    public Map<String, Object> getPatientInfoQC(@RequestBody PatArchiveReq patArchiveReq) {
-+        patArchiveReq.setPageNum(PageUtils.getOffset(patArchiveReq.getPageNum(), patArchiveReq.getPageSize()));
-+
-         LoginUser loginUser = getLoginUser();
-         SysUser user = loginUser.getUser();
-         patArchiveReq.setOrgid(user.getOrgid());
-@@ -261,13 +263,18 @@
-             patArchiveReq.setLeaveldeptcodes(null);
-         }
-         List<PatArchiveOthreInfo> patientInfo = patArchiveService.getPatientInfoQC(patArchiveReq);
--        long count = PageUtils.count(new ISelect() {
--            @Override
--            public void doSelect() {
--                patArchiveService.getPatientInfoQC(patArchiveReq);
--            }
--        });
--        return getDataTable2(count, patientInfo);
-+
-+        patArchiveReq.setPageSize(null);
-+        patArchiveReq.setPageNum(null);
-+        List<PatArchiveOthreInfo> patientInfoQC = patArchiveService.getPatientInfoQC(patArchiveReq);
-+
-+//        long count = PageUtils.count(new ISelect() {
-+//            @Override
-+//            public void doSelect() {
-+//                patArchiveService.getPatientInfoQC(patArchiveReq);
-+//            }
-+//        });
-+        return getDataTable3(patientInfoQC.size(), patientInfo);
-     }
- 
- }
-Index: smartor/src/main/java/com/smartor/domain/PatArchiveReq.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\nimport org.apache.commons.lang3.builder.ToStringBuilder;\r\nimport org.apache.commons.lang3.builder.ToStringStyle;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 鎮h�呮。妗堣姹傚璞r\n *\r\n * @author ls\r\n * @date 2023-06-14\r\n */\r\n@ApiModel(value = \"PatArchiveReq\", description = \"鎮h�呮。妗堣姹傚璞")\r\n@Data\r\npublic class PatArchiveReq extends BaseEntity {\r\n    /**\r\n     * 濮撳悕\r\n     */\r\n    @ApiModelProperty(\"鎮h�卛d\")\r\n    @Excel(name = \" 鎮h�卛d \")\r\n    private String pid;\r\n\r\n    /**\r\n     * 濮撳悕\r\n     */\r\n    @ApiModelProperty(\"鎮h�卛d闆嗗悎\")\r\n    @Excel(name = \" 鎮h�卛d闆嗗悎锛堝湪閫夋嫨鐥呬汉鏃讹紝杩囨护宸茬粡閫夋嫨鐨刾ids锛� \")\r\n    private List<Integer> pids;\r\n\r\n    /**\r\n     * 濮撳悕\r\n     */\r\n    @ApiModelProperty(\"濮撳悕\")\r\n    @Excel(name = \" 濮撳悕 \")\r\n    private String name;\r\n\r\n    /**\r\n     * 鐤剧梾鍚嶇О\r\n     */\r\n    @ApiModelProperty(\"绂婚櫌鐤剧梾鍚嶇О\")\r\n    @Excel(name = \" 绂婚櫌鐤剧梾鍚嶇О \")\r\n    private String leavediagname;\r\n\r\n    @ApiModelProperty(\"鐤剧梾鍚嶇О\")\r\n    private String diagname;\r\n\r\n\r\n    /**\r\n     * 鏈嶅姟鏍囪瘑锛�0锛岄渶瑕侊紝1锛屼笉闇�瑕乗r\n     */\r\n    @ApiModelProperty(\"鏈嶅姟鏍囪瘑锛�0锛岄渶瑕侊紝1锛屼笉闇�瑕乗")\r\n    @Excel(name = \" 鏈嶅姟鏍囪瘑锛�0锛岄渶瑕侊紝1锛屼笉闇�瑕� \")\r\n    private String notrequiredFlag;\r\n\r\n    /**\r\n     * 涓嶈鏈嶅姟鐨勫師鍥燶r\n     */\r\n    @ApiModelProperty(\"涓嶈鏈嶅姟鐨勫師鍥燶")\r\n    @Excel(name = \" 涓嶈鏈嶅姟鐨勫師鍥� \")\r\n    private String notrequiredreason;\r\n\r\n\r\n    /**\r\n     * 涓嶈鏈嶅姟鐨勬搷浣滃尰鐢焅r\n     */\r\n    @ApiModelProperty(\"涓嶈鏈嶅姟鐨勬搷浣滃尰鐢焅")\r\n    private String filterDrname;\r\n\r\n\r\n    /**\r\n     * 涓嶈鏈嶅姟鐨勬搷浣滃尰鐢焅r\n     */\r\n    @ApiModelProperty(\"涓嶈鏈嶅姟鐨勬搷浣滃尰鐢熺紪鐮乗")\r\n    private String filterDrcode;\r\n\r\n\r\n    /**\r\n     * 璇佷欢鍙风爜\r\n     */\r\n    @ApiModelProperty(\"璇佷欢鍙风爜\")\r\n    @Excel(name = \" 璇佷欢鍙风爜 \")\r\n    private String idcardno;\r\n\r\n\r\n    /**\r\n     * 鎵嬫満鍙风爜\r\n     */\r\n    @ApiModelProperty(\"鎵嬫満鍙风爜\")\r\n    @Excel(name = \" 鎵嬫満鍙风爜 \")\r\n    private String telcode;\r\n\r\n    /**\r\n     * 绂婚櫌鐤剧梾缂栫爜\r\n     */\r\n    @ApiModelProperty(\"绂婚櫌鐤剧梾缂栫爜\")\r\n    @Excel(name = \" 绂婚櫌鐤剧梾缂栫爜 \")\r\n    private String leaveicd10code;\r\n\r\n    /**\r\n     * 鏍囩ID\r\n     */\r\n    @ApiModelProperty(\"鏍囩ID\")\r\n    private List<String> tagIds;\r\n\r\n\r\n    /**\r\n     * 鏌ョ湅鍏ㄩ儴  0   鏌ョ湅浣忛櫌  1  鏌ョ湅闂ㄨ瘖  2   鏌ョ湅浣撴  3   鏌ョ湅鍑洪櫌 4\r\n     */\r\n    @ApiModelProperty(value = \" 鏌ョ湅浣忛櫌  1  鏌ョ湅闂ㄨ瘖  2   鏌ョ湅浣撴  3   鏌ョ湅鍑洪櫌 4\")\r\n    private Long allhosp;\r\n\r\n\r\n    /**\r\n     * 鍖婚櫌鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖婚櫌鍚嶇О\")\r\n    private String hospitalname;\r\n\r\n    /**\r\n     * 鍖婚櫌鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"绉戝/鐥呭尯\")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 鍖婚櫌鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖荤敓\")\r\n    private String drname;\r\n\r\n    /**\r\n     * 鍖婚櫌缂栫爜\r\n     */\r\n    @ApiModelProperty(value = \"鍖婚櫌缂栫爜\")\r\n    private String drcode;\r\n\r\n\r\n    /**\r\n     * 鍖婚櫌鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖荤敓\")\r\n    private Date endtime;\r\n\r\n    /**\r\n     * 灏辫瘖缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"闂ㄨ瘖缂栧彿\")\r\n    private String visitno;\r\n\r\n    /**\r\n     * 闄㈠尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \" 闄㈠尯鍚嶇О \")\r\n    private String hospitaldistrictname;\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @ApiModelProperty(value = \"pn\")\r\n    @Excel(name = \"pn\")\r\n    private Integer pn;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(value = \"ps\")\r\n    @Excel(name = \"ps\")\r\n    private Integer ps;\r\n\r\n\r\n    /**\r\n     * 鏄惁杩囪檻\r\n     */\r\n    @ApiModelProperty(value = \" 鏄惁杩囪檻,榛樿false \")\r\n    private boolean isFilter = false;\r\n\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿\")\r\n    private String leavehospitaldistrictcode;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"绂婚櫌鐥呭尯缂栧彿\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 绉戝缂栫爜\r\n     */\r\n    @ApiModelProperty(value = \"绂婚櫌绉戝缂栫爜\")\r\n    private List<String> leaveldeptcodes;\r\n    /**\r\n     * 鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鐥呭尯缂栧彿\")\r\n    private List<String> hospitaldistrictcodes;\r\n\r\n    /**\r\n     * 绉戝缂栫爜\r\n     */\r\n    @ApiModelProperty(value = \"绉戝缂栫爜\")\r\n    @Excel(name = \" 绉戝缂栫爜 \")\r\n    private List<String> deptcodes;\r\n\r\n    /**\r\n     * 鍑哄叆闄㈡爣璇哱r\n     */\r\n    @ApiModelProperty(\"鍑哄叆闄㈡爣璇嗭細0鍏ラ櫌  1鍑洪櫌  \")\r\n    private Integer cry;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/PatArchiveReq.java b/smartor/src/main/java/com/smartor/domain/PatArchiveReq.java
---- a/smartor/src/main/java/com/smartor/domain/PatArchiveReq.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/PatArchiveReq.java	(date 1759057093733)
-@@ -112,7 +112,7 @@
- 
- 
-     /**
--     * 鏌ョ湅鍏ㄩ儴  0   鏌ョ湅浣忛櫌  1  鏌ョ湅闂ㄨ瘖  2   鏌ョ湅浣撴  3   鏌ョ湅鍑洪櫌 4
-+     * 鏌ョ湅鍏ㄩ儴  0   鏌ョ湅鍑洪櫌  1  鏌ョ湅闂ㄨ瘖  2   鏌ョ湅浣撴  3   鏌ョ湅鍦ㄩ櫌 4
-      */
-     @ApiModelProperty(value = " 鏌ョ湅浣忛櫌  1  鏌ョ湅闂ㄨ瘖  2   鏌ョ湅浣撴  3   鏌ョ湅鍑洪櫌 4")
-     private Long allhosp;
-Index: smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.PatArchiveMapper\">\r\n\r\n    <resultMap type=\"com.smartor.domain.PatArchive\" id=\"PatArchiveResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"patientno\" column=\"patientno\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"notrequiredFlag\" column=\"notrequired_flag\"/>\r\n        <result property=\"notrequiredreason\" column=\"notrequiredreason\"/>\r\n        <result property=\"patidHis\" column=\"patid_his\"/>\r\n        <result property=\"sdFlag\" column=\"sd_flag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"viptype\" column=\"viptype\"/>\r\n        <result property=\"name\" column=\"name\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"nation\" column=\"nation\"/>\r\n        <result property=\"nativePlace\" column=\"native_place\"/>\r\n        <result property=\"placeOfResidence\" column=\"place_of_residence\"/>\r\n        <result property=\"birthplace\" column=\"birthplace\"/>\r\n        <result property=\"idcardno\" column=\"idcardno\"/>\r\n        <result property=\"birthdate\" column=\"birthdate\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"age2\" column=\"age2\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"archivetime\" column=\"archivetime\"/>\r\n        <result property=\"archiveby\" column=\"archiveby\"/>\r\n        <result property=\"telcode\" column=\"telcode\"/>\r\n        <result property=\"relativetelcode\" column=\"relativetelcode\"/>\r\n        <result property=\"idcardtype\" column=\"idcardtype\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"openid\" column=\"openid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"dept\" column=\"deptname\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"tag\" column=\"tag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"bedNo\" column=\"bedno\"/>\r\n        <result property=\"inhosptime\" column=\"inhosptime\"/>\r\n        <result property=\"ageUnit\" column=\"age_unit\"/>\r\n        <result property=\"ageUnit2\" column=\"age_unit2\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"careFacilities\" column=\"care_facilities\"/>\r\n        <result property=\"casePath\" column=\"case_path\"/>\r\n        <result property=\"degreeOfEducation\" column=\"degree_of_education\"/>\r\n        <result property=\"maritalStatus\" column=\"marital_status\"/>\r\n        <result property=\"income\" column=\"income\"/>\r\n        <result property=\"medicareType\" column=\"medicare_type\"/>\r\n        <result property=\"carePerson\" column=\"care_person\"/>\r\n        <result property=\"casePersonAge\" column=\"case_person_age\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"filterDrname\" column=\"filter_drname\"/>\r\n        <result property=\"filterDrcode\" column=\"filter_drcode\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.smartor.domain.PatArchiveOthreInfo\" id=\"PatArchiveOthreInfoResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"notrequiredFlag\" column=\"notrequired_flag\"/>\r\n        <result property=\"notrequiredreason\" column=\"notrequiredreason\"/>\r\n        <result property=\"patientno\" column=\"patientno\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"patidHis\" column=\"patid_his\"/>\r\n        <result property=\"sdFlag\" column=\"sd_flag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"viptype\" column=\"viptype\"/>\r\n        <result property=\"name\" column=\"name\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"nation\" column=\"nation\"/>\r\n        <result property=\"nativePlace\" column=\"native_place\"/>\r\n        <result property=\"placeOfResidence\" column=\"place_of_residence\"/>\r\n        <result property=\"birthplace\" column=\"birthplace\"/>\r\n        <result property=\"idcardno\" column=\"idcardno\"/>\r\n        <result property=\"birthdate\" column=\"birthdate\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"age2\" column=\"age2\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"archivetime\" column=\"archivetime\"/>\r\n        <result property=\"archiveby\" column=\"archiveby\"/>\r\n        <result property=\"telcode\" column=\"telcode\"/>\r\n        <result property=\"relativetelcode\" column=\"relativetelcode\"/>\r\n        <result property=\"idcardtype\" column=\"idcardtype\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"openid\" column=\"openid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"dept\" column=\"deptname\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"tag\" column=\"tag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"bedNo\" column=\"bedno\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"endtime\" column=\"endtime\"/>\r\n        <result property=\"ageUnit\" column=\"age_unit\"/>\r\n        <result property=\"ageUnit2\" column=\"age_unit2\"/>\r\n        <result property=\"inhospno\" column=\"inhospno\"/>\r\n        <result property=\"nurseId\" column=\"nurse_id\"/>\r\n        <result property=\"nurseName\" column=\"nurse_name\"/>\r\n        <result property=\"outWayName\" column=\"out_way_name\"/>\r\n        <result property=\"outWayId\" column=\"out_way_id\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"leavediagname\" column=\"leavediagname\"/>\r\n        <result property=\"leaveicd10code\" column=\"leaveicd10code\"/>\r\n        <result property=\"filterDrname\" column=\"filter_drname\"/>\r\n        <result property=\"filterDrcode\" column=\"filter_drcode\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectPatArchiveVo\">\r\n        select id,\r\n               notrequired_flag,\r\n               notrequiredreason,\r\n               patientno,\r\n               filter_drname,\r\n               filter_drcode,\r\n               patid_his,\r\n               age_unit,\r\n               age_unit2,\r\n               sd_flag,\r\n               name,\r\n               sex,\r\n               idcardno,\r\n               birthdate,\r\n               age,\r\n               age2,\r\n               nation,\r\n               native_place,\r\n               place_of_residence,\r\n               birthplace,\r\n               sourcefrom,\r\n               archivetime,\r\n               archiveby,\r\n               telcode,\r\n               relativetelcode,\r\n               idcardtype,\r\n               orgid,\r\n               openid,\r\n               del_flag,\r\n               update_by,\r\n               update_time,\r\n               create_by,\r\n               create_time,\r\n               isupload,\r\n               pattype,\r\n               viptype,\r\n               upload_time,\r\n               care_facilities,\r\n               case_path,\r\n               degree_of_education,\r\n               marital_status,\r\n               income,\r\n               medicare_type,\r\n               care_person,\r\n               guid,\r\n               case_person_age\r\n        from pat_archive\r\n    </sql>\r\n\r\n    <select id=\"selectPatArchiveList\" parameterType=\"com.smartor.domain.PatArchive\" resultMap=\"PatArchiveResult\">\r\n        <include refid=\"selectPatArchiveVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"name != null  and name != ''\">and name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and idcardno = #{idcardno}</if>\r\n            <if test=\"sourcefrom != null \">and sourcefrom = #{sourcefrom}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and telcode = #{telcode}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"id != null  and id != ''\">and id = #{id}</if>\r\n            <if test=\"isupload != null \">and isupload = #{isupload}</if>\r\n            <if test=\"uploadTime != null \">and upload_time = #{uploadTime}</if>\r\n            <if test=\"viptype != null \">and viptype = #{viptype}</if>\r\n            <if test=\"pattype != null \">and pattype = #{pattype}</if>\r\n            <if test=\"patientno != null \">and patientno = #{patientno}</if>\r\n            <if test=\"patidHis != null \">and patid_his = #{patidHis}</if>\r\n            <if test=\"sdFlag != null \">and sd_flag = #{sdFlag}</if>\r\n            <if test=\"ageUnit != null \">and age_unit = #{ageUnit}</if>\r\n            <if test=\"age != null \">and age = #{age}</if>\r\n            <if test=\"age2 != null \">and age2 = #{age2}</if>\r\n            <if test=\"ageUnit2 != null \">and age_unit2 = #{ageUnit2}</if>\r\n            <if test=\"notrequiredFlag != null \">and notrequired_flag = #{notrequiredFlag}</if>\r\n            <if test=\"notrequiredreason != null \">and notrequiredreason = #{notrequiredreason}</if>\r\n            <if test=\"careFacilities != null \">and care_facilities = #{careFacilities}</if>\r\n            <if test=\"casePath != null \">and case_path = #{casePath}</if>\r\n            <if test=\"degreeOfEducation != null \">and degree_of_education = #{degreeOfEducation}</if>\r\n            <if test=\"maritalStatus != null \">and marital_status = #{maritalStatus}</if>\r\n            <if test=\"income != null \">and income = #{income}</if>\r\n            <if test=\"medicareType != null \">and medicare_type = #{medicareType}</if>\r\n            <if test=\"carePerson != null \">and care_person = #{carePerson}</if>\r\n            <if test=\"casePersonAge != null \">and case_person_age = #{casePersonAge}</if>\r\n            <if test=\"filterDrname != null \">and filter_drname = #{filterDrname}</if>\r\n            <if test=\"filterDrcode != null \">and filter_drcode = #{filterDrcode}</if>\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"patInfoByContion\" parameterType=\"com.smartor.domain.PatArchiveReq\" resultMap=\"PatArchiveResult\">\r\n        select\r\n        a.id,\r\n        a.age_unit,\r\n        a.age_unit2,\r\n        a.notrequired_flag,\r\n        a.notrequiredreason,\r\n        a.patientno,\r\n        a.patid_his,\r\n        a.sd_flag,\r\n        a.name,\r\n        a.sex,\r\n        c.tagname as tag,\r\n        a.idcardtype,\r\n        a.idcardno,\r\n        a.age,\r\n        a.age2,\r\n        a.telcode,\r\n        a.create_time,\r\n        a.update_time,\r\n        a.viptype,\r\n        a.birthdate,\r\n        a.care_facilities,\r\n        a.case_path,\r\n        a.degree_of_education,\r\n        a.marital_status,\r\n        a.income,\r\n        a.medicare_type,\r\n        a.care_person,\r\n        a.filter_drname,\r\n        a.filter_drcode,\r\n        a.case_person_age\r\n        from pat_archive a,pat_archivetag b ,base_tag c\r\n        <where>\r\n            a.del_flag=0 and\r\n            a.id = b.patid and b.tagid = c.tagid\r\n            <if test=\"filterDrname != null \">and filter_drname = #{filterDrname}</if>\r\n            <if test=\"filterDrcode != null \">and filter_drcode = #{filterDrcode}</if>\r\n            <if test=\"name != null  and name != ''\">and a.name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and idcardno = #{idcardno}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and telcode = #{telcode}</if>\r\n            <if test=\"tagIds != null  and tagIds != ''\">and c.tagid in\r\n                <foreach collection=\"tagIds\" item=\"tagId\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{tagId}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveByPatid\" parameterType=\"Long\" resultMap=\"PatArchiveResult\">\r\n        <include refid=\"selectPatArchiveVo\"/>\r\n        where id = #{id} and del_flag=0\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveByPatnos\" resultMap=\"PatArchiveResult\">\r\n        SELECT id, patientno\r\n        FROM pat_archive\r\n        WHERE patientno IN\r\n        <foreach item=\"patno\" collection=\"patnos\" open=\"(\" separator=\",\" close=\")\">\r\n            #{patno}\r\n        </foreach>\r\n    </select>\r\n\r\n    <insert id=\"insertPatArchiveSingle\" parameterType=\"com.smartor.domain.PatArchive\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"id\">\r\n        insert into pat_archive\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"patientno != null\">patientno,</if>\r\n            <if test=\"patidHis != null\">patid_his,</if>\r\n            <if test=\"sdFlag != null\">sd_flag,</if>\r\n            <if test=\"pattype != null\">pattype,</if>\r\n            <if test=\"viptype != null\">viptype,</if>\r\n            <if test=\"name != null\">name,</if>\r\n            <if test=\"sex != null\">sex,</if>\r\n            <if test=\"nation != null\">nation,</if>\r\n            <if test=\"nativePlace != null\">native_place,</if>\r\n            <if test=\"placeOfResidence != null\">place_of_residence,</if>\r\n            <if test=\"birthplace != null\">birthplace,</if>\r\n            <if test=\"idcardno != null\">idcardno,</if>\r\n            <if test=\"dduserid != null\">dduserid,</if>\r\n            <if test=\"pid != null\">pid,</if>\r\n            <if test=\"guid != null\">guid,</if>\r\n            <if test=\"birthdate != null\">birthdate,</if>\r\n            <if test=\"age != null\">age,</if>\r\n            <if test=\"age2 != null\">age2,</if>\r\n            <if test=\"sourcefrom != null\">sourcefrom,</if>\r\n            <if test=\"archivetime != null\">archivetime,</if>\r\n            <if test=\"archiveby != null\">archiveby,</if>\r\n            <if test=\"telcode != null\">telcode,</if>\r\n            <if test=\"relativetelcode != null\">relativetelcode,</if>\r\n            <if test=\"idcardtype != null\">idcardtype,</if>\r\n            <if test=\"orgid != null\">orgid,</if>\r\n            <if test=\"openid != null\">openid,</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag,</if>\r\n            <if test=\"updateBy != null\">update_by,</if>\r\n            <if test=\"updateTime != null\">update_time,</if>\r\n            <if test=\"createBy != null\">create_by,</if>\r\n            <if test=\"createTime != null\">create_time,</if>\r\n            <if test=\"isupload != null\">isupload,</if>\r\n            <if test=\"uploadTime != null\">upload_time,</if>\r\n            <if test=\"ageUnit != null\">age_unit,</if>\r\n            <if test=\"ageUnit2 != null\">age_unit2,</if>\r\n            <if test=\"notrequiredFlag != null \">notrequired_flag,</if>\r\n            <if test=\"notrequiredreason != null \">notrequiredreason,</if>\r\n            <if test=\"careFacilities != null \">care_facilities,</if>\r\n            <if test=\"casePath != null \">case_path,</if>\r\n            <if test=\"degreeOfEducation != null \">degree_of_education,</if>\r\n            <if test=\"maritalStatus != null \">marital_status,</if>\r\n            <if test=\"income != null \">income,</if>\r\n            <if test=\"medicareType != null \">medicare_type,</if>\r\n            <if test=\"carePerson != null \">care_person,</if>\r\n            <if test=\"casePersonAge != null \">case_person_age,</if>\r\n            <if test=\"filterDrname != null \">filter_drname,</if>\r\n            <if test=\"filterDrcode != null \">filter_drcode,</if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"patientno != null\">#{patientno},</if>\r\n            <if test=\"patidHis != null\">#{patidHis},</if>\r\n            <if test=\"sdFlag != null\">#{sdFlag},</if>\r\n            <if test=\"pattype != null\">#{pattype},</if>\r\n            <if test=\"viptype != null\">#{>viptype},</if>\r\n            <if test=\"name != null\">#{name},</if>\r\n            <if test=\"sex != null\">#{sex},</if>\r\n            <if test=\"nation != null\">#{nation},</if>\r\n            <if test=\"nativePlace != null\">#{nativePlace},</if>\r\n            <if test=\"placeOfResidence != null\">#{placeOfResidence},</if>\r\n            <if test=\"birthplace != null\">#{birthplace},</if>\r\n            <if test=\"idcardno != null\">#{idcardno},</if>\r\n            <if test=\"dduserid != null\">#{dduserid},</if>\r\n            <if test=\"pid != null\">#{pid},</if>\r\n            <if test=\"guid != null\">#{guid},</if>\r\n            <if test=\"birthdate != null\">#{birthdate},</if>\r\n            <if test=\"age != null\">#{age},</if>\r\n            <if test=\"age2 != null\">#{age2},</if>\r\n            <if test=\"sourcefrom != null\">#{sourcefrom},</if>\r\n            <if test=\"archivetime != null\">#{archivetime},</if>\r\n            <if test=\"archiveby != null\">#{archiveby},</if>\r\n            <if test=\"telcode != null\">#{telcode},</if>\r\n            <if test=\"relativetelcode != null\">#{relativetelcode},</if>\r\n            <if test=\"idcardtype != null\">#{idcardtype},</if>\r\n            <if test=\"orgid != null\">#{orgid},</if>\r\n            <if test=\"openid != null\">#{openid},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">#{delFlag},</if>\r\n            <if test=\"updateBy != null\">#{updateBy},</if>\r\n            <if test=\"updateTime != null\">#{updateTime},</if>\r\n            <if test=\"createBy != null\">#{createBy},</if>\r\n            <if test=\"createTime != null\">#{createTime},</if>\r\n            <if test=\"isupload != null\">#{isupload},</if>\r\n            <if test=\"uploadTime != null\">#{uploadTime},</if>\r\n            <if test=\"ageUnit != null\">#{ageUnit},</if>\r\n            <if test=\"ageUnit2 != null\">#{ageUnit2},</if>\r\n            <if test=\"notrequiredFlag != null \">#{notrequiredFlag},</if>\r\n            <if test=\"notrequiredreason != null \">#{notrequiredreason},</if>\r\n            <if test=\"careFacilities != null \">#{careFacilities},</if>\r\n            <if test=\"casePath != null \">#{casePath},</if>\r\n            <if test=\"degreeOfEducation != null \">#{degreeOfEducation},</if>\r\n            <if test=\"maritalStatus != null \">#{maritalStatus},</if>\r\n            <if test=\"income != null \">#{income},</if>\r\n            <if test=\"medicareType != null \">#{medicareType},</if>\r\n            <if test=\"carePerson != null \">#{carePerson},</if>\r\n            <if test=\"casePersonAge != null \">#{casePersonAge},</if>\r\n            <if test=\"filterDrname != null \">#{filterDrname},</if>\r\n            <if test=\"filterDrcode != null \">#{filterDrcode},</if>\r\n        </trim>\r\n    </insert>\r\n\r\n    <insert id=\"insertPatArchive\" useGeneratedKeys=\"true\" keyProperty=\"id\">\r\n        insert into\r\n        pat_archive(name,viptype,sex,idcardno,birthdate,place_of_residence,age,age2,sourcefrom,archivetime,archiveby,telcode,relativetelcode,idcardtype,orgid,openid,dduserid,update_by,update_time\r\n        ,create_by,create_time,isupload,upload_time,pattype,nation,birthplace,native_place,patientno,patid_his,sd_flag,age_unit,age_unit2,notrequired_flag,notrequiredreason,care_facilities,case_path,\r\n        degree_of_education,marital_status,income,medicare_type,care_person,case_person_age,filter_drname,filter_drcode)\r\n        values\r\n        <foreach item=\"item\" index=\"index\" collection=\"list\" separator=\",\">\r\n            (#{item.name},#{item.viptype},#{item.sex},#{item.idcardno},#{item.birthdate},#{item.placeOfResidence},#{item.age},#{item.age2},#{item.sourcefrom},#{item.archivetime},#{item.archiveby}\r\n            ,#{item.telcode},#{item.archiveby},#{item.idcardtype},#{item.orgid},#{item.openid},#{item.dduserid},#{item.updateBy},\r\n            #{item.updateTime},#{item.createBy},#{item.createTime},#{item.isupload},#{item.uploadTime},#{item.pattype},#{item.nation},#{item.birthplace},#{item.nativePlace},#{item.patientno},\r\n            #{item.patidHis},#{item.sdFlag},#{item.ageUnit},#{item.ageUnit2},#{item.notrequiredFlag},#{item.notrequiredreason}\r\n            ,#{item.careFacilities},#{item.casePath},#{item.degreeOfEducation},#{item.maritalStatus},#{item.income},#{item.medicareType},#{item.carePerson},#{item.casePersonAge},#{item.filterDrname},#{item.filterDrcode})\r\n        </foreach>\r\n    </insert>\r\n\r\n    <update id=\"updatePatArchive\" parameterType=\"com.smartor.domain.PatArchive\">\r\n        update pat_archive\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"name != null\">name = #{name},</if>\r\n            <if test=\"sex != null\">sex = #{sex},</if>\r\n            <if test=\"idcardno != null\">idcardno = #{idcardno},</if>\r\n            <if test=\"birthdate != null\">birthdate = #{birthdate},</if>\r\n            <if test=\"placeOfResidence != null\">place_of_residence = #{placeOfResidence},</if>\r\n            <if test=\"birthplace != null\">birthplace = #{birthplace},</if>\r\n            <if test=\"age != null\">age = #{age},</if>\r\n            <if test=\"age2 != null\">age2 = #{age2},</if>\r\n            <if test=\"sourcefrom != null\">sourcefrom = #{sourcefrom},</if>\r\n            <if test=\"archivetime != null\">archivetime = #{archivetime},</if>\r\n            <if test=\"archiveby != null\">archiveby = #{archiveby},</if>\r\n            <if test=\"telcode != null\">telcode = #{telcode},</if>\r\n            <if test=\"relativetelcode != null\">relativetelcode = #{relativetelcode},</if>\r\n            <if test=\"idcardtype != null\">idcardtype = #{idcardtype},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"openid != null\">openid = #{openid},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag = #{delFlag},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"viptype != null\">viptype = #{viptype},</if>\r\n            <if test=\"viptype != null\">patientno = #{patientno},</if>\r\n            <if test=\"viptype != null\">patid_his = #{patidHis},</if>\r\n            <if test=\"viptype != null\">sd_flag = #{sdFlag},</if>\r\n            <if test=\"ageUnit != null\">age_unit = #{ageUnit},</if>\r\n            <if test=\"ageUnit2 != null\">age_unit2 = #{ageUnit2},</if>\r\n            <if test=\"notrequiredFlag != null \">notrequired_flag = #{notrequiredFlag},</if>\r\n            <if test=\"notrequiredreason != null \">notrequiredreason = #{notrequiredreason},</if>\r\n            <if test=\"careFacilities != null \">care_facilities = #{careFacilities},</if>\r\n            <if test=\"casePath != null \">case_path = #{casePath},</if>\r\n            <if test=\"degreeOfEducation != null \">degree_of_education = #{degreeOfEducation},</if>\r\n            <if test=\"maritalStatus != null \">marital_status = #{maritalStatus},</if>\r\n            <if test=\"income != null \">income = #{income},</if>\r\n            <if test=\"medicareType != null \">medicare_type = #{medicareType},</if>\r\n            <if test=\"carePerson != null \">care_person = #{carePerson},</if>\r\n            <if test=\"casePersonAge != null \">case_person_age = #{casePersonAge},</if>\r\n            <if test=\"guid != null \">guid = #{guid},</if>\r\n            <if test=\"filterDrname != null \">filter_drname = #{filterDrname},</if>\r\n            <if test=\"filterDrcode != null \">filter_drcode = #{filterDrcode},</if>\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <update id=\"deletePatArchiveByPatid\" parameterType=\"Long\">\r\n        update pat_archive\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <update id=\"deletePatArchiveByPatids\" parameterType=\"String\">\r\n        update pat_archive set del_flag =1 where id in\r\n        <foreach item=\"id\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{id}\r\n        </foreach>\r\n    </update>\r\n\r\n    <select id=\"selectPatArchiveInfoByAllhosp\" parameterType=\"com.smartor.domain.PatArchiveReq\"\r\n            resultMap=\"PatArchiveOthreInfoResult\">\r\n\r\n        SELECT\r\n        a.id,\r\n        a.age_unit,\r\n        a.age_unit2,\r\n        a.patid_his,\r\n        a.notrequired_flag,\r\n        a.notrequiredreason,\r\n        a.sd_flag,\r\n        a.patientno,\r\n        a.NAME,\r\n        a.sex,\r\n        a.nation,\r\n        a.native_place,\r\n        a.place_of_residence,\r\n        a.birthplace,\r\n        a.idcardno,\r\n        a.birthdate,\r\n        a.age2,\r\n        a.age,\r\n        a.sourcefrom,\r\n        a.archivetime,\r\n        a.archiveby,\r\n        a.telcode,\r\n        a.relativetelcode,\r\n        a.idcardtype,\r\n        a.orgid,\r\n        a.openid,\r\n        a.del_flag,\r\n        a.update_by,\r\n        a.update_time,\r\n        a.create_by,\r\n        a.create_time,\r\n        a.isupload,\r\n        a.upload_time,\r\n        a.viptype,\r\n        a.pattype,\r\n        a.filter_drname,\r\n        a.filter_drcode,\r\n        b.tagname AS tag,\r\n        b.tagid AS tagid\r\n        FROM\r\n        pat_archive a\r\n        LEFT JOIN pat_archivetag b ON a.id = b.patid AND b.del_flag = 0\r\n        <where>\r\n            a.del_flag = 0\r\n            and a.orgid = #{orgid}\r\n            <if test=\"name != null  and name != ''\">and a.name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and a.idcardno = #{idcardno}</if>\r\n            <if test=\"notrequiredFlag != null  and notrequiredFlag != ''\">and a.notrequired_flag = #{notrequiredFlag}\r\n            </if>\r\n            <if test=\"pid != null  and pid != ''\">and a.id = #{pid}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and a.telcode = #{telcode}</if>\r\n            <if test=\"tagIds != null  and tagIds != ''\">and b.tagid in\r\n                <foreach collection=\"tagIds\" item=\"tagId\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{tagId}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        order by a.update_time desc\r\n        <if test=\"pn != null  and ps != null\"> limit ${pn},${ps} </if>\r\n\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatArchiveInfoByInhosp\" parameterType=\"com.smartor.domain.PatArchiveReq\"\r\n            resultMap=\"PatArchiveOthreInfoResult\">\r\n        select\r\n        a.id,\r\n        a.age_unit,\r\n        a.age_unit2,\r\n        a.inhospno,\r\n        a.notrequired_flag,\r\n        a.notrequiredreason,\r\n        a.patid_his,\r\n        a.sd_flag,\r\n        a.patientno,\r\n        a.NAME,\r\n        d.deptname,\r\n        d.deptcode,\r\n        d.drcode,\r\n        d.drname,\r\n        a.sex,\r\n        a.nation,\r\n        a.native_place,\r\n        a.place_of_residence,\r\n        a.birthplace,\r\n        a.idcardno,\r\n        a.birthdate,\r\n        a.age,\r\n        a.age2,\r\n        a.sourcefrom,\r\n        a.archivetime,\r\n        a.archiveby,\r\n        a.telcode,\r\n        a.relativetelcode,\r\n        a.idcardtype,\r\n        a.orgid,\r\n        a.viptype,\r\n        a.openid,\r\n        a.del_flag,\r\n        a.update_by,\r\n        a.update_time,\r\n        a.create_by,\r\n        a.create_time,\r\n        a.isupload,\r\n        a.upload_time,\r\n        a.pattype,\r\n        a.filter_drname,\r\n        a.filter_drcode,\r\n        d.bed_no,\r\n        d.starttime,\r\n        d.endtime,\r\n        d.nurse_name,\r\n        d.nurse_id,\r\n        d.out_way_id,\r\n        d.leavehospitaldistrictname AS leavehospitaldistrictname,\r\n        d.leavehospitaldistrictcode AS leavehospitaldistrictcode,\r\n        t.tagname\r\n        FROM\r\n        pat_med_inhosp d\r\n        JOIN pat_archive a ON a.id = d.patid\r\n        LEFT JOIN ( SELECT patid, GROUP_CONCAT( tagname ) AS tagname FROM pat_archivetag where del_flag=0 GROUP BY patid\r\n        ) t ON t.patid =\r\n        d.patid\r\n        <where>\r\n            d.del_flag != 1\r\n            AND a.del_flag != 1\r\n            and d.orgid = #{orgid}\r\n            <if test=\"name != null  and name != ''\">and a.name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and a.idcardno = #{idcardno}</if>\r\n            <if test=\"pid != null  and pid != ''\">and a.id = #{id}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and a.telcode = #{telcode}</if>\r\n            <if test=\"notrequiredFlag != null  and notrequiredFlag != ''\">and a.notrequired_flag = #{notrequiredFlag}\r\n            </if>\r\n            <if test=\"hospitalname != null and hospitalname != ''\">\r\n                AND d.hospitalname = #{hospitalname}\r\n            </if>\r\n            <if test=\"hospitaldistrictname != null and hospitaldistrictname != ''\">\r\n                AND d.hospitaldistrictname LIKE concat('%',#{hospitaldistrictname}, '%')\r\n            </if>\r\n            <if test=\"leaveicd10code != null and leaveicd10code != ''\">\r\n                AND d.leaveicd10code LIKE concat('%',#{leaveicd10code}, '%')\r\n            </if>\r\n            <if test=\"endtime != null\">\r\n                AND d.endtime = #{endtime}\r\n            </if>\r\n            <if test=\"visitno != null and visitno != ''\">\r\n                AND d.inhospno = #{visitno}\r\n            </if>\r\n            <if test=\"deptname != null and deptname != ''\">\r\n                and d.deptname LIKE concat('%', #{deptname}, '%')\r\n            </if>\r\n            <if test=\"drname != null and drname != ''\">\r\n                AND d.drname LIKE concat('%',#{drname}, '%')\r\n            </if>\r\n            <if test=\"diagname != null and diagname != ''\">\r\n                AND d.diagname LIKE concat('%',#{diagname}, '%')\r\n            </if>\r\n            <if test=\"deptname != null and deptname != ''\">\r\n                AND d.deptname LIKE concat('%',#{deptname}, '%')\r\n            </if>\r\n            <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0\">\r\n                AND d.leavehospitaldistrictcode IN\r\n                <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leavehospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"leaveldeptcodes != null and leaveldeptcodes.size() > 0\">\r\n                AND d.leaveldeptcode IN\r\n                <foreach collection=\"leaveldeptcodes\" item=\"leaveldeptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leaveldeptcode}\r\n                </foreach>\r\n            </if>\r\n\r\n            <if test=\"hospitaldistrictcodes != null and hospitaldistrictcodes.size()>0\">\r\n                AND d.hospitaldistrictcode IN\r\n                <foreach collection=\"hospitaldistrictcodes\" item=\"hospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{hospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n                AND d.deptcode IN\r\n                <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"pids != null\">\r\n                AND a.id NOT IN\r\n                <foreach collection=\"pids\" item=\"pid\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{pid}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"isFilter == true\">\r\n                AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)\r\n            </if>\r\n        </where>\r\n        order by a.update_time desc\r\n        <if test=\"pn != null  and ps != null\"> limit ${pn},${ps} </if>\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveInfoByOuthosp\" parameterType=\"com.smartor.domain.PatArchiveReq\"\r\n            resultMap=\"PatArchiveOthreInfoResult\">\r\n        select\r\n        a.id,\r\n        a.age_unit,\r\n        a.age_unit2,\r\n        a.patid_his,\r\n        a.sd_flag,\r\n        a.patientno,\r\n        a.notrequired_flag,\r\n        a.notrequiredreason,\r\n        d.deptname,\r\n        d.deptcode,\r\n        d.drcode,\r\n        d.drname,\r\n        a.name,\r\n        a.sex,\r\n        a.nation,\r\n        a.native_place,\r\n        a.place_of_residence,\r\n        a.birthplace,\r\n        a.idcardno,\r\n        a.birthdate,\r\n        a.age,\r\n        a.age2,\r\n        a.viptype,\r\n        a.sourcefrom,\r\n        a.archivetime,\r\n        a.archiveby,\r\n        a.telcode,\r\n        a.relativetelcode,\r\n        a.idcardtype,\r\n        a.orgid,\r\n        a.openid,\r\n        a.del_flag,\r\n        a.update_by,\r\n        a.update_time,\r\n        a.create_by,\r\n        a.create_time,\r\n        a.isupload,\r\n        a.upload_time,\r\n        a.filter_drname,\r\n        a.filter_drcode,\r\n        t.tagname,\r\n        a.pattype\r\n        from pat_med_outhosp d JOIN pat_archive a ON a.id = d.patid\r\n        LEFT JOIN ( SELECT patid, GROUP_CONCAT( tagname ) AS tagname FROM pat_archivetag where del_flag=0 GROUP BY patid\r\n        ) t ON t.patid =\r\n        d.patid\r\n        <where>\r\n            d.del_flag != 1\r\n            AND a.del_flag != 1\r\n            and d.orgid = #{orgid}\r\n            <if test=\"pid != null  and pid != ''\">and a.id = #{pid}</if>\r\n            <if test=\"name != null  and name != ''\">and a.name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and a.idcardno = #{idcardno}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and a.telcode = #{telcode}</if>\r\n            <if test=\"hospitaldistrictname != null and hospitaldistrictname != ''\">\r\n                AND d.hospitaldistrictname LIKE concat('%',#{hospitaldistrictname}, '%')\r\n            </if>\r\n            <if test=\"notrequiredFlag != null  and notrequiredFlag != ''\">and a.notrequired_flag = #{notrequiredFlag}\r\n            </if>\r\n            <if test=\"diagname != null and diagname != ''\">\r\n                AND d.diagname LIKE concat('%',#{diagname}, '%')\r\n            </if>\r\n            <if test=\"hospitalname != null and hospitalname != ''\">\r\n                AND d.hospitalname = #{hospitalname}\r\n            </if>\r\n            <if test=\"visitno != null and visitno != ''\">\r\n                AND d.outhospno = #{visitno}\r\n            </if>\r\n            <if test=\"deptname != null and deptname != ''\">\r\n                and d.deptname LIKE concat('%', #{deptname}, '%')\r\n            </if>\r\n            <if test=\"drname != null and drname != ''\">\r\n                AND d.drname LIKE concat('%',#{drname}, '%')\r\n            </if>\r\n            <if test=\"pids != null\">\r\n                AND a.id NOT IN\r\n                <foreach collection=\"pids\" item=\"pid\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{pid}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"isFilter == true\">\r\n                AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)\r\n            </if>\r\n        </where>\r\n        order by a.update_time desc\r\n        <if test=\"pn != null  and ps != null\"> limit ${pn},${ps} </if>\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveInfoByPhysical\" parameterType=\"com.smartor.domain.PatArchiveReq\"\r\n            resultMap=\"PatArchiveOthreInfoResult\">\r\n\r\n        select\r\n        a.id,\r\n        a.age_unit,\r\n        a.age_unit2,\r\n        a.name,\r\n        a.notrequired_flag,\r\n        a.notrequiredreason,\r\n        a.patid_his,\r\n        a.sd_flag,\r\n        a.patientno,\r\n        a.sex,\r\n        d.deptname,\r\n        d.deptcode,\r\n        d.drcode,\r\n        d.drname,\r\n        a.nation,\r\n        a.native_place,\r\n        a.place_of_residence,\r\n        a.birthplace,\r\n        a.viptype,\r\n        a.idcardno,\r\n        a.birthdate,\r\n        a.age,\r\n        a.age2,\r\n        a.sourcefrom,\r\n        a.archivetime,\r\n        a.archiveby,\r\n        a.telcode,\r\n        a.relativetelcode,\r\n        a.idcardtype,\r\n        a.orgid,\r\n        a.openid,\r\n        a.del_flag,\r\n        a.update_by,\r\n        a.update_time,\r\n        a.create_by,\r\n        a.create_time,\r\n        a.isupload,\r\n        a.upload_time,\r\n        a.filter_drname,\r\n        a.filter_drcode,\r\n        t.tagname,\r\n        a.pattype\r\n        from pat_med_physical d JOIN pat_archive a ON a.id = d.patid\r\n        LEFT JOIN ( SELECT patid, GROUP_CONCAT( tagname ) AS tagname FROM pat_archivetag where del_flag=0 GROUP BY patid\r\n        ) t ON t.patid =\r\n        d.patid\r\n        <where>\r\n            d.del_flag != 1\r\n            AND a.del_flag != 1\r\n            and d.orgid = #{orgid}\r\n            <if test=\"pid != null  and pid != ''\">and a.id = #{pid}</if>\r\n            <if test=\"name != null  and name != ''\">and a.name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and a.idcardno = #{idcardno}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and a.telcode = #{telcode}</if>\r\n            <if test=\"hospitaldistrictname != null and hospitaldistrictname != ''\">\r\n                AND d.hospitaldistrictname LIKE concat('%',#{hospitaldistrictname}, '%')\r\n            </if>\r\n            <if test=\"diagname != null and diagname != ''\">\r\n                AND d.diagname LIKE concat('%',#{diagname}, '%')\r\n            </if>\r\n            <if test=\"notrequiredFlag != null  and notrequiredFlag != ''\">and a.notrequired_flag = #{notrequiredFlag}\r\n            </if>\r\n            <if test=\"hospitalname != null and hospitalname != ''\">\r\n                AND d.hospitalname = #{hospitalname}\r\n            </if>\r\n\r\n            <if test=\"visitno != null and visitno != ''\">\r\n                AND d.physno = #{visitno}\r\n            </if>\r\n            <if test=\"deptname != null and deptname != ''\">\r\n                and d.deptname LIKE concat('%', #{deptname}, '%')\r\n            </if>\r\n            <if test=\"drname != null and drname != ''\">\r\n                AND d.drname LIKE concat('%',#{drname}, '%')\r\n            </if>\r\n            <if test=\"pids != null\">\r\n                AND a.id NOT IN\r\n                <foreach collection=\"pids\" item=\"pid\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{pid}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"isFilter == true\">\r\n                AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)\r\n            </if>\r\n        </where>\r\n        order by a.update_time desc\r\n        <if test=\"pn != null  and ps != null\"> limit ${pn},${ps} </if>\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveInfoByInhospQC\" parameterType=\"com.smartor.domain.PatArchiveReq\"\r\n            resultMap=\"PatArchiveOthreInfoResult\">\r\n        select * from (\r\n        select\r\n        a.idcardno,\r\n        a.id,\r\n        a.age_unit,\r\n        a.age_unit2,\r\n        a.inhospno,\r\n        a.notrequired_flag,\r\n        a.notrequiredreason,\r\n        a.patid_his,\r\n        a.sd_flag,\r\n        a.patientno,\r\n        a.NAME,\r\n        d.deptname,\r\n        d.deptcode,\r\n        d.drcode,\r\n        d.drname,\r\n        d.leavediagname,\r\n        d.leaveicd10code,\r\n        a.sex,\r\n        a.nation,\r\n        a.native_place,\r\n        a.place_of_residence,\r\n        a.birthplace,\r\n        a.birthdate,\r\n        a.age,\r\n        a.age2,\r\n        a.sourcefrom,\r\n        a.archivetime,\r\n        a.archiveby,\r\n        a.telcode,\r\n        a.relativetelcode,\r\n        a.idcardtype,\r\n        a.orgid,\r\n        a.viptype,\r\n        a.openid,\r\n        a.del_flag,\r\n        a.update_by,\r\n        a.update_time,\r\n        a.create_by,\r\n        a.create_time,\r\n        a.isupload,\r\n        a.upload_time,\r\n        a.pattype,\r\n        a.filter_drname,\r\n        a.filter_drcode,\r\n        d.bed_no,\r\n        d.starttime,\r\n        d.endtime,\r\n        d.nurse_name,\r\n        d.nurse_id,\r\n        d.out_way_id,\r\n        d.leavehospitaldistrictname AS leavehospitaldistrictname,\r\n        d.leavehospitaldistrictcode AS leavehospitaldistrictcode,\r\n        t.tagname\r\n        FROM\r\n        pat_med_inhosp d\r\n        JOIN pat_archive a ON a.id = d.patid\r\n        LEFT JOIN ( SELECT patid, GROUP_CONCAT( tagname ) AS tagname FROM pat_archivetag where del_flag=0 GROUP BY patid\r\n        ) t ON t.patid =\r\n        d.patid\r\n        <where>\r\n            d.del_flag != 1\r\n            AND a.del_flag != 1\r\n            and d.orgid = #{orgid}\r\n            <if test=\"name != null  and name != ''\">and a.name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and a.idcardno = #{idcardno}</if>\r\n            <if test=\"pid != null  and pid != ''\">and a.id = #{id}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and a.telcode = #{telcode}</if>\r\n            <if test=\"notrequiredFlag != null  and notrequiredFlag != ''\">and a.notrequired_flag = #{notrequiredFlag}\r\n            </if>\r\n            <if test=\"hospitalname != null and hospitalname != ''\">\r\n                AND d.hospitalname = #{hospitalname}\r\n            </if>\r\n            <if test=\"hospitaldistrictname != null and hospitaldistrictname != ''\">\r\n                AND d.hospitaldistrictname LIKE concat('%',#{hospitaldistrictname}, '%')\r\n            </if>\r\n            <if test=\"leaveicd10code != null and leaveicd10code != ''\">\r\n                AND d.leaveicd10code LIKE concat('%',#{leaveicd10code}, '%')\r\n            </if>\r\n            <if test=\"endtime != null\">\r\n                AND d.endtime = #{endtime}\r\n            </if>\r\n            <if test=\"drname != null and drname != ''\">\r\n                AND d.drname LIKE concat('%',#{drname}, '%')\r\n            </if>\r\n            <if test=\"drcode != null\">\r\n                AND d.drcode = #{drcode}\r\n            </if>\r\n            <if test=\"cry != null and cry == 0 \">and d.endtime is null</if>\r\n            <if test=\"cry != null and cry == 1 \">and d.endtime is not null</if>\r\n            <if test=\"visitno != null and visitno != ''\">\r\n                AND d.inhospno = #{visitno}\r\n            </if>\r\n            <if test=\"deptname != null and deptname != ''\">\r\n                and d.deptname LIKE concat('%', #{deptname}, '%')\r\n            </if>\r\n            <if test=\"leavediagname != null and leavediagname != ''\">\r\n                AND d.leavediagname LIKE concat('%',#{leavediagname}, '%')\r\n            </if>\r\n            <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0\">\r\n                AND d.leavehospitaldistrictcode IN\r\n                <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leavehospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"leaveldeptcodes != null and leaveldeptcodes.size() > 0\">\r\n                AND d.leaveldeptcode IN\r\n                <foreach collection=\"leaveldeptcodes\" item=\"leaveldeptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leaveldeptcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"hospitaldistrictcodes != null and hospitaldistrictcodes.size()>0\">\r\n                AND d.hospitaldistrictcode IN\r\n                <foreach collection=\"hospitaldistrictcodes\" item=\"hospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{hospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n                AND d.deptcode IN\r\n                <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n\r\n            <if test=\"pids != null\">\r\n                AND a.id NOT IN\r\n                <foreach collection=\"pids\" item=\"pid\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{pid}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"isFilter == true\">\r\n                AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)\r\n            </if>\r\n        </where>\r\n        order by a.id,a.update_time desc ) as tmp order by endtime desc\r\n        <if test=\"pn != null  and ps != null\"> limit ${pn},${ps} </if>\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveInfoByOuthospQC\" parameterType=\"com.smartor.domain.PatArchiveReq\"\r\n            resultMap=\"PatArchiveOthreInfoResult\">\r\n\r\n        select\r\n        a.idcardno,\r\n        a.id,\r\n        a.age_unit,\r\n        a.age_unit2,\r\n        a.patid_his,\r\n        a.sd_flag,\r\n        a.patientno,\r\n        a.notrequired_flag,\r\n        a.notrequiredreason,\r\n        d.deptname,\r\n        d.deptcode,\r\n        d.drcode,\r\n        d.drname,\r\n        a.name,\r\n        a.sex,\r\n        a.nation,\r\n        a.native_place,\r\n        a.place_of_residence,\r\n        a.birthplace,\r\n        a.birthdate,\r\n        a.age,\r\n        a.age2,\r\n        a.viptype,\r\n        a.sourcefrom,\r\n        a.archivetime,\r\n        a.archiveby,\r\n        a.telcode,\r\n        a.relativetelcode,\r\n        a.idcardtype,\r\n        a.orgid,\r\n        a.openid,\r\n        a.del_flag,\r\n        a.update_by,\r\n        a.update_time,\r\n        a.create_by,\r\n        a.create_time,\r\n        a.isupload,\r\n        a.upload_time,\r\n        a.filter_drname,\r\n        a.filter_drcode,\r\n        t.tagname,\r\n        a.pattype\r\n        from pat_med_outhosp d JOIN pat_archive a ON a.id = d.patid\r\n        LEFT JOIN ( SELECT patid, GROUP_CONCAT( tagname ) AS tagname FROM pat_archivetag where del_flag=0 GROUP BY patid\r\n        ) t ON t.patid =\r\n        d.patid\r\n        <where>\r\n            d.del_flag != 1\r\n            AND a.del_flag != 1\r\n            and d.orgid = #{orgid}\r\n            <if test=\"pid != null  and pid != ''\">and a.id = #{pid}</if>\r\n            <if test=\"name != null  and name != ''\">and a.name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and a.idcardno = #{idcardno}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and a.telcode = #{telcode}</if>\r\n            <if test=\"hospitaldistrictname != null and hospitaldistrictname != ''\">\r\n                AND d.hospitaldistrictname LIKE concat('%',#{hospitaldistrictname}, '%')\r\n            </if>\r\n            <if test=\"notrequiredFlag != null  and notrequiredFlag != ''\">and a.notrequired_flag = #{notrequiredFlag}\r\n            </if>\r\n            <if test=\"leavediagname != null and leavediagname != ''\">\r\n                AND d.diagname LIKE concat('%',#{leavediagname}, '%')\r\n            </if>\r\n            <if test=\"hospitalname != null and hospitalname != ''\">\r\n                AND d.hospitalname = #{hospitalname}\r\n            </if>\r\n            <if test=\"visitno != null and visitno != ''\">\r\n                AND d.outhospno = #{visitno}\r\n            </if>\r\n            <if test=\"deptname != null and deptname != ''\">\r\n                and d.deptname LIKE concat('%', #{deptname}, '%')\r\n            </if>\r\n            <if test=\"drname != null and drname != ''\">\r\n                AND d.drname LIKE concat('%',#{drname}, '%')\r\n            </if>\r\n            <if test=\"drcode != null\">\r\n                AND d.drcode = #{drcode}\r\n            </if>\r\n            <if test=\"pids != null\">\r\n                AND a.id NOT IN\r\n                <foreach collection=\"pids\" item=\"pid\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{pid}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"isFilter == true\">\r\n                AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)\r\n            </if>\r\n        </where>\r\n        order by a.update_time desc\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveInfoByPhysicalQC\" parameterType=\"com.smartor.domain.PatArchiveReq\"\r\n            resultMap=\"PatArchiveOthreInfoResult\">\r\n\r\n        select\r\n        a.idcardno,\r\n        a.id,\r\n        a.age_unit,\r\n        a.age_unit2,\r\n        a.name,\r\n        a.notrequired_flag,\r\n        a.notrequiredreason,\r\n        a.patid_his,\r\n        a.sd_flag,\r\n        a.patientno,\r\n        a.sex,\r\n        d.deptname,\r\n        d.deptcode,\r\n        d.drcode,\r\n        d.drname,\r\n        a.nation,\r\n        a.native_place,\r\n        a.place_of_residence,\r\n        a.birthplace,\r\n        a.viptype,\r\n        a.birthdate,\r\n        a.age,\r\n        a.filter_drname,\r\n        a.filter_drcode,\r\n        a.age2,\r\n        a.sourcefrom,\r\n        a.archivetime,\r\n        a.archiveby,\r\n        a.telcode,\r\n        a.relativetelcode,\r\n        a.idcardtype,\r\n        a.orgid,\r\n        a.openid,\r\n        a.del_flag,\r\n        a.update_by,\r\n        a.update_time,\r\n        a.create_by,\r\n        a.create_time,\r\n        a.isupload,\r\n        a.upload_time,\r\n        t.tagname,\r\n        a.pattype\r\n        from pat_med_physical d JOIN pat_archive a ON a.id = d.patid\r\n        LEFT JOIN ( SELECT patid, GROUP_CONCAT( tagname ) AS tagname FROM pat_archivetag where del_flag=0 GROUP BY patid\r\n        ) t ON t.patid =\r\n        d.patid\r\n        <where>\r\n            d.del_flag != 1\r\n            AND a.del_flag != 1\r\n            and d.orgid = #{orgid}\r\n            <if test=\"pid != null  and pid != ''\">and a.id = #{pid}</if>\r\n            <if test=\"name != null  and name != ''\">and a.name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and a.idcardno = #{idcardno}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and a.telcode = #{telcode}</if>\r\n            <if test=\"hospitaldistrictname != null and hospitaldistrictname != ''\">\r\n                AND d.hospitaldistrictname LIKE concat('%',#{hospitaldistrictname}, '%')\r\n            </if>\r\n            <if test=\"diagname != null and diagname != ''\">\r\n                AND d.diagname LIKE concat('%',#{diagname}, '%')\r\n            </if>\r\n            <if test=\"notrequiredFlag != null  and notrequiredFlag != ''\">and a.notrequired_flag = #{notrequiredFlag}\r\n            </if>\r\n            <if test=\"hospitalname != null and hospitalname != ''\">\r\n                AND d.hospitalname = #{hospitalname}\r\n            </if>\r\n\r\n            <if test=\"visitno != null and visitno != ''\">\r\n                AND d.physno = #{visitno}\r\n            </if>\r\n            <if test=\"deptname != null and deptname != ''\">\r\n                and d.deptname LIKE concat('%', #{deptname}, '%')\r\n            </if>\r\n            <if test=\"drname != null and drname != ''\">\r\n                AND d.drname LIKE concat('%',#{drname}, '%')\r\n            </if>\r\n            <if test=\"pids != null\">\r\n                AND a.id NOT IN\r\n                <foreach collection=\"pids\" item=\"pid\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{pid}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"isFilter == true\">\r\n                AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)\r\n            </if>\r\n        </where>\r\n        order by a.update_time desc\r\n    </select>\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml b/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/resources/mapper/smartor/PatArchiveMapper.xml	(date 1759136058441)
-@@ -519,7 +519,7 @@
-             </if>
-         </where>
-         order by a.update_time desc
--        <if test="pn != null  and ps != null"> limit ${pn},${ps} </if>
-+        <if test="pn != null  and ps != null">limit ${pn},${ps}</if>
- 
-     </select>
- 
-@@ -660,8 +660,9 @@
-                 AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)
-             </if>
-         </where>
--        order by a.update_time desc
--        <if test="pn != null  and ps != null"> limit ${pn},${ps} </if>
-+        -- order by a.update_time desc
-+        <if test="pageSize != null  and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if>
-+
-     </select>
- 
-     <select id="selectPatArchiveInfoByOuthosp" parameterType="com.smartor.domain.PatArchiveReq"
-@@ -751,8 +752,8 @@
-                 AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)
-             </if>
-         </where>
--        order by a.update_time desc
--        <if test="pn != null  and ps != null"> limit ${pn},${ps} </if>
-+        -- order by a.update_time desc
-+        <if test="pageSize != null  and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if>
-     </select>
- 
-     <select id="selectPatArchiveInfoByPhysical" parameterType="com.smartor.domain.PatArchiveReq"
-@@ -844,8 +845,8 @@
-                 AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)
-             </if>
-         </where>
--        order by a.update_time desc
--        <if test="pn != null  and ps != null"> limit ${pn},${ps} </if>
-+        -- order by a.update_time desc
-+        <if test="pageSize != null  and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if>
-     </select>
- 
-     <select id="selectPatArchiveInfoByInhospQC" parameterType="com.smartor.domain.PatArchiveReq"
-@@ -939,8 +940,8 @@
-             <if test="drcode != null">
-                 AND d.drcode = #{drcode}
-             </if>
--            <if test="cry != null and cry == 0 ">and d.endtime is null</if>
--            <if test="cry != null and cry == 1 ">and d.endtime is not null</if>
-+            <if test="allhosp != null and allhosp == 1 ">and d.endtime is null</if>
-+            <if test="allhosp != null and allhosp == 4 ">and d.endtime is not null</if>
-             <if test="visitno != null and visitno != ''">
-                 AND d.inhospno = #{visitno}
-             </if>
-@@ -989,8 +990,8 @@
-                 AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)
-             </if>
-         </where>
--        order by a.id,a.update_time desc ) as tmp order by endtime desc
--        <if test="pn != null  and ps != null"> limit ${pn},${ps} </if>
-+        <if test="pageSize != null  and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if>
-+        ) as tmp
-     </select>
- 
-     <select id="selectPatArchiveInfoByOuthospQC" parameterType="com.smartor.domain.PatArchiveReq"
-@@ -1084,7 +1085,7 @@
-                 AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)
-             </if>
-         </where>
--        order by a.update_time desc
-+        <if test="pageSize != null  and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if>
-     </select>
- 
-     <select id="selectPatArchiveInfoByPhysicalQC" parameterType="com.smartor.domain.PatArchiveReq"
-@@ -1176,6 +1177,7 @@
-                 AND NOT exists ( SELECT 1 FROM pat_filterlist f where d.patid=f.patid)
-             </if>
-         </where>
--        order by a.update_time desc
-+        -- order by a.update_time desc
-+        <if test="pageSize != null  and pageNum != null">limit ${pageSize} OFFSET ${pageNum}</if>
-     </select>
- </mapper>
-Index: ruoyi-common/src/main/java/com/ruoyi/common/enums/VisitSendStateEnum.java
-===================================================================
-diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/VisitSendStateEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/VisitSendStateEnum.java
-deleted file mode 100644
---- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/VisitSendStateEnum.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ /dev/null	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-@@ -1,57 +0,0 @@
--package com.ruoyi.common.enums;
--
--/**
-- * 闅忚鑳藉惁鍙戦�侀暱鏈熶换鍔℃灇涓�
-- */
--public enum VisitSendStateEnum {
--    zyy("47231022633110211A2101", "涓芥按涓尰闄�", true),
--    jn("47255004333112711A1001", "鏅畞", false);
--
--
--    private String code;
--    private String desc;
--    //闅忚鏍囧織
--    private Boolean visitFlag;
--
--    VisitSendStateEnum(String code, String desc, Boolean visitFlag) {
--        this.code = code;
--        this.desc = desc;
--        this.visitFlag = visitFlag;
--    }
--
--    public static Boolean getDescByCode(String code) {
--        VisitSendStateEnum[] organEnums = values();
--        for (int i = 0; i < organEnums.length; i++) {
--            VisitSendStateEnum organEnum = organEnums[i];
--            if (organEnum.getCode().equals(code)) {
--                return organEnum.getVisitFlag();
--            }
--        }
--        return null;
--    }
--
--
--    public Boolean getVisitFlag() {
--        return visitFlag;
--    }
--
--    public void setVisitFlag(Boolean visitFlag) {
--        this.visitFlag = visitFlag;
--    }
--
--    public String getCode() {
--        return code;
--    }
--
--    public void setCode(String code) {
--        this.code = code;
--    }
--
--    public String getDesc() {
--        return desc;
--    }
--
--    public void setDesc(String desc) {
--        this.desc = desc;
--    }
--}
-Index: ruoyi-admin/src/main/resources/application-druid.yml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+># 鏁版嵁婧愰厤缃甛r\nspring:\r\n  datasource:\r\n    type: com.alibaba.druid.pool.DruidDataSource\r\n    #    driverClassName: com.mysql.cj.jdbc.Driver\r\n    druid:\r\n      # 涓诲簱鏁版嵁婧怽r\n      master:\r\n        #    涔変箤浜岄櫌\r\n        #        url: jdbc:mysql://127.0.0.1:3306/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        #        username: root\r\n        #        password: 123456\r\n        #        鍏徃\r\n        #        url: jdbc:mysql://192.168.2.9:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        #        涓芥按\r\n        #        url: jdbc:mysql://127.0.0.1:3308/smartor-lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        #        username: smartor\r\n        #        password: Smartor.2023\r\n        #        driverClassName: com.mysql.cj.jdbc.Driver\r\n        #        娌冲崡\r\n        #        url: jdbc:mysql://127.0.0.1:3308/smartor_hn?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        #        username: root\r\n        #        password: 123456\r\n        #        driverClassName: com.mysql.cj.jdbc.Driver\r\n        #        # 鏂板崕\r\n        #        url: jdbc:mysql://192.168.191.181:3308/smartor?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        #        username: smartor\r\n        #        password: Smartor.2023\r\n        #        driverClassName: com.mysql.cj.jdbc.Driver\r\n\r\n        #  鍏徃浜慭r\n#        url: jdbc:mysql://116.62.18.175:6002/smartor_xinhua?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n#        username: hxsoft\r\n#        password: Hxerp2000\r\n#        driverClassName: com.mysql.cj.jdbc.Driver\r\n        #  鍏徃鏈湴\r\n        url: jdbc:mysql://haiershi.a1.luyouxia.net:23844/smartor_lishui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        username: smartor\r\n        password: Smartor.2023\r\n        driverClassName: com.mysql.cj.jdbc.Driver\r\n\r\n      #        # 楂樻柉鏁版嵁搴撻厤缃甛r\n      #        url: jdbc:postgresql://127.0.0.1:5432/smartorlishui\r\n      #        username: gaussdb\r\n      #        password: Ls@123456\r\n      #        driverClassName: org.postgresql.Driver\r\n\r\n      # 浠庡簱鏁版嵁婧怽r\n      slave:\r\n        enabled: true\r\n        url: jdbc:oracle:thin:@//192.200.85.40:1521/hzsyhis\r\n        username: wssf\r\n        password: Hzsywssf\r\n        driver-class-name: oracle.jdbc.OracleDriver\r\n      #        enabled: true\r\n      #        url: jdbc:mysql://192.168.100.10:3306/emr?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n      #        username: smartor\r\n      #        password: Smartor.2023\r\n      #        driverClassName: com.mysql.cj.jdbc.Driver\r\n      # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(鍏徃)\r\n#       enabled: true\r\n#       url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor\r\n#       username: sa\r\n#       password: Hxerp2000\r\n#       driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver\r\n\r\n      # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(涔変箤浜岄櫌)\r\n      # enabled: true\r\n      # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=IntelligentVoice;encrypt=false;SelectMethod=cursor\r\n      # username: sa\r\n      # password: sfxt#2023\r\n      # driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver\r\n\r\n      # 鍒濆杩炴帴鏁癨r\n      initialSize: 5\r\n      # 鏈�灏忚繛鎺ユ睜鏁伴噺\r\n      minIdle: 10\r\n      # 鏈�澶ц繛鎺ユ睜鏁伴噺\r\n      maxActive: 20\r\n      # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂碶r\n      maxWait: 60000\r\n      # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣\r\n      timeBetweenEvictionRunsMillis: 60000\r\n      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣\r\n      minEvictableIdleTimeMillis: 300000\r\n      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣\r\n      maxEvictableIdleTimeMillis: 900000\r\n      # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁圽r\n      validationQuery: SELECT 1 FROM DUAL\r\n      #validationQuery: SELECT 1\r\n      testWhileIdle: true\r\n      testOnBorrow: false\r\n      testOnReturn: false\r\n      webStatFilter:\r\n        enabled: true\r\n      statViewServlet:\r\n        enabled: false\r\n        # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂甛r\n        allow:\r\n        url-pattern: /druid/*\r\n        # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮乗r\n        login-username: lihu\r\n        login-password: Lihu@1363419#$\r\n      filter:\r\n        stat:\r\n          enabled: true\r\n          # 鎱QL璁板綍\r\n          log-slow-sql: true\r\n          slow-sql-millis: 1000\r\n          merge-sql: true\r\n        wall:\r\n          config:\r\n            multi-statement-allow: true\r\n  # redis 閰嶇疆\r\n  redis:\r\n    host: 192.168.100.10\r\n    port: 6020\r\n    database: 0\r\n    password: Smartor\r\n    # 杩炴帴瓒呮椂鏃堕棿\r\n    timeout: 10s\r\n    lettuce:\r\n      pool:\r\n        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺r\n        min-idle: 0\r\n        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺r\n        max-idle: 8\r\n        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁癨r\n        max-active: 8\r\n        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級\r\n        max-wait: -1ms\r\n\r\nmagic-api:\r\n  web: /magic/web\r\n  resource:\r\n    type: database   # 閰嶇疆瀛樺偍鍦ㄦ暟鎹簱涓璡r\n    tableName: magic_config  # 鏁版嵁搴撲腑鐨勮〃鍚峔r\n    prefix: /api\r\n    readonly: false\r\n  sql-column-case: camel\r\n  show-sql: true #閰嶇疆鎵撳嵃SQL\r\n  page-config:\r\n    size: size\r\n    page: page\r\n    default-page: 1\r\n    default-size: 10\r\n\r\n# Swagger閰嶇疆\r\nswagger:\r\n  # 鏄惁寮�鍚痵wagger\r\n  enabled: true\r\n  # 璇锋眰鍓嶇紑\r\n  pathMapping: /dev-api\r\n\r\n#閽夐拤鐨勫瘑閽r\ndingAppid: dingn8iip5ubj7clrrsv\r\ndingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD\r\n\r\n\r\n# websocket瓒呮椂鏃堕棿\r\nserver:\r\nwebsocket:\r\ntimeout=60000:\r\n\r\n\r\naccessKeyId: LTAI5tPfc1VJzz7VuhzcBwug\r\naccessKeySecret: gG1srKxPFDBNWe2oHfqmK1qsSQkf1e\r\nsignName: 鏉窞鍒╂箹绉戞妧\r\n\r\n#鏅鸿兘鍛煎彨(涓婃捣)\r\nphoneIP: http://124.220.50.51\r\nphonePort: 8001\r\n#鏉窞\r\nhzphoneIP: http://121.43.112.160\r\nhzphonePort: 8088\r\n#鐢佃瘽绾胯矾锛�1 涓婃捣锛�2 鏉窞锛塡r\nphonePath: 2\r\n#鑷繁鐨勭數璇濆彿鐮乗r\nphoneMySelf: 83234089\r\n##鎺堟潈 id(鏉窞)\r\n#app_id: hzgs\r\n##鎺堟潈 key(宸插姞瀵嗚繃鐨� key)(鏉窞)\r\n#app_key: 605453540c4a0a692fe07e1cae1162f3\r\n#鎺堟潈 id(鏉窞)\r\napp_id: hz_ali\r\n#鎺堟潈 key(宸插姞瀵嗚繃鐨� key)(鏉窞)\r\napp_key: a2f3b5799d635216aa280362fafd8c35\r\n\r\n\r\npub_key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==\r\n#杩欎釜鏄悗绔殑绉侀挜锛岀敤涓嶅埌\r\npri_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==\r\n#鍓嶇绉侀挜锛堢敤涓嶅埌浜嗭級\r\n#pri_key: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEApHTIe/StslZAT5Jzv8XClbrqox32pfaTrP5IOCRJ3FaH/UZsGgA/tsNBBEXq9eagqwPbJrjYfpdEtINcChrK4wIDAQABAkEAilDujdKshGGmlUZHs/NQRT6AOdDpsYxBiC4V76IVvQpw0IW6c4HGEvH4T+xRufika7/48L0eu0f06H+YtL5lgQIhANUd0a6oSsVxWifAjtKwMZcXD3OaIxQIQSCN4NT4VFY3AiEAxYxYrIhkIyg+UVw3WOSvBpXKxM4/WL9HRzkxDLvp2rUCIQCK23P8tgCJ5xJT5l3onw6goFDcBKkoazxsBqVgfjENPwIgWbuTd+OIYPPhwsE5ntZZrosSDO2GlsBkFzUiU59z7VUCIA0LL+9IFb+FWCl3DGTwIQ9SZYbv61T83LKjebUcSOfe\r\n\r\n#浜岀淮鐮佽矾寰刓r\nqrpath: D:\\qrcode\r\n\r\n#鍏徃鍐呭閾捐姹侷P鍜岀鍙e彿\r\n#req_path: 8095\r\n#localIP: 192.168.2.13\r\n\r\n#鏂板崕鍖婚櫌澶栭摼璇锋眰IP鍜岀鍙e彿\r\nreq_path: 8093\r\n#localIP: https://wx.lihusmart.com\r\n#涓芥按澶栭摼璇锋眰IP鍜岀鍙e彿\r\nlocalIP: http://221.12.19.26\r\n\r\n#鑾峰彇鎮h�呬俊鎭疷RL(鍗庡崜鎻愪緵)\r\nhosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange\r\n\r\n# 0浠h〃璧伴粯璁ょ殑涓婁紶    1 浠g爜璧版柊鍗庡尰闄㈢殑涓婁紶\r\nuploadSwitch: 0\r\n\r\n#  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏈湴)\r\nASRCallBackPath: http://192.168.100.10:8095/smartor/serviceSubtask/phoneCallBackYQ\r\n#鎸傛柇IP(鏈湴)\r\nhangup: http://192.168.100.6:8089/hangup\r\n#fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏈湴)\r\napp_key_yq: ZurNHpaQLq6P55YS\r\n\r\n##  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏂板崕)\r\n#ASRCallBackPath: http://192.168.101.135:8095/smartor/serviceSubtask/phoneCallBackYQ\r\n##鎸傛柇IP(鏂板崕)\r\n#hangup: http://192.16.4.220:8091/hangup\r\n##fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏂板崕)\r\n#app_key_yq: ZurNHpaQLq6P55YS\r\n\r\n#鏈� 鍦� 鐭俊璇锋眰鍦板潃(杩欎釜鏈嶅姟鏄垜浠嚜宸卞啓鐨�)\r\n#xhsmsPath: http://192.168.2.13:8092/sendSms\r\n#鏂板崕鐭俊璇锋眰鍦板潃(杩欎釜鏈嶅姟鏄垜浠嚜宸卞啓鐨�)\r\nxhsmsPath: http://121.41.98.232:8001/sms/api/sendMessageMass\r\n#甯愬彿\r\nxhsmsAccount: 300044\r\n#鎺ュ彛瀵嗙爜\r\nxhsmsPwd: qj0NHDegxWhj\r\n#铏氭嫙鎺ュ叆鐮乗r\nxhsmsjrm: 1069055\r\n\r\n##鏈湴FTP杩炴帴\r\n#FTP_SERVER: \"192.168.2.13\"\r\n#FTP_USERNAME: voice\r\n#FTP_PASSWORD: xh@2023\r\n\r\n#鏂板崕FTP杩炴帴\r\nFTP_SERVER: \"192.16.4.220\"\r\nFTP_USERNAME: voice\r\nFTP_PASSWORD: xh@2023\r\n\r\n#璇煶鍦板潃璁块棶鍓嶇紑(鏂板崕)\r\nvoicePathPrefix: http://192.168.191.181:8095/profile/upload/vadio/\r\n#璇煶鍦板潃璁块棶鍓嶇紑(鍏徃)\r\n#voicePathPrefix: http://192.168.2.13:8095/profile/upload/vadio/\r\n\r\n#绗釜灏忔椂鐢佃瘽鎷ㄦ墦鐨勪笂闄怽r\nphoneUpEveryHour: 12\r\n#鐢佃瘽姣忓ぉ缁撴潫鏃堕棿\r\nphoneEndHour: 20\r\n\r\n#鏂板憳宸ラ粯璁ゅ瘑鐮乗r\ndefaultPwd: 123456\r\n\r\n#鏄惁闇�瑕佹牴鎹柧鐥呭缓绔嬪嚭闄㈡偅鑰呴殢璁縗r\ncreateIcd10Visit: false\r\n\r\n#admin绠$悊鍛榰serId\r\nisAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13\r\n\r\n#闅忚鍖婚櫌锛�1鏂板崕   2涓芥按\r\nvisitHosp: 2\r\n\r\nisEncryp:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
---- a/ruoyi-admin/src/main/resources/application-druid.yml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/resources/application-druid.yml	(date 1759124470085)
-@@ -29,15 +29,19 @@
-         #        driverClassName: com.mysql.cj.jdbc.Driver
- 
-         #  鍏徃浜�
--#        url: jdbc:mysql://116.62.18.175:6002/smartor_xinhua?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
--#        username: hxsoft
--#        password: Hxerp2000
--#        driverClassName: com.mysql.cj.jdbc.Driver
-+        #        url: jdbc:mysql://116.62.18.175:6002/smartor_lishui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-+        #        username: hxsoft
-+        #        password: Smartor.2023
-+        #        driverClassName: com.mysql.cj.jdbc.Driver
-         #  鍏徃鏈湴
-         url: jdbc:mysql://haiershi.a1.luyouxia.net:23844/smartor_lishui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-         username: smartor
-         password: Smartor.2023
-         driverClassName: com.mysql.cj.jdbc.Driver
-+      #        url: jdbc:mysql://127.0.0.1:2881/smartor-lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-+      #        username: root@sys
-+      #        password:
-+      #        driverClassName: com.mysql.cj.jdbc.Driver
- 
-       #        # 楂樻柉鏁版嵁搴撻厤缃�
-       #        url: jdbc:postgresql://127.0.0.1:5432/smartorlishui
-@@ -58,11 +62,11 @@
-       #        password: Smartor.2023
-       #        driverClassName: com.mysql.cj.jdbc.Driver
-       # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(鍏徃)
--#       enabled: true
--#       url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor
--#       username: sa
--#       password: Hxerp2000
--#       driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
-+      #       enabled: true
-+      #       url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor
-+      #       username: sa
-+      #       password: Hxerp2000
-+      #       driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
- 
-       # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(涔変箤浜岄櫌)
-       # enabled: true
-@@ -113,7 +117,7 @@
-             multi-statement-allow: true
-   # redis 閰嶇疆
-   redis:
--    host: 192.168.100.10
-+    host: 127.0.0.1
-     port: 6020
-     database: 0
-     password: Smartor
-@@ -140,6 +144,7 @@
-   sql-column-case: camel
-   show-sql: true #閰嶇疆鎵撳嵃SQL
-   page-config:
-+    enabled: false  #绂佺敤鍒嗛〉
-     size: size
-     page: page
-     default-page: 1
-@@ -202,9 +207,9 @@
- 
- #鏂板崕鍖婚櫌澶栭摼璇锋眰IP鍜岀鍙e彿
- req_path: 8093
--#localIP: https://wx.lihusmart.com
-+localIP: https://wx.lihusmart.com
- #涓芥按澶栭摼璇锋眰IP鍜岀鍙e彿
--localIP: http://221.12.19.26
-+#localIP: http://221.12.19.26
- 
- #鑾峰彇鎮h�呬俊鎭疷RL(鍗庡崜鎻愪緵)
- hosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange
-@@ -213,9 +218,9 @@
- uploadSwitch: 0
- 
- #  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏈湴)
--ASRCallBackPath: http://192.168.100.10:8095/smartor/serviceSubtask/phoneCallBackYQ
-+ASRCallBackPath: http://192.168.100.127:8095/smartor/serviceSubtask/phoneCallBackYQ
- #鎸傛柇IP(鏈湴)
--hangup: http://192.168.100.6:8089/hangup
-+hangup: http://192.168.100.33:5060/hangup
- #fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏈湴)
- app_key_yq: ZurNHpaQLq6P55YS
- 
-@@ -267,6 +272,11 @@
- isAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13
- 
- #闅忚鍖婚櫌锛�1鏂板崕   2涓芥按
--visitHosp: 2
-+visitHosp: 1
-+
-+isEncryp:
- 
--isEncryp:
-\ No newline at end of file
-+dealDeptCode:
-+
-+# 鍓嶇ip
-+qdip: 192.168.100.132
-Index: smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport java.util.Date;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\nimport org.apache.commons.lang3.builder.ToStringBuilder;\r\nimport org.apache.commons.lang3.builder.ToStringStyle;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\n\r\n/**\r\n * 璇煶浠诲姟鍛煎彨鏄庣粏瀵硅薄 ivr_taskcalldetail\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@Data\r\n@ApiModel(value = \"ServiceSubtaskDetail\", description = \"闂鍥炵瓟鏄庣粏\")\r\npublic class ServiceSubtaskDetail extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private String id;\r\n\r\n    @ApiModelProperty(value = \"瀛愪换鍔D\")\r\n    private Long subId;\r\n\r\n    @ApiModelProperty(value = \"浠诲姟ID\")\r\n    private Long taskid;\r\n\r\n    @ApiModelProperty(value = \"鎷ㄥ彿uuid\")\r\n    private String uuid;\r\n\r\n    @ApiModelProperty(value = \"鐢佃瘽鍙风爜\")\r\n    private String phone;\r\n\r\n    @ApiModelProperty(value = \"鎿嶄綔浜� \")\r\n    private String operate;\r\n\r\n    @ApiModelProperty(value = \"鏄剧ず鍙风爜\")\r\n    private String displayno;\r\n\r\n    @ApiModelProperty(value = \"\")\r\n    private Long inbound;\r\n\r\n    @ApiModelProperty(value = \"\")\r\n    private Long incoming;\r\n\r\n    @ApiModelProperty(value = \"\")\r\n    private Long assigntime;\r\n\r\n    @ApiModelProperty(value = \"寮�濮嬫椂闂碶")\r\n    private Long starttime;\r\n\r\n    @ApiModelProperty(value = \"鍥炵瓟鏃堕棿\")\r\n    private Long answertime;\r\n\r\n    @ApiModelProperty(value = \"\")\r\n    private Long silent;\r\n\r\n    @ApiModelProperty(value = \"\")\r\n    private String dtmfKey;\r\n\r\n    @ApiModelProperty(value = \"闊充箰璺緞\")\r\n    private String musicpath;\r\n\r\n    @ApiModelProperty(value = \"鍙戦�佺储寮昞")\r\n    private Long sentIndex;\r\n\r\n    @ApiModelProperty(value = \"鍙戦�佸紑濮嬬姸鎬乗")\r\n    private Long sentBegin;\r\n\r\n    @ApiModelProperty(value = \"鍥炵瓟缁撴灉\")\r\n    private String asrtext;\r\n\r\n    @ApiModelProperty(value = \"寮�濮嬫椂闂碶")\r\n    private Long beginTime;\r\n\r\n    @ApiModelProperty(value = \"缁撴潫鏃堕棿\")\r\n    private Long endTime;\r\n\r\n    @ApiModelProperty(value = \"鍙戦�佺粨鏉熺姸鎬乗")\r\n    private Long sentEnd;\r\n\r\n    @ApiModelProperty(value = \"鎻愪氦璺緞\")\r\n    private String recordpath;\r\n\r\n    @ApiModelProperty(value = \"鎻愪氦URL\")\r\n    private String recordurl;\r\n\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private String templateid;\r\n\r\n    @ApiModelProperty(value = \"妯℃澘闂缂栧彿\")\r\n    private Long templatequestionnum;\r\n\r\n\r\n    @ApiModelProperty(value = \"浜ゆ崲鏈篒D\")\r\n    private Long switchid;\r\n\r\n    @ApiModelProperty(value = \"闂鏂囨湰\")\r\n    private String questiontext;\r\n\r\n\r\n    @ApiModelProperty(value = \"闂璇煶\")\r\n    private String questionvoice;\r\n\r\n\r\n    @ApiModelProperty(value = \"绫诲埆\")\r\n    private String categoryname;\r\n\r\n\r\n    @ApiModelProperty(value = \"鎸囨爣ID(浠庨棶棰樹笂鑾峰彇)\")\r\n    private Integer targetid;\r\n\r\n\r\n    @ApiModelProperty(value = \"鎸囨爣閫夐」\")\r\n    private String targetoptions;\r\n\r\n\r\n    @ApiModelProperty(value = \"鎸囨爣鍊硷紙姝e垯鍖归厤鐨勯�夐」鍊硷級\")\r\n    private String targetvalue;\r\n\r\n\r\n    @ApiModelProperty(value = \"閫氳繃姝e垯瑙f瀽鐨勫�糪")\r\n    private String matchedtext;\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"娣诲姞鏃堕棿\")\r\n    private Date addtime;\r\n\r\n\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    @ApiModelProperty(value = \"闂绫诲瀷\")\r\n    private String valueType;\r\n\r\n\r\n    @ApiModelProperty(value = \"闂id\")\r\n    private Long scriptid;\r\n\r\n    @ApiModelProperty(value = \"閫夐」绛旀鐨勯檮鍔犱俊鎭痋")\r\n    private String answerps;\r\n\r\n    @ApiModelProperty(value = \"瀵圭瓟妗堢殑璇勮\")\r\n    private String comment;\r\n\r\n    @ApiModelProperty(value = \"閫氱敤搴撳尮閰嶅埌鐨勮瘽鏈痋")\r\n    private String extemplateText;\r\n\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private Long patid;\r\n\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetail.java	(date 1758798202506)
-@@ -23,7 +23,7 @@
-     private static final long serialVersionUID = 1L;
- 
-     @ApiModelProperty(value = "涓婚敭")
--    private String id;
-+    private Long id;
- 
-     @ApiModelProperty(value = "瀛愪换鍔D")
-     private Long subId;
-Index: ruoyi-admin/src/main/resources/application-sltd.yml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+># 鏁版嵁婧愰厤缃甛r\nspring:\r\n  datasource:\r\n    type: com.alibaba.druid.pool.DruidDataSource\r\n    #    driverClassName: com.mysql.cj.jdbc.Driver\r\n    druid:\r\n      # 涓诲簱鏁版嵁婧怽r\n      master:\r\n        #        鐪佺珛鍚屽痉\r\n        url: jdbc:mysql://192.88.117.237:3306/smartor_sltd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n        username: root\r\n        password: Smartor.2023\r\n        driverClassName: com.mysql.cj.jdbc.Driver\r\n\r\n      #        # 楂樻柉鏁版嵁搴撻厤缃甛r\n      #        url: jdbc:postgresql://127.0.0.1:5432/smartorlishui\r\n      #        username: gaussdb\r\n      #        password: Ls@123456\r\n      #        driverClassName: org.postgresql.Driver\r\n\r\n      # 浠庡簱鏁版嵁婧怽r\n      slave:\r\n      # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(鍏徃)\r\n      # enabled: true\r\n      # url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor\r\n      # username: sa\r\n      # password: Hxerp2000\r\n      # driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver\r\n\r\n      # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(涔変箤浜岄櫌)\r\n      # enabled: true\r\n      # url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=IntelligentVoice;encrypt=false;SelectMethod=cursor\r\n      # username: sa\r\n      # password: sfxt#2023\r\n      # driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver\r\n\r\n      # 鍒濆杩炴帴鏁癨r\n      initialSize: 5\r\n      # 鏈�灏忚繛鎺ユ睜鏁伴噺\r\n      minIdle: 10\r\n      # 鏈�澶ц繛鎺ユ睜鏁伴噺\r\n      maxActive: 20\r\n      # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂碶r\n      maxWait: 60000\r\n      # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣\r\n      timeBetweenEvictionRunsMillis: 60000\r\n      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣\r\n      minEvictableIdleTimeMillis: 300000\r\n      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣\r\n      maxEvictableIdleTimeMillis: 900000\r\n      # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁圽r\n      #      validationQuery: SELECT 1 FROM DUAL\r\n      validationQuery: SELECT 1\r\n      testWhileIdle: true\r\n      testOnBorrow: false\r\n      testOnReturn: false\r\n      webStatFilter:\r\n        enabled: true\r\n      statViewServlet:\r\n        enabled: false\r\n        # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂甛r\n        allow:\r\n        url-pattern: /druid/*\r\n        # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮乗r\n        login-username: lihu\r\n        login-password: Lihu@1363419#$\r\n      filter:\r\n        stat:\r\n          enabled: true\r\n          # 鎱QL璁板綍\r\n          log-slow-sql: true\r\n          slow-sql-millis: 1000\r\n          merge-sql: true\r\n        wall:\r\n          config:\r\n            multi-statement-allow: true\r\n  # redis 閰嶇疆\r\n  redis:\r\n    host: 127.0.0.1\r\n    port: 6020\r\n\r\n    # 鏁版嵁搴撶储寮昞r\n    database: 0\r\n    # 瀵嗙爜\r\n    password: Smartor\r\n    # 杩炴帴瓒呮椂鏃堕棿\r\n    timeout: 10s\r\n    lettuce:\r\n      pool:\r\n        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺r\n        min-idle: 0\r\n        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺r\n        max-idle: 8\r\n        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁癨r\n        max-active: 8\r\n        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級\r\n        max-wait: -1ms\r\n\r\n# Swagger閰嶇疆\r\nswagger:\r\n  # 鏄惁寮�鍚痵wagger\r\n  enabled: false\r\n  # 璇锋眰鍓嶇紑\r\n  pathMapping: /dev-api\r\n\r\n# PageHelper鍒嗛〉鎻掍欢\r\npagehelper:\r\n  helperDialect: mysql\r\n  supportMethodsArguments: true\r\n  params: count=countSql\r\n\r\nmagic-api:\r\n  web: /magic/web\r\n  resource:\r\n    type: database   # 閰嶇疆瀛樺偍鍦ㄦ暟鎹簱涓璡r\n    tableName: magic_config  # 鏁版嵁搴撲腑鐨勮〃鍚峔r\n    prefix: /api\r\n    readonly: false\r\n  sql-column-case: camel\r\n  show-sql: true #閰嶇疆鎵撳嵃SQL\r\n  page-config:\r\n    size: size\r\n    page: page\r\n    default-page: 1\r\n    default-size: 10\r\n\r\n#閽夐拤鐨勫瘑閽r\ndingAppid: dingn8iip5ubj7clrrsv\r\ndingAppSecret: qlEK8D3oOVwGPOTiBQIBYTqQVlAfy9S_qQizEQFjJdSScwemWFryg4gbneu-NqWD\r\n\r\n# websocket瓒呮椂鏃堕棿\r\nserver:\r\nwebsocket:\r\ntimeout=60000:\r\n\r\n\r\naccessKeyId: LTAI5tPfc1VJzz7VuhzcBwug\r\naccessKeySecret: gG1srKxPFDBNWe2oHfqmK1qsSQkf1e\r\nsignName: 鏉窞鍒╂箹绉戞妧\r\n\r\n#鏅鸿兘鍛煎彨(涓婃捣)\r\nphoneIP: http://124.220.50.51\r\nphonePort: 8001\r\n#鏉窞\r\nhzphoneIP: http://121.43.112.160\r\nhzphonePort: 8088\r\n#鐢佃瘽绾胯矾锛�1 涓婃捣锛�2 鏉窞锛塡r\nphonePath: 2\r\n#鑷繁鐨勭數璇濆彿鐮乗r\nphoneMySelf: 83234089\r\n##鎺堟潈 id(鏉窞)\r\n#app_id: hzgs\r\n##鎺堟潈 key(宸插姞瀵嗚繃鐨� key)(鏉窞)\r\n#app_key: 605453540c4a0a692fe07e1cae1162f3\r\n#鎺堟潈 id(鏉窞)\r\napp_id: hz_ali\r\n#鎺堟潈 key(宸插姞瀵嗚繃鐨� key)(鏉窞)\r\napp_key: a2f3b5799d635216aa280362fafd8c35\r\n\r\n\r\npub_key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==\r\n#杩欎釜鏄悗绔殑绉侀挜锛岀敤涓嶅埌\r\npri_key: MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==\r\n#鍓嶇绉侀挜锛堢敤涓嶅埌浜嗭級\r\n#pri_key: MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEApHTIe/StslZAT5Jzv8XClbrqox32pfaTrP5IOCRJ3FaH/UZsGgA/tsNBBEXq9eagqwPbJrjYfpdEtINcChrK4wIDAQABAkEAilDujdKshGGmlUZHs/NQRT6AOdDpsYxBiC4V76IVvQpw0IW6c4HGEvH4T+xRufika7/48L0eu0f06H+YtL5lgQIhANUd0a6oSsVxWifAjtKwMZcXD3OaIxQIQSCN4NT4VFY3AiEAxYxYrIhkIyg+UVw3WOSvBpXKxM4/WL9HRzkxDLvp2rUCIQCK23P8tgCJ5xJT5l3onw6goFDcBKkoazxsBqVgfjENPwIgWbuTd+OIYPPhwsE5ntZZrosSDO2GlsBkFzUiU59z7VUCIA0LL+9IFb+FWCl3DGTwIQ9SZYbv61T83LKjebUcSOfe\r\n\r\n#浜岀淮鐮佽矾寰刓r\nqrpath: D:\\qrcode\r\n\r\n\r\n#澶栭摼璇锋眰IP鍜岀鍙e彿\r\nreq_path: 13871\r\nlocalIP: http://m.zjtongde.com\r\n\r\n\r\n#鑾峰彇鎮h�呬俊鎭疷RL(鍗庡崜鎻愪緵)\r\nhosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange\r\n\r\n# 0浠h〃璧伴粯璁ょ殑涓婁紶    1 浠g爜璧版柊鍗庡尰闄㈢殑涓婁紶\r\nuploadSwitch: 1\r\n\r\n##  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏈湴)\r\n#ASRCallBackPath: http://192.168.2.13:8095/smartor/serviceSubtask/phoneCallBackYQ\r\n##鎸傛柇IP(鏈湴)\r\n#hangup: http://192.168.2.13:8091/hangup\r\n##fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏈湴)\r\n#app_key_yq: ZurNHpaQLq6P55YS\r\n\r\n#  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏂板崕)\r\nASRCallBackPath: http://192.168.101.135:8095/smartor/serviceSubtask/phoneCallBackYQ\r\n#鎸傛柇IP(鏂板崕)\r\nhangup: http://192.16.4.220:8091/hangup\r\n#fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏂板崕)\r\napp_key_yq: ZurNHpaQLq6P55YS\r\n\r\n#鐭俊璇锋眰鍦板潃(杩欓噷涓虹┖锛屽悓寰锋彁渚涚殑鏄痺s)\r\nxhsmsPath:\r\n#甯愬彿\r\nxhsmsAccount:\r\n#鎺ュ彛瀵嗙爜\r\nxhsmsPwd:\r\n#铏氭嫙鎺ュ叆鐮乗r\nxhsmsjrm:\r\n\r\n##鏈湴FTP杩炴帴\r\n#FTP_SERVER: \"192.168.2.13\"\r\n#FTP_USERNAME: voice\r\n#FTP_PASSWORD: xh@2023\r\n\r\n#鏂板崕FTP杩炴帴\r\nFTP_SERVER: \"192.16.4.220\"\r\nFTP_USERNAME: voice\r\nFTP_PASSWORD: xh@2023\r\n\r\n#璇煶鍦板潃璁块棶鍓嶇紑(鏂板崕)\r\nvoicePathPrefix: http://192.168.191.181:8095/profile/upload/vadio/\r\n#璇煶鍦板潃璁块棶鍓嶇紑(鍏徃)\r\n#voicePathPrefix: http://192.168.2.13:8095/profile/upload/vadio/\r\n\r\n#绗釜灏忔椂鐢佃瘽鎷ㄦ墦鐨勪笂闄怽r\nphoneUpEveryHour: 12\r\n#鐢佃瘽姣忓ぉ缁撴潫鏃堕棿\r\nphoneEndHour: 20\r\n\r\n#鏂板憳宸ラ粯璁ゅ瘑鐮乗r\ndefaultPwd: 123456\r\n\r\n#鏄惁闇�瑕佹牴鎹柧鐥呭缓绔嬪嚭闄㈡偅鑰呴殢璁縗r\ncreateIcd10Visit: false\r\n\r\n#admin绠$悊鍛榰serId\r\nisAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13\r\n\r\n#闅忚鍖婚櫌锛�1鏂板崕   2涓芥按    3鐪佺珛鍚屽痉\r\nvisitHosp: 3\r\n\r\n#鐢ㄦ埛榛樿瀵嗙爜\r\nuserPwd: sltd@0230\r\n\r\n#澶勭悊鎶曡瘔寤鸿鐨勯儴闂ㄧ紪鐮乗r\ndealDeptCode: 40003024\r\n\r\n\r\n#鏄惁鍔犲瘑  0涓嶅姞   1鍔犲瘑\r\nisEncryp: 0\r\n\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/resources/application-sltd.yml b/ruoyi-admin/src/main/resources/application-sltd.yml
---- a/ruoyi-admin/src/main/resources/application-sltd.yml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/resources/application-sltd.yml	(date 1758798202518)
-@@ -231,8 +231,8 @@
- #admin绠$悊鍛榰serId
- isAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13
- 
--#闅忚鍖婚櫌锛�1鏂板崕   2涓芥按    3鐪佺珛鍚屽痉
--visitHosp: 3
-+#闅忚鍖婚櫌锛�1鏂板崕   2涓芥按   3甯備竴   4鐪佺珛鍚屽痉
-+visitHosp: 4
- 
- #鐢ㄦ埛榛樿瀵嗙爜
- userPwd: sltd@0230
-@@ -244,3 +244,4 @@
- #鏄惁鍔犲瘑  0涓嶅姞   1鍔犲瘑
- isEncryp: 0
- 
-+
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.common;\r\n\r\nimport com.ruoyi.common.config.RuoYiConfig;\r\nimport com.ruoyi.common.constant.Constants;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.enums.PhotoEnum;\r\nimport com.ruoyi.common.enums.RadioEnum;\r\nimport com.ruoyi.common.enums.VadioEnum;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.file.FileUploadUtils;\r\nimport com.ruoyi.common.utils.file.FileUtils;\r\nimport com.ruoyi.framework.config.ServerConfig;\r\nimport com.smartor.domain.HtmlContentVO;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport org.apache.poi.hwpf.HWPFDocument;\r\nimport org.apache.poi.hwpf.converter.PicturesManager;\r\nimport org.apache.poi.hwpf.converter.WordToHtmlConverter;\r\nimport org.apache.poi.hwpf.usermodel.PictureType;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.http.MediaType;\r\nimport org.springframework.web.bind.annotation.*;\r\nimport org.springframework.web.multipart.MultipartFile;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport javax.xml.parsers.DocumentBuilderFactory;\r\nimport javax.xml.parsers.ParserConfigurationException;\r\nimport javax.xml.transform.OutputKeys;\r\nimport javax.xml.transform.Transformer;\r\nimport javax.xml.transform.TransformerException;\r\nimport javax.xml.transform.TransformerFactory;\r\nimport javax.xml.transform.dom.DOMSource;\r\nimport javax.xml.transform.stream.StreamResult;\r\nimport java.io.*;\r\nimport java.util.ArrayList;\r\nimport java.util.Base64;\r\nimport java.util.List;\r\n\r\n/**\r\n * 閫氱敤璇锋眰澶勭悊\r\n *\r\n * @author ruoyi\r\n */\r\n@RestController\r\n@Api(description = \"閫氳繃璇锋眰澶勭悊\")\r\n@RequestMapping(\"/common\")\r\npublic class CommonController {\r\n    private static final Logger log = LoggerFactory.getLogger(CommonController.class);\r\n\r\n    @Autowired\r\n    private ServerConfig serverConfig;\r\n\r\n    private static final String FILE_DELIMETER = \",\";\r\n\r\n    @Value(\"${uploadSwitch}\")\r\n    private Integer uploadSwitch;\r\n\r\n    /**\r\n     * 閫氱敤涓嬭浇璇锋眰\r\n     *\r\n     * @param fileName 鏂囦欢鍚嶇О\r\n     * @param delete   鏄惁鍒犻櫎\r\n     */\r\n    @GetMapping(\"/download\")\r\n    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) {\r\n        try {\r\n            if (!FileUtils.checkAllowDownload(fileName)) {\r\n                throw new Exception(StringUtils.format(\"鏂囦欢鍚嶇О({})闈炴硶锛屼笉鍏佽涓嬭浇銆� \", fileName));\r\n            }\r\n            String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf(\"_\") + 1);\r\n            String filePath = RuoYiConfig.getDownloadPath() + fileName;\r\n\r\n            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);\r\n            FileUtils.setAttachmentResponseHeader(response, realFileName);\r\n            FileUtils.writeBytes(filePath, response.getOutputStream());\r\n            if (delete) {\r\n                FileUtils.deleteFile(filePath);\r\n            }\r\n        } catch (Exception e) {\r\n            log.error(\"涓嬭浇鏂囦欢澶辫触\", e);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鍒嗙被涓婁紶璇锋眰\r\n     */\r\n    @ApiOperation(\"鍒嗙被涓婁紶璇锋眰\")\r\n    @PostMapping(\"/uploadSort\")\r\n    public AjaxResult uploadFileSort(MultipartFile file) {\r\n        try {\r\n            // 涓婁紶鏂囦欢璺緞\r\n            String filePath = RuoYiConfig.getUploadPath();\r\n            String originalFilename = file.getOriginalFilename().split(\"\\\\.\", 2)[1];\r\n            if (VadioEnum.getDescByCode(originalFilename)) {\r\n                filePath = filePath + \"/vadio\";\r\n            } else if (RadioEnum.getDescByCode(originalFilename)) {\r\n                filePath = filePath + \"/radio\";\r\n            } else if (PhotoEnum.getDescByCode(originalFilename)) {\r\n                filePath = filePath + \"/photo\";\r\n            } else {\r\n                filePath = filePath + \"/file\";\r\n            }\r\n            // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О\r\n            String fileName = FileUploadUtils.uploadSort(filePath, file);\r\n            String url = null;\r\n            //鏂板崕鍖婚櫌鐗规畩锛岃繖涓棰戠殑璁块棶寰楄浆\r\n            String xhPath = \"http://218.108.11.22:8093/profile-api\";\r\n            if (uploadSwitch == 1) {\r\n                String fn = fileName.replaceAll(\"/profile\", \"\");\r\n                url = xhPath + fn;\r\n            } else {\r\n                url = serverConfig.getUrl() + fileName;\r\n            }\r\n            AjaxResult ajax = AjaxResult.success();\r\n            ajax.put(\"url\", url);\r\n            ajax.put(\"fileName\", fileName);\r\n            ajax.put(\"newFileName\", FileUtils.getName(fileName));\r\n            ajax.put(\"originalFilename\", file.getOriginalFilename());\r\n            return ajax;\r\n        } catch (Exception e) {\r\n            return AjaxResult.error(e.getMessage());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 涓婁紶骞惰浆鎴恏tml璇锋眰\r\n     */\r\n    @ApiOperation(\"word鏂囦欢涓婁紶骞惰浆鎴恏tml\")\r\n    @PostMapping(\"/uploadShow\")\r\n    public AjaxResult uploadFileShow(MultipartFile file) {\r\n        try {\r\n            // 涓婁紶鏂囦欢璺緞\r\n            String filePath = RuoYiConfig.getUploadPath();\r\n            String originalFilename = file.getOriginalFilename().split(\"\\\\.\", 2)[1];\r\n            filePath = filePath + \"/show/\" + file.getOriginalFilename().split(\"\\\\.\", 2)[0];\r\n            // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О\r\n            String fileName = FileUploadUtils.uploadSort(filePath, file);\r\n            //灏唚ord杞垚html\r\n            convertDocToHtml(filePath + \"\\\\\" + file.getOriginalFilename(), filePath + \"\\\\\" + file.getOriginalFilename().split(\"\\\\.\", 2)[0] + \".html\");\r\n\r\n            String url = null;\r\n            String xhPath = \"http://218.108.11.22:8093/profile-api\";\r\n            if (uploadSwitch == 1) {\r\n                String fn = fileName.replaceAll(\"\\\\.[^.]*$\", \".html\").replaceAll(\"/profile\", \"\");\r\n                url = xhPath + fn;\r\n\r\n            } else {\r\n                url = serverConfig.getUrl() + fileName.replaceAll(\"\\\\.[^.]*$\", \".html\");\r\n            }\r\n            AjaxResult ajax = AjaxResult.success();\r\n            ajax.put(\"url\", url);\r\n            ajax.put(\"fileName\", fileName);\r\n            ajax.put(\"newFileName\", FileUtils.getName(fileName));\r\n            ajax.put(\"originalFilename\", file.getOriginalFilename());\r\n            return ajax;\r\n        } catch (Exception e) {\r\n            return AjaxResult.error(e.getMessage());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 閫氱敤涓婁紶璇锋眰锛堝崟涓級\r\n     */\r\n    @ApiOperation(\"閫氱敤涓婁紶璇锋眰\")\r\n    @PostMapping(\"/upload\")\r\n    public AjaxResult uploadFile(MultipartFile file) {\r\n        try {\r\n            // 涓婁紶鏂囦欢璺緞\r\n            String filePath = RuoYiConfig.getUploadPath();\r\n            // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О\r\n            String fileName = FileUploadUtils.upload(filePath, file);\r\n            String url = serverConfig.getUrl() + fileName;\r\n            AjaxResult ajax = AjaxResult.success();\r\n            ajax.put(\"url\", url);\r\n            ajax.put(\"fileName\", fileName);\r\n            ajax.put(\"newFileName\", FileUtils.getName(fileName));\r\n            ajax.put(\"originalFilename\", file.getOriginalFilename());\r\n            return ajax;\r\n        } catch (Exception e) {\r\n            return AjaxResult.error(e.getMessage());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 閫氱敤涓婁紶璇锋眰锛堝涓級\r\n     */\r\n    @PostMapping(\"/uploads\")\r\n    public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception {\r\n        try {\r\n            // 涓婁紶鏂囦欢璺緞\r\n            String filePath = RuoYiConfig.getUploadPath();\r\n            List<String> urls = new ArrayList<String>();\r\n            List<String> fileNames = new ArrayList<String>();\r\n            List<String> newFileNames = new ArrayList<String>();\r\n            List<String> originalFilenames = new ArrayList<String>();\r\n            for (MultipartFile file : files) {\r\n                // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О\r\n                String fileName = FileUploadUtils.upload(filePath, file);\r\n                String url = serverConfig.getUrl() + fileName;\r\n                urls.add(url);\r\n                fileNames.add(fileName);\r\n                newFileNames.add(FileUtils.getName(fileName));\r\n                originalFilenames.add(file.getOriginalFilename());\r\n            }\r\n            AjaxResult ajax = AjaxResult.success();\r\n            ajax.put(\"urls\", StringUtils.join(urls, FILE_DELIMETER));\r\n            ajax.put(\"fileNames\", StringUtils.join(fileNames, FILE_DELIMETER));\r\n            ajax.put(\"newFileNames\", StringUtils.join(newFileNames, FILE_DELIMETER));\r\n            ajax.put(\"originalFilenames\", StringUtils.join(originalFilenames, FILE_DELIMETER));\r\n            return ajax;\r\n        } catch (Exception e) {\r\n            return AjaxResult.error(e.getMessage());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鏈湴璧勬簮閫氱敤涓嬭浇\r\n     */\r\n    @GetMapping(\"/download/resource\")\r\n    public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) throws Exception {\r\n        try {\r\n            if (!FileUtils.checkAllowDownload(resource)) {\r\n                throw new Exception(StringUtils.format(\"璧勬簮鏂囦欢({})闈炴硶锛屼笉鍏佽涓嬭浇銆� \", resource));\r\n            }\r\n            // 鏈湴璧勬簮璺緞\r\n            String localPath = RuoYiConfig.getProfile();\r\n            // 鏁版嵁搴撹祫婧愬湴鍧�\r\n            String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);\r\n            // 涓嬭浇鍚嶇О\r\n            String downloadName = StringUtils.substringAfterLast(downloadPath, \"/\");\r\n            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);\r\n            FileUtils.setAttachmentResponseHeader(response, downloadName);\r\n            FileUtils.writeBytes(downloadPath, response.getOutputStream());\r\n        } catch (Exception e) {\r\n            log.error(\"涓嬭浇鏂囦欢澶辫触\", e);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @param\r\n     * @return\r\n     */\r\n    @ApiOperation(\"瀵屾枃鏈浆html\")\r\n    @PostMapping(\"/htmlContent\")\r\n    public AjaxResult htmlContent(@RequestBody HtmlContentVO htmlContentVO) {\r\n        log.info(\"htmlContentVO鍏ュ弬涓猴細{}\", htmlContentVO);\r\n        // 鑾峰彇鏂囦欢鐨勫師濮嬪悕绉癨r\n        String fileName = htmlContentVO.getFileName();\r\n        if (!fileName.endsWith(\".html\")) {\r\n            // 鍘绘帀涔嬪墠鐨勬墿灞曞悕\r\n            int lastIndex = fileName.lastIndexOf('.');\r\n            if (lastIndex != -1) {\r\n                fileName = fileName.substring(0, lastIndex); // 鍘绘帀鎵╁睍鍚峔r\n            }\r\n            // 娣诲姞.html鍚庣紑\r\n            fileName += \".html\";\r\n        }\r\n        FileUtils.createFile(RuoYiConfig.getUploadPath() + \"/show/\" + fileName.split(\"\\\\.\", 2)[0]);\r\n        // 灏嗘枃浠朵繚瀛樺埌鎸囧畾鐩綍\r\n        File outputFile = new File(RuoYiConfig.getUploadPath() + \"/show/\" + fileName.split(\"\\\\.\", 2)[0] + \"/\" + fileName);\r\n        try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), \"UTF-8\"))) {\r\n            if (StringUtils.isNotEmpty(htmlContentVO.getContent()))\r\n                writer.write(htmlContentVO.getContent());\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n        String url = null;\r\n        String xhPath = \"http://218.108.11.22:8093/profile-api\";\r\n        if (uploadSwitch == 1) {\r\n            url = xhPath + \"/upload/show/\" + fileName.split(\"\\\\.\", 2)[0] + \"/\" + fileName;\r\n        } else {\r\n            url = serverConfig.getUrl() + \"/profile/upload/show/\" + fileName.split(\"\\\\.\", 2)[0] + \"/\" + fileName;\r\n        }\r\n        return AjaxResult.success(url);\r\n    }\r\n\r\n\r\n    public static void convertDocToHtml(String docFilePath, String outputHtmlFilePath) throws TransformerException, IOException, ParserConfigurationException {\r\n\r\n        InputStream inputStream = new FileInputStream(docFilePath);\r\n        HWPFDocument document = new HWPFDocument(inputStream);\r\n        org.w3c.dom.Document htmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();\r\n        WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(htmlDoc);\r\n\r\n        wordToHtmlConverter.setPicturesManager(new PicturesManager() {\r\n            @Override\r\n            public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) {\r\n                String base64 = Base64.getEncoder().encodeToString(content);\r\n                String src = \"data:\" + pictureType.getMime() + \";base64,\" + base64;\r\n                return src;\r\n            }\r\n        });\r\n        try {\r\n            wordToHtmlConverter.processDocument(document);\r\n        } catch (Exception e) {\r\n            e.getMessage();\r\n        }\r\n        TransformerFactory tf = TransformerFactory.newInstance();\r\n        Transformer transformer = tf.newTransformer();\r\n        transformer.setOutputProperty(OutputKeys.INDENT, \"yes\");\r\n        transformer.setOutputProperty(OutputKeys.METHOD, \"html\");\r\n        transformer.setOutputProperty(OutputKeys.ENCODING, \"UTF-8\");\r\n        transformer.setOutputProperty(\"{http://xml.apache.org/xslt}indent-amount\", \"4\");\r\n\r\n        DOMSource domSource = new DOMSource(wordToHtmlConverter.getDocument());\r\n        StreamResult streamResult = new StreamResult(new File(outputHtmlFilePath));\r\n        transformer.transform(domSource, streamResult);\r\n\r\n        System.out.println(\"word杞琱tml鎴愬姛\");\r\n\r\n    }\r\n\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java	(date 1758798202535)
-@@ -10,6 +10,8 @@
- import com.ruoyi.common.utils.file.FileUploadUtils;
- import com.ruoyi.common.utils.file.FileUtils;
- import com.ruoyi.framework.config.ServerConfig;
-+import com.ruoyi.system.domain.SysConfig;
-+import com.ruoyi.system.mapper.SysConfigMapper;
- import com.smartor.domain.HtmlContentVO;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
-@@ -54,6 +56,9 @@
-     @Autowired
-     private ServerConfig serverConfig;
- 
-+    @Autowired
-+    private SysConfigMapper sysConfigMapper;
-+
-     private static final String FILE_DELIMETER = ",";
- 
-     @Value("${uploadSwitch}")
-@@ -143,7 +148,10 @@
-             convertDocToHtml(filePath + "\\" + file.getOriginalFilename(), filePath + "\\" + file.getOriginalFilename().split("\\.", 2)[0] + ".html");
- 
-             String url = null;
--            String xhPath = "http://218.108.11.22:8093/profile-api";
-+            SysConfig config = new SysConfig();
-+            config.setConfigKey("sys.qdip");
-+            SysConfig sysConfig = sysConfigMapper.selectConfig(config);
-+            String xhPath = sysConfig.getConfigValue() + "/profile-api";
-             if (uploadSwitch == 1) {
-                 String fn = fileName.replaceAll("\\.[^.]*$", ".html").replaceAll("/profile", "");
-                 url = xhPath + fn;
-@@ -263,8 +271,7 @@
-         // 灏嗘枃浠朵繚瀛樺埌鎸囧畾鐩綍
-         File outputFile = new File(RuoYiConfig.getUploadPath() + "/show/" + fileName.split("\\.", 2)[0] + "/" + fileName);
-         try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8"))) {
--            if (StringUtils.isNotEmpty(htmlContentVO.getContent()))
--                writer.write(htmlContentVO.getContent());
-+            if (StringUtils.isNotEmpty(htmlContentVO.getContent())) writer.write(htmlContentVO.getContent());
-         } catch (IOException e) {
-             e.printStackTrace();
-         }
-@@ -315,4 +322,26 @@
-     }
- 
- 
-+    /**
-+     * 鑾峰彇鏂囦欢鎵╁睍鍚�
-+     */
-+    private static String getFileExtension(String fileName) {
-+        int lastDotIndex = fileName.lastIndexOf('.');
-+        if (lastDotIndex > 0) {
-+            return fileName.substring(lastDotIndex);
-+        }
-+        return "";
-+    }
-+
-+    /**
-+     * 妫�鏌ユ枃浠舵槸鍚︿负鏀寔鐨刉ord鏍煎紡
-+     */
-+    public static boolean isSupportedWordFormat(String filePath) {
-+        if (filePath == null) return false;
-+        String fileName = filePath.toLowerCase();
-+        return fileName.endsWith(".doc") || fileName.endsWith(".docx");
-+    }
- }
-+
-+
-+
-Index: smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\n\r\n/**\r\n * 鎮h�呬笌瀹f暀浠诲姟鍏宠仈瀵硅薄 pat_hetask_relevance\r\n *\r\n * @author ruoyi\r\n * @date 2024-01-07\r\n */\r\n@Data\r\n@ApiModel(value = \"PatTaskRelevance\", description = \"鎮h�呬笌瀹f暀浠诲姟鍏宠仈瀵硅薄\")\r\npublic class PatTaskRelevance extends BaseEntity {\r\n\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 涓婚敭\r\n     */\r\n    @ApiModelProperty(\"涓婚敭\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"鎮h�匢D\")\r\n    @ApiModelProperty(\"鎮h�匢D\")\r\n    private Long patid;\r\n\r\n    /**\r\n     * 寰俊鍏紬鍙锋偅鑰匢D\r\n     */\r\n    @Excel(name = \"寰俊鍏紬鍙锋偅鑰匢D\")\r\n    @ApiModelProperty(\"寰俊鍏紬鍙锋偅鑰匢D\")\r\n    private String openid;\r\n\r\n    /**\r\n     * 瀹f暀浠诲姟ID\r\n     */\r\n    @Excel(name = \"瀹f暀浠诲姟ID\")\r\n    @ApiModelProperty(\"瀹f暀浠诲姟ID\")\r\n    private Long taskId;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 濮撳悕\r\n     */\r\n    @Excel(name = \"濮撳悕\")\r\n    @ApiModelProperty(\"濮撳悕\")\r\n    private String name;\r\n\r\n    /**\r\n     * 濮撳悕\r\n     */\r\n    @Excel(name = \"鍖荤敓缂栫爜\")\r\n    @ApiModelProperty(\"鍖荤敓缂栫爜\")\r\n    private String drcode;\r\n\r\n    /**\r\n     * 濮撳悕\r\n     */\r\n    @Excel(name = \"鍖荤敓濮撳悕\")\r\n    @ApiModelProperty(\"鍖荤敓濮撳悕\")\r\n    private String drname;\r\n\r\n    /**\r\n     * 璐d换鎶ゅ+缂栫爜\r\n     */\r\n    @Excel(name = \"璐d换鎶ゅ+缂栫爜\")\r\n    @ApiModelProperty(\"璐d换鎶ゅ+缂栫爜\")\r\n    private String nurseId;\r\n\r\n    /**\r\n     * 璐d换鎶ゅ+濮撳悕\r\n     */\r\n    @Excel(name = \"璐d换鎶ゅ+濮撳悕\")\r\n    @ApiModelProperty(\"璐d换鎶ゅ+濮撳悕\")\r\n    private String nurseName;\r\n\r\n\r\n    /**\r\n     * 韬唤璇佸彿\r\n     */\r\n    @Excel(name = \"韬唤璇佸彿\")\r\n    @ApiModelProperty(\"韬唤璇佸彿\")\r\n    private String sfzh;\r\n\r\n    /**\r\n     * 韬唤璇佸彿\r\n     */\r\n    @Excel(name = \"韬唤璇佸彿\")\r\n    @ApiModelProperty(\"韬唤璇佸彿\")\r\n    private String idcardno;\r\n    /**\r\n     * 韬唤璇佸彿\r\n     */\r\n    @Excel(name = \"韬唤璇佸彿\")\r\n    @ApiModelProperty(\"韬唤璇佸彿\")\r\n    private String idcardtype;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @Excel(name = \"骞撮緞\")\r\n    @ApiModelProperty(\"骞撮緞\")\r\n    private Long age;\r\n\r\n    /**\r\n     * 鎬у埆\r\n     */\r\n    @Excel(name = \"鎬у埆\")\r\n    @ApiModelProperty(\"鎬у埆\")\r\n    private Long sex;\r\n\r\n    /**\r\n     * 搴婂彿\r\n     */\r\n    @Excel(name = \"搴婂彿\")\r\n    @ApiModelProperty(\"搴婂彿\")\r\n    private String bedNo;\r\n\r\n    /**\r\n     * 绉戝\r\n     */\r\n    @Excel(name = \"绉戝\")\r\n    @ApiModelProperty(\"绉戝\")\r\n    private String deptName;\r\n\r\n    /**\r\n     * 绉戝缂栫爜\r\n     */\r\n    @Excel(name = \"绉戝缂栫爜\")\r\n    @ApiModelProperty(\"绉戝缂栫爜\")\r\n    private String deptCode;\r\n\r\n    /**\r\n     * 绉戝\r\n     */\r\n    @Excel(name = \"鍦板潃\")\r\n    @ApiModelProperty(\"鍦板潃\")\r\n    private String addr;\r\n\r\n    /**\r\n     * 鐤剧梾鍚嶇О\r\n     */\r\n    @Excel(name = \"鐤剧梾鍚嶇О\")\r\n    @ApiModelProperty(\"鐤剧梾鍚嶇О\")\r\n    private String leavediagname;\r\n\r\n    /**\r\n     * 鐤剧梾鍚嶇О\r\n     */\r\n    @Excel(name = \"鐤剧梾鍚嶇О\")\r\n    @ApiModelProperty(\"鐤剧梾鍚嶇О\")\r\n    private String leaveicd10code;\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @Excel(name = \"鎵嬫満鍙穃")\r\n    @ApiModelProperty(\"鎵嬫満鍙穃")\r\n    private String phone;\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @Excel(name = \"鎵嬫満code\")\r\n    @ApiModelProperty(\"鎵嬫満code\")\r\n    private String telcode;\r\n\r\n    /**\r\n     * 鐥呭巻鍙穃r\n     */\r\n    @Excel(name = \"鐥呭巻鍙穃")\r\n    @ApiModelProperty(\"鐥呭巻鍙穃")\r\n    private String medicalRecordNo;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬�:1鎴愬姛  2 澶辫触  3鏆傚仠\r\n     */\r\n    @Excel(name = \"鍙戦�佺姸鎬�:1鎴愬姛  2 澶辫触  3鏆傚仠\")\r\n    @ApiModelProperty(\"鍙戦�佺姸鎬�:1鎴愬姛  2 澶辫触  3鏆傚仠\")\r\n    private Long sendStatus;\r\n\r\n\r\n    /**\r\n     * 鍙戦�佹椂闂碶r\n     */\r\n    @Excel(name = \"鍙戦�佹椂闂碶")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @ApiModelProperty(\"鍙戦�佹椂闂碶")\r\n    private Date sendTime;\r\n\r\n    /**\r\n     * 鍏ラ櫌鏃堕棿\r\n     */\r\n    @Excel(name = \"鍏ラ櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @ApiModelProperty(\"鍏ラ櫌鏃堕棿\")\r\n    private Date inhosptime;\r\n\r\n    /**\r\n     * 鍙戦�佹椂闂碶r\n     */\r\n    @Excel(name = \"鍙戦�佹椂闂碶")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @ApiModelProperty(\"鍙戦�佹椂闂碶")\r\n    private Date visitTime;\r\n\r\n\r\n    /**\r\n     * 鎿嶄綔浜篭r\n     */\r\n    @Excel(name = \"鎿嶄綔浜篭")\r\n    @ApiModelProperty(\"鎿嶄綔浜篭")\r\n    private String operatePerson;\r\n\r\n    /**\r\n     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡r\n     */\r\n    @Excel(name = \"灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡")\r\n    @ApiModelProperty(\"灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡")\r\n    private String hospType;\r\n\r\n\r\n    /**\r\n     * 鎺ユ敹鏃堕棿\r\n     */\r\n    @Excel(name = \"鎺ユ敹鏃堕棿\")\r\n    @ApiModelProperty(\"鎺ユ敹鏃堕棿\")\r\n    private String receiveTime;\r\n\r\n    /**\r\n     * 璇婃柇鍚嶇О\r\n     */\r\n    @Excel(name = \"璇婃柇鍚嶇О\")\r\n    @ApiModelProperty(value = \"璇婃柇鍚嶇О\")\r\n    private String diagname;\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n    /**\r\n     * 鐥呮埧鍙穃r\n     */\r\n    @Excel(name = \"鐥呮埧鍙穃")\r\n    @ApiModelProperty(value = \"鐥呮埧鍙穃")\r\n    private String roomno;\r\n\r\n    /**\r\n     * 鏂囨湰鍙橀噺鍙傛暟\r\n     */\r\n    @Excel(name = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    private String textParam;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿\")\r\n    private String leavehospitaldistrictcode;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n\r\n    /**\r\n     * 鍑洪櫌鏃堕棿\r\n     */\r\n//    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @JsonFormat(timezone = \"GMT+8\", pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿\")\r\n    private Date endtime;\r\n\r\n    /**\r\n     * 鍏ラ櫌鏃堕棿\r\n     */\r\n//    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @JsonFormat(timezone = \"GMT+8\", pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿\")\r\n    private Date starttime;\r\n\r\n    /**\r\n     * 瀹屾垚鏃堕棿\r\n     */\r\n    @JsonFormat(timezone = \"GMT+8\", pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @ApiModelProperty(value = \"瀹屾垚鏃堕棿\")\r\n    private Date finishtime;\r\n\r\n    /**\r\n     * 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\r\n     */\r\n    @Excel(name = \" 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\")\r\n    @ApiModelProperty(value = \"闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\")\r\n    private Date longSendTime;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java b/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java
---- a/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/PatTaskRelevance.java	(date 1759112891798)
-@@ -217,7 +217,7 @@
-     @Excel(name = "鍙戦�佹椂闂�")
-     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-     @ApiModelProperty("鍙戦�佹椂闂�")
--    private Date visitTime;
-+    private Date visittime;
- 
- 
-     /**
-Index: ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.framework.interceptor;\r\n\r\n\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.apache.ibatis.executor.statement.StatementHandler;\r\nimport org.apache.ibatis.plugin.*;\r\nimport org.apache.ibatis.reflection.MetaObject;\r\nimport org.apache.ibatis.reflection.SystemMetaObject;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Component;\r\n\r\nimport java.sql.Connection;\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\nimport java.util.Properties;\r\n\r\nimport static com.ruoyi.common.utils.SecurityUtils.getLoginUser;\r\n\r\n\r\n@Component\r\n@Intercepts({@Signature(type = StatementHandler.class, method = \"prepare\", args = {Connection.class, Integer.class})})\r\npublic class HospitalFilterInterceptor implements Interceptor {\r\n\r\n    @Value(\"${spring.profiles.active}\")\r\n    private String active;\r\n\r\n    @Override\r\n    public Object intercept(Invocation invocation) throws Throwable {\r\n        // 鑾峰彇 StatementHandler\r\n        StatementHandler statementHandler = (StatementHandler) invocation.getTarget();\r\n\r\n        // 瑙e寘浠g悊瀵硅薄锛岃幏鍙栫湡姝g殑鐩爣瀵硅薄\r\n        MetaObject metaObject = SystemMetaObject.forObject(statementHandler);\r\n        while (metaObject.hasGetter(\"h\")) {\r\n            Object target = metaObject.getValue(\"h\");\r\n            metaObject = SystemMetaObject.forObject(target);\r\n        }\r\n        while (metaObject.hasGetter(\"target\")) {\r\n            Object target = metaObject.getValue(\"target\");\r\n            metaObject = SystemMetaObject.forObject(target);\r\n        }\r\n\r\n        // 鑾峰彇鍘熷 SQL\r\n        String originalSql = (String) metaObject.getValue(\"delegate.boundSql.sql\");\r\n        //娌冲崡鐨勭壒娈婅姹傦紝涓嶈orgid\r\n        if (active.equals(\"hn\")) {\r\n            String s = removeOrgIdCondition(originalSql);\r\n            // 灏嗕慨鏀瑰悗鐨� SQL 鍐欏洖\r\n            metaObject.setValue(\"delegate.boundSql.sql\", s);\r\n            return invocation.proceed();\r\n        }\r\n\r\n        // 鑾峰彇褰撳墠 orgid\r\n        String orgid = null;\r\n        try {\r\n            LoginUser loginUser = getLoginUser();\r\n            if (!ObjectUtils.isEmpty(loginUser)) {\r\n                orgid = loginUser.getUser().getOrgid();\r\n            }\r\n        } catch (Exception e) {\r\n//            e.printStackTrace();\r\n        }\r\n        if (StringUtils.isEmpty(orgid)) {\r\n            return invocation.proceed();\r\n        }\r\n\r\n        // 淇敼 SQL锛屾坊鍔� orgid 鏉′欢\r\n        String modifiedSql = modifySqlWithOrgId(originalSql, orgid);\r\n\r\n        // 灏嗕慨鏀瑰悗鐨� SQL 鍐欏洖\r\n        metaObject.setValue(\"delegate.boundSql.sql\", modifiedSql);\r\n\r\n        // 鎵ц鍚庣画鎿嶄綔\r\n        return invocation.proceed();\r\n    }\r\n\r\n    private String removeOrgIdCondition(String sql) {\r\n        // 杞崲涓哄皬鍐欎究浜庡尮閰嶏紝浣嗕繚鐣欏師濮嬪ぇ灏忓啓\r\n        String lowerSql = sql.toLowerCase();\r\n\r\n        // 鏌ユ壘 WHERE 瀛愬彞鐨勪綅缃甛r\n        int whereIndex = lowerSql.indexOf(\"where\");\r\n        if (whereIndex == -1) {\r\n            return sql; // 娌℃湁 WHERE 瀛愬彞\r\n        }\r\n\r\n        // 鎻愬彇 WHERE 涔嬪悗鐨勯儴鍒哱r\n        String whereClause = sql.substring(whereIndex + 5);\r\n        String beforeWhere = sql.substring(0, whereIndex);\r\n\r\n        // 浣跨敤姝e垯琛ㄨ揪寮忓垎鍓叉潯浠禱r\n        String[] conditions = whereClause.split(\"(?i)\\\\s+(AND|OR)\\\\s+\");\r\n\r\n        // 杩囨护鎺夊寘鍚� orgid 鐨勬潯浠禱r\n        List<String> filteredConditions = new ArrayList<>();\r\n        for (String condition : conditions) {\r\n            if (!containsOrgId(condition)) {\r\n                filteredConditions.add(condition.trim());\r\n            }\r\n        }\r\n\r\n        // 閲嶆柊鏋勫缓 SQL\r\n        if (filteredConditions.isEmpty()) {\r\n            return beforeWhere.trim();\r\n        } else {\r\n            String newWhereClause = String.join(\" AND \", filteredConditions);\r\n            return beforeWhere + \"WHERE \" + newWhereClause;\r\n        }\r\n    }\r\n\r\n    private boolean containsOrgId(String condition) {\r\n        // 妫�鏌ユ潯浠舵槸鍚﹀寘鍚� orgid锛堣�冭檻鍒悕锛塡r\n        return condition.toLowerCase().matches(\".*\\\\b(\\\\w+\\\\.)?orgid\\\\s*[=<>].*\");\r\n    }\r\n\r\n\r\n    /**\r\n     * 淇敼 SQL锛屾敞鍏� orgid 鏉′欢\r\n     *\r\n     * @param originalSql 鍘熷 SQL\r\n     * @param orgid       褰撳墠鍖婚櫌 ID\r\n     * @return 淇敼鍚庣殑 SQL\r\n     */\r\n    private String modifySqlWithOrgId(String originalSql, String orgid) {\r\n        if (originalSql.contains(\"insert into\") || originalSql.contains(\"INSERT INTO\") || originalSql.contains(\"from sys_menu\") || originalSql.contains(\"sys_job\") || originalSql.contains(\"update sys_menu\") || originalSql.contains(\"information_schema.tables\") || originalSql.contains(\"information_schema.columns\") || originalSql.contains(\"gen_table\") || originalSql.toUpperCase().contains(\"ORGID IS NULL\") || originalSql.toUpperCase().contains(\"FROM CRYXX\") || originalSql.toUpperCase().contains(\"FROM MZXX\") || originalSql.toUpperCase().contains(\"FROM JBXX\") || originalSql.toUpperCase().contains(\"FROM BMXX\") || originalSql.toUpperCase().contains(\"FROM HZJBXX\") || originalSql.toUpperCase().contains(\"RENAME TABLE\") || originalSql.toUpperCase().contains(\"FROM YHYKSXX\") || originalSql.toUpperCase().contains(\"FROM YHYJSXX\") || originalSql.toUpperCase().contains(\"ALTER TABLE\") || originalSql.toUpperCase().contains(\"CREATE TABLE\")) {\r\n            return originalSql;\r\n        }\r\n        // 鎻愬彇 orgid 鐨� WHERE 瀛愬彞\r\n        String whereClause = \" orgid = '\" + orgid + \"'\";\r\n\r\n        // 姝e垯琛ㄨ揪寮忔煡鎵� FROM 鎴� JOIN 鐨勮〃瀹氫箟\r\n        String fromPattern = \"(?i)(FROM|JOIN)\\\\s+(\\\\w+)(?:\\\\s+(\\\\w+))?\";\r\n        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(fromPattern);\r\n        java.util.regex.Matcher matcher = pattern.matcher(originalSql);\r\n\r\n        String tableOrAlias = \"\"; // 淇濆瓨涓昏〃鍚嶆垨鍒悕\r\n        if (matcher.find()) {\r\n            // 浼樺厛鍖归厤绗竴涓〃鍚嶆垨鍒悕\r\n            tableOrAlias = matcher.group(3) != null && !matcher.group(3).equals(\"JOIN\") ? matcher.group(3) : matcher.group(2);\r\n        }\r\n\r\n        // 濡傛灉鎵惧埌琛ㄥ悕鎴栧埆鍚嶏紝涓� WHERE 瀛愬彞娣诲姞鍓嶇紑\r\n        if (!tableOrAlias.isEmpty()) {\r\n            whereClause = tableOrAlias.toUpperCase() + \".\" + whereClause;\r\n            if (whereClause.contains(\"WHERE. orgid\")) {\r\n                whereClause = whereClause.replaceAll(\"WHERE. orgid\", \"orgid\");\r\n            } else {\r\n                whereClause = whereClause.toLowerCase();\r\n            }\r\n        }\r\n\r\n        // 淇敼 SQL\r\n        if (originalSql.toUpperCase().contains(\"ORGID =\") || originalSql.toUpperCase().contains(\"ORGID=\") || originalSql.toUpperCase().contains(\"ORGID IN\")) {\r\n            return originalSql;\r\n        } else if (originalSql.toUpperCase().contains(\"WHERE\")) {\r\n            // 鍦ㄥ凡鏈� WHERE 鍚庢坊鍔� orgid 鏉′欢\r\n            if (originalSql.toUpperCase().contains(\"(SELECT\")) {\r\n                int i = originalSql.toUpperCase().lastIndexOf(\"WHERE\");\r\n                if (i != -1) { // 纭繚鎵惧埌浜嗗尮閰嶉」\r\n                    // 鍒嗗壊瀛楃涓瞈r\n                    String before = originalSql.substring(0, i);\r\n                    String after = originalSql.substring(i + \"WHERE\".length());\r\n                    // 閲嶆柊缁勫悎瀛楃涓瞈r\n                    String newString = before + \"WHERE \" + whereClause + \" AND \" + after;\r\n                    return newString;\r\n                }\r\n\r\n            }\r\n            return originalSql.replaceFirst(\"(?i)WHERE\", \"WHERE \" + whereClause + \" AND \");\r\n        } else {\r\n            // 濡傛灉娌℃湁 WHERE锛屾鏌ユ槸鍚︽湁 ORDER BY 鎴� LIMIT\r\n            int orderByIndex = originalSql.toUpperCase().indexOf(\"ORDER BY\");\r\n            int limitIndex = originalSql.toUpperCase().indexOf(\"LIMIT\");\r\n            int groupByIndex = originalSql.toUpperCase().indexOf(\"GROUP BY\");\r\n\r\n            // 濡傛灉瀛樺湪 ORDER BY 鎴� LIMIT锛屾彃鍏� orgid 鏉′欢\r\n            if (orderByIndex > 0 || limitIndex > 0 || groupByIndex > 0) {\r\n                // 纭繚鍦� ORDER BY 鎴� LIMIT 鍓嶆坊鍔� WHERE 瀛愬彞\r\n                // 纭畾鎻掑叆 orgid 鏉′欢鐨勪綅缃甛r\n                int insertPos = originalSql.length();  // 榛樿鍦� SQL 鏈熬\r\n\r\n                // 鎵惧埌鏈�鏃╁嚭鐜扮殑瀛愬彞浣嶇疆锛圤RDER BY, GROUP BY, LIMIT锛塡r\n                if (orderByIndex > 0) insertPos = Math.min(insertPos, orderByIndex);\r\n                if (groupByIndex > 0) insertPos = Math.min(insertPos, groupByIndex);\r\n                if (limitIndex > 0) insertPos = Math.min(insertPos, limitIndex);\r\n                String s = originalSql.substring(0, insertPos) + \" WHERE \" + whereClause + \" \" + originalSql.substring(insertPos);\r\n                if (s.contains(\"LIMIT. orgid\")) {\r\n                    s = s.replace(\"LIMIT. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"limit. orgid\")) {\r\n                    s = s.replace(\"limit. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"ORDER BY. orgid\")) {\r\n                    s = s.replace(\"ORDER BY. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"order by. orgid\")) {\r\n                    s = s.replace(\"order by. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"ORDER. orgid\")) {\r\n                    s = s.replace(\"ORDER. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"order. orgid\")) {\r\n                    s = s.replace(\"order. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"GROUP BY. orgid\")) {\r\n                    s = s.replace(\"GROUP BY. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"group by. orgid\")) {\r\n                    s = s.replace(\"group by. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"GROUP. orgid\")) {\r\n                    s = s.replace(\"GROUP. orgid\", \"orgid\");\r\n                }\r\n                if (s.contains(\"group. orgid\")) {\r\n                    s = s.replace(\"group. orgid\", \"orgid\");\r\n                }\r\n                return s;\r\n            } else {\r\n                // 濡傛灉娌℃湁 WHERE锛屼篃娌℃湁 ORDER BY 鎴� LIMIT锛岀洿鎺ュ姞 WHERE\r\n                return originalSql + \" WHERE \" + whereClause;\r\n            }\r\n        }\r\n    }\r\n\r\n    @Override\r\n    public Object plugin(Object target) {\r\n        // 鍖呰鐩爣瀵硅薄\r\n        return Plugin.wrap(target, this);\r\n    }\r\n\r\n    @Override\r\n    public void setProperties(Properties properties) {\r\n        // 鍙缃彃浠剁殑鍙傛暟锛堟殏鏃舵棤闇�璁剧疆锛塡r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java
---- a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java	(date 1758798202563)
-@@ -12,8 +12,6 @@
- import org.springframework.stereotype.Component;
- 
- import java.sql.Connection;
--import java.util.ArrayList;
--import java.util.List;
- import java.util.Properties;
- 
- import static com.ruoyi.common.utils.SecurityUtils.getLoginUser;
-@@ -44,13 +42,6 @@
- 
-         // 鑾峰彇鍘熷 SQL
-         String originalSql = (String) metaObject.getValue("delegate.boundSql.sql");
--        //娌冲崡鐨勭壒娈婅姹傦紝涓嶈orgid
--        if (active.equals("hn")) {
--            String s = removeOrgIdCondition(originalSql);
--            // 灏嗕慨鏀瑰悗鐨� SQL 鍐欏洖
--            metaObject.setValue("delegate.boundSql.sql", s);
--            return invocation.proceed();
--        }
- 
-         // 鑾峰彇褰撳墠 orgid
-         String orgid = null;
-@@ -62,7 +53,7 @@
-         } catch (Exception e) {
- //            e.printStackTrace();
-         }
--        if (StringUtils.isEmpty(orgid)) {
-+        if (StringUtils.isEmpty(orgid) || active.equals("hn")) {
-             return invocation.proceed();
-         }
- 
-@@ -76,39 +67,6 @@
-         return invocation.proceed();
-     }
- 
--    private String removeOrgIdCondition(String sql) {
--        // 杞崲涓哄皬鍐欎究浜庡尮閰嶏紝浣嗕繚鐣欏師濮嬪ぇ灏忓啓
--        String lowerSql = sql.toLowerCase();
--
--        // 鏌ユ壘 WHERE 瀛愬彞鐨勪綅缃�
--        int whereIndex = lowerSql.indexOf("where");
--        if (whereIndex == -1) {
--            return sql; // 娌℃湁 WHERE 瀛愬彞
--        }
--
--        // 鎻愬彇 WHERE 涔嬪悗鐨勯儴鍒�
--        String whereClause = sql.substring(whereIndex + 5);
--        String beforeWhere = sql.substring(0, whereIndex);
--
--        // 浣跨敤姝e垯琛ㄨ揪寮忓垎鍓叉潯浠�
--        String[] conditions = whereClause.split("(?i)\\s+(AND|OR)\\s+");
--
--        // 杩囨护鎺夊寘鍚� orgid 鐨勬潯浠�
--        List<String> filteredConditions = new ArrayList<>();
--        for (String condition : conditions) {
--            if (!containsOrgId(condition)) {
--                filteredConditions.add(condition.trim());
--            }
--        }
--
--        // 閲嶆柊鏋勫缓 SQL
--        if (filteredConditions.isEmpty()) {
--            return beforeWhere.trim();
--        } else {
--            String newWhereClause = String.join(" AND ", filteredConditions);
--            return beforeWhere + "WHERE " + newWhereClause;
--        }
--    }
- 
-     private boolean containsOrgId(String condition) {
-         // 妫�鏌ユ潯浠舵槸鍚﹀寘鍚� orgid锛堣�冭檻鍒悕锛�
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.common;\r\n\r\nimport com.ruoyi.common.config.RuoYiConfig;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.file.FileUtils;\r\nimport com.ruoyi.common.utils.sms.smsUtils;\r\nimport com.ruoyi.framework.config.ServerConfig;\r\nimport com.smartor.domain.HtmlContentVO;\r\nimport com.smartor.domain.ServiceOutPath;\r\nimport com.smartor.domain.smsVO;\r\nimport com.smartor.service.IServiceOutPathService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.http.MediaType;\r\nimport org.springframework.web.bind.annotation.*;\r\n\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.io.UnsupportedEncodingException;\r\nimport java.net.URLEncoder;\r\nimport java.nio.charset.StandardCharsets;\r\nimport java.util.Date;\r\n\r\n@RestController\r\n@Api(description = \"鐭ヤ俊鎺ュ彛\")\r\n@RequestMapping(\"/sms\")\r\npublic class SmsController {\r\n    @Value(\"${xhsmsPath}\")\r\n    private String xhsmsPath;\r\n\r\n    @Value(\"${xhsmsAccount}\")\r\n    private String xhsmsAccount;\r\n\r\n    @Value(\"${xhsmsPwd}\")\r\n    private String xhsmsPwd;\r\n\r\n    @Value(\"${localIP}\")\r\n    private String ip;\r\n\r\n    @Value(\"${req_path}\")\r\n    private String req_path;\r\n\r\n    @Value(\"${pub_key}\")\r\n    private String pub_key;\r\n\r\n    @Autowired\r\n    private IServiceOutPathService iServiceOutPathService;\r\n\r\n\r\n    /**\r\n     * @param\r\n     * @return\r\n     */\r\n    @ApiOperation(\"鐭俊鍙戦�乗")\r\n    @PostMapping(\"/send\")\r\n    public AjaxResult send(@RequestBody smsVO vo) {\r\n        String sendMsg=smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,vo.getPhone(),vo.getContent());\r\n        return AjaxResult.success(sendMsg);\r\n    }\r\n    /**\r\n     * @param\r\n     * @return\r\n     */\r\n    @ApiOperation(\"鐭俊鍙戦�乗")\r\n    @PostMapping(\"/sendAsk\")\r\n    public AjaxResult sendAsk(@RequestBody smsVO vo) throws UnsupportedEncodingException {\r\n        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n        String taskId = rsaPublicKeyExample.encryptedData(vo.getTaskId().toString(), pub_key);\r\n        String patid = rsaPublicKeyExample.encryptedData(vo.getPatId().toString(), pub_key);\r\n        String subId = rsaPublicKeyExample.encryptedData(vo.getSubId().toString(), pub_key);\r\n        ServiceOutPath serviceOutPath = new ServiceOutPath();\r\n        serviceOutPath.setParam1(taskId);\r\n        serviceOutPath.setParam2(patid);\r\n        serviceOutPath.setParam3(vo.getTaskName());\r\n        serviceOutPath.setParam6(subId);\r\n        serviceOutPath.setCreateTime(new Date());\r\n        iServiceOutPathService.insertServiceOutPath(serviceOutPath);\r\n        String format = String.format(\"%03X\", serviceOutPath.getId());\r\n        serviceOutPath.setRadix(format);\r\n        serviceOutPath.setUpdateTime(new Date());\r\n        iServiceOutPathService.updateServiceOutPath(serviceOutPath);\r\n        String url=ip + \":\" + req_path + \"/wt?p=\" + format;\r\n\r\n        //String url = = ip + \":\" + req_path + \"/outsideChainwt?param1=\" + taskId + \"&param2=\" + patid + \"&param3=\" + URLEncoder.encode(vo.getTaskName(), StandardCharsets.UTF_8.toString()) + \"&param5=false\";\r\n\r\n        String content=\"鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑籠" + url + \"濉啓銆傛劅璋㈡偍閰嶅悎锛乗";\r\n\r\n        String sendMsg=smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,vo.getPhone(),content);\r\n        return AjaxResult.success(sendMsg);\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java	(date 1758870885290)
-@@ -9,7 +9,9 @@
- import com.ruoyi.framework.config.ServerConfig;
- import com.smartor.domain.HtmlContentVO;
- import com.smartor.domain.ServiceOutPath;
-+import com.smartor.domain.ServiceTask;
- import com.smartor.domain.smsVO;
-+import com.smartor.mapper.ServiceTaskMapper;
- import com.smartor.service.IServiceOutPathService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
-@@ -50,6 +52,9 @@
-     @Autowired
-     private IServiceOutPathService iServiceOutPathService;
- 
-+    @Autowired
-+    private ServiceTaskMapper serviceTaskMapper;
-+
- 
-     /**
-      * @param
-@@ -58,9 +63,10 @@
-     @ApiOperation("鐭俊鍙戦��")
-     @PostMapping("/send")
-     public AjaxResult send(@RequestBody smsVO vo) {
--        String sendMsg=smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,vo.getPhone(),vo.getContent());
-+        String sendMsg = smsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, vo.getPhone(), vo.getContent());
-         return AjaxResult.success(sendMsg);
-     }
-+
-     /**
-      * @param
-      * @return
-@@ -83,13 +89,19 @@
-         serviceOutPath.setRadix(format);
-         serviceOutPath.setUpdateTime(new Date());
-         iServiceOutPathService.updateServiceOutPath(serviceOutPath);
--        String url=ip + ":" + req_path + "/wt?p=" + format;
-+        String url = ip + ":" + req_path + "/wt?p=" + format;
-+        ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(Long.valueOf(taskId));
-+        //濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛�
-+        if (serviceTask.getType().equals("1")) {
-+            url = ip + ":" + req_path + "/sf?p=" + format;
-+        }
-+
- 
-         //String url = = ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(vo.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false";
- 
--        String content="鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + url + "濉啓銆傛劅璋㈡偍閰嶅悎锛�";
-+        String content = "鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + url + "濉啓銆傛劅璋㈡偍閰嶅悎锛�";
- 
--        String sendMsg=smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,vo.getPhone(),content);
-+        String sendMsg = smsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, vo.getPhone(), content);
-         return AjaxResult.success(sendMsg);
-     }
- }
-Index: ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.common.core.redis;\r\n\r\nimport java.util.*;\r\nimport java.util.concurrent.TimeUnit;\r\nimport java.util.stream.Collectors;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.data.redis.connection.DataType;\r\nimport org.springframework.data.redis.core.*;\r\nimport org.springframework.stereotype.Component;\r\n\r\n/**\r\n * spring redis 宸ュ叿绫籠r\n *\r\n * @author ruoyi\r\n **/\r\n@SuppressWarnings(value = {\"unchecked\", \"rawtypes\"})\r\n@Component\r\npublic class RedisCache {\r\n    @Autowired\r\n    public RedisTemplate redisTemplate;\r\n\r\n    /**\r\n     * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛塡r\n     *\r\n     * @param key   缂撳瓨鐨勯敭鍊糪r\n     * @param value 缂撳瓨鐨勫�糪r\n     */\r\n    public <T> void setCacheObject(final String key, final T value) {\r\n        redisTemplate.opsForValue().set(key, value);\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛塡r\n     *\r\n     * @param key      缂撳瓨鐨勯敭鍊糪r\n     * @param value    缂撳瓨鐨勫�糪r\n     * @param timeout  鏃堕棿\r\n     * @param timeUnit 鏃堕棿棰楃矑搴r\n     */\r\n    public <T> void setCacheObject(final String key, final T value, final long timeout, final TimeUnit timeUnit) {\r\n        redisTemplate.opsForValue().set(key, value, timeout, timeUnit);\r\n    }\r\n\r\n    /**\r\n     * 璁剧疆鏈夋晥鏃堕棿\r\n     *\r\n     * @param key     Redis閿甛r\n     * @param timeout 瓒呮椂鏃堕棿\r\n     * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触\r\n     */\r\n    public boolean expire(final String key, final long timeout) {\r\n        return expire(key, timeout, TimeUnit.SECONDS);\r\n    }\r\n\r\n    /**\r\n     * 璁剧疆鏈夋晥鏃堕棿\r\n     *\r\n     * @param key     Redis閿甛r\n     * @param timeout 瓒呮椂鏃堕棿\r\n     * @param unit    鏃堕棿鍗曚綅\r\n     * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触\r\n     */\r\n    public boolean expire(final String key, final long timeout, final TimeUnit unit) {\r\n        return redisTemplate.expire(key, timeout, unit);\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鏈夋晥鏃堕棿\r\n     *\r\n     * @param key Redis閿甛r\n     * @return 鏈夋晥鏃堕棿\r\n     */\r\n    public long getExpire(final String key) {\r\n        return redisTemplate.getExpire(key);\r\n    }\r\n\r\n    /**\r\n     * 鍒ゆ柇 key鏄惁瀛樺湪\r\n     *\r\n     * @param key 閿甛r\n     * @return true 瀛樺湪 false涓嶅瓨鍦╘r\n     */\r\n    public Boolean hasKey(String key) {\r\n        return redisTemplate.hasKey(key);\r\n    }\r\n\r\n    /**\r\n     * 鑾峰緱缂撳瓨鐨勫熀鏈璞°�俓r\n     *\r\n     * @param key 缂撳瓨閿�糪r\n     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁\r\n     */\r\n    public <T> T getCacheObject(final String key) {\r\n        ValueOperations<String, T> operation = redisTemplate.opsForValue();\r\n        return operation.get(key);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鍗曚釜瀵硅薄\r\n     *\r\n     * @param key\r\n     */\r\n    public boolean deleteObject(final String key) {\r\n        return redisTemplate.delete(key);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎闆嗗悎瀵硅薄\r\n     *\r\n     * @param collection 澶氫釜瀵硅薄\r\n     * @return\r\n     */\r\n    public boolean deleteObject(final Collection collection) {\r\n        return redisTemplate.delete(collection) > 0;\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨List鏁版嵁\r\n     *\r\n     * @param key      缂撳瓨鐨勯敭鍊糪r\n     * @param dataList 寰呯紦瀛樼殑List鏁版嵁\r\n     * @return 缂撳瓨鐨勫璞r\n     */\r\n    public <T> long setCacheListRight(final String key, final List<T> dataList) {\r\n        Long count = redisTemplate.opsForList().rightPushAll(key, dataList);\r\n        return count == null ? 0 : count;\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨List鏁版嵁\r\n     *\r\n     * @param key      缂撳瓨鐨勯敭鍊糪r\n     * @param dataList 寰呯紦瀛樼殑List鏁版嵁(杩欓噷濡傛灉鏂板鐨勮瘽锛屾槸寰�澶撮儴鏂板)\r\n     * @return 缂撳瓨鐨勫璞r\n     */\r\n    public <T> long setCacheListLeft(final String key, final List<T> dataList) {\r\n        Long count = redisTemplate.opsForList().leftPushAll(key, dataList);\r\n        return count == null ? 0 : count;\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨List鏁版嵁\r\n     *\r\n     * @param cacheKey 缂撳瓨鐨勯敭鍊糪r\n     * @param list     寰呯紦瀛樼殑List鏁版嵁(杩欓噷濡傛灉鏂板鐨勮瘽锛屾槸寰�澶撮儴鏂板)骞跺幓閲峔r\n     * @return 缂撳瓨鐨勫璞r\n     */\r\n    public void setCacheListLeftAndDistinct(String cacheKey, List<String> list) {\r\n        // 妫�鏌� key 绫诲瀷\r\n        DataType keyType = redisTemplate.type(cacheKey);\r\n        if (keyType != DataType.NONE && keyType != DataType.LIST) {\r\n            // 濡傛灉宸茬粡瀛樺湪浣嗕笉鏄� list 绫诲瀷锛屽垹闄ゅ畠锛堟垨鐩存帴鎶涘紓甯镐篃鍙級\r\n            redisTemplate.delete(cacheKey);\r\n        }\r\n\r\n        ListOperations<String, String> listOps = redisTemplate.opsForList();\r\n        List<String> existingValues = listOps.range(cacheKey, 0, -1);\r\n\r\n        List<String> newValues = list.stream().filter(value -> !existingValues.contains(value)).collect(Collectors.toList());\r\n\r\n        if (!newValues.isEmpty()) {\r\n            listOps.leftPushAll(cacheKey, newValues);\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * 鑾峰緱缂撳瓨鐨刲ist瀵硅薄\r\n     *\r\n     * @param key 缂撳瓨鐨勯敭鍊糪r\n     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁\r\n     */\r\n    public <T> List<T> getCacheList(final String key) {\r\n        return redisTemplate.opsForList().range(key, 0, -1);\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨Set\r\n     *\r\n     * @param key     缂撳瓨閿�糪r\n     * @param dataSet 缂撳瓨鐨勬暟鎹甛r\n     * @return 缂撳瓨鏁版嵁鐨勫璞r\n     */\r\n    public <T> BoundSetOperations<String, T> setCacheSet(final String key, final Set<T> dataSet) {\r\n        BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);\r\n        Iterator<T> it = dataSet.iterator();\r\n        while (it.hasNext()) {\r\n            setOperation.add(it.next());\r\n        }\r\n        return setOperation;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰緱缂撳瓨鐨剆et\r\n     *\r\n     * @param key\r\n     * @return\r\n     */\r\n    public <T> Set<T> getCacheSet(final String key) {\r\n        return redisTemplate.opsForSet().members(key);\r\n    }\r\n\r\n    /**\r\n     * 缂撳瓨Map\r\n     *\r\n     * @param key\r\n     * @param dataMap\r\n     */\r\n    public <T> void setCacheMap(final String key, final Map<String, T> dataMap) {\r\n        if (dataMap != null) {\r\n            redisTemplate.opsForHash().putAll(key, dataMap);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鎵�鏈塳ey\r\n     *\r\n     * @return\r\n     */\r\n    public Set<String> getAllKeys() {\r\n        return redisTemplate.keys(\"*\");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰緱缂撳瓨鐨凪ap\r\n     *\r\n     * @param key\r\n     * @return\r\n     */\r\n    public <T> Map<String, T> getCacheMap(final String key) {\r\n        return redisTemplate.opsForHash().entries(key);\r\n    }\r\n\r\n    /**\r\n     * 寰�Hash涓瓨鍏ユ暟鎹甛r\n     *\r\n     * @param key   Redis閿甛r\n     * @param hKey  Hash閿甛r\n     * @param value 鍊糪r\n     */\r\n    public <T> void setCacheMapValue(final String key, final String hKey, final T value) {\r\n        redisTemplate.opsForHash().put(key, hKey, value);\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇Hash涓殑鏁版嵁\r\n     *\r\n     * @param key  Redis閿甛r\n     * @param hKey Hash閿甛r\n     * @return Hash涓殑瀵硅薄\r\n     */\r\n    public <T> T getCacheMapValue(final String key, final String hKey) {\r\n        HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash();\r\n        return opsForHash.get(key, hKey);\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇澶氫釜Hash涓殑鏁版嵁\r\n     *\r\n     * @param key   Redis閿甛r\n     * @param hKeys Hash閿泦鍚圽r\n     * @return Hash瀵硅薄闆嗗悎\r\n     */\r\n    public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys) {\r\n        return redisTemplate.opsForHash().multiGet(key, hKeys);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎Hash涓殑鏌愭潯鏁版嵁\r\n     *\r\n     * @param key  Redis閿甛r\n     * @param hKey Hash閿甛r\n     * @return 鏄惁鎴愬姛\r\n     */\r\n    public boolean deleteCacheMapValue(final String key, final String hKey) {\r\n        return redisTemplate.opsForHash().delete(key, hKey) > 0;\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎缂撳瓨LIST涓殑鏌愪釜鏁版嵁\r\n     *\r\n     * @param key           Redis閿甛r\n     * @param valueToRemove 闇�瑕佸垹闄ょ殑鍊糪r\n     * @return Long 澶т簬0琛ㄧず鍒犻櫎浜嗗嚑涓紝绛変簬0琛ㄧず娌℃湁鍒犻櫎锛屽皬浜�0琛ㄧず鍦ㄦ墽琛屽垹闄ゆ搷浣滄椂鍙戠敓浜嗛敊璇痋r\n     */\r\n    public Long removeElementFromList(String key, String valueToRemove) {\r\n        ListOperations<String, String> listOps = redisTemplate.opsForList();\r\n        Long remove = listOps.remove(key, 0, valueToRemove);\r\n        return remove;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰緱缂撳瓨鐨勫熀鏈璞″垪琛╘r\n     *\r\n     * @param pattern 瀛楃涓插墠缂�\r\n     * @return 瀵硅薄鍒楄〃\r\n     */\r\n    public Collection<String> keys(final String pattern) {\r\n        return redisTemplate.keys(pattern);\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java
---- a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java	(date 1758798058045)
-@@ -30,6 +30,10 @@
-         redisTemplate.opsForValue().set(key, value);
-     }
- 
-+    public <T> void setCacheList(final String key, final List<T> values) {
-+        redisTemplate.opsForList().rightPushAll(key, values);
-+    }
-+
-     /**
-      * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛�
-      *
-@@ -299,4 +303,13 @@
-     public Collection<String> keys(final String pattern) {
-         return redisTemplate.keys(pattern);
-     }
-+
-+    /**
-+     * 鑾峰彇褰撳墠key鍊肩殑鏁伴噺
-+     * @param key
-+     * @return
-+     */
-+    public Long getListSize(String key) {
-+        return redisTemplate.opsForList().size(key);
-+    }
- }
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.system;\r\n\r\nimport com.ruoyi.common.annotation.IpWhitelist;\r\nimport com.ruoyi.common.constant.Constants;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysMenu;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.entity.SysUserDept;\r\nimport com.ruoyi.common.core.domain.model.LoginBody;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.SecurityUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.framework.web.service.SysLoginService;\r\nimport com.ruoyi.framework.web.service.SysPermissionService;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.ruoyi.system.service.ISysDeptService;\r\nimport com.ruoyi.system.service.ISysMenuService;\r\nimport com.smartor.mapper.SysUserDeptMapper;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.http.HttpStatus;\r\nimport org.springframework.web.bind.annotation.*;\r\nimport org.springframework.web.servlet.view.RedirectView;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.io.IOException;\r\nimport java.util.List;\r\nimport java.util.Set;\r\n\r\n/**\r\n * 鐧诲綍楠岃瘉\r\n *\r\n * @author ruoyi\r\n */\r\n@Slf4j\r\n@RestController\r\npublic class SysLoginController {\r\n    @Autowired\r\n    private SysLoginService loginService;\r\n\r\n    @Autowired\r\n    private ISysMenuService menuService;\r\n\r\n    @Autowired\r\n    private ISysDeptService sysDeptService;\r\n\r\n    @Autowired\r\n    private SysPermissionService permissionService;\r\n\r\n    @Autowired\r\n    private ISysConfigService sysConfigService;\r\n\r\n\r\n    @Value(\"${pri_key}\")\r\n    private String pri_key;\r\n\r\n    @Value(\"${isEncryp}\")\r\n    private Integer isEncryp;\r\n\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    /**\r\n     * 鐧诲綍鏂规硶\r\n     *\r\n     * @param loginBody 鐧诲綍淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @PostMapping(\"/login\")\r\n    public AjaxResult login(@RequestBody LoginBody loginBody) {\r\n        AjaxResult ajax = AjaxResult.success();\r\n        // 鐢熸垚浠ょ墝\r\n        String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid(), loginBody.getOrgid());\r\n        ajax.put(Constants.TOKEN, token);\r\n        return ajax;\r\n    }\r\n\r\n    /**\r\n     * 鍗曠偣鐧诲綍鏂规硶(闇�瑕侀厤缃甀P鐧藉悕鍗�)\r\n     * 闇�瑕佸湪sys_config琛ㄧ殑sys.ip.whitelis涓紝鍔犲叆IP鎵嶈兘璁块棶璇ユ柟娉昞r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    @IpWhitelist\r\n    @GetMapping(\"/SSOLogin\")\r\n    public RedirectView SSOLogin(@RequestParam String userName, @RequestParam String orgid, @RequestParam(required = false) String deptId) {\r\n        RedirectView redirectView = new RedirectView();\r\n        // 鐢熸垚浠ょ墝\r\n        if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(orgid)) {\r\n            throw new BaseException(\"鐢ㄦ埛鍚嶆垨缁勭粐鏈烘瀯鎴栭儴闂ㄤ笉鑳戒负绌篭");\r\n        }\r\n        if (isEncryp == 1) {\r\n            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n            userName = rsaPublicKeyExample.decryptedData(userName, pri_key);\r\n        }\r\n        String token = loginService.loginByUserName(userName + \"&\" + orgid + \"&\" + deptId);\r\n        if (StringUtils.isEmpty(token)) {\r\n            throw new BaseException(\"鐧婚檰澶辫触\");\r\n        }\r\n        String path = sysConfigService.selectConfigByKey(\"sys.qddz\");\r\n        if(StringUtils.isEmpty(path)){\r\n            throw new BaseException(\"璇烽厤缃墠绔湴鍧�\");\r\n        }\r\n        log.info(\"鍗曠偣鐧婚檰閲嶅畾鍚戝湴鍧�涓猴細{}\",path + \"/loginSSO?token=\" + token + \"&orgid=\" + orgid + \"&orgname=''\" + \"&ZuHuID=''&deptCode=''\");\r\n        redirectView.setUrl(path + \"/loginSSO?token=\" + token + \"&orgid=\" + orgid + \"&orgname=null\" + \"&ZuHuID=null&deptCode=null\");\r\n        redirectView.setStatusCode(HttpStatus.MOVED_PERMANENTLY);\r\n        return redirectView;\r\n    }\r\n\r\n\r\n    @GetMapping(\"/getToken\")\r\n    public void getToken(HttpServletResponse response) throws IOException {\r\n        // 鐢熸垚鎴栬幏鍙杢oken\r\n        String token = \"eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjRiZGRkMTI0LTViNWMtNDhmMC05YjNkLTA0YjFiMzU0Nzg5NSJ9.16hHNas7jXTlHVrnlZgAJ-YViD44YkKFuoxJxMPm5QLPeSHn3wRyd9xE0Bi7YMdO3zKcZNo6ef5diZvDWN7ImA\";\r\n        // 璁剧疆鍝嶅簲澶达紝鍓嶇鍙互浠庡搷搴斿ご鑾峰彇token\r\n        response.addHeader(\"Authorization\", \"Bearer \" + token);\r\n\r\n        // 濡傛灉闇�瑕佽繘琛岄〉闈㈣烦杞紝鍙互璁剧疆鐘舵�佺爜涓�302锛屽苟璁剧疆Location澶撮儴\r\n        response.setStatus(302);\r\n        response.setHeader(\"Location\", \"http://localhost:8099/tool/module/classifythreea\");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鐢ㄦ埛淇℃伅\r\n     *\r\n     * @return 鐢ㄦ埛淇℃伅\r\n     */\r\n    @GetMapping(\"getInfo\")\r\n    public AjaxResult getInfo() {\r\n        SysUser user = SecurityUtils.getLoginUser().getUser();\r\n        // 瑙掕壊闆嗗悎\r\n        Set<String> roles = permissionService.getRolePermission(user);\r\n        // 鏉冮檺闆嗗悎\r\n        Set<String> permissions = permissionService.getMenuPermission(user);\r\n        AjaxResult ajax = AjaxResult.success();\r\n        ajax.put(\"user\", user);\r\n        ajax.put(\"roles\", roles);\r\n        ajax.put(\"permissions\", permissions);\r\n        List<SysUserDept> sysUserDeptKSs = null;\r\n        List<SysUserDept> sysUserDeptBQs = null;\r\n        SysUserDept sysUserDept = new SysUserDept();\r\n        sysUserDept.setUserId(user.getUserId());\r\n        sysUserDept.setDeptType(\"1\");\r\n        sysUserDept.setOrgid(user.getOrgid());\r\n        sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        ajax.put(\"belongDepts\", sysUserDeptKSs);\r\n        sysUserDept.setDeptType(\"2\");\r\n        sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        ajax.put(\"belongWards\", sysUserDeptBQs);\r\n\r\n        return ajax;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇璺敱淇℃伅\r\n     *\r\n     * @return 璺敱淇℃伅\r\n     */\r\n    @GetMapping(\"getRouters\")\r\n    public AjaxResult getRouters() {\r\n        Long userId = SecurityUtils.getUserId();\r\n        log.info(\"----------getRouters鐨剈serId鍏ュ弬涓猴細{}\", userId);\r\n        List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);\r\n        return AjaxResult.success(menuService.buildMenus(menus));\r\n    }\r\n\r\n    @GetMapping(\"/getDept/{orgid}\")\r\n    public AjaxResult getDept(@PathVariable String orgid) {\r\n        return AjaxResult.success(sysDeptService.selectDept(orgid));\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java	(date 1758798202573)
-@@ -1,13 +1,11 @@
- package com.ruoyi.web.controller.system;
- 
--import com.ruoyi.common.annotation.IpWhitelist;
- import com.ruoyi.common.constant.Constants;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.common.core.domain.entity.SysMenu;
- import com.ruoyi.common.core.domain.entity.SysUser;
- import com.ruoyi.common.core.domain.entity.SysUserDept;
- import com.ruoyi.common.core.domain.model.LoginBody;
--import com.ruoyi.common.core.domain.model.LoginUser;
- import com.ruoyi.common.exception.base.BaseException;
- import com.ruoyi.common.utils.RSAPublicKeyExample;
- import com.ruoyi.common.utils.SecurityUtils;
-@@ -18,6 +16,7 @@
- import com.ruoyi.system.service.ISysDeptService;
- import com.ruoyi.system.service.ISysMenuService;
- import com.smartor.mapper.SysUserDeptMapper;
-+import com.smartor.service.impl.ServiceSLTDHealthcareRecordServiceImpl;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
-@@ -27,7 +26,9 @@
- 
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
-+import java.util.HashMap;
- import java.util.List;
-+import java.util.Map;
- import java.util.Set;
- 
- /**
-@@ -60,6 +61,14 @@
-     @Value("${isEncryp}")
-     private Integer isEncryp;
- 
-+
-+    @Value("${sltd_pub_path}")
-+    private String sltdPubPath;
-+
-+
-+    @Value("${spring.profiles.active}")
-+    private String active;
-+
-     @Autowired
-     private SysUserDeptMapper sysUserDeptMapper;
- 
-@@ -81,31 +90,64 @@
-     /**
-      * 鍗曠偣鐧诲綍鏂规硶(闇�瑕侀厤缃甀P鐧藉悕鍗�)
-      * 闇�瑕佸湪sys_config琛ㄧ殑sys.ip.whitelis涓紝鍔犲叆IP鎵嶈兘璁块棶璇ユ柟娉�
-+     * <p>
-+     * 鍙傛暟鍚屾椂涓虹┖锛屼笉缁欐煡璇㈡暟鎹�
-+     * <p>
-+     * 銆愬叆鍙傝鍒欍��
-+     * 濡傛灉userName涓嶄负绌猴紝閭rgid涔熶笉鑳戒负绌�
-+     * 濡傛灉涓婇潰涓や釜涓虹┖锛岄偅token涓嶈兘涓虹┖
-      *
-      * @return 缁撴灉
-      */
--    @IpWhitelist
-+//    @IpWhitelist
-     @GetMapping("/SSOLogin")
--    public RedirectView SSOLogin(@RequestParam String userName, @RequestParam String orgid, @RequestParam(required = false) String deptId) {
-+    public RedirectView SSOLogin(@RequestParam(required = false) String userName, @RequestParam(required = false) String orgid, @RequestParam(required = false) String deptId, @RequestParam(required = false) String token) {
-+        if (StringUtils.isEmpty(userName) && StringUtils.isEmpty(token)) {
-+            throw new BaseException("鍙傛暟涓嶈兘涓虹┖");
-+        }
-+        log.info("--------杩涙柟娉曚簡鍚�?{}", token);
-+        // 閲嶅畾鍚戝湴鍧�瀵硅薄(閲嶅畾鍚戝湴鍧�
-         RedirectView redirectView = new RedirectView();
-+//        if (active.equals("sltd")) {
-+//            Map<String, String> headers = buildRequestHeaders();
-+//            Map<String, String> requestParams = new HashMap<>();
-+//            requestParams.put("token", token);
-+//            String reqData = HttpUtil.postFormRequest(sltdPubPath + "/checkSsoTokenId", requestParams, headers, null);
-+//            log.info("銆�-----杩斿洖鐨勭粨鏋滀负銆戯細{}", reqData);
-+//            if (StringUtils.isEmpty(reqData)) {
-+//                throw new BaseException("token楠岃瘉澶辫触");
-+//            }
-+//
-+//            Map<String, Object> map = JSONObject.parseObject(reqData, Map.class);
-+//            if (ObjectUtils.isEmpty(map) || (Integer) map.get("code") != 200) {
-+//                throw new BaseException("token楠岃瘉澶辫触");
-+//            }
-+//
-+//            Map<String, Object> data = (Map<String, Object>) map.get("data");
-+//            //鍛樺伐缂栫爜
-+//            userName = (String) data.get("accountNo");
-+//        }
-+        log.info("銆�-----------userName鐨勫�间负锛歿}銆�", userName);
-         // 鐢熸垚浠ょ墝
-         if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(orgid)) {
-             throw new BaseException("鐢ㄦ埛鍚嶆垨缁勭粐鏈烘瀯鎴栭儴闂ㄤ笉鑳戒负绌�");
-         }
--        if (isEncryp == 1) {
-+        if (isEncryp != null && isEncryp == 1) {
-             RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-             userName = rsaPublicKeyExample.decryptedData(userName, pri_key);
-         }
--        String token = loginService.loginByUserName(userName + "&" + orgid + "&" + deptId);
--        if (StringUtils.isEmpty(token)) {
-+
-+        String token2 = loginService.loginByUserName(userName + "&" + orgid + "&" + deptId);
-+        if (StringUtils.isEmpty(token2)) {
-             throw new BaseException("鐧婚檰澶辫触");
-         }
-+
-         String path = sysConfigService.selectConfigByKey("sys.qddz");
--        if(StringUtils.isEmpty(path)){
-+        if (StringUtils.isEmpty(path)) {
-             throw new BaseException("璇烽厤缃墠绔湴鍧�");
-         }
--        log.info("鍗曠偣鐧婚檰閲嶅畾鍚戝湴鍧�涓猴細{}",path + "/loginSSO?token=" + token + "&orgid=" + orgid + "&orgname=''" + "&ZuHuID=''&deptCode=''");
--        redirectView.setUrl(path + "/loginSSO?token=" + token + "&orgid=" + orgid + "&orgname=null" + "&ZuHuID=null&deptCode=null");
-+        log.info("鍗曠偣鐧婚檰閲嶅畾鍚戝湴鍧�涓猴細{}", path + "/loginSSO?token=" + token2 + "&orgid=" + orgid + "&orgname=''" + "&ZuHuID=''&deptCode=''");
-+        redirectView.setUrl(path + "/loginSSO?token=" + token2 + "&orgid=" + orgid + "&orgname=null" + "&ZuHuID=null&deptCode=null");
-         redirectView.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
-         return redirectView;
-     }
-@@ -171,4 +213,12 @@
-     public AjaxResult getDept(@PathVariable String orgid) {
-         return AjaxResult.success(sysDeptService.selectDept(orgid));
-     }
-+
-+
-+    private Map<String, String> buildRequestHeaders() {
-+        Map<String, String> headers = new HashMap<>();
-+//        headers.put("Content-Type", "application/json");
-+        headers.put("app-key", ServiceSLTDHealthcareRecordServiceImpl.APP_KEY);
-+        return headers;
-+    }
- }
-Index: smartor/src/main/java/com/smartor/domain/ServiceTask.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 璇煶浠诲姟瀵硅薄 ivr_task\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@ApiModel(value = \"ServiceTask\", description = \"浠诲姟瀵硅薄\")\r\n@Data\r\npublic class ServiceTask extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 涓婚敭\r\n     */\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 浠诲姟鍚嶇О\r\n     */\r\n    @Excel(name = \"浠诲姟鍚嶇О  \")\r\n    @ApiModelProperty(value = \"浠诲姟鍚嶇О\")\r\n    private String taskName;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"妯℃澘ID \")\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private Long templateid;\r\n\r\n    /**\r\n     * 妯℃澘搴撴ā鐗堝悕绉癨r\n     */\r\n    @Excel(name = \"妯℃澘搴撴ā鐗堝悕绉癨")\r\n    private String libtemplatename;\r\n\r\n    /**\r\n     * 妯℃澘搴撴ā鐗圛D\r\n     */\r\n    @Excel(name = \"妯℃澘搴撴ā鐗圛D\")\r\n    private String libtemplateid;\r\n\r\n    /**\r\n     * 妯℃澘鍚嶇О\r\n     */\r\n    @Excel(name = \"妯℃澘鍚嶇О\")\r\n    @ApiModelProperty(value = \"妯℃澘鍚嶇О\")\r\n    private String templatename;\r\n\r\n    /**\r\n     * 鏍囩淇℃伅\r\n     */\r\n    @Excel(name = \"鏍囩淇℃伅\")\r\n    @ApiModelProperty(value = \"鏍囩淇℃伅\")\r\n    private String labelinfo;\r\n\r\n//    /**\r\n//     * 鐘舵�乗r\n//     */\r\n//    @Excel(name = \"鐘舵�乗")\r\n//    @ApiModelProperty(value = \"鐘舵�乗")\r\n//    private Long state;\r\n\r\n    /**\r\n     * 鏁伴噺\r\n     */\r\n    @Excel(name = \"鏁伴噺\")\r\n    @ApiModelProperty(value = \"鏁伴噺\")\r\n    private Long count;\r\n\r\n    /**\r\n     * 鎵ц\r\n     */\r\n    @Excel(name = \"鎵ц\")\r\n    @ApiModelProperty(value = \"鎵ц\")\r\n    private Long executed;\r\n\r\n    /**\r\n     * 涓嶆墽琛孿r\n     */\r\n    @Excel(name = \"涓嶆墽琛孿")\r\n    @ApiModelProperty(value = \"涓嶆墽琛孿")\r\n    private Long unexecuted;\r\n\r\n    /**\r\n     * 鏄惁澶辫触\r\n     */\r\n    @Excel(name = \"鏄惁澶辫触\")\r\n    @ApiModelProperty(value = \"鏄惁澶辫触\")\r\n    private Long fail;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private String patientid;\r\n\r\n    /**\r\n     * 鍙戦�佸ぉ鏁癨r\n     */\r\n    @Excel(name = \"鍙戦�佸ぉ鏁癨")\r\n    @ApiModelProperty(value = \"鍙戦�佸ぉ鏁癨")\r\n    private Long sendDay;\r\n\r\n    /**\r\n     * 鎮h�呭鍚峔r\n     */\r\n    @Excel(name = \"鎮h�呭鍚峔")\r\n    @ApiModelProperty(value = \"鎮h�呭鍚峔")\r\n    private String patientname;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"娣诲姞鏃堕棿\")\r\n    private Date addtime;\r\n\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"寮�濮嬫椂闂碶")\r\n    private Date beginTime;\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"缁撴潫鏃堕棿\")\r\n    private Date endTime;\r\n\r\n    /**\r\n     * 瀹℃牳浜篿d\r\n     */\r\n    @Excel(name = \"瀹℃牳浜篿d\")\r\n    @ApiModelProperty(value = \"瀹℃牳浜篿d\")\r\n    private String checkuserid;\r\n\r\n    /**\r\n     * 瀹℃牳浜篭r\n     */\r\n    @Excel(name = \"瀹℃牳浜篭")\r\n    @ApiModelProperty(value = \"瀹℃牳浜篭")\r\n    private String checkusername;\r\n\r\n    /**\r\n     * 瀹℃牳浜烘椂闂碶r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"瀹℃牳浜烘椂闂碶")\r\n    private Date checktime;\r\n\r\n    /**\r\n     * 浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶  2锛岄棶鍗凤紱3锛岄�氱煡锛沑r\n     */\r\n    @Excel(name = \"浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶  2锛岄棶鍗凤紱3锛岄�氱煡锛沑")\r\n    @ApiModelProperty(value = \"浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶  2锛岄棶鍗凤紱3锛岄�氱煡锛沑")\r\n    private String type;\r\n\r\n    /**\r\n     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\r\n     */\r\n    @Excel(name = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\")\r\n    @ApiModelProperty(value = \"鏈嶅姟绫诲瀷 : 1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶梾闅忚\")\r\n    private String serviceType;\r\n\r\n    /**\r\n     * 绫诲瀷鍚嶇О\r\n     */\r\n    @Excel(name = \"绫诲瀷鍚嶇О\")\r\n    @ApiModelProperty(value = \"绫诲瀷鍚嶇О\")\r\n    private String typename;\r\n\r\n    /**\r\n     * 绫诲瀷鍚嶇О\r\n     */\r\n    @Excel(name = \"鍙戦�佹椂闂存\")\r\n    @ApiModelProperty(value = \"鍙戦�佹椂闂存\")\r\n    private String sendTimeSlot;\r\n\r\n//    /**\r\n//     * 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊\r\n//     */\r\n//    @Excel(name = \" 0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 \")\r\n//    @ApiModelProperty(value = \"绉戝鍚嶇О\")\r\n//    private Long usebqsms;\r\n//\r\n//    /**\r\n//     * 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊\r\n//     */\r\n//    @Excel(name = \" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾墠鐭俊 \")\r\n//    @ApiModelProperty(value = \"0.涓嶄娇鐢ㄦ挱鍓嶇煭淇� 1.浣跨敤鎾墠鐭俊 \")\r\n//    private Long usebhsms;\r\n//\r\n//    /**\r\n//     * 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊\r\n//     */\r\n//    @Excel(name = \" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊 \")\r\n//    @ApiModelProperty(value = \" 0.涓嶄娇鐢ㄦ挱鍚庣煭淇� 1.浣跨敤鎾悗鐭俊 \")\r\n//    private Long usesendsms;\r\n\r\n    /**\r\n     * 閮ㄩ棬code\r\n     */\r\n    @Excel(name = \"閮ㄩ棬code\")\r\n    @ApiModelProperty(value = \"閮ㄩ棬code\")\r\n    private String deptcode;\r\n\r\n    /**\r\n     * 閮ㄩ棬鍚嶇О\r\n     */\r\n    @Excel(name = \"閮ㄩ棬鍚嶇О\")\r\n    @ApiModelProperty(value = \"閮ㄩ棬鍚嶇О\")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    @ApiModelProperty(value = \"鏈烘瀯ID \")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @Excel(name = \" 鐖禝D \")\r\n    @ApiModelProperty(value = \"鐖禝D \")\r\n    private Integer pid;\r\n\r\n    /**\r\n     * guid\r\n     */\r\n    @Excel(name = \" guid \")\r\n    @ApiModelProperty(value = \"guid \")\r\n    private String guid;\r\n\r\n    /**\r\n     * 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤\r\n     */\r\n    @Excel(name = \"  浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 \")\r\n    @ApiModelProperty(value = \" 浠诲姟褰㈠紡 1,澶氬獟浣�   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤 \")\r\n    private String preachform;\r\n\r\n    /**\r\n     * 鍙戦�佺被鍨�: 1鎸囧畾鏃堕棿娈靛彂閫� 2鍗冲埢鍙戦�� 3鏃堕棿鐐筡r\n     */\r\n    @Excel(name = \" 鍙戦�佺被鍨�: 1鎸囧畾鏃堕棿娈靛彂閫� 2鍗冲埢鍙戦�� 3鏃堕棿鐐筡")\r\n    @ApiModelProperty(value = \"鍙戦�佺被鍨�: 1鎸囧畾鏃堕棿娈靛彂閫� 2鍗冲埢鍙戦�� 3鏃堕棿鐐筡")\r\n    private Long sendType;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬侊細  0  澶辫触   1鎴愬姛\r\n     */\r\n    @Excel(name = \" 鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 \")\r\n    @ApiModelProperty(value = \"鍙戦�佺姸鎬侊細 1鍒涘缓   2鎵ц涓�   3 鏆傚仠   4缁堟  5瀹屾垚 \")\r\n    private Long sendState;\r\n\r\n//    /**\r\n//     * 鏂囨湰鍙橀噺鍙傛暟\r\n//     */\r\n//    @Excel(name = \" 鏂囨湰鍙橀噺鍙傛暟 \")\r\n//    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟 \")\r\n//    private String param;\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @ApiModelProperty(\"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(\"pageSize\")\r\n    private Integer pageSize;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(\"鏄惁鏄暱鏈熶换鍔� 0锛氫笉鏄�    1锛氭槸\")\r\n    private Integer longTask;\r\n\r\n    /**\r\n     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡")\r\n    @ApiModelProperty(value = \"灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌 3.涓撶梾锛塡")\r\n    private String hospType;\r\n\r\n    /**\r\n     * 浠诲姟鎻忚堪\r\n     */\r\n    @Excel(name = \"浠诲姟鎻忚堪\")\r\n    @ApiModelProperty(value = \"浠诲姟鎻忚堪\")\r\n    private String taskDesc;\r\n\r\n    /**\r\n     * 鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1\r\n     */\r\n    @Excel(name = \"鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1\")\r\n    @ApiModelProperty(value = \"鏆傚仠鐘舵�� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1\")\r\n    private Long stopState = 0L;\r\n\r\n    /**\r\n     * 鏂囨湰鍙橀噺鍙傛暟\r\n     */\r\n    @Excel(name = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    private String textParam;\r\n\r\n    @ApiModelProperty(value = \"涓婂崍鏃堕棿\")\r\n    private String showTimeMorn;\r\n\r\n    @ApiModelProperty(value = \"涓崍鏃堕棿\")\r\n    private String showTimeNoon;\r\n\r\n    @ApiModelProperty(value = \"鏅氬崍鏃堕棿\")\r\n    private String showTimeNight;\r\n\r\n    @ApiModelProperty(value = \"灞曠ず鏃ユ湡\")\r\n    private String showDate;\r\n\r\n    @ApiModelProperty(value = \"寮�鍦虹櫧\")\r\n    private String kcb;\r\n\r\n    @ApiModelProperty(value = \"缁撴潫璇璡")\r\n    private String jsy;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿\")\r\n    private String leavehospitaldistrictcode;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿闆嗗悎\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎\")\r\n    private List<String> leaveldeptcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽焅r\n     */\r\n    @ApiModelProperty(value = \"琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽� \")\r\n    @Excel(name = \" 琛ュ伩鏃堕棿锛堟湭棰嗗彇 锛屽彂璧疯ˉ鍋匡細浠庝换鍔″彂閫佹垚鍔熷紑濮嬶紝compensate_date鍒嗛挓鍚庯紝鎮h�呬粛鏈鍙栵級鍗曚綅锛氬垎閽� \")\r\n    private String compensateDate;\r\n\r\n\r\n    /**\r\n     * 寮�濮嬪嚭闄㈡棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"寮�濮嬪嚭闄㈡棩鏈焅")\r\n    private Date startOutHospTime;\r\n\r\n    /**\r\n     * 缁撴潫鍑洪櫌鏃ユ湡\r\n     */\r\n    @ApiModelProperty(value = \"缁撴潫鍑洪櫌鏃ユ湡\")\r\n    private Date endOutHospTime;\r\n\r\n\r\n    @ApiModelProperty(value = \"鏄惁寰幆鎵ц鎮h�咃紙0:涓嶅惊鐜�           1锛氬惊鐜級\")\r\n    private Long patCycle;\r\n    /**\r\n     * 鏄惁鏈変笅涓换鍔★紝鐢ㄤ簬澶氫换鍔″叧鑱擻r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鏈変笅涓换鍔★紙0:鏃� 1锛氭湁锛塡")\r\n    @Excel(name = \"鏄惁鏈変笅涓换鍔★紙0:鏃� 1锛氭湁锛塡")\r\n    private String nexttaskflag;\r\n    /**\r\n     * 涓嬩竴涓换鍔d\r\n     */\r\n    @ApiModelProperty(value = \"涓嬩竴涓换鍔d\")\r\n    @Excel(name = \" 涓嬩竴涓换鍔d\")\r\n    private Long nexttaskid;\r\n    /**\r\n     * 涓嬩竴涓换鍔″悕绉癨r\n     */\r\n    @ApiModelProperty(value = \"涓嬩竴涓换鍔″悕绉癨")\r\n    @Excel(name = \" 涓嬩竴涓换鍔″悕绉癨")\r\n    private String nexttaskname;\r\n\r\n    /**\r\n     * 閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\r\n     */\r\n    @ApiModelProperty(value = \"閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\")\r\n    @Excel(name = \"閫傜敤鏉′欢绫诲瀷锛�1銆佹寜绉戝銆�2銆佹寜鐥呭尯銆�3銆佹寜鐤剧梾璇婃柇銆�4銆佹寜鎵嬫湳绫诲瀷\")\r\n    private String appltype;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceTask.java b/smartor/src/main/java/com/smartor/domain/ServiceTask.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceTask.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceTask.java	(date 1758798202586)
-@@ -172,10 +172,10 @@
-     private String type;
- 
-     /**
--     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)
-+     * "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿"
-      */
--    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)")
--    @ApiModelProperty(value = "鏈嶅姟绫诲瀷 : 1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶梾闅忚")
-+    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿 16璇鹃闅忚")
-+    @ApiModelProperty(value = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿 16璇鹃闅忚")
-     private String serviceType;
- 
-     /**
-@@ -312,7 +312,7 @@
-     /**
-      * pageSize
-      */
--    @ApiModelProperty("鏄惁鏄暱鏈熶换鍔� 0锛氫笉鏄�    1锛氭槸")
-+    @ApiModelProperty("鏄惁鏄暱鏈熶换鍔� 0锛氫复鏃朵换鍔�    1锛氶暱鏈熶换鍔�   2鍥哄畾浠诲姟   3寰幆浠诲姟")
-     private Integer longTask;
- 
-     /**
-Index: smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\n/**\r\n * 璇煶浠诲姟瀵硅薄 service_task\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@ApiModel(value = \"ServiceTaskScriptQues\", description = \"浠诲姟瀵硅薄\")\r\n@Data\r\npublic class ServiceTaskScriptQues {\r\n\r\n    /**\r\n     * taskid\r\n     */\r\n    @ApiModelProperty(value = \"taskid\")\r\n    private String param1;\r\n\r\n    /**\r\n     * patid\r\n     */\r\n    @Excel(name = \"patid  \")\r\n    @ApiModelProperty(value = \"patid\")\r\n    private String param2;\r\n\r\n    /**\r\n     * patfrom\r\n     */\r\n    @Excel(name = \"patfrom  \")\r\n    @ApiModelProperty(value = \"patfrom\")\r\n    private String patfrom = \"0\";\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java b/smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceTaskScriptQues.java	(date 1758798202629)
-@@ -22,12 +22,29 @@
-     private String param1;
- 
-     /**
--     * patid
-+     * patid 鎴� 娴佹按鍙�
-+     * 璇婄枟璁板綍鍙�
-      */
--    @Excel(name = "patid  ")
--    @ApiModelProperty(value = "patid")
-+    @Excel(name = "patid 鎴�  浣忛櫌娴佹按鍙� ")
-+    @ApiModelProperty(value = "patid 鎴� 浣忛櫌娴佹按鍙�")
-     private String param2;
- 
-+    /**
-+     * patid 鎴� 娴佹按鍙�
-+     * 璇婄枟璁板綍鍙�
-+     */
-+    @Excel(name = "闂ㄨ瘖娴佹按鍙�  ")
-+    @ApiModelProperty(value = "闂ㄨ瘖娴佹按鍙�")
-+    private String param3;
-+
-+    /**
-+     * 鎶曡瘔鎮h�呯紪鍙�
-+     * 鎶曡瘔鎮h�呯紪鍙�
-+     */
-+    @Excel(name = "鎶曡瘔鎮h�呯紪鍙� patientId ")
-+    @ApiModelProperty(value = "鎶曡瘔鎮h�呯紪鍙� patientId")
-+    private String param4;
-+
-     /**
-      * patfrom
-      */
-Index: smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.mapper;\r\n\r\nimport com.smartor.domain.*;\r\nimport org.apache.ibatis.annotations.Mapper;\r\nimport org.apache.ibatis.annotations.Param;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥殢璁匡級Mapper鎺ュ彛\r\n *\r\n * @author ruoyi\r\n * @date 2024-02-02\r\n */\r\n@Mapper\r\npublic interface ServiceSubtaskMapper {\r\n    /**\r\n     * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param id 鍗曚竴浠诲姟锛堥殢璁匡級涓婚敭\r\n     * @return 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     */\r\n    public ServiceSubtask selectServiceSubtaskById(Long id);\r\n\r\n    /**\r\n     * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級鍒楄〃\r\n     *\r\n     * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 鍗曚竴浠诲姟锛堥殢璁匡級闆嗗悎\r\n     */\r\n    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);\r\n\r\n    public List<ServiceSubtask> selectServiceSubtaskListByCreateTime(ServiceSubtaskVO serviceSubtaskVO);\r\n\r\n    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO);\r\n\r\n    public Integer selectSendstateByCondition(ServiceSubtask serviceSubtask);\r\n\r\n    /**\r\n     * 鏂板鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param ServiceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級\r\n     * @return 缁撴灉\r\n     */\r\n    public int insertServiceSubtask(ServiceSubtask ServiceSubtask);\r\n\r\n    /**\r\n     * 闅忚鍙婃椂鐜囷細搴旈殢璁挎椂闂�<瀹為檯闅忚鏃堕棿\r\n     *\r\n     * @param ServiceSubtask\r\n     * @return\r\n     */\r\n    public Double selectTimelyRate(ServiceSubtask ServiceSubtask);\r\n\r\n    /**\r\n     * 闅忚鍙婃椂鐜囪鎯匼r\n     *\r\n     * @param ServiceSubtask\r\n     * @return\r\n     */\r\n    public List<ServiceSubtask> selectTimelyRateDetail(ServiceSubtask ServiceSubtask);\r\n\r\n    /**\r\n     * 淇敼鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    public Boolean updateServiceSubtask(ServiceSubtask ServiceSubtask);\r\n\r\n    public Boolean updateServiceSubtaskByPatId(ServiceSubtask ServiceSubtask);\r\n\r\n    public Boolean updateServiceSubtaskByCondition(ServiceSubtask ServiceSubtask);\r\n\r\n    public Boolean updateServiceSubtaskByTaskGuid(ServiceSubtask ServiceSubtask);\r\n\r\n    /**\r\n     * 鍒犻櫎鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @param id 鍗曚竴浠诲姟锛堥殢璁匡級涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    public int deleteServiceSubtaskById(Long id);\r\n\r\n    public int deleteServiceSubtaskByCondition(@Param(\"taskid\") Long id, @Param(\"patid\") Long patid);\r\n\r\n    /**\r\n     * 鍒犻櫎鍗曚竴浠诲姟锛堥殢璁匡級\r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    public List<ServiceSubtask> getDataByTime(@Param(\"beganTime\") String beganTime, @Param(\"endTime\") String endTime);\r\n\r\n    public List<ServiceSubtaskCount> getSfFzInfoEveryMonth(ServiceSubtaskCountReq serviceSubtaskCountReq);\r\n\r\n    public List<ServiceSubtask> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq);\r\n\r\n    public List<ServiceSubtaskCount> getSfStatisticsJoy(ServiceSubtaskCountReq serviceSubtaskCountReq);\r\n\r\n    public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq);\r\n\r\n    public List<PatMedRes> getDeptRanking(PatMedReq patMedReq);\r\n\r\n    public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest serviceStatisticsRequest);\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
---- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java	(date 1758798202642)
-@@ -31,6 +31,10 @@
-      */
-     public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);
- 
-+    public List<ServiceSubtask> queryServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO);
-+
-+    public List<ServiceSubtask> selectServiceSubtaskBySendstate(ServiceSubtaskVO serviceSubtaskVO);
-+
-     public List<ServiceSubtask> selectServiceSubtaskListByCreateTime(ServiceSubtaskVO serviceSubtaskVO);
- 
-     public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO);
-Index: smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.ServiceSubtaskMapper\">\r\n\r\n    <resultMap type=\"com.smartor.domain.ServiceSubtask\" id=\"ServiceSubtaskResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"sendname\" column=\"sendname\"/>\r\n        <result property=\"phone\" column=\"phone\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"nurseName\" column=\"nurse_name\"/>\r\n        <result property=\"nurseId\" column=\"nurse_id\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"sfzh\" column=\"sfzh\"/>\r\n        <result property=\"addr\" column=\"addr\"/>\r\n        <result property=\"senderdetail\" column=\"senderdetail\"/>\r\n        <result property=\"type\" column=\"type\"/>\r\n        <result property=\"taskid\" column=\"taskid\"/>\r\n        <result property=\"templateid\" column=\"templateid\"/>\r\n        <result property=\"templatename\" column=\"templatename\"/>\r\n        <result property=\"senddate\" column=\"senddate\"/>\r\n        <result property=\"senduuid\" column=\"senduuid\"/>\r\n        <result property=\"result\" column=\"result\"/>\r\n        <result property=\"finishtime\" column=\"finishtime\"/>\r\n        <result property=\"recordid\" column=\"recordid\"/>\r\n        <result property=\"exrecallcount\" column=\"exrecallcount\"/>\r\n        <result property=\"pulltime\" column=\"pulltime\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"labelstatus\" column=\"labelstatus\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"pid\" column=\"pid\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"taskGuid\" column=\"task_guid\"/>\r\n        <result property=\"textParam\" column=\"text_param\"/>\r\n        <result property=\"preachform\" column=\"preachform\"/>\r\n        <result property=\"bedNo\" column=\"bed_no\"/>\r\n        <result property=\"sendType\" column=\"send_type\"/>\r\n        <result property=\"taskName\" column=\"task_name\"/>\r\n        <result property=\"taskDesc\" column=\"task_desc\"/>\r\n        <result property=\"operator\" column=\"operator\"/>\r\n        <result property=\"operatorNo\" column=\"operator_no\"/>\r\n        <result property=\"hospno\" column=\"hospno\"/>\r\n        <result property=\"hospType\" column=\"hosp_type\"/>\r\n        <result property=\"wechat\" column=\"wechat\"/>\r\n        <result property=\"leaveicd10code\" column=\"leaveicd10code\"/>\r\n        <result property=\"leavediagname\" column=\"leavediagname\"/>\r\n        <result property=\"deptname\" column=\"deptname\"/>\r\n        <result property=\"admindate\" column=\"admindate\"/>\r\n        <result property=\"roomno\" column=\"roomno\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"libtemplatename\" column=\"libtemplatename\"/>\r\n        <result property=\"libtemplateid\" column=\"libtemplateid\"/>\r\n        <result property=\"openid\" column=\"openid\"/>\r\n        <result property=\"longSendTime\" column=\"long_send_time\"/>\r\n        <result property=\"serviceType\" column=\"service_type\"/>\r\n        <result property=\"score\" column=\"score\"/>\r\n        <result property=\"submit\" column=\"submit\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"endtime\" column=\"endtime\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"excep\" column=\"excep\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"suggest\" column=\"suggest\"/>\r\n        <result property=\"sendstate\" column=\"sendstate\"/>\r\n        <result property=\"inhospid\" column=\"inhospid\"/>\r\n        <result property=\"patfrom\" column=\"patfrom\"/>\r\n        <result property=\"patguid\" column=\"patguid\"/>\r\n        <result property=\"visitCount\" column=\"visit_count\"/>\r\n        <result property=\"isVisitAgain\" column=\"is_visit_again\"/>\r\n        <result property=\"upid\" column=\"upid\"/>\r\n        <result property=\"visitTime\" column=\"visit_time\"/>\r\n        <result property=\"visitDeptName\" column=\"visit_dept_name\"/>\r\n        <result property=\"visitDeptCode\" column=\"visit_dept_code\"/>\r\n        <result property=\"managementDoctor\" column=\"management_doctor\"/>\r\n        <result property=\"managementDoctorCode\" column=\"management_doctor_code\"/>\r\n    </resultMap>\r\n\r\n    <resultMap type=\"com.smartor.domain.ServiceSubtaskCount\" id=\"ServiceSubtaskResult2\">\r\n        <result property=\"month\" column=\"month\"/>\r\n        <result property=\"serviceType\" column=\"service_type\"/>\r\n        <result property=\"subTaskId\" column=\"subTaskId\"/>\r\n        <result property=\"joyCount\" column=\"joyCount\"/>\r\n        <result property=\"joyAllCount\" column=\"joyAllCount\"/>\r\n        <result property=\"joyTotal\" column=\"joyTotal\"/>\r\n        <result property=\"joyName\" column=\"joyName\"/>\r\n\r\n    </resultMap>\r\n\r\n    <sql id=\"selectServiceSubtaskVo\">\r\n        select id,\r\n               hosp_type,\r\n               task_guid,\r\n               patfrom,\r\n               management_doctor,\r\n               management_doctor_code,\r\n               upid,\r\n               visit_dept_name,\r\n               visit_dept_code,\r\n               visit_time,\r\n               inhospid,\r\n               visit_count,\r\n               is_visit_again,\r\n               patguid,\r\n               suggest,\r\n               sendstate,\r\n               endtime,\r\n               nurse_id,\r\n               nurse_name,\r\n               starttime,\r\n               submit,\r\n               drname,\r\n               excep,\r\n               drcode,\r\n               long_send_time,\r\n               openid,\r\n               remark,\r\n               service_type,\r\n               libtemplateid,\r\n               libtemplatename,\r\n               hospno,\r\n               score,\r\n               phone,\r\n               sex,\r\n               age,\r\n               patid,\r\n               sfzh,\r\n               addr,\r\n               senderdetail,\r\n               type,\r\n               taskid,\r\n               templateid,\r\n               templatename,\r\n               senddate,\r\n               senduuid,\r\n               result,\r\n               finishtime,\r\n               recordid,\r\n               exrecallcount,\r\n               pulltime,\r\n               deptcode,\r\n               labelstatus,\r\n               del_flag,\r\n               update_by,\r\n               update_time,\r\n               create_by,\r\n               create_time,\r\n               isupload,\r\n               upload_time,\r\n               orgid,\r\n               pid,\r\n               guid,\r\n               text_param,\r\n               preachform,\r\n               bed_no,\r\n               send_type,\r\n               task_name,\r\n               task_desc,\r\n               operator_no,\r\n               operator,\r\n               wechat,\r\n               sendname,\r\n               roomno,\r\n               admindate,\r\n               deptname,\r\n               stop_state,\r\n               leavehospitaldistrictcode,\r\n               leavehospitaldistrictname,\r\n               leavediagname,\r\n               leaveicd10code,\r\n               orgid,\r\n               visit_type,\r\n               management_doctor,\r\n               management_doctor_code\r\n        from service_subtask\r\n    </sql>\r\n\r\n    <select id=\"selectServiceSubtaskList\" parameterType=\"com.smartor.domain.ServiceSubtaskVO\"\r\n            resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"sendname != null  and sendname != ''\">and sendname like concat('%', #{sendname}, '%')</if>\r\n            <if test=\"phone != null  and phone != ''\">and phone = #{phone}</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">and\r\n                leavehospitaldistrictcode = #{leavehospitaldistrictcode}\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">and\r\n                leavehospitaldistrictname = #{leavehospitaldistrictname}\r\n            </if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">and leavediagname like concat('%',\r\n                #{leavediagname}, '%')\r\n            </if>\r\n            <if test=\"managementDoctor != null  and managementDoctor != ''\">and management_doctor like concat('%',\r\n                #{managementDoctor}, '%')\r\n            </if>\r\n            <if test=\"sex != null  and sex != ''\">and sex = #{sex}</if>\r\n            <if test=\"age != null \">and age = #{age}</if>\r\n            <if test=\"patguid != null \">and patguid = #{patguid}</if>\r\n            <if test=\"subId != null \">and id = #{subId}</if>\r\n            <if test=\"inhospid != null \">and inhospid = #{inhospid}</if>\r\n            <if test=\"managementDoctorCode != null \">and management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"submit != null \">and submit = #{submit}</if>\r\n            <if test=\"upid != null \">and upid = #{upid}</if>\r\n            <if test=\"patfrom != null \">and patfrom = #{patfrom}</if>\r\n            <if test=\"serviceType != null \">and service_type = #{serviceType}</if>\r\n            <if test=\"patid != null \">and patid = #{patid}</if>\r\n            <if test=\"sfzh != null  and sfzh != ''\">and sfzh = #{sfzh}</if>\r\n            <if test=\"addr != null  and addr != ''\">and addr = #{addr}</if>\r\n            <if test=\"senderdetail != null  and senderdetail != ''\">and senderdetail = #{senderdetail}</if>\r\n            <if test=\"type != null  and type != ''\">and type = #{type}</if>\r\n            <if test=\"taskid != null \">and taskid = #{taskid}</if>\r\n            <if test=\"templateid != null  and templateid != ''\">and templateid = #{templateid}</if>\r\n            <if test=\"templatename != null  and templatename != ''\">and templatename like concat('%', #{templatename},\r\n                '%')\r\n            </if>\r\n            <if test=\"startOutHospTime != null\">\r\n                AND date_format(endtime,'%y%m%d') &gt;= date_format(#{startOutHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"endOutHospTime != null\">\r\n                AND date_format(endtime,'%y%m%d') &lt;= date_format(#{endOutHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"startSendDateTime != null\">\r\n                AND date_format(long_send_time,'%y%m%d') &gt;= date_format(#{startSendDateTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"endSendDateTime != null\">\r\n                AND date_format(long_send_time,'%y%m%d') &lt;= date_format(#{endSendDateTime},'%y%m%d')\r\n            </if>\r\n\r\n            <if test=\"longSendTime != null\">\r\n                AND date_format(long_send_time,'%y%m%d') &lt;= date_format(#{longSendTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"deptOrDistrict==1\">\r\n                <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n                    AND leavehospitaldistrictcode IN\r\n                    <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\"\r\n                             separator=\",\"\r\n                             close=\")\">\r\n                        #{leavehospitaldistrictcode}\r\n                    </foreach>\r\n                </if>\r\n                <if test=\" leaveldeptcodes != null and leaveldeptcodes.size()>0\">\r\n                    AND deptcode IN\r\n                    <foreach collection=\"leaveldeptcodes\" item=\"leaveldeptcode\" open=\"(\" separator=\",\"\r\n                             close=\")\">\r\n                        #{leaveldeptcode}\r\n                    </foreach>\r\n                </if>\r\n            </if>\r\n            <if test=\"deptOrDistrict==2\">\r\n                <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n                    AND (leavehospitaldistrictcode IN\r\n                    <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\"\r\n                             separator=\",\"\r\n                             close=\")\">\r\n                        #{leavehospitaldistrictcode}\r\n                    </foreach>\r\n                </if>\r\n                <if test=\" leaveldeptcodes != null and leaveldeptcodes.size()>0\">\r\n                    OR deptcode IN\r\n                    <foreach collection=\"leaveldeptcodes\" item=\"leaveldeptcode\" open=\"(\" separator=\",\"\r\n                             close=\"))\">\r\n                        #{leaveldeptcode}\r\n                    </foreach>\r\n                </if>\r\n            </if>\r\n\r\n            <if test=\"senddate != null \">and senddate = #{senddate}</if>\r\n            <if test=\"senduuid != null  and senduuid != ''\">and senduuid = #{senduuid}</if>\r\n            <if test=\"result != null  and result != ''\">and result = #{result}</if>\r\n            <if test=\"finishtime != null \">and finishtime = #{finishtime}</if>\r\n            <if test=\"recordid != null \">and recordid = #{recordid}</if>\r\n            <if test=\"exrecallcount != null \">and exrecallcount = #{exrecallcount}</if>\r\n            <if test=\"pulltime != null \">and pulltime = #{pulltime}</if>\r\n            <if test=\"deptcode != null  and deptcode != ''\">and deptcode = #{deptcode}</if>\r\n            <if test=\"deptname != null  and deptname != ''\">and deptname = #{deptname}</if>\r\n            <if test=\"labelstatus != null \">and labelstatus = #{labelstatus}</if>\r\n            <if test=\"isupload != null \">and isupload = #{isupload}</if>\r\n            <if test=\"uploadTime != null \">and upload_time = #{uploadTime}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"pid != null \">and pid = #{pid}</if>\r\n            <if test=\"preachform != null \">and preachform = #{preachform}</if>\r\n            <if test=\"guid != null  and guid != ''\">and guid = #{guid}</if>\r\n            <if test=\"textParam != null  and textParam != ''\">and text_param = #{textParam}</if>\r\n            <if test=\"bedNo != null\">and bed_no = #{bedNo}</if>\r\n            <if test=\"sendType != null  and sendType != ''\">and send_type = #{sendType}</if>\r\n            <if test=\"operator != null  and operator != ''\">and operator = #{operator}</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">and operator_no = #{operatorNo}</if>\r\n            <if test=\"wechat != null  and wechat != ''\">and wechat = #{wechat}</if>\r\n            <if test=\"hospType != null  and hospType != ''\">and hosp_type = #{hospType}</if>\r\n            <if test=\"libtemplateid != null \">and libtemplateid = #{libtemplateid}</if>\r\n            <if test=\"libtemplatename != null \">and libtemplatename = #{libtemplatename}</if>\r\n            <if test=\"openid != null \">and openid = #{openid}</if>\r\n            <if test=\"longSendTime != null \">and long_send_time = #{longSendTime}</if>\r\n            <if test=\"sendstate != null \">and sendstate = #{sendstate}</if>\r\n            <if test=\"drname != null  and drname != ''\">and drname like concat('%', #{drname}, '%')</if>\r\n            <if test=\"taskName != null  and taskName != ''\">and task_name like concat('%', #{taskName}, '%')</if>\r\n            <if test=\"drcode != null and drcode != ''\">and (drcode = #{drcode}</if>\r\n            <if test=\"nurseId != null  and nurseId != ''\">or nurse_id = #{nurseId})</if>\r\n            <if test=\"starttime != null \">and starttime = #{starttime}</if>\r\n            <if test=\"endtime != null \">and endtime = #{endtime}</if>\r\n            <if test=\"excep != null \">and excep = #{excep}</if>\r\n            <if test=\"nurseName != null \">and nurse_name = #{nurseName}</if>\r\n            <if test=\"score != null\">and score = #{score}</if>\r\n            <!--            <if test=\"visitCount != null\">and visit_count = #{visitCount}</if>-->\r\n            <if test=\"visitCount != null and visitCount == 1\">\r\n                AND visit_count = 1\r\n            </if>\r\n            <if test=\"visitCount != null and visitCount > 1\">\r\n                AND visit_count > 1\r\n            </if>\r\n            <if test=\"remark != null\">and remark = #{remark}</if>\r\n            <if test=\"suggest != null\">and suggest = #{suggest}</if>\r\n            <if test=\"createBy != null\">and create_by = #{createBy}</if>\r\n            <if test=\"taskGuid != null\">and task_guid = #{taskGuid}</if>\r\n            <if test=\"isVisitAgain != null\">and is_visit_again = #{isVisitAgain}</if>\r\n            <if test=\"visitTime != null\">and visit_time = #{visitTime}</if>\r\n            <!--<if test=\"visitDeptCode != null\">and visit_dept_code = #{visitDeptCode}</if>\r\n            <if test=\"visitDeptName != null\">and visit_dept_name = #{visitDeptName}</if>-->\r\n            <if test=\"visitCount != null and visitCount > 1 and visitDeptCodes != null and visitDeptCodes.size() > 0\">\r\n                AND visit_dept_code IN\r\n                <foreach collection=\"visitDeptCodes\" item=\"visitDeptCodes\" open=\"(\"\r\n                         separator=\",\"\r\n                         close=\")\">\r\n                    #{visitDeptCodes}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        <if test=\"sort != null  and sort==0\">order by endtime asc</if>\r\n        <if test=\"sort != null  and sort==1\">order by endtime desc</if>\r\n        <if test=\"sort != null  and sort==2\">order by long_send_time asc</if>\r\n        <if test=\"sort != null  and sort==3\">order by long_send_time desc</if>\r\n        <if test=\"sort != null  and sort==5\">order by admindate asc</if>\r\n        <if test=\"sort != null  and sort==6\">order by admindate desc</if>\r\n        <if test=\"sort != null  and sort==7\">order by visit_time asc</if>\r\n        <if test=\"sort != null  and sort==8\">order by visit_time desc</if>\r\n\r\n        <!-- order by update_time desc,id desc -->\r\n    </select>\r\n\r\n    <select id=\"selectServiceSubtaskListByCreateTime\" parameterType=\"com.smartor.domain.ServiceSubtaskVO\"\r\n            resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"createStartTime != null  and createEndTime != null\">and create_time BETWEEN #{createStartTime} AND\r\n                #{createEndTime}\r\n            </if>\r\n            <if test=\"createBy != null \">and create_by = #{createBy}</if>\r\n            <if test=\"sendname != null \">and sendname = #{sendname}</if>\r\n            <if test=\"sfzh != null \">and sfzh = #{sfzh}</if>\r\n            <if test=\"patguid != null \">and patguid = #{patguid}</if>\r\n            <if test=\"upid != null \">and upid = #{upid}</if>\r\n            <if test=\"visitCount != null \">and visit_count = #{visitCount}</if>\r\n            <if test=\"isVisitAgain != null \">and is_visit_again = #{isVisitAgain}</if>\r\n            <if test=\"visitDeptCode != null\">and visit_dept_code = #{visitDeptCode}</if>\r\n            <if test=\"visitDeptName != null\">and visit_dept_name = #{visitDeptName}</if>\r\n            <if test=\"managementDoctorCode != null\">and management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"managementDoctor != null\">and management_doctor = #{managementDoctor}</if>\r\n        </where>\r\n\r\n    </select>\r\n\r\n\r\n    <select id=\"selectServiceSubtaskListAgain\" parameterType=\"com.smartor.domain.ServiceSubtaskVO\"\r\n            resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            and upid is not null\r\n            and visit_count > 1\r\n            <if test=\"createStartTime != null  and createEndTime != null\">and create_time BETWEEN #{createStartTime} AND\r\n                #{createEndTime}\r\n            </if>\r\n            <if test=\"senddate != null \">and senddate = #{senddate}</if>\r\n            <if test=\"senduuid != null  and senduuid != ''\">and senduuid = #{senduuid}</if>\r\n            <if test=\"result != null  and result != ''\">and result = #{result}</if>\r\n            <if test=\"finishtime != null \">and finishtime = #{finishtime}</if>\r\n            <if test=\"recordid != null \">and recordid = #{recordid}</if>\r\n            <if test=\"exrecallcount != null \">and exrecallcount = #{exrecallcount}</if>\r\n            <if test=\"pulltime != null \">and pulltime = #{pulltime}</if>\r\n            <if test=\"deptcode != null  and deptcode != ''\">and deptcode = #{deptcode}</if>\r\n            <if test=\"deptname != null  and deptname != ''\">and deptname = #{deptname}</if>\r\n            <if test=\"labelstatus != null \">and labelstatus = #{labelstatus}</if>\r\n            <if test=\"isupload != null \">and isupload = #{isupload}</if>\r\n            <if test=\"uploadTime != null \">and upload_time = #{uploadTime}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"pid != null \">and pid = #{pid}</if>\r\n            <if test=\"preachform != null \">and preachform = #{preachform}</if>\r\n            <if test=\"guid != null  and guid != ''\">and guid = #{guid}</if>\r\n            <if test=\"textParam != null  and textParam != ''\">and text_param = #{textParam}</if>\r\n            <if test=\"bedNo != null\">and bed_no = #{bedNo}</if>\r\n            <if test=\"sendType != null  and sendType != ''\">and send_type = #{sendType}</if>\r\n            <if test=\"operator != null  and operator != ''\">and operator = #{operator}</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">and operator_no = #{operatorNo}</if>\r\n            <if test=\"wechat != null  and wechat != ''\">and wechat = #{wechat}</if>\r\n            <if test=\"hospType != null  and hospType != ''\">and hosp_type = #{hospType}</if>\r\n            <if test=\"libtemplateid != null \">and libtemplateid = #{libtemplateid}</if>\r\n            <if test=\"libtemplatename != null \">and libtemplatename = #{libtemplatename}</if>\r\n            <if test=\"openid != null \">and openid = #{openid}</if>\r\n            <if test=\"longSendTime != null \">and long_send_time = #{longSendTime}</if>\r\n            <if test=\"sendstate != null \">and sendstate = #{sendstate}</if>\r\n            <if test=\"drname != null  and drname != ''\">and drname like concat('%', #{drname}, '%')</if>\r\n            <if test=\"taskName != null  and taskName != ''\">and task_name like concat('%', #{taskName}, '%')</if>\r\n            <if test=\"drcode != null and drcode != ''\">and (drcode = #{drcode}</if>\r\n            <if test=\"nurseId != null  and nurseId != ''\">or nurse_id = #{nurseId})</if>\r\n            <if test=\"starttime != null \">and starttime = #{starttime}</if>\r\n            <if test=\"endtime != null \">and endtime = #{endtime}</if>\r\n            <if test=\"excep != null \">and excep = #{excep}</if>\r\n            <if test=\"nurseName != null \">and nurse_name = #{nurseName}</if>\r\n            <if test=\"visitTime != null \">and visit_time = #{visitTime}</if>\r\n            <if test=\"visitDeptCode != null\">and visit_dept_code = #{visitDeptCode}</if>\r\n            <if test=\"visitDeptName != null\">and visit_dept_name = #{visitDeptName}</if>\r\n            <if test=\"managementDoctorCode != null\">and management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"managementDoctor != null\">and management_doctor like concat('%',#{managementDoctor}, '%')</if>\r\n        </where>\r\n\r\n    </select>\r\n\r\n    <select id=\"selectSendstateByCondition\" parameterType=\"com.smartor.domain.ServiceSubtask\" resultType=\"Integer\">\r\n        SELECT b.sendstate\r\n        from service_task a\r\n                 JOIN service_subtask b on a.taskid = b.taskid and a.pat_cycle = 0 and b.del_flag = 0\r\n        where b.taskid = #{taskid}\r\n          and b.patid = #{patid}\r\n    </select>\r\n\r\n    <select id=\"selectTimelyRate\" parameterType=\"com.smartor.domain.ServiceSubtask\" resultType=\"double\">\r\n        SELECT sum( a.finished )/ sum( 1 ) FROM\r\n        (SELECT id, visit_time, finishtime,\r\n        (CASE WHEN ( DATE_FORMAT( visit_time, '%y%m%d' )&lt; DATE_FORMAT( IF ( ISNULL( finishtime ), NOW(), finishtime\r\n        ), '%y%m%d' ) )\r\n        THEN 1 ELSE 0 END ) finished,1 AS tasknumber FROM service_subtask\r\n        WHERE del_flag=0\r\n        <if test=\"starttime == null and endtime==null\">\r\n            AND visit_time &lt; NOW()\r\n        </if>\r\n        <if test=\"starttime != null and endtime!=null\">\r\n            AND date_format(visit_time,'%y%m%d') >= date_format(#{starttime},'%y%m%d')\r\n            AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endtime},'%y%m%d')\r\n        </if>\r\n        <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n        <if test=\"deptcode != null  and deptcode != ''\">and deptcode = #{deptcode}</if>\r\n        <if test=\"deptname != null  and deptname != ''\">and deptname = #{deptname}</if>\r\n        <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">and\r\n            leavehospitaldistrictcode = #{leavehospitaldistrictcode}\r\n        </if>\r\n        <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">and\r\n            leavehospitaldistrictname = #{leavehospitaldistrictname}\r\n        </if>\r\n        <if test=\"managementDoctorCode != null\">and management_doctor_code = #{managementDoctorCode}</if>\r\n        <if test=\"managementDoctor != null\">and management_doctor like concat('%',#{managementDoctor}, '%')</if>\r\n        ) a\r\n    </select>\r\n\r\n    <select id=\"selectTimelyRateDetail\" parameterType=\"com.smartor.domain.ServiceSubtask\"\r\n            resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        <where>\r\n            id in (\r\n            SELECT id FROM\r\n            (SELECT id, visit_time, finishtime,\r\n            (CASE WHEN ( DATE_FORMAT( visit_time, '%y%m%d' ) &lt; DATE_FORMAT( IF ( ISNULL( finishtime ), NOW(),\r\n            finishtime\r\n            ), '%y%m%d' ) )\r\n            THEN 1 ELSE 0 END ) finished,1 AS tasknumber FROM service_subtask\r\n            WHERE del_flag=0\r\n            -- AND visit_time &lt; NOW()\r\n            <if test=\"starttime != null and endtime!=null\">\r\n                AND date_format(visit_time,'%y%m%d') >= date_format(#{starttime},'%y%m%d')\r\n                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endtime},'%y%m%d')\r\n            </if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"deptcode != null  and deptcode != ''\">and deptcode = #{deptcode}</if>\r\n            <if test=\"deptname != null  and deptname != ''\">and deptname = #{deptname}</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">and\r\n                leavehospitaldistrictcode = #{leavehospitaldistrictcode}\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">and\r\n                leavehospitaldistrictname = #{leavehospitaldistrictname}\r\n            </if>\r\n            <if test=\"managementDoctorCode != null\">and management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"managementDoctor != null\">and management_doctor like concat('%',#{managementDoctor}, '%')</if>\r\n            ) a where a.finished =1)\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectServiceSubtaskById\" parameterType=\"Long\" resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        where id = #{id}\r\n    </select>\r\n\r\n    <insert id=\"insertServiceSubtask\" parameterType=\"com.smartor.domain.ServiceSubtask\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"id\">\r\n        insert into service_subtask\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">sendname,</if>\r\n            <if test=\"phone != null\">phone,</if>\r\n            <if test=\"sex != null\">sex,</if>\r\n            <if test=\"age != null\">age,</if>\r\n            <if test=\"sfzh != null\">sfzh,</if>\r\n            <if test=\"addr != null\">addr,</if>\r\n            <if test=\"senderdetail != null\">senderdetail,</if>\r\n            <if test=\"type != null\">type,</if>\r\n            <if test=\"taskid != null\">taskid,</if>\r\n            <if test=\"templateid != null\">templateid,</if>\r\n            <if test=\"templatename != null\">templatename,</if>\r\n            <if test=\"senddate != null\">senddate,</if>\r\n            <if test=\"senduuid != null\">senduuid,</if>\r\n            <if test=\"result != null\">result,</if>\r\n            <if test=\"finishtime != null\">finishtime,</if>\r\n            <if test=\"recordid != null\">recordid,</if>\r\n            <if test=\"exrecallcount != null\">exrecallcount,</if>\r\n            <if test=\"pulltime != null\">pulltime,</if>\r\n            <if test=\"deptcode != null\">deptcode,</if>\r\n            <if test=\"labelstatus != null\">labelstatus,</if>\r\n            <if test=\"updateBy != null\">update_by,</if>\r\n            <if test=\"updateTime != null\">update_time,</if>\r\n            <if test=\"createBy != null\">create_by,</if>\r\n            <if test=\"createTime != null\">create_time,</if>\r\n            <if test=\"isupload != null\">isupload,</if>\r\n            <if test=\"uploadTime != null\">upload_time,</if>\r\n            <if test=\"orgid != null\">orgid,</if>\r\n            <if test=\"pid != null\">pid,</if>\r\n            <if test=\"guid != null\">guid,</if>\r\n            <if test=\"textParam != null\">text_param,</if>\r\n            <if test=\"preachform != null\">preachform,</if>\r\n            <if test=\"bedNo != null\">bed_no,</if>\r\n            <if test=\"sendType != null  and sendType != ''\">send_type,</if>\r\n            <if test=\"taskName != null  and taskName != ''\">task_name,</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">task_desc,</if>\r\n            <if test=\"operator != null  and operator != ''\">operator,</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">operator_no,</if>\r\n            <if test=\"hospType != null  and hospType != ''\">hosp_type,</if>\r\n            <if test=\"hospno != null  and hospno != ''\">hospno,</if>\r\n            <if test=\"wechat != null  and wechat != ''\">wechat,</if>\r\n            <if test=\"roomno != null  and roomno != ''\">roomno,</if>\r\n            <if test=\"admindate != null\">admindate,</if>\r\n            <if test=\"deptname != null  and deptname != ''\">deptname,</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">leaveicd10code,</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">leavediagname,</if>\r\n            <if test=\"libtemplateid != null \">libtemplateid,</if>\r\n            <if test=\"libtemplatename != null \">libtemplatename,</if>\r\n            <if test=\"patid != null \">patid,</if>\r\n            <if test=\"openid != null \">openid,</if>\r\n            <if test=\"longSendTime != null \">long_send_time,</if>\r\n            <if test=\"serviceType != null \">service_type,</if>\r\n            <if test=\"score != null \">score,</if>\r\n            <if test=\"submit != null \">submit,</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">\r\n                leavehospitaldistrictcode,\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">\r\n                leavehospitaldistrictname,\r\n            </if>\r\n            <if test=\"drname != null \">drname,</if>\r\n            <if test=\"drcode != null \">drcode,</if>\r\n            <if test=\"endtime != null \">endtime,</if>\r\n            <if test=\"starttime != null \">starttime,</if>\r\n            <if test=\"excep != null \">excep,</if>\r\n            <if test=\"nurseName != null \">nurse_name,</if>\r\n            <if test=\"nurseId != null \">nurse_id,</if>\r\n            <if test=\"remark != null \">remark,</if>\r\n            <if test=\"suggest != null \">suggest,</if>\r\n            <if test=\"sendstate != null \">sendstate,</if>\r\n            <if test=\"inhospid != null \">inhospid,</if>\r\n            <if test=\"patfrom != null \">patfrom,</if>\r\n            <if test=\"taskGuid != null \">task_guid,</if>\r\n            <if test=\"patguid != null \">patguid,</if>\r\n            <if test=\"visitCount != null \">visit_count,</if>\r\n            <if test=\"isVisitAgain != null \">is_visit_again,</if>\r\n            <if test=\"upid != null \">upid,</if>\r\n            <if test=\"visitTime != null \">visit_Time,</if>\r\n            <if test=\"visitDeptCode != null\">visit_dept_code,</if>\r\n            <if test=\"visitDeptName != null\">visit_dept_name,</if>\r\n            <if test=\"managementDoctorCode != null\">management_doctor_code,</if>\r\n            <if test=\"managementDoctor != null\">management_doctor,</if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">#{sendname},</if>\r\n            <if test=\"phone != null\">#{phone},</if>\r\n            <if test=\"sex != null\">#{sex},</if>\r\n            <if test=\"age != null\">#{age},</if>\r\n            <if test=\"sfzh != null\">#{sfzh},</if>\r\n            <if test=\"addr != null\">#{addr},</if>\r\n            <if test=\"senderdetail != null\">#{senderdetail},</if>\r\n            <if test=\"type != null\">#{type},</if>\r\n            <if test=\"taskid != null\">#{taskid},</if>\r\n            <if test=\"templateid != null\">#{templateid},</if>\r\n            <if test=\"templatename != null\">#{templatename},</if>\r\n            <if test=\"senddate != null\">#{senddate},</if>\r\n            <if test=\"senduuid != null\">#{senduuid},</if>\r\n            <if test=\"result != null\">#{result},</if>\r\n            <if test=\"finishtime != null\">#{finishtime},</if>\r\n            <if test=\"recordid != null\">#{recordid},</if>\r\n            <if test=\"exrecallcount != null\">#{exrecallcount},</if>\r\n            <if test=\"pulltime != null\">#{pulltime},</if>\r\n            <if test=\"deptcode != null\">#{deptcode},</if>\r\n            <if test=\"labelstatus != null\">#{labelstatus},</if>\r\n            <if test=\"updateBy != null\">#{updateBy},</if>\r\n            <if test=\"updateTime != null\">#{updateTime},</if>\r\n            <if test=\"createBy != null\">#{createBy},</if>\r\n            <if test=\"createTime != null\">#{createTime},</if>\r\n            <if test=\"isupload != null\">#{isupload},</if>\r\n            <if test=\"uploadTime != null\">#{uploadTime},</if>\r\n            <if test=\"orgid != null\">#{orgid},</if>\r\n            <if test=\"pid != null\">#{pid},</if>\r\n            <if test=\"guid != null\">#{guid},</if>\r\n            <if test=\"textParam != null\">#{textParam},</if>\r\n            <if test=\"preachform != null\">#{preachform},</if>\r\n            <if test=\"bedNo != null\">#{bedNo},</if>\r\n            <if test=\"sendType != null  and sendType != ''\">#{sendType},</if>\r\n            <if test=\"taskName != null  and taskName != ''\">#{taskName},</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">#{taskDesc},</if>\r\n            <if test=\"operator != null  and operator != ''\">#{operator},</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">#{operatorNo},</if>\r\n            <if test=\"hospType != null  and hospType != ''\">#{hospType},</if>\r\n            <if test=\"hospno != null  and hospno != ''\">#{hospno},</if>\r\n            <if test=\"wechat != null  and wechat != ''\">#{wechat},</if>\r\n            <if test=\"roomno != null  and roomno != ''\">#{roomno},</if>\r\n            <if test=\"admindate != null \">#{admindate},</if>\r\n            <if test=\"deptname != null  and deptname != ''\">#{deptname},</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">#{leaveicd10code},</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">#{leavediagname},</if>\r\n            <if test=\"libtemplateid != null \">#{libtemplateid},</if>\r\n            <if test=\"libtemplatename != null \">#{libtemplatename},</if>\r\n            <if test=\"patid != null \">#{patid},</if>\r\n            <if test=\"openid != null \">#{openid},</if>\r\n            <if test=\"longSendTime != null \">#{longSendTime},</if>\r\n            <if test=\"serviceType != null \">#{serviceType},</if>\r\n            <if test=\"score != null \">#{score},</if>\r\n            <if test=\"submit != null \">#{submit},</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">\r\n                #{leavehospitaldistrictcode},\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">\r\n                #{leavehospitaldistrictname},\r\n            </if>\r\n            <if test=\"drname != null \">#{drname},</if>\r\n            <if test=\"drcode != null \">#{drcode},</if>\r\n            <if test=\"endtime != null \">#{endtime},</if>\r\n            <if test=\"starttime != null \">#{starttime},</if>\r\n            <if test=\"excep != null \">#{excep},</if>\r\n            <if test=\"nurseName != null \">#{nurseName},</if>\r\n            <if test=\"nurseId != null \">#{nurseId},</if>\r\n            <if test=\"remark != null \">#{remark},</if>\r\n            <if test=\"suggest != null \">#{suggest},</if>\r\n            <if test=\"sendstate != null \">#{sendstate},</if>\r\n            <if test=\"inhospid != null \">#{inhospid},</if>\r\n            <if test=\"patfrom != null \">#{patfrom},</if>\r\n            <if test=\"taskGuid != null \">#{taskGuid},</if>\r\n            <if test=\"patguid != null \">#{patguid},</if>\r\n            <if test=\"visitCount != null \">#{visitCount},</if>\r\n            <if test=\"isVisitAgain != null \">#{isVisitAgain},</if>\r\n            <if test=\"upid != null \">#{upid},</if>\r\n            <if test=\"visitTime != null \">#{visitTime},</if>\r\n            <if test=\"visitDeptCode != null\">#{visitDeptCode},</if>\r\n            <if test=\"visitDeptName != null\">#{visitDeptName},</if>\r\n            <if test=\"managementDoctorCode != null\">#{managementDoctorCode},</if>\r\n            <if test=\"managementDoctor != null\">#{managementDoctor},</if>\r\n        </trim>\r\n    </insert>\r\n\r\n    <update id=\"updateServiceSubtask\" parameterType=\"com.smartor.domain.ServiceSubtask\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">sendname = #{sendname},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"sex != null\">sex = #{sex},</if>\r\n            <if test=\"delFlag != null\">del_flag = #{delFlag},</if>\r\n            <if test=\"age != null\">age = #{age},</if>\r\n            <if test=\"sfzh != null\">sfzh = #{sfzh},</if>\r\n            <if test=\"addr != null\">addr = #{addr},</if>\r\n            <if test=\"senderdetail != null\">senderdetail = #{senderdetail},</if>\r\n            <if test=\"type != null\">type = #{type},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatename != null\">templatename = #{templatename},</if>\r\n            <if test=\"senddate != null\">senddate = #{senddate},</if>\r\n            <if test=\"senduuid != null\">senduuid = #{senduuid},</if>\r\n            <if test=\"result != null\">result = #{result},</if>\r\n            <if test=\"finishtime != null\">finishtime = #{finishtime},</if>\r\n            <if test=\"recordid != null\">recordid = #{recordid},</if>\r\n            <if test=\"exrecallcount != null\">exrecallcount = #{exrecallcount},</if>\r\n            <if test=\"pulltime != null\">pulltime = #{pulltime},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"labelstatus != null\">labelstatus = #{labelstatus},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"pid != null\">pid = #{pid},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"textParam != null\">text_param = #{textParam},</if>\r\n            <if test=\"preachform != null\">preachform = #{preachform},</if>\r\n            <if test=\"bedNo != null\">bed_no = #{bedNo},</if>\r\n            <if test=\"sendType != null  and sendType != ''\">send_type = #{sendType},</if>\r\n            <if test=\"taskName != null  and taskName != ''\">task_name = #{taskName},</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">task_desc = #{taskDesc},</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">operator_no = #{operatorNo},</if>\r\n            <if test=\"operator != null  and operator != ''\">operator = #{operator},</if>\r\n            <if test=\"hospType != null  and hospType != ''\">hosp_type = #{hospType},</if>\r\n            <if test=\"hospno != null  and hospno != ''\">hospno = #{hospno},</if>\r\n            <if test=\"wechat != null  and wechat != ''\">wechat = #{wechat},</if>\r\n            <if test=\"roomno != null  and roomno != ''\">roomno = #{roomno},</if>\r\n            <if test=\"admindate != null \">admindate = #{admindate},</if>\r\n            <if test=\"deptname != null  and deptname != ''\">deptname = #{deptname},</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">leaveicd10code = #{leaveicd10code},</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">leavediagname = #{leavediagname},</if>\r\n            <if test=\"libtemplateid != null \">libtemplateid = #{libtemplateid},</if>\r\n            <if test=\"libtemplatename != null \">libtemplatename = #{libtemplatename},</if>\r\n            <if test=\"patid != null \">patid = #{patid},</if>\r\n            <if test=\"openid != null \">openid = #{openid},</if>\r\n            <if test=\"longSendTime != null \">long_send_time = #{longSendTime},</if>\r\n            <if test=\"sendstate != null \">sendstate = #{sendstate},</if>\r\n            <if test=\"serviceType != null \">service_type = #{serviceType},</if>\r\n            <if test=\"score != null \">score = #{score},</if>\r\n            <if test=\"submit != null \">submit = #{submit},</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">leavehospitaldistrictcode\r\n                = #{leavehospitaldistrictcode},\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">leavehospitaldistrictname\r\n                = #{leavehospitaldistrictname},\r\n            </if>\r\n            <if test=\"drname != null \">drname = #{drname},</if>\r\n            <if test=\"drcode != null \">drcode = #{drcode},</if>\r\n            <if test=\"starttime != null \">starttime = #{starttime},</if>\r\n            <if test=\"endtime != null \">endtime = #{endtime},</if>\r\n            <if test=\"excep != null \">excep = #{excep},</if>\r\n            <if test=\"nurseName != null \">nurse_name=#{nurseName},</if>\r\n            <if test=\"nurseId != null \">nurse_id=#{nurseId},</if>\r\n            <if test=\"remark != null \">remark=#{remark},</if>\r\n            <if test=\"suggest != null \">suggest=#{suggest},</if>\r\n            <if test=\"inhospid != null \">inhospid=#{inhospid},</if>\r\n            <if test=\"patfrom != null \">patfrom=#{patfrom},</if>\r\n            <if test=\"taskGuid != null \">task_guid=#{taskGuid},</if>\r\n            <if test=\"patguid != null \">patguid=#{patguid},</if>\r\n            <if test=\"visitCount != null \">visit_count=#{visitCount},</if>\r\n            <if test=\"isVisitAgain != null \">is_visit_again=#{isVisitAgain},</if>\r\n            <if test=\"upid != null \">upid=#{upid},</if>\r\n            <if test=\"visitTime != null \">visit_time=#{visitTime},</if>\r\n            <if test=\"visitDeptCode != null\">visit_dept_code = #{visitDeptCode},</if>\r\n            <if test=\"visitDeptName != null\">visit_dept_name = #{visitDeptName},</if>\r\n            <if test=\"managementDoctorCode != null\">management_doctor_code = #{managementDoctorCode},</if>\r\n            <if test=\"managementDoctor != null\">management_doctor=#{managementDoctor},</if>\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <update id=\"updateServiceSubtaskByPatId\" parameterType=\"com.smartor.domain.ServiceSubtask\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">sendname = #{sendname},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"sex != null\">sex = #{sex},</if>\r\n            <if test=\"delFlag != null\">del_flag = #{delFlag},</if>\r\n            <if test=\"age != null\">age = #{age},</if>\r\n            <if test=\"sfzh != null\">sfzh = #{sfzh},</if>\r\n            <if test=\"addr != null\">addr = #{addr},</if>\r\n            <if test=\"senderdetail != null\">senderdetail = #{senderdetail},</if>\r\n            <if test=\"type != null\">type = #{type},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatename != null\">templatename = #{templatename},</if>\r\n            <if test=\"senddate != null\">senddate = #{senddate},</if>\r\n            <if test=\"senduuid != null\">senduuid = #{senduuid},</if>\r\n            <if test=\"result != null\">result = #{result},</if>\r\n            <if test=\"finishtime != null\">finishtime = #{finishtime},</if>\r\n            <if test=\"recordid != null\">recordid = #{recordid},</if>\r\n            <if test=\"exrecallcount != null\">exrecallcount = #{exrecallcount},</if>\r\n            <if test=\"pulltime != null\">pulltime = #{pulltime},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"labelstatus != null\">labelstatus = #{labelstatus},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"pid != null\">pid = #{pid},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"textParam != null\">text_param = #{textParam},</if>\r\n            <if test=\"preachform != null\">preachform = #{preachform},</if>\r\n            <if test=\"bedNo != null\">bed_no = #{bedNo},</if>\r\n            <if test=\"sendType != null  and sendType != ''\">send_type = #{sendType},</if>\r\n            <if test=\"taskName != null  and taskName != ''\">task_name = #{taskName},</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">task_desc = #{taskDesc},</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">operator_no = #{operatorNo},</if>\r\n            <if test=\"operator != null  and operator != ''\">operator = #{operator},</if>\r\n            <if test=\"hospType != null  and hospType != ''\">hosp_type = #{hospType},</if>\r\n            <if test=\"hospno != null  and hospno != ''\">hospno = #{hospno},</if>\r\n            <if test=\"wechat != null  and wechat != ''\">wechat = #{wechat},</if>\r\n            <if test=\"roomno != null  and roomno != ''\">roomno = #{roomno},</if>\r\n            <if test=\"admindate != null\">admindate = #{admindate},</if>\r\n            <if test=\"deptname != null  and deptname != ''\">deptname = #{deptname},</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">leaveicd10code = #{leaveicd10code},</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">leavediagname = #{leavediagname},</if>\r\n            <if test=\"libtemplateid != null \">libtemplateid = #{libtemplateid},</if>\r\n            <if test=\"libtemplatename != null \">libtemplatename = #{libtemplatename},</if>\r\n            <if test=\"patid != null \">patid = #{patid},</if>\r\n            <if test=\"openid != null \">openid = #{openid},</if>\r\n            <if test=\"longSendTime != null \">long_send_time = #{longSendTime},</if>\r\n            <if test=\"sendstate != null \">sendstate = #{sendstate},</if>\r\n            <if test=\"serviceType != null \">service_type = #{serviceType},</if>\r\n            <if test=\"score != null \">score = #{score},</if>\r\n            <if test=\"visitCount != null \">visit_count = #{visitCount},</if>\r\n            <if test=\"submit != null \">submit = #{submit},</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">leavehospitaldistrictcode\r\n                = #{leavehospitaldistrictcode},\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">leavehospitaldistrictname\r\n                = #{leavehospitaldistrictname},\r\n            </if>\r\n            <if test=\"drname != null \">drname = #{drname},</if>\r\n            <if test=\"drcode != null \">drcode = #{drcode},</if>\r\n            <if test=\"starttime != null \">starttime = #{starttime},</if>\r\n            <if test=\"endtime != null \">endtime = #{endtime},</if>\r\n            <if test=\"excep != null \">excep = #{excep},</if>\r\n            <if test=\"nurseName != null \">nurse_name=#{nurseName},</if>\r\n            <if test=\"nurseId != null \">nurse_id=#{nurseId},</if>\r\n            <if test=\"remark != null \">remark=#{remark},</if>\r\n            <if test=\"suggest != null \">suggest=#{suggest},</if>\r\n            <if test=\"inhospid != null \">inhospid=#{inhospid},</if>\r\n            <if test=\"patfrom != null \">patfrom=#{patfrom},</if>\r\n            <if test=\"taskGuid != null \">taskGuid=#{taskGuid},</if>\r\n            <if test=\"patguid != null \">patguid=#{patguid},</if>\r\n            <if test=\"isVisitAgain != null \">is_visit_again=#{isVisitAgain},</if>\r\n            <if test=\"upid != null \">upid=#{upid},</if>\r\n            <if test=\"visitTime != null \">visit_time=#{visitTime},</if>\r\n            <if test=\"visitDeptCode != null\">visit_dept_code = #{visitDeptCode},</if>\r\n            <if test=\"visitDeptName != null\">visit_dept_name = #{visitDeptName},</if>\r\n            <if test=\"managementDoctorCode != null\">management_doctor_code = #{managementDoctorCode},</if>\r\n            <if test=\"managementDoctor != null\">management_doctor=#{managementDoctor},</if>\r\n        </trim>\r\n        <where>\r\n            <if test=\"patid != null \">and patid = #{patid}</if>\r\n            <if test=\"taskid != null \">and taskid = #{taskid}</if>\r\n        </where>\r\n    </update>\r\n\r\n    <update id=\"updateServiceSubtaskByCondition\" parameterType=\"com.smartor.domain.ServiceSubtask\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">sendname = #{sendname},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"sex != null\">sex = #{sex},</if>\r\n            <if test=\"sendstate != null \">sendstate = #{sendstate},</if>\r\n            <if test=\"age != null\">age = #{age},</if>\r\n            <if test=\"sfzh != null\">sfzh = #{sfzh},</if>\r\n            <if test=\"addr != null\">addr = #{addr},</if>\r\n            <if test=\"senderdetail != null\">senderdetail = #{senderdetail},</if>\r\n            <if test=\"type != null\">type = #{type},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatename != null\">templatename = #{templatename},</if>\r\n            <if test=\"senddate != null\">senddate = #{senddate},</if>\r\n            <if test=\"senduuid != null\">senduuid = #{senduuid},</if>\r\n            <if test=\"result != null\">result = #{result},</if>\r\n            <if test=\"finishtime != null\">finishtime = #{finishtime},</if>\r\n            <if test=\"recordid != null\">recordid = #{recordid},</if>\r\n            <if test=\"exrecallcount != null\">exrecallcount = #{exrecallcount},</if>\r\n            <if test=\"pulltime != null\">pulltime = #{pulltime},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"labelstatus != null\">labelstatus = #{labelstatus},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"pid != null\">pid = #{pid},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"visitCount != null\">visit_count = #{visitCount},</if>\r\n            <if test=\"isVisitAgain != null\">is_visit_again = #{isVisitAgain},</if>\r\n            <if test=\"textParam != null\">text_param = #{textParam},</if>\r\n            <if test=\"preachform != null\">preachform = #{preachform},</if>\r\n            <if test=\"bedNo != null\">bed_no = #{bedNo},</if>\r\n            <if test=\"sendType != null  and sendType != ''\">send_type = #{sendType},</if>\r\n            <if test=\"taskName != null  and taskName != ''\">task_name = #{taskName},</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">task_desc = #{taskDesc},</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">operator_no = #{operatorNo},</if>\r\n            <if test=\"operator != null  and operator != ''\">operator = #{operator},</if>\r\n            <if test=\"hospType != null  and hospType != ''\">hosp_type = #{hospType},</if>\r\n            <if test=\"hospno != null  and hospno != ''\">hospno = #{hospno},</if>\r\n            <if test=\"wechat != null  and wechat != ''\">wechat = #{wechat},</if>\r\n            <if test=\"roomno != null  and roomno != ''\">roomno = #{roomno},</if>\r\n            <if test=\"admindate != null\">admindate = #{admindate},</if>\r\n            <if test=\"deptname != null  and deptname != ''\">deptname = #{deptname},</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">leaveicd10code = #{leaveicd10code},</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">leavediagname = #{leavediagname},</if>\r\n            <if test=\"libtemplateid != null \">libtemplateid = #{libtemplateid},</if>\r\n            <if test=\"libtemplatename != null \">libtemplatename = #{libtemplatename},</if>\r\n            <if test=\"patid != null \">patid = #{patid},</if>\r\n            <if test=\"openid != null \">openid = #{openid},</if>\r\n            <if test=\"longSendTime != null \">long_send_time = #{longSendTime},</if>\r\n            <if test=\"serviceType != null \">service_type = #{serviceType},</if>\r\n            <if test=\"score != null \">score = #{score},</if>\r\n            <if test=\"submit != null \">submit = #{submit},</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">leavehospitaldistrictcode\r\n                = #{leavehospitaldistrictcode},\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">leavehospitaldistrictname\r\n                = #{leavehospitaldistrictname},\r\n            </if>\r\n            <if test=\"drname != null \">drname = #{drname},</if>\r\n            <if test=\"drcode != null \">drcode = #{drcode},</if>\r\n            <if test=\"endtime != null \">endtime = #{endtime},</if>\r\n            <if test=\"starttime != null \">starttime = #{starttime},</if>\r\n            <if test=\"excep != null \">excep = #{excep},</if>\r\n            <if test=\"nurseName != null \">nurse_name=#{nurseName},</if>\r\n            <if test=\"nurseId != null \">nurse_id=#{nurseId},</if>\r\n            <if test=\"remark != null \">remark=#{remark},</if>\r\n            <if test=\"suggest != null \">suggest=#{suggest},</if>\r\n            <if test=\"inhospid != null \">inhospid=#{inhospid},</if>\r\n            <if test=\"patfrom != null \">patfrom=#{patfrom},</if>\r\n            <if test=\"taskGuid != null \">task_guid=#{taskGuid},</if>\r\n            <if test=\"patguid != null \">patguid=#{patguid},</if>\r\n            <if test=\"upid != null \">upid=#{upid},</if>\r\n            <if test=\"visitTime != null \">visit_time=#{visitTime},</if>\r\n            <if test=\"visitDeptCode != null\">visit_dept_code = #{visitDeptCode},</if>\r\n            <if test=\"visitDeptName != null\">visit_dept_name = #{visitDeptName},</if>\r\n            <if test=\"managementDoctorCode != null\">management_doctor_code = #{managementDoctorCode},</if>\r\n            <if test=\"managementDoctor != null\">management_doctor=#{managementDoctor},</if>\r\n        </trim>\r\n        where patid = #{patid} and taskid = #{taskid}\r\n    </update>\r\n\r\n    <update id=\"updateServiceSubtaskByTaskGuid\" parameterType=\"com.smartor.domain.ServiceSubtask\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"sendname != null\">sendname = #{sendname},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"sex != null\">sex = #{sex},</if>\r\n            <if test=\"sendstate != null \">sendstate = #{sendstate},</if>\r\n            <if test=\"age != null\">age = #{age},</if>\r\n            <if test=\"sfzh != null\">sfzh = #{sfzh},</if>\r\n            <if test=\"addr != null\">addr = #{addr},</if>\r\n            <if test=\"senderdetail != null\">senderdetail = #{senderdetail},</if>\r\n            <if test=\"type != null\">type = #{type},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatename != null\">templatename = #{templatename},</if>\r\n            <if test=\"senddate != null\">senddate = #{senddate},</if>\r\n            <if test=\"senduuid != null\">senduuid = #{senduuid},</if>\r\n            <if test=\"result != null\">result = #{result},</if>\r\n            <if test=\"finishtime != null\">finishtime = #{finishtime},</if>\r\n            <if test=\"recordid != null\">recordid = #{recordid},</if>\r\n            <if test=\"exrecallcount != null\">exrecallcount = #{exrecallcount},</if>\r\n            <if test=\"pulltime != null\">pulltime = #{pulltime},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"labelstatus != null\">labelstatus = #{labelstatus},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"pid != null\">pid = #{pid},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"textParam != null\">text_param = #{textParam},</if>\r\n            <if test=\"preachform != null\">preachform = #{preachform},</if>\r\n            <if test=\"bedNo != null\">bed_no = #{bedNo},</if>\r\n            <if test=\"sendType != null  and sendType != ''\">send_type = #{sendType},</if>\r\n            <if test=\"taskName != null  and taskName != ''\">task_name = #{taskName},</if>\r\n            <if test=\"taskDesc != null  and taskDesc != ''\">task_desc = #{taskDesc},</if>\r\n            <if test=\"operatorNo != null  and operatorNo != ''\">operator_no = #{operatorNo},</if>\r\n            <if test=\"operator != null  and operator != ''\">operator = #{operator},</if>\r\n            <if test=\"hospType != null  and hospType != ''\">hosp_type = #{hospType},</if>\r\n            <if test=\"hospno != null  and hospno != ''\">hospno = #{hospno},</if>\r\n            <if test=\"wechat != null  and wechat != ''\">wechat = #{wechat},</if>\r\n            <if test=\"roomno != null  and roomno != ''\">roomno = #{roomno},</if>\r\n            <if test=\"admindate != null \">admindate = #{admindate},</if>\r\n            <if test=\"visitCount != null \">visit_count = #{visitCount},</if>\r\n            <if test=\"isVisitAgain != null \">is_visit_again = #{isVisitAgain},</if>\r\n            <if test=\"deptname != null  and deptname != ''\">deptname = #{deptname},</if>\r\n            <if test=\"leaveicd10code != null  and leaveicd10code != ''\">leaveicd10code = #{leaveicd10code},</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">leavediagname = #{leavediagname},</if>\r\n            <if test=\"libtemplateid != null \">libtemplateid = #{libtemplateid},</if>\r\n            <if test=\"libtemplatename != null \">libtemplatename = #{libtemplatename},</if>\r\n            <if test=\"patid != null \">patid = #{patid},</if>\r\n            <if test=\"openid != null \">openid = #{openid},</if>\r\n            <if test=\"longSendTime != null \">long_send_time = #{longSendTime},</if>\r\n            <if test=\"serviceType != null \">service_type = #{serviceType},</if>\r\n            <if test=\"score != null \">score = #{score},</if>\r\n            <if test=\"submit != null \">submit = #{submit},</if>\r\n            <if test=\"leavehospitaldistrictcode != null  and leavehospitaldistrictcode != ''\">leavehospitaldistrictcode\r\n                = #{leavehospitaldistrictcode},\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">leavehospitaldistrictname\r\n                = #{leavehospitaldistrictname},\r\n            </if>\r\n            <if test=\"drname != null \">drname = #{drname},</if>\r\n            <if test=\"drcode != null \">drcode = #{drcode},</if>\r\n            <if test=\"endtime != null \">endtime = #{endtime},</if>\r\n            <if test=\"starttime != null \">starttime = #{starttime},</if>\r\n            <if test=\"excep != null \">excep = #{excep},</if>\r\n            <if test=\"nurseName != null \">nurse_name=#{nurseName},</if>\r\n            <if test=\"nurseId != null \">nurse_id=#{nurseId},</if>\r\n            <if test=\"remark != null \">remark=#{remark},</if>\r\n            <if test=\"suggest != null \">suggest=#{suggest},</if>\r\n            <if test=\"inhospid != null \">inhospid=#{inhospid},</if>\r\n            <if test=\"patfrom != null \">patfrom=#{patfrom},</if>\r\n            <if test=\"taskGuid != null \">task_guid=#{taskGuid},</if>\r\n            <if test=\"patguid != null \">patguid=#{patguid},</if>\r\n            <if test=\"upid != null \">upid=#{upid},</if>\r\n            <if test=\"visitTime != null \">visit_time=#{visitTime},</if>\r\n            <if test=\"visitDeptCode != null\">visit_dept_code = #{visitDeptCode},</if>\r\n            <if test=\"visitDeptName != null\">visit_dept_name = #{visitDeptName},</if>\r\n            <if test=\"managementDoctorCode != null\">management_doctor_code = #{managementDoctorCode},</if>\r\n            <if test=\"managementDoctor != null\">management_doctor=#{managementDoctor},</if>\r\n        </trim>\r\n        where task_guid = #{taskGuid} and task_name = #{taskName}\r\n    </update>\r\n\r\n\r\n    <update id=\"deleteServiceSubtaskById\" parameterType=\"Long\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <update id=\"deleteServiceSubtaskByCondition\">\r\n        update service_subtask\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where patid = #{patid} and taskid = #{taskid}\r\n    </update>\r\n\r\n    <select id=\"getSfStatistics\" parameterType=\"com.smartor.domain.ServiceSubtaskCountReq\"\r\n            resultMap=\"ServiceSubtaskResult\">\r\n        <include refid=\"selectServiceSubtaskVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n                AND leavehospitaldistrictcode IN\r\n                <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leavehospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n                AND deptcode IN\r\n                <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"serviceType != null and serviceType.size() > 0\">\r\n                AND service_type IN\r\n                <foreach collection=\"serviceType\" item=\"serviceType\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{serviceType}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"startTime != null and endTime!=null\">\r\n                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')\r\n                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"visitDeptCode != null\">and visit_dept_code = #{visitDeptCode}</if>\r\n            <if test=\"visitDeptName != null\">abd visit_dept_name = #{visitDeptName}</if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"getSfStatisticsJoy\" parameterType=\"com.smartor.domain.ServiceSubtaskCountReq\"\r\n            resultMap=\"ServiceSubtaskResult2\">\r\n        SELECT sub_id as subTaskId,COUNT(sub_id) joyCount,\r\n             (SELECT COUNT(1) FROM ivr_liba_target WHERE assortid IN (SELECT config_value FROM sys_config WHERE config_key='joyCount')) joyAllCount\r\n        FROM service_subtask_detail a\r\n        WHERE sub_id IN(SELECT id FROM service_subtask t\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n                AND leavehospitaldistrictcode IN\r\n                <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leavehospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n                AND deptcode IN\r\n                <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"serviceType != null and serviceType.size() > 0\">\r\n                AND service_type IN\r\n                <foreach collection=\"serviceType\" item=\"serviceType\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{serviceType}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"startTime != null and endTime!=null\">\r\n                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')\r\n                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"visitDeptCode != null\">and visit_dept_code = #{visitDeptCode}</if>\r\n            <if test=\"visitDeptName != null\">abd visit_dept_name = #{visitDeptName}</if>\r\n        </where>\r\n        )\r\n        AND targetid IN ( SELECT id FROM ivr_liba_target WHERE assortid IN (SELECT config_value FROM sys_config WHERE config_key='joyCount'))\r\n        GROUP BY sub_id\r\n    </select>\r\n\r\n    <select id=\"getSfStatisticsJoydetails\" parameterType=\"com.smartor.domain.ServiceSubtaskCountReq\"\r\n            resultMap=\"ServiceSubtaskResult2\">\r\n        SELECT joyName,joyCount,joyAllCount,ROUND(joyCount/joyAllCount,2) joyTotal  FROM  (\r\n        SELECT targetname joyName,\r\n               (select COUNT(sub_id) FROM service_subtask_detail WHERE sub_id IN(SELECT id FROM service_subtask t\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n                AND leavehospitaldistrictcode IN\r\n                <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leavehospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n                AND deptcode IN\r\n                <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"serviceType != null and serviceType.size() > 0\">\r\n                AND service_type IN\r\n                <foreach collection=\"serviceType\" item=\"serviceType\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{serviceType}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"startTime != null and endTime!=null\">\r\n                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')\r\n                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')\r\n            </if>\r\n        </where>\r\n        ) AND targetid=a.id) joyCount , (SELECT COUNT(*) from (select sub_id FROM service_subtask_detail\r\n        WHERE sub_id IN(SELECT id FROM service_subtask t\r\n        <where>\r\n            del_flag=0\r\n        <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">AND\r\n            leavehospitaldistrictcode IN\r\n            <foreach\r\n                    collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                     close=\")\">\r\n                #{leavehospitaldistrictcode}\r\n            </foreach>\r\n        </if>\r\n        <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n            AND deptcode IN\r\n            <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\"\r\n                     close=\")\">\r\n                #{deptcode}\r\n            </foreach>\r\n        </if>\r\n        <if test=\"serviceType != null and serviceType.size() > 0\">\r\n            AND service_type IN\r\n            <foreach collection=\"serviceType\" item=\"serviceType\" open=\"(\" separator=\",\"\r\n                     close=\")\">\r\n                #{serviceType}\r\n            </foreach>\r\n        </if>\r\n            <if test=\"startTime != null and endTime!=null\">\r\n                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')\r\n                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')\r\n            </if>\r\n    </where>\r\n        GROUP BY sub_id ) ) ta ) joyAllCount\r\n        FROM ivr_liba_target a\r\n        WHERE assortid IN (SELECT config_value FROM sys_config WHERE config_key=\r\n        'joyCount')\r\n        )a1\r\n    </select>\r\n\r\n    <select id=\"getDataByTime\" resultMap=\"ServiceSubtaskResult\">\r\n\r\n        select id,\r\n               sendname,\r\n               long_send_time,\r\n               phone,\r\n               suggest,\r\n               sex,\r\n               age,\r\n               openid,\r\n               sfzh,\r\n               addr,\r\n               senderdetail,\r\n               type,\r\n               taskid,\r\n               visit_time,\r\n               templateid,\r\n               templatename,\r\n               senddate,\r\n               senduuid,\r\n               result,\r\n               finishtime,\r\n               recordid,\r\n               exrecallcount,\r\n               pulltime,\r\n               deptcode,\r\n               labelstatus,\r\n               del_flag,\r\n               upid,\r\n               update_by,\r\n               update_time,\r\n               create_by,\r\n               create_time,\r\n               isupload,\r\n               upload_time,\r\n               orgid,\r\n               pid,\r\n               visit_count,\r\n               is_visit_again,\r\n               guid,\r\n               text_param,\r\n               preachform,\r\n               bed_no,\r\n               send_type,\r\n               task_name,\r\n               task_desc,\r\n               operator_no,\r\n               operator,\r\n               hospno,\r\n               hosp_type,\r\n               wechat,\r\n               roomno,\r\n               admindate,\r\n               patid,\r\n               service_type,\r\n               deptname,\r\n               score,\r\n               drname,\r\n               drcode,\r\n               starttime,\r\n               endtime,\r\n               leavehospitaldistrictcode,\r\n               leavehospitaldistrictname,\r\n               excep,\r\n               nurse_id,\r\n               nurse_name,\r\n               remark,\r\n               inhospid,\r\n               patfrom,\r\n               task_guid,\r\n               leavediagname,\r\n               patguid,\r\n               visitDeptCode,\r\n               visitDeptName,\r\n               management_doctor_code,\r\n               management_doctor,\r\n               leaveicd10code\r\n        FROM service_subtask,\r\n             JSON_TABLE(send_time_slot, '$[*]' COLUMNS (\r\n        begantime DATETIME PATH '$.begantime',\r\n        endtime DATETIME PATH '$.endtime'\r\n        )) AS jt\r\n        WHERE jt.begantime > #{beganTime}\r\n          AND jt.begantime &lt;= #{endTime}\r\n          AND del_flag = 0\r\n    </select>\r\n\r\n    <!--    鑾峰彇闅忚闂ㄨ瘖姣忔湀鐨勬暟閲�-->\r\n    <select id=\"getSfFzInfoEveryMonth\" parameterType=\"com.smartor.domain.ServiceSubtaskCountReq\"\r\n            resultMap=\"ServiceSubtaskResult2\">\r\n        SELECT DATE_FORMAT(st.finishtime, '%Y-%m') AS month,\r\n              st.service_type as service_type,\r\n\t\t      st.id as subTaskId,\r\n    COUNT(*) AS count\r\n        FROM\r\n            service_subtask st\r\n            JOIN\r\n            sys_user_dept dd\r\n        ON dep.dept_id = dd.dept_id\r\n        WHERE\r\n            dd.user_id =#{userId}\r\n          AND st.finishtime IS NOT NULL\r\n          and DATE_FORMAT(st.finishtime\r\n            , '%Y-%m') &gt;= #{startTime}\r\n          and DATE_FORMAT(st.finishtime\r\n            , '%Y-%m') &lt;= #{endTime}\r\n        GROUP BY\r\n            month, st.service_type, st.id\r\n        ORDER BY\r\n            month, st.service_type, st.id;\r\n    </select>\r\n\r\n    <select id=\"getDeptRanking\" parameterType=\"com.smartor.domain.PatMedReq\" resultType=\"com.smartor.domain.PatMedRes\">\r\n        SELECT deptname,\r\n               count(1) AS rc\r\n        FROM service_subtask\r\n        WHERE DATE_FORMAT(finishtime, '%Y-%m-%d') >= #{startDate}\r\n          AND DATE_FORMAT(finishtime, '%Y-%m-%d') &lt;= #{endDate}\r\n        GROUP BY deptname\r\n    </select>\r\n\r\n    <!-- 鏈嶅姟缁熻鏌ヨ - 鎸夋椂闂寸淮搴︾粺璁″嚭闄�/闂ㄨ瘖闅忚鏁版嵁 -->\r\n    <select id=\"getServiceStatistics\" parameterType=\"com.smartor.domain.ServiceStatisticsRequest\"\r\n            resultType=\"com.smartor.domain.ServiceStatisticsResponse\">\r\n        SELECT\r\n        timePeriod,\r\n        SUM(dischargeFollowCount) AS dischargeFollowCount,\r\n        SUM(outpatientFollowCount) AS outpatientFollowCount,\r\n        SUM(pmiCount) AS pmiCount,\r\n        SUM(pmoCount) AS pmoCount\r\n        FROM (\r\n        -- 闅忚鏁版嵁\r\n        SELECT\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(visit_time, '%Y-%m-%d') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(visit_time, '%Y-%m') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(visit_time, '%Y') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0')) AS timePeriod,\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(visit_time, '%Y-%m-%d') AS timePeriod,\r\n            </otherwise>\r\n        </choose>\r\n        COUNT(CASE WHEN service_type = '2' THEN 1 END) AS dischargeFollowCount,\r\n        COUNT(CASE WHEN service_type = '3' THEN 1 END) AS outpatientFollowCount,\r\n        0 AS pmiCount,\r\n        0 AS pmoCount\r\n        FROM service_subtask\r\n        WHERE\r\n        del_flag = '0'\r\n        <if test=\"startDate != null and endDate != null\">\r\n            and date_format(visit_time,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n            and date_format(visit_time,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n        </if>\r\n\r\n        <if test=\"orgid != null\">\r\n            AND orgid = #{orgid}\r\n        </if>\r\n\r\n        <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n            AND deptcode IN\r\n            <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                #{deptcode}\r\n            </foreach>\r\n        </if>\r\n\r\n        <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n            AND leavehospitaldistrictcode IN\r\n            <foreach collection=\"leavehospitaldistrictcodes\" item=\"districtcode\" open=\"(\" separator=\",\" close=\")\">\r\n                #{districtcode}\r\n            </foreach>\r\n        </if>\r\n\r\n        <if test=\"serviceTypes != null and serviceTypes.size() > 0\">\r\n            AND service_type IN\r\n            <foreach collection=\"serviceTypes\" item=\"serviceType\" open=\"(\" separator=\",\" close=\")\">\r\n                #{serviceType}\r\n            </foreach>\r\n        </if>\r\n\r\n        GROUP BY\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(visit_time, '%Y-%m-%d')\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(visit_time, '%Y-%m')\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(visit_time, '%Y')\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0'))\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(visit_time, '%Y-%m-%d')\r\n            </otherwise>\r\n        </choose>\r\n\r\n        UNION ALL\r\n\r\n        -- 鍑洪櫌浜烘鏁版嵁\r\n        SELECT\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(endtime, '%Y-%m-%d') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(endtime, '%Y-%m') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(endtime, '%Y') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0')) AS timePeriod,\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(endtime, '%Y-%m-%d') AS timePeriod,\r\n            </otherwise>\r\n        </choose>\r\n        0 AS dischargeFollowCount,\r\n        0 AS outpatientFollowCount,\r\n        COUNT( patid) AS pmiCount,\r\n        0 AS pmoCount\r\n        FROM pat_med_inhosp\r\n        WHERE del_flag = '0'\r\n        <if test=\"startDate != null and endDate != null\">\r\n            and date_format(endtime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n            and date_format(endtime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n        </if>\r\n\r\n        AND inhospstate=1\r\n        <if test=\"orgid != null\">\r\n            AND orgid = #{orgid}\r\n        </if>\r\n\r\n        <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0\">\r\n            AND leavehospitaldistrictcode IN\r\n            <foreach collection=\"leavehospitaldistrictcodes\" item=\"districtcode\" open=\"(\" separator=\",\" close=\")\">\r\n                #{districtcode}\r\n            </foreach>\r\n        </if>\r\n\r\n        <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n            AND leaveldeptcode IN\r\n            <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                #{deptcode}\r\n            </foreach>\r\n        </if>\r\n\r\n        GROUP BY\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(endtime, '%Y-%m-%d')\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(endtime, '%Y-%m')\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(endtime, '%Y')\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0'))\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(endtime, '%Y-%m-%d')\r\n            </otherwise>\r\n        </choose>\r\n\r\n        UNION ALL\r\n\r\n        -- 闂ㄨ瘖浜烘鏁版嵁\r\n        SELECT\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(admitdate, '%Y-%m') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(admitdate, '%Y') AS timePeriod,\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0')) AS timePeriod,\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(admitdate, '%Y-%m-%d') AS timePeriod,\r\n            </otherwise>\r\n        </choose>\r\n        0 AS dischargeFollowCount,\r\n        0 AS outpatientFollowCount,\r\n        0 AS pmiCount,\r\n        COUNT( patid) AS pmoCount\r\n        FROM pat_med_outhosp\r\n        WHERE del_flag = '0'\r\n        <if test=\"startDate != null and endDate != null\">\r\n            and date_format(admitdate,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n            and date_format(admitdate,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n        </if>\r\n        <if test=\"orgid != null\">\r\n            AND orgid = #{orgid}\r\n        </if>\r\n\r\n        <if test=\"deptcodes != null and deptcodes.size() > 0\">\r\n            AND deptcode IN\r\n            <foreach collection=\"deptcodes\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                #{deptcode}\r\n            </foreach>\r\n        </if>\r\n\r\n        GROUP BY\r\n        <choose>\r\n            <when test=\"timeType == 'day'\">\r\n                DATE_FORMAT(admitdate, '%Y-%m-%d')\r\n            </when>\r\n            <when test=\"timeType == 'month'\">\r\n                DATE_FORMAT(admitdate, '%Y-%m')\r\n            </when>\r\n            <when test=\"timeType == 'year'\">\r\n                DATE_FORMAT(admitdate, '%Y')\r\n            </when>\r\n            <when test=\"timeType == 'week'\">\r\n                CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0'))\r\n            </when>\r\n            <otherwise>\r\n                DATE_FORMAT(admitdate, '%Y-%m-%d')\r\n            </otherwise>\r\n        </choose>\r\n        ) AS combined_data\r\n        GROUP BY timePeriod\r\n        ORDER BY timePeriod DESC\r\n    </select>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml	(date 1759116018878)
-@@ -84,6 +84,7 @@
-         <result property="visitDeptCode" column="visit_dept_code"/>
-         <result property="managementDoctor" column="management_doctor"/>
-         <result property="managementDoctorCode" column="management_doctor_code"/>
-+        <result property="currentPreachform" column="current_preachform"/>
-     </resultMap>
- 
-     <resultMap type="com.smartor.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2">
-@@ -104,6 +105,7 @@
-                patfrom,
-                management_doctor,
-                management_doctor_code,
-+               current_preachform,
-                upid,
-                visit_dept_name,
-                visit_dept_code,
-@@ -185,6 +187,36 @@
-         from service_subtask
-     </sql>
- 
-+    <select id="selectServiceSubtaskBySendstate" parameterType="com.smartor.domain.ServiceSubtaskVO"
-+            resultMap="ServiceSubtaskResult">
-+
-+        <include refid="selectServiceSubtaskVo"/>
-+        <where>
-+            del_flag=0
-+            and taskid = #{taskid}
-+            AND sendstate IN
-+            <foreach collection="sendstates" item="sendstate" open="(" separator=","
-+                     close=")">
-+                #{sendstate}
-+            </foreach>
-+        </where>
-+    </select>
-+
-+    <select id="queryServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
-+            resultMap="ServiceSubtaskResult">
-+        <include refid="selectServiceSubtaskVo"/>
-+        <where>
-+            del_flag=0
-+            <if test="taskid != null ">and taskid = #{taskid}</if>
-+            <if test="visitTime != null">
-+                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{visitTime},'%y%m%d')
-+            </if>
-+            <if test="sendstate != null ">and sendstate = #{sendstate}</if>
-+        </where>
-+
-+    </select>
-+
-+
-     <select id="selectServiceSubtaskList" parameterType="com.smartor.domain.ServiceSubtaskVO"
-             resultMap="ServiceSubtaskResult">
-         <include refid="selectServiceSubtaskVo"/>
-@@ -275,6 +307,9 @@
-                 </if>
-             </if>
- 
-+            <if test="visitTime != null">
-+                AND date_format(visit_time,'%y%m%d') = date_format(#{visitTime},'%y%m%d')
-+            </if>
-             <if test="senddate != null ">and senddate = #{senddate}</if>
-             <if test="senduuid != null  and senduuid != ''">and senduuid = #{senduuid}</if>
-             <if test="result != null  and result != ''">and result = #{result}</if>
-@@ -290,6 +325,7 @@
-             <if test="orgid != null  and orgid != ''">and orgid = #{orgid}</if>
-             <if test="pid != null ">and pid = #{pid}</if>
-             <if test="preachform != null ">and preachform = #{preachform}</if>
-+            <if test="currentPreachform != null ">and current_preachform = #{currentPreachform}</if>
-             <if test="guid != null  and guid != ''">and guid = #{guid}</if>
-             <if test="textParam != null  and textParam != ''">and text_param = #{textParam}</if>
-             <if test="bedNo != null">and bed_no = #{bedNo}</if>
-@@ -324,7 +360,7 @@
-             <if test="createBy != null">and create_by = #{createBy}</if>
-             <if test="taskGuid != null">and task_guid = #{taskGuid}</if>
-             <if test="isVisitAgain != null">and is_visit_again = #{isVisitAgain}</if>
--            <if test="visitTime != null">and visit_time = #{visitTime}</if>
-+            <!-- <if test="visitTime != null">and visit_time = #{visitTime}</if> -->
-             <!--<if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
-             <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>-->
-             <if test="visitCount != null and visitCount > 1 and visitDeptCodes != null and visitDeptCodes.size() > 0">
-@@ -367,6 +403,7 @@
-             <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>
-             <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if>
-             <if test="managementDoctor != null">and management_doctor = #{managementDoctor}</if>
-+            <if test="currentPreachform != null">and current_preachform = #{currentPreachform}</if>
-         </where>
- 
-     </select>
-@@ -421,6 +458,7 @@
-             <if test="visitTime != null ">and visit_time = #{visitTime}</if>
-             <if test="visitDeptCode != null">and visit_dept_code = #{visitDeptCode}</if>
-             <if test="visitDeptName != null">and visit_dept_name = #{visitDeptName}</if>
-+            <if test="currentPreachform != null">and current_preachform = #{currentPreachform}</if>
-             <if test="managementDoctorCode != null">and management_doctor_code = #{managementDoctorCode}</if>
-             <if test="managementDoctor != null">and management_doctor like concat('%',#{managementDoctor}, '%')</if>
-         </where>
-@@ -585,6 +623,7 @@
-             <if test="visitDeptName != null">visit_dept_name,</if>
-             <if test="managementDoctorCode != null">management_doctor_code,</if>
-             <if test="managementDoctor != null">management_doctor,</if>
-+            <if test="currentPreachform != null">current_preachform,</if>
-         </trim>
-         <trim prefix="values (" suffix=")" suffixOverrides=",">
-             <if test="sendname != null">#{sendname},</if>
-@@ -668,6 +707,7 @@
-             <if test="visitDeptName != null">#{visitDeptName},</if>
-             <if test="managementDoctorCode != null">#{managementDoctorCode},</if>
-             <if test="managementDoctor != null">#{managementDoctor},</if>
-+            <if test="currentPreachform != null">#{currentPreachform},</if>
-         </trim>
-     </insert>
- 
-@@ -756,6 +796,7 @@
-             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if>
-             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
-             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
-+            <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
-         </trim>
-         where id = #{id}
-     </update>
-@@ -845,6 +886,7 @@
-             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if>
-             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
-             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
-+            <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
-         </trim>
-         <where>
-             <if test="patid != null ">and patid = #{patid}</if>
-@@ -936,6 +978,7 @@
-             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if>
-             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
-             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
-+            <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
-         </trim>
-         where patid = #{patid} and taskid = #{taskid}
-     </update>
-@@ -1024,6 +1067,7 @@
-             <if test="visitDeptName != null">visit_dept_name = #{visitDeptName},</if>
-             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
-             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
-+            <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
-         </trim>
-         where task_guid = #{taskGuid} and task_name = #{taskName}
-     </update>
-@@ -1204,6 +1248,7 @@
-                openid,
-                sfzh,
-                addr,
-+               current_preachform,
-                senderdetail,
-                type,
-                taskid,
-@@ -1342,16 +1387,16 @@
-                 DATE_FORMAT(visit_time, '%Y-%m-%d') AS timePeriod,
-             </otherwise>
-         </choose>
--        COUNT(CASE WHEN service_type = '2' THEN 1 END) AS dischargeFollowCount,
--        COUNT(CASE WHEN service_type = '3' THEN 1 END) AS outpatientFollowCount,
-+        CASE WHEN service_type = '2' THEN 1 END AS dischargeFollowCount,
-+        CASE WHEN service_type = '3' THEN 1 END AS outpatientFollowCount,
-         0 AS pmiCount,
-         0 AS pmoCount
-         FROM service_subtask
-         WHERE
-         del_flag = '0'
-         <if test="startDate != null and endDate != null">
--            and date_format(visit_time,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')
--            and date_format(visit_time,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')
-+            AND visit_time >= #{startDate}
-+            AND visit_time &lt;= DATE_ADD(#{endDate}, INTERVAL 1 DAY)
-         </if>
- 
-         <if test="orgid != null">
-@@ -1379,24 +1424,24 @@
-             </foreach>
-         </if>
- 
--        GROUP BY
--        <choose>
--            <when test="timeType == 'day'">
--                DATE_FORMAT(visit_time, '%Y-%m-%d')
--            </when>
--            <when test="timeType == 'month'">
--                DATE_FORMAT(visit_time, '%Y-%m')
--            </when>
--            <when test="timeType == 'year'">
--                DATE_FORMAT(visit_time, '%Y')
--            </when>
--            <when test="timeType == 'week'">
--                CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0'))
--            </when>
--            <otherwise>
--                DATE_FORMAT(visit_time, '%Y-%m-%d')
--            </otherwise>
--        </choose>
-+<!--        GROUP BY-->
-+<!--        <choose>-->
-+<!--            <when test="timeType == 'day'">-->
-+<!--                DATE_FORMAT(visit_time, '%Y-%m-%d')-->
-+<!--            </when>-->
-+<!--            <when test="timeType == 'month'">-->
-+<!--                DATE_FORMAT(visit_time, '%Y-%m')-->
-+<!--            </when>-->
-+<!--            <when test="timeType == 'year'">-->
-+<!--                DATE_FORMAT(visit_time, '%Y')-->
-+<!--            </when>-->
-+<!--            <when test="timeType == 'week'">-->
-+<!--                CONCAT(YEAR(visit_time), '-W', LPAD(WEEK(visit_time, 1), 2, '0'))-->
-+<!--            </when>-->
-+<!--            <otherwise>-->
-+<!--                DATE_FORMAT(visit_time, '%Y-%m-%d')-->
-+<!--            </otherwise>-->
-+<!--        </choose>-->
- 
-         UNION ALL
- 
-@@ -1421,13 +1466,13 @@
-         </choose>
-         0 AS dischargeFollowCount,
-         0 AS outpatientFollowCount,
--        COUNT( patid) AS pmiCount,
-+        1 AS pmiCount,
-         0 AS pmoCount
-         FROM pat_med_inhosp
-         WHERE del_flag = '0'
-         <if test="startDate != null and endDate != null">
--            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')
-+            AND endtime >= #{startDate}
-+            AND endtime &lt;= DATE_ADD(#{endDate}, INTERVAL 1 DAY)
-         </if>
- 
-         AND inhospstate=1
-@@ -1449,24 +1494,24 @@
-             </foreach>
-         </if>
- 
--        GROUP BY
--        <choose>
--            <when test="timeType == 'day'">
--                DATE_FORMAT(endtime, '%Y-%m-%d')
--            </when>
--            <when test="timeType == 'month'">
--                DATE_FORMAT(endtime, '%Y-%m')
--            </when>
--            <when test="timeType == 'year'">
--                DATE_FORMAT(endtime, '%Y')
--            </when>
--            <when test="timeType == 'week'">
--                CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0'))
--            </when>
--            <otherwise>
--                DATE_FORMAT(endtime, '%Y-%m-%d')
--            </otherwise>
--        </choose>
-+<!--        GROUP BY-->
-+<!--        <choose>-->
-+<!--            <when test="timeType == 'day'">-->
-+<!--                DATE_FORMAT(endtime, '%Y-%m-%d')-->
-+<!--            </when>-->
-+<!--            <when test="timeType == 'month'">-->
-+<!--                DATE_FORMAT(endtime, '%Y-%m')-->
-+<!--            </when>-->
-+<!--            <when test="timeType == 'year'">-->
-+<!--                DATE_FORMAT(endtime, '%Y')-->
-+<!--            </when>-->
-+<!--            <when test="timeType == 'week'">-->
-+<!--                CONCAT(YEAR(endtime), '-W', LPAD(WEEK(endtime, 1), 2, '0'))-->
-+<!--            </when>-->
-+<!--            <otherwise>-->
-+<!--                DATE_FORMAT(endtime, '%Y-%m-%d')-->
-+<!--            </otherwise>-->
-+<!--        </choose>-->
- 
-         UNION ALL
- 
-@@ -1492,12 +1537,12 @@
-         0 AS dischargeFollowCount,
-         0 AS outpatientFollowCount,
-         0 AS pmiCount,
--        COUNT( patid) AS pmoCount
-+        1 AS pmoCount
-         FROM pat_med_outhosp
-         WHERE del_flag = '0'
-         <if test="startDate != null and endDate != null">
--            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')
-+            AND admitdate >= #{startDate}
-+            AND admitdate &lt;= DATE_ADD(#{endDate}, INTERVAL 1 DAY)
-         </if>
-         <if test="orgid != null">
-             AND orgid = #{orgid}
-@@ -1510,24 +1555,24 @@
-             </foreach>
-         </if>
- 
--        GROUP BY
--        <choose>
--            <when test="timeType == 'day'">
--                DATE_FORMAT(admitdate, '%Y-%m-%d')
--            </when>
--            <when test="timeType == 'month'">
--                DATE_FORMAT(admitdate, '%Y-%m')
--            </when>
--            <when test="timeType == 'year'">
--                DATE_FORMAT(admitdate, '%Y')
--            </when>
--            <when test="timeType == 'week'">
--                CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0'))
--            </when>
--            <otherwise>
--                DATE_FORMAT(admitdate, '%Y-%m-%d')
--            </otherwise>
--        </choose>
-+<!--        GROUP BY-->
-+<!--        <choose>-->
-+<!--            <when test="timeType == 'day'">-->
-+<!--                DATE_FORMAT(admitdate, '%Y-%m-%d')-->
-+<!--            </when>-->
-+<!--            <when test="timeType == 'month'">-->
-+<!--                DATE_FORMAT(admitdate, '%Y-%m')-->
-+<!--            </when>-->
-+<!--            <when test="timeType == 'year'">-->
-+<!--                DATE_FORMAT(admitdate, '%Y')-->
-+<!--            </when>-->
-+<!--            <when test="timeType == 'week'">-->
-+<!--                CONCAT(YEAR(admitdate), '-W', LPAD(WEEK(admitdate, 1), 2, '0'))-->
-+<!--            </when>-->
-+<!--            <otherwise>-->
-+<!--                DATE_FORMAT(admitdate, '%Y-%m-%d')-->
-+<!--            </otherwise>-->
-+<!--        </choose>-->
-         ) AS combined_data
-         GROUP BY timePeriod
-         ORDER BY timePeriod DESC
-Index: smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.ServiceSubtaskDetailMapper\">\r\n\r\n    <resultMap type=\"com.smartor.domain.ServiceSubtaskDetail\" id=\"ServiceSubtaskDetailResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"subId\" column=\"sub_id\"/>\r\n        <result property=\"targetid\" column=\"targetid\"/>\r\n        <result property=\"taskid\" column=\"taskid\"/>\r\n        <result property=\"uuid\" column=\"uuid\"/>\r\n        <result property=\"phone\" column=\"phone\"/>\r\n        <result property=\"operate\" column=\"operate\"/>\r\n        <result property=\"displayno\" column=\"displayno\"/>\r\n        <result property=\"inbound\" column=\"inbound\"/>\r\n        <result property=\"incoming\" column=\"incoming\"/>\r\n        <result property=\"assigntime\" column=\"assigntime\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"answertime\" column=\"answertime\"/>\r\n        <result property=\"silent\" column=\"silent\"/>\r\n        <result property=\"dtmfKey\" column=\"dtmf_key\"/>\r\n        <result property=\"musicpath\" column=\"musicpath\"/>\r\n        <result property=\"sentIndex\" column=\"sent_index\"/>\r\n        <result property=\"sentBegin\" column=\"sent_begin\"/>\r\n        <result property=\"asrtext\" column=\"asrtext\"/>\r\n        <result property=\"beginTime\" column=\"begin_time\"/>\r\n        <result property=\"endTime\" column=\"end_time\"/>\r\n        <result property=\"sentEnd\" column=\"sent_end\"/>\r\n        <result property=\"recordpath\" column=\"recordpath\"/>\r\n        <result property=\"recordurl\" column=\"recordurl\"/>\r\n        <result property=\"templateid\" column=\"templateid\"/>\r\n        <result property=\"templatequestionnum\" column=\"templatequestionnum\"/>\r\n        <result property=\"switchid\" column=\"switchid\"/>\r\n        <result property=\"questiontext\" column=\"questiontext\"/>\r\n        <result property=\"questionvoice\" column=\"questionvoice\"/>\r\n        <result property=\"categoryname\" column=\"categoryname\"/>\r\n        <result property=\"targetoptions\" column=\"targetoptions\"/>\r\n        <result property=\"targetvalue\" column=\"targetvalue\"/>\r\n        <result property=\"matchedtext\" column=\"matchedtext\"/>\r\n        <result property=\"addtime\" column=\"addtime\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"valueType\" column=\"value_type\"/>\r\n        <result property=\"scriptid\" column=\"scriptid\"/>\r\n        <result property=\"answerps\" column=\"answerps\"/>\r\n        <result property=\"comment\" column=\"comment\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"extemplateText\" column=\"extemplate_text\"/>\r\n    </resultMap>\r\n    <resultMap type=\"com.smartor.domain.ServiceSubtaskDetailTarget\" id=\"ServiceSubtaskDetailTargetResult\">\r\n        <result property=\"targetid\" column=\"targetid\"/>\r\n        <result property=\"taskid\" column=\"taskid\"/>\r\n        <result property=\"targetname\" column=\"targetname\"/>\r\n        <result property=\"matchedtext\" column=\"matchedtext\"/>\r\n        <result property=\"count\" column=\"count\"/>\r\n    </resultMap>\r\n    <sql id=\"selectServiceSubtaskDetailVo\">\r\n        select id,\r\n               sub_id,\r\n               targetid,\r\n               answerps,\r\n               scriptid,\r\n               extemplate_text,\r\n               comment,\r\n               patid,\r\n               taskid,\r\n               uuid,\r\n               guid,\r\n               phone,\r\n               operate,\r\n               displayno,\r\n               inbound,\r\n               incoming,\r\n               assigntime,\r\n               starttime,\r\n               answertime,\r\n               silent,\r\n               dtmf_key,\r\n               musicpath,\r\n               sent_index,\r\n               sent_begin,\r\n               asrtext,\r\n               begin_time,\r\n               end_time,\r\n               sent_end,\r\n               recordpath,\r\n               recordurl,\r\n               templateid,\r\n               templatequestionnum,\r\n               switchid,\r\n               questiontext,\r\n               questionvoice,\r\n               categoryname,\r\n               targetoptions,\r\n               targetvalue,\r\n               matchedtext,\r\n               addtime,\r\n               isupload,\r\n               upload_time,\r\n               orgid,\r\n               create_time,\r\n               del_flag,\r\n               update_by,\r\n               update_time,\r\n               value_type,\r\n               create_by\r\n        from service_subtask_detail\r\n    </sql>\r\n\r\n    <select id=\"selectServiceSubtaskDetailList\" parameterType=\"com.smartor.domain.ServiceSubtaskDetail\"\r\n            resultMap=\"ServiceSubtaskDetailResult\">\r\n        <include refid=\"selectServiceSubtaskDetailVo\"/>\r\n        <where>\r\n            <if test=\"subId != null\">and sub_id = #{subId}</if>\r\n            <if test=\"targetid != null\">and targetid = #{targetid}</if>\r\n            <if test=\"extemplateText != null\">and extemplate_text = #{extemplateText}</if>\r\n            <if test=\"taskid != null\">and taskid = #{taskid}</if>\r\n            <if test=\"uuid != null  and uuid != ''\">and uuid = #{uuid}</if>\r\n            <if test=\"phone != null  and phone != ''\">and phone = #{phone}</if>\r\n            <if test=\"operate != null  and operate != ''\">and operate = #{operate}</if>\r\n            <if test=\"displayno != null  and displayno != ''\">and displayno = #{displayno}</if>\r\n            <if test=\"inbound != null \">and inbound = #{inbound}</if>\r\n            <if test=\"incoming != null \">and incoming = #{incoming}</if>\r\n            <if test=\"assigntime != null \">and assigntime = #{assigntime}</if>\r\n            <if test=\"starttime != null \">and starttime = #{starttime}</if>\r\n            <if test=\"answertime != null \">and answertime = #{answertime}</if>\r\n            <if test=\"silent != null \">and silent = #{silent}</if>\r\n            <if test=\"dtmfKey != null  and dtmfKey != ''\">and dtmf_key = #{dtmfKey}</if>\r\n            <if test=\"musicpath != null  and musicpath != ''\">and musicpath = #{musicpath}</if>\r\n            <if test=\"sentIndex != null \">and sent_index = #{sentIndex}</if>\r\n            <if test=\"sentBegin != null \">and sent_begin = #{sentBegin}</if>\r\n            <if test=\"asrtext != null  and asrtext != ''\">and asrtext = #{asrtext}</if>\r\n            <if test=\"beginTime != null \">and begin_time = #{beginTime}</if>\r\n            <if test=\"endTime != null \">and end_time = #{endTime}</if>\r\n            <if test=\"sentEnd != null \">and sent_end = #{sentEnd}</if>\r\n            <if test=\"recordpath != null  and recordpath != ''\">and recordpath = #{recordpath}</if>\r\n            <if test=\"recordurl != null  and recordurl != ''\">and recordurl = #{recordurl}</if>\r\n            <if test=\"templateid != null  and templateid != ''\">and templateid = #{templateid}</if>\r\n            <if test=\"templatequestionnum != null \">and templatequestionnum = #{templatequestionnum}</if>\r\n            <if test=\"switchid != null \">and switchid = #{switchid}</if>\r\n            <if test=\"questiontext != null  and questiontext != ''\">and questiontext = #{questiontext}</if>\r\n            <if test=\"questionvoice != null  and questionvoice != ''\">and questionvoice = #{questionvoice}</if>\r\n            <if test=\"categoryname != null  and categoryname != ''\">and categoryname like concat('%', #{categoryname},\r\n                '%')\r\n            </if>\r\n            <if test=\"targetoptions != null  and targetoptions != ''\">and targetoptions = #{targetoptions}</if>\r\n            <if test=\"targetvalue != null  and targetvalue != ''\">and targetvalue = #{targetvalue}</if>\r\n            <if test=\"matchedtext != null  and matchedtext != ''\">and matchedtext = #{matchedtext}</if>\r\n            <if test=\"addtime != null \">and addtime = #{addtime}</if>\r\n            <if test=\"isupload != null \">and isupload = #{isupload}</if>\r\n            <if test=\"uploadTime != null \">and upload_time = #{uploadTime}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"valueType != null  and valueType != ''\">and value_type = #{valueType}</if>\r\n            <if test=\"answerps != null  and answerps != ''\">and answerps = #{answerps}</if>\r\n            <if test=\"comment != null  and comment != ''\">and comment = #{comment}</if>\r\n            <if test=\"scriptid != null \">and scriptid = #{scriptid}</if>\r\n            <if test=\" patid != null\">and patid = #{patid}</if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectServiceSubtaskDetailByCalldetailid\" parameterType=\"String\" resultMap=\"ServiceSubtaskDetailResult\">\r\n        <include refid=\"selectServiceSubtaskDetailVo\"/>\r\n        where id = #{id}\r\n    </select>\r\n\r\n    <insert id=\"insertServiceSubtaskDetail\" parameterType=\"com.smartor.domain.ServiceSubtaskDetail\">\r\n        insert into service_subtask_detail\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"id != null\">id,</if>\r\n            <if test=\"subId != null\">sub_id,</if>\r\n            <if test=\"targetid != null\">targetid,</if>\r\n            <if test=\"taskid != null\">taskid,</if>\r\n            <if test=\"uuid != null\">uuid,</if>\r\n            <if test=\"phone != null\">phone,</if>\r\n            <if test=\"operate != null\">operate,</if>\r\n            <if test=\"displayno != null\">displayno,</if>\r\n            <if test=\"inbound != null\">inbound,</if>\r\n            <if test=\"incoming != null\">incoming,</if>\r\n            <if test=\"assigntime != null\">assigntime,</if>\r\n            <if test=\"starttime != null\">starttime,</if>\r\n            <if test=\"answertime != null\">answertime,</if>\r\n            <if test=\"silent != null\">silent,</if>\r\n            <if test=\"dtmfKey != null\">dtmf_key,</if>\r\n            <if test=\"musicpath != null\">musicpath,</if>\r\n            <if test=\"sentIndex != null\">sent_index,</if>\r\n            <if test=\"sentBegin != null\">sent_begin,</if>\r\n            <if test=\"asrtext != null\">asrtext,</if>\r\n            <if test=\"beginTime != null\">begin_time,</if>\r\n            <if test=\"endTime != null\">end_time,</if>\r\n            <if test=\"sentEnd != null\">sent_end,</if>\r\n            <if test=\"recordpath != null\">recordpath,</if>\r\n            <if test=\"recordurl != null\">recordurl,</if>\r\n            <if test=\"templateid != null\">templateid,</if>\r\n            <if test=\"templatequestionnum != null\">templatequestionnum,</if>\r\n            <if test=\"switchid != null\">switchid,</if>\r\n            <if test=\"questiontext != null\">questiontext,</if>\r\n            <if test=\"questionvoice != null\">questionvoice,</if>\r\n            <if test=\"categoryname != null\">categoryname,</if>\r\n            <if test=\"targetoptions != null\">targetoptions,</if>\r\n            <if test=\"targetvalue != null\">targetvalue,</if>\r\n            <if test=\"matchedtext != null\">matchedtext,</if>\r\n            <if test=\"addtime != null\">addtime,</if>\r\n            <if test=\"isupload != null\">isupload,</if>\r\n            <if test=\"uploadTime != null\">upload_time,</if>\r\n            <if test=\"orgid != null\">orgid,</if>\r\n            <if test=\"createTime != null\">create_time,</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag,</if>\r\n            <if test=\"updateBy != null\">update_by,</if>\r\n            <if test=\"updateTime != null\">update_time,</if>\r\n            <if test=\"createBy != null\">create_by,</if>\r\n            <if test=\"valueType != null\">value_type,</if>\r\n            <if test=\"answerps != null  and answerps != ''\">answerps,</if>\r\n            <if test=\"comment != null  and comment != ''\">comment,</if>\r\n            <if test=\"scriptid != null \">scriptid,</if>\r\n            <if test=\" patid != null\">patid,</if>\r\n            <if test=\" extemplateText != null\">extemplate_text,</if>\r\n            <if test=\" guid != null\">guid,</if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"id != null\">#{id},</if>\r\n            <if test=\"subId != null\">#{subId},</if>\r\n            <if test=\"targetid != null\">#{targetid},</if>\r\n            <if test=\"taskid != null\">#{taskid},</if>\r\n            <if test=\"uuid != null\">#{uuid},</if>\r\n            <if test=\"phone != null\">#{phone},</if>\r\n            <if test=\"operate != null\">#{operate},</if>\r\n            <if test=\"displayno != null\">#{displayno},</if>\r\n            <if test=\"inbound != null\">#{inbound},</if>\r\n            <if test=\"incoming != null\">#{incoming},</if>\r\n            <if test=\"assigntime != null\">#{assigntime},</if>\r\n            <if test=\"starttime != null\">#{starttime},</if>\r\n            <if test=\"answertime != null\">#{answertime},</if>\r\n            <if test=\"silent != null\">#{silent},</if>\r\n            <if test=\"dtmfKey != null\">#{dtmfKey},</if>\r\n            <if test=\"musicpath != null\">#{musicpath},</if>\r\n            <if test=\"sentIndex != null\">#{sentIndex},</if>\r\n            <if test=\"sentBegin != null\">#{sentBegin},</if>\r\n            <if test=\"asrtext != null\">#{asrtext},</if>\r\n            <if test=\"beginTime != null\">#{beginTime},</if>\r\n            <if test=\"endTime != null\">#{endTime},</if>\r\n            <if test=\"sentEnd != null\">#{sentEnd},</if>\r\n            <if test=\"recordpath != null\">#{recordpath},</if>\r\n            <if test=\"recordurl != null\">#{recordurl},</if>\r\n            <if test=\"templateid != null\">#{templateid},</if>\r\n            <if test=\"templatequestionnum != null\">#{templatequestionnum},</if>\r\n            <if test=\"switchid != null\">#{switchid},</if>\r\n            <if test=\"questiontext != null\">#{questiontext},</if>\r\n            <if test=\"questionvoice != null\">#{questionvoice},</if>\r\n            <if test=\"categoryname != null\">#{categoryname},</if>\r\n            <if test=\"targetoptions != null\">#{targetoptions},</if>\r\n            <if test=\"targetvalue != null\">#{targetvalue},</if>\r\n            <if test=\"matchedtext != null\">#{matchedtext},</if>\r\n            <if test=\"addtime != null\">#{addtime},</if>\r\n            <if test=\"isupload != null\">#{isupload},</if>\r\n            <if test=\"uploadTime != null\">#{uploadTime},</if>\r\n            <if test=\"orgid != null\">#{orgid},</if>\r\n            <if test=\"createTime != null\">#{createTime},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">#{delFlag},</if>\r\n            <if test=\"updateBy != null\">#{updateBy},</if>\r\n            <if test=\"updateTime != null\">#{updateTime},</if>\r\n            <if test=\"createBy != null\">#{createBy},</if>\r\n            <if test=\"valueType != null\">#{valueType},</if>\r\n            <if test=\"answerps != null  and answerps != ''\">#{answerps},</if>\r\n            <if test=\"comment != null  and comment != ''\">#{comment},</if>\r\n            <if test=\"scriptid != null \">#{scriptid},</if>\r\n            <if test=\"patid != null\">#{patid},</if>\r\n            <if test=\"extemplateText != null\">#{extemplateText},</if>\r\n            <if test=\"guid != null\">#{guid},</if>\r\n        </trim>\r\n    </insert>\r\n\r\n    <update id=\"updateServiceSubtaskDetail\" parameterType=\"com.smartor.domain.ServiceSubtaskDetail\">\r\n        update service_subtask_detail\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"subId != null\">sub_id = #{subId},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"targetid != null\">targetid = #{targetid},</if>\r\n            <if test=\"uuid != null\">uuid = #{uuid},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"operate != null\">operate = #{operate},</if>\r\n            <if test=\"displayno != null\">displayno = #{displayno},</if>\r\n            <if test=\"inbound != null\">inbound = #{inbound},</if>\r\n            <if test=\"incoming != null\">incoming = #{incoming},</if>\r\n            <if test=\"assigntime != null\">assigntime = #{assigntime},</if>\r\n            <if test=\"starttime != null\">starttime = #{starttime},</if>\r\n            <if test=\"answertime != null\">answertime = #{answertime},</if>\r\n            <if test=\"silent != null\">silent = #{silent},</if>\r\n            <if test=\"dtmfKey != null\">dtmf_key = #{dtmfKey},</if>\r\n            <if test=\"musicpath != null\">musicpath = #{musicpath},</if>\r\n            <if test=\"sentIndex != null\">sent_index = #{sentIndex},</if>\r\n            <if test=\"sentBegin != null\">sent_begin = #{sentBegin},</if>\r\n            <if test=\"asrtext != null\">asrtext = #{asrtext},</if>\r\n            <if test=\"beginTime != null\">begin_time = #{beginTime},</if>\r\n            <if test=\"endTime != null\">end_time = #{endTime},</if>\r\n            <if test=\"sentEnd != null\">sent_end = #{sentEnd},</if>\r\n            <if test=\"recordpath != null\">recordpath = #{recordpath},</if>\r\n            <if test=\"recordurl != null\">recordurl = #{recordurl},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatequestionnum != null\">templatequestionnum = #{templatequestionnum},</if>\r\n            <if test=\"switchid != null\">switchid = #{switchid},</if>\r\n            <if test=\"questiontext != null\">questiontext = #{questiontext},</if>\r\n            <if test=\"questionvoice != null\">questionvoice = #{questionvoice},</if>\r\n            <if test=\"categoryname != null\">categoryname = #{categoryname},</if>\r\n            <if test=\"targetoptions != null\">targetoptions = #{targetoptions},</if>\r\n            <if test=\"targetvalue != null\">targetvalue = #{targetvalue},</if>\r\n            <if test=\"matchedtext != null\">matchedtext = #{matchedtext},</if>\r\n            <if test=\"addtime != null\">addtime = #{addtime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag = #{delFlag},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"valueType != null\">value_type = #{valueType},</if>\r\n            <if test=\"answerps != null  and answerps != ''\">answerps = #{answerps},</if>\r\n            <if test=\"comment != null  and comment != ''\">comment = #{comment},</if>\r\n            <if test=\"scriptid != null \">scriptid = #{scriptid},</if>\r\n            <if test=\" patid != null\">patid = #{patid},</if>\r\n            <if test=\" extemplateText != null\">extemplate_text = #{extemplateText},</if>\r\n            <if test=\" guid != null\">guid = #{guid},</if>\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n\r\n    <update id=\"updateSSDByCondition\" parameterType=\"com.smartor.domain.ServiceSubtaskDetail\">\r\n        update service_subtask_detail\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"subId != null\">sub_id = #{subId},</if>\r\n            <if test=\"taskid != null\">taskid = #{taskid},</if>\r\n            <if test=\"targetid != null\">targetid = #{targetid},</if>\r\n            <if test=\"uuid != null\">uuid = #{uuid},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"operate != null\">operate = #{operate},</if>\r\n            <if test=\"displayno != null\">displayno = #{displayno},</if>\r\n            <if test=\"inbound != null\">inbound = #{inbound},</if>\r\n            <if test=\"incoming != null\">incoming = #{incoming},</if>\r\n            <if test=\"assigntime != null\">assigntime = #{assigntime},</if>\r\n            <if test=\"starttime != null\">starttime = #{starttime},</if>\r\n            <if test=\"answertime != null\">answertime = #{answertime},</if>\r\n            <if test=\"silent != null\">silent = #{silent},</if>\r\n            <if test=\"dtmfKey != null\">dtmf_key = #{dtmfKey},</if>\r\n            <if test=\"musicpath != null\">musicpath = #{musicpath},</if>\r\n            <if test=\"sentIndex != null\">sent_index = #{sentIndex},</if>\r\n            <if test=\"sentBegin != null\">sent_begin = #{sentBegin},</if>\r\n            <if test=\"asrtext != null\">asrtext = #{asrtext},</if>\r\n            <if test=\"beginTime != null\">begin_time = #{beginTime},</if>\r\n            <if test=\"endTime != null\">end_time = #{endTime},</if>\r\n            <if test=\"sentEnd != null\">sent_end = #{sentEnd},</if>\r\n            <if test=\"recordpath != null\">recordpath = #{recordpath},</if>\r\n            <if test=\"recordurl != null\">recordurl = #{recordurl},</if>\r\n            <if test=\"templateid != null\">templateid = #{templateid},</if>\r\n            <if test=\"templatequestionnum != null\">templatequestionnum = #{templatequestionnum},</if>\r\n            <if test=\"switchid != null\">switchid = #{switchid},</if>\r\n            <if test=\"questiontext != null\">questiontext = #{questiontext},</if>\r\n            <if test=\"questionvoice != null\">questionvoice = #{questionvoice},</if>\r\n            <if test=\"categoryname != null\">categoryname = #{categoryname},</if>\r\n            <if test=\"targetoptions != null\">targetoptions = #{targetoptions},</if>\r\n            <if test=\"targetvalue != null\">targetvalue = #{targetvalue},</if>\r\n            <if test=\"matchedtext != null\">matchedtext = #{matchedtext},</if>\r\n            <if test=\"addtime != null\">addtime = #{addtime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag = #{delFlag},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"valueType != null\">value_type = #{valueType},</if>\r\n            <if test=\"answerps != null  and answerps != ''\">answerps = #{answerps},</if>\r\n            <if test=\"comment != null  and comment != ''\">comment = #{comment},</if>\r\n            <if test=\"scriptid != null \">scriptid = #{scriptid},</if>\r\n            <if test=\" patid != null\">patid = #{patid},</if>\r\n            <if test=\" extemplateText != null\">extemplate_text = #{extemplateText},</if>\r\n            <if test=\" guid != null\">guid = #{guid},</if>\r\n        </trim>\r\n        where patid = #{patid} and scriptid = #{scriptid} and sub_id = #{subId}\r\n    </update>\r\n\r\n    <delete id=\"deleteServiceSubtaskDetailByCalldetailid\" parameterType=\"String\">\r\n        delete\r\n        from service_subtask_detail\r\n        where id = #{id}\r\n    </delete>\r\n\r\n    <delete id=\"deleteServiceSubtaskDetailByCalldetailids\" parameterType=\"String\">\r\n        delete from service_subtask_detail where id in\r\n        <foreach item=\"id\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{id}\r\n        </foreach>\r\n    </delete>\r\n\r\n    <select id=\"countPatByTarget\" parameterType=\"Long\" resultMap=\"ServiceSubtaskDetailTargetResult\">\r\n        SELECT service_task.taskid,\r\n               service_subtask_detail.targetid,\r\n               ivr_liba_target.targetname,\r\n               service_subtask_detail.matchedtext,\r\n               count(service_subtask_detail.matchedtext) count\r\n        FROM service_subtask_detail\r\n            JOIN service_task\r\n        ON service_task.taskid = service_subtask_detail.taskid\r\n            JOIN ivr_liba_target ON ivr_liba_target.id = service_subtask_detail.targetid\r\n        WHERE\r\n            targetid = #{targetid}\r\n        GROUP BY service_task.taskid,\r\n            service_subtask_detail.targetid,\r\n            ivr_liba_target.targetname,\r\n            service_subtask_detail.matchedtext\r\n    </select>\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml	(date 1758798202679)
-@@ -171,7 +171,9 @@
-         where id = #{id}
-     </select>
- 
--    <insert id="insertServiceSubtaskDetail" parameterType="com.smartor.domain.ServiceSubtaskDetail">
-+    <insert id="insertServiceSubtaskDetail" parameterType="com.smartor.domain.ServiceSubtaskDetail"
-+            useGeneratedKeys="true"
-+            keyProperty="id">
-         insert into service_subtask_detail
-         <trim prefix="(" suffix=")" suffixOverrides=",">
-             <if test="id != null">id,</if>
-Index: ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.ruoyi.system.mapper.SysConfigMapper\">\r\n\r\n    <resultMap type=\"SysConfig\" id=\"SysConfigResult\">\r\n        <id property=\"configId\" column=\"config_id\"/>\r\n        <result property=\"configName\" column=\"config_name\"/>\r\n        <result property=\"configKey\" column=\"config_key\"/>\r\n        <result property=\"configValue\" column=\"config_value\"/>\r\n        <result property=\"configType\" column=\"config_type\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectConfigVo\">\r\n        select config_id,\r\n               config_name,\r\n               orgid,\r\n               config_key,\r\n               config_value,\r\n               config_type,\r\n               create_by,\r\n               create_time,\r\n               update_by,\r\n               update_time,\r\n               guid,\r\n               remark\r\n        from sys_config\r\n    </sql>\r\n\r\n    <!-- 鏌ヨ鏉′欢 -->\r\n    <sql id=\"sqlwhereSearch\">\r\n        <where>\r\n            <if test=\"configId !=null\">\r\n                and config_id = #{configId}\r\n            </if>\r\n            <if test=\"configKey !=null and configKey != ''\">\r\n                and config_key = #{configKey}\r\n            </if>\r\n            <if test=\"orgid !=null and orgid != ''\">\r\n                and orgid = #{orgid}\r\n            </if>\r\n        </where>\r\n    </sql>\r\n\r\n    <select id=\"selectConfig\" parameterType=\"SysConfig\" resultMap=\"SysConfigResult\">\r\n        <include refid=\"selectConfigVo\"/>\r\n        <include refid=\"sqlwhereSearch\"/>\r\n    </select>\r\n\r\n    <select id=\"selectConfigList\" parameterType=\"SysConfig\" resultMap=\"SysConfigResult\">\r\n        <include refid=\"selectConfigVo\"/>\r\n        <where>\r\n            <if test=\"configName != null and configName != ''\">\r\n                AND config_name like concat('%', #{configName}, '%')\r\n            </if>\r\n            <if test=\"configType != null and configType != ''\">\r\n                AND config_type = #{configType}\r\n            </if>\r\n            <if test=\"configKey != null and configKey != ''\">\r\n                AND config_key like concat('%', #{configKey}, '%')\r\n            </if>\r\n            <if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 寮�濮嬫椂闂存绱� -->\r\n                and date_format(create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"params.endTime != null and params.endTime != ''\"><!-- 缁撴潫鏃堕棿妫�绱� -->\r\n                and date_format(create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectConfigById\" parameterType=\"Long\" resultMap=\"SysConfigResult\">\r\n        <include refid=\"selectConfigVo\"/>\r\n        where config_id = #{configId}\r\n    </select>\r\n\r\n    <select id=\"checkConfigKeyUnique\" parameterType=\"String\" resultMap=\"SysConfigResult\">\r\n        <include refid=\"selectConfigVo\"/>\r\n        where config_key = #{configKey} limit 1\r\n    </select>\r\n\r\n    <insert id=\"insertConfig\" parameterType=\"SysConfig\">\r\n        insert into sys_config (\r\n        <if test=\"configName != null and configName != '' \">config_name,</if>\r\n        <if test=\"configKey != null and configKey != '' \">config_key,</if>\r\n        <if test=\"configValue != null and configValue != '' \">config_value,</if>\r\n        <if test=\"configType != null and configType != '' \">config_type,</if>\r\n        <if test=\"createBy != null and createBy != ''\">create_by,</if>\r\n        <if test=\"remark != null and remark != ''\">remark,</if>\r\n        <if test=\"guid != null and guid != ''\">guid,</if>\r\n        <if test=\"orgid != null and orgid != ''\">orgid,</if>\r\n        create_time\r\n        )values(\r\n        <if test=\"configName != null and configName != ''\">#{configName},</if>\r\n        <if test=\"configKey != null and configKey != ''\">#{configKey},</if>\r\n        <if test=\"configValue != null and configValue != ''\">#{configValue},</if>\r\n        <if test=\"configType != null and configType != ''\">#{configType},</if>\r\n        <if test=\"createBy != null and createBy != ''\">#{createBy},</if>\r\n        <if test=\"remark != null and remark != ''\">#{remark},</if>\r\n        <if test=\"guid != null and guid != ''\">#{guid},</if>\r\n        <if test=\"orgid != null and orgid != ''\">#{orgid},</if>\r\n        sysdate()\r\n        )\r\n    </insert>\r\n\r\n    <update id=\"updateConfig\" parameterType=\"SysConfig\">\r\n        update sys_config\r\n        <set>\r\n            <if test=\"configName != null and configName != ''\">config_name = #{configName},</if>\r\n            <if test=\"configKey != null and configKey != ''\">config_key = #{configKey},</if>\r\n            <if test=\"configValue != null and configValue != ''\">config_value = #{configValue},</if>\r\n            <if test=\"configType != null and configType != ''\">config_type = #{configType},</if>\r\n            <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\r\n            <if test=\"remark != null\">remark = #{remark},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            update_time = sysdate()\r\n        </set>\r\n        where config_id = #{configId}\r\n    </update>\r\n\r\n    <delete id=\"deleteConfigById\" parameterType=\"Long\">\r\n        delete\r\n        from sys_config\r\n        where config_id = #{configId}\r\n    </delete>\r\n\r\n    <delete id=\"deleteConfigByIds\" parameterType=\"Long\">\r\n        delete from sys_config where config_id in\r\n        <foreach item=\"configId\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{configId}\r\n        </foreach>\r\n    </delete>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml
---- a/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml	(date 1758798202706)
-@@ -43,9 +43,6 @@
-             <if test="configKey !=null and configKey != ''">
-                 and config_key = #{configKey}
-             </if>
--            <if test="orgid !=null and orgid != ''">
--                and orgid = #{orgid}
--            </if>
-         </where>
-     </sql>
- 
-Index: ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.common.core.controller;\r\n\r\nimport java.beans.PropertyEditorSupport;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.web.bind.WebDataBinder;\r\nimport org.springframework.web.bind.annotation.InitBinder;\r\nimport com.github.pagehelper.PageHelper;\r\nimport com.github.pagehelper.PageInfo;\r\nimport com.ruoyi.common.constant.HttpStatus;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.core.page.PageDomain;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.core.page.TableSupport;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.PageUtils;\r\nimport com.ruoyi.common.utils.SecurityUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.sql.SqlUtil;\r\n\r\n/**\r\n * web灞傞�氱敤鏁版嵁澶勭悊\r\n *\r\n * @author ruoyi\r\n */\r\npublic class BaseController {\r\n    protected final Logger logger = LoggerFactory.getLogger(this.getClass());\r\n\r\n    /**\r\n     * 灏嗗墠鍙颁紶閫掕繃鏉ョ殑鏃ユ湡鏍煎紡鐨勫瓧绗︿覆锛岃嚜鍔ㄨ浆鍖栦负Date绫诲瀷\r\n     */\r\n    @InitBinder\r\n    public void initBinder(WebDataBinder binder) {\r\n        // Date 绫诲瀷杞崲\r\n        binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {\r\n            @Override\r\n            public void setAsText(String text) {\r\n                setValue(DateUtils.parseDate(text));\r\n            }\r\n        });\r\n    }\r\n\r\n    /**\r\n     * 璁剧疆璇锋眰鍒嗛〉鏁版嵁\r\n     */\r\n    protected void startPage() {\r\n        PageUtils.startPage();\r\n    }\r\n\r\n    /**\r\n     * 璁剧疆璇锋眰鎺掑簭鏁版嵁\r\n     */\r\n    protected void startOrderBy() {\r\n        PageDomain pageDomain = TableSupport.buildPageRequest();\r\n        if (StringUtils.isNotEmpty(pageDomain.getOrderBy())) {\r\n            String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());\r\n            PageHelper.orderBy(orderBy);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 娓呯悊鍒嗛〉鐨勭嚎绋嬪彉閲廫r\n     */\r\n    protected void clearPage() {\r\n        PageUtils.clearPage();\r\n    }\r\n\r\n    /**\r\n     * 鍝嶅簲璇锋眰鍒嗛〉鏁版嵁\r\n     */\r\n    @SuppressWarnings({\"rawtypes\", \"unchecked\"})\r\n    protected TableDataInfo getDataTable(List<?> list) {\r\n        TableDataInfo rspData = new TableDataInfo();\r\n        rspData.setCode(HttpStatus.SUCCESS);\r\n        rspData.setMsg(\"鏌ヨ鎴愬姛\");\r\n        rspData.setRows(list);\r\n        rspData.setTotal(new PageInfo(list).getTotal());\r\n        return rspData;\r\n    }\r\n\r\n    /**\r\n     * 鍝嶅簲璇锋眰鍒嗛〉鏁版嵁\r\n     */\r\n    @SuppressWarnings({\"rawtypes\", \"unchecked\"})\r\n    protected TableDataInfo getDataTable2(long total, List<?> list) {\r\n        TableDataInfo rspData = new TableDataInfo();\r\n        rspData.setCode(HttpStatus.SUCCESS);\r\n        rspData.setMsg(\"鏌ヨ鎴愬姛\");\r\n        rspData.setRows(list);\r\n        rspData.setTotal(total);\r\n        return rspData;\r\n    }\r\n\r\n    /**\r\n     * 杩斿洖鎴愬姛\r\n     */\r\n    public AjaxResult success() {\r\n        return AjaxResult.success();\r\n    }\r\n\r\n    /**\r\n     * 杩斿洖澶辫触娑堟伅\r\n     */\r\n    public AjaxResult error() {\r\n        return AjaxResult.error();\r\n    }\r\n\r\n    /**\r\n     * 杩斿洖鎴愬姛娑堟伅\r\n     */\r\n    public AjaxResult success(String message) {\r\n        return AjaxResult.success(message);\r\n    }\r\n\r\n    /**\r\n     * 杩斿洖鎴愬姛娑堟伅\r\n     */\r\n    public AjaxResult success(Object data) {\r\n        return AjaxResult.success(data);\r\n    }\r\n\r\n    /**\r\n     * 杩斿洖澶辫触娑堟伅\r\n     */\r\n    public AjaxResult error(String message) {\r\n        return AjaxResult.error(message);\r\n    }\r\n\r\n    /**\r\n     * 杩斿洖璀﹀憡娑堟伅\r\n     */\r\n    public AjaxResult warn(String message) {\r\n        return AjaxResult.warn(message);\r\n    }\r\n\r\n    /**\r\n     * 鍝嶅簲杩斿洖缁撴灉\r\n     *\r\n     * @param rows 褰卞搷琛屾暟\r\n     * @return 鎿嶄綔缁撴灉\r\n     */\r\n    protected AjaxResult toAjax(int rows) {\r\n        return rows > 0 ? AjaxResult.success() : AjaxResult.error();\r\n    }\r\n\r\n    /**\r\n     * 鍝嶅簲杩斿洖缁撴灉\r\n     *\r\n     * @param result 缁撴灉\r\n     * @return 鎿嶄綔缁撴灉\r\n     */\r\n    protected AjaxResult toAjax(boolean result) {\r\n        return result ? success() : error();\r\n    }\r\n\r\n    /**\r\n     * 椤甸潰璺宠浆\r\n     */\r\n    public String redirect(String url) {\r\n        return StringUtils.format(\"redirect:{}\", url);\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鐢ㄦ埛缂撳瓨淇℃伅\r\n     */\r\n    public LoginUser getLoginUser() {\r\n        return SecurityUtils.getLoginUser();\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鐧诲綍鐢ㄦ埛id\r\n     */\r\n    public Long getUserId() {\r\n        return getLoginUser().getUserId();\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鐧诲綍閮ㄩ棬id\r\n     */\r\n    public Long getDeptId() {\r\n        return getLoginUser().getDeptId();\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鐧诲綍鐢ㄦ埛鍚峔r\n     */\r\n    public String getUsername() {\r\n        return getLoginUser().getUsername();\r\n    }\r\n    /**\r\n     * 鑾峰彇鏈烘瀯ID\r\n     */\r\n    public String getOrgid() {\r\n        return getLoginUser().getUser().getOrgid();\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
---- a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java	(date 1759049081221)
-@@ -3,6 +3,8 @@
- import java.beans.PropertyEditorSupport;
- import java.util.Date;
- import java.util.List;
-+import java.util.Map;
-+import java.util.TreeMap;
- 
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
-@@ -94,6 +96,14 @@
-         rspData.setTotal(total);
-         return rspData;
-     }
-+    protected Map<String,Object> getDataTable3(long total, List<?> list) {
-+        Map<String,Object> rspData = new TreeMap<>();
-+        rspData.put("code",HttpStatus.SUCCESS);
-+        rspData.put("msg","鏌ヨ鎴愬姛");
-+        rspData.put("rows",list);
-+        rspData.put("total",total);
-+        return rspData;
-+    }
- 
-     /**
-      * 杩斿洖鎴愬姛
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseDictOperationController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport java.util.List;\r\n\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\n\r\nimport org.springframework.security.access.prepost.PreAuthorize;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.web.bind.annotation.GetMapping;\r\nimport org.springframework.web.bind.annotation.PostMapping;\r\nimport org.springframework.web.bind.annotation.PutMapping;\r\nimport org.springframework.web.bind.annotation.DeleteMapping;\r\nimport org.springframework.web.bind.annotation.PathVariable;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RestController;\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.smartor.domain.BaseDictOperation;\r\nimport com.smartor.service.IBaseDictOperationService;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\n\r\n/**\r\n * 鎵嬫湳鍩虹淇℃伅Controller\r\n *\r\n * @author lihu\r\n * @date 2025-02-26\r\n */\r\n@Api(\"鎵嬫湳鍩虹淇℃伅\")\r\n@RestController\r\n@RequestMapping(\"/smartor/baseopera\")\r\npublic class BaseDictOperationController extends BaseController {\r\n    @Autowired\r\n    private IBaseDictOperationService baseDictOperationService;\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呮鏌ユ楠岃褰曞瓙鍒楄〃\r\n     */\r\n    @ApiOperation(\"鏌ヨ鎮h�呮鏌ユ楠岃褰曞瓙鍒楄〃\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:list')\")\r\n    @PostMapping(\"/list\")\r\n    public TableDataInfo list(@RequestBody BaseDictOperation baseDictOperation) {\r\n        startPage();\r\n        List<BaseDictOperation> list = baseDictOperationService.selectBaseDictOperationList(baseDictOperation);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎嚭鎮h�呮鏌ユ楠岃褰曞瓙鍒楄〃\r\n     */\r\n    @ApiOperation(\"瀵煎嚭鎮h�呮鏌ユ楠岃褰曞瓙鍒楄〃\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:export')\")\r\n    @Log(title = \"鎮h�呮鏌ユ楠岃褰曞瓙\", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, BaseDictOperation baseDictOperation) {\r\n        List<BaseDictOperation> list = baseDictOperationService.selectBaseDictOperationList(baseDictOperation);\r\n        ExcelUtil<BaseDictOperation> util = new ExcelUtil<BaseDictOperation>(BaseDictOperation.class);\r\n        util.exportExcel(response, list, \"鎮h�呮鏌ユ楠岃褰曞瓙鏁版嵁\");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇鎮h�呮鏌ユ楠岃褰曞瓙璇︾粏淇℃伅\r\n     */\r\n    @ApiOperation(\"鑾峰彇鎮h�呮鏌ユ楠岃褰曞瓙璇︾粏淇℃伅\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:query')\")\r\n    @GetMapping(value = \"/getInfo/{id}\")\r\n    public AjaxResult getInfo(@PathVariable(\"id\") Long id) {\r\n        return success(baseDictOperationService.selectBaseDictOperationById(id));\r\n    }\r\n\r\n    /**\r\n     * 鏂板鎮h�呮鏌ユ楠岃褰曞瓙\r\n     */\r\n    @ApiOperation(\"鏂板鎮h�呮鏌ユ楠岃褰曞瓙\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:add')\")\r\n    @Log(title = \"鎮h�呮鏌ユ楠岃褰曞瓙\", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@RequestBody BaseDictOperation baseDictOperation) {\r\n        return toAjax(baseDictOperationService.insertBaseDictOperation(baseDictOperation));\r\n    }\r\n\r\n    /**\r\n     * 淇敼鎮h�呮鏌ユ楠岃褰曞瓙\r\n     */\r\n    @ApiOperation(\"淇敼鎮h�呮鏌ユ楠岃褰曞瓙\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:edit')\")\r\n    @Log(title = \"鎮h�呮鏌ユ楠岃褰曞瓙\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/edit\")\r\n    public AjaxResult edit(@RequestBody BaseDictOperation baseDictOperation) {\r\n        return toAjax(baseDictOperationService.updateBaseDictOperation(baseDictOperation));\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鎮h�呮鏌ユ楠岃褰曞瓙\r\n     */\r\n    @ApiOperation(\"鍒犻櫎鎮h�呮鏌ユ楠岃褰曞瓙\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:operation:remove')\")\r\n    @Log(title = \"鎮h�呮鏌ユ楠岃褰曞瓙\", businessType = BusinessType.DELETE)\r\n    @GetMapping(\"/remove/{ids}\")\r\n    public AjaxResult remove(@PathVariable Long[] ids) {\r\n        return toAjax(baseDictOperationService.deleteBaseDictOperationByIds(ids));\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseDictOperationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseDictOperationController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseDictOperationController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/BaseDictOperationController.java	(date 1758798202736)
-@@ -2,6 +2,8 @@
- 
- import java.util.List;
- 
-+import com.ruoyi.common.core.domain.entity.SysUser;
-+import com.ruoyi.common.core.domain.model.LoginUser;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- 
-@@ -47,6 +49,9 @@
-     @PostMapping("/list")
-     public TableDataInfo list(@RequestBody BaseDictOperation baseDictOperation) {
-         startPage();
-+        LoginUser loginUser = getLoginUser();
-+        SysUser user = loginUser.getUser();
-+        baseDictOperation.setOrgid(user.getOrgid());
-         List<BaseDictOperation> list = baseDictOperationService.selectBaseDictOperationList(baseDictOperation);
-         return getDataTable(list);
-     }
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.service.IServiceSubtaskAnswerService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.security.access.prepost.PreAuthorize;\r\nimport org.springframework.web.bind.annotation.*;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.util.List;\r\n\r\n/**\r\n * 浠诲姟闂嵎闂閫夐」Controller\r\n *\r\n * @author ruoyi\r\n * @date 2024-07-18\r\n */\r\n@Slf4j\r\n@Api(description = \"浠诲姟闂嵎闂閫夐」\")\r\n@RestController\r\n@RequestMapping(\"/smartor/subtaskAnswer\")\r\npublic class ServiceSubtaskAnswerController extends BaseController {\r\n    @Autowired\r\n    private IServiceSubtaskAnswerService serviceSubtaskAnswerService;\r\n\r\n    /**\r\n     * 鏌ヨ浠诲姟闂嵎闂閫夐」鍒楄〃\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:list')\")\r\n    @ApiOperation(\"鏌ヨ浠诲姟闂嵎闂閫夐」鍒楄〃\")\r\n    @GetMapping(\"/list\")\r\n    public TableDataInfo list(ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        startPage();\r\n        List<ServiceSubtaskAnswer> list = serviceSubtaskAnswerService.selectServiceSubtaskAnswerList(serviceSubtaskAnswer);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎嚭浠诲姟闂嵎闂閫夐」鍒楄〃\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:export')\")\r\n    @Log(title = \"浠诲姟闂嵎闂閫夐」\", businessType = BusinessType.EXPORT)\r\n    @ApiOperation(\"浠诲姟闂嵎闂閫夐」\")\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        List<ServiceSubtaskAnswer> list = serviceSubtaskAnswerService.selectServiceSubtaskAnswerList(serviceSubtaskAnswer);\r\n        ExcelUtil<ServiceSubtaskAnswer> util = new ExcelUtil<ServiceSubtaskAnswer>(ServiceSubtaskAnswer.class);\r\n        util.exportExcel(response, list, \"浠诲姟闂嵎闂閫夐」鏁版嵁\");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇浠诲姟闂嵎闂閫夐」璇︾粏淇℃伅\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:query')\")\r\n    @GetMapping(value = \"/getInfo/{id}\")\r\n    @ApiOperation(\"鑾峰彇浠诲姟闂嵎闂閫夐」璇︾粏淇℃伅\")\r\n    public AjaxResult getInfo(@PathVariable(\"id\") Long id) {\r\n        return success(serviceSubtaskAnswerService.selectServiceSubtaskAnswerById(id));\r\n    }\r\n\r\n    /**\r\n     * 鏂板浠诲姟闂嵎闂閫夐」\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:add')\")\r\n    @Log(title = \"浠诲姟闂嵎闂閫夐」\", businessType = BusinessType.INSERT)\r\n    @ApiOperation(\"鏂板浠诲姟闂嵎闂閫夐」\")\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@RequestBody ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        SysUser user = getLoginUser().getUser();\r\n        serviceSubtaskAnswer.setOrgid(user.getOrgid());\r\n        return toAjax(serviceSubtaskAnswerService.insertServiceSubtaskAnswer(serviceSubtaskAnswer));\r\n    }\r\n\r\n    /**\r\n     * 淇敼浠诲姟闂嵎闂閫夐」\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:edit')\")\r\n    @Log(title = \"浠诲姟闂嵎闂閫夐」\", businessType = BusinessType.UPDATE)\r\n    @ApiOperation(\"淇敼浠诲姟闂嵎闂閫夐」\")\r\n    @PostMapping(\"/edit\")\r\n    public AjaxResult edit(@RequestBody ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        return toAjax(serviceSubtaskAnswerService.updateServiceSubtaskAnswer(serviceSubtaskAnswer));\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎浠诲姟闂嵎闂閫夐」\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:answer:remove')\")\r\n    @Log(title = \"浠诲姟闂嵎闂閫夐」\", businessType = BusinessType.DELETE)\r\n    @ApiOperation(\"鍒犻櫎浠诲姟闂嵎闂閫夐」\")\r\n    @DeleteMapping(\"/remove/{ids}\")\r\n    public AjaxResult remove(@PathVariable Long[] ids) {\r\n        return toAjax(serviceSubtaskAnswerService.deleteServiceSubtaskAnswerByIds(ids));\r\n    }\r\n\r\n    @ApiOperation(\"鎮h�呴棶棰樼粨鏋滆褰�(澶栭摼)\")\r\n    @PostMapping(\"/saveQuestionAnswer\")\r\n    public AjaxResult saveQuestionAnswer(@RequestBody ServiceSubTaskAnswerReq serviceSubTaskAnswerReq) {\r\n        log.info(\"-----saveQuestionAnswer鏂规硶鐨勫叆鍙備负锛歿}\", serviceSubTaskAnswerReq);\r\n        return toAjax(serviceSubtaskAnswerService.saveQuestionAnswer(serviceSubTaskAnswerReq, 0L));\r\n    }\r\n\r\n\r\n    @ApiOperation(\"鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(灏忕▼搴忓閾�)\")\r\n    @PostMapping(\"/saveQuestionCacheXCH\")\r\n    public AjaxResult saveQuestionCacheXCH(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {\r\n        return toAjax(serviceSubtaskAnswerService.saveQuestionCache(serviceSubTaskCacheReq, 1L));\r\n    }\r\n\r\n\r\n    @ApiOperation(\"鎮h�呴棶棰樼粨鏋滆褰�(灏忕▼鍏呭閾�)\")\r\n    @PostMapping(\"/saveQuestionAnswerXCH\")\r\n    public AjaxResult saveQuestionAnswerXCH(@RequestBody ServiceSubTaskAnswerReq serviceSubTaskAnswerReq) {\r\n        log.info(\"-------saveQuestionAnswerXCH鐨勫叆鍙傜殑鍊间负锛歿}\", serviceSubTaskAnswerReq);\r\n        return toAjax(serviceSubtaskAnswerService.saveQuestionAnswer(serviceSubTaskAnswerReq, 1L));\r\n    }\r\n\r\n    @ApiOperation(\"鑾峰彇鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(灏忕▼搴忓閾�)\")\r\n    @PostMapping(\"/getQuestionCacheXCH\")\r\n    public AjaxResult getQuestionCacheXCH(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {\r\n        return AjaxResult.success(serviceSubtaskAnswerService.getQuestionCache(serviceSubTaskCacheReq, 1L));\r\n    }\r\n\r\n    @ApiOperation(\"鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(澶栭摼)\")\r\n    @PostMapping(\"/saveQuestionCache\")\r\n    public AjaxResult saveQuestionCache(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {\r\n        log.info(\"serviceSubTaskCacheReq鐨勫叆鍙備负锛歿}\", serviceSubTaskCacheReq);\r\n        return toAjax(serviceSubtaskAnswerService.saveQuestionCache(serviceSubTaskCacheReq, 0L));\r\n    }\r\n\r\n    @ApiOperation(\"鑾峰彇鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(澶栭摼)\")\r\n    @PostMapping(\"/getQuestionCache\")\r\n    public AjaxResult getQuestionCache(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {\r\n        return AjaxResult.success(serviceSubtaskAnswerService.getQuestionCache(serviceSubTaskCacheReq, 0L));\r\n    }\r\n\r\n\r\n    @ApiOperation(\"鍖荤敓鏌ヨ鎮h�呴棶棰樼粨鏋�(澶栭摼)\")\r\n    @PostMapping(\"/selectPatQuestionResult\")\r\n    public AjaxResult selectPatQuestionResult(@RequestBody ServiceSubTaskQueryReq serviceSubTaskQueryReq) {\r\n        return AjaxResult.success(serviceSubtaskAnswerService.selectPatQuestionResult(serviceSubTaskQueryReq));\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskAnswerController.java	(date 1758866615269)
-@@ -6,6 +6,7 @@
- import com.ruoyi.common.core.domain.entity.SysUser;
- import com.ruoyi.common.core.page.TableDataInfo;
- import com.ruoyi.common.enums.BusinessType;
-+import com.ruoyi.common.utils.RSAPublicKeyExample;
- import com.ruoyi.common.utils.poi.ExcelUtil;
- import com.smartor.domain.*;
- import com.smartor.service.IServiceSubtaskAnswerService;
-@@ -14,6 +15,7 @@
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.ObjectUtils;
- import org.springframework.beans.factory.annotation.Autowired;
-+import org.springframework.beans.factory.annotation.Value;
- import org.springframework.security.access.prepost.PreAuthorize;
- import org.springframework.web.bind.annotation.*;
- 
-@@ -34,6 +36,10 @@
-     @Autowired
-     private IServiceSubtaskAnswerService serviceSubtaskAnswerService;
- 
-+
-+    @Value("${pri_key}")
-+    private String pri_key;
-+
-     /**
-      * 鏌ヨ浠诲姟闂嵎闂閫夐」鍒楄〃
-      */
-@@ -90,6 +96,7 @@
-     @ApiOperation("淇敼浠诲姟闂嵎闂閫夐」")
-     @PostMapping("/edit")
-     public AjaxResult edit(@RequestBody ServiceSubtaskAnswer serviceSubtaskAnswer) {
-+        log.info("銆恠aveQuestionCache-----edit銆戠殑鍏ュ弬涓猴細{}", serviceSubtaskAnswer);
-         return toAjax(serviceSubtaskAnswerService.updateServiceSubtaskAnswer(serviceSubtaskAnswer));
-     }
- 
-@@ -101,13 +108,14 @@
-     @ApiOperation("鍒犻櫎浠诲姟闂嵎闂閫夐」")
-     @DeleteMapping("/remove/{ids}")
-     public AjaxResult remove(@PathVariable Long[] ids) {
-+        log.info("銆恠aveQuestionCache-----remove銆戠殑鍏ュ弬涓猴細{}", ids);
-         return toAjax(serviceSubtaskAnswerService.deleteServiceSubtaskAnswerByIds(ids));
-     }
- 
-     @ApiOperation("鎮h�呴棶棰樼粨鏋滆褰�(澶栭摼)")
-     @PostMapping("/saveQuestionAnswer")
-     public AjaxResult saveQuestionAnswer(@RequestBody ServiceSubTaskAnswerReq serviceSubTaskAnswerReq) {
--        log.info("-----saveQuestionAnswer鏂规硶鐨勫叆鍙備负锛歿}", serviceSubTaskAnswerReq);
-+        log.info("銆恠aveQuestionCache-----saveQuestionAnswer銆戠殑鍏ュ弬涓猴細{}", serviceSubTaskAnswerReq);
-         return toAjax(serviceSubtaskAnswerService.saveQuestionAnswer(serviceSubTaskAnswerReq, 0L));
-     }
- 
-@@ -115,6 +123,7 @@
-     @ApiOperation("鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(灏忕▼搴忓閾�)")
-     @PostMapping("/saveQuestionCacheXCH")
-     public AjaxResult saveQuestionCacheXCH(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {
-+        log.info("銆恠aveQuestionCache-----saveQuestionCacheXCH銆戠殑鍏ュ弬涓猴細{}", serviceSubTaskCacheReq);
-         return toAjax(serviceSubtaskAnswerService.saveQuestionCache(serviceSubTaskCacheReq, 1L));
-     }
- 
-@@ -122,26 +131,28 @@
-     @ApiOperation("鎮h�呴棶棰樼粨鏋滆褰�(灏忕▼鍏呭閾�)")
-     @PostMapping("/saveQuestionAnswerXCH")
-     public AjaxResult saveQuestionAnswerXCH(@RequestBody ServiceSubTaskAnswerReq serviceSubTaskAnswerReq) {
--        log.info("-------saveQuestionAnswerXCH鐨勫叆鍙傜殑鍊间负锛歿}", serviceSubTaskAnswerReq);
-+        log.info("銆恠aveQuestionCache-----saveQuestionAnswerXCH銆戠殑鍏ュ弬涓猴細{}", serviceSubTaskAnswerReq);
-         return toAjax(serviceSubtaskAnswerService.saveQuestionAnswer(serviceSubTaskAnswerReq, 1L));
-     }
- 
-     @ApiOperation("鑾峰彇鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(灏忕▼搴忓閾�)")
-     @PostMapping("/getQuestionCacheXCH")
-     public AjaxResult getQuestionCacheXCH(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {
-+        log.info("銆恠aveQuestionCache-----getQuestionCacheXCH銆戠殑鍏ュ弬涓猴細{}", serviceSubTaskCacheReq);
-         return AjaxResult.success(serviceSubtaskAnswerService.getQuestionCache(serviceSubTaskCacheReq, 1L));
-     }
- 
-     @ApiOperation("鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(澶栭摼)")
-     @PostMapping("/saveQuestionCache")
-     public AjaxResult saveQuestionCache(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {
--        log.info("serviceSubTaskCacheReq鐨勫叆鍙備负锛歿}", serviceSubTaskCacheReq);
-+        log.info("銆恠aveQuestionCache-----saveQuestionCache銆戠殑鍏ュ弬涓猴細{}", serviceSubTaskCacheReq);
-         return toAjax(serviceSubtaskAnswerService.saveQuestionCache(serviceSubTaskCacheReq, 0L));
-     }
- 
-     @ApiOperation("鑾峰彇鎮h�呴棶棰樼粨鏋滆褰曠紦瀛�(澶栭摼)")
-     @PostMapping("/getQuestionCache")
-     public AjaxResult getQuestionCache(@RequestBody ServiceSubTaskCacheReq serviceSubTaskCacheReq) {
-+        log.info("銆恠aveQuestionCache-----getQuestionCache銆戠殑鍏ュ弬涓猴細{}", serviceSubTaskCacheReq);
-         return AjaxResult.success(serviceSubtaskAnswerService.getQuestionCache(serviceSubTaskCacheReq, 0L));
-     }
- 
-@@ -149,7 +160,21 @@
-     @ApiOperation("鍖荤敓鏌ヨ鎮h�呴棶棰樼粨鏋�(澶栭摼)")
-     @PostMapping("/selectPatQuestionResult")
-     public AjaxResult selectPatQuestionResult(@RequestBody ServiceSubTaskQueryReq serviceSubTaskQueryReq) {
-+        log.info("銆恠aveQuestionCache-----selectPatQuestionResult銆戠殑鍏ュ弬涓猴細{}", serviceSubTaskQueryReq);
-         return AjaxResult.success(serviceSubtaskAnswerService.selectPatQuestionResult(serviceSubTaskQueryReq));
-     }
- 
-+
-+    @ApiOperation("鎮h�呮弧鎰忓害缁撴灉璁板綍(澶栭摼)")
-+    @PostMapping("/saveMYDQuestionAnswer")
-+    public AjaxResult saveMYDQuestionAnswer(@RequestBody ServiceSubTaskMYDAnswerReq serviceSubTaskAnswerReq) {
-+        log.info("銆恠aveQuestionCache-----saveMYDQuestionAnswer銆戠殑鍏ュ弬涓猴細{}", serviceSubTaskAnswerReq);
-+        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+        String taskId = rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getTaskId(), pri_key);
-+        String serialnum = rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getSerialnum(), pri_key);
-+        serviceSubTaskAnswerReq.setTaskId(taskId);
-+        serviceSubTaskAnswerReq.setSerialnum(serialnum);
-+        return toAjax(serviceSubtaskAnswerService.saveMYDQuestionAnswer(serviceSubTaskAnswerReq));
-+    }
-+
- }
-Index: .idea/encodings.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project version=\"4\">\r\n  <component name=\"Encoding\">\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-admin/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-admin/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-common/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-common/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-framework/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-framework/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-generator/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-generator/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-quartz/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-quartz/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-system/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/ruoyi-system/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/smartor/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/smartor/src/main/resources\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/src/main/java\" charset=\"UTF-8\" />\r\n    <file url=\"file://$PROJECT_DIR$/src/main/resources\" charset=\"UTF-8\" />\r\n  </component>\r\n</project>
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/.idea/encodings.xml b/.idea/encodings.xml
---- a/.idea/encodings.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/.idea/encodings.xml	(date 1758798202766)
-@@ -2,8 +2,30 @@
- <project version="4">
-   <component name="Encoding">
-     <file url="file://$PROJECT_DIR$/ruoyi-admin/src/main/java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskPreachformController.java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-admin/src/main/resources" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/Hello.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/HelloResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GReply.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GReplyResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GReport.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GReportResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GSearchNumber.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GSearchNumberResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GSend.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/I5GSendResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSGetNumberResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSGetTemplateList.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSGetUserList.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSGetUserListResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSSaveContent.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSSaveContentResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSVerify.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSVerifyPrivate.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSVerifyPrivateResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SMSVerifyResponse.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java/com/ruoyi/common/dx/SmsServiceSoap.java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-common/src/main/resources" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-framework/src/main/java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-framework/src/main/resources" charset="UTF-8" />
-@@ -14,8 +36,14 @@
-     <file url="file://$PROJECT_DIR$/ruoyi-system/src/main/java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/ruoyi-system/src/main/resources" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/smartor/src/main/java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/smartor/src/main/java/com/smartor/service/IServiceSubtaskPreachformService.java" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskPreachformServiceImpl.java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/smartor/src/main/resources" charset="UTF-8" />
-+    <file url="file://$PROJECT_DIR$/smartor/src/main/resources/mapper/smartor/ServiceSubtaskPreachformMapper.xml" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
-     <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
-+    <file url="PROJECT" charset="GBK" />
-   </component>
--</project>
-\ No newline at end of file
-+</project>
-Index: ruoyi-common/src/main/java/com/ruoyi/common/enums/ServiceFromEnum.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.common.enums;\r\n\r\n/**\r\n * 鍙戦�佺被鍨嬫灇涓綷r\n */\r\npublic enum ServiceFromEnum {\r\n    DMT(1, \"澶氬獟浣揬"),\r\n    ZZ(2, \"绾歌川\"),\r\n    DH(3, \"鐢佃瘽\"),\r\n    DX(4, \"鐭俊\"),\r\n    GZH(5, \"鍏紬鍙穃"),\r\n    WXXCH(6, \"寰俊灏忕▼搴廫"),\r\n    ZFB(7, \"鏀粯瀹漒"),\r\n    ZNXCH(8, \"鏅鸿兘灏忕▼搴廫"),\r\n    DD(9, \"閽夐拤\");\r\n\r\n\r\n    private Integer code;\r\n    private String desc;\r\n\r\n    ServiceFromEnum(Integer code, String desc) {\r\n        this.code = code;\r\n        this.desc = desc;\r\n    }\r\n\r\n    public static String getDescByCode(Integer code) {\r\n        ServiceFromEnum[] organEnums = values();\r\n        for (int i = 0; i < organEnums.length; i++) {\r\n            ServiceFromEnum organEnum = organEnums[i];\r\n            if (organEnum.getCode() == code) {\r\n                return organEnum.getDesc();\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n\r\n    public Integer getCode() {\r\n        return code;\r\n    }\r\n\r\n    public void setCode(Integer code) {\r\n        this.code = code;\r\n    }\r\n\r\n    public String getDesc() {\r\n        return desc;\r\n    }\r\n\r\n    public void setDesc(String desc) {\r\n        this.desc = desc;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ServiceFromEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ServiceFromEnum.java
---- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ServiceFromEnum.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ServiceFromEnum.java	(date 1759040887952)
-@@ -4,7 +4,7 @@
-  * 鍙戦�佺被鍨嬫灇涓�
-  */
- public enum ServiceFromEnum {
--    DMT(1, "澶氬獟浣�"),
-+    RG(1, "浜哄伐"),
-     ZZ(2, "绾歌川"),
-     DH(3, "鐢佃瘽"),
-     DX(4, "鐭俊"),
-Index: .idea/jarRepositories.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project version=\"4\">\r\n  <component name=\"RemoteRepositoriesConfiguration\">\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"Central Repositories\" />\r\n      <option name=\"url\" value=\"http://maven.aliyun.com/nexus/content/groups/public/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"Central Repository\" />\r\n      <option name=\"url\" value=\"http://maven.aliyun.com/nexus/content/groups/public/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"Central Repository\" />\r\n      <option name=\"url\" value=\"https://repo.maven.apache.org/maven2\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"releases\" />\r\n      <option name=\"name\" value=\"local private nexus\" />\r\n      <option name=\"url\" value=\"http://122.49.30.5:8981/nexus/content/repositories/releases/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"nexus\" />\r\n      <option name=\"name\" value=\"Public Repositories\" />\r\n      <option name=\"url\" value=\"http://211.90.241.109:7008/repository/maven-public/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"release\" />\r\n      <option name=\"name\" value=\"Release Repositories\" />\r\n      <option name=\"url\" value=\"http://211.90.241.109:7008/repository/maven-releases/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"Maven Central repository\" />\r\n      <option name=\"url\" value=\"https://repo1.maven.org/maven2\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"aliyun\" />\r\n      <option name=\"name\" value=\"aliyun\" />\r\n      <option name=\"url\" value=\"https://maven.aliyun.com/repository/public\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"snapshots\" />\r\n      <option name=\"name\" value=\"Snapshot Repositories\" />\r\n      <option name=\"url\" value=\"http://211.90.241.109:7008/repository/maven-snapshots/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"central\" />\r\n      <option name=\"url\" value=\"http://maven.aliyun.com/nexus/content/groups/public/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"central\" />\r\n      <option name=\"url\" value=\"http://repo2.maven.org/maven2/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"jcenter\" />\r\n      <option name=\"name\" value=\"jcenter\" />\r\n      <option name=\"url\" value=\"https://jcenter.bintray.com/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"group_migu\" />\r\n      <option name=\"name\" value=\"group_migu\" />\r\n      <option name=\"url\" value=\"https://nexus.cmread.com:9343/nexus/content/groups/group_migu/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"public\" />\r\n      <option name=\"name\" value=\"aliyun nexus\" />\r\n      <option name=\"url\" value=\"https://maven.aliyun.com/repository/public\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"central\" />\r\n      <option name=\"url\" value=\"https://repo.maven.apache.org/maven2\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"central\" />\r\n      <option name=\"name\" value=\"Central Repository\" />\r\n      <option name=\"url\" value=\"http://repo2.maven.org/maven2/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"snapshots\" />\r\n      <option name=\"name\" value=\"local private nexus snapshots\" />\r\n      <option name=\"url\" value=\"http://122.49.30.5:8981/nexus/content/repositories/snapshots/\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"maven_repos\" />\r\n      <option name=\"name\" value=\"maven_repos\" />\r\n      <option name=\"url\" value=\"https://nexus.cmread.com:9343/nexus/content/repositories/migu\" />\r\n    </remote-repository>\r\n    <remote-repository>\r\n      <option name=\"id\" value=\"jboss.community\" />\r\n      <option name=\"name\" value=\"JBoss Community repository\" />\r\n      <option name=\"url\" value=\"https://repository.jboss.org/nexus/content/repositories/public/\" />\r\n    </remote-repository>\r\n  </component>\r\n</project>
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
---- a/.idea/jarRepositories.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/.idea/jarRepositories.xml	(date 1758798202790)
-@@ -49,12 +49,12 @@
-     <remote-repository>
-       <option name="id" value="central" />
-       <option name="name" value="central" />
--      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
-+      <option name="url" value="http://repo2.maven.org/maven2/" />
-     </remote-repository>
-     <remote-repository>
-       <option name="id" value="central" />
-       <option name="name" value="central" />
--      <option name="url" value="http://repo2.maven.org/maven2/" />
-+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
-     </remote-repository>
-     <remote-repository>
-       <option name="id" value="jcenter" />
-@@ -97,4 +97,4 @@
-       <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
-     </remote-repository>
-   </component>
--</project>
-\ No newline at end of file
-+</project>
-Index: smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.mapper;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport org.apache.ibatis.annotations.Mapper;\r\nimport org.apache.ibatis.annotations.Param;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 閮ㄩ棬绠$悊 鏁版嵁灞俓r\n *\r\n * @author ruoyi\r\n */\r\n@Mapper\r\npublic interface SysDept2Mapper {\r\n    /**\r\n     * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁\r\n     *\r\n     * @param dept 閮ㄩ棬淇℃伅\r\n     * @return 閮ㄩ棬淇℃伅闆嗗悎\r\n     */\r\n    public List<SysDept> selectDeptList(SysDept dept);\r\n\r\n    /**\r\n     * 鏍规嵁瑙掕壊ID鏌ヨ閮ㄩ棬鏍戜俊鎭痋r\n     *\r\n     * @param roleId            瑙掕壊ID\r\n     * @param deptCheckStrictly 閮ㄩ棬鏍戦�夋嫨椤规槸鍚﹀叧鑱旀樉绀篭r\n     * @return 閫変腑閮ㄩ棬鍒楄〃\r\n     */\r\n    public List<Long> selectDeptListByRoleId(@Param(\"roleId\") Long roleId, @Param(\"deptCheckStrictly\") boolean deptCheckStrictly);\r\n\r\n    /**\r\n     * 鏍规嵁閮ㄩ棬ID鏌ヨ淇℃伅\r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 閮ㄩ棬淇℃伅\r\n     */\r\n    public SysDept selectDeptById(Long deptId);\r\n\r\n    public SysDept selectDeptByCode(String deptCode);\r\n\r\n    /**\r\n     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬\r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 閮ㄩ棬鍒楄〃\r\n     */\r\n    public List<SysDept> selectChildrenDeptById(Long deptId);\r\n\r\n    /**\r\n     * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬锛堟甯哥姸鎬侊級\r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 瀛愰儴闂ㄦ暟\r\n     */\r\n    public int selectNormalChildrenDeptById(Long deptId);\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪瀛愯妭鐐筡r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 缁撴灉\r\n     */\r\n    public int hasChildByDeptId(Long deptId);\r\n\r\n    /**\r\n     * 鏌ヨ閮ㄩ棬鏄惁瀛樺湪鐢ㄦ埛\r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 缁撴灉\r\n     */\r\n    public int checkDeptExistUser(Long deptId);\r\n\r\n    /**\r\n     * 鏍¢獙閮ㄩ棬鍚嶇О鏄惁鍞竴\r\n     *\r\n     * @param deptName 閮ㄩ棬鍚嶇О\r\n     * @param parentId 鐖堕儴闂↖D\r\n     * @return 缁撴灉\r\n     */\r\n    public SysDept checkDeptNameUnique(@Param(\"deptName\") String deptName, @Param(\"parentId\") Long parentId);\r\n\r\n    /**\r\n     * 鏂板閮ㄩ棬淇℃伅\r\n     *\r\n     * @param dept 閮ㄩ棬淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public int insertDept(SysDept dept);\r\n\r\n    /**\r\n     * 鎵归噺鏂板閮ㄩ棬淇℃伅\r\n     *\r\n     * @param depts 閮ㄩ棬淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public int batchDept(List<SysDept> depts);\r\n\r\n    /**\r\n     * 淇敼閮ㄩ棬淇℃伅\r\n     *\r\n     * @param dept 閮ㄩ棬淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public int updateDept(SysDept dept);\r\n\r\n    /**\r\n     * 淇敼鎵�鍦ㄩ儴闂ㄦ甯哥姸鎬乗r\n     *\r\n     * @param deptIds 閮ㄩ棬ID缁刓r\n     */\r\n    public void updateDeptStatusNormal(Long[] deptIds);\r\n\r\n    /**\r\n     * 淇敼瀛愬厓绱犲叧绯籠r\n     *\r\n     * @param depts 瀛愬厓绱燶r\n     * @return 缁撴灉\r\n     */\r\n    public int updateDeptChildren(@Param(\"depts\") List<SysDept> depts);\r\n\r\n    /**\r\n     * 鍒犻櫎閮ㄩ棬绠$悊淇℃伅\r\n     *\r\n     * @param deptId 閮ㄩ棬ID\r\n     * @return 缁撴灉\r\n     */\r\n    public int deleteDeptById(Long deptId);\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java b/smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java
---- a/smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/mapper/SysDept2Mapper.java	(date 1758798202802)
-@@ -38,7 +38,7 @@
-      */
-     public SysDept selectDeptById(Long deptId);
- 
--    public SysDept selectDeptByCode(String deptCode);
-+    public SysDept selectDeptByCode(@Param("deptCode")String deptCode,@Param("orgid")String orgid);
- 
-     /**
-      * 鏍规嵁ID鏌ヨ鎵�鏈夊瓙閮ㄩ棬
-Index: smartor/src/main/resources/mapper/smartor/HNGatherPatArchiveMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.HNGatherPatArchiveMapper\">\r\n\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysUserDept\" id=\"SysUserDeptResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"userId\" column=\"user_id\"/>\r\n        <result property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"deptType\" column=\"dept_type\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysUserRole\" id=\"SysUserRoleResult\">\r\n        <result property=\"userId\" column=\"user_id\"/>\r\n        <result property=\"roleId\" column=\"role_id\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.smartor.domain.PatArchive\" id=\"PatArchiveResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"patientno\" column=\"patientno\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"notrequiredFlag\" column=\"notrequired_flag\"/>\r\n        <result property=\"notrequiredreason\" column=\"notrequiredreason\"/>\r\n        <result property=\"patidHis\" column=\"patid_his\"/>\r\n        <result property=\"sdFlag\" column=\"sd_flag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"viptype\" column=\"viptype\"/>\r\n        <result property=\"name\" column=\"name\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"nation\" column=\"nation\"/>\r\n        <result property=\"nativePlace\" column=\"native_place\"/>\r\n        <result property=\"placeOfResidence\" column=\"place_of_residence\"/>\r\n        <result property=\"birthplace\" column=\"birthplace\"/>\r\n        <result property=\"idcardno\" column=\"idcardno\"/>\r\n        <result property=\"birthdate\" column=\"birthdate\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"age2\" column=\"age2\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"archivetime\" column=\"archivetime\"/>\r\n        <result property=\"archiveby\" column=\"archiveby\"/>\r\n        <result property=\"telcode\" column=\"telcode\"/>\r\n        <result property=\"relativetelcode\" column=\"relativetelcode\"/>\r\n        <result property=\"idcardtype\" column=\"idcardtype\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"openid\" column=\"openid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"dept\" column=\"deptname\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"tag\" column=\"tag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"bedNo\" column=\"bedno\"/>\r\n        <result property=\"inhosptime\" column=\"inhosptime\"/>\r\n        <result property=\"ageUnit\" column=\"age_unit\"/>\r\n        <result property=\"ageUnit2\" column=\"age_unit2\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"careFacilities\" column=\"care_facilities\"/>\r\n        <result property=\"casePath\" column=\"case_path\"/>\r\n        <result property=\"degreeOfEducation\" column=\"degree_of_education\"/>\r\n        <result property=\"maritalStatus\" column=\"marital_status\"/>\r\n        <result property=\"income\" column=\"income\"/>\r\n        <result property=\"medicareType\" column=\"medicare_type\"/>\r\n        <result property=\"carePerson\" column=\"care_person\"/>\r\n        <result property=\"casePersonAge\" column=\"case_person_age\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"filterDrname\" column=\"filter_drname\"/>\r\n        <result property=\"filterDrcode\" column=\"filter_drcode\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.smartor.domain.PatArchiveOthreInfo\" id=\"PatArchiveOthreInfoResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"notrequiredFlag\" column=\"notrequired_flag\"/>\r\n        <result property=\"notrequiredreason\" column=\"notrequiredreason\"/>\r\n        <result property=\"patientno\" column=\"patientno\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"patidHis\" column=\"patid_his\"/>\r\n        <result property=\"sdFlag\" column=\"sd_flag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"viptype\" column=\"viptype\"/>\r\n        <result property=\"name\" column=\"name\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"nation\" column=\"nation\"/>\r\n        <result property=\"nativePlace\" column=\"native_place\"/>\r\n        <result property=\"placeOfResidence\" column=\"place_of_residence\"/>\r\n        <result property=\"birthplace\" column=\"birthplace\"/>\r\n        <result property=\"idcardno\" column=\"idcardno\"/>\r\n        <result property=\"birthdate\" column=\"birthdate\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"age2\" column=\"age2\"/>\r\n        <result property=\"sourcefrom\" column=\"sourcefrom\"/>\r\n        <result property=\"archivetime\" column=\"archivetime\"/>\r\n        <result property=\"archiveby\" column=\"archiveby\"/>\r\n        <result property=\"telcode\" column=\"telcode\"/>\r\n        <result property=\"relativetelcode\" column=\"relativetelcode\"/>\r\n        <result property=\"idcardtype\" column=\"idcardtype\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"openid\" column=\"openid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"dept\" column=\"deptname\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"tag\" column=\"tag\"/>\r\n        <result property=\"pattype\" column=\"pattype\"/>\r\n        <result property=\"bedNo\" column=\"bedno\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"endtime\" column=\"endtime\"/>\r\n        <result property=\"ageUnit\" column=\"age_unit\"/>\r\n        <result property=\"ageUnit2\" column=\"age_unit2\"/>\r\n        <result property=\"inhospno\" column=\"inhospno\"/>\r\n        <result property=\"nurseId\" column=\"nurse_id\"/>\r\n        <result property=\"nurseName\" column=\"nurse_name\"/>\r\n        <result property=\"outWayName\" column=\"out_way_name\"/>\r\n        <result property=\"outWayId\" column=\"out_way_id\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"leavediagname\" column=\"leavediagname\"/>\r\n        <result property=\"leaveicd10code\" column=\"leaveicd10code\"/>\r\n        <result property=\"filterDrname\" column=\"filter_drname\"/>\r\n        <result property=\"filterDrcode\" column=\"filter_drcode\"/>\r\n    </resultMap>\r\n\r\n    <resultMap type=\"com.smartor.domain.PatMedInhosp\" id=\"PatMedInhospResult\">\r\n        <result property=\"inhospid\" column=\"inhospid\"/>\r\n        <result property=\"inhospno\" column=\"inhospno\"/>\r\n        <result property=\"serialnum\" column=\"serialnum\"/>\r\n        <result property=\"hospitalname\" column=\"hospitalname\"/>\r\n        <result property=\"hospitalcode\" column=\"hospitalcode\"/>\r\n        <result property=\"hospitaldistrictcode\" column=\"hospitaldistrictcode\"/>\r\n        <result property=\"hospitaldistrictname\" column=\"hospitaldistrictname\"/>\r\n        <result property=\"icd10code\" column=\"icd10code\"/>\r\n        <result property=\"diagname\" column=\"diagname\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"endtime\" column=\"endtime\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"deptname\" column=\"deptname\"/>\r\n        <result property=\"roomno\" column=\"roomno\"/>\r\n        <result property=\"bedNo\" column=\"bed_no\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"leavediagname\" column=\"leavediagname\"/>\r\n        <result property=\"leaveicd10code\" column=\"leaveicd10code\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"schemestatus\" column=\"schemestatus\"/>\r\n        <result property=\"generalschemestatus\" column=\"generalschemestatus\"/>\r\n        <result property=\"leaveldeptcode\" column=\"leaveldeptcode\"/>\r\n        <result property=\"leaveldeptname\" column=\"leaveldeptname\"/>\r\n        <result property=\"hospitaldistrictid\" column=\"hospitaldistrictid\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"leavehospitaldistrictid\" column=\"leavehospitaldistrictid\"/>\r\n        <result property=\"deptid\" column=\"deptid\"/>\r\n        <result property=\"leaveldeptid\" column=\"leaveldeptid\"/>\r\n        <result property=\"schemetime\" column=\"schemetime\"/>\r\n        <result property=\"patname\" column=\"patname\"/>\r\n        <result property=\"patno\" column=\"patno\"/>\r\n        <result property=\"inhospstate\" column=\"inhospstate\"/>\r\n        <result property=\"deptcheckFlag\" column=\"deptcheck_flag\"/>\r\n        <result property=\"wardcheckFlag\" column=\"wardcheck_flag\"/>\r\n        <result property=\"diagcheckFlag\" column=\"diagcheck_flag\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"telcode\" column=\"telcode\"/>\r\n        <result property=\"longTaskReason\" column=\"long_task_reason\"/>\r\n        <result property=\"nurseId\" column=\"nurse_id\"/>\r\n        <result property=\"nurseName\" column=\"nurse_name\"/>\r\n        <result property=\"outWayId\" column=\"out_way_id\"/>\r\n        <result property=\"outWayName\" column=\"out_way_name\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"operator\" column=\"operator\"/>\r\n        <result property=\"operatorId\" column=\"operator_id\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"tagname\" column=\"tagname\"/>\r\n        <result property=\"fuflag\" column=\"fuflag\"/>\r\n        <result property=\"fudate\" column=\"fudate\"/>\r\n        <result property=\"fuperiod\" column=\"fuperiod\"/>\r\n        <result property=\"futypecode\" column=\"futypecode\"/>\r\n        <result property=\"futypedesc\" column=\"futypedesc\"/>\r\n        <result property=\"fuadvice\" column=\"fuadvice\"/>\r\n        <result property=\"fuspecialadvice\" column=\"fuspecialadvice\"/>\r\n    </resultMap>\r\n\r\n    <resultMap type=\"com.smartor.domain.PatMedOuthosp\" id=\"PatMedOuthospResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"serialnum\" column=\"serialnum\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"hospitalname\" column=\"hospitalname\"/>\r\n        <result property=\"hospitalcode\" column=\"hospitalcode\"/>\r\n        <result property=\"icd10code\" column=\"icd10code\"/>\r\n        <result property=\"diagname\" column=\"diagname\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"deptname\" column=\"deptname\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"admitdate\" column=\"admitdate\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"schemestatus\" column=\"schemestatus\"/>\r\n        <result property=\"deptid\" column=\"deptid\"/>\r\n        <result property=\"schemetime\" column=\"schemetime\"/>\r\n        <result property=\"hpi\" column=\"hpi\"/>\r\n        <result property=\"mainsuit\" column=\"mainsuit\"/>\r\n        <result property=\"outhospno\" column=\"outhospno\"/>\r\n        <result property=\"patname\" column=\"patname\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"patno\" column=\"patno\"/>\r\n        <result property=\"diagcheckFlag\" column=\"diagcheck_flag\"/>\r\n        <result property=\"idcardno\" column=\"idcardno\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.smartor.domain.Icd10\" id=\"Icd10Result\">\r\n        <result property=\"icdid\" column=\"icdid\"/>\r\n        <result property=\"icdcode\" column=\"icdcode\"/>\r\n        <result property=\"icdname\" column=\"icdname\"/>\r\n        <result property=\"icdpym\" column=\"icdpym\"/>\r\n        <result property=\"icdwbm\" column=\"icdwbm\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"pid\" column=\"pid\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"lastflag\" column=\"lastflag\"/>\r\n        <result property=\"chimedflag\" column=\"chimedflag\"/>\r\n        <result property=\"hisIcdid\" column=\"his_icdid\"/>\r\n    </resultMap>\r\n\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysDept\" id=\"SysDeptResult\">\r\n        <id property=\"deptId\" column=\"dept_id\"/>\r\n        <id property=\"hisDeptId\" column=\"his_dept_id\"/>\r\n        <result property=\"parentId\" column=\"parent_id\"/>\r\n        <result property=\"hisParentId\" column=\"his_parent_id\"/>\r\n        <result property=\"ancestors\" column=\"ancestors\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"orderNum\" column=\"order_num\"/>\r\n        <result property=\"leader\" column=\"leader\"/>\r\n        <result property=\"phone\" column=\"phone\"/>\r\n        <result property=\"email\" column=\"email\"/>\r\n        <result property=\"status\" column=\"status\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"parentName\" column=\"parent_name\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptType\" column=\"dept_type\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"type\" column=\"type\"/>\r\n    </resultMap>\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysUser\" id=\"SysUserResult\">\r\n        <id property=\"userId\" column=\"user_id\"/>\r\n        <id property=\"orgid\" column=\"orgid\"/>\r\n        <id property=\"hisUserId\" column=\"his_user_id\"/>\r\n        <result property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"hospInfo\" column=\"hosp_info\"/>\r\n        <result property=\"deptInfo\" column=\"dept_info\"/>\r\n        <result property=\"userName\" column=\"user_name\"/>\r\n        <result property=\"nickName\" column=\"nick_name\"/>\r\n        <result property=\"email\" column=\"email\"/>\r\n        <result property=\"phonenumber\" column=\"phonenumber\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"avatar\" column=\"avatar\"/>\r\n        <result property=\"password\" column=\"password\"/>\r\n        <result property=\"status\" column=\"status\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"loginIp\" column=\"login_ip\"/>\r\n        <result property=\"loginDate\" column=\"login_date\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"idCard\" column=\"id_card\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"title\" column=\"title\"/>\r\n        <result property=\"birthday\" column=\"birthday\"/>\r\n        <result property=\"jobPhone\" column=\"job_phone\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"userType\" column=\"user_type\"/>\r\n        <result property=\"searchscope\" column=\"searchscope\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectPatArchiveVo\">\r\n        select notrequired_flag,\r\n               notrequiredreason,\r\n               patientno,\r\n               patid_his,\r\n               sd_flag,\r\n               name,\r\n               sex,\r\n               idcardno,\r\n               birthdate,\r\n               age,\r\n               nation,\r\n               native_place,\r\n               place_of_residence,\r\n               birthplace,\r\n               sourcefrom,\r\n               archivetime,\r\n               archiveby,\r\n               telcode,\r\n               relativetelcode,\r\n               idcardtype,\r\n               orgid,\r\n               openid,\r\n               viptype,\r\n               care_facilities,\r\n               case_path,\r\n               degree_of_education,\r\n               marital_status,\r\n               income,\r\n               medicare_type,\r\n               care_person,\r\n               case_person_age\r\n        from hzjbxx\r\n    </sql>\r\n\r\n\r\n    <select id=\"yhyjsxx\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\" resultMap=\"SysUserRoleResult\">\r\n        select user_id, role_id, orgid\r\n        FROM yhyjsxx\r\n        <where>\r\n            <if test=\"hisUserId != null \">and user_id = #{hisUserId}</if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"yhyksxx\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\" resultMap=\"SysUserDeptResult\">\r\n        select user_id, user_code, dept_type,department_id as\r\n        dept_id,dept_name,deptparent,del_flag,orgid,create_time,create_by,update_time,update_by\r\n        FROM yhyksxx\r\n        <where>\r\n            user_id != 'admin'\r\n            <if test=\"hisUserId != null \">and user_id = #{hisUserId}</if>\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatArchiveList\" parameterType=\"com.smartor.domain.PatArchive\" resultMap=\"PatArchiveResult\">\r\n        <include refid=\"selectPatArchiveVo\"/>\r\n        <where>\r\n            <if test=\"name != null  and name != ''\">and name like concat('%', #{name}, '%')</if>\r\n            <if test=\"idcardno != null  and idcardno != ''\">and idcardno = #{idcardno}</if>\r\n            <if test=\"sourcefrom != null \">and sourcefrom = #{sourcefrom}</if>\r\n            <if test=\"telcode != null  and telcode != ''\">and telcode = #{telcode}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"id != null  and id != ''\">and id = #{id}</if>\r\n            <if test=\"isupload != null \">and isupload = #{isupload}</if>\r\n            <if test=\"uploadTime != null \">and upload_time = #{uploadTime}</if>\r\n            <if test=\"viptype != null \">and viptype = #{viptype}</if>\r\n            <if test=\"pattype != null \">and pattype = #{pattype}</if>\r\n            <if test=\"patientno != null \">and patientno = CAST(#{patientno} AS INTEGER)</if>\r\n            <if test=\"patidHis != null \">and patid_his = #{patidHis}</if>\r\n            <if test=\"sdFlag != null \">and sd_flag = #{sdFlag}</if>\r\n            <if test=\"ageUnit != null \">and age_unit = #{ageUnit}</if>\r\n            <if test=\"age != null \">and age = #{age}</if>\r\n            <if test=\"age2 != null \">and age2 = #{age2}</if>\r\n            <if test=\"ageUnit2 != null \">and age_unit2 = #{ageUnit2}</if>\r\n            <if test=\"notrequiredFlag != null \">and notrequired_flag = #{notrequiredFlag}</if>\r\n            <if test=\"notrequiredreason != null \">and notrequiredreason = #{notrequiredreason}</if>\r\n            <if test=\"careFacilities != null \">and care_facilities = #{careFacilities}</if>\r\n            <if test=\"casePath != null \">and case_path = #{casePath}</if>\r\n            <if test=\"degreeOfEducation != null \">and degree_of_education = #{degreeOfEducation}</if>\r\n            <if test=\"maritalStatus != null \">and marital_status = #{maritalStatus}</if>\r\n            <if test=\"income != null \">and income = #{income}</if>\r\n            <if test=\"medicareType != null \">and medicare_type = #{medicareType}</if>\r\n            <if test=\"carePerson != null \">and care_person = #{carePerson}</if>\r\n            <if test=\"casePersonAge != null \">and case_person_age = #{casePersonAge}</if>\r\n            <if test=\"filterDrname != null \">and filter_drname = #{filterDrname}</if>\r\n            <if test=\"filterDrcode != null \">and filter_drcode = #{filterDrcode}</if>\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatMedInhospListCount\" parameterType=\"com.smartor.domain.PatMedInhosp\" resultType=\"Long\">\r\n        select count(*)\r\n        FROM cryxx\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveListByLastId\" resultMap=\"PatArchiveResult\">\r\n        SELECT *\r\n        FROM (\r\n                 SELECT *,\r\n                        ROW_NUMBER() OVER (ORDER BY patid_his) as row_num\r\n                 FROM hzjbxx\r\n             ) a\r\n        WHERE row_num > #{lastRowNumber} LIMIT #{ps}\r\n    </select>\r\n\r\n    <select id=\"selectPatMedInhospListByLastId\" resultMap=\"PatMedInhospResult\">\r\n        SELECT *\r\n        FROM (SELECT *,\r\n                     ROW_NUMBER() OVER (ORDER BY patno) as row_num\r\n              FROM cryxx\r\n             ) a\r\n        WHERE row_num > #{lastRowNumber} LIMIT #{ps}\r\n    </select>\r\n\r\n    <select id=\"selectPatArchiveCount\" parameterType=\"com.smartor.domain.PatMedInhosp\" resultType=\"Long\">\r\n        select count(*)\r\n        FROM hzjbxx\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatMedInhospList\" parameterType=\"com.smartor.domain.PatMedInhosp\" resultMap=\"PatMedInhospResult\">\r\n        select\r\n        b.nurse_id,\r\n        b.nurse_name,\r\n        b.patname,\r\n        b.out_way_id,\r\n        b.out_way_name,\r\n        b.inhospstate,\r\n        b.patno,\r\n        b.inhospno,\r\n        b.serialnum,\r\n        b.hospitalname,\r\n        b.hospitalcode,\r\n        b.hospitaldistrictcode,\r\n        b.hospitaldistrictname,\r\n        b.icd10code,\r\n        b.diagname,\r\n        b.starttime,\r\n        b.endtime,\r\n        b.deptcode,\r\n        b.deptname,\r\n        b.roomno,\r\n        b.bed_no,\r\n        b.orgid,\r\n        b.leavediagname,\r\n        b.leaveicd10code,\r\n        b.drcode,\r\n        b.drname,\r\n        b.leaveldeptcode,\r\n        b.leaveldeptname,\r\n        b.hospitaldistrictid,\r\n        b.leavehospitaldistrictcode,\r\n        b.leavehospitaldistrictname,\r\n        b.leavehospitaldistrictid,\r\n        b.deptid,\r\n        b.leaveldeptid,\r\n        b.schemetime,\r\n        b.fuflag,\r\n        b.fudate,\r\n        b.fuperiod,\r\n        b.futypecode,\r\n        b.futypedesc,\r\n        b.fuadvice\r\n        FROM\r\n        cryxx b\r\n        <where>\r\n\r\n            <if test=\"startOutHospTime != null \">and to_char(b.endtime,'YYMMDD') &gt;=\r\n                to_char(#{startOutHospTime}::date,'YYMMDD')\r\n            </if>\r\n            <if test=\"endOutHospTime != null \">and to_char(b.endtime,'YYMMDD') &lt;=\r\n                to_char(#{endOutHospTime}::date,'YYMMDD')\r\n            </if>\r\n            <if test=\"startInHospTime != null \">and to_char(b.starttime,'YYMMDD') &gt;=\r\n                to_char(#{startInHospTime}::date,'%y%m%d')\r\n            </if>\r\n            <if test=\"endInHospTime != null \">and to_char(b.starttime,'YYMMDD') &lt;=\r\n                to_char(#{endInHospTime}::date,'YYMMDD')\r\n            </if>\r\n            <if test=\"inhospno != null \">and b.inhospno = #{inhospno}</if>\r\n            <if test=\"fuflag != null \">and b.fuflag = #{fuflag}</if>\r\n            <if test=\"serialnum != null \">and b.serialnum = #{serialnum}</if>\r\n            <if test=\"patno != null \">and b.patno = #{patno}</if>\r\n            <if test=\"nurseId != null \">and b.nurse_id = #{nurseId}</if>\r\n            <if test=\"nurseName != null and nurseName != ''\">and b.nurse_name = #{nurseName}</if>\r\n            <if test=\"inhospstate != null \">and b.inhospstate = #{inhospstate}</if>\r\n            <if test=\"outWayId != null \">and b.out_way_id = #{outWayId}</if>\r\n            <if test=\"outWayName != null \">and b.out_way_name = #{outWayName}</if>\r\n            <if test=\"orgid != null \">and b.orgid = #{orgid}</if>\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatMedOuthospList\" parameterType=\"com.smartor.domain.PatMedOuthosp\"\r\n            resultMap=\"PatMedOuthospResult\">\r\n        select\r\n        outhospno,\r\n        patno,\r\n        remark,\r\n        serialnum,\r\n        hospitalname,\r\n        hospitalcode,\r\n        icd10code,\r\n        diagname,\r\n        deptcode,\r\n        deptname,\r\n        drcode,\r\n        drname,\r\n        admitdate,\r\n        orgid,\r\n        update_by,\r\n        update_time,\r\n        create_by,\r\n        create_time,\r\n        isupload,\r\n        upload_time,\r\n        schemestatus,\r\n        deptid,\r\n        schemetime,\r\n        hpi,\r\n        patname,\r\n        mainsuit\r\n        from mzxx\r\n        <where>\r\n\r\n            <if test=\"beginTime != null \">and to_char( admitdate,'YYMMDD') &gt;=\r\n                to_char(#{beginTime}::date,'YYMMDD')\r\n            </if>\r\n            <if test=\"endTime != null \">and to_char( admitdate,'YYMMDD') &lt;=\r\n                to_char(#{endTime}::date,'YYMMDD')\r\n            </if>\r\n\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"selectIcd10List\" parameterType=\"com.smartor.domain.Icd10\" resultMap=\"Icd10Result\">\r\n        select\r\n        icdcode,\r\n        his_icdid,\r\n        lastflag,\r\n        chimedflag,\r\n        icdname,\r\n        icdpym\r\n        from jbxx\r\n        <where>\r\n            <if test=\"icdcode != null  and icdcode != ''\">and icdcode = #{icdcode}</if>\r\n            <if test=\"lastflag != null  and lastflag != ''\">and lastflag = #{lastflag}</if>\r\n            <if test=\"chimedflag != null  and chimedflag != ''\">and chimedflag = #{chimedflag}</if>\r\n            <if test=\"icdname != null  and icdname != ''\">and icdname like concat('%', #{icdname}, '%')</if>\r\n            <if test=\"icdpym != null  and icdpym != ''\">and icdpym = #{icdpym}</if>\r\n            <if test=\"icdwbm != null  and icdwbm != ''\">and icdwbm = #{icdwbm}</if>\r\n            <if test=\"orgid != null  and orgid != ''\">and orgid = #{orgid}</if>\r\n            <if test=\"pid != null \">and pid = #{pid}</if>\r\n            <if test=\"guid != null  and guid != ''\">and guid = #{guid}</if>\r\n            <if test=\"hisIcdid != null  and hisIcdid != ''\">and his_icdid = #{hisIcdid}</if>\r\n        </where>\r\n    </select>\r\n\r\n\r\n    <select id=\"selectUserList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\" resultMap=\"SysUserResult\">\r\n        select\r\n        u.title,u.his_user_id, u.searchscope, u.dept_id, u.user_type,\r\n        u.nick_name, u.user_name, u.email,u.id_card, u.avatar,\r\n        u.birthday,u.orgid,u.job_phone,u.phonenumber, u.sex, u.status,\r\n        u.login_ip, u.login_date, u.create_by, u.create_time, u.remark\r\n        from ryxx u\r\n        <where>\r\n            <if test=\"userId != null and userId != 0\">\r\n                AND u.user_id = #{userId}\r\n            </if>\r\n            <if test=\"userName != null and userName != ''\">\r\n                AND u.user_name like concat('%', #{userName}, '%')\r\n            </if>\r\n            <if test=\"nickName != null and nickName != ''\">\r\n                AND u.nick_name like concat('%', #{nickName}, '%')\r\n            </if>\r\n            <if test=\"status != null and status != ''\">\r\n                AND u.status = #{status}\r\n            </if>\r\n            <if test=\"idCard != null and idCard != ''\">\r\n                AND u.id_card = #{idCard}\r\n            </if>\r\n            <if test=\"title != null and title != ''\">\r\n                AND u.title = #{title}\r\n            </if>\r\n            <if test=\"jobPhone != null and jobPhone != ''\">\r\n                AND u.job_phone = #{jobPhone}\r\n            </if>\r\n            <if test=\"birthday != null and birthday != ''\">\r\n                AND u.birthday = #{birthday}\r\n            </if>\r\n            <if test=\"hisUserId != null and hisUserId != ''\">\r\n                AND u.his_user_id = #{hisUserId}\r\n            </if>\r\n            <if test=\"phonenumber != null and phonenumber != ''\">\r\n                AND u.phonenumber like concat('%', #{phonenumber}, '%')\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectDeptList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\" resultMap=\"SysDeptResult\">\r\n        SELECT d.dept_code,\r\n               d.TYPE,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.dept_type,\r\n               d.email,\r\n               d.status,\r\n               d.create_by,\r\n               d.create_time,\r\n               d.his_dept_id,\r\n               d.his_parent_id\r\n        FROM bmxx d\r\n\r\n    </select>\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/HNGatherPatArchiveMapper.xml b/smartor/src/main/resources/mapper/smartor/HNGatherPatArchiveMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/HNGatherPatArchiveMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/resources/mapper/smartor/HNGatherPatArchiveMapper.xml	(date 1758798202817)
-@@ -645,7 +645,7 @@
-                d.create_time,
-                d.his_dept_id,
-                d.his_parent_id
--        FROM bmxx d
-+        FROM HEALTHY_DEPT d
- 
-     </select>
- </mapper>
-Index: ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE configuration\r\n        PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-config.dtd\">\r\n<configuration>\r\n    <!-- 鍏ㄥ眬鍙傛暟 -->\r\n    <settings>\r\n        <!-- 浣垮叏灞�鐨勬槧灏勫櫒鍚敤鎴栫鐢ㄧ紦瀛� -->\r\n        <setting name=\"cacheEnabled\" value=\"true\"/>\r\n        <!-- 鍏佽JDBC 鏀寔鑷姩鐢熸垚涓婚敭 -->\r\n        <setting name=\"useGeneratedKeys\" value=\"true\"/>\r\n        <!-- 閰嶇疆榛樿鐨勬墽琛屽櫒.SIMPLE灏辨槸鏅�氭墽琛屽櫒;REUSE鎵ц鍣ㄤ細閲嶇敤棰勫鐞嗚鍙�(prepared statements);BATCH鎵ц鍣ㄥ皢閲嶇敤璇彞骞舵墽琛屾壒閲忔洿鏂� -->\r\n        <setting name=\"defaultExecutorType\" value=\"SIMPLE\"/>\r\n        <!-- 鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇 -->\r\n<!--        <setting name=\"logImpl\" value=\"STDOUT_LOGGING\"/>-->\r\n        <!-- 浣跨敤椹煎嘲鍛藉悕娉曡浆鎹㈠瓧娈� -->\r\n        <!-- <setting name=\"mapUnderscoreToCamelCase\" value=\"true\"/> -->\r\n    </settings>\r\n\r\n    <plugins>\r\n        <!-- SQL杞崲鎷︽埅鍣� -->\r\n        <plugin interceptor=\"com.ruoyi.common.mybatis.SqlConverterInterceptor\"/>\r\n    </plugins>\r\n\r\n</configuration>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml
---- a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml	(date 1758798202830)
-@@ -12,7 +12,7 @@
-         <!-- 閰嶇疆榛樿鐨勬墽琛屽櫒.SIMPLE灏辨槸鏅�氭墽琛屽櫒;REUSE鎵ц鍣ㄤ細閲嶇敤棰勫鐞嗚鍙�(prepared statements);BATCH鎵ц鍣ㄥ皢閲嶇敤璇彞骞舵墽琛屾壒閲忔洿鏂� -->
-         <setting name="defaultExecutorType" value="SIMPLE"/>
-         <!-- 鎸囧畾 MyBatis 鎵�鐢ㄦ棩蹇楃殑鍏蜂綋瀹炵幇 -->
--<!--        <setting name="logImpl" value="STDOUT_LOGGING"/>-->
-+        <setting name="logImpl" value="STDOUT_LOGGING"/>
-         <!-- 浣跨敤椹煎嘲鍛藉悕娉曡浆鎹㈠瓧娈� -->
-         <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
-     </settings>
-Index: smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.smartor.domain.*;\r\nimport org.springframework.web.multipart.MultipartFile;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 娌冲崡閲囬泦鎮h�呬俊鎭帴鍙r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\npublic interface IHNGatherPatArchiveService {\r\n\r\n    /**\r\n     * 鏌ヨ鎮h�呮。妗堝垪琛╘r\n     *\r\n     * @param patArchive 鎮h�呮。妗圽r\n     * @return 鎮h�呮。妗堥泦鍚圽r\n     */\r\n    public List<PatArchive> selectPatArchiveList(PatArchive patArchive);\r\n\r\n    /**\r\n     * 鍑哄叆闄俊鎭痋r\n     *\r\n     * @param patMedInhosp\r\n     * @return\r\n     */\r\n    public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp);\r\n\r\n    /**\r\n     * 娌冲崡鏁版嵁閲囬泦\r\n     *\r\n     * @param patMedInhosp\r\n     * @return\r\n     */\r\n    public Boolean hnDataGather(HnDataGatherVO patMedInhosp);\r\n\r\n    /**\r\n     * 闂ㄦ�ヨ瘖淇℃伅\r\n     *\r\n     * @param id\r\n     * @return\r\n     */\r\n    public Integer selectPatMedOuthospList(PatMedOuthosp patMedOuthosp);\r\n\r\n\r\n    /**\r\n     * 鏌ヨ鐤剧梾鍒楄〃\r\n     *\r\n     * @param icd10 鐤剧梾\r\n     * @return 鐤剧梾闆嗗悎\r\n     */\r\n    public Integer selectIcd10List(Icd10 icd10);\r\n\r\n    /**\r\n     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃\r\n     *\r\n     * @param sysUser 鐢ㄦ埛淇℃伅\r\n     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅\r\n     */\r\n    public Integer selectUserList(SysUser sysUser);\r\n\r\n    /**\r\n     * 鏌ヨ閮ㄩ棬绠$悊鏁版嵁\r\n     *\r\n     * @param dept 閮ㄩ棬淇℃伅\r\n     * @return 閮ㄩ棬淇℃伅闆嗗悎\r\n     */\r\n    public Integer selectDeptList(SysDept dept);\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java b/smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java
---- a/smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/IHNGatherPatArchiveService.java	(date 1758798202842)
-@@ -42,7 +42,7 @@
-     /**
-      * 闂ㄦ�ヨ瘖淇℃伅
-      *
--     * @param id
-+     * @param patMedOuthosp
-      * @return
-      */
-     public Integer selectPatMedOuthospList(PatMedOuthosp patMedOuthosp);
-Index: smartor/src/main/java/com/smartor/common/LSHospTokenUtil.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.common;\r\n\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\n\r\nimport java.io.IOException;\r\n\r\n@Slf4j\r\npublic class LSHospTokenUtil {\r\n     public static String getToken(String orgid,String url) {\r\n        String token = null;\r\n        LyraTokenUtil lyraTokenUtil = null;\r\n            if (orgid.equals(\"47255004333112711A1001\")) { //鏅畞\r\n                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(\"https://9.0.124.104:13021/mediinfo-lyra-authserver/connect/token\", \"zjhes.suifangxt\", \"OIjdJvx2ALjFVGZoCZO4I8O\");\r\n            }else  if (orgid.equals(\"47231022633110211A2101\")) {  //涓尰闄r\n                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(\"https://9.0.124.104:13011/mediinfo-lyra-authserver/connect/token\", \"zjhes.suifangxt\", \"OIjdJvx2ALjFVGZoCZO4I8O\");\r\n            }else if(ObjectUtils.isNotEmpty(url)) {\r\n                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(url, \"zjhes.suifangxt\", \"OIjdJvx2ALjFVGZoCZO4I8O\");\r\n                log.info(\"token.360璋冪敤缁撴灉\" + url + \";鏈烘瀯浠g爜锛歕" + orgid + \"\");\r\n            }\r\n        try {\r\n            token = lyraTokenUtil.getToken();\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n        return token;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/common/LSHospTokenUtil.java b/smartor/src/main/java/com/smartor/common/LSHospTokenUtil.java
---- a/smartor/src/main/java/com/smartor/common/LSHospTokenUtil.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/common/LSHospTokenUtil.java	(date 1758798202857)
-@@ -7,17 +7,18 @@
- 
- @Slf4j
- public class LSHospTokenUtil {
--     public static String getToken(String orgid,String url) {
-+    public static String getToken(String orgid,String url) {
-         String token = null;
-         LyraTokenUtil lyraTokenUtil = null;
--            if (orgid.equals("47255004333112711A1001")) { //鏅畞
--                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil("https://9.0.124.104:13021/mediinfo-lyra-authserver/connect/token", "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
--            }else  if (orgid.equals("47231022633110211A2101")) {  //涓尰闄�
--                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil("https://9.0.124.104:13011/mediinfo-lyra-authserver/connect/token", "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
--            }else if(ObjectUtils.isNotEmpty(url)) {
--                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(url, "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
--                log.info("token.360璋冪敤缁撴灉" + url + ";鏈烘瀯浠g爜锛�" + orgid + "");
--            }
-+        if(ObjectUtils.isNotEmpty(url)){
-+            lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil(url, "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
-+            log.info("token.360璋冪敤缁撴灉"+url+";鏈烘瀯浠g爜锛�"+orgid+"");
-+        }else {
-+            if (orgid.equals("47255004333112711A1001"))  //鏅畞
-+                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil("https://9.0.124.104:13021/mediinfo-lyra-authserver/connect/token", "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
-+            if (orgid.equals("47231022633110211A2101"))  //涓尰闄�
-+                lyraTokenUtil = LyraTokenUtil.createLyraTokenUtil("https://9.0.124.104:13011/mediinfo-lyra-authserver/connect/token", "zjhes.suifangxt", "OIjdJvx2ALjFVGZoCZO4I8O");
-+        }
-         try {
-             token = lyraTokenUtil.getToken();
-         } catch (IOException e) {
-Index: ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpUtil.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.common.utils;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.alibaba.fastjson.JSONObject;\r\nimport com.github.pagehelper.util.StringUtil;\r\nimport com.ruoyi.common.exception.HttpRequestException;\r\nimport com.ruoyi.common.utils.http.HttpEntity;\r\nimport com.ruoyi.common.utils.json.JsonRequestBody;\r\nimport com.ruoyi.common.utils.json.JsonResponseBody;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.codec.Charsets;\r\nimport org.apache.commons.httpclient.*;\r\nimport org.apache.commons.httpclient.methods.EntityEnclosingMethod;\r\nimport org.apache.commons.httpclient.methods.PostMethod;\r\nimport org.apache.commons.httpclient.methods.RequestEntity;\r\nimport org.apache.commons.httpclient.methods.StringRequestEntity;\r\nimport org.apache.commons.httpclient.params.HttpClientParams;\r\nimport org.springframework.util.Assert;\r\nimport org.springframework.web.context.request.RequestContextHolder;\r\nimport org.springframework.web.context.request.ServletRequestAttributes;\r\n\r\nimport java.io.*;\r\nimport java.net.HttpURLConnection;\r\nimport java.net.URL;\r\nimport java.net.URLEncoder;\r\nimport java.nio.charset.Charset;\r\nimport java.nio.charset.StandardCharsets;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.HashMap;\r\nimport java.util.Locale;\r\nimport java.util.Map;\r\n\r\n@Slf4j\r\npublic class HttpUtil {\r\n\r\n    protected static final int DEFAULT_STATUS_ERROR_CODE = 100001;//榛樿http寮傚父鐘舵�佺爜\r\n\r\n    protected static final String CONTENT_TYPE = \"Content-Type\";\r\n\r\n    protected static final String APPLICATION_JSON = \"application/json\";\r\n    protected static final String APPLICATION_JSON_UTF8 = \"application/json; charset=utf-8\";\r\n\r\n    protected static final String TEXT_XML = \"text/xml\";\r\n    protected static final String TEXT_XML_UTF8 = \"text/xml; charset=utf-8\";\r\n\r\n    protected static final int OK = 200;\r\n\r\n\r\n    /**\r\n     * 绌虹殑鎶ユ枃澶碶r\n     */\r\n    protected static final Map<String, String> EMPTY_HEADERS = new HashMap<String, String>(0);\r\n    /**\r\n     * 缂栫爜閿欒\r\n     */\r\n    protected static final int ENCODING_ERROR_CODE = 999997;\r\n    /**\r\n     * HTTP 閿欒: 姝婚攣銆佹枃浠惰繃澶х瓑鏂囦欢\r\n     */\r\n    protected static final int HTTP_ERROR_CODE = 999996;\r\n    /**\r\n     * IO 閿欒\r\n     */\r\n    protected static final int IO_ERROR_CODE = 999995;\r\n    /**\r\n     * 鍝嶅簲涓簄ull\r\n     */\r\n    protected static final int RESPONSE_NULL_ERROR_CODE = 999994;\r\n\r\n    protected static final String USER_IP_KEY = \"x-remoteip\";\r\n\r\n    protected static final String TEXT_NORMAL = \"application/x-www-form-urlencoded; charset=utf-8\";\r\n    protected static final HttpClient httpClient = getHttpClient();\r\n\r\n    private static final SimpleDateFormat formatHttpData = new SimpleDateFormat(\"EEE, dd MMM yyyy HH:mm:ss 'GMT'\", Locale.US);\r\n\r\n\r\n    private static HttpClient getHttpClient() {\r\n        // 姝ゅ杩愮敤杩炴帴姹犳妧鏈�俓r\n        MultiThreadedHttpConnectionManager manager = new MultiThreadedHttpConnectionManager();\r\n\r\n        // 璁惧畾鍙傛暟锛氫笌姣忎釜涓绘満鐨勬渶澶ц繛鎺ユ暟\r\n        manager.getParams().setDefaultMaxConnectionsPerHost(100);\r\n        // 璁惧畾鍙傛暟锛氬鎴风鐨勬�昏繛鎺ユ暟\r\n        manager.getParams().setMaxTotalConnections(400);\r\n        // 璁剧疆杩炴帴瓒呮椂鏃堕棿,鍗曚綅锛氭绉抃r\n        manager.getParams().setConnectionTimeout(30000);\r\n        // 璁剧疆璇锋眰璇诲彇瓒呮椂鏃堕棿锛屽崟浣嶏細姣\r\n        manager.getParams().setSoTimeout(30000);\r\n        // 璁剧疆浠庤繛鎺ユ睜涓幏鍙栭摼鎺ユ椂闂达紝 鍗曚綅锛氭绉抃r\n        manager.getParams().setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 8000);\r\n        // 浣跨敤杩炴帴姹犳妧鏈垱寤篐ttpClient瀵硅薄\r\n        HttpClient httpClient = new HttpClient(manager);\r\n\r\n        return httpClient;\r\n    }\r\n\r\n    public static String postJsonRequest(String url, String request) throws HttpRequestException {\r\n        Assert.hasLength(url, \"璇锋眰url涓嶈兘涓虹┖瀛楃涓层�俓");\r\n        EntityEnclosingMethod httpMethod = new PostMethod(url);\r\n\r\n        httpMethod.addRequestHeader(\"Content-Type\", \"application/json; charset=UTF-8\");\r\n        setHeaderRequestId(httpMethod);\r\n        try {\r\n            RequestEntity entity = new StringRequestEntity(request, \"application/json\", \"utf-8\");\r\n            httpMethod.setRequestEntity(entity);\r\n\r\n            int resultCode = httpClient.executeMethod(httpMethod);\r\n            InputStream inputStream = httpMethod.getResponseBodyAsStream();\r\n            if (inputStream == null) {\r\n                throw new HttpRequestException(RESPONSE_NULL_ERROR_CODE, \"鍝嶅簲涓簄ull\");\r\n            }\r\n            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));\r\n            StringBuffer stringBuffer = new StringBuffer();\r\n            String str = \"\";\r\n            while ((str = reader.readLine()) != null) {\r\n                stringBuffer.append(str);\r\n            }\r\n            reader.close();\r\n            String respJson = stringBuffer.toString();\r\n            // String respJson = httpMethod.getResponseBodyAsString();\r\n            if (resultCode == OK) {\r\n                return respJson;\r\n            } else {\r\n                throw new HttpRequestException(resultCode, respJson);\r\n            }\r\n        } catch (UnsupportedEncodingException e) {\r\n            throw new HttpRequestException(ENCODING_ERROR_CODE, e);\r\n        } catch (HttpException e) {\r\n            throw new HttpRequestException(HTTP_ERROR_CODE, e);\r\n        } catch (IOException e) {\r\n            throw new HttpRequestException(IO_ERROR_CODE, e);\r\n        } finally {\r\n            if (httpMethod != null) {\r\n                httpMethod.releaseConnection();\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * json鐨刾ost璇锋眰\r\n     *\r\n     * @param url           璇锋眰url\r\n     * @param reqEntity     璇锋眰澶翠笌璇锋眰浣撶殑灏佽\r\n     * @param respBodyClass 鍝嶅簲浣撶被鍨媆r\n     * @return 杩斿洖鐨勫搷搴旂粨鏋淺r\n     */\r\n    @SuppressWarnings(\"unchecked\")\r\n    public static <RESPBODY> HttpEntity<RESPBODY> postJsonRequestV2(String url, HttpEntity<?> reqEntity, Class<RESPBODY> respBodyClass) {\r\n        Assert.hasLength(url, \"璇锋眰url涓嶈兘涓虹┖瀛楃涓层�俓");\r\n        Assert.notNull(reqEntity, \"璇锋眰request涓嶈兘涓簄ull銆俓");\r\n        Assert.notNull(reqEntity.getBody(), \"Post璇锋眰body涓嶈兘涓簄ull銆俓");\r\n\r\n        EntityEnclosingMethod httpMethod = new PostMethod(url);\r\n        //璁剧疆header淇℃伅\r\n        Map<String, String> headers = reqEntity.getHeaders();\r\n        //鑻ヤ紶鍏ユ姤鏂囧ご锛屽垯璁剧疆鍊糪r\n        if (headers != HttpEntity.EMPTY_HEADERS) {\r\n            setReqHeaders(headers, httpMethod);\r\n        }\r\n\r\n        //璁剧疆body淇℃伅\r\n        String reqJson = JSON.toJSONString(reqEntity.getBody());\r\n\r\n        String charset = com.google.common.base.Charsets.UTF_8.name();\r\n        // 鍙戦�佸惈xml娑堟伅浣撶殑瀵硅薄\r\n        try {\r\n            RequestEntity entity = new StringRequestEntity(reqJson, APPLICATION_JSON, charset);\r\n            httpMethod.setRequestEntity(entity);\r\n\r\n            // 鎵ц璇锋眰骞舵帴鏀跺搷搴旂爜\r\n            int resultCode = httpClient.executeMethod(httpMethod);\r\n            InputStream inputStream = httpMethod.getResponseBodyAsStream();\r\n            if (inputStream == null) {\r\n                throw new HttpRequestException(RESPONSE_NULL_ERROR_CODE, \"鍝嶅簲涓簄ull\");\r\n            }\r\n            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName(\"GB2312\")));\r\n            StringBuffer stringBuffer = new StringBuffer();\r\n            String str = \"\";\r\n            while ((str = reader.readLine()) != null) {\r\n                stringBuffer.append(str);\r\n            }\r\n            reader.close();\r\n            String respStr = stringBuffer.toString();\r\n            //String respStr = httpMethod.getResponseBodyAsString();\r\n            if (resultCode == OK) {\r\n                //鍝嶅簲澶碶r\n                Map<String, String> respHeaders = getRespHeaders(httpMethod);\r\n                //鍝嶅簲浣揬r\n                HttpEntity<RESPBODY> rep = null;\r\n                if (isNullOrEmpty(respStr) || null == respBodyClass) {\r\n                    rep = new HttpEntity<RESPBODY>(respHeaders, null);\r\n                    // 鏃犲搷搴擻r\n                } else {\r\n                    if (respBodyClass != String.class) {\r\n                        RESPBODY respBody = JSON.parseObject(respStr, respBodyClass);\r\n                        rep = new HttpEntity<RESPBODY>(respHeaders, respBody);\r\n                    } else {\r\n                        rep = new HttpEntity<RESPBODY>(respHeaders, (RESPBODY) new String(respStr.getBytes(\"ISO8859-1\"), StandardCharsets.UTF_8));\r\n                    }\r\n                }\r\n                return rep;\r\n            } else if (resultCode == DEFAULT_STATUS_ERROR_CODE) {\r\n                JSONObject model = JSON.parseObject(respStr);\r\n                throw new HttpRequestException(model.getIntValue(\"code\"), model.getString(\"msg\"));\r\n            } else {\r\n                throw new HttpRequestException(resultCode, respStr);\r\n            }\r\n        } catch (UnsupportedEncodingException e) {\r\n            throw new HttpRequestException(ENCODING_ERROR_CODE, e);\r\n        } catch (HttpException e) {\r\n            throw new HttpRequestException(HTTP_ERROR_CODE, e);\r\n        } catch (IOException e) {\r\n            throw new HttpRequestException(IO_ERROR_CODE, e);\r\n        } finally {\r\n            if (httpMethod != null) {\r\n                httpMethod.releaseConnection();\r\n            }\r\n        }\r\n    }\r\n\r\n    public static <RESPBODY extends JsonResponseBody> HttpEntity<RESPBODY> postJsonRequest(String url, HttpEntity<? extends JsonRequestBody> reqEntity, Class<RESPBODY> respBodyClass) {\r\n        Assert.hasLength(url, \"璇锋眰url涓嶈兘涓虹┖瀛楃涓层�俓");\r\n        Assert.notNull(reqEntity, \"璇锋眰request涓嶈兘涓簄ull銆俓");\r\n        Assert.notNull(reqEntity.getBody(), \"Post璇锋眰body涓嶈兘涓簄ull銆俓");\r\n\r\n        EntityEnclosingMethod httpMethod = new PostMethod(url);\r\n        //璁剧疆header淇℃伅\r\n        Map<String, String> headers = reqEntity.getHeaders();\r\n        //鑻ヤ紶鍏ユ姤鏂囧ご锛屽垯璁剧疆鍊糪r\n        if (headers != HttpEntity.EMPTY_HEADERS) {\r\n            setReqHeaders(headers, httpMethod);\r\n        }\r\n\r\n        //璁剧疆body淇℃伅\r\n        String reqJson = JSON.toJSONString(reqEntity.getBody());\r\n\r\n        String charset = Charsets.UTF_8.name();\r\n        // 鍙戦�佸惈xml娑堟伅浣撶殑瀵硅薄\r\n        try {\r\n            RequestEntity entity = new StringRequestEntity(reqJson, APPLICATION_JSON, charset);\r\n            httpMethod.setRequestEntity(entity);\r\n\r\n            // 鎵ц璇锋眰骞舵帴鏀跺搷搴旂爜\r\n            int resultCode = httpClient.executeMethod(httpMethod);\r\n            InputStream inputStream = httpMethod.getResponseBodyAsStream();\r\n            if (inputStream == null) {\r\n                throw new HttpRequestException(RESPONSE_NULL_ERROR_CODE, \"鍝嶅簲涓簄ull\");\r\n            }\r\n            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));\r\n            StringBuffer stringBuffer = new StringBuffer();\r\n            String str = \"\";\r\n            while ((str = reader.readLine()) != null) {\r\n                stringBuffer.append(str);\r\n            }\r\n            reader.close();\r\n            String respStr = stringBuffer.toString();\r\n            if (resultCode == OK) {\r\n                //鍝嶅簲澶碶r\n                Map<String, String> respHeaders = getRespHeaders(httpMethod);\r\n                //鍝嶅簲浣揬r\n                HttpEntity<RESPBODY> rep = null;\r\n                if (isNullOrEmpty(respStr) || null == respBodyClass) {\r\n                    rep = new HttpEntity<RESPBODY>(respHeaders, null);\r\n                    ;// 鏃犲搷搴擻r\n                } else {\r\n                    RESPBODY respBody = JSON.parseObject(respStr, respBodyClass);\r\n                    rep = new HttpEntity<RESPBODY>(respHeaders, respBody);\r\n                }\r\n                return rep;\r\n            } else if (resultCode == DEFAULT_STATUS_ERROR_CODE) {\r\n                JSONObject model = JSON.parseObject(respStr);\r\n                throw new HttpRequestException(model.getIntValue(\"code\"), model.getString(\"msg\"));\r\n            } else {\r\n                throw new HttpRequestException(resultCode, respStr);\r\n            }\r\n        } catch (UnsupportedEncodingException e) {\r\n            throw new HttpRequestException(ENCODING_ERROR_CODE, e);\r\n        } catch (HttpException e) {\r\n            throw new HttpRequestException(HTTP_ERROR_CODE, e);\r\n        } catch (IOException e) {\r\n            throw new HttpRequestException(IO_ERROR_CODE, e);\r\n        } finally {\r\n            if (httpMethod != null) {\r\n                httpMethod.releaseConnection();\r\n            }\r\n        }\r\n    }\r\n\r\n    public static String postFormRequest(String baseUrl, Map<String, String> params, Map<String, String> headers, String body) {\r\n        HttpURLConnection connection = null;\r\n        BufferedReader reader = null;\r\n\r\n        try {\r\n            // 鏋勫缓瀹屾暣鐨刄RL锛堝寘鍚煡璇㈠弬鏁帮級\r\n            String fullUrl = buildUrlWithParams(baseUrl, params);\r\n            URL requestUrl = new URL(fullUrl);\r\n            connection = (HttpURLConnection) requestUrl.openConnection();\r\n\r\n            // 璁剧疆璇锋眰鏂规硶\r\n            connection.setRequestMethod(\"POST\");\r\n            connection.setDoOutput(true);\r\n            connection.setDoInput(true);\r\n            connection.setUseCaches(false);\r\n\r\n            // 璁剧疆璇锋眰澶碶r\n            if (headers != null) {\r\n                for (Map.Entry<String, String> entry : headers.entrySet()) {\r\n                    connection.setRequestProperty(entry.getKey(), entry.getValue());\r\n                }\r\n            }\r\n\r\n            // 璁剧疆榛樿鐨凜ontent-Type\r\n            if (!connection.getRequestProperties().containsKey(\"Content-Type\")) {\r\n                connection.setRequestProperty(\"Content-Type\", \"application/json; charset=UTF-8\");\r\n            }\r\n\r\n            // 濡傛灉鏈夎姹備綋锛屽啓鍏ユ暟鎹甛r\n            if (body != null && !body.isEmpty()) {\r\n                try (OutputStream os = connection.getOutputStream()) {\r\n                    byte[] input = body.getBytes(StandardCharsets.UTF_8);\r\n                    os.write(input, 0, input.length);\r\n                }\r\n            }\r\n\r\n            // 鑾峰彇鍝嶅簲鐮乗r\n            int responseCode = connection.getResponseCode();\r\n\r\n            // 璇诲彇鍝嶅簲\r\n            StringBuilder response = new StringBuilder();\r\n            if (responseCode == HttpURLConnection.HTTP_OK) {\r\n                reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));\r\n            } else {\r\n                reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()));\r\n            }\r\n\r\n            String line;\r\n            while ((line = reader.readLine()) != null) {\r\n                response.append(line);\r\n            }\r\n\r\n            return response.toString();\r\n\r\n        } catch (Exception e) {\r\n            throw new RuntimeException(\"POST璇锋眰澶辫触: \" + e.getMessage(), e);\r\n        } finally {\r\n            // 鍏抽棴杩炴帴\r\n            if (reader != null) {\r\n                try {\r\n                    reader.close();\r\n                } catch (Exception e) { /* ignore */ }\r\n            }\r\n            if (connection != null) {\r\n                connection.disconnect();\r\n            }\r\n        }\r\n    }\r\n\r\n    private static String buildUrlWithParams(String baseUrl, Map<String, String> params) {\r\n        if (params == null || params.isEmpty()) {\r\n            return baseUrl;\r\n        }\r\n\r\n        StringBuilder urlBuilder = new StringBuilder(baseUrl);\r\n        boolean firstParam = true;\r\n\r\n        for (Map.Entry<String, String> entry : params.entrySet()) {\r\n            if (firstParam) {\r\n                urlBuilder.append(\"?\");\r\n                firstParam = false;\r\n            } else {\r\n                urlBuilder.append(\"&\");\r\n            }\r\n\r\n            try {\r\n                urlBuilder.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8.toString())).append(\"=\").append(URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8.toString()));\r\n            } catch (UnsupportedEncodingException e) {\r\n                e.printStackTrace();\r\n            }\r\n        }\r\n\r\n        return urlBuilder.toString();\r\n    }\r\n//    public static String postFormRequest(String url, Map<String, String> params,Map<String, String> headers) throws HttpRequestException {\r\n//        Assert.hasLength(url, \"璇锋眰url涓嶈兘涓虹┖瀛楃涓层�俓");\r\n//        Assert.notNull(params, \"璇锋眰params涓嶈兘涓虹┖銆俓");\r\n//\r\n//        PostMethod httpMethod = new PostMethod(url);\r\n//\r\n//        httpMethod.addRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\r\n//\r\n//        if(!ObjectUtils.isEmpty(headers)) {\r\n//            httpMethod.addRequestHeader(headers.get(), \"application/json\");\r\n//        }\r\n//\r\n//        try {\r\n//            // 鍙戦�佽姹傚弬鏁癨r\n//            StringBuilder param = new StringBuilder();\r\n//            for (Map.Entry<String, String> entry : params.entrySet()) {\r\n//                if (param.length() > 0) {\r\n//                    param.append(\"&\");\r\n//                }\r\n//                param.append(entry.getKey());\r\n//                param.append(\"=\");\r\n//                param.append(entry.getValue());\r\n//            }\r\n//\r\n//            RequestEntity entity = new StringRequestEntity(param.toString(), \"application/json\", \"utf-8\");\r\n//            httpMethod.setRequestEntity(entity);\r\n//            // 鎵ц璇锋眰骞舵帴鏀跺搷搴旂爜\r\n//            int resultCode = httpClient.executeMethod(httpMethod);\r\n//\r\n//            String respJson = httpMethod.getResponseBodyAsString();\r\n//            if (resultCode == OK) {\r\n//                return respJson;\r\n//            } else {\r\n//                throw new HttpRequestException(resultCode, respJson);\r\n//            }\r\n//        } catch (UnsupportedEncodingException e) {\r\n//            throw new HttpRequestException(ENCODING_ERROR_CODE, e);\r\n//        } catch (HttpException e) {\r\n//            throw new HttpRequestException(HTTP_ERROR_CODE, e);\r\n//        } catch (IOException e) {\r\n//            throw new HttpRequestException(IO_ERROR_CODE, e);\r\n//        } finally {\r\n//            if (httpMethod != null) {\r\n//                httpMethod.releaseConnection();\r\n//            }\r\n//        }\r\n//    }\r\n\r\n\r\n    private static Map<String, String> getRespHeaders(HttpMethodBase httpMethod) {\r\n        //寰楀埌鍝嶅簲澶碶r\n        Header[] respHeaders = httpMethod.getResponseHeaders();\r\n        Map<String, String> headers = new HashMap<String, String>(respHeaders.length);\r\n        for (Header header : respHeaders)\r\n            headers.put(header.getName(), header.getValue());\r\n        return headers;\r\n    }\r\n\r\n    protected static void setReqHeaders(Map<String, String> headers, HttpMethodBase httpMethod) {\r\n        //璁剧疆璇锋眰澶碶r\n        for (Map.Entry<String, String> header : headers.entrySet()) {\r\n            httpMethod.addRequestHeader(header.getKey(), header.getValue());\r\n        }\r\n    }\r\n\r\n    protected static void setHeaderRequestId(HttpMethodBase httpMethod) {\r\n        //璁剧疆璇锋眰澶碶r\n        ServletRequestAttributes req = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();\r\n        if (null != req) {\r\n            String requestId = req.getRequest().getHeader(\"x-request-id\");\r\n            if (StringUtil.isNotEmpty(requestId)) {\r\n                httpMethod.addRequestHeader(\"x-request-id\", requestId);\r\n                log.info(\"header涓瓁-request-id鍊间负:{}\", requestId);\r\n            }\r\n        }\r\n    }\r\n\r\n    private static boolean isNullOrEmpty(String obj) {\r\n        if (obj == null || obj.isEmpty()) {\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpUtil.java
---- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpUtil.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/HttpUtil.java	(date 1758798202872)
-@@ -106,11 +106,23 @@
-             httpMethod.setRequestEntity(entity);
- 
-             int resultCode = httpClient.executeMethod(httpMethod);
-+            // 鑾峰彇鍝嶅簲澶寸殑瀛楃缂栫爜
-+            String contentType = httpMethod.getResponseHeader("Content-Type") == null ?
-+                    null : httpMethod.getResponseHeader("Content-Type").getValue();
-+            String charset = "UTF-8"; // 榛樿浣跨敤UTF-8
-+
-+            if (contentType != null && contentType.contains("charset=")) {
-+                String[] parts = contentType.split("charset=");
-+                if (parts.length > 1) {
-+                    charset = parts[1].split(";")[0].trim();
-+                }
-+            }
-+
-             InputStream inputStream = httpMethod.getResponseBodyAsStream();
-             if (inputStream == null) {
-                 throw new HttpRequestException(RESPONSE_NULL_ERROR_CODE, "鍝嶅簲涓簄ull");
-             }
--            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
-+            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,charset));
-             StringBuffer stringBuffer = new StringBuffer();
-             String str = "";
-             while ((str = reader.readLine()) != null) {
-Index: smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.entity.SysUserDept;\r\nimport com.ruoyi.common.core.domain.entity.SysUserRole;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.*;\r\nimport com.smartor.service.IHNGatherPatArchiveService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.time.ZoneId;\r\nimport java.util.*;\r\n\r\n/**\r\n * 鎮h�呮。妗圫ervice涓氬姟灞傚鐞哱r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\n@Slf4j\r\n@Service\r\npublic class HNGatherPatArchiveServiceImpl implements IHNGatherPatArchiveService {\r\n    @Autowired\r\n    private HNGatherPatArchiveMapper hnGatherPatArchiveMapper;\r\n\r\n    @Autowired\r\n    private SysUser2Mapper sysUser2Mapper;\r\n\r\n    @Autowired\r\n    private SysUserRole2Mapper sysUserRoleMapper;\r\n\r\n    @Autowired\r\n    private SysDept2Mapper sysDept2Mapper;\r\n\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    @Autowired\r\n    private Icd10Mapper icd10Mapper;\r\n\r\n    @Autowired\r\n    private PatMedOuthospMapper patMedOuthospMapper;\r\n\r\n    @Autowired\r\n    private PatMedInhospMapper patMedInhospMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n\r\n    @Autowired\r\n    private ThreadPoolTaskExecutor taskExecutor;\r\n\r\n    @Autowired\r\n    private ShardingMapper shardingMapper;\r\n\r\n    private static final long SHARDING_THRESHOLD = 5_000_000L;\r\n    private static final String PAT_ARCHIVE_TABLE = \"pat_archive\";\r\n    private static final String PAT_MED_INHOSP_TABLE = \"pat_med_inhosp\";\r\n\r\n\r\n    @Override\r\n    public List<PatArchive> selectPatArchiveList(PatArchive patArchive) {\r\n        return hnGatherPatArchiveMapper.selectPatArchiveList(patArchive);\r\n    }\r\n\r\n//    @Override\r\n//    public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp) {\r\n//        // 寮傛鎵ц鏁翠釜鏁版嵁鍚屾浠诲姟\r\n//        taskExecutor.execute(() -> {\r\n//            log.info(\"寮�濮嬫墽琛屾暟鎹悓姝ヤ换鍔�...\");\r\n//            syncPatArchivesInOrder(); // 鍏堝悓姝ユ偅鑰匼r\n//            syncPatMedInhosp();       // 鍐嶅悓姝ュ嚭鍏ラ櫌\r\n//            log.info(\"鏁版嵁鍚屾浠诲姟鎻愪氦瀹屾瘯銆俓");\r\n//        });\r\n//        return 0; // 杩斿洖0琛ㄧず浠诲姟宸叉彁浜ゅ埌鍚庡彴鎵ц\r\n//    }\r\n\r\n\r\n    @Override\r\n    public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp) {\r\n        List<PatMedInhosp> patMedInhospList = hnGatherPatArchiveMapper.selectPatMedInhospList(patMedInhosp);\r\n        for (PatMedInhosp pm : patMedInhospList) {\r\n            PatArchive patArchive = new PatArchive();\r\n            patArchive.setPatientno(pm.getPatno());\r\n            List<PatArchive> patArchives = hnGatherPatArchiveMapper.selectPatArchiveList(patArchive);\r\n            if (CollectionUtils.isEmpty(patArchives)) {\r\n                //绌轰簡鐩存帴涓㈡帀\r\n                continue;\r\n            }\r\n            PatArchive pa = new PatArchive();\r\n            pa.setPatientno(patArchives.get(0).getPatientno());\r\n            List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa);\r\n            if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                pm.setPatid(patArchives1.get(0).getId());\r\n            } else {\r\n                patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n                pm.setPatid(patArchives.get(0).getId());\r\n            }\r\n            if (!Objects.isNull(patMedInhosp.getStartInHospTime()) && !Objects.isNull(patMedInhosp.getEndInHospTime())) {\r\n                //鍏ラ櫌\r\n                pm.setInhospstate(\"0\");\r\n                pm.setCreateTime(new Date());\r\n                patMedInhospMapper.insertPatMedInhosp(pm);\r\n            } else if (!Objects.isNull(patMedInhosp.getStartOutHospTime()) && !Objects.isNull(patMedInhosp.getEndOutHospTime())) {\r\n                //鍑洪櫌\r\n                pm.setInhospstate(\"1\");\r\n                pm.setUpdateTime(new Date());\r\n                PatMedInhosp pmi = new PatMedInhosp();\r\n                pmi.setSerialnum(pm.getSerialnum());\r\n                List<PatMedInhosp> patMedInhospList1 = patMedInhospMapper.selectPatMedInhospList(pmi);\r\n                if (CollectionUtils.isEmpty(patMedInhospList1)) {\r\n                    pm.setCreateTime(new Date());\r\n                    patMedInhospMapper.insertPatMedInhosp(pm);\r\n                } else {\r\n                    pm.setInhospid(patMedInhospList1.get(0).getInhospid());\r\n                    patMedInhospMapper.updatePatMedInhosp(pm);\r\n                }\r\n\r\n            }\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    @Override\r\n    public Boolean hnDataGather(HnDataGatherVO hnDataGatherVO) {\r\n\r\n        LocalDate startDate = hnDataGatherVO.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();\r\n        LocalDate endDate = hnDataGatherVO.getEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();\r\n\r\n        Integer po = null;\r\n        // 寰幆澶勭悊姣忎竴澶‐r\n        for (LocalDate currentDate = startDate; !currentDate.isAfter(endDate); currentDate = currentDate.plusDays(1)) {\r\n            PatMedInhosp dailyCondition = new PatMedInhosp();\r\n            //澶勭悊鍏ラ櫌\r\n            LocalDateTime dayStart = currentDate.atStartOfDay();\r\n            LocalDateTime dayEnd = currentDate.atTime(23, 59, 59);\r\n            dailyCondition.setStartInHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            dailyCondition.setEndInHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n            selectPatMedInhospList(dailyCondition);\r\n\r\n            //澶勭悊鍑洪櫌\r\n            dailyCondition.setStartInHospTime(null);\r\n            dailyCondition.setEndInHospTime(null);\r\n            dailyCondition.setStartOutHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            dailyCondition.setEndOutHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n            selectPatMedInhospList(dailyCondition);\r\n\r\n            //澶勭悊闂ㄨ瘖\r\n            PatMedOuthosp patMedOuthosp = new PatMedOuthosp();\r\n            patMedOuthosp.setBeginTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            patMedOuthosp.setEndTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n           selectPatMedOuthospList(patMedOuthosp);\r\n        }\r\n        return true;\r\n    }\r\n\r\n\r\n    @Override\r\n    public Integer selectPatMedOuthospList(PatMedOuthosp patMedOuthosp) {\r\n        List<PatMedOuthosp> patMedOuthosps = hnGatherPatArchiveMapper.selectPatMedOuthospList(patMedOuthosp);\r\n        log.info(\"selectPatMedOuthospList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", patMedOuthosps.size());\r\n        Integer i = null;\r\n        for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) {\r\n            //鑾峰彇鎮h�呭熀鏈俊鎭痋r\n            PatArchive patArchive = new PatArchive();\r\n            patArchive.setPatientno(patMedOuthosp1.getPatno());\r\n            List<PatArchive> patArchives = hnGatherPatArchiveMapper.selectPatArchiveList(patArchive);\r\n\r\n            //鏍规嵁patno鍒ゆ柇鏈湴鎮h�呭熀鏈俊鎭槸鍚﹀瓨鍦╘r\n            PatArchive pa = new PatArchive();\r\n            pa.setPatientno(patMedOuthosp1.getPatno());\r\n            List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa);\r\n            if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                patMedOuthosp1.setPatid(patArchives1.get(0).getId());\r\n            } else {\r\n                if (CollectionUtils.isEmpty(patArchives)) {\r\n                    continue;\r\n                }\r\n                patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n                patMedOuthosp1.setPatid(patArchives.get(0).getId());\r\n            }\r\n            i = patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp1);\r\n        }\r\n\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectIcd10List(Icd10 icd10) {\r\n        List<Icd10> icd10s = hnGatherPatArchiveMapper.selectIcd10List(icd10);\r\n        log.info(\"selectIcd10List鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", icd10s.size());\r\n        int i = icd10Mapper.batchIcd10(icd10s);\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectUserList(SysUser sysUser) {\r\n        List<SysUser> sysUserList = hnGatherPatArchiveMapper.selectUserList(sysUser);\r\n        log.info(\"sysUserList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", sysUserList.size());\r\n        int i = sysUser2Mapper.batchUser(sysUserList);\r\n        for (SysUser sysUser1 : sysUserList) {\r\n            log.info(\"sysUser1鐨処D涓猴細{}\", sysUser1.getUserId());\r\n            log.info(\"sysUser1鐨凥ISUSERID涓猴細{}\", sysUser1.getHisUserId());\r\n            //鏂板鐢ㄦ埛涓庤鑹瞈r\n            SysUserRole yhyjsxx = hnGatherPatArchiveMapper.yhyjsxx(sysUser1);\r\n            if (yhyjsxx == null) continue;\r\n            yhyjsxx.setUserId(sysUser1.getUserId());\r\n            List<SysUserRole> userRoleList = new ArrayList<>();\r\n            userRoleList.add(yhyjsxx);\r\n            sysUserRoleMapper.batchUserRole(userRoleList);\r\n\r\n            //鏂板鐢ㄦ埛涓庨儴闂╘r\n            if (StringUtils.isEmpty(sysUser1.getHisUserId())) continue;\r\n            SysUserDept sysUserDept = hnGatherPatArchiveMapper.yhyksxx(sysUser1);\r\n            if (Objects.isNull(sysUserDept) || sysUserDept.getDeptId() == null) continue;\r\n            SysDept dept = new SysDept();\r\n            dept.setHisDeptId(sysUserDept.getDeptId().toString());\r\n            List<SysDept> sysDepts = sysDept2Mapper.selectDeptList(dept);\r\n            if (CollectionUtils.isNotEmpty(sysDepts)) {\r\n                sysUserDept.setDeptId(sysDepts.get(0).getDeptId());\r\n                sysUserDept.setDeptCode(sysDepts.get(0).getDeptCode());\r\n            }\r\n            sysUserDept.setUserId(sysUser1.getUserId());\r\n            sysUserDeptMapper.insertSysUserDept(sysUserDept);\r\n\r\n        }\r\n\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectDeptList(SysDept dept) {\r\n        List<SysDept> sysDepts = hnGatherPatArchiveMapper.selectDeptList(dept);\r\n        log.info(\"selectDeptList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", sysDepts.size());\r\n        int i = sysDept2Mapper.batchDept(sysDepts);\r\n        return i;\r\n    }\r\n\r\n\r\n    /**\r\n     * 妫�鏌ュ苟鎵ц鍒嗚〃鐨勬牳蹇冩柟娉昞r\n     *\r\n     * @param tableName 瑕佹鏌ョ殑琛ㄥ悕\r\n     */\r\n    private synchronized void checkAndShard(String tableName) {\r\n        long currentCount = shardingMapper.getTableCount(tableName);\r\n\r\n        if (currentCount >= SHARDING_THRESHOLD) {\r\n            log.warn(\"琛� '{}' 宸茶揪鍒板垎琛ㄩ槇鍊� {}锛屽噯澶囨墽琛屽垎琛ㄦ搷浣�...\", tableName, SHARDING_THRESHOLD);\r\n\r\n            String newTableName = tableName + \"_\" + java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern(\"yyyy_MM\"));\r\n            Long maxId = shardingMapper.getMaxId(tableName);\r\n            if (maxId == null) maxId = 0L;\r\n\r\n            shardingMapper.renameTable(tableName, newTableName);\r\n            log.info(\"宸插皢琛� '{}' 閲嶅懡鍚嶄负 '{}'\", tableName, newTableName);\r\n\r\n            shardingMapper.createLikeTable(tableName, newTableName);\r\n            log.info(\"宸插垱寤烘柊琛� '{}'\", tableName);\r\n\r\n            shardingMapper.setAutoIncrement(tableName, maxId + 1);\r\n            log.info(\"宸茶缃柊琛� '{}' 鐨勮嚜澧濱D璧峰鍊间负 {}\", tableName, maxId + 1);\r\n\r\n            log.info(\"琛� '{}' 鐨勫垎琛ㄦ搷浣滃畬鎴愶紒\", tableName);\r\n        }\r\n    }\r\n}\r\n\r\n\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/impl/HNGatherPatArchiveServiceImpl.java	(date 1758798202888)
-@@ -157,7 +157,7 @@
-             PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
-             patMedOuthosp.setBeginTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));
-             patMedOuthosp.setEndTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));
--           selectPatMedOuthospList(patMedOuthosp);
-+            selectPatMedOuthospList(patMedOuthosp);
-         }
-         return true;
-     }
-@@ -204,6 +204,9 @@
-     @Override
-     public Integer selectUserList(SysUser sysUser) {
-         List<SysUser> sysUserList = hnGatherPatArchiveMapper.selectUserList(sysUser);
-+        if (CollectionUtils.isEmpty(sysUserList)) return null;
-+
-+
-         log.info("sysUserList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}", sysUserList.size());
-         int i = sysUser2Mapper.batchUser(sysUserList);
-         for (SysUser sysUser1 : sysUserList) {
-@@ -240,7 +243,8 @@
-     public Integer selectDeptList(SysDept dept) {
-         List<SysDept> sysDepts = hnGatherPatArchiveMapper.selectDeptList(dept);
-         log.info("selectDeptList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}", sysDepts.size());
--        int i = sysDept2Mapper.batchDept(sysDepts);
-+        int i = 0;
-+        if (CollectionUtils.isNotEmpty(sysDepts)) i = sysDept2Mapper.batchDept(sysDepts);
-         return i;
-     }
- 
-Index: smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 鎮h�呬綇闄㈣褰曞璞� pat_med_inhosp\r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\n@ApiModel(value = \"PatMedInhosp\", description = \"鎮h�呬綇闄㈣褰曞璞")\r\n@Data\r\npublic class PatMedInhospVO extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 鑷ID\r\n     */\r\n    @ApiModelProperty(value = \"鑷ID\")\r\n    private Long inhospid;\r\n\r\n    /**\r\n     * 鑷ID\r\n     */\r\n    @ApiModelProperty(value = \"鑷ID\")\r\n    private String inhospno;\r\n\r\n    /**\r\n     * 鎶ゅ+ID\r\n     */\r\n    @ApiModelProperty(value = \"鎶ゅ+ID\")\r\n    private String nurseId;\r\n    /**\r\n     * 鎶ゅ+ID\r\n     */\r\n    @ApiModelProperty(value = \"鎿嶄綔浜篒D\")\r\n    private String operatorId;\r\n\r\n    @ApiModelProperty(value = \"鎿嶄綔浜篭")\r\n    private String operator;\r\n\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 鎶ゅ+濮撳悕\r\n     */\r\n    @ApiModelProperty(value = \"鎶ゅ+濮撳悕\")\r\n    private String nurseName;\r\n\r\n    /**\r\n     * 娴佹按鍙穃r\n     */\r\n    @ApiModelProperty(value = \"娴佹按鍙穃")\r\n    private String serialnum;\r\n\r\n    /**\r\n     * 鍖婚櫌鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖婚櫌鍚嶇О\")\r\n    @Excel(name = \" 鍖婚櫌鍚嶇О \")\r\n    private String hospitalname;\r\n\r\n    /**\r\n     * 鍖婚櫌缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍖婚櫌缂栧彿\")\r\n    private String hospitalcode;\r\n\r\n    /**\r\n     * 闄㈠尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"闄㈠尯缂栧彿\")\r\n    private String hospitaldistrictcode;\r\n\r\n    /**\r\n     * 闄㈠尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"闄㈠尯鍚嶇О\")\r\n    @Excel(name = \" 闄㈠尯鍚嶇О \")\r\n    private String hospitaldistrictname;\r\n\r\n    /**\r\n     * 鍏ラ櫌璇婃柇ICD鍊糪r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌璇婃柇ICD鍊糪")\r\n    private String icd10code;\r\n\r\n    /**\r\n     * 鍏ラ櫌璇婃柇鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌璇婃柇鍚嶇О\")\r\n    private String diagname;\r\n\r\n    /**\r\n     * 鍏ラ櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鍏ラ櫌鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date starttime;\r\n\r\n    /**\r\n     * 鍑洪櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鍑洪櫌鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date endtime;\r\n\r\n    /**\r\n     * 鍏ラ櫌绉戝浠g爜\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌绉戝浠g爜\")\r\n    private String deptcode;\r\n\r\n    /**\r\n     * 鍏ラ櫌绉戝鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌绉戝鍚嶇О\")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 鎴块棿鍙穃r\n     */\r\n    @ApiModelProperty(value = \"鎴块棿鍙穃")\r\n    private String roomno;\r\n\r\n    /**\r\n     * 搴婁綅鍙穃r\n     */\r\n    @ApiModelProperty(value = \"搴婁綅鍙穃")\r\n    @Excel(name = \" 搴婁綅鍙� \")\r\n    private String bedNo;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 妗fID\r\n     */\r\n    @ApiModelProperty(value = \"妗fID\")\r\n    private Long patid;\r\n\r\n    /**\r\n     * 鍑洪櫌璇婃柇\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌璇婃柇\")\r\n    @Excel(name = \" 鍑洪櫌璇婃柇 \")\r\n    private String leavediagname;\r\n\r\n    /**\r\n     * 鍑洪櫌璇婃柇ICD鍊糪r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌璇婃柇ICD鍊糪")\r\n    private String leaveicd10code;\r\n\r\n    /**\r\n     * 鍖荤敓宸ュ彿\r\n     */\r\n    @ApiModelProperty(value = \"鍖荤敓宸ュ彿\")\r\n    private String drcode;\r\n\r\n    /**\r\n     * 鍖荤敓鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖荤敓鍚嶇О\")\r\n    @Excel(name = \" 鍖荤敓鍚嶇О \")\r\n    private String drname;\r\n\r\n    /**\r\n     * 鏄惁鐢熸垚鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚鍏ラ櫌 2鐢熸垚鍑洪櫌 9鏃犲尮閰嶆柟妗圽r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鐢熸垚鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚鍏ラ櫌 2鐢熸垚鍑洪櫌 9鏃犲尮閰嶆柟妗圽")\r\n    private Long schemestatus;\r\n\r\n    /**\r\n     * 鏄惁鐢熸垚閫氱敤鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚 9鏃犲尮閰嶆柟妗圽r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鐢熸垚閫氱敤鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚 9鏃犲尮閰嶆柟妗圽")\r\n    private Long generalschemestatus;\r\n\r\n    /**\r\n     * 鍑洪櫌绉戝浠g爜闆嗗悎\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌绉戝浠g爜闆嗗悎\")\r\n    private List<String> leaveldeptcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌绉戝鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌绉戝鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌绉戝鍚嶇О \")\r\n    private String leaveldeptname;\r\n\r\n    /**\r\n     * 鐥呭尯ID\r\n     */\r\n    @ApiModelProperty(value = \"鐥呭尯ID\")\r\n    private String hospitaldistrictid;\r\n\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿闆嗗悎\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯ID\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯ID\")\r\n    private String leavehospitaldistrictid;\r\n\r\n    /**\r\n     * 鍏ラ櫌绉戝ID\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌绉戝ID\")\r\n    private String deptid;\r\n\r\n    /**\r\n     * 鍑洪櫌绉戝ID\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌绉戝ID\")\r\n    private String leaveldeptid;\r\n\r\n    /**\r\n     * 鏂规鐘舵�佹搷浣滄椂闂碶r\n     */\r\n    @ApiModelProperty(value = \"鏂规鐘舵�佹搷浣滄椂闂碶")\r\n    private Date schemetime;\r\n\r\n    /**\r\n     * 鎮h�呭鍚峔r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呭鍚峔")\r\n    private String patname;\r\n\r\n    /**\r\n     * 鎮h�呯紪鍙穃r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呯紪鍙穃")\r\n    private String patno;\r\n\r\n    /**\r\n     * 浣忛櫌鏍囪瘑锛� 0锛氬湪闄�  1锛氬嚭闄�    2锛氳浆绉慭r\n     */\r\n    @ApiModelProperty(value = \"浣忛櫌鏍囪瘑锛� 0锛氬湪闄�  1锛氬嚭闄�    2锛氳浆绉慭")\r\n    private String inhospstate;\r\n\r\n    /**\r\n     * 闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊\r\n     */\r\n    @ApiModelProperty(value = \"闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊\")\r\n    private String checkFlag;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @ApiModelProperty(value = \"骞撮緞\")\r\n    private String age;\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @ApiModelProperty(value = \"鎵嬫満鍙穃")\r\n    private String telcode;\r\n\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @ApiModelProperty(\"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(\"pageSize\")\r\n    private Integer pageSize;\r\n\r\n    /**\r\n     * 寮�濮嬪嚭闄㈡棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"寮�濮嬪嚭闄㈡棩鏈焅")\r\n    private Date startOutHospTime;\r\n\r\n    /**\r\n     * 缁撴潫鍑洪櫌鏃ユ湡\r\n     */\r\n    @ApiModelProperty(value = \"缁撴潫鍑洪櫌鏃ユ湡\")\r\n    private Date endOutHospTime;\r\n\r\n\r\n    /**\r\n     * 寮�濮嬪叆闄㈡棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"寮�濮嬪叆闄㈡棩鏈焅")\r\n    private Date startInHospTime;\r\n\r\n    /**\r\n     * 缁撴潫鍏ラ櫌鏃ユ湡\r\n     */\r\n    @ApiModelProperty(value = \"缁撴潫鍏ラ櫌鏃ユ湡\")\r\n    private Date endInHospTime;\r\n\r\n    /**\r\n     * 缁忕鍖荤敓\r\n     */\r\n    @ApiModelProperty(\"缁忕鍖荤敓\")\r\n    @Excel(name = \" 缁忕鍖荤敓 \")\r\n    private String managementDoctor;\r\n\r\n    /**\r\n     * 缁忕鍖荤敓\r\n     */\r\n    @ApiModelProperty(\"缁忕鍖荤敓\")\r\n    @Excel(name = \" 缁忕鍖荤敓 \")\r\n    private String managementDoctorCode;\r\n}\r\n\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java b/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java
---- a/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/PatMedInhospVO.java	(date 1758798202902)
-@@ -33,6 +33,29 @@
-     @ApiModelProperty(value = "鑷ID")
-     private String inhospno;
- 
-+    /**
-+     * 闅忚鏍囪瘑锛�0涓嶉渶瑕侊紝1闇�瑕�
-+     */
-+    @ApiModelProperty(value = "闅忚鏍囪瘑锛�0涓嶉渶瑕侊紝1闇�瑕�")
-+    private String fuflag;
-+    /**
-+     * 鐤剧梾澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触
-+     */
-+    @ApiModelProperty(value = "鐤剧梾澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触")
-+    private String diagcheckFlag;
-+
-+    /**
-+     *鐥呭尯澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触
-+     */
-+    @ApiModelProperty(value = "鐥呭尯澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触")
-+    private String wardcheckFlag;
-+
-+    /**
-+     * 閮ㄩ棬澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触
-+     */
-+    @ApiModelProperty(value = "閮ㄩ棬澶勭悊锛�0鏈鐞�   1澶勭悊鎴愬姛   2澶勭悊澶辫触")
-+    private String deptcheckFlag;
-+
-     /**
-      * 鎶ゅ+ID
-      */
-Index: smartor/src/main/java/com/smartor/service/IServiceTaskService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport com.smartor.domain.IvrLibaTemplateScriptVO;\r\nimport com.smartor.domain.ServiceSubtask;\r\nimport com.smartor.domain.ServiceTask;\r\nimport com.smartor.domain.SvyLibTemplateScriptVO;\r\n\r\n/**\r\n * 璇煶浠诲姟Service鎺ュ彛\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\npublic interface IServiceTaskService {\r\n    /**\r\n     * 鏌ヨ璇煶浠诲姟\r\n     *\r\n     * @param taskid 璇煶浠诲姟涓婚敭\r\n     * @return 璇煶浠诲姟\r\n     */\r\n    public ServiceTask selectServiceTaskByTaskid(Long taskid);\r\n\r\n    public List<ServiceTask> selectServiceTaskAndtaskDeptList(ServiceTask serviceTask);\r\n\r\n    /**\r\n     * 鏌ヨ璇煶浠诲姟鍒楄〃\r\n     *\r\n     * @param ServiceTask 璇煶浠诲姟\r\n     * @return 璇煶浠诲姟闆嗗悎\r\n     */\r\n    public List<ServiceTask> selectServiceTaskList(ServiceTask ServiceTask);\r\n\r\n    /**\r\n     * 鏂板璇煶浠诲姟\r\n     *\r\n     * @param ServiceTask 璇煶浠诲姟\r\n     * @return 缁撴灉\r\n     */\r\n    public int insertServiceTask(ServiceTask ServiceTask);\r\n\r\n    /**\r\n     * 淇敼璇煶浠诲姟\r\n     *\r\n     * @param ServiceTask 璇煶浠诲姟\r\n     * @return 缁撴灉\r\n     */\r\n    public int updateServiceTask(ServiceTask ServiceTask);\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎璇煶浠诲姟\r\n     *\r\n     * @param taskids 闇�瑕佸垹闄ょ殑璇煶浠诲姟涓婚敭闆嗗悎\r\n     * @return 缁撴灉\r\n     */\r\n    public int deleteServiceTaskByTaskids(Long[] taskids);\r\n\r\n    /**\r\n     * 鍒犻櫎璇煶浠诲姟淇℃伅\r\n     *\r\n     * @param taskid 璇煶浠诲姟涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    public Boolean deleteServiceTaskByTaskid(Long taskid);\r\n\r\n    /**\r\n     * 鑾峰彇闅忚鍙婃椂鐜嘰r\n     */\r\n    public Map<String, Object> selectTimelyRate(ServiceSubtask serviceSubtask);\r\n\r\n    /**\r\n     * @param taskid\r\n     * @param patid\r\n     * @return\r\n     */\r\n    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom);\r\n\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/IServiceTaskService.java b/smartor/src/main/java/com/smartor/service/IServiceTaskService.java
---- a/smartor/src/main/java/com/smartor/service/IServiceTaskService.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/IServiceTaskService.java	(date 1758798202916)
-@@ -77,5 +77,7 @@
-      */
-     public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom);
- 
-+    public Map<String, Object> getScriptByCondition(Long taskid, String zyserialnum, String mzserialnum, String tsserialnum);
-+
- 
- }
-Index: smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥殢璁匡級瀵硅薄 ivr_taskcall\r\n *\r\n * @author ruoyi\r\n * @date 2024-02-02\r\n */\r\n@ApiModel(value = \"ServiceSubtaskVO\", description = \"鍗曚竴闅忚浠诲姟鍏ュ弬\")\r\n@Data\r\npublic class ServiceSubtaskVO extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @ApiModelProperty(value = \"涓婚敭id\")\r\n    private Long subId;\r\n\r\n\r\n    /**\r\n     * 绗笁鏂逛换鍔D\r\n     */\r\n    @ApiModelProperty(value = \"绗笁鏂逛换鍔D\")\r\n    private String taskGuid;\r\n\r\n    /**\r\n     * 闅忚娆℃暟\r\n     */\r\n    @ApiModelProperty(value = \"闅忚娆℃暟\")\r\n    private Integer visitCount;\r\n\r\n    /**\r\n     * 澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡\r\n     */\r\n    @ApiModelProperty(value = \"澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡\")\r\n    private Integer visitNotice;\r\n\r\n    /**\r\n     * 鏄惁鍦ㄦ闅忚锛�1鍚�    2鏄痋r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鍦ㄦ闅忚锛�1鏄�    2鍚")\r\n    private Integer isVisitAgain;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"  鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private String patguid;\r\n\r\n    /**\r\n     * 鍙戦�佷汉\r\n     */\r\n    @Excel(name = \" 鍙戦�佷汉 \")\r\n    @ApiModelProperty(value = \"鍙戦�佷汉\")\r\n    private String sendname;\r\n\r\n    /**\r\n     * 鍙戦�乁UID\r\n     */\r\n    @Excel(name = \" 鍙戦�乁UID \")\r\n    @ApiModelProperty(value = \"鍙戦�乁UID\")\r\n    private String senduuid;\r\n\r\n    /**\r\n     * 鍙戝鐞嗘剰瑙侊細1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫閫乁UID\r\n     */\r\n    @Excel(name = \" 澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫 \")\r\n    @ApiModelProperty(value = \"澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫\")\r\n    private String suggest;\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @Excel(name = \" 鎵嬫満鍙� \")\r\n    @ApiModelProperty(value = \"鎵嬫満鍙穃")\r\n    private String phone;\r\n\r\n    /**\r\n     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婇�氱煡锛�6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡)\r\n     */\r\n    @Excel(name = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)\")\r\n    @ApiModelProperty(value = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)\")\r\n    private String serviceType;\r\n\r\n    /**\r\n     * 鎬у埆\r\n     */\r\n    @Excel(name = \"  鎬у埆\")\r\n    @ApiModelProperty(value = \"鎬у埆\")\r\n    private String sex;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @Excel(name = \" 骞撮緞 \")\r\n    @ApiModelProperty(value = \"骞撮緞\")\r\n    private Long age;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @Excel(name = \" 鍑洪櫌鐥呬汉璁板綍ID \")\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呬汉璁板綍ID\")\r\n    private Long inhospid;\r\n\r\n    /**\r\n     * 韬唤璇佸彿\r\n     */\r\n    @Excel(name = \" 韬唤璇佸彿 \")\r\n    @ApiModelProperty(value = \"韬唤璇佸彿\")\r\n    private String sfzh;\r\n\r\n    /**\r\n     * 鍦板潃\r\n     */\r\n    @Excel(name = \" 鍦板潃 \")\r\n    @ApiModelProperty(value = \"鍦板潃\")\r\n    private String addr;\r\n\r\n    /**\r\n     * 鍙戦�佷汉璇︽儏\r\n     */\r\n    @Excel(name = \"  鍙戦�佷汉璇︽儏\")\r\n    @ApiModelProperty(value = \"鍙戦�佷汉璇︽儏\")\r\n    private String senderdetail;\r\n\r\n    /**\r\n     * 浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)\r\n     */\r\n    @Excel(name = \"浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)\")\r\n    @ApiModelProperty(value = \"浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)\")\r\n    private String type;\r\n\r\n    /**\r\n     * 浠诲姟ID\r\n     */\r\n    @Excel(name = \" 浠诲姟ID \")\r\n    @ApiModelProperty(value = \"浠诲姟ID\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"  妯℃澘ID\")\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private Long templateid;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"  妯$増搴撴ā鏉縄D\")\r\n    @ApiModelProperty(value = \"妯$増搴撴ā鏉縄D\")\r\n    private Long libtemplateid;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"  妯℃澘搴撴ā鏉垮悕绉癨")\r\n    @ApiModelProperty(value = \"妯℃澘搴撴ā鏉垮悕绉癨")\r\n    private String libtemplatename;\r\n\r\n    /**\r\n     * 妯℃澘鍚峔r\n     */\r\n    @Excel(name = \" 妯℃澘鍚� \")\r\n    @ApiModelProperty(value = \"妯℃澘鍚峔")\r\n    private String templatename;\r\n\r\n    /**\r\n     * 鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦�乗r\n     */\r\n    @ApiModelProperty(value = \"鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鍗冲埢鍙戦�乗")\r\n    private String sendType;\r\n\r\n    /**\r\n     * 鍑洪櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿\")\r\n    private Date inhosptime;\r\n\r\n    /**\r\n     * 鍖荤敓缂栫爜\r\n     */\r\n    @Excel(name = \"  鍖荤敓缂栫爜\")\r\n    @ApiModelProperty(value = \"鍖荤敓缂栫爜\")\r\n    private String drcode;\r\n\r\n    /**\r\n     * 鍖荤敓濮撳悕\r\n     */\r\n    @Excel(name = \"  鍖荤敓濮撳悕\")\r\n    @ApiModelProperty(value = \"鍖荤敓濮撳悕\")\r\n    private String drname;\r\n\r\n\r\n    /**\r\n     * 鍙戦�佹棩鏈焅r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鍙戦�佹棩鏈� \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"鍙戦�佹棩鏈焅")\r\n    private Date senddate;\r\n\r\n    /**\r\n     * 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitabegin;\r\n\r\n    /**\r\n     * 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitaend;\r\n\r\n    /**\r\n     * 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitpbegin;\r\n\r\n    /**\r\n     * 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitpend;\r\n\r\n    /**\r\n     * 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitnbegin;\r\n\r\n    /**\r\n     * 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitnend;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬乗r\n     */\r\n    @Excel(name = \" 鍙戦�佺姸鎬� \")\r\n    @ApiModelProperty(value = \"鍙戦�佺姸鎬� : 1鏂板缓 2鎵ц涓� 3鏆傚仠 4缁堟 5瀹屾垚\")\r\n    private Long sendstate;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬乗r\n     */\r\n    @Excel(name = \" 鍙戦�佺姸鎬侀泦鍚� \")\r\n    @ApiModelProperty(value = \"鍙戦�佺姸鎬� : 1鏂板缓 2鎵ц涓� 3鏆傚仠 4缁堟 5瀹屾垚\")\r\n    private List<Long> sendstates;\r\n\r\n\r\n    /**\r\n     * 缁撴灉\r\n     */\r\n    @Excel(name = \" 缁撴灉 \")\r\n    @ApiModelProperty(value = \"缁撴灉\")\r\n    private String result;\r\n\r\n    /**\r\n     * 瀹屾垚鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 瀹屾垚鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"瀹屾垚鏃堕棿\")\r\n    private Date finishtime;\r\n\r\n\r\n    /**\r\n     * 灏辫瘖璁板綍缂栧彿\r\n     */\r\n    @Excel(name = \" 灏辫瘖璁板綍缂栧彿 \")\r\n    @ApiModelProperty(value = \"灏辫瘖璁板綍缂栧彿\")\r\n    private Long recordid;\r\n\r\n\r\n    /**\r\n     * 褰撳墠閲嶆嫧娆℃暟\r\n     */\r\n    @Excel(name = \" 褰撳墠閲嶆嫧娆℃暟 \")\r\n    @ApiModelProperty(value = \"褰撳墠閲嶆嫧娆℃暟\")\r\n    private Long exrecallcount;\r\n\r\n    /**\r\n     * 鎷夊彇鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鎷夊彇鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"鎷夊彇鏃堕棿\")\r\n    private Date pulltime;\r\n\r\n    /**\r\n     *\r\n     */\r\n    @Excel(name = \" bqsms \")\r\n    @ApiModelProperty(value = \"bqsms\")\r\n    private Long bqsms;\r\n\r\n    /**\r\n     * bhsms\r\n     */\r\n    @Excel(name = \" bhsms \")\r\n    @ApiModelProperty(value = \"bhsms\")\r\n    private Long bhsms;\r\n\r\n    /**\r\n     * 閮ㄩ棬code\r\n     */\r\n    @Excel(name = \"  閮ㄩ棬code\")\r\n    @ApiModelProperty(value = \"閮ㄩ棬code\")\r\n    private String deptcode;\r\n    /**\r\n     * 閮ㄩ棬code\r\n     */\r\n    @Excel(name = \"  閮ㄩ棬code\")\r\n    @ApiModelProperty(value = \"閮ㄩ棬code闆嗗悎\")\r\n    private List<String> leaveldeptcodes;\r\n\r\n    /**\r\n     * 鏍囩鐘舵�乗r\n     */\r\n    @Excel(name = \"  鏍囩鐘舵�乗")\r\n    @ApiModelProperty(value = \"鏍囩鐘舵�乗")\r\n    private Long labelstatus;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private String patientid;\r\n\r\n    /**\r\n     * 鎮h�呭鍚峔r\n     */\r\n    @Excel(name = \"鎮h�呭鍚峔")\r\n    @ApiModelProperty(value = \"鎮h�呭鍚峔")\r\n    private String patientname;\r\n\r\n    /**\r\n     * 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\r\n     */\r\n    @Excel(name = \" 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\")\r\n    @ApiModelProperty(value = \"闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\")\r\n    private Date longSendTime;\r\n\r\n    /**\r\n     * openid\r\n     */\r\n    @Excel(name = \"openid\")\r\n    @ApiModelProperty(value = \"openid\")\r\n    private String openid;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @Excel(name = \"鐖禝D\")\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private Long pid;\r\n\r\n    /**\r\n     * GUID\r\n     */\r\n    @Excel(name = \"GUID\")\r\n    @ApiModelProperty(value = \"GUID\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n    /**\r\n     * 鏂囨湰鍙橀噺鍙傛暟\r\n     */\r\n    @Excel(name = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    private Map<String, Map<String, String>> textParam;\r\n\r\n\r\n    /**\r\n     * 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚圽r\n     */\r\n    @Excel(name = \" 瀹f暀褰㈠紡 :鏂囨湰銆佸浘鐗囥�佽闊炽�佽棰戙�佹贩鍚圽")\r\n    @ApiModelProperty(value = \"瀹f暀褰㈠紡 : 1,鏂囨湰銆�2,鍥剧墖銆�3,璇煶銆�4,瑙嗛銆�5,娣峰悎\")\r\n    private String preachform;\r\n\r\n\r\n    /**\r\n     * 搴婂彿\r\n     */\r\n    @Excel(name = \"搴婂彿\")\r\n    @ApiModelProperty(value = \"搴婂彿\")\r\n    private Long bedNo;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"  鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private Long patid;\r\n\r\n    /**\r\n     * 鍙戦�佹椂闂存\r\n     */\r\n    @ApiModelProperty(value = \"鍙戦�佹椂闂存 \")\r\n    private List<TaskSendTimeVO> sendTimeslot;\r\n\r\n    /**\r\n     * 浠诲姟鍚嶇О\r\n     */\r\n    @Excel(name = \"浠诲姟鍚嶇О\")\r\n    @ApiModelProperty(value = \"浠诲姟鍚嶇О\")\r\n    private String taskName;\r\n\r\n    /**\r\n     * 浠诲姟鎻忚堪\r\n     */\r\n    @Excel(name = \"浠诲姟鎻忚堪\")\r\n    @ApiModelProperty(value = \"浠诲姟鎻忚堪\")\r\n    private String taskDesc;\r\n\r\n\r\n    /**\r\n     * 闅忚浜篭r\n     */\r\n    @Excel(name = \"  闅忚浜�  \")\r\n    @ApiModelProperty(value = \"闅忚浜篭")\r\n    private String operator;\r\n\r\n    /**\r\n     * 闅忚浜篭r\n     */\r\n    @Excel(name = \"  闅忚浜虹紪鍙�  \")\r\n    @ApiModelProperty(value = \"闅忚浜虹紪鍙穃")\r\n    private String operatorNo;\r\n\r\n\r\n    /**\r\n     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�  \")\r\n    @ApiModelProperty(value = \"灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡")\r\n    private String hospno;\r\n\r\n    /**\r\n     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌   3.涓撶梾锛塡")\r\n    @ApiModelProperty(value = \"灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌   3.涓撶梾锛塡")\r\n    private String hospType;\r\n\r\n    /**\r\n     * 寰俊\r\n     */\r\n    @Excel(name = \"  寰俊\")\r\n    @ApiModelProperty(value = \"寰俊\")\r\n    private String wechat;\r\n\r\n\r\n    /**\r\n     * 璇婃柇鍚嶇О\r\n     */\r\n    @Excel(name = \"  璇婃柇鍚嶇О\")\r\n    @ApiModelProperty(value = \"璇婃柇鍚嶇О\")\r\n    private String diagname;\r\n\r\n    /**\r\n     * 绉戝鍚嶇О\r\n     */\r\n    @Excel(name = \"绉戝鍚嶇О\")\r\n    @ApiModelProperty(value = \"绉戝鍚嶇О\")\r\n    private String deptname;\r\n//\r\n//    /**\r\n//     * 灏辫瘖鏃ユ湡\r\n//     */\r\n//    @Excel(name = \" 灏辫瘖鏃ユ湡\")\r\n//    @ApiModelProperty(value = \"灏辫瘖鏃ユ湡\")\r\n//    private Date admindate;\r\n//\r\n    /**\r\n     * 鐥呮埧鍙穃r\n     */\r\n    @Excel(name = \"  鐥呮埧鍙穃")\r\n    @ApiModelProperty(value = \"鐥呮埧鍙穃")\r\n    private String roomno;\r\n\r\n    /**\r\n     * 鎬诲垎\r\n     */\r\n    @Excel(name = \"鎬诲垎\")\r\n    @ApiModelProperty(value = \"鎬诲垎\")\r\n    private Long score;\r\n\r\n\r\n    /**\r\n     * 鏄惁鎻愪氦\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鎻愪氦锛�0鏈彁浜�   1宸叉彁浜")\r\n    private Long submit;\r\n\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿\")\r\n    private String leavehospitaldistrictcode;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯闆嗗悎\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 璇婃柇鍚嶇О\r\n     */\r\n    @Excel(name = \"  绂婚櫌璇婃柇鍚嶇О\")\r\n    @ApiModelProperty(value = \"绂婚櫌璇婃柇鍚嶇О\")\r\n    private String leavediagname;\r\n\r\n    /**\r\n     * 璐d换鎶ゅ+缂栫爜\r\n     */\r\n    @Excel(name = \"璐d换鎶ゅ+缂栫爜\")\r\n    @ApiModelProperty(\"璐d换鎶ゅ+缂栫爜\")\r\n    private String nurseId;\r\n\r\n    /**\r\n     * 璐d换鎶ゅ+濮撳悕\r\n     */\r\n    @Excel(name = \"璐d换鎶ゅ+濮撳悕\")\r\n    @ApiModelProperty(\"璐d换鎶ゅ+濮撳悕\")\r\n    private String nurseName;\r\n\r\n    /**\r\n     * 寮傚父鏍囪瘑\r\n     */\r\n    @ApiModelProperty(value = \"寮傚父鏍囪瘑\")\r\n    @Excel(name = \" 寮傚父鏍囪瘑 \")\r\n    private String excep;\r\n\r\n    /**\r\n     * 澶囨敞\r\n     */\r\n    @ApiModelProperty(value = \"澶囨敞\")\r\n    private String remark;\r\n\r\n\r\n    /**\r\n     * 鍑洪櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date endtime;\r\n\r\n    /**\r\n     * 鍏ラ櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date starttime;\r\n\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @Excel(name = \"pageNum\")\r\n    @ApiModelProperty(value = \"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @Excel(name = \"pageSize\")\r\n    @ApiModelProperty(value = \"pageSize\")\r\n    private Integer pageSize;\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呮潵婧愶細0鏈湴鎮h�呰〃    1澶栭儴鎮h�呰〃\")\r\n    private String patfrom;\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"缁忕鍖荤敓缂栫爜\")\r\n    private String managementDoctorCode;\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"缁忕鍖荤敓\")\r\n    private String managementDoctor;\r\n\r\n    /**\r\n     * 寮�濮嬪嚭闄㈡棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"寮�濮嬪嚭闄㈡棩鏈焅")\r\n    private Date startOutHospTime;\r\n\r\n    /**\r\n     * 寮�濮嬪彂閫佹棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"寮�濮嬪彂閫佹棩鏈焅")\r\n    private Date startSendDateTime;\r\n\r\n    /**\r\n     * 缁撴潫鍙戦�佹棩鏈焅r\n     */\r\n    @ApiModelProperty(value = \"缁撴潫鍙戦�佹棩鏈焅")\r\n    private Date endSendDateTime;\r\n\r\n    /**\r\n     * 缁撴潫鍑洪櫌鏃ユ湡\r\n     */\r\n    @ApiModelProperty(value = \"缁撴潫鍑洪櫌鏃ユ湡\")\r\n    private Date endOutHospTime;\r\n\r\n    /**\r\n     * 绉戝涓庣梾鍖虹殑鏌ヨ鏄痮r杩樻槸and:   1:and(榛樿)     2:or\r\n     */\r\n    @ApiModelProperty(value = \"绉戝涓庣梾鍖虹殑鏌ヨ鏄痮r杩樻槸and:   1:and(榛樿)     2:or  \")\r\n    private String deptOrDistrict = \"1\";\r\n\r\n    /**\r\n     * 鍒涘缓寮�濮嬫椂闂碶r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date createStartTime;\r\n\r\n    /**\r\n     * 鍒涘缓缁撴潫鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date createEndTime;\r\n\r\n    /**\r\n     * 鎺掑簭锛堬級\r\n     */\r\n    @ApiModelProperty(value = \"鎺掑簭锛�0 鍑洪櫌鏃堕棿(姝e簭)    1 鍑洪櫌鏃堕棿(鍊掑簭)   2 鍙戦�佹椂闂�(姝e簭)    3 鍙戦�佹椂闂�(鍊掑簭) \")\r\n    private Integer sort;\r\n\r\n\r\n    /**\r\n     * 鎮h�呬笂娆¢殢璁跨殑subId\r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呬笂娆¢殢璁跨殑subId\")\r\n    private Integer upid;\r\n\r\n    @ApiModelProperty(value = \"闅忚鏃堕棿\")\r\n    private Date visitTime;\r\n\r\n    /**\r\n     * 闅忚鏂瑰紡\r\n     */\r\n    @ApiModelProperty(value = \"闅忚鏂瑰紡\")\r\n    private String visitType;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬缂栫爜\")\r\n    private String visitDeptCode;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬鍚嶇О\")\r\n    private String visitDeptName;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬缂栫爜闆嗗悎\")\r\n    private List<String> visitDeptCodes;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskVO.java	(date 1758798202929)
-@@ -260,14 +260,14 @@
-      * 鍙戦�佺姸鎬�
-      */
-     @Excel(name = " 鍙戦�佺姸鎬� ")
--    @ApiModelProperty(value = "鍙戦�佺姸鎬� : 1鏂板缓 2鎵ц涓� 3鏆傚仠 4缁堟 5瀹屾垚")
-+    @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴�")
-     private Long sendstate;
- 
-     /**
-      * 鍙戦�佺姸鎬�
-      */
-     @Excel(name = " 鍙戦�佺姸鎬侀泦鍚� ")
--    @ApiModelProperty(value = "鍙戦�佺姸鎬� : 1鏂板缓 2鎵ц涓� 3鏆傚仠 4缁堟 5瀹屾垚")
-+    @ApiModelProperty(value = "鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴�")
-     private List<Long> sendstates;
- 
- 
-@@ -435,6 +435,13 @@
-     @ApiModelProperty(value = "瀹f暀褰㈠紡 : 1,鏂囨湰銆�2,鍥剧墖銆�3,璇煶銆�4,瑙嗛銆�5,娣峰悎")
-     private String preachform;
- 
-+    /**
-+     * 褰撳墠鍙戦�佹柟寮�
-+     */
-+    @Excel(name = " 褰撳墠鍙戦�佹柟寮�")
-+    @ApiModelProperty(value = "褰撳墠鍙戦�佹柟寮�")
-+    private String currentPreachform;
-+
- 
-     /**
-      * 搴婂彿
-Index: smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.SysUserDeptMapper\">\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysUserDept\" id=\"SysUserDeptResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"userId\" column=\"user_id\"/>\r\n        <result property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"deptType\" column=\"dept_type\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n    </resultMap>\r\n\r\n    <resultMap id=\"deptResult\" type=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        <id property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"parentId\" column=\"parent_id\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"ancestors\" column=\"ancestors\"/>\r\n        <result property=\"orderNum\" column=\"order_num\"/>\r\n        <result property=\"leader\" column=\"leader\"/>\r\n        <result property=\"status\" column=\"dept_status\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectSysUserDeptVo\">\r\n        select id,\r\n               user_id,\r\n               dept_id,\r\n               del_flag,\r\n               orgid,\r\n               create_time,\r\n               update_time,\r\n               dept_code,\r\n               dept_name,\r\n               dept_type\r\n        from sys_user_dept\r\n    </sql>\r\n\r\n    <select id=\"selectSysUserDeptList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUserDept\"\r\n            resultMap=\"SysUserDeptResult\">\r\n        <include refid=\"selectSysUserDeptVo\"/>\r\n        <where>\r\n            del_flag=0\r\n            and orgid=#{orgid}\r\n            <if test=\"userId != null \">\r\n                and user_id = #{userId}\r\n            </if>\r\n            <if test=\"deptId != null \">\r\n                and dept_id = #{deptId}\r\n            </if>\r\n            <if test=\"delFlag != null \">\r\n                and del_flag = #{delFlag}\r\n            </if>\r\n            <if test=\"createTime != null \">\r\n                and create_time = #{createTime}\r\n            </if>\r\n            <if test=\"updateTime != null \">\r\n                and update_time = #{updateTime}\r\n            </if>\r\n            <if test=\"deptType != null \">\r\n                and dept_type = #{deptType}\r\n            </if>\r\n            <if test=\"deptCode != null \">\r\n                and dept_code = #{deptCode}\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectSysUserDeptById\" parameterType=\"Long\"\r\n            resultMap=\"SysUserDeptResult\">\r\n        <include refid=\"selectSysUserDeptVo\"/>\r\n        where id = #{id}\r\n    </select>\r\n\r\n    <insert id=\"insertSysUserDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUserDept\"\r\n            useGeneratedKeys=\"true\" keyProperty=\"id\">\r\n        insert into sys_user_dept\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"userId != null\">user_id,\r\n            </if>\r\n            <if test=\"deptId != null\">dept_id,\r\n            </if>\r\n            <if test=\"delFlag != null \">\r\n                del_flag,\r\n            </if>\r\n            <if test=\"createTime != null \">\r\n                create_time,\r\n            </if>\r\n            <if test=\"updateTime != null \">\r\n                update_time,\r\n            </if>\r\n            <if test=\"deptType != null \">\r\n                dept_type,\r\n            </if>\r\n            <if test=\"deptCode != null \">\r\n                dept_code,\r\n            </if>\r\n            <if test=\"deptName != null \">\r\n                dept_name,\r\n            </if>\r\n            <if test=\"orgid != null \">\r\n                orgid,\r\n            </if>\r\n            <if test=\"userCode != null \">\r\n                user_code,\r\n            </if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"userId != null\">#{userId},\r\n            </if>\r\n            <if test=\"deptId != null\">#{deptId},\r\n            </if>\r\n            <if test=\"delFlag != null \">\r\n                #{delFlag},\r\n            </if>\r\n            <if test=\"createTime != null \">\r\n                #{createTime},\r\n            </if>\r\n            <if test=\"updateTime != null \">\r\n                #{updateTime},\r\n            </if>\r\n            <if test=\"deptType != null \">\r\n                #{deptType},\r\n            </if>\r\n            <if test=\"deptCode != null \">\r\n                #{deptCode},\r\n            </if>\r\n            <if test=\"deptName != null \">\r\n                #{deptName},\r\n            </if>\r\n            <if test=\"orgid != null \">\r\n                #{orgid},\r\n            </if>\r\n            <if test=\"userCode != null \">\r\n                #{userCode},\r\n            </if>\r\n        </trim>\r\n    </insert>\r\n\r\n    <update id=\"updateSysUserDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUserDept\">\r\n        update sys_user_dept\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"userId != null\">user_id =\r\n                #{userId},\r\n            </if>\r\n            <if test=\"deptId != null\">dept_id =\r\n                #{deptId},\r\n            </if>\r\n            <if test=\"delFlag != null \">\r\n                del_flag = #{delFlag},\r\n            </if>\r\n            <if test=\"createTime != null \">\r\n                create_time = #{createTime},\r\n            </if>\r\n            <if test=\"updateTime != null \">\r\n                update_time = #{updateTime},\r\n            </if>\r\n            <if test=\"deptType != null \">\r\n                dept_type = #{deptType},\r\n            </if>\r\n            <if test=\"deptCode != null \">\r\n                dept_code = #{deptCode},\r\n            </if>\r\n            <if test=\"deptName != null \">\r\n                dept_name = #{deptName},\r\n            </if>\r\n            <if test=\"orgid != null \">\r\n                orgid = #{orgid},\r\n            </if>\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <update id=\"deleteSysUserDeptById\" parameterType=\"Long\">\r\n        update sys_user_dept\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <select id=\"selectDeptListByUserId\" resultMap=\"deptResult\">\r\n        select d.dept_id,\r\n               d.dept_name,\r\n               d.parent_id,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.orgid,\r\n               d.status as dept_status\r\n        from sys_dept d\r\n                 left join sys_user_dept ud on d.dept_id = ud.dept_id\r\n        where ud.user_id = #{userId}\r\n          and ud.del_flag = 0\r\n          and d.del_flag = 0\r\n    </select>\r\n    <update id=\"deleteSysUserDeptByIds\" parameterType=\"String\">\r\n        update sys_user_dept\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1,\r\n            update_time = sysdate()\r\n        </trim>\r\n        where user_id in\r\n        <foreach item=\"id\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{id}\r\n        </foreach>\r\n    </update>\r\n\r\n\r\n    <update id=\"deleteSysUserDeptByCode\" parameterType=\"String\">\r\n        update sys_user_dept\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1,\r\n            update_time = sysdate()\r\n        </trim>\r\n        where user_id =#{userId} and dept_code=#{deptCode}\r\n    </update>\r\n\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml b/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/resources/mapper/smartor/SysUserDeptMapper.xml	(date 1758798202945)
-@@ -195,7 +195,7 @@
-                d.orgid,
-                d.status as dept_status
-         from sys_dept d
--                 left join sys_user_dept ud on d.dept_id = ud.dept_id
-+                 left join sys_user_dept ud on d.dept_code = ud.dept_code
-         where ud.user_id = #{userId}
-           and ud.del_flag = 0
-           and d.del_flag = 0
-Index: ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.system.service;\r\n\r\nimport java.util.List;\r\nimport com.ruoyi.system.domain.SysConfig;\r\n\r\n/**\r\n * 鍙傛暟閰嶇疆 鏈嶅姟灞俓r\n * \r\n * @author ruoyi\r\n */\r\npublic interface ISysConfigService\r\n{\r\n    /**\r\n     * 鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     * \r\n     * @param configId 鍙傛暟閰嶇疆ID\r\n     * @return 鍙傛暟閰嶇疆淇℃伅\r\n     */\r\n    public SysConfig selectConfigById(Long configId);\r\n\r\n    /**\r\n     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     * \r\n     * @param configKey 鍙傛暟閿悕\r\n     * @return 鍙傛暟閿�糪r\n     */\r\n    public String selectConfigByKey(String configKey);\r\n\r\n    /**\r\n     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     *\r\n     * @param configKey 鍙傛暟閿悕\r\n     * @return 鍙傛暟閿�糪r\n     */\r\n    public String selectConfigByKey(String configKey,String orgid);\r\n\r\n    /**\r\n     * 鑾峰彇楠岃瘉鐮佸紑鍏砛r\n     * \r\n     * @return true寮�鍚紝false鍏抽棴\r\n     */\r\n    public boolean selectCaptchaEnabled();\r\n\r\n    /**\r\n     * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 鍙傛暟閰嶇疆闆嗗悎\r\n     */\r\n    public List<SysConfig> selectConfigList(SysConfig config);\r\n\r\n    /**\r\n     * 鏂板鍙傛暟閰嶇疆\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public int insertConfig(SysConfig config);\r\n\r\n    /**\r\n     * 淇敼鍙傛暟閰嶇疆\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public int updateConfig(SysConfig config);\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鍙傛暟淇℃伅\r\n     * \r\n     * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID\r\n     */\r\n    public void deleteConfigByIds(Long[] configIds);\r\n\r\n    /**\r\n     * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    public void loadingConfigCache();\r\n\r\n    /**\r\n     * 娓呯┖鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    public void clearConfigCache();\r\n\r\n    /**\r\n     * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    public void resetConfigCache();\r\n\r\n    /**\r\n     * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴\r\n     * \r\n     * @param config 鍙傛暟淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    public String checkConfigKeyUnique(SysConfig config);\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
---- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java	(date 1758798202958)
-@@ -5,14 +5,14 @@
- 
- /**
-  * 鍙傛暟閰嶇疆 鏈嶅姟灞�
-- * 
-+ *
-  * @author ruoyi
-  */
- public interface ISysConfigService
- {
-     /**
-      * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
--     * 
-+     *
-      * @param configId 鍙傛暟閰嶇疆ID
-      * @return 鍙傛暟閰嶇疆淇℃伅
-      */
-@@ -20,30 +20,24 @@
- 
-     /**
-      * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
--     * 
-+     *
-      * @param configKey 鍙傛暟閿悕
-      * @return 鍙傛暟閿��
-      */
-     public String selectConfigByKey(String configKey);
- 
--    /**
--     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
--     *
--     * @param configKey 鍙傛暟閿悕
--     * @return 鍙傛暟閿��
--     */
--    public String selectConfigByKey(String configKey,String orgid);
--
-     /**
-      * 鑾峰彇楠岃瘉鐮佸紑鍏�
--     * 
-+     *
-      * @return true寮�鍚紝false鍏抽棴
-      */
-     public boolean selectCaptchaEnabled();
- 
-+    public String selectConfigByKey(String configKey,String orgid);
-+
-     /**
-      * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 鍙傛暟閰嶇疆闆嗗悎
-      */
-@@ -51,7 +45,7 @@
- 
-     /**
-      * 鏂板鍙傛暟閰嶇疆
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 缁撴灉
-      */
-@@ -59,7 +53,7 @@
- 
-     /**
-      * 淇敼鍙傛暟閰嶇疆
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 缁撴灉
-      */
-@@ -67,7 +61,7 @@
- 
-     /**
-      * 鎵归噺鍒犻櫎鍙傛暟淇℃伅
--     * 
-+     *
-      * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID
-      */
-     public void deleteConfigByIds(Long[] configIds);
-@@ -89,7 +83,7 @@
- 
-     /**
-      * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴
--     * 
-+     *
-      * @param config 鍙傛暟淇℃伅
-      * @return 缁撴灉
-      */
-Index: smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.alibaba.fastjson.JSON;\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\nimport org.apache.commons.lang3.builder.ToStringBuilder;\r\nimport org.apache.commons.lang3.builder.ToStringStyle;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 鎸囨爣搴撳璞¤繑鍙� IvrLibaTargetVO\r\n *\r\n * @author ruoyi\r\n * @date 2023-12-14\r\n */\r\n@Data\r\n@ApiModel(value = \"IvrLibaTargetVO\", description = \"鎸囨爣搴撳璞¤繑鍙俓")\r\npublic class IvrLibaTargetVO  extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * $column.columnComment\r\n     */\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 鍒嗙粍ID\r\n     */\r\n    @Excel(name = \"鍒嗙粍ID\")\r\n    @ApiModelProperty(value = \"鍒嗙粍ID\")\r\n    private String groupid;\r\n\r\n    /**\r\n     * 閫傜敤棰樺瀷(鍗曢�夈�佸閫夈�佸煷绌恒�佺粍鍚�)\r\n     */\r\n    @Excel(name = \"閫傜敤棰樺瀷(鍗曢�夈�佸閫夈�佸煷绌恒�佺粍鍚�)\")\r\n    @ApiModelProperty(value = \"閫傜敤棰樺瀷(鍗曢�夈�佸閫夈�佸煷绌恒�佺粍鍚�)\")\r\n    private String scriptType;\r\n\r\n    /**\r\n     * 鎸囨爣绫诲瀷\r\n     */\r\n    @Excel(name = \"鎸囨爣绫诲瀷\")\r\n    @ApiModelProperty(value = \"鎸囨爣绫诲瀷\")\r\n    private String targettype;\r\n\r\n    /**\r\n     * 鎸囨爣鍚嶇О\r\n     */\r\n    @Excel(name = \"鎸囨爣鍚嶇О\")\r\n    @ApiModelProperty(value = \"鎸囨爣鍚嶇О\")\r\n    private String targetname;\r\n\r\n    /**\r\n     * 鎸囨爣鎻忚堪\r\n     */\r\n    @Excel(name = \"鎸囨爣鎻忚堪\")\r\n    @ApiModelProperty(value = \"鎸囨爣鎻忚堪\")\r\n    private String targetdesc;\r\n\r\n    /**\r\n     * 璇█\r\n     */\r\n    @Excel(name = \"璇█\")\r\n    @ApiModelProperty(value = \"璇█\")\r\n    private String language;\r\n\r\n    /**\r\n     * 鐗堟湰\r\n     */\r\n    @Excel(name = \"鐗堟湰\")\r\n    @ApiModelProperty(value = \"鐗堟湰\")\r\n    private String version;\r\n\r\n    /**\r\n     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級\r\n     */\r\n    @ApiModelProperty(value = \"鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級\")\r\n    @Excel(name = \"鍊肩被鍨媆", readConverterExp = \"1=閫夐」,2鏂囨湰,3鏁板�糪")\r\n    private Long valueType;\r\n\r\n    /**\r\n     * 鏄惁寮傚父鏍囪瘑\r\n     */\r\n    @Excel(name = \"鏄惁寮傚父鏍囪瘑\")\r\n    @ApiModelProperty(value = \"鏄惁寮傚父鏍囪瘑\")\r\n    private Long isabnormal;\r\n\r\n    /**\r\n     * 棰勮闃�鍊间笂闄怽r\n     */\r\n    @Excel(name = \"棰勮闃�鍊间笂闄怽")\r\n    @ApiModelProperty(value = \"棰勮闃�鍊间笂闄怽")\r\n    private Long warnup;\r\n\r\n    /**\r\n     * 棰勮闃�鍊间笅闄怽r\n     */\r\n    @Excel(name = \"棰勮闃�鍊间笅闄怽")\r\n    @ApiModelProperty(value = \"棰勮闃�鍊间笅闄怽")\r\n    private Long warndown;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @Excel(name = \"鐖禝D\")\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private Long pid;\r\n\r\n    /**\r\n     * GUID\r\n     */\r\n    @Excel(name = \"GUID\")\r\n    @ApiModelProperty(value = \"GUID\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 鍒嗙被id\r\n     */\r\n    @Excel(name = \"鍒嗙被id\")\r\n    @ApiModelProperty(value = \"鍒嗙被id\")\r\n    private Long assortid;\r\n\r\n    /**\r\n     * 鏄惁鍙敤\r\n     */\r\n    @Excel(name = \"鏄惁鍙敤\")\r\n    @ApiModelProperty(value = \"鏄惁鍙敤\")\r\n    private String isAvailable;\r\n\r\n    /**\r\n     * 閫傜敤鐤剧梾\r\n     */\r\n    @Excel(name = \"閫傜敤鐤剧梾\")\r\n    @ApiModelProperty(value = \"閫傜敤鐤剧梾\")\r\n    private String suitDisease;\r\n\r\n\r\n    /**\r\n     * 閫傜敤鏂瑰紡\r\n     */\r\n    @Excel(name = \"閫傜敤鏂瑰紡\")\r\n    @ApiModelProperty(value = \"閫傜敤鏂瑰紡\")\r\n    private String suitWay;\r\n\r\n    @Excel(name = \"閫傜敤鏂瑰紡(澶氶��)\")\r\n    @ApiModelProperty(value = \"閫傜敤鏂瑰紡(澶氶��)\")\r\n    private List<String> suitWayList;\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @ApiModelProperty(value = \"pageNum\")\r\n    @Excel(name = \"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(value = \"pageSize\")\r\n    @Excel(name = \"pageSize\")\r\n    private Integer pageSize;\r\n\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n    /**\r\n     * 鍙傛暟鍙橀噺\r\n     */\r\n    @ApiModelProperty(\"鍙傛暟鍙橀噺\")\r\n    @Excel(name = \"鍙傛暟鍙橀噺\")\r\n    private String parameter;\r\n\r\n    @ApiModelProperty(value = \"鎸囨爣閫夐」闆嗗悎\")\r\n    private List<IvrLibaTargetoption> targetoptionList = new ArrayList<>();\r\n\r\n    @ApiModelProperty(value = \"鏍囩闆嗗悎\")\r\n    private List<IvrLibaTargetTag> ivrLibaTargetTagList = new ArrayList<>();\r\n\r\n    @ApiModelProperty(value = \"鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛塡")\r\n    private String reply;\r\n\r\n    /**\r\n     * 璇磋瘽鍐呭\r\n     */\r\n    @Excel(name = \"璇磋瘽鍐呭\")\r\n    @ApiModelProperty(value = \"璇磋瘽鍐呭\")\r\n    private String content;\r\n\r\n    @ApiModelProperty(value = \"鐢ㄤ簬鏌ヨ鏍囩鐨勶紝涓嶇敤浜庡瓨鏁版嵁\")\r\n    private String optionDesc;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java
---- a/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/IvrLibaTargetVO.java	(date 1758798202973)
-@@ -90,8 +90,8 @@
-     /**
-      * 鏄惁寮傚父鏍囪瘑
-      */
--    @Excel(name = "鏄惁寮傚父鏍囪瘑")
--    @ApiModelProperty(value = "鏄惁寮傚父鏍囪瘑")
-+    @Excel(name = "鏄惁寮傚父鏍囪瘑  0缁胯壊锛�1绾㈣壊锛�2榛勮壊锛�")
-+    @ApiModelProperty(value = "鏄惁寮傚父鏍囪瘑   0缁胯壊锛�1绾㈣壊锛�2榛勮壊锛�")
-     private Long isabnormal;
- 
-     /**
-Index: smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.google.gson.Gson;\r\nimport com.google.gson.reflect.TypeToken;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.http.HttpUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.PatMedOuthospMapper;\r\nimport com.smartor.mapper.SysUser2Mapper;\r\nimport com.smartor.mapper.SysUserImportMapper;\r\nimport com.smartor.service.IPatArchiveService;\r\nimport com.smartor.service.IPatMedInhospService;\r\nimport com.smartor.service.IServiceSLTDHealthcareRecordService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.lang.reflect.Array;\r\nimport java.lang.reflect.Type;\r\nimport java.text.ParseException;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.*;\r\n\r\n@Slf4j\r\n@Service\r\npublic class ServiceSLTDHealthcareRecordServiceImpl implements IServiceSLTDHealthcareRecordService {\r\n\r\n    private static final String DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\r\n    private static final String APP_KEY = \"ak-zUMiOWhqXiJQWPB1pCbz0pjr\";\r\n\r\n    @Autowired\r\n    private IPatArchiveService patArchiveService;\r\n\r\n    @Autowired\r\n    private IPatMedInhospService patMedInhospService;\r\n\r\n    @Autowired\r\n    private PatMedOuthospMapper patMedOuthospMapper;\r\n\r\n    @Autowired\r\n    private SysUser2Mapper sysUser2Mapper;\r\n\r\n    @Value(\"${sltd_pub_path}\")\r\n    private String sltdPubPath;\r\n\r\n    @Override\r\n    public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {\r\n        log.info(\"銆恞ueryHealthcareRecordList銆戝紑濮嬭皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙o紝璇锋眰鍙傛暟锛歿}\", reqVO);\r\n        try {\r\n            Map<String, Object> requestParams = buildRequestParams(reqVO);\r\n            Map<String, String> headers = buildRequestHeaders();\r\n            String result = HttpUtils.sendPostByHeader(sltdPubPath + \"osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList\", new Gson().toJson(requestParams), headers);\r\n            log.info(\"銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滐細{}\", result);\r\n\r\n            String cry = determineCry(reqVO);\r\n            return parseResponseData(result, reqVO.getHealthcareRecordTypeList().get(0), cry);\r\n        } catch (Exception e) {\r\n            log.error(\"銆恞ueryHealthcareRecordList銆戣皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙e紓甯革紝璇锋眰鍙傛暟锛歿}\", reqVO, e);\r\n            throw new RuntimeException(\"璋冪敤鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨ鎺ュ彛澶辫触\", e);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param reqVO\r\n     * @return\r\n     */\r\n    @Override\r\n    public Boolean queryHospUserInfoList(ServiceSLTDInhospReqVO reqVO) {\r\n        Map<String, Object> requestParams = buildRequestParams(reqVO);\r\n        Map<String, String> headers = buildRequestHeaders();\r\n        String result = HttpUtils.sendPostByHeader(sltdPubPath + \"osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList\", new Gson().toJson(requestParams), headers);\r\n        log.info(\"銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滐細{}\", result);\r\n        List<Map<String, Object>> dataList = getDataList(result);\r\n        for (Map<String, Object> dataItem : dataList) {\r\n            SysUser sysUser = new SysUser();\r\n            sysUser.setUserName(getStringValue(dataItem, \"accountNo\"));\r\n            sysUser.setNickName(getStringValue(dataItem, \"name\"));\r\n            List diagnosisObjList = (List<?>) dataItem.get(\"qualifications\");\r\n            if (CollectionUtils.isNotEmpty(diagnosisObjList)) {\r\n                for (Object diagnosis : diagnosisObjList) {\r\n                    if (diagnosis instanceof Map) {\r\n                        Map<String, Object> diagnosisMap = (Map<String, Object>) diagnosis;\r\n                        String professionalTitleName = getStringValue(diagnosisMap, \"professionalTitleName\");\r\n                        if (professionalTitleName.contains(\"鍖诲笀\")) sysUser.setUserType(\"鍖荤敓\");\r\n                        if (professionalTitleName.contains(\"鎶")) sysUser.setUserType(\"鎶ゅ+\");\r\n                        sysUser.setTitle(getStringValue(diagnosisMap, \"professionalTitleName\"));\r\n                    }\r\n                }\r\n            }\r\n            sysUser.setDeptCode(getStringValue(dataItem, \"accountNo\"));\r\n            sysUser.setDeptName(getStringValue(dataItem, \"personnelDeptName\"));\r\n            sysUser.setPhonenumber(getStringValue(dataItem, \"telephone\"));\r\n            //璁剧疆鎬у埆\r\n            String genderName = getStringValue(dataItem, \"genderName\");\r\n            if (\"鐢穃".equals(genderName)) sysUser.setSex(\"0\");\r\n            else if (\"濂砛".equals(genderName)) sysUser.setSex(\"1\");\r\n            else sysUser.setSex(\"2\");\r\n\r\n            sysUser.setCreateTime(new Date());\r\n            sysUser.setUpdateTime(new Date());\r\n            sysUser.setUpdateBy(\"admin\");\r\n            sysUser.setCreateBy(\"admin\");\r\n\r\n            sysUser2Mapper.insertUser(sysUser);\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    private String determineCry(ServiceSLTDInhospReqVO reqVO) {\r\n        if (reqVO.getHealthcareRecordTypeList().contains(\"FH0108.02\")) {\r\n            if (reqVO.getStartHeadTime() != null && reqVO.getStartTailTime() != null) {\r\n                return \"0\";\r\n            } else if (reqVO.getPreOutHospitalHeadDate() != null && reqVO.getPreOutHospitalTailDate() != null) {\r\n                return \"1\";\r\n            }\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private Map<String, Object> buildRequestParams(ServiceSLTDInhospReqVO reqVO) {\r\n        Map<String, Object> params = new HashMap<>();\r\n        if (reqVO.getOrgId() != null) {\r\n            params.put(\"orgId\", Long.parseLong(reqVO.getOrgId()));\r\n        }\r\n        if (reqVO.getCampusIds() != null) {\r\n            params.put(\"campusIds\", reqVO.getCampusIds());\r\n        }\r\n        if (reqVO.getStartHeadTime() != null) {\r\n            params.put(\"startHeadTime\", reqVO.getStartHeadTime());\r\n        }\r\n        if (reqVO.getStartTailTime() != null) {\r\n            params.put(\"startTailTime\", reqVO.getStartTailTime());\r\n        }\r\n        if (reqVO.getHealthcareRecordTypeList() != null && !reqVO.getHealthcareRecordTypeList().isEmpty()) {\r\n            params.put(\"healthcareRecordTypeList\", reqVO.getHealthcareRecordTypeList());\r\n        }\r\n        params.put(\"subjectCode\", reqVO.getPatientName());\r\n        params.put(\"healthcareRecordNo\", reqVO.getHealthcareRecordNo());\r\n        params.put(\"orgSubjectCode\", reqVO.getIdCardNo());\r\n        if (reqVO.getDeptIdList() != null && !reqVO.getDeptIdList().isEmpty()) {\r\n            params.put(\"deptDimensions\", reqVO.getDeptIdList());\r\n        }\r\n        params.put(\"serviceScopes\", null);\r\n        params.put(\"inpatientArea\", null);\r\n        params.put(\"status\", reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty() ? reqVO.getStatusList() : null);\r\n        return params;\r\n    }\r\n\r\n    private Map<String, String> buildRequestHeaders() {\r\n        Map<String, String> headers = new HashMap<>();\r\n        headers.put(\"Content-Type\", \"application/json\");\r\n        headers.put(\"app-key\", APP_KEY);\r\n        return headers;\r\n    }\r\n\r\n    private List<ServiceSLTDInhospResDTO> parseResponseData(String result, String type, String cry) {\r\n        try {\r\n\r\n            List<Map<String, Object>> dataList = getDataList(result);\r\n            List<ServiceSLTDInhospResDTO> resultList = new ArrayList<>();\r\n            for (Map<String, Object> dataItem : dataList) {\r\n                resultList.add(convertToDTO(dataItem));\r\n            }\r\n            log.info(\"銆恜arseResponseData銆戞垚鍔熻В鏋恵}鏉″仴搴疯褰曟暟鎹甛", resultList.size());\r\n\r\n            processResultList(resultList, type, cry);\r\n            return resultList;\r\n        } catch (Exception e) {\r\n            log.error(\"銆恜arseResponseData銆戣В鏋愬搷搴旀暟鎹紓甯革紝鍝嶅簲鍐呭锛歿}\", result, e);\r\n            throw new RuntimeException(\"瑙f瀽鍝嶅簲鏁版嵁澶辫触\", e);\r\n        }\r\n    }\r\n\r\n    public List<Map<String, Object>> getDataList(String result) {\r\n        Gson gson = new Gson();\r\n        Type mapType = new TypeToken<Map<String, Object>>() {\r\n        }.getType();\r\n        Map<String, Object> responseMap = gson.fromJson(result, mapType);\r\n\r\n        Number codeObj = (Number) responseMap.get(\"code\");\r\n        if (codeObj == null || codeObj.intValue() != 200) {\r\n            log.error(\"銆恜arseResponseData銆戞帴鍙h繑鍥炲け璐ワ紝鍝嶅簲鐮侊細{}锛屽搷搴斿唴瀹癸細{}\", codeObj, result);\r\n            throw new RuntimeException(\"鎺ュ彛璋冪敤澶辫触锛屽搷搴旂爜锛歕" + codeObj);\r\n        }\r\n\r\n        Object dataObj = responseMap.get(\"data\");\r\n        if (dataObj == null) {\r\n            log.warn(\"銆恜arseResponseData銆戞帴鍙h繑鍥炴暟鎹负绌篭");\r\n            return new ArrayList<>();\r\n        }\r\n\r\n        String dataJson = gson.toJson(dataObj);\r\n        Type listType = new TypeToken<List<Map<String, Object>>>() {\r\n        }.getType();\r\n        List<Map<String, Object>> dataList = gson.fromJson(dataJson, listType);\r\n        return dataList;\r\n    }\r\n\r\n    private void processResultList(List<ServiceSLTDInhospResDTO> resultList, String type, String cry) {\r\n        switch (type) {\r\n            case \"FH0108.01\":\r\n                log.info(\"銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹甛");\r\n                outHospitalDate(resultList);\r\n                break;\r\n            case \"FH0108.02\":\r\n                log.info(\"銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹甛");\r\n                inHospitalDate(resultList, cry);\r\n                break;\r\n            case \"FH0108.03\":\r\n                log.info(\"銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁\");\r\n                outHospitalDate(resultList);\r\n                break;\r\n            default:\r\n                log.warn(\"銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}\", type);\r\n                break;\r\n        }\r\n    }\r\n\r\n    private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {\r\n        for (ServiceSLTDInhospResDTO dto : resultList) {\r\n            PatArchive patArchive = processPatientArchive(dto);\r\n            PatMedOuthosp patMedOuthosp = buildPatMedOuthosp(dto, patArchive);\r\n            patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp);\r\n        }\r\n        return true;\r\n    }\r\n\r\n    private PatMedOuthosp buildPatMedOuthosp(ServiceSLTDInhospResDTO dto, PatArchive patArchive) {\r\n        PatMedOuthosp patMedOuthosp = new PatMedOuthosp();\r\n        patMedOuthosp.setOuthospno(dto.getHealthcareRecordNo());\r\n        patMedOuthosp.setSerialnum(dto.getHealthcareRecordNo());\r\n        patMedOuthosp.setPatid(patArchive.getId());\r\n        patMedOuthosp.setPatname(patArchive.getName());\r\n        patMedOuthosp.setPatno(patArchive.getPatientno());\r\n        patMedOuthosp.setDeptcode(\"\" + dto.getDeptId());\r\n        patMedOuthosp.setDeptname(dto.getDeptName());\r\n        patMedOuthosp.setDiagname(dto.getDiagnosisName());\r\n        patMedOuthosp.setIcd10code(dto.getDiagnosisCode());\r\n        patMedOuthosp.setDrcode(\"\" + dto.getDoctorId());\r\n        patMedOuthosp.setDrname(dto.getDoctorName());\r\n        patMedOuthosp.setAdmitdate(parseDate(dto.getLastEncounterTime()));\r\n        patMedOuthosp.setSchemestatus(1L);\r\n        patMedOuthosp.setMainsuit(dto.getDiagnosisName());\r\n        patMedOuthosp.setHpi(null);\r\n        patMedOuthosp.setCreateTime(new Date());\r\n        return patMedOuthosp;\r\n    }\r\n\r\n    private Date parseDate(String dateStr) {\r\n        try {\r\n            return new SimpleDateFormat(DATE_FORMAT).parse(dateStr);\r\n        } catch (ParseException e) {\r\n            log.warn(\"銆恜arseDate銆戣В鏋愭棩鏈熷け璐ワ細{}\", dateStr, e);\r\n            return null;\r\n        }\r\n    }\r\n\r\n    private Boolean inHospitalDate(List<ServiceSLTDInhospResDTO> resultList, String cry) {\r\n        for (ServiceSLTDInhospResDTO dto : resultList) {\r\n            PatArchive patArchive = processPatientArchive(dto);\r\n            processPatientInhospInfo(dto, patArchive, cry);\r\n        }\r\n        return true;\r\n    }\r\n\r\n    private void processPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry) {\r\n        PatMedInhosp patMedInhosp = buildPatientInhospInfo(dto, patArchive, cry);\r\n        PatMedInhosp queryInhosp = new PatMedInhosp();\r\n        queryInhosp.setPatno(patArchive.getPatientno());\r\n        queryInhosp.setSerialnum(patMedInhosp.getSerialnum());\r\n        List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhospList(queryInhosp);\r\n\r\n        if (CollectionUtils.isNotEmpty(existingInhosps)) {\r\n            patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid());\r\n            patMedInhospService.updatePatMedInhosp(patMedInhosp);\r\n            log.debug(\"銆恜rocessPatientInhospInfo銆戞洿鏂颁綇闄俊鎭紝鎮h�呯紪鍙凤細{}锛屾祦姘村彿锛歿}\", patArchive.getPatientno(), patMedInhosp.getSerialnum());\r\n        } else {\r\n            patMedInhospService.insertPatMedInhosp(patMedInhosp);\r\n            log.debug(\"銆恜rocessPatientInhospInfo銆戞柊澧炰綇闄俊鎭紝鎮h�呯紪鍙凤細{}锛屾祦姘村彿锛歿}\", patArchive.getPatientno(), patMedInhosp.getSerialnum());\r\n        }\r\n    }\r\n\r\n    private PatMedInhosp buildPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry) {\r\n        PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n        patMedInhosp.setPatid(patArchive.getId());\r\n        patMedInhosp.setPatno(patArchive.getPatientno());\r\n        patMedInhosp.setPatname(patArchive.getName());\r\n        patMedInhosp.setNurseId(dto.getChiefNurseId() == null ? \"\" : dto.getChiefNurseId().toString());\r\n        patMedInhosp.setNurseName(dto.getChiefNurseName());\r\n        patMedInhosp.setSerialnum(dto.getHealthcareRecordNo());\r\n        patMedInhosp.setFuflag(\"1\");\r\n        patMedInhosp.setInhospstate(\"0\".equals(cry) ? \"0\" : \"1\");\r\n        patMedInhosp.setHospitalcode(dto.getOrgId());\r\n        patMedInhosp.setBedNo(dto.getBedNumber());\r\n        patMedInhosp.setStarttime(parseDate(dto.getStartTime()));\r\n        patMedInhosp.setEndtime(parseDate(dto.getPreOutHospitalDate()));\r\n\r\n        if (\"1\".equals(cry)) {\r\n            setDischargeInfo(patMedInhosp, dto);\r\n        } else {\r\n            setAdmissionInfo(patMedInhosp, dto);\r\n        }\r\n\r\n        patMedInhosp.setDrname(dto.getDoctorName());\r\n        patMedInhosp.setDrcode(\"\" + dto.getDoctorId());\r\n        patMedInhosp.setSchemestatus(\"0\".equals(cry) ? 1L : 2L);\r\n        patMedInhosp.setDelFlag(\"0\");\r\n        patMedInhosp.setOrgid(\"1\");\r\n        return patMedInhosp;\r\n    }\r\n\r\n    private void setDischargeInfo(PatMedInhosp patMedInhosp, ServiceSLTDInhospResDTO dto) {\r\n        patMedInhosp.setLeaveldeptcode(\"\" + dto.getDeptId());\r\n        patMedInhosp.setLeaveldeptname(dto.getDeptName());\r\n        patMedInhosp.setLeavediagname(dto.getMainDischargeDiagnosis() == null ? null : dto.getMainDischargeDiagnosis().getDiagnosisDictName());\r\n        patMedInhosp.setLeaveicd10code(dto.getMainDischargeDiagnosis() == null ? null : dto.getMainDischargeDiagnosis().getDiagnosisDictCode());\r\n        patMedInhosp.setOutWayId(null);\r\n        patMedInhosp.setOutWayName(null);\r\n        patMedInhosp.setLeavehospitaldistrictid(\"\" + dto.getAreaId());\r\n        patMedInhosp.setLeavehospitaldistrictcode(\"\" + dto.getAreaId());\r\n        patMedInhosp.setLeavehospitaldistrictname(dto.getAreaName());\r\n        patMedInhosp.setLeaveldeptid(\"\" + dto.getDeptId());\r\n    }\r\n\r\n    private void setAdmissionInfo(PatMedInhosp patMedInhosp, ServiceSLTDInhospResDTO dto) {\r\n        patMedInhosp.setDeptcode(\"\" + dto.getDeptId());\r\n        patMedInhosp.setDeptname(dto.getDeptName());\r\n        patMedInhosp.setDiagname(dto.getAdmissionDiagnosisName());\r\n        patMedInhosp.setIcd10code(dto.getAdmissionDiagnosisCode());\r\n        patMedInhosp.setHospitaldistrictid(\"\" + dto.getAreaId());\r\n        patMedInhosp.setHospitaldistrictcode(\"\" + dto.getAreaId());\r\n        patMedInhosp.setHospitaldistrictname(dto.getAreaName());\r\n    }\r\n\r\n    private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) {\r\n        PatArchive queryArchive = new PatArchive();\r\n        queryArchive.setIdcardno(dto.getIdCardNo().trim());\r\n        List<PatArchive> existingArchives = patArchiveService.selectPatArchiveList(queryArchive);\r\n\r\n        PatArchive patArchive = buildPatientArchive(dto);\r\n\r\n        if (CollectionUtils.isEmpty(existingArchives)) {\r\n            patArchiveService.insertPatArchive(patArchive);\r\n            log.debug(\"銆恜rocessPatientArchive銆戞柊澧炴偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}\", patArchive.getPatientno());\r\n        } else {\r\n            patArchive.setId(existingArchives.get(0).getId());\r\n            patArchiveService.updateArchive(patArchive);\r\n            log.debug(\"銆恜rocessPatientArchive銆戞洿鏂版偅鑰呮。妗堬紝鎮h�呯紪鍙凤細{}\", patArchive.getPatientno());\r\n        }\r\n\r\n        return patArchive;\r\n    }\r\n\r\n    private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto) {\r\n        PatArchive patArchive = new PatArchive();\r\n        patArchive.setPatientno(dto.getMedicalRecordNo());\r\n        patArchive.setIdcardno(dto.getIdCardNo().trim());\r\n        patArchive.setName(dto.getPatientName());\r\n        patArchive.setSourcefrom(2);\r\n        patArchive.setPattype(\"2\");\r\n        patArchive.setSex(\"鐢穃".equals(dto.getGender()) ? 1L : 2L);\r\n        patArchive.setNation(dto.getNation());\r\n        patArchive.setNativePlace(dto.getNativePlace());\r\n        patArchive.setPlaceOfResidence(dto.getAddress());\r\n        patArchive.setBirthdate(parseDate(dto.getBirthday()));\r\n        patArchive.setTelcode(dto.getPhone());\r\n        if (CollectionUtils.isNotEmpty(dto.getResidentContactInfos())) {\r\n            patArchive.setRelativetelcode(dto.getResidentContactInfos().get(0).getTelecom());\r\n        }\r\n        patArchive.setDelFlag(\"0\");\r\n        patArchive.setCreateTime(new Date());\r\n        patArchive.setUpdateTime(new Date());\r\n        return patArchive;\r\n    }\r\n\r\n    private ServiceSLTDInhospResDTO convertToDTO(Map<String, Object> dataItem) {\r\n        ServiceSLTDInhospResDTO dto = new ServiceSLTDInhospResDTO();\r\n        dto.setOrgId(getStringValue(dataItem, \"orgId\"));\r\n        dto.setHealthcareRecordId(getLongValue(dataItem, \"healthcareRecordId\"));\r\n        dto.setHealthcareRecordNo(getStringValue(dataItem, \"healthcareRecordNo\"));\r\n        dto.setPatientId(getLongValue(dataItem, \"patientId\"));\r\n        dto.setPatientName(getStringValue(dataItem, \"patientName\"));\r\n        dto.setPinyin(getStringValue(dataItem, \"pinyin\"));\r\n        dto.setNation(getStringValue(dataItem, \"nation\"));\r\n        dto.setIdCardNo(getStringValue(dataItem, \"idCardNo\"));\r\n        dto.setHealthcareRecordTimes(getIntegerValue(dataItem, \"healthcareRecordTimes\"));\r\n        dto.setHospitalizationNumber(getIntegerValue(dataItem, \"hospitalizationNumber\"));\r\n        dto.setMedicalCardId(getLongValue(dataItem, \"medicalCardId\"));\r\n        dto.setMedicalCardType(getStringValue(dataItem, \"medicalCardType\"));\r\n        dto.setMedicalCardTypeName(getStringValue(dataItem, \"medicalCardTypeName\"));\r\n        dto.setMedicalCardNo(getStringValue(dataItem, \"medicalCardNo\"));\r\n        dto.setMedicalRecordNo(getStringValue(dataItem, \"medicalRecordNo\"));\r\n        dto.setGender(getStringValue(dataItem, \"gender\"));\r\n        dto.setGenderCode(getStringValue(dataItem, \"genderCode\"));\r\n        dto.setAge(getStringValue(dataItem, \"age\"));\r\n        dto.setBirthday(getStringValue(dataItem, \"birthday\"));\r\n        dto.setPhone(getStringValue(dataItem, \"phone\"));\r\n        dto.setEducation(getStringValue(dataItem, \"education\"));\r\n        dto.setEducationCode(getStringValue(dataItem, \"educationCode\"));\r\n        dto.setNeonatal(getBooleanValue(dataItem, \"neonatal\"));\r\n        dto.setMarriage(getStringValue(dataItem, \"marriage\"));\r\n        dto.setMarriageCode(getStringValue(dataItem, \"marriageCode\"));\r\n        dto.setOccupationType(getStringValue(dataItem, \"occupationType\"));\r\n        dto.setOccupationTypeCode(getStringValue(dataItem, \"occupationTypeCode\"));\r\n        dto.setNativePlace(getStringValue(dataItem, \"nativePlace\"));\r\n        dto.setAreaId(getLongValue(dataItem, \"areaId\"));\r\n        dto.setAreaName(getStringValue(dataItem, \"areaName\"));\r\n        dto.setRoomId(getLongValue(dataItem, \"roomId\"));\r\n        dto.setRoomNumber(getStringValue(dataItem, \"roomNumber\"));\r\n        dto.setBedId(getLongValue(dataItem, \"bedId\"));\r\n        dto.setBedNumber(getStringValue(dataItem, \"bedNumber\"));\r\n        dto.setEncounterTime(getStringValue(dataItem, \"encounterTime\"));\r\n        dto.setStartTime(getStringValue(dataItem, \"startTime\"));\r\n        dto.setPreOutHospitalDate(getStringValue(dataItem, \"preOutHospitalDate\"));\r\n        dto.setLastEncounterTime(getStringValue(dataItem, \"lastEncounterTime\"));\r\n        dto.setDiagnosisCode(getStringValue(dataItem, \"diagnosisCode\"));\r\n        dto.setDiagnosisName(getStringValue(dataItem, \"diagnosisName\"));\r\n        dto.setHealthcareRecordStatus(getStringValue(dataItem, \"healthcareRecordStatus\"));\r\n        dto.setHealthcareType(getStringValue(dataItem, \"healthcareType\"));\r\n        dto.setDeptId(getLongValue(dataItem, \"deptId\"));\r\n        dto.setDeptName(getStringValue(dataItem, \"deptName\"));\r\n        dto.setDoctorId(getLongValue(dataItem, \"doctorId\"));\r\n        dto.setDoctorName(getStringValue(dataItem, \"doctorName\"));\r\n        dto.setHealthcarePeriodId(getLongValue(dataItem, \"healthcarePeriodId\"));\r\n        dto.setChiefNurseId(getLongValue(dataItem, \"chiefNurseId\"));\r\n        dto.setChiefNurseName(getStringValue(dataItem, \"chiefNurseName\"));\r\n        dto.setCostCategoryName(getStringValue(dataItem, \"costCategoryName\"));\r\n        dto.setCostCategoryCode(getStringValue(dataItem, \"costCategoryCode\"));\r\n        dto.setCostNatureName(getStringValue(dataItem, \"costNatureName\"));\r\n        dto.setCostNatureCode(getStringValue(dataItem, \"costNatureCode\"));\r\n        dto.setFurtherConsultationStatus(getIntegerValue(dataItem, \"furtherConsultationStatus\"));\r\n\r\n        Object contactsObj = dataItem.get(\"residentContactInfos\");\r\n        if (contactsObj instanceof List) {\r\n            dto.setResidentContactInfos(parseContacts((List<?>) contactsObj));\r\n        }\r\n\r\n        Object diagnosisObj = dataItem.get(\"diagnosisList\");\r\n        if (diagnosisObj instanceof List) {\r\n            dto.setDiagnosisList(parseDiagnosis((List<?>) diagnosisObj));\r\n        }\r\n\r\n        return dto;\r\n    }\r\n\r\n    private List<ServiceSLTDContactsResDTO> parseContacts(List<?> contactsList) {\r\n        List<ServiceSLTDContactsResDTO> contacts = new ArrayList<>();\r\n        for (Object contactObj : contactsList) {\r\n            if (contactObj instanceof Map) {\r\n                Map<String, Object> contactMap = (Map<String, Object>) contactObj;\r\n                ServiceSLTDContactsResDTO contact = new ServiceSLTDContactsResDTO();\r\n                contact.setName(getStringValue(contactMap, \"name\"));\r\n                contact.setRelationshipCode(getStringValue(contactMap, \"relationshipCode\"));\r\n                contact.setRelationship(getStringValue(contactMap, \"relationship\"));\r\n                contact.setTelecom(getStringValue(contactMap, \"telecom\"));\r\n                contact.setCurrentAddress(getStringValue(contactMap, \"currentAddress\"));\r\n                contacts.add(contact);\r\n            }\r\n        }\r\n        return contacts;\r\n    }\r\n\r\n    private List<ServiceSLTDDiagnosisResDTO> parseDiagnosis(List<?> diagnosisList) {\r\n        List<ServiceSLTDDiagnosisResDTO> diagnosis = new ArrayList<>();\r\n        for (Object diagnosisObj : diagnosisList) {\r\n            if (diagnosisObj instanceof Map) {\r\n                Map<String, Object> diagnosisMap = (Map<String, Object>) diagnosisObj;\r\n                ServiceSLTDDiagnosisResDTO diag = new ServiceSLTDDiagnosisResDTO();\r\n                diag.setDiagnosisDictCode(getStringValue(diagnosisMap, \"diagnosisDictCode\"));\r\n                diag.setDiagnosisDictName(getStringValue(diagnosisMap, \"diagnosisDictName\"));\r\n                diag.setDiagnosisCategory(getStringValue(diagnosisMap, \"diagnosisCategory\"));\r\n                diag.setRecordType(getIntegerValue(diagnosisMap, \"recordType\"));\r\n                diag.setIsMainDiagnosis(getIntegerValue(diagnosisMap, \"isMainDiagnosis\"));\r\n                diagnosis.add(diag);\r\n            }\r\n        }\r\n        return diagnosis;\r\n    }\r\n\r\n    private String getStringValue(Map<String, Object> map, String key) {\r\n        Object value = map.get(key);\r\n        return value != null ? value.toString() : null;\r\n    }\r\n\r\n    private Long getLongValue(Map<String, Object> map, String key) {\r\n        Object value = map.get(key);\r\n        if (value == null) return null;\r\n        if (value instanceof Number) {\r\n            return ((Number) value).longValue();\r\n        }\r\n        try {\r\n            return Long.parseLong(value.toString());\r\n        } catch (NumberFormatException e) {\r\n            return null;\r\n        }\r\n    }\r\n\r\n    private Integer getIntegerValue(Map<String, Object> map, String key) {\r\n        Object value = map.get(key);\r\n        if (value == null) return null;\r\n        if (value instanceof Number) {\r\n            return ((Number) value).intValue();\r\n        }\r\n        try {\r\n            return Integer.parseInt(value.toString());\r\n        } catch (NumberFormatException e) {\r\n            return null;\r\n        }\r\n    }\r\n\r\n    private Boolean getBooleanValue(Map<String, Object> map, String key) {\r\n        Object value = map.get(key);\r\n        if (value == null) return null;\r\n        if (value instanceof Boolean) {\r\n            return (Boolean) value;\r\n        }\r\n        return Boolean.parseBoolean(value.toString());\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java	(date 1758798202399)
-@@ -2,24 +2,28 @@
- 
- import com.google.gson.Gson;
- import com.google.gson.reflect.TypeToken;
-+import com.ruoyi.common.core.domain.entity.SysDept;
- import com.ruoyi.common.core.domain.entity.SysUser;
-+import com.ruoyi.common.core.domain.entity.SysUserDept;
-+import com.ruoyi.common.core.domain.entity.SysUserRole;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.common.utils.http.HttpUtils;
- import com.smartor.domain.*;
--import com.smartor.mapper.PatMedOuthospMapper;
--import com.smartor.mapper.SysUser2Mapper;
--import com.smartor.mapper.SysUserImportMapper;
-+import com.smartor.mapper.*;
- import com.smartor.service.IPatArchiveService;
- import com.smartor.service.IPatMedInhospService;
- import com.smartor.service.IServiceSLTDHealthcareRecordService;
-+import com.sun.org.apache.bcel.internal.generic.NEW;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.collections4.CollectionUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
-+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
- import org.springframework.stereotype.Service;
- 
- import java.lang.reflect.Array;
- import java.lang.reflect.Type;
-+import java.math.BigDecimal;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
-@@ -29,7 +33,7 @@
- public class ServiceSLTDHealthcareRecordServiceImpl implements IServiceSLTDHealthcareRecordService {
- 
-     private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
--    private static final String APP_KEY = "ak-zUMiOWhqXiJQWPB1pCbz0pjr";
-+    public static final String APP_KEY = "ak-zUMiOWhqXiJQWPB1pCbz0pjr";
- 
-     @Autowired
-     private IPatArchiveService patArchiveService;
-@@ -43,26 +47,129 @@
-     @Autowired
-     private SysUser2Mapper sysUser2Mapper;
- 
-+    @Autowired
-+    private SysDept2Mapper sysDeptMapper;
-+
-+    @Autowired
-+    private SysUserDeptMapper sysUserDeptMapper;
-+
-+    @Autowired
-+    private SysUserRole2Mapper sysUserRoleMapper;
-+
-     @Value("${sltd_pub_path}")
-     private String sltdPubPath;
- 
-+    @Value("${userPwd}")
-+    private String userPwd;
-+
-     @Override
-     public List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO) {
--        log.info("銆恞ueryHealthcareRecordList銆戝紑濮嬭皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙o紝璇锋眰鍙傛暟锛歿}", reqVO);
-         try {
-+            log.info("銆恞ueryHealthcareRecordList銆戝紑濮嬭皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙o紝璇锋眰鍙傛暟锛歿}", reqVO);
-             Map<String, Object> requestParams = buildRequestParams(reqVO);
-             Map<String, String> headers = buildRequestHeaders();
-+
-             String result = HttpUtils.sendPostByHeader(sltdPubPath + "osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList", new Gson().toJson(requestParams), headers);
-             log.info("銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滐細{}", result);
- 
-             String cry = determineCry(reqVO);
--            return parseResponseData(result, reqVO.getHealthcareRecordTypeList().get(0), cry);
-+            return parseResponseData(result, reqVO.getHealthcareRecordTypeList(), cry, reqVO.getCampusId());
-         } catch (Exception e) {
-             log.error("銆恞ueryHealthcareRecordList銆戣皟鐢ㄧ渷绔嬪悓寰峰仴搴疯褰曟煡璇㈡帴鍙e紓甯革紝璇锋眰鍙傛暟锛歿}", reqVO, e);
-             throw new RuntimeException("璋冪敤鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨ鎺ュ彛澶辫触", e);
-         }
-     }
- 
-+
-+    /**
-+     * 閲囬泦绉戝鐥呭尯淇℃伅
-+     *
-+     * @param serviceSLTDDeptReqVO
-+     * @return 鍙傝��
-+     * {
-+     * "orgId": 20001001,
-+     * "campusIds": 30001002,
-+     * "unitIds": null,
-+     * "relationType": null,
-+     * "searchText": null,
-+     * "status": 1
-+     * }
-+     */
-+    @Override
-+    public Boolean queryDeptWardAreaInfoList(ServiceSLTDDeptReqVO serviceSLTDDeptReqVO) {
-+        log.info("銆恞ueryDeptWardAreaInfoList銆戝紑濮嬭皟鐢ㄧ渷绔嬪悓寰风瀹ょ梾鍖烘煡璇㈡帴鍙o紝璇锋眰鍙傛暟锛歿}", serviceSLTDDeptReqVO);
-+        try {
-+            Map<String, Object> params = new HashMap<>();
-+            if (serviceSLTDDeptReqVO.getOrgId() != null) {
-+                params.put("orgId", Long.parseLong(serviceSLTDDeptReqVO.getOrgId()));
-+            }
-+            if (serviceSLTDDeptReqVO.getCampusIds() != null) {
-+                params.put("campusIds", serviceSLTDDeptReqVO.getCampusIds());
-+            }
-+            params.put("subjectCode", serviceSLTDDeptReqVO.getSubjectCode());
-+            params.put("orgSubjectCode", serviceSLTDDeptReqVO.getOrgSubjectCode());
-+
-+            params.put("deptDimensions", serviceSLTDDeptReqVO.getDeptDimensions());
-+
-+            params.put("serviceScopes", serviceSLTDDeptReqVO.getServiceScopes());
-+            params.put("inpatientArea", serviceSLTDDeptReqVO.getInpatientArea());
-+            params.put("status", serviceSLTDDeptReqVO.getStatus());
-+
-+
-+            Map<String, String> headers = buildRequestHeaders();
-+            String result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/dept/queryDeptList", new Gson().toJson(params), headers);
-+            log.info("銆恞ueryDeptWardAreaInfoList銆戞帴鍙e搷搴旂粨鏋滐細{}", result);
-+            List<Map<String, Object>> dataList = getDataList(result);
-+            log.info("-----------dataList鎺ュ彛鍝嶅簲缁撴灉锛歿}", dataList.size());
-+            for (Map<String, Object> dataItem : dataList) {
-+                SysDept sysDept = new SysDept();
-+                sysDept.setOrgid("" + serviceSLTDDeptReqVO.getCampusIds().get(0));
-+                sysDept.setHisDeptId("" + getLongValue(dataItem, "deptId"));
-+                sysDept.setHisParentId(getStringValue(dataItem, "parentDeptId"));
-+                //閫氳繃his鐨勭埗绉戝ID鍘绘壘鍒扮瀹D,濉厖parentId
-+                if (StringUtils.isNotEmpty(getStringValue(dataItem, "parentDeptId"))) {
-+                    SysDept sd = new SysDept();
-+                    sd.setHisDeptId(getStringValue(dataItem, "parentDeptId"));
-+                    sd.setOrgid(getStringValue(dataItem, "orgId"));
-+                    List<SysDept> sysDepts = sysDeptMapper.selectDeptList(sd);
-+                    if (CollectionUtils.isNotEmpty(sysDepts)) {
-+                        SysDept sysDept1 = sysDepts.get(0);
-+                        sysDept.setParentId(sysDept1.getDeptId());
-+                        sysDept.setParentName(sysDept1.getDeptName());
-+                    }
-+                }
-+                sysDept.setDeptName(getStringValue(dataItem, "deptName"));
-+                Integer inpatientArea = getIntegerValue(dataItem, "inpatientArea");
-+                if (inpatientArea != null && inpatientArea == 0) sysDept.setDeptType("1");
-+                else if (inpatientArea != null && inpatientArea == 1) sysDept.setDeptType("2");
-+                sysDept.setLeader("");
-+                Integer status = getIntegerValue(dataItem, "status");
-+                if (status != null & status == 0) sysDept.setStatus("1");
-+                if (status != null & status == 1) sysDept.setStatus("0");
-+                sysDept.setType("");
-+                sysDept.setDeptCode("" + getLongValue(dataItem, "deptId"));
-+                sysDept.setCreateBy(null);
-+                sysDept.setCreateTime(new Date());
-+                sysDept.setUpdateTime(new Date());
-+                sysDept.setUpdateBy(null);
-+
-+                SysDept sysDept1 = sysDeptMapper.selectDeptByCode(sysDept.getDeptCode(), sysDept.getOrgid());
-+                if (Objects.isNull(sysDept1)) {
-+                    int i = sysDeptMapper.insertDept(sysDept);
-+                    log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁鏂板鎴愬姛锛歿}", i);
-+                } else {
-+                    sysDept.setDeptId(sysDept1.getDeptId());
-+                    int i = sysDeptMapper.updateDept(sysDept);
-+                    log.info("ServiceExternalServiceImpl---addDeptInfo鏄惁淇敼鎴愬姛04锛歿}", i);
-+                }
-+            }
-+        } catch (Exception e) {
-+            e.printStackTrace();
-+        }
-+        return true;
-+    }
-+
-+
-     /**
-      * 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅
-      *
-@@ -73,11 +180,14 @@
-     public Boolean queryHospUserInfoList(ServiceSLTDInhospReqVO reqVO) {
-         Map<String, Object> requestParams = buildRequestParams(reqVO);
-         Map<String, String> headers = buildRequestHeaders();
--        String result = HttpUtils.sendPostByHeader(sltdPubPath + "osj/hbos-thirdparty-integration/standard/common/healthcareRecord/dtcQueryHealthcareRecordList", new Gson().toJson(requestParams), headers);
-+        String result = HttpUtils.sendPostByHeader(sltdPubPath + "/osj/hbos-thirdparty-integration/standard/common/staff/queryStaffList", new Gson().toJson(requestParams), headers);
-         log.info("銆恞ueryHealthcareRecordList銆戞帴鍙e搷搴旂粨鏋滐細{}", result);
-         List<Map<String, Object>> dataList = getDataList(result);
-         for (Map<String, Object> dataItem : dataList) {
-             SysUser sysUser = new SysUser();
-+            if (StringUtils.isEmpty(getStringValue(dataItem, "accountNo"))) {
-+                continue;
-+            }
-             sysUser.setUserName(getStringValue(dataItem, "accountNo"));
-             sysUser.setNickName(getStringValue(dataItem, "name"));
-             List diagnosisObjList = (List<?>) dataItem.get("qualifications");
-@@ -86,15 +196,21 @@
-                     if (diagnosis instanceof Map) {
-                         Map<String, Object> diagnosisMap = (Map<String, Object>) diagnosis;
-                         String professionalTitleName = getStringValue(diagnosisMap, "professionalTitleName");
--                        if (professionalTitleName.contains("鍖诲笀")) sysUser.setUserType("鍖荤敓");
--                        if (professionalTitleName.contains("鎶�")) sysUser.setUserType("鎶ゅ+");
-+                        if (professionalTitleName.contains("鍖诲笀")) {
-+                            sysUser.setUserType("鍖荤敓");
-+                            sysUser.setSearchscope("1");
-+                        }
-+                        if (professionalTitleName.contains("鎶�")) {
-+                            sysUser.setUserType("鎶ゅ+");
-+                            sysUser.setSearchscope("2");
-+                        }
-                         sysUser.setTitle(getStringValue(diagnosisMap, "professionalTitleName"));
-                     }
-                 }
-             }
--            sysUser.setDeptCode(getStringValue(dataItem, "accountNo"));
--            sysUser.setDeptName(getStringValue(dataItem, "personnelDeptName"));
-+
-             sysUser.setPhonenumber(getStringValue(dataItem, "telephone"));
-+            sysUser.setUserCode(getStringValue(dataItem, "jobNumber"));
-             //璁剧疆鎬у埆
-             String genderName = getStringValue(dataItem, "genderName");
-             if ("鐢�".equals(genderName)) sysUser.setSex("0");
-@@ -105,8 +221,61 @@
-             sysUser.setUpdateTime(new Date());
-             sysUser.setUpdateBy("admin");
-             sysUser.setCreateBy("admin");
-+            sysUser.setCreateBy("admin");
-+            sysUser.setOrgid(reqVO.getCampusId().toString());
-+            BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
-+            sysUser.setPassword(passwordEncoder.encode(userPwd));
- 
-             sysUser2Mapper.insertUser(sysUser);
-+
-+            // 澶勭悊鐢ㄦ埛涓庨儴闂ㄧ殑鍏崇郴
-+            List personnelDepts = (List<?>) dataItem.get("personnelDepts");
-+            if (CollectionUtils.isEmpty(personnelDepts)) {
-+                continue;
-+            }
-+
-+            List<List<String>> deptInfoList = new ArrayList<>();
-+            List<List<String>> hospInfoList = new ArrayList<>();
-+            for (Object personnelDept : personnelDepts) {
-+                if (personnelDept instanceof Map) {
-+                    Map<String, Object> personnelDeptMap = (Map<String, Object>) personnelDept;
-+//                    Long hisDeptId = (Long) personnelDeptMap.get("deptId");
-+                    String hisDeptId = getStringValue(personnelDeptMap, "deptId");
-+                    //鍦ㄨ繖閲岋紝hisDeptId灏辨槸deptCode
-+                    SysDept sysDept = sysDeptMapper.selectDeptByCode(hisDeptId, reqVO.getCampusId().toString());
-+                    if (Objects.isNull(sysDept)) continue;
-+                    SysUserDept sysUserDept = new SysUserDept();
-+                    sysUserDept.setUserId(sysUser.getUserId());
-+                    sysUserDept.setDeptType(sysDept.getDeptType());
-+                    sysUserDept.setDeptId(sysDept.getDeptId());
-+                    sysUserDept.setDeptCode(sysDept.getDeptCode());
-+                    sysUserDept.setDeptName(sysDept.getDeptName());
-+                    sysUserDept.setOrgid(sysDept.getOrgid());
-+                    sysUserDept.setCreateTime(new Date());
-+                    sysUserDept.setDelFlag(0L);
-+                    sysUserDeptMapper.insertSysUserDept(sysUserDept);
-+                    if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("1")) {
-+                        hospInfoList.add(Arrays.asList(sysDept.getDeptCode()));
-+                    } else if (StringUtils.isNotEmpty(sysDept.getDeptType()) && sysDept.getDeptType().equals("2")) {
-+                        deptInfoList.add(Arrays.asList(sysDept.getDeptCode()));
-+                    }
-+                }
-+            }
-+            //灏嗛儴闂ㄦ垜鐥呭尯鏀惧埌鎸囧畾瀛楁涓�
-+            Gson gson = new Gson();
-+            sysUser.setHospInfo(gson.toJson(hospInfoList));
-+            sysUser.setDeptInfo(gson.toJson(deptInfoList));
-+            sysUser2Mapper.updateUser(sysUser);
-+
-+            //璁剧疆涓�涓粯璁よ鑹诧紙鍖荤敓瑙掕壊锛�
-+            List<SysUserRole> userRoleList = new ArrayList();
-+            SysUserRole sur = new SysUserRole();
-+            sur.setUserId(sysUser.getUserId());
-+            sur.setRoleId(3L);
-+            sur.setOrgid(sysUser.getOrgid());
-+            userRoleList.add(sur);
-+            sysUserRoleMapper.batchUserRole(userRoleList);
-+
-         }
- 
-         return true;
-@@ -116,7 +285,7 @@
-         if (reqVO.getHealthcareRecordTypeList().contains("FH0108.02")) {
-             if (reqVO.getStartHeadTime() != null && reqVO.getStartTailTime() != null) {
-                 return "0";
--            } else if (reqVO.getPreOutHospitalHeadDate() != null && reqVO.getPreOutHospitalTailDate() != null) {
-+            } else if (StringUtils.isNotEmpty(reqVO.getPreOutHospitalHeadDate()) && StringUtils.isNotEmpty(reqVO.getPreOutHospitalTailDate())) {
-                 return "1";
-             }
-         }
-@@ -128,8 +297,8 @@
-         if (reqVO.getOrgId() != null) {
-             params.put("orgId", Long.parseLong(reqVO.getOrgId()));
-         }
--        if (reqVO.getCampusIds() != null) {
--            params.put("campusIds", reqVO.getCampusIds());
-+        if (reqVO.getCampusId() != null) {
-+            params.put("campusId", reqVO.getCampusId());
-         }
-         if (reqVO.getStartHeadTime() != null) {
-             params.put("startHeadTime", reqVO.getStartHeadTime());
-@@ -137,6 +306,18 @@
-         if (reqVO.getStartTailTime() != null) {
-             params.put("startTailTime", reqVO.getStartTailTime());
-         }
-+        if (reqVO.getEncounterTimeStart() != null) {
-+            params.put("encounterTimeStart", reqVO.getEncounterTimeStart());
-+        }
-+        if (reqVO.getEncounterTimeEnd() != null) {
-+            params.put("encounterTimeEnd", reqVO.getEncounterTimeEnd());
-+        }
-+        if (reqVO.getPreOutHospitalHeadDate() != null) {
-+            params.put("preOutHospitalHeadDate", reqVO.getPreOutHospitalHeadDate());
-+        }
-+        if (reqVO.getPreOutHospitalTailDate() != null) {
-+            params.put("preOutHospitalTailDate", reqVO.getPreOutHospitalTailDate());
-+        }
-         if (reqVO.getHealthcareRecordTypeList() != null && !reqVO.getHealthcareRecordTypeList().isEmpty()) {
-             params.put("healthcareRecordTypeList", reqVO.getHealthcareRecordTypeList());
-         }
-@@ -148,7 +329,7 @@
-         }
-         params.put("serviceScopes", null);
-         params.put("inpatientArea", null);
--        params.put("status", reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty() ? reqVO.getStatusList() : null);
-+        params.put("status", reqVO.getStatusList() != null && !reqVO.getStatusList().isEmpty() ? reqVO.getStatusList().get(0) : null);
-         return params;
-     }
- 
-@@ -159,7 +340,7 @@
-         return headers;
-     }
- 
--    private List<ServiceSLTDInhospResDTO> parseResponseData(String result, String type, String cry) {
-+    private List<ServiceSLTDInhospResDTO> parseResponseData(String result, List<String> types, String cry, Long orgid) {
-         try {
- 
-             List<Map<String, Object>> dataList = getDataList(result);
-@@ -169,7 +350,7 @@
-             }
-             log.info("銆恜arseResponseData銆戞垚鍔熻В鏋恵}鏉″仴搴疯褰曟暟鎹�", resultList.size());
- 
--            processResultList(resultList, type, cry);
-+            processResultList(resultList, types, cry, orgid);
-             return resultList;
-         } catch (Exception e) {
-             log.error("銆恜arseResponseData銆戣В鏋愬搷搴旀暟鎹紓甯革紝鍝嶅簲鍐呭锛歿}", result, e);
-@@ -182,16 +363,16 @@
-         Type mapType = new TypeToken<Map<String, Object>>() {
-         }.getType();
-         Map<String, Object> responseMap = gson.fromJson(result, mapType);
--
--        Number codeObj = (Number) responseMap.get("code");
--        if (codeObj == null || codeObj.intValue() != 200) {
--            log.error("銆恜arseResponseData銆戞帴鍙h繑鍥炲け璐ワ紝鍝嶅簲鐮侊細{}锛屽搷搴斿唴瀹癸細{}", codeObj, result);
--            throw new RuntimeException("鎺ュ彛璋冪敤澶辫触锛屽搷搴旂爜锛�" + codeObj);
-+        Number codeNum = (Number) responseMap.get("code");
-+        String code = BigDecimal.valueOf(codeNum.longValue()).toPlainString();
-+        if (StringUtils.isEmpty(code) || !code.equals("200")) {
-+            log.error("銆恜arseResponseData銆戞帴鍙h繑鍥炲け璐ワ紝鍝嶅簲鐮侊細{}锛屽搷搴斿唴瀹癸細{}", code, result);
-+            throw new RuntimeException("鎺ュ彛璋冪敤澶辫触锛屽搷搴旂爜锛�" + code);
-         }
- 
-         Object dataObj = responseMap.get("data");
-         if (dataObj == null) {
--            log.warn("銆恜arseResponseData銆戞帴鍙h繑鍥炴暟鎹负绌�");
-+            log.info("銆恜arseResponseData銆戞帴鍙h繑鍥炴暟鎹负绌�");
-             return new ArrayList<>();
-         }
- 
-@@ -202,36 +383,38 @@
-         return dataList;
-     }
- 
--    private void processResultList(List<ServiceSLTDInhospResDTO> resultList, String type, String cry) {
--        switch (type) {
--            case "FH0108.01":
--                log.info("銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹�");
--                outHospitalDate(resultList);
--                break;
--            case "FH0108.02":
--                log.info("銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹�");
--                inHospitalDate(resultList, cry);
--                break;
--            case "FH0108.03":
--                log.info("銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁");
--                outHospitalDate(resultList);
--                break;
--            default:
--                log.warn("銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}", type);
--                break;
--        }
-+    private void processResultList(List<ServiceSLTDInhospResDTO> resultList, List<String> types, String cry, Long orgid) {
-+        for (String type : types)
-+            switch (type) {
-+                case "FH0108.01":
-+                    log.info("銆恜arseResponseData銆戣В鏋愰棬璇婃暟鎹�");
-+                    outHospitalDate(resultList, orgid);
-+                    break;
-+                case "FH0108.02":
-+                    log.info("銆恜arseResponseData銆戣В鏋愪綇闄㈡暟鎹�");
-+                    inHospitalDate(resultList, cry, orgid);
-+                    break;
-+                case "FH0108.03":
-+                    log.info("銆恜arseResponseData銆戣В鏋愭�ヨ瘖鏁版嵁");
-+                    outHospitalDate(resultList, orgid);
-+                    break;
-+                default:
-+                    log.warn("銆恜arseResponseData銆戞湭鐭ョ殑鏁版嵁绫诲瀷锛歿}", type);
-+                    break;
-+            }
-     }
- 
--    private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList) {
-+    private Boolean outHospitalDate(List<ServiceSLTDInhospResDTO> resultList, Long orgid) {
-         for (ServiceSLTDInhospResDTO dto : resultList) {
--            PatArchive patArchive = processPatientArchive(dto);
--            PatMedOuthosp patMedOuthosp = buildPatMedOuthosp(dto, patArchive);
-+            if (Objects.isNull(dto)) continue;
-+            PatArchive patArchive = processPatientArchive(dto, orgid);
-+            PatMedOuthosp patMedOuthosp = buildPatMedOuthosp(dto, patArchive, orgid);
-             patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp);
-         }
-         return true;
-     }
- 
--    private PatMedOuthosp buildPatMedOuthosp(ServiceSLTDInhospResDTO dto, PatArchive patArchive) {
-+    private PatMedOuthosp buildPatMedOuthosp(ServiceSLTDInhospResDTO dto, PatArchive patArchive, Long orgid) {
-         PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
-         patMedOuthosp.setOuthospno(dto.getHealthcareRecordNo());
-         patMedOuthosp.setSerialnum(dto.getHealthcareRecordNo());
-@@ -249,10 +432,14 @@
-         patMedOuthosp.setMainsuit(dto.getDiagnosisName());
-         patMedOuthosp.setHpi(null);
-         patMedOuthosp.setCreateTime(new Date());
-+        patMedOuthosp.setOrgid("" + orgid);
-         return patMedOuthosp;
-     }
- 
-     private Date parseDate(String dateStr) {
-+        if (StringUtils.isEmpty(dateStr)) {
-+            return null;
-+        }
-         try {
-             return new SimpleDateFormat(DATE_FORMAT).parse(dateStr);
-         } catch (ParseException e) {
-@@ -261,21 +448,25 @@
-         }
-     }
- 
--    private Boolean inHospitalDate(List<ServiceSLTDInhospResDTO> resultList, String cry) {
-+    private Boolean inHospitalDate(List<ServiceSLTDInhospResDTO> resultList, String cry, Long orgid) {
-         for (ServiceSLTDInhospResDTO dto : resultList) {
--            PatArchive patArchive = processPatientArchive(dto);
--            processPatientInhospInfo(dto, patArchive, cry);
-+            if (Objects.isNull(dto)) continue;
-+            PatArchive patArchive = processPatientArchive(dto, orgid);
-+            processPatientInhospInfo(dto, patArchive, cry, orgid);
-         }
-         return true;
-     }
- 
--    private void processPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry) {
--        PatMedInhosp patMedInhosp = buildPatientInhospInfo(dto, patArchive, cry);
-+    private void processPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry, Long orgid) {
-+        PatMedInhosp patMedInhosp = buildPatientInhospInfo(dto, patArchive, cry, orgid);
-         PatMedInhosp queryInhosp = new PatMedInhosp();
-         queryInhosp.setPatno(patArchive.getPatientno());
-         queryInhosp.setSerialnum(patMedInhosp.getSerialnum());
-+        queryInhosp.setOrgid("" + orgid);
-+        log.info("----------------杩欓噷鐨勫叆鍙備负锛歿}", queryInhosp);
-         List<PatMedInhosp> existingInhosps = patMedInhospService.selectPatMedInhospList(queryInhosp);
- 
-+        log.info("----------------杩欓噷鐨勮繑鍙備负锛歿}", existingInhosps);
-         if (CollectionUtils.isNotEmpty(existingInhosps)) {
-             patMedInhosp.setInhospid(existingInhosps.get(0).getInhospid());
-             patMedInhospService.updatePatMedInhosp(patMedInhosp);
-@@ -286,7 +477,8 @@
-         }
-     }
- 
--    private PatMedInhosp buildPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry) {
-+    private PatMedInhosp buildPatientInhospInfo(ServiceSLTDInhospResDTO dto, PatArchive patArchive, String cry, Long orgid) {
-+        log.info("----------------buildPatientInhospInfo杩欓噷杩涙潵浜嗗悧锛焮}", cry);
-         PatMedInhosp patMedInhosp = new PatMedInhosp();
-         patMedInhosp.setPatid(patArchive.getId());
-         patMedInhosp.setPatno(patArchive.getPatientno());
-@@ -295,7 +487,8 @@
-         patMedInhosp.setNurseName(dto.getChiefNurseName());
-         patMedInhosp.setSerialnum(dto.getHealthcareRecordNo());
-         patMedInhosp.setFuflag("1");
--        patMedInhosp.setInhospstate("0".equals(cry) ? "0" : "1");
-+        if ("0".equals(cry)) patMedInhosp.setInhospstate("0");
-+        if ("1".equals(cry)) patMedInhosp.setInhospstate("1");
-         patMedInhosp.setHospitalcode(dto.getOrgId());
-         patMedInhosp.setBedNo(dto.getBedNumber());
-         patMedInhosp.setStarttime(parseDate(dto.getStartTime()));
-@@ -311,7 +504,7 @@
-         patMedInhosp.setDrcode("" + dto.getDoctorId());
-         patMedInhosp.setSchemestatus("0".equals(cry) ? 1L : 2L);
-         patMedInhosp.setDelFlag("0");
--        patMedInhosp.setOrgid("1");
-+        patMedInhosp.setOrgid("" + orgid);
-         return patMedInhosp;
-     }
- 
-@@ -338,12 +531,12 @@
-         patMedInhosp.setHospitaldistrictname(dto.getAreaName());
-     }
- 
--    private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto) {
-+    private PatArchive processPatientArchive(ServiceSLTDInhospResDTO dto, Long orgid) {
-         PatArchive queryArchive = new PatArchive();
--        queryArchive.setIdcardno(dto.getIdCardNo().trim());
-+        queryArchive.setIdcardno(StringUtils.isEmpty(dto.getIdCardNo()) ? "" + dto.getMedicalCardId() : dto.getIdCardNo().trim());
-         List<PatArchive> existingArchives = patArchiveService.selectPatArchiveList(queryArchive);
- 
--        PatArchive patArchive = buildPatientArchive(dto);
-+        PatArchive patArchive = buildPatientArchive(dto, orgid);
- 
-         if (CollectionUtils.isEmpty(existingArchives)) {
-             patArchiveService.insertPatArchive(patArchive);
-@@ -357,10 +550,10 @@
-         return patArchive;
-     }
- 
--    private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto) {
-+    private PatArchive buildPatientArchive(ServiceSLTDInhospResDTO dto, Long orgid) {
-         PatArchive patArchive = new PatArchive();
--        patArchive.setPatientno(dto.getMedicalRecordNo());
--        patArchive.setIdcardno(dto.getIdCardNo().trim());
-+        patArchive.setPatientno("" + dto.getPatientId());
-+        patArchive.setIdcardno(StringUtils.isEmpty(dto.getIdCardNo()) ? "" + dto.getMedicalCardId() : dto.getIdCardNo().trim());
-         patArchive.setName(dto.getPatientName());
-         patArchive.setSourcefrom(2);
-         patArchive.setPattype("2");
-@@ -376,6 +569,7 @@
-         patArchive.setDelFlag("0");
-         patArchive.setCreateTime(new Date());
-         patArchive.setUpdateTime(new Date());
-+        patArchive.setOrgid("" + orgid);
-         return patArchive;
-     }
- 
-@@ -485,7 +679,12 @@
- 
-     private String getStringValue(Map<String, Object> map, String key) {
-         Object value = map.get(key);
--        return value != null ? value.toString() : null;
-+        if (value == null) {
-+            return null;
-+        }
-+
-+        // 鍙鐞嗘暟瀛楃被鍨嬶紝閬垮厤绉戝璁℃暟娉�
-+        return value instanceof Number ? new BigDecimal(value.toString()).toPlainString() : value.toString();
-     }
- 
-     private Long getLongValue(Map<String, Object> map, String key) {
-Index: smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\nimport org.apache.commons.lang3.builder.ToStringBuilder;\r\nimport org.apache.commons.lang3.builder.ToStringStyle;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 闂嵎浠诲姟妯$増闂璇濇湳搴撳璞� svy_task_template_script\r\n *\r\n * @author ruoyi\r\n * @date 2024-06-19\r\n */\r\n@Data\r\npublic class SvyTaskTemplateScriptVO extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 涓婚敭ID\r\n     */\r\n    private Long id;\r\n\r\n    /**\r\n     * 棰樼洰涓婚\r\n     */\r\n    @Excel(name = \"棰樼洰涓婚\")\r\n    @ApiModelProperty(\"棰樼洰涓婚\")\r\n    private String scriptTopic;\r\n\r\n    /**\r\n     * 浠诲姟id\r\n     */\r\n    @ApiModelProperty(value = \"浠诲姟id\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 妯℃澘璇濇湳缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"妯℃澘璇濇湳缂栧彿\")\r\n    private String scriptno;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private Long templateID;\r\n\r\n    /**\r\n     * 璇濇湳ID\r\n     */\r\n    @ApiModelProperty(value = \"璇濇湳ID\")\r\n    private Long scriptid;\r\n\r\n    /**\r\n     * 鏍囬\r\n     */\r\n    @ApiModelProperty(value = \"鏍囬\")\r\n    private String script_title;\r\n\r\n    /**\r\n     * 璇█\r\n     */\r\n    @ApiModelProperty(value = \"璇█\")\r\n    private String language;\r\n\r\n    /**\r\n     * 鏄惁鍙敤 0鍙敤  1涓嶅彲鐢╘r\n     */\r\n    @Excel(name = \"鏄惁鍙敤 0鍙敤  1涓嶅彲鐢╘")\r\n    @ApiModelProperty(\"鏄惁鍙敤 0鍙敤  1涓嶅彲鐢╘")\r\n    private String isavailable;\r\n\r\n    /**\r\n     * 绫诲埆鍚峔r\n     */\r\n    @ApiModelProperty(value = \"绫诲埆鍚峔")\r\n    private String categoryName;\r\n\r\n\r\n    /**\r\n     * 璇濇湳鍐呭\r\n     */\r\n    @ApiModelProperty(value = \"璇濇湳鍐呭\")\r\n    private String scriptContent;\r\n\r\n\r\n    /**\r\n     * 鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛塡r\n     */\r\n    @ApiModelProperty(value = \"鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉� \")\r\n    private String isMust;\r\n\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private Long pid;\r\n\r\n    /**\r\n     * GUID\r\n     */\r\n    @ApiModelProperty(value = \"GUID\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級\r\n     */\r\n    @ApiModelProperty(value = \"鍊肩被鍨�1=閫夐」,2=鏂囨湰,3=鏁板�糪")\r\n    private String valueType;\r\n\r\n    /**\r\n     * 鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛塡r\n     */\r\n    @Excel(name = \"鍥炲\", readConverterExp = \"鎸�=闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑\")\r\n    @ApiModelProperty(\"鍥炲锛堟寚闂鐨勫洖澶嶏紝缁欓棶绛旈鐢ㄧ殑锛塡")\r\n    private String reply;\r\n\r\n    /**\r\n     * 鍒嗗�肩被鍨嬶細1锛氭暟瀛楋紝2锛氱瓑绾r\n     */\r\n    @Excel(name = \"鍒嗗�肩被鍨嬶細1锛氭暟瀛楋紝2锛氱瓑绾")\r\n    @ApiModelProperty(\"鍒嗗�肩被鍨嬶細1锛氭暟瀛楋紝2锛氱瓑绾")\r\n    private String scoretype;\r\n\r\n    /**\r\n     * 鎸囨爣閫夐」*\r\n     */\r\n    @ApiModelProperty(value = \"鎸囨爣閫夐」*\")\r\n    private String targetOptions;\r\n\r\n    /**\r\n     * 棰樼洰绫诲瀷;鏋氫妇 1.鍗曢�� 2澶氶�� 3濉┖ 4鍏跺畠\r\n     */\r\n    @ApiModelProperty(value = \"棰樼洰绫诲瀷;鏋氫妇 1.鍗曢�� 2澶氶�� 3濉┖ 4鍏跺畠\")\r\n    private String scriptType;\r\n\r\n    /**\r\n     * 鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)\r\n     */\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)\")\r\n    private Long targetid;\r\n\r\n    /**\r\n     * 鍩虹鎸囨爣鍊糪r\n     */\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣鍊糪")\r\n    private String targetvalue;\r\n\r\n    /**\r\n     * 涓嬩竴璇濇湳缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"涓嬩竴璇濇湳缂栧彿\")\r\n    private String nextScriptno;\r\n\r\n    /**\r\n     * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級*\r\n     */\r\n    @ApiModelProperty(value = \"闂缁撴灉 ,缁�=鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨刓")\r\n    private String scriptResult;\r\n\r\n    /**\r\n     * 鍙橀噺鍙傛暟闆嗗悎\r\n     */\r\n    @ApiModelProperty(value = \"鍙橀噺鍙傛暟闆嗗悎\")\r\n    private String otherdata;\r\n\r\n    /**\r\n     * 闂鍥剧墖璺緞\r\n     */\r\n    @ApiModelProperty(value = \"闂鍥剧墖璺緞\")\r\n    private String picturePath;\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n\r\n    /**\r\n     * 閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\r\n     */\r\n    @Excel(name = \"閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\")\r\n    @ApiModelProperty(value = \"閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\")\r\n    private String branchFlag;\r\n\r\n    /**\r\n     * 閫夐」鍒嗘敮鐨勪笅涓�涓瘽鏈紪鍙穃r\n     */\r\n    @Excel(name = \"閫夐」鍒嗘敮鐨勪笅涓�涓瘽鏈紪鍙穃")\r\n    @ApiModelProperty(value = \"閫夐」鍒嗘敮鐨勪笅涓�涓瘽鏈紪鍙穃")\r\n    private String branchNextscriptno;\r\n\r\n\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣绫诲瀷\")\r\n    private String targettype;\r\n\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣鍚嶇О\")\r\n    private String targetname;\r\n\r\n    /**\r\n     * 搴忓彿\r\n     */\r\n    @Excel(name = \"搴忓彿\")\r\n    @ApiModelProperty(value = \"搴忓彿\")\r\n    private Long xh;\r\n\r\n    /**\r\n     * 鍒嗘暟\r\n     */\r\n    @Excel(name = \"鍒嗘暟\")\r\n    @ApiModelProperty(value = \"鍒嗘暟\")\r\n    private BigDecimal score = BigDecimal.ZERO;\r\n\r\n    /**\r\n     * 閫変腑鎻愮ず\r\n     */\r\n    @Excel(name = \" 閫変腑鎻愮ず \")\r\n    @ApiModelProperty(\"閫変腑鎻愮ず\")\r\n    private String prompt;\r\n\r\n    /**\r\n     * 棰樼洰鏍囩\r\n     */\r\n    @Excel(name = \"棰樼洰鏍囩\")\r\n    @ApiModelProperty(\"棰樼洰鏍囩\")\r\n    private String tag;\r\n\r\n    /**\r\n     * 鏄惁闅愯棌\r\n     */\r\n    @Excel(name = \" 鏄惁闅愯棌 \")\r\n    @ApiModelProperty(\"鏄惁闅愯棌\")\r\n    private Long ishide;\r\n\r\n    /**\r\n     * 閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3\r\n     */\r\n    @Excel(name = \"閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3\")\r\n    @ApiModelProperty(\"閫傜敤鏂瑰紡锛氳皟鏌ヨ〃1锛屾櫤鑳借闊�2銆佷汉宸�3\")\r\n    private String suitway;\r\n\r\n\r\n    /**\r\n     * 棰樼洰鍥剧墖\r\n     */\r\n    @Excel(name = \"棰樼洰鍥剧墖\")\r\n    @ApiModelProperty(\"棰樼洰鍥剧墖\")\r\n    private String scriptPicture;\r\n\r\n    /**\r\n     * 棰樼洰鍐呭\r\n     */\r\n    @Excel(name = \"棰樼洰鍐呭\")\r\n    @ApiModelProperty(\"棰樼洰鎻忚堪\")\r\n    private String scriptDesc;\r\n\r\n    /**\r\n     * 鍒嗙被id\r\n     */\r\n    @Excel(name = \"鍒嗙被id\")\r\n    @ApiModelProperty(\"鍒嗙被id\")\r\n    private Long categoryid;\r\n\r\n    /**\r\n     * 鏄惁蹇呭~   0蹇呭~   1涓嶅繀濉玕r\n     */\r\n    @Excel(name = \" 鏄惁蹇呭~   0蹇呭~   1涓嶅繀濉玕")\r\n    @ApiModelProperty(\"鏄惁蹇呭~   0蹇呭~   1涓嶅繀濉玕")\r\n    private String ismandatory;\r\n\r\n\r\n    /**\r\n     * 鎺掑簭\r\n     */\r\n    @Excel(name = \" 鎺掑簭 \")\r\n    @ApiModelProperty(\"鎺掑簭\")\r\n    private Long sort;\r\n\r\n    @ApiModelProperty(value = \"缁勫埆\")\r\n    private String groupName;\r\n\r\n\r\n    /**\r\n     * 璇濇湳閫夐」\r\n     */\r\n    @ApiModelProperty(value = \"璇濇湳閫夐」\")\r\n    private List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = new ArrayList<>();\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java
---- a/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/SvyTaskTemplateScriptVO.java	(date 1758798202984)
-@@ -191,6 +191,13 @@
-     @ApiModelProperty(value = "闂缁撴灉 ,缁�=鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨�")
-     private String scriptResult;
- 
-+
-+    /**
-+     * 寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊
-+     */
-+    @ApiModelProperty(value = "寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊")
-+    private Long isabnormal;
-+
-     /**
-      * 鍙橀噺鍙傛暟闆嗗悎
-      */
-Index: smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service;\r\n\r\nimport com.smartor.domain.ServiceSLTDInhospReqVO;\r\nimport com.smartor.domain.ServiceSLTDInhospResDTO;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨService鎺ュ彛\r\n *\r\n * @author smartor\r\n * @date 2025-08-14\r\n */\r\npublic interface IServiceSLTDHealthcareRecordService {\r\n\r\n    /**\r\n     * 閲囬泦鍦ㄩ櫌鎮h�呭嚭鍏ラ櫌銆侀棬鎬ヨ瘖淇℃伅\r\n     *\r\n     * @param reqVO 鏌ヨ璇锋眰鍙傛暟\r\n     * @return 鍋ュ悍璁板綍鍒楄〃\r\n     * 鍙傝�僜r\n     * {\r\n     * \"orgId\": 20001001,\r\n     * \"campusIds\": 30001002,\r\n     * \"startHeadTime\":\"2025-08-14\",\r\n     * \"startTailTime\":\"2025-08-14\",\r\n     * \"healthcareRecordTypeList\":[\"FH0108.01\"],\r\n     * \"subjectCode\": null,\r\n     * \"healthcareRecordNo\":null,\r\n     * \"orgSubjectCode\": null,\r\n     * \"deptDimensions\": null,\r\n     * \"serviceScopes\": null,\r\n     * \"inpatientArea\": null,\r\n     * \"status\": null\r\n     * }\r\n     */\r\n    List<ServiceSLTDInhospResDTO> queryHealthcareRecordList(ServiceSLTDInhospReqVO reqVO);\r\n\r\n    /**\r\n     * 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param reqVO\r\n     * @return 鍙傝�僜r\n     * {\r\n     * \"orgId\": 20001001,\r\n     * \"campusIds\": 30001002,\r\n     * \"unitIds\": null,\r\n     * \"relationType\": null,\r\n     * \"searchText\": null,\r\n     * \"status\": 1\r\n     * }\r\n     */\r\n    Boolean queryHospUserInfoList(ServiceSLTDInhospReqVO reqVO);\r\n\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java b/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java
---- a/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/IServiceSLTDHealthcareRecordService.java	(date 1758798202995)
-@@ -1,5 +1,6 @@
- package com.smartor.service;
- 
-+import com.smartor.domain.ServiceSLTDDeptReqVO;
- import com.smartor.domain.ServiceSLTDInhospReqVO;
- import com.smartor.domain.ServiceSLTDInhospResDTO;
- 
-@@ -43,7 +44,7 @@
-      * @return 鍙傝��
-      * {
-      * "orgId": 20001001,
--     * "campusIds": 30001002,
-+     * "campusId": 30001002,
-      * "unitIds": null,
-      * "relationType": null,
-      * "searchText": null,
-@@ -52,5 +53,21 @@
-      */
-     Boolean queryHospUserInfoList(ServiceSLTDInhospReqVO reqVO);
- 
-+    /**
-+     * 閲囬泦绉戝鐥呭尯淇℃伅
-+     *
-+     * @param serviceSLTDDeptReqVO
-+     * @return 鍙傝��
-+     * {
-+     * "orgId": 20001001,
-+     * "campusIds": 30001002,
-+     * "unitIds": null,
-+     * "relationType": null,
-+     * "searchText": null,
-+     * "status": 1
-+     * }
-+     */
-+    Boolean queryDeptWardAreaInfoList(ServiceSLTDDeptReqVO serviceSLTDDeptReqVO);
-+
- 
- }
-Index: ruoyi-admin/pom.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\r\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\r\n    <parent>\r\n        <artifactId>ruoyi</artifactId>\r\n        <groupId>com.ruoyi</groupId>\r\n        <version>3.8.5</version>\r\n    </parent>\r\n    <modelVersion>4.0.0</modelVersion>\r\n    <!--    <packaging>war</packaging>-->\r\n    <packaging>jar</packaging>\r\n    <artifactId>smartor-suifang</artifactId>\r\n\r\n    <description>\r\n        web鏈嶅姟鍏ュ彛\r\n    </description>\r\n\r\n    <dependencies>\r\n\r\n        <!-- spring-boot-devtools -->\r\n        <dependency>\r\n            <groupId>org.springframework.boot</groupId>\r\n            <artifactId>spring-boot-devtools</artifactId>\r\n            <optional>true</optional> <!-- 琛ㄧず渚濊禆涓嶄細浼犻�� -->\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.springframework.boot</groupId>\r\n            <artifactId>spring-boot-starter-thymeleaf</artifactId>\r\n        </dependency>\r\n\r\n        <!-- swagger3-->\r\n        <dependency>\r\n            <groupId>io.springfox</groupId>\r\n            <artifactId>springfox-boot-starter</artifactId>\r\n        </dependency>\r\n\r\n        <!-- 闃叉杩涘叆swagger椤甸潰鎶ョ被鍨嬭浆鎹㈤敊璇紝鎺掗櫎3.0.0涓殑寮曠敤锛屾墜鍔ㄥ鍔�1.6.2鐗堟湰 -->\r\n        <dependency>\r\n            <groupId>io.swagger</groupId>\r\n            <artifactId>swagger-models</artifactId>\r\n            <version>1.6.2</version>\r\n        </dependency>\r\n\r\n        <!-- Mysql椹卞姩鍖� -->\r\n        <dependency>\r\n            <groupId>mysql</groupId>\r\n            <artifactId>mysql-connector-java</artifactId>\r\n        </dependency>\r\n\r\n        <!-- SQL_SERVER椹卞姩鍖� -->\r\n        <dependency>\r\n            <groupId>com.microsoft.sqlserver</groupId>\r\n            <artifactId>mssql-jdbc</artifactId>\r\n            <version>9.2.1.jre8</version>\r\n        </dependency>\r\n\r\n        <!-- 鏍稿績妯″潡-->\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>ruoyi-framework</artifactId>\r\n        </dependency>\r\n\r\n        <!-- 瀹氭椂浠诲姟-->\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>ruoyi-quartz</artifactId>\r\n        </dependency>\r\n\r\n        <!-- 浠g爜鐢熸垚-->\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>ruoyi-generator</artifactId>\r\n        </dependency>\r\n\r\n        <!-- 绯荤粺妯″潡-->\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>smartor</artifactId>\r\n            <version>3.8.5</version>\r\n            <scope>compile</scope>\r\n        </dependency>\r\n        <!-- https://mvnrepository.com/artifact/net.glxn.qrgen/javase -->\r\n        <dependency>\r\n            <groupId>net.glxn.qrgen</groupId>\r\n            <artifactId>javase</artifactId>\r\n            <version>2.0</version>\r\n        </dependency>\r\n        <!-- https://mvnrepository.com/artifact/net.glxn.qrgen/core -->\r\n        <dependency>\r\n            <groupId>net.glxn.qrgen</groupId>\r\n            <artifactId>core</artifactId>\r\n            <version>2.0</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.json</groupId>\r\n            <artifactId>json</artifactId>\r\n            <version>20210307</version>\r\n        </dependency>\r\n\r\n        <dependency>\r\n            <groupId>org.springframework.boot</groupId>\r\n            <artifactId>spring-boot-starter-web-services</artifactId>\r\n        </dependency>\r\n\r\n        <dependency>\r\n            <groupId>org.apache.cxf</groupId>\r\n            <artifactId>cxf-rt-frontend-jaxws</artifactId>\r\n            <version>3.1.6</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.cxf</groupId>\r\n            <artifactId>cxf-rt-transports-http</artifactId>\r\n            <version>3.1.6</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.codehaus.woodstox</groupId>\r\n            <artifactId>stax2-api</artifactId>\r\n            <version>3.1.1</version>\r\n        </dependency>\r\n\r\n        <dependency>\r\n            <groupId>org.ssssssss</groupId>\r\n            <artifactId>magic-api-spring-boot-starter</artifactId>\r\n            <version>1.3.0</version>\r\n        </dependency>\r\n\r\n        <dependency>\r\n            <groupId>com.alibaba.nls</groupId>\r\n            <artifactId>nls-sdk-common</artifactId>\r\n            <version>2.1.6</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.poi</groupId>\r\n            <artifactId>poi</artifactId>\r\n            <version>5.2.3</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.poi</groupId>\r\n            <artifactId>poi-scratchpad</artifactId>\r\n            <version>5.2.3</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>xerces</groupId>\r\n            <artifactId>xercesImpl</artifactId>\r\n            <version>2.12.0</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>xml-apis</groupId>\r\n            <artifactId>xml-apis</artifactId>\r\n            <version>1.4.01</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.poi</groupId>\r\n            <artifactId>poi-ooxml</artifactId>\r\n            <version>5.2.3</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.poi</groupId>\r\n            <artifactId>poi-ooxml-schemas</artifactId>\r\n            <version>4.1.2</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.apache.xmlbeans</groupId>\r\n            <artifactId>xmlbeans</artifactId>\r\n            <version>5.1.0</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>cn.easyproject</groupId>\r\n            <artifactId>orai18n</artifactId>\r\n            <version>12.1.0.2.0</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>com.oracle.database.jdbc</groupId>\r\n            <artifactId>ojdbc8</artifactId>\r\n            <version>19.3.0.0</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>org.postgresql</groupId>\r\n            <artifactId>postgresql</artifactId>\r\n            <version>42.6.0</version> <!-- 璇锋牴鎹渶瑕侀�夋嫨鏈�鏂扮増鏈� -->\r\n        </dependency>\r\n        <!--oracle-->\r\n        <dependency>\r\n            <groupId>com.oracle.database.jdbc</groupId>\r\n            <artifactId>ojdbc8</artifactId>\r\n            <scope>runtime</scope>\r\n        </dependency>\r\n    </dependencies>\r\n    <build>\r\n        <plugins>\r\n            <plugin>\r\n                <groupId>org.springframework.boot</groupId>\r\n                <artifactId>spring-boot-maven-plugin</artifactId>\r\n                <version>2.1.1.RELEASE</version>\r\n                <configuration>\r\n                    <fork>true</fork> <!-- 濡傛灉娌℃湁璇ラ厤缃紝devtools涓嶄細鐢熸晥 -->\r\n                </configuration>\r\n                <executions>\r\n                    <execution>\r\n                        <goals>\r\n                            <goal>repackage</goal>\r\n                        </goals>\r\n                    </execution>\r\n                </executions>\r\n            </plugin>\r\n            <plugin>\r\n                <groupId>org.apache.maven.plugins</groupId>\r\n                <artifactId>maven-war-plugin</artifactId>\r\n                <version>3.1.0</version>\r\n                <configuration>\r\n                    <failOnMissingWebXml>false</failOnMissingWebXml>\r\n                    <warName>${project.artifactId}</warName>\r\n                </configuration>\r\n            </plugin>\r\n        </plugins>\r\n        <finalName>${project.artifactId}</finalName>\r\n    </build>\r\n\r\n    <repositories>\r\n        <repository>\r\n            <id>central</id>\r\n            <url>https://repo.maven.apache.org/maven2</url>\r\n        </repository>\r\n        <repository>\r\n            <id>aliyun</id>\r\n            <url>https://maven.aliyun.com/repository/public</url>\r\n        </repository>\r\n        <repository>\r\n            <id>jcenter</id>\r\n            <url>https://jcenter.bintray.com/</url>\r\n        </repository>\r\n    </repositories>\r\n</project>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
---- a/ruoyi-admin/pom.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/pom.xml	(date 1758798203007)
-@@ -166,6 +166,11 @@
-             <version>5.1.0</version>
-         </dependency>
-         <dependency>
-+            <groupId>org.apache.commons</groupId>
-+            <artifactId>commons-compress</artifactId>
-+            <version>1.21</version>
-+        </dependency>
-+        <dependency>
-             <groupId>cn.easyproject</groupId>
-             <artifactId>orai18n</artifactId>
-             <version>12.1.0.2.0</version>
-Index: smartor/src/main/java/com/smartor/domain/ServiceSLTDDeptReqVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSLTDDeptReqVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSLTDDeptReqVO.java
-new file mode 100644
---- /dev/null	(date 1758798203165)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSLTDDeptReqVO.java	(date 1758798203165)
-@@ -0,0 +1,48 @@
-+package com.smartor.domain;
-+
-+import io.swagger.annotations.ApiModel;
-+import io.swagger.annotations.ApiModelProperty;
-+import lombok.Data;
-+
-+import java.util.List;
-+
-+@ApiModel(value = "ServiceSLTDCommonReqVO", description = "鐪佺珛鍚屽痉鍑虹瀹ょ梾鍖鸿姹備俊鎭�")
-+@Data
-+public class ServiceSLTDDeptReqVO {
-+    @ApiModelProperty(value = "鏈烘瀯ID 鏈烘瀯鍞竴缂栧彿")
-+    private String orgId;
-+
-+    @ApiModelProperty(value = "闄㈠尯ID")
-+    private List<Long> campusIds;
-+
-+    @ApiModelProperty(value = "鏈烘瀯瀛︾锛屽瓧鍏竎ode")
-+    private String orgSubjectCode;
-+
-+
-+    @ApiModelProperty(value = "鍥介檯瀛︾锛屽瓧鍏竎ode ")
-+    private String subjectCode;
-+
-+    @ApiModelProperty(value = "绉戝鍚嶇О妯$硦鍖归厤")
-+    private Long searchText;
-+
-+    @ApiModelProperty(value = "閮ㄩ棬缁村害:  201-浜轰簨  202-涓氬姟  涓嶄紶-鍏ㄩ儴")
-+    private Long deptDimensions;
-+
-+
-+    @ApiModelProperty(value = "鏈嶅姟鑼冨洿  锛� 鎬ヨ瘖-emergency 鍖绘妧-medicalTechnology  闂ㄨ瘖-outpatient 浣忛櫌-hospitalization 浣撴-physicalExamination" +
-+            "鎵嬫湳-operation 鑽埧-drugRoom  鑽簱-drugWarehouse 鏉愭枡搴�-materialWarehouse   鎶㈡晳-rescue  鐣欒-observation 闈欓厤-venousConfig")
-+    private List<String> serviceScopes;
-+
-+
-+    @ApiModelProperty(value = "鏄惁鏄梾鍖�: 0-涓嶆槸 1-鏄�")
-+    private Integer inpatientArea;
-+
-+    @ApiModelProperty(value = "鍋滅敤鐘舵�� : 1-鏈仠鐢� 0-鍋滅敤 涓嶄紶-鍏ㄩ儴")
-+    private Integer status;
-+
-+
-+    @ApiModelProperty(value = "閮ㄩ棬绫诲瀷锛� FH0132.01-鍖荤枟   FH0132.02-鏁欏  FH0132.03-绉戠爺  FH0132.04-琛屾斂  FH0132.05-鍚庡嫟 FH0132.06-鍏朵粬")
-+    private String deptType;
-+
-+
-+}
-Index: smartor/src/main/java/com/smartor/domain/ServiceSubTaskMYDAnswerReq.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubTaskMYDAnswerReq.java b/smartor/src/main/java/com/smartor/domain/ServiceSubTaskMYDAnswerReq.java
-new file mode 100644
---- /dev/null	(date 1758798203360)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubTaskMYDAnswerReq.java	(date 1758798203360)
-@@ -0,0 +1,30 @@
-+package com.smartor.domain;
-+
-+import io.swagger.annotations.ApiModel;
-+import io.swagger.annotations.ApiModelProperty;
-+import lombok.Data;
-+
-+import java.util.List;
-+
-+/**
-+ * 鐢佃瘽闂鍥炵瓟鏄庣粏
-+ *
-+ * @author ls
-+ * @date 2023-06-05
-+ */
-+@ApiModel(value = "ServiceSubTaskAnswerReq", description = "闂鍥炵瓟鏄庣粏")
-+@Data
-+public class ServiceSubTaskMYDAnswerReq {
-+
-+    @ApiModelProperty(value = "闂嵎缁撴灉")
-+    private List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS;
-+
-+    @ApiModelProperty(value = "娴佹按鍙�")
-+    private String serialnum;
-+
-+    @ApiModelProperty(value = "浠诲姟ID")
-+    private String taskId;
-+
-+    @ApiModelProperty(value = "浣忛櫌 1   闂ㄨ瘖2    鎶曡瘔3")
-+    private String mzzy;
-+}
-Index: ruoyi-quartz/pom.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\r\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\r\n    <parent>\r\n        <artifactId>ruoyi</artifactId>\r\n        <groupId>com.ruoyi</groupId>\r\n        <version>3.8.5</version>\r\n    </parent>\r\n    <modelVersion>4.0.0</modelVersion>\r\n\r\n    <artifactId>ruoyi-quartz</artifactId>\r\n\r\n    <description>\r\n        quartz瀹氭椂浠诲姟\r\n    </description>\r\n\r\n    <dependencies>\r\n\r\n        <!-- 瀹氭椂浠诲姟 -->\r\n        <dependency>\r\n            <groupId>org.quartz-scheduler</groupId>\r\n            <artifactId>quartz</artifactId>\r\n            <exclusions>\r\n                <exclusion>\r\n                    <groupId>com.mchange</groupId>\r\n                    <artifactId>c3p0</artifactId>\r\n                </exclusion>\r\n            </exclusions>\r\n        </dependency>\r\n\r\n        <!-- 閫氱敤宸ュ叿-->\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>ruoyi-common</artifactId>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>smartor</artifactId>\r\n            <version>3.8.5</version>\r\n        </dependency>\r\n        <dependency>\r\n            <groupId>com.ruoyi</groupId>\r\n            <artifactId>ruoyi-system</artifactId>\r\n        </dependency>\r\n\r\n    </dependencies>\r\n\r\n</project>
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml
---- a/ruoyi-quartz/pom.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-quartz/pom.xml	(date 1758798203021)
-@@ -36,14 +36,14 @@
-         </dependency>
-         <dependency>
-             <groupId>com.ruoyi</groupId>
--            <artifactId>smartor</artifactId>
--            <version>3.8.5</version>
-+            <artifactId>ruoyi-system</artifactId>
-         </dependency>
-         <dependency>
-             <groupId>com.ruoyi</groupId>
--            <artifactId>ruoyi-system</artifactId>
-+            <artifactId>smartor</artifactId>
-+            <version>3.8.5</version>
-         </dependency>
- 
-     </dependencies>
- 
--</project>
-\ No newline at end of file
-+</project>
-Index: smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java
-new file mode 100644
---- /dev/null	(date 1759129433027)
-+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskPreachformMapper.java	(date 1759129433027)
-@@ -0,0 +1,73 @@
-+package com.smartor.mapper;
-+
-+import java.util.List;
-+import org.apache.ibatis.annotations.Mapper;
-+import com.smartor.domain.ServiceSubtaskPreachform;
-+
-+/**
-+ * 銆愯濉啓鍔熻兘鍚嶇О銆慚apper鎺ュ彛
-+ *
-+ * @author lihu
-+ * @date 2025-09-15
-+ */
-+@Mapper
-+public interface ServiceSubtaskPreachformMapper
-+{
-+    /**
-+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆�
-+     *
-+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
-+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆�
-+     */
-+    public ServiceSubtaskPreachform selectServiceSubtaskPreachformById(Long id);
-+
-+    /**
-+     * 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛�
-+     *
-+     * @param serviceSubtaskPreachform 銆愯濉啓鍔熻兘鍚嶇О銆�
-+     * @return 銆愯濉啓鍔熻兘鍚嶇О銆戦泦鍚�
-+     */
-+    public List<ServiceSubtaskPreachform> selectServiceSubtaskPreachformList(ServiceSubtaskPreachform serviceSubtaskPreachform);
-+
-+    /**
-+     * 鏂板銆愯濉啓鍔熻兘鍚嶇О銆�
-+     *
-+     * @param serviceSubtaskPreachform 銆愯濉啓鍔熻兘鍚嶇О銆�
-+     * @return 缁撴灉
-+     */
-+    public int insertServiceSubtaskPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform);
-+
-+    /**
-+     * 淇敼銆愯濉啓鍔熻兘鍚嶇О銆�
-+     *
-+     * @param serviceSubtaskPreachform 銆愯濉啓鍔熻兘鍚嶇О銆�
-+     * @return 缁撴灉
-+     */
-+    public int updateServiceSubtaskPreachform(ServiceSubtaskPreachform serviceSubtaskPreachform);
-+    public int updateSSPByCondition(ServiceSubtaskPreachform serviceSubtaskPreachform);
-+
-+    /**
-+     * 鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
-+     *
-+     * @param id 銆愯濉啓鍔熻兘鍚嶇О銆戜富閿�
-+     * @return 缁撴灉
-+     */
-+    public int deleteServiceSubtaskPreachformById(Long id);
-+
-+    /**
-+     * 鏍规嵁subid鍒犻櫎璇ュ瓙浠诲姟鐨勬墍鏈夊彂閫佹柟寮�
-+     * @param subIds
-+     * @return
-+     */
-+    public int deleteServiceSubtaskPreachformBySubid(Long subIds);
-+
-+
-+
-+    /**
-+     * 鎵归噺鍒犻櫎銆愯濉啓鍔熻兘鍚嶇О銆�
-+     *
-+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
-+     * @return 缁撴灉
-+     */
-+    public int deleteServiceSubtaskPreachformByIds(Long[] ids);
-+}
-Index: smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.SysDept2Mapper\">\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysDept\" id=\"SysDeptResult\">\r\n        <id property=\"deptId\" column=\"dept_id\"/>\r\n        <id property=\"hisDeptId\" column=\"his_dept_id\"/>\r\n        <result property=\"parentId\" column=\"parent_id\"/>\r\n        <result property=\"hisParentId\" column=\"his_parent_id\"/>\r\n        <result property=\"ancestors\" column=\"ancestors\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"orderNum\" column=\"order_num\"/>\r\n        <result property=\"leader\" column=\"leader\"/>\r\n        <result property=\"phone\" column=\"phone\"/>\r\n        <result property=\"email\" column=\"email\"/>\r\n        <result property=\"status\" column=\"status\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"parentName\" column=\"parent_name\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptType\" column=\"dept_type\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"type\" column=\"type\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectDeptVo\">\r\n        select d.dept_id,\r\n               d.dept_code,\r\n               d.type,\r\n               d.orgid,\r\n               d.parent_id,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.dept_type,\r\n               d.email,\r\n               d.status,\r\n               d.del_flag,\r\n               d.create_by,\r\n               d.guid,\r\n               d.create_time,\r\n               d.his_dept_id,\r\n               d.his_parent_id\r\n        from sys_dept d\r\n    </sql>\r\n\r\n    <select id=\"selectDeptList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\" resultMap=\"SysDeptResult\">\r\n        <include refid=\"selectDeptVo\"/>\r\n        where d.del_flag = '0'\r\n        <if test=\"deptId != null and deptId != 0\">\r\n            AND dept_id = #{deptId}\r\n        </if>\r\n        <if test=\"type != null\">\r\n            AND type = #{type}\r\n        </if>\r\n        <if test=\"parentId != null and parentId != 0\">\r\n            AND parent_id = #{parentId}\r\n        </if>\r\n        <if test=\"deptName != null and deptName != ''\">\r\n            AND dept_name like concat('%', #{deptName}, '%')\r\n        </if>\r\n        <if test=\"status != null and status != ''\">\r\n            AND status = #{status}\r\n        </if>\r\n        <if test=\"deptCode != null and deptCode != ''\">\r\n            AND dept_code = #{deptCode}\r\n        </if>\r\n        <if test=\"deptType != null and deptType != ''\">\r\n            AND dept_type = #{deptType}\r\n        </if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">\r\n            AND his_dept_id = #{hisDeptId}\r\n        </if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">\r\n            AND his_parent_id = #{hisParentId}\r\n        </if>\r\n        order by d.parent_id, d.order_num\r\n    </select>\r\n\r\n    <select id=\"selectDeptListByRoleId\" resultType=\"Long\">\r\n        select d.dept_id\r\n        from sys_dept d\r\n        left join sys_role_dept rd on d.dept_id = rd.dept_id\r\n        where rd.role_id = #{roleId}\r\n        <if test=\"deptCheckStrictly\">\r\n            and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id =\r\n            rd.dept_id and rd.role_id = #{roleId})\r\n        </if>\r\n        order by d.parent_id, d.order_num\r\n    </select>\r\n\r\n    <select id=\"selectDeptById\" parameterType=\"Long\" resultMap=\"SysDeptResult\">\r\n        select d.dept_id,\r\n               d.parent_id,\r\n               d.dept_code,\r\n               d.type,\r\n               d.dept_type,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.email,\r\n               d.status,\r\n               d.orgid,\r\n               d.his_dept_id,\r\n               d.his_parent_id\r\n                   (select dept_name from sys_dept where dept_id = d.parent_id) parent_name\r\n        from sys_dept d\r\n        where d.dept_id = #{deptId}\r\n    </select>\r\n\r\n    <select id=\"selectDeptByCode\" parameterType=\"string\" resultMap=\"SysDeptResult\">\r\n        select d.dept_id,\r\n               d.parent_id,\r\n               d.type,\r\n               d.dept_code,\r\n               d.dept_type,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.email,\r\n               d.orgid,\r\n               d.his_dept_id,\r\n               d.his_parent_id\r\n            d.status\r\n        from sys_dept d\r\n        where del_flag = 0\r\n          and d.dept_code = #{deptCode}\r\n    </select>\r\n\r\n    <select id=\"checkDeptExistUser\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(1)\r\n        from sys_user\r\n        where dept_id = #{deptId}\r\n          and del_flag = '0'\r\n    </select>\r\n\r\n    <select id=\"hasChildByDeptId\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(1)\r\n        from sys_dept\r\n        where del_flag = '0'\r\n          and parent_id = #{deptId} limit 1\r\n    </select>\r\n\r\n    <select id=\"selectChildrenDeptById\" parameterType=\"Long\" resultMap=\"SysDeptResult\">\r\n        select *\r\n        from sys_dept\r\n        where find_in_set(#{deptId}, ancestors)\r\n    </select>\r\n\r\n    <select id=\"selectNormalChildrenDeptById\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(*)\r\n        from sys_dept\r\n        where status = 0\r\n          and del_flag = '0'\r\n          and find_in_set(#{deptId}, ancestors)\r\n    </select>\r\n\r\n    <select id=\"checkDeptNameUnique\" resultMap=\"SysDeptResult\">\r\n        <include refid=\"selectDeptVo\"/>\r\n        where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1\r\n    </select>\r\n\r\n\r\n    <insert id=\"batchDept\">\r\n        insert into sys_dept(\r\n        dept_id,\r\n        parent_id,\r\n        dept_name,\r\n        ancestors,\r\n        order_num,\r\n        leader,\r\n        phone,\r\n        email,\r\n        status,\r\n        dept_code,\r\n        dept_type,\r\n        create_by,\r\n        his_dept_id,\r\n        his_parent_id,\r\n        type,\r\n        guid,\r\n        orgid,\r\n        create_time\r\n        ) values\r\n        <foreach collection=\"list\" item=\"item\" separator=\",\">\r\n            (\r\n            #{item.deptId},\r\n            #{item.parentId},\r\n            #{item.deptName},\r\n            #{item.ancestors},\r\n            #{item.orderNum},\r\n            #{item.leader},\r\n            #{item.phone},\r\n            #{item.email},\r\n            #{item.status},\r\n            #{item.deptCode},\r\n            #{item.deptType},\r\n            #{item.createBy},\r\n            #{item.hisDeptId},\r\n            #{item.hisParentId},\r\n            #{item.type},\r\n            #{item.guid},\r\n            #{item.orgid},\r\n            now()\r\n            )\r\n        </foreach>\r\n    </insert>\r\n\r\n\r\n    <insert id=\"insertDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        insert into sys_dept(\r\n        <if test=\"deptId != null and deptId != 0\">dept_id,</if>\r\n        <if test=\"parentId != null and parentId != 0\">parent_id,</if>\r\n        <if test=\"deptName != null and deptName != ''\">dept_name,</if>\r\n        <if test=\"ancestors != null and ancestors != ''\">ancestors,</if>\r\n        <if test=\"orderNum != null\">order_num,</if>\r\n        <if test=\"leader != null and leader != ''\">leader,</if>\r\n        <if test=\"phone != null and phone != ''\">phone,</if>\r\n        <if test=\"email != null and email != ''\">email,</if>\r\n        <if test=\"status != null\">status,</if>\r\n        <if test=\"deptCode != null\">dept_code,</if>\r\n        <if test=\"deptType != null\">dept_type,</if>\r\n        <if test=\"createBy != null and createBy != ''\">create_by,</if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">his_dept_id,</if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">his_parent_id,</if>\r\n        <if test=\"type != null and type != ''\">type,</if>\r\n        <if test=\"guid != null and guid != ''\">guid,</if>\r\n        <if test=\"orgid != null and orgid != ''\">orgid,</if>\r\n        create_time\r\n        )values(\r\n        <if test=\"deptId != null and deptId != 0\">#{deptId},</if>\r\n        <if test=\"parentId != null and parentId != 0\">#{parentId},</if>\r\n        <if test=\"deptName != null and deptName != ''\">#{deptName},</if>\r\n        <if test=\"ancestors != null and ancestors != ''\">#{ancestors},</if>\r\n        <if test=\"orderNum != null\">#{orderNum},</if>\r\n        <if test=\"leader != null and leader != ''\">#{leader},</if>\r\n        <if test=\"phone != null and phone != ''\">#{phone},</if>\r\n        <if test=\"email != null and email != ''\">#{email},</if>\r\n        <if test=\"status != null\">#{status},</if>\r\n        <if test=\"deptCode != null\">#{deptCode},</if>\r\n        <if test=\"deptType != null\">#{deptType},</if>\r\n        <if test=\"createBy != null and createBy != ''\">#{createBy},</if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">#{hisDeptId},</if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">#{hisParentId},</if>\r\n        <if test=\"type != null and type != ''\">#{type},</if>\r\n        <if test=\"guid != null and guid != ''\">#{guid},</if>\r\n        <if test=\"orgid != null and orgid != ''\">#{orgid},</if>\r\n        sysdate()\r\n        )\r\n    </insert>\r\n\r\n    <update id=\"updateDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        update sys_dept\r\n        <set>\r\n            <if test=\"parentId != null and parentId != 0\">parent_id = #{parentId},</if>\r\n            <if test=\"deptName != null and deptName != ''\">dept_name = #{deptName},</if>\r\n            <if test=\"ancestors != null and ancestors != ''\">ancestors = #{ancestors},</if>\r\n            <if test=\"orderNum != null\">order_num = #{orderNum},</if>\r\n            <if test=\"leader != null\">leader = #{leader},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"email != null\">email = #{email},</if>\r\n            <if test=\"status != null and status != ''\">status = #{status},</if>\r\n            <if test=\"deptCode != null\">dept_code=#{deptCode},</if>\r\n            <if test=\"deptType != null\">dept_type=#{deptType},</if>\r\n            <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\r\n            <if test=\"hisParentId != null and hisParentId != ''\">his_parent_id = #{hisParentId},</if>\r\n            <if test=\"hisDeptId != null and hisDeptId != ''\">his_dept_id = #{hisDeptId},</if>\r\n            <if test=\"type != null and type != ''\">type = #{type},</if>\r\n            update_time = sysdate()\r\n        </set>\r\n        where dept_id = #{deptId}\r\n    </update>\r\n\r\n    <update id=\"updateDeptChildren\" parameterType=\"java.util.List\">\r\n        update sys_dept set ancestors =\r\n        <foreach collection=\"depts\" item=\"item\" index=\"index\"\r\n                 separator=\" \" open=\"case dept_id\" close=\"end\">\r\n            when #{item.deptId} then #{item.ancestors}\r\n        </foreach>\r\n        where dept_id in\r\n        <foreach collection=\"depts\" item=\"item\" index=\"index\"\r\n                 separator=\",\" open=\"(\" close=\")\">\r\n            #{item.deptId}\r\n        </foreach>\r\n    </update>\r\n\r\n    <update id=\"updateDeptStatusNormal\" parameterType=\"Long\">\r\n        update sys_dept set status = '0' where dept_id in\r\n        <foreach collection=\"array\" item=\"deptId\" open=\"(\" separator=\",\" close=\")\">\r\n            #{deptId}\r\n        </foreach>\r\n    </update>\r\n\r\n    <delete id=\"deleteDeptById\" parameterType=\"Long\">\r\n        update sys_dept\r\n        set del_flag = '2'\r\n        where dept_id = #{deptId}\r\n    </delete>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml b/smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/resources/mapper/smartor/SysDeptMapper.xml	(date 1758798203030)
-@@ -132,11 +132,12 @@
-                d.email,
-                d.orgid,
-                d.his_dept_id,
--               d.his_parent_id
--            d.status
-+               d.his_parent_id,
-+               d.status
-         from sys_dept d
-         where del_flag = 0
-           and d.dept_code = #{deptCode}
-+          and d.orgid = #{orgid}
-     </select>
- 
-     <select id="checkDeptExistUser" parameterType="Long" resultType="int">
-@@ -306,7 +307,7 @@
- 
-     <delete id="deleteDeptById" parameterType="Long">
-         update sys_dept
--        set del_flag = '2'
-+        set del_flag = '1'
-         where dept_id = #{deptId}
-     </delete>
- 
-Index: smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java
-new file mode 100644
---- /dev/null	(date 1759129158316)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskPreachform.java	(date 1759129158316)
-@@ -0,0 +1,89 @@
-+package com.smartor.domain;
-+
-+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;
-+
-+/**
-+ * 銆愯濉啓鍔熻兘鍚嶇О銆戝璞� service_subtask_preachform
-+ *
-+ * @author lihu
-+ * @date 2025-09-15
-+ */
-+@Data
-+@ApiModel("銆愯濉啓鍔熻兘鍚嶇О銆�")
-+public class ServiceSubtaskPreachform 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 subid;
-+
-+    /**
-+     * 鏈嶅姟ID
-+     */
-+    @ApiModelProperty("鏈嶅姟ID")
-+    @Excel(name = "鏈嶅姟ID")
-+    private Long taskid;
-+
-+    /**
-+     * 鍙戦�佹柟寮�(1,浜哄伐 2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴� 7.鏀粯瀹濆皬绋嬪簭  8.鏅鸿兘鏈哄櫒浜�  9.閽夐拤)
-+     */
-+    @ApiModelProperty("鍙戦�佹柟寮�")
-+    @Excel(name = "鍙戦�佹柟寮�")
-+    private String preachform;
-+
-+    /**
-+     * 鐭俊鐘舵�侊細1鏈彂閫�    2宸插彂閫�   3宸查鍙�   4鍙风爜閿欒(鏃犳剰涔夛紝涓轰簡鍜屽叾瀹冮厤骞�)     5鍙戦�佸け璐�  6涓嶆墽琛�    9瀹屾垚
-+     * <p>
-+     * 寰俊鐘舵�侊細1鏈彂閫�    2宸插彂閫�   3宸查鍙�   4寰俊鍙烽敊璇�(鏃犳剰涔夛紝涓轰簡鍜屽叾瀹冮厤骞�)    5鍙戦�佸け璐�  6涓嶆墽琛�    9瀹屾垚
-+     * <p>
-+     * 鏅鸿兘璇煶鐘舵�侊細1鏈墽琛�  2宸插彂閫�  3鎷掓帴鎷掕   4鍙风爜閿欒   5鎵ц澶辫触   6涓嶆墽琛�   9瀹屾垚
-+     * <p>
-+     * 浜哄伐闅忚鐘舵�侊細1鏈墽琛�   2寰呬汉宸ョ‘璁�  3鎷掓帴鎷掕  4鍙风爜閿欒   5鎵ц澶辫触   6涓嶆墽琛�      9瀹屾垚
-+     * <p>
-+     * 闈㈣鐘舵�侊細1鏈墽琛�   9瀹屾垚
-+     */
-+    @ApiModelProperty("鍙戦�佺姸鎬�")
-+    private String sendstate;
-+
-+    /**
-+     * 鏈烘瀯缂栫爜
-+     */
-+    @ApiModelProperty("鏈烘瀯缂栫爜")
-+    @Excel(name = "鏈烘瀯缂栫爜")
-+    private String orgid;
-+
-+    /**
-+     * 鍒犻櫎鐘舵��
-+     */
-+    @ApiModelProperty("鍒犻櫎鐘舵��")
-+    private String delFlag;
-+
-+    /**
-+     * 椤哄簭
-+     */
-+    @ApiModelProperty("椤哄簭")
-+    @Excel(name = "椤哄簭")
-+    private Long sort;
-+
-+    /**
-+     * 琛ュ伩鏃堕棿锛堝崟浣嶅ぉ锛�
-+     */
-+    @ApiModelProperty("琛ュ伩鏃堕棿锛堝崟浣嶅ぉ锛�")
-+    @Excel(name = "琛ュ伩鏃堕棿锛堝崟浣嶅ぉ锛�")
-+    private String compensateTime;
-+}
-+
-Index: ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.quartz.service.impl;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.entity.SysUserDept;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.quartz.mapper.CollectHISMapper;\r\nimport com.ruoyi.quartz.service.ICollectHISService;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.*;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.time.ZoneId;\r\nimport java.util.*;\r\nimport java.util.stream.Collectors;\r\nimport java.util.stream.Stream;\r\n\r\n@Slf4j\r\n@Service\r\npublic class CollectHISServiceImpl implements ICollectHISService {\r\n    @Autowired\r\n    private CollectHISMapper chMapper;\r\n\r\n    @Autowired\r\n    private SysUser2Mapper sysUser2Mapper;\r\n\r\n    @Autowired\r\n    private SysUserRole2Mapper sysUserRoleMapper;\r\n\r\n    @Autowired\r\n    private SysDept2Mapper sysDept2Mapper;\r\n\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    @Autowired\r\n    private Icd10Mapper icd10Mapper;\r\n\r\n    @Autowired\r\n    private PatMedOuthospMapper patMedOuthospMapper;\r\n\r\n    @Autowired\r\n    private PatMedInhospMapper patMedInhospMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n\r\n    @Autowired\r\n    private ThreadPoolTaskExecutor taskExecutor;\r\n\r\n    @Autowired\r\n    private ShardingMapper shardingMapper;\r\n\r\n    @Autowired\r\n    private UtilsMapper utilsMapper;\r\n\r\n    private static final long SHARDING_THRESHOLD = 5_000_000L;\r\n    private static final String PAT_ARCHIVE_TABLE = \"pat_archive\";\r\n    private static final String PAT_MED_INHOSP_TABLE = \"pat_med_inhosp\";\r\n\r\n\r\n    @Override\r\n    public List<PatArchive> selectPatArchiveList(PatArchive patArchive) {\r\n        return chMapper.selectPatArchiveList(patArchive);\r\n    }\r\n\r\n//    @Override\r\n//    public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp) {\r\n//        // 寮傛鎵ц鏁翠釜鏁版嵁鍚屾浠诲姟\r\n//        taskExecutor.execute(() -> {\r\n//            log.info(\"寮�濮嬫墽琛屾暟鎹悓姝ヤ换鍔�...\");\r\n//            syncPatArchivesInOrder(); // 鍏堝悓姝ユ偅鑰匼r\n//            syncPatMedInhosp();       // 鍐嶅悓姝ュ嚭鍏ラ櫌\r\n//            log.info(\"鏁版嵁鍚屾浠诲姟鎻愪氦瀹屾瘯銆俓");\r\n//        });\r\n//        return 0; // 杩斿洖0琛ㄧず浠诲姟宸叉彁浜ゅ埌鍚庡彴鎵ц\r\n//    }\r\n\r\n    /**\r\n     * 鍚屾浠诲姟\r\n     * @param\r\n     * @return\r\n     */\r\n    @Override\r\n    public Integer sync() {\r\n        Integer count = 0;\r\n        List<Map<String, Object>> syncList = utilsMapper.getList(\"SELECT id,syncName,DATE_FORMAT(ADDDATE(startTime, INTERVAL -1 MINUTE), '%Y-%m-%d %H:%i:%s') startTime  FROM sys_sync_time  where state=0\");\r\n        if (syncList.size() > 0) {\r\n            String endTime = chMapper.getSqlString(\"select sysdate from healthy_inhosp where rownum=1\");\r\n            //鍚屾鎮h�呭熀鏈俊鎭痋r\n//            List<Map<String, Object>> syncTemp = syncList.stream().filter(row -> row.get(\"syncName\").equals(\"pat_archive\")).collect(Collectors.toList());\r\n//            if (syncTemp.size() > 0) {\r\n//                count+=syncArchive(syncTemp.get(0).get(\"startTime\") + \"\", endTime);\r\n//                utilsMapper.updateSql(\"update sys_sync_time set startTime='\"+endTime+\"' where syncName='pat_archive' \");\r\n//            }\r\n\r\n            //鍚屾浣忛櫌鐥呬汉淇℃伅\r\n            List<Map<String, Object>> syncTemp = syncList.stream().filter(row -> row.get(\"syncName\").equals(\"pat_med_inhosp\")).collect(Collectors.toList());\r\n            if (syncTemp.size() > 0) {\r\n                count+=syncMedInhosp(syncTemp.get(0).get(\"startTime\") + \"\", endTime);\r\n                utilsMapper.updateSql(\"update sys_sync_time set startTime='\"+endTime+\"' where syncName='pat_med_inhosp' \");\r\n            }\r\n\r\n            //鍚屾闂ㄨ瘖淇℃伅\r\n            syncTemp = syncList.stream().filter(row -> row.get(\"syncName\").equals(\"pat_med_outhosp\")).collect(Collectors.toList());\r\n            if (syncTemp.size() > 0) {\r\n                count+=syncOuthosp(syncTemp.get(0).get(\"startTime\") + \"\", endTime);\r\n                utilsMapper.updateSql(\"update sys_sync_time set startTime='\"+endTime+\"' where syncName='pat_med_outhosp' \");\r\n            }\r\n\r\n\r\n        } else {\r\n            log.info(\"鍚屾浠诲姟鏃堕棿sys_sync_time琛ㄤ腑娌℃湁闇�瑕佸悓姝ョ殑浠诲姟\");\r\n        }\r\n        return count;\r\n    }\r\n\r\n    /**\r\n     * 鍚屾鎮h�呭熀鏈俊鎭痋r\n     * @param\r\n     * @return\r\n     */\r\n    private  Integer syncArchive(String startTime,String endTime) {\r\n        Integer count = 0;\r\n        PatArchive pa = new PatArchive();\r\n        pa.setLastStartTime(startTime);\r\n        pa.setLastEndTime(endTime);\r\n        List<PatArchive> patArchives = chMapper.selectPatArchiveList(pa);\r\n        log.info(\"鍙悓鎮h�呭熀鏈俊鎭暟閲廫" + patArchives.size());\r\n        for (PatArchive pm : patArchives) {\r\n            try {\r\n                PatArchive pa1 = new PatArchive();\r\n                pa1.setPatientno(pm.getPatientno());\r\n                List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa1);\r\n                if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                    pm.setId(patArchives1.get(0).getId());\r\n                    pm.setUpdateTime(new Date());\r\n                    count += patArchiveMapper.updatePatArchive(pm);\r\n                } else {\r\n                    pm.setCreateTime(new Date());\r\n                    count += patArchiveMapper.insertPatArchiveSingle(pm);\r\n\r\n                }\r\n            }catch (Exception ex){\r\n                log.info(\"鍙悓鎮h�呭熀鏈俊鎭�:\"+ex.getMessage());\r\n            }\r\n        }\r\n\r\n        return count;\r\n    }\r\n\r\n    /**\r\n     * 鍚屾鍑哄叆闄俊鎭痋r\n     * @param\r\n     * @return\r\n     */\r\n    private  Integer syncMedInhosp(String startTime,String endTime) {\r\n        Integer count = 0;\r\n        PatMedInhosp patMedInhosp = new PatMedInhosp();\r\n        patMedInhosp.setLastStartTime(startTime);\r\n        patMedInhosp.setLastEndTime(endTime);\r\n        List<PatMedInhosp> patMedInhospList = chMapper.selectPatMedInhospList(patMedInhosp);\r\n        log.info(\"鍙悓姝ュ嚭鍏ラ櫌鏁伴噺\" + patMedInhospList.size());\r\n        for (PatMedInhosp pm : patMedInhospList) {\r\n            try {\r\n                //鎮h�呭熀鏈俊鎭痋r\n                if(ObjectUtils.isNotEmpty(pm.getPatno())) {\r\n                    PatArchive patArchive = new PatArchive();\r\n                    patArchive.setPatientno(pm.getPatno());\r\n                    patArchive.setPageSize(5);\r\n                    List<PatArchive> patArchives = chMapper.selectPatArchiveList(patArchive);\r\n                    if (patArchives.size() > 0) {\r\n                        PatArchive pa1 = new PatArchive();\r\n                        pa1.setPatientno(pm.getPatno());\r\n                        List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa1);\r\n                        if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                            patArchives.get(0).setId(patArchives1.get(0).getId());\r\n                            patArchives.get(0).setUpdateTime(new Date());\r\n                            count += patArchiveMapper.updatePatArchive(patArchives.get(0));\r\n                        } else {\r\n                            patArchives.get(0).setCreateTime(new Date());\r\n                            count += patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n                        }\r\n                    }\r\n                }\r\n            }catch (Exception ex) {\r\n                log.info(\"鍚屾偅鑰呭熀鏈俊鎭�:\" + ex.getMessage());\r\n            }\r\n\r\n            try {\r\n                //鍚屾鍑哄叆闄r\n                PatMedInhosp pmi = new PatMedInhosp();\r\n                pmi.setSerialnum(pm.getSerialnum());\r\n                List<PatMedInhosp> patMedInhospList1 = patMedInhospMapper.selectPatMedInhospListBySerialnum(pmi);\r\n                if (patMedInhospList1.size() == 0) {\r\n                    pm.setCreateTime(new Date());\r\n                    count += patMedInhospMapper.insertPatMedInhosp(pm);\r\n                } else {\r\n                    pm.setInhospid(patMedInhospList1.get(0).getInhospid());\r\n                    pm.setUpdateTime(new Date());\r\n                    count += patMedInhospMapper.updatePatMedInhosp(pm);\r\n                }\r\n            } catch (Exception ex) {\r\n                log.info(\"鍚屾鍑哄叆闄�:\" + ex.getMessage());\r\n            }\r\n        }\r\n        return count;\r\n    }\r\n\r\n    /**\r\n     * 鍚屾闂ㄨ瘖淇℃伅\r\n     * @param\r\n     * @return\r\n     */\r\n    private  Integer syncOuthosp(String startTime,String endTime) {\r\n        Integer count = 0;\r\n        PatMedOuthosp patMedOuthosp = new PatMedOuthosp();\r\n        patMedOuthosp.setLastStartTime(startTime);\r\n        patMedOuthosp.setLastEndTime(endTime);\r\n        List<PatMedOuthosp> patMedOuthosps = chMapper.selectPatMedOuthospList(patMedOuthosp);\r\n        log.info(\"鍚屾闂ㄨ瘖淇℃伅鏁伴噺\" + patMedOuthosps.size());\r\n        for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) {\r\n            try {\r\n                //鎮h�呭熀鏈俊鎭痋r\n                PatArchive patArchive = new PatArchive();\r\n                patArchive.setPatientno(patMedOuthosp1.getPatno());\r\n                List<PatArchive> patArchives = chMapper.selectPatArchiveList(patArchive);\r\n                if (patArchives.size() > 0) {\r\n                    PatArchive pa1 = new PatArchive();\r\n                    pa1.setPatientno(patMedOuthosp1.getPatno());\r\n                    List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa1);\r\n                    if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                        patArchives.get(0).setId(patArchives1.get(0).getId());\r\n                        patArchives.get(0).setUpdateTime(new Date());\r\n                        count += patArchiveMapper.updatePatArchive(patArchives.get(0));\r\n                    } else {\r\n                        patArchives.get(0).setCreateTime(new Date());\r\n                        count += patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n\r\n                    }\r\n                }\r\n            }catch (Exception ex) {\r\n                log.info(\"鍚屾偅鑰呭熀鏈俊鎭�:\" + ex.getMessage());\r\n            }\r\n\r\n            try {\r\n                PatMedOuthosp patMedOuthospTemp = new PatMedOuthosp();\r\n                patMedOuthospTemp.setSerialnum(patMedOuthosp1.getSerialnum());\r\n                List<PatMedOuthosp> patMedOuthospsTemp = chMapper.selectPatMedOuthospList(patMedOuthosp);\r\n                if (patMedOuthospsTemp.size() > 0) {\r\n                    patMedOuthosp1.setUpdateTime(new Date());\r\n                    patMedOuthosp1.setId(patMedOuthospsTemp.get(0).getId());\r\n                    count += patMedOuthospMapper.updatePatMedOuthosp(patMedOuthosp1);\r\n                } else {\r\n                    patMedOuthosp1.setCreateTime(new Date());\r\n                    count += patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp1);\r\n                }\r\n            } catch (Exception ex) {\r\n                log.info(\"鍚屾鍑哄叆闄�:\" + ex.getMessage());\r\n            }\r\n        }\r\n        return count;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectPatMedInhospList(PatMedInhosp patMedInhosp) {\r\n        List<PatMedInhosp> patMedInhospList = chMapper.selectPatMedInhospList(patMedInhosp);\r\n        log.info(\"鍙悓姝ョ梾浜烘暟閲廫"+patMedInhospList.size());\r\n        for (PatMedInhosp pm : patMedInhospList) {\r\n            PatArchive patArchive = new PatArchive();\r\n            patArchive.setPatientno(pm.getPatno());\r\n            List<PatArchive> patArchives = chMapper.selectPatArchiveList(patArchive);\r\n            if (CollectionUtils.isEmpty(patArchives)) {\r\n                //绌轰簡鐩存帴涓㈡帀\r\n                continue;\r\n            }\r\n            PatArchive pa = new PatArchive();\r\n            pa.setPatientno(patArchives.get(0).getPatientno());\r\n            List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa);\r\n            if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                pm.setPatid(patArchives1.get(0).getId());\r\n            } else {\r\n                patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n                pm.setPatid(patArchives.get(0).getId());\r\n            }\r\n            if (!Objects.isNull(patMedInhosp.getStartInHospTime()) && !Objects.isNull(patMedInhosp.getEndInHospTime())) {\r\n                //鍏ラ櫌\r\n                pm.setInhospstate(\"0\");\r\n                pm.setCreateTime(new Date());\r\n                patMedInhospMapper.insertPatMedInhosp(pm);\r\n            } else if (!Objects.isNull(patMedInhosp.getStartOutHospTime()) && !Objects.isNull(patMedInhosp.getEndOutHospTime())) {\r\n                //鍑洪櫌\r\n                pm.setInhospstate(\"1\");\r\n                pm.setUpdateTime(new Date());\r\n                PatMedInhosp pmi = new PatMedInhosp();\r\n                pmi.setSerialnum(pm.getSerialnum());\r\n                List<PatMedInhosp> patMedInhospList1 = patMedInhospMapper.selectPatMedInhospList(pmi);\r\n                if (CollectionUtils.isEmpty(patMedInhospList1)) {\r\n                    pm.setCreateTime(new Date());\r\n                    patMedInhospMapper.insertPatMedInhosp(pm);\r\n                } else {\r\n                    pm.setInhospid(patMedInhospList1.get(0).getInhospid());\r\n                    patMedInhospMapper.updatePatMedInhosp(pm);\r\n                }\r\n\r\n            }\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    @Override\r\n    public Boolean hnDataGather(HnDataGatherVO hnDataGatherVO) {\r\n        if(ObjectUtils.isEmpty(hnDataGatherVO.getStartTime()) )\r\n            hnDataGatherVO.setStartTime(new Date());\r\n        if(ObjectUtils.isEmpty(hnDataGatherVO.getEndTime()) )\r\n            hnDataGatherVO.setEndTime(new Date());\r\n        LocalDate startDate = hnDataGatherVO.getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();\r\n        LocalDate endDate = hnDataGatherVO.getEndTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();\r\n\r\n        Integer po = null;\r\n        // 寰幆澶勭悊姣忎竴澶‐r\n        for (LocalDate currentDate = startDate; !currentDate.isAfter(endDate); currentDate = currentDate.plusDays(1)) {\r\n            PatMedInhosp dailyCondition = new PatMedInhosp();\r\n            //澶勭悊鍏ラ櫌\r\n            LocalDateTime dayStart = currentDate.atStartOfDay();\r\n            LocalDateTime dayEnd = currentDate.atTime(23, 59, 59);\r\n            dailyCondition.setStartInHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            dailyCondition.setEndInHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n            selectPatMedInhospList(dailyCondition);\r\n\r\n            //澶勭悊鍑洪櫌\r\n            dailyCondition.setStartInHospTime(null);\r\n            dailyCondition.setEndInHospTime(null);\r\n            dailyCondition.setStartOutHospTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            dailyCondition.setEndOutHospTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n            selectPatMedInhospList(dailyCondition);\r\n\r\n            //澶勭悊闂ㄨ瘖\r\n            PatMedOuthosp patMedOuthosp = new PatMedOuthosp();\r\n            patMedOuthosp.setBeginTime(Date.from(dayStart.atZone(ZoneId.systemDefault()).toInstant()));\r\n            patMedOuthosp.setEndTime(Date.from(dayEnd.atZone(ZoneId.systemDefault()).toInstant()));\r\n            selectPatMedOuthospList(patMedOuthosp);\r\n        }\r\n        return true;\r\n    }\r\n\r\n\r\n    @Override\r\n    public Integer selectPatMedOuthospList(PatMedOuthosp patMedOuthosp) {\r\n        List<PatMedOuthosp> patMedOuthosps = chMapper.selectPatMedOuthospList(patMedOuthosp);\r\n        log.info(\"selectPatMedOuthospList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", patMedOuthosps.size());\r\n        Integer i = null;\r\n        for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) {\r\n            //鑾峰彇鎮h�呭熀鏈俊鎭痋r\n            PatArchive patArchive = new PatArchive();\r\n            patArchive.setPatientno(patMedOuthosp1.getPatno());\r\n            List<PatArchive> patArchives = chMapper.selectPatArchiveList(patArchive);\r\n\r\n            //鏍规嵁patno鍒ゆ柇鏈湴鎮h�呭熀鏈俊鎭槸鍚﹀瓨鍦╘r\n            PatArchive pa = new PatArchive();\r\n            pa.setPatientno(patMedOuthosp1.getPatno());\r\n            List<PatArchive> patArchives1 = patArchiveMapper.selectPatArchiveList(pa);\r\n            if (CollectionUtils.isNotEmpty(patArchives1)) {\r\n                patMedOuthosp1.setPatid(patArchives1.get(0).getId());\r\n            } else {\r\n                if (CollectionUtils.isEmpty(patArchives)) {\r\n                    continue;\r\n                }\r\n                patArchiveMapper.insertPatArchiveSingle(patArchives.get(0));\r\n                patMedOuthosp1.setPatid(patArchives.get(0).getId());\r\n            }\r\n            i = patMedOuthospMapper.insertPatMedOuthosp(patMedOuthosp1);\r\n        }\r\n\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectIcd10List(Icd10 icd10) {\r\n        List<Icd10> icd10s = chMapper.selectIcd10List(icd10);\r\n        log.info(\"selectIcd10List鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", icd10s.size());\r\n        int size = 0;\r\n        if (icd10s.size() > 500) {\r\n            int i = icd10s.size() / 500;\r\n            for (int a = 0; a < i + 1; a++) {\r\n                if (a >= 0 && a < i) {\r\n                    List<Icd10> icd10Temp = icd10s.subList(a * 500, (a + 1) * 500);\r\n                    size += icd10Mapper.batchIcd10(icd10Temp);\r\n                } else {\r\n                    List<Icd10> icd10Temp = icd10s.subList(i * 500, icd10s.size());\r\n                    if (icd10Temp != null && icd10Temp.size() != 0) {\r\n                        size += icd10Mapper.batchIcd10(icd10Temp);\r\n                    }\r\n                }\r\n            }\r\n        } else {\r\n            size += icd10Mapper.batchIcd10(icd10s);\r\n        }\r\n        return size;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectUserList(SysUser sysUser) {\r\n        List<SysUser> sysUserList = chMapper.selectUserList(sysUser);\r\n        SysUser suerTemp=new SysUser();\r\n        List<SysUserDept> sysUserDeptAll = chMapper.yhyksxx(suerTemp);\r\n        log.info(\"sysUserList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", sysUserList.size());\r\n        int i =0;// sysUser2Mapper.batchUser(sysUserList);\r\n        for (SysUser sysUser1 : sysUserList) {\r\n//            log.info(\"sysUser1鐨処D涓猴細{}\", sysUser1.getUserId());\r\n//            log.info(\"sysUser1鐨凥ISUSERID涓猴細{}\", sysUser1.getHisUserId());\r\n            if (StringUtils.isEmpty(sysUser1.getHisUserId())) continue;\r\n            SysUser suTemp = new SysUser();\r\n            suTemp.setHisUserId(sysUser1.getHisUserId());\r\n            List<SysUser> usersTemp = sysUser2Mapper.selectUserList(suTemp);\r\n            if (usersTemp.size() > 0) {\r\n                sysUser1.setUserId(usersTemp.get(0).getUserId());\r\n                sysUser1.setUserName(sysUser1.getHisUserId());\r\n                sysUser2Mapper.updateUser(sysUser1);\r\n            } else {\r\n                sysUser1.setUserName(sysUser1.getHisUserId());\r\n                sysUser2Mapper.insertUser(sysUser1);\r\n                usersTemp = sysUser2Mapper.selectUserList(suTemp);\r\n            }\r\n\r\n            //鏂板鐢ㄦ埛涓庨儴闂╘r\n            //List<SysUserDept> sysUserDept = chMapper.yhyksxx(sysUser1);\r\n            List<SysUserDept> sysUserDept = sysUserDeptAll.stream()\r\n                    .filter((SysUserDept b) -> b.getUserCode().equals(sysUser1.getHisUserId()))\r\n                    .collect(Collectors.toList());\r\n\r\n            for (SysUserDept sud : sysUserDept) {\r\n                if (usersTemp.size() > 0) {\r\n                    sud.setUserId(usersTemp.get(0).getUserId());\r\n                    SysDept sysDeptTemp = sysDept2Mapper.selectDeptByCode(sud.getDeptCode());\r\n                    if (sysDeptTemp != null)\r\n                        sud.setDeptId(sysDeptTemp.getDeptId());\r\n                    sysUserDeptMapper.insertSysUserDept(sud);\r\n                }\r\n            }\r\n        }\r\n\r\n        return i;\r\n    }\r\n\r\n    @Override\r\n    public Integer selectDeptList(SysDept dept) {\r\n        List<SysDept> sysDepts = chMapper.selectDeptList(dept);\r\n        log.info(\"selectDeptList鐨勯噰闆嗗埌鐨勬暟閲忎负锛歿}\", sysDepts.size());\r\n        int i = sysDept2Mapper.batchDept(sysDepts);\r\n        return i;\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java
---- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/CollectHISServiceImpl.java	(date 1758798203044)
-@@ -417,34 +417,31 @@
- //            log.info("sysUser1鐨処D涓猴細{}", sysUser1.getUserId());
- //            log.info("sysUser1鐨凥ISUSERID涓猴細{}", sysUser1.getHisUserId());
-             if (StringUtils.isEmpty(sysUser1.getHisUserId())) continue;
--            SysUser suTemp = new SysUser();
-+            SysUser suTemp=new SysUser();
-             suTemp.setHisUserId(sysUser1.getHisUserId());
--            List<SysUser> usersTemp = sysUser2Mapper.selectUserList(suTemp);
--            if (usersTemp.size() > 0) {
-+            List<SysUser> usersTemp= sysUser2Mapper.selectUserList(suTemp);
-+            if (usersTemp.size()>0) {
-                 sysUser1.setUserId(usersTemp.get(0).getUserId());
-                 sysUser1.setUserName(sysUser1.getHisUserId());
-                 sysUser2Mapper.updateUser(sysUser1);
--            } else {
-+            }else{
-                 sysUser1.setUserName(sysUser1.getHisUserId());
-                 sysUser2Mapper.insertUser(sysUser1);
--                usersTemp = sysUser2Mapper.selectUserList(suTemp);
-+                usersTemp= sysUser2Mapper.selectUserList(suTemp);
-             }
- 
-             //鏂板鐢ㄦ埛涓庨儴闂�
-             //List<SysUserDept> sysUserDept = chMapper.yhyksxx(sysUser1);
--            List<SysUserDept> sysUserDept = sysUserDeptAll.stream()
-+            List<SysUserDept> sysUserDept=sysUserDeptAll.stream()
-                     .filter((SysUserDept b) -> b.getUserCode().equals(sysUser1.getHisUserId()))
-                     .collect(Collectors.toList());
- 
--            for (SysUserDept sud : sysUserDept) {
--                if (usersTemp.size() > 0) {
--                    sud.setUserId(usersTemp.get(0).getUserId());
--                    SysDept sysDeptTemp = sysDept2Mapper.selectDeptByCode(sud.getDeptCode());
--                    if (sysDeptTemp != null)
--                        sud.setDeptId(sysDeptTemp.getDeptId());
--                    sysUserDeptMapper.insertSysUserDept(sud);
--                }
--            }
-+                for (SysUserDept sud : sysUserDept) {
-+                    if (usersTemp.size() > 0) {
-+                        sud.setUserId(usersTemp.get(0).getUserId());
-+                        sysUserDeptMapper.insertSysUserDept(sud);
-+                    }
-+                }
-         }
- 
-         return i;
-@@ -458,4 +455,33 @@
-         return i;
-     }
- 
-+
-+    /**
-+     * 妫�鏌ュ苟鎵ц鍒嗚〃鐨勬牳蹇冩柟娉�
-+     *
-+     * @param tableName 瑕佹鏌ョ殑琛ㄥ悕
-+     */
-+    private synchronized void checkAndShard(String tableName) {
-+        long currentCount = shardingMapper.getTableCount(tableName);
-+
-+        if (currentCount >= SHARDING_THRESHOLD) {
-+            log.warn("琛� '{}' 宸茶揪鍒板垎琛ㄩ槇鍊� {}锛屽噯澶囨墽琛屽垎琛ㄦ搷浣�...", tableName, SHARDING_THRESHOLD);
-+
-+            String newTableName = tableName + "_" + java.time.LocalDate.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyy_MM"));
-+            Long maxId = shardingMapper.getMaxId(tableName);
-+            if (maxId == null) maxId = 0L;
-+
-+            shardingMapper.renameTable(tableName, newTableName);
-+            log.info("宸插皢琛� '{}' 閲嶅懡鍚嶄负 '{}'", tableName, newTableName);
-+
-+            shardingMapper.createLikeTable(tableName, newTableName);
-+            log.info("宸插垱寤烘柊琛� '{}'", tableName);
-+
-+            shardingMapper.setAutoIncrement(tableName, maxId + 1);
-+            log.info("宸茶缃柊琛� '{}' 鐨勮嚜澧濱D璧峰鍊间负 {}", tableName, maxId + 1);
-+
-+            log.info("琛� '{}' 鐨勫垎琛ㄦ搷浣滃畬鎴愶紒", tableName);
-+        }
-+    }
-+
- }
-Index: smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.PatMedOuthospMapper\">\r\n\r\n    <resultMap type=\"com.smartor.domain.PatMedOuthosp\" id=\"PatMedOuthospResult\">\r\n        <result property=\"id\" column=\"id\"/>\r\n        <result property=\"serialnum\" column=\"serialnum\"/>\r\n        <result property=\"fuflag\" column=\"fuflag\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"hospitalname\" column=\"hospitalname\"/>\r\n        <result property=\"hospitalcode\" column=\"hospitalcode\"/>\r\n        <result property=\"icd10code\" column=\"icd10code\"/>\r\n        <result property=\"diagname\" column=\"diagname\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"deptname\" column=\"deptname\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"admitdate\" column=\"admitdate\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"schemestatus\" column=\"schemestatus\"/>\r\n        <result property=\"deptid\" column=\"deptid\"/>\r\n        <result property=\"schemetime\" column=\"schemetime\"/>\r\n        <result property=\"hpi\" column=\"hpi\"/>\r\n        <result property=\"mainsuit\" column=\"mainsuit\"/>\r\n        <result property=\"outhospno\" column=\"outhospno\"/>\r\n        <result property=\"patname\" column=\"patname\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"patno\" column=\"patno\"/>\r\n        <result property=\"diagcheckFlag\" column=\"diagcheck_flag\"/>\r\n        <result property=\"idcardno\" column=\"idcardno\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"fudate\" column=\"fudate\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectPatMedOuthospVo\">\r\n        select id,\r\n               outhospno,\r\n               diagcheck_flag,\r\n               patno,\r\n               remark,\r\n               fudate,\r\n               fuflag,\r\n               serialnum,\r\n               patid,\r\n               hospitalname,\r\n               hospitalcode,\r\n               icd10code,\r\n               diagname,\r\n               deptcode,\r\n               deptname,\r\n               drcode,\r\n               drname,\r\n               admitdate,\r\n               orgid,\r\n               del_flag,\r\n               guid,\r\n               update_by,\r\n               update_time,\r\n               create_by,\r\n               create_time,\r\n               isupload,\r\n               upload_time,\r\n               schemestatus,\r\n               deptid,\r\n               schemetime,\r\n               hpi,\r\n               patname,\r\n               mainsuit\r\n        from pat_med_outhosp\r\n    </sql>\r\n\r\n    <select id=\"selectPatMedOuthospList\" parameterType=\"com.smartor.domain.PatMedOuthosp\"\r\n            resultMap=\"PatMedOuthospResult\">\r\n        select\r\n        pmo.id,\r\n        pmo.remark,\r\n        pmo.fudate,\r\n        pmo.outhospno,\r\n        pmo.diagcheck_flag,\r\n        pmo.patno,\r\n        pmo.serialnum,\r\n        pmo.patid,\r\n        pmo.hospitalname,\r\n        pmo.hospitalcode,\r\n        pmo.icd10code,\r\n        pmo.diagname,\r\n        pmo.deptcode,\r\n        pmo.deptname,\r\n        pmo.drcode,\r\n        pmo.drname,\r\n        pmo.admitdate,\r\n        pmo.orgid,\r\n        pmo.del_flag,\r\n        pmo.guid,\r\n        pmo.update_by,\r\n        pmo.update_time,\r\n        pmo.create_by,\r\n        pmo.create_time,\r\n        pmo.isupload,\r\n        pmo.upload_time,\r\n        pmo.schemestatus,\r\n        pmo.deptid,\r\n        pmo.schemetime,\r\n        pmo.hpi,\r\n        pmo.fuflag,\r\n        pmo.patname,\r\n        pmo.mainsuit\r\n        from pat_med_outhosp pmo\r\n        <where>\r\n            pmo.del_flag=0\r\n            <if test=\"orgid != null \">and pmo.orgid = #{orgid}</if>\r\n            <if test=\"hospitalname != null  and hospitalname != ''\">and pmo.hospitalname like concat('%',\r\n                #{hospitalname},\r\n                '%')\r\n            </if>\r\n            <if test=\"deptname != null  and deptname != ''\">and pmo.deptname like concat('%', #{deptname}, '%')</if>\r\n            <if test=\"drname != null  and drname != ''\">and pmo.drname like concat('%', #{drname}, '%')</if>\r\n            <if test=\"patname != null  and patname != ''\">and pmo.patname like concat('%', #{patname}, '%')</if>\r\n            <if test=\"beginTime != null \">and date_format(pmo.admitdate,'%y%m%d') &gt;=\r\n                date_format(#{beginTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"endTime != null \">and date_format(pmo.admitdate,'%y%m%d') &lt;=\r\n                date_format(#{endTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"patid != null \">and pmo.patid = #{patid}</if>\r\n            <if test=\"fuflag != null \">and pmo.fuflag = #{fuflag}</if>\r\n            <if test=\"patno != null \">and pmo.patno = #{patno}</if>\r\n            <if test=\"outhospno != null  and outhospno != ''\">and pmo.outhospno = #{outhospno}</if>\r\n            <if test=\"diagcheckFlag != null  and diagcheckFlag != ''\">and pmo.diagcheck_flag = #{diagcheckFlag}</if>\r\n            <if test=\"diagname != null  and diagname != ''\">and pmo.diagname like concat('%',#{diagname}, '%')</if>\r\n        </where>\r\n        order by pmo.update_time desc\r\n    </select>\r\n\r\n    <select id=\"selectPatMedOuthospById\" parameterType=\"Long\" resultMap=\"PatMedOuthospResult\">\r\n        <include refid=\"selectPatMedOuthospVo\"/>\r\n        where id = #{id}\r\n    </select>\r\n\r\n    <insert id=\"insertPatMedOuthosp\" parameterType=\"com.smartor.domain.PatMedOuthosp\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"id\">\r\n        insert into pat_med_outhosp\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">serialnum,</if>\r\n            <if test=\"patid != null\">patid,</if>\r\n            <if test=\"hospitalname != null\">hospitalname,</if>\r\n            <if test=\"hospitalcode != null\">hospitalcode,</if>\r\n            <if test=\"icd10code != null\">icd10code,</if>\r\n            <if test=\"diagname != null\">diagname,</if>\r\n            <if test=\"deptcode != null\">deptcode,</if>\r\n            <if test=\"deptname != null\">deptname,</if>\r\n            <if test=\"drcode != null\">drcode,</if>\r\n            <if test=\"drname != null\">drname,</if>\r\n            <if test=\"admitdate != null\">admitdate,</if>\r\n            <if test=\"orgid != null\">orgid,</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag,</if>\r\n            <if test=\"updateBy != null\">update_by,</if>\r\n            <if test=\"updateTime != null\">update_time,</if>\r\n            <if test=\"createBy != null\">create_by,</if>\r\n            <if test=\"createTime != null\">create_time,</if>\r\n            <if test=\"isupload != null\">isupload,</if>\r\n            <if test=\"uploadTime != null\">upload_time,</if>\r\n            <if test=\"schemestatus != null\">schemestatus,</if>\r\n            <if test=\"deptid != null\">deptid,</if>\r\n            <if test=\"schemetime != null\">schemetime,</if>\r\n            <if test=\"hpi != null\">hpi,</if>\r\n            <if test=\"mainsuit != null\">mainsuit,</if>\r\n            <if test=\"outhospno != null\">outhospno,</if>\r\n            <if test=\"patname != null\">patname,</if>\r\n            <if test=\"guid != null\">guid,</if>\r\n            <if test=\"patno != null\">patno,</if>\r\n            <if test=\"diagcheckFlag != null\">diagcheck_flag,</if>\r\n            <if test=\"remark != null\">remark,</if>\r\n            <if test=\"fuflag != null\">fuflag,</if>\r\n            <if test=\"fudate != null\">fudate,</if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">#{serialnum},</if>\r\n            <if test=\"patid != null\">#{patid},</if>\r\n            <if test=\"hospitalname != null\">#{hospitalname},</if>\r\n            <if test=\"hospitalcode != null\">#{hospitalcode},</if>\r\n            <if test=\"icd10code != null\">#{icd10code},</if>\r\n            <if test=\"diagname != null\">#{diagname},</if>\r\n            <if test=\"deptcode != null\">#{deptcode},</if>\r\n            <if test=\"deptname != null\">#{deptname},</if>\r\n            <if test=\"drcode != null\">#{drcode},</if>\r\n            <if test=\"drname != null\">#{drname},</if>\r\n            <if test=\"admitdate != null\">#{admitdate},</if>\r\n            <if test=\"orgid != null\">#{orgid},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">#{delFlag},</if>\r\n            <if test=\"updateBy != null\">#{updateBy},</if>\r\n            <if test=\"updateTime != null\">#{updateTime},</if>\r\n            <if test=\"createBy != null\">#{createBy},</if>\r\n            <if test=\"createTime != null\">#{createTime},</if>\r\n            <if test=\"isupload != null\">#{isupload},</if>\r\n            <if test=\"uploadTime != null\">#{uploadTime},</if>\r\n            <if test=\"schemestatus != null\">#{schemestatus},</if>\r\n            <if test=\"deptid != null\">#{deptid},</if>\r\n            <if test=\"schemetime != null\">#{schemetime},</if>\r\n            <if test=\"hpi != null\">#{hpi},</if>\r\n            <if test=\"mainsuit != null\">#{mainsuit},</if>\r\n            <if test=\"outhospno != null\">#{outhospno},</if>\r\n            <if test=\"patname != null\">#{patname},</if>\r\n            <if test=\"guid != null\">#{guid},</if>\r\n            <if test=\"patno != null\">#{patno},</if>\r\n            <if test=\"diagcheckFlag != null\">#{diagcheckFlag},</if>\r\n            <if test=\"remark != null\">#{remark},</if>\r\n            <if test=\"fuflag != null\">#{fuflag},</if>\r\n            <if test=\"fudate != null\">#{fudate},</if>\r\n        </trim>\r\n    </insert>\r\n\r\n    <insert id=\"batchPatMedOuthosp\">\r\n        insert into pat_med_outhosp\r\n        (\r\n        serialnum,\r\n        patid,\r\n        hospitalname,\r\n        hospitalcode,\r\n        icd10code,\r\n        diagname,\r\n        deptcode,\r\n        deptname,\r\n        drcode,\r\n        drname,\r\n        admitdate,\r\n        orgid,\r\n        del_flag,\r\n        update_by,\r\n        update_time,\r\n        create_by,\r\n        create_time,\r\n        isupload,\r\n        upload_time,\r\n        schemestatus,\r\n        deptid,\r\n        schemetime,\r\n        hpi,\r\n        mainsuit,\r\n        outhospno,\r\n        patname,\r\n        guid,\r\n        patno,\r\n        diagcheck_flag,\r\n        fuflag,\r\n        fudate,\r\n        remark)\r\n        values\r\n        <foreach collection=\"list\" item=\"item\" separator=\",\">\r\n            (\r\n            #{item.serialnum},\r\n            #{item.patid},\r\n            #{item.hospitalname},\r\n            #{item.hospitalcode},\r\n            #{item.icd10code},\r\n            #{item.diagname},\r\n            #{item.deptcode},\r\n            #{item.deptname},\r\n            #{item.drcode},\r\n            #{item.drname},\r\n            #{item.admitdate},\r\n            #{item.orgid},\r\n            #{item.delFlag},\r\n            #{item.updateBy},\r\n            #{item.updateTime},\r\n            #{item.createBy},\r\n            #{item.createTime},\r\n            #{item.isupload},\r\n            #{item.uploadTime},\r\n            #{item.schemestatus},\r\n            #{item.deptid},\r\n            #{item.schemetime},\r\n            #{item.hpi},\r\n            #{item.mainsuit},\r\n            #{item.outhospno},\r\n            #{item.patname},\r\n            #{item.guid},\r\n            #{item.patno},\r\n            #{item.diagcheckFlag},\r\n            #{item.fuflag},\r\n            #{item.fudate},\r\n            #{item.remark}\r\n            )\r\n        </foreach>\r\n    </insert>\r\n\r\n\r\n    <update id=\"updatePatMedOuthosp\" parameterType=\"com.smartor.domain.PatMedOuthosp\">\r\n        update pat_med_outhosp\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">serialnum = #{serialnum},</if>\r\n            <if test=\"patid != null\">patid = #{patid},</if>\r\n            <if test=\"hospitalname != null\">hospitalname = #{hospitalname},</if>\r\n            <if test=\"hospitalcode != null\">hospitalcode = #{hospitalcode},</if>\r\n            <if test=\"icd10code != null\">icd10code = #{icd10code},</if>\r\n            <if test=\"diagname != null\">diagname = #{diagname},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"deptname != null\">deptname = #{deptname},</if>\r\n            <if test=\"drcode != null\">drcode = #{drcode},</if>\r\n            <if test=\"drname != null\">drname = #{drname},</if>\r\n            <if test=\"admitdate != null\">admitdate = #{admitdate},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag = #{delFlag},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"schemestatus != null\">schemestatus = #{schemestatus},</if>\r\n            <if test=\"deptid != null\">deptid = #{deptid},</if>\r\n            <if test=\"schemetime != null\">schemetime = #{schemetime},</if>\r\n            <if test=\"hpi != null\">hpi = #{hpi},</if>\r\n            <if test=\"mainsuit != null\">mainsuit = #{mainsuit},</if>\r\n            <if test=\"outhospno != null\">outhospno = #{outhospno},</if>\r\n            <if test=\"patname != null\">patname = #{patname},</if>\r\n            <if test=\"guid != null\">guid = #{guid},</if>\r\n            <if test=\"patno != null\">patno = #{patno},</if>\r\n            <if test=\"diagcheckFlag != null\">diagcheck_flag = #{diagcheckFlag},</if>\r\n            <if test=\"remark != null\">remark = #{remark},</if>\r\n            <if test=\"fuflag != null\">fuflag = #{fuflag},</if>\r\n            <if test=\"fudate != null\">fudate = #{fudate},</if>\r\n        </trim>\r\n        where id = #{id}\r\n    </update>\r\n\r\n    <delete id=\"deletePatMedOuthospById\" parameterType=\"Long\">\r\n        delete\r\n        from pat_med_outhosp\r\n        where id = #{id}\r\n    </delete>\r\n\r\n    <delete id=\"deletePatMedOuthospByIds\" parameterType=\"String\">\r\n        delete from pat_med_outhosp where id in\r\n        <foreach item=\"id\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{id}\r\n        </foreach>\r\n    </delete>\r\n\r\n    <select id=\"selectPatMedOuthospCount\" parameterType=\"com.smartor.domain.PatMedReq\"\r\n            resultType=\"com.smartor.domain.PatMedRes\">\r\n        SELECT SUM( rs ) AS rs,\r\n        SUM( rc ) AS rc\r\n        FROM (\r\n        SELECT\r\n        COUNT(id) AS rc,\r\n        0 AS rs\r\n        FROM\r\n        pat_med_outhosp\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"orgid != null\">\r\n                and orgid = #{orgid}\r\n            </if>\r\n            and date_format(admitdate,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n            and date_format(admitdate,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n            <if test=\"deptcodeList != null and deptcodeList.size()>0\">\r\n                and deptcode in\r\n                <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        union all\r\n        select\r\n        0 AS rc,\r\n        count(1) AS rs\r\n        FROM\r\n        service_subtask\r\n        <where>\r\n            del_flag = 0\r\n            and service_type=3\r\n            <if test=\"orgid != null\">\r\n                and orgid = #{orgid}\r\n            </if>\r\n            <if test=\"startDate != null\">\r\n                AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )\r\n            </if>\r\n            <if test=\"endDate != null\">\r\n                AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')\r\n            </if>\r\n            <if test=\"deptcodeList != null and deptcodeList.size()>0\">\r\n                and deptcode in\r\n                <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        ) AS combined_data\r\n    </select>\r\n\r\n    <select id=\"getDeptRanking\" parameterType=\"com.smartor.domain.PatMedReq\" resultType=\"com.smartor.domain.PatMedRes\">\r\n        SELECT deptname, COUNT(1) AS rc\r\n        FROM pat_med_outhosp\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"inhospstate != inhospstate\">\r\n                and inhospstate= #{inhospstate}\r\n            </if>\r\n            <if test=\"deptcodeList != null and deptcodeList.size()>0\">\r\n                and deptcode in\r\n                <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <!-- PatMedOuthospMapper.xml -->\r\n    <select id=\"countPatMedOuthosp\" resultType=\"int\">\r\n        SELECT COUNT(*)\r\n        FROM pat_med_outhosp\r\n    </select>\r\n\r\n    <update id=\"renameTable\">\r\n        RENAME\r\n        TABLE\r\n        ${oldName}\r\n        TO\r\n        ${newName}\r\n    </update>\r\n\r\n    <update id=\"createPatMedOuthosp\">\r\n        CREATE TABLE ${newName} LIKE ${templateName}\r\n    </update>\r\n\r\n    <update id=\"createPatMedOuthospAutoAdd\">\r\n        ALTER TABLE ${newName} MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT;\r\n    </update>\r\n\r\n    <update id=\"setAutoIncrement\">\r\n        ALTER TABLE ${tableName} AUTO_INCREMENT = #{autoInc}\r\n    </update>\r\n\r\n    <select id=\"getAllOuthospTableNames\" resultType=\"String\">\r\n        SELECT table_name\r\n        FROM information_schema.tables\r\n        WHERE table_schema = DATABASE()\r\n          AND table_name LIKE 'pat_med_outhosp%'\r\n    </select>\r\n\r\n    <select id=\"getMaxIdFromTable\" resultType=\"Long\">\r\n        SELECT IFNULL(MAX(id), 0)\r\n        FROM ${tableName}\r\n    </select>\r\n\r\n    <update id=\"createOrReplaceView\">\r\n        ${viewSql}\r\n    </update>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml	(date 1758798203054)
-@@ -122,6 +122,15 @@
-                 #{hospitalname},
-                 '%')
-             </if>
-+            <if test="deptcodes != null and deptcodes.size()>0">
-+                AND  pmo.deptcode IN
-+                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
-+                         close=")">
-+                    #{deptcode}
-+                </foreach>
-+            </if>
-+
-+
-             <if test="deptname != null  and deptname != ''">and pmo.deptname like concat('%', #{deptname}, '%')</if>
-             <if test="drname != null  and drname != ''">and pmo.drname like concat('%', #{drname}, '%')</if>
-             <if test="patname != null  and patname != ''">and pmo.patname like concat('%', #{patname}, '%')</if>
-Index: smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport java.util.*;\r\n\r\nimport com.fasterxml.jackson.core.JsonProcessingException;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.http.HttpUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.apache.commons.lang3.StringUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.*;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.scheduling.annotation.Async;\r\nimport org.springframework.stereotype.Service;\r\nimport com.smartor.service.IServiceTaskService;\r\nimport org.springframework.transaction.annotation.Transactional;\r\n\r\n/**\r\n * 璇煶浠诲姟Service涓氬姟灞傚鐞哱r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@Slf4j\r\n@Service\r\npublic class ServiceTaskServiceImpl implements IServiceTaskService {\r\n    @Autowired\r\n    private ServiceTaskMapper serviceTaskMapper;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private ServiceTaskdeptMapper serviceTaskdeptMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveImportMapper patArchiveImportMapper;\r\n\r\n\r\n    @Autowired\r\n    private SvyTaskTemplateMapper svyTaskTemplateMapper;\r\n\r\n    @Autowired\r\n    private HeLibraryMapper heLibraryMapper;\r\n\r\n    @Autowired\r\n    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;\r\n\r\n    @Autowired\r\n    private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;\r\n\r\n    @Autowired\r\n    private PatArchiveMapper patArchiveMapper;\r\n\r\n\r\n    @Autowired\r\n    private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetOptionMapper;\r\n\r\n    @Autowired\r\n    private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    /**\r\n     * 鏌ヨ璇煶浠诲姟\r\n     *\r\n     * @param taskid 璇煶浠诲姟涓婚敭\r\n     * @return 璇煶浠诲姟\r\n     */\r\n    @Override\r\n    public ServiceTask selectServiceTaskByTaskid(Long taskid) {\r\n        return serviceTaskMapper.selectServiceTaskByTaskid(taskid);\r\n    }\r\n\r\n    @Override\r\n    public List<ServiceTask> selectServiceTaskAndtaskDeptList(ServiceTask serviceTask) {\r\n        //濡傛灉涓�0涓嶇疆绌猴紝浼氬奖鍝嶅埌鎴戠殑鏌ヨ\r\n        if (CollectionUtils.isEmpty(serviceTask.getLeaveldeptcodes()) || serviceTask.getLeaveldeptcodes().size() == 0)\r\n            serviceTask.setLeaveldeptcodes(new ArrayList<>());\r\n        if (!CollectionUtils.isEmpty(serviceTask.getLeavehospitaldistrictcodes()) && serviceTask.getLeavehospitaldistrictcodes().size() > 0) {\r\n            List<String> leaveldeptcodes = serviceTask.getLeaveldeptcodes();\r\n            leaveldeptcodes.addAll(serviceTask.getLeavehospitaldistrictcodes());\r\n            serviceTask.setLeaveldeptcodes(leaveldeptcodes);\r\n        }\r\n        return serviceTaskMapper.selectServiceTaskAndtaskDeptList(serviceTask);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ璇煶浠诲姟鍒楄〃\r\n     *\r\n     * @param serviceTask 璇煶浠诲姟\r\n     * @return 璇煶浠诲姟\r\n     */\r\n    @Override\r\n\r\n    public List<ServiceTask> selectServiceTaskList(ServiceTask serviceTask) {\r\n        //濡傛灉涓�0涓嶇疆绌猴紝浼氬奖鍝嶅埌鎴戠殑鏌ヨ\r\n        if (CollectionUtils.isEmpty(serviceTask.getLeaveldeptcodes()) || serviceTask.getLeaveldeptcodes().size() == 0)\r\n            serviceTask.setLeaveldeptcodes(null);\r\n        if (CollectionUtils.isEmpty(serviceTask.getLeavehospitaldistrictcodes()) || serviceTask.getLeavehospitaldistrictcodes().size() == 0)\r\n            serviceTask.setLeavehospitaldistrictcodes(null);\r\n        return serviceTaskMapper.selectServiceTaskList(serviceTask);\r\n    }\r\n\r\n    /**\r\n     * 鏂板璇煶浠诲姟\r\n     *\r\n     * @param serviceTask 璇煶浠诲姟\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertServiceTask(ServiceTask serviceTask) {\r\n        serviceTask.setCreateTime(DateUtils.getNowDate());\r\n        serviceTask.setUpdateTime(DateUtils.getNowDate());\r\n        return serviceTaskMapper.insertServiceTask(serviceTask);\r\n    }\r\n\r\n    /**\r\n     * 淇敼璇煶浠诲姟\r\n     *\r\n     * @param serviceTask 璇煶浠诲姟\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateServiceTask(ServiceTask serviceTask) {\r\n        serviceTask.setUpdateTime(DateUtils.getNowDate());\r\n        return serviceTaskMapper.updateServiceTask(serviceTask);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎璇煶浠诲姟\r\n     *\r\n     * @param taskids 闇�瑕佸垹闄ょ殑璇煶浠诲姟涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteServiceTaskByTaskids(Long[] taskids) {\r\n        return serviceTaskMapper.deleteServiceTaskByTaskids(taskids);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎璇煶浠诲姟淇℃伅\r\n     *\r\n     * @param taskid 璇煶浠诲姟涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Transactional(rollbackFor = Exception.class)\r\n    @Override\r\n    public Boolean deleteServiceTaskByTaskid(Long taskid) {\r\n        ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n        serviceSubtask.setTaskid(taskid);\r\n\r\n        //鏌ヨ瀛愪换鍔r\n        ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);\r\n        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n        for (ServiceSubtask ss : serviceSubtaskList) {\r\n            log.error(\"sfSend闇�瑕佺Щ闄ょ殑subId涓猴細{}\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-exist\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-0\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-1\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-2\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-3\", ss.getId().toString());\r\n            redisCache.removeElementFromList(\"cache-4\", ss.getId().toString());\r\n        }\r\n\r\n        serviceSubtask.setDelFlag(\"1\");\r\n        Boolean aBoolean = serviceSubtaskMapper.updateServiceSubtaskByPatId(serviceSubtask);\r\n\r\n        //鍏宠仈琛ㄥ垹闄r\n        ServiceTaskdept serviceTaskdept = new ServiceTaskdept();\r\n        serviceTaskdept.setTaskId(taskid);\r\n        int i = serviceTaskdeptMapper.deleteServiceTaskdeptByTaskId(serviceTaskdept);\r\n\r\n        Boolean isSuccess = false;\r\n        if (!aBoolean || i <= 0) {\r\n            new BaseException(\"浠诲姟鍒犻櫎澶辫触\");\r\n        }\r\n        isSuccess = serviceTaskMapper.deleteServiceTaskByTaskid(taskid);\r\n        return isSuccess;\r\n    }\r\n\r\n\r\n    /**\r\n     * 鑾峰彇闅忚鍙婃椂鐜嘰r\n     *\r\n     * @param serviceSubtask\r\n     * @return\r\n     */\r\n    public Map<String, Object> selectTimelyRate(ServiceSubtask serviceSubtask) {\r\n        if (serviceSubtask.getEndtime() != null && new Date().before(serviceSubtask.getEndtime())) {\r\n            serviceSubtask.setEndtime(new Date());\r\n        }\r\n        Double dob = serviceSubtaskMapper.selectTimelyRate(serviceSubtask);\r\n        // 1. 鏌ヨ鍏ㄩ儴鏁版嵁锛圫QL涓嶅垎椤碉級\r\n        List<ServiceSubtask> allList = serviceSubtaskMapper.selectTimelyRateDetail(serviceSubtask);\r\n        // 2. Java浠g爜鍒嗛〉\r\n        int pageNum = serviceSubtask.getPn() != null ? serviceSubtask.getPn() : 1;\r\n        int pageSize = serviceSubtask.getPs() != null ? serviceSubtask.getPs() : 10;\r\n        int fromIndex = (pageNum - 1) * pageSize;\r\n        int toIndex = Math.min(fromIndex + pageSize, allList.size());\r\n        List<ServiceSubtask> pageList = new ArrayList<>();\r\n        if (fromIndex < allList.size()) {\r\n            pageList = allList.subList(fromIndex, toIndex);\r\n        }\r\n        log.info(\"浠g爜鍒嗛〉鍙傛暟: pageNum={}, pageSize={}, fromIndex={}, toIndex={}, total={}\", pageNum, pageSize, fromIndex, toIndex, allList.size());\r\n        Map<String, Object> map = new HashMap<>();\r\n        map.put(\"rate\", dob);\r\n        map.put(\"detail\", pageList);\r\n        map.put(\"total\", allList.size()); // 鍙�夛細杩斿洖鎬绘暟\r\n        return map;\r\n    }\r\n\r\n    @Override\r\n    public Map<String, Object> getScriptInfoByCondition(Long taskid, Long patid, Boolean isFinish, String patfrom) {\r\n        Map<String, Object> map = new HashMap<>();\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setPatid(patid);\r\n        serviceSubtaskVO.setTaskid(taskid);\r\n//        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n//        //鏌ヨ鎮h�呮槸鍚﹂噸瑕嗗仛棰榎r\n//        if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {\r\n//            Long submit = selectServiceSubtaskList.get(0).getSubmit();\r\n//            if (submit == 1L) {\r\n//                map.put(\"submit\", \"1\");\r\n//                return map;\r\n//            }\r\n//        }\r\n        //閫氳繃浠诲姟ID鑾峰彇妯℃澘ID\r\n        ServiceTask serviceTask = selectServiceTaskByTaskid(taskid);\r\n        List info = new ArrayList();\r\n        if (serviceTask.getType().equals(\"1\")) {\r\n            //闅忚\r\n            log.error(\"鏂囨湰闅忚闂\");\r\n            info = sfInfo(serviceTask, patid, patfrom);\r\n        } else if (serviceTask.getType().equals(\"2\")) {\r\n            //闂嵎\r\n            log.error(\"鏂囨湰闂嵎闂\");\r\n            info = wjInfo(serviceTask, patid, isFinish, patfrom);\r\n        } else {\r\n            //瀹f暀\r\n            info = xjInfo(Long.valueOf(serviceTask.getLibtemplateid()), taskid, patid, isFinish);\r\n            //鍙鎵撳紑浜嗛〉闈紝灏辩畻鎴愬姛\r\n            if (isFinish) {\r\n                ServiceSubtask ss = new ServiceSubtask();\r\n                ss.setTaskid(taskid);\r\n                ss.setPatid(patid);\r\n                Integer integer = serviceSubtaskMapper.selectSendstateByCondition(ss);\r\n                if (integer != null && integer != 6) {\r\n                    ss.setSendstate(1L);\r\n//                    ss.setResult(\"success\");\r\n//                    ss.setFinishtime(new Date());\r\n                    serviceSubtaskMapper.updateServiceSubtaskByCondition(ss);\r\n                }\r\n            }\r\n        }\r\n\r\n        SvyTaskTemplate svyTaskTemplate = svyTaskTemplateMapper.selectSvyTaskTemplateBySvyid(serviceTask.getTemplateid());\r\n        if (StringUtils.isNotEmpty(serviceTask.getKcb())) map.put(\"kcb\", serviceTask.getKcb());\r\n        map.put(\"script\", info);\r\n        if (StringUtils.isNotEmpty(serviceTask.getJsy())) map.put(\"jsy\", serviceTask.getJsy());\r\n        map.put(\"type\", serviceTask.getType());\r\n        map.put(\"taskName\", serviceTask.getTaskName());\r\n        map.put(\"submit\", \"0\");\r\n        return map;\r\n    }\r\n\r\n    /**\r\n     * 闅忚淇℃伅\r\n     *\r\n     * @param serviceTask\r\n     * @param patid\r\n     * @return\r\n     */\r\n    public List sfInfo(ServiceTask serviceTask, Long patid, String patfrom) {\r\n        //閫氳繃妯℃澘ID鑾峰彇闂淇℃伅\r\n        IvrLibaTemplateScript ivrLibaTemplateScript = new IvrLibaTemplateScript();\r\n        ivrLibaTemplateScript.setTemplateid(Long.valueOf(serviceTask.getLibtemplateid()));\r\n        ivrLibaTemplateScript.setDelFlag(\"0\");\r\n        List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);\r\n        if (CollectionUtils.isEmpty(ivrLibaTemplateScripts) || ivrLibaTemplateScripts.size() == 0) {\r\n            log.info(\"ivrLibaTemplateScripts涓虹┖浜嗭紝璇峰敖蹇仈绯荤鐞嗗憳澶勭悊\");\r\n            return new ArrayList<>();\r\n        }\r\n        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScripts, IvrLibaTemplateScriptVO.class);\r\n\r\n        //鑾峰彇鎮h�呬俊鎭痋r\n        PatArchive patArchive = null;\r\n        if (patfrom.equals(\"0\")) patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);\r\n        else if (patfrom.equals(\"1\")) {\r\n            PatArchiveImport patArchiveImport = patArchiveImportMapper.selectPatArchiveImportById(patid);\r\n            patArchive = DtoConversionUtils.sourceToTarget(patArchiveImport, PatArchive.class);\r\n        }\r\n\r\n        //閫氳繃鎮h�呬俊鎭拰浠诲姟淇℃伅涓殑textParam瀵归棶棰樹腑鐨勫彉閲忚繘琛屽~鍏匼r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        Map<String, Map<String, String>> serviceTaskMap = null;\r\n        try {\r\n            serviceTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);\r\n        } catch (JsonProcessingException e) {\r\n            e.printStackTrace();\r\n        }\r\n        List<Map<String, String>> mapList = new ArrayList<>();\r\n\r\n        for (Map<String, String> map : serviceTaskMap.values()) {\r\n            mapList.add(map);\r\n        }\r\n\r\n        //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹r\n        for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOS) {\r\n            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getScriptContent())) {\r\n                for (Map<String, String> map : mapList) {\r\n                    for (String key : map.keySet()) {\r\n\r\n                        ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : \"\"));\r\n                    }\r\n                }\r\n                //鏇挎崲鎮h�呬釜浜轰俊鎭暟鎹甛r\n                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace(\"${name}\", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : \"\"));\r\n                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace(\"${dzz}\", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : \"\"));\r\n                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace(\"${dhh}\", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : \"\"));\r\n\r\n                //鑾峰彇闂閫夐」\r\n                IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption = new IvrLibaTemplateTargetoption();\r\n                ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScriptVO.getId());\r\n                List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = ivrLibaTemplateTargetOptionMapper.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);\r\n                ivrLibaTemplateScriptVO.setIvrLibaScriptTargetoptionList(ivrLibaTemplateTargetoptions);\r\n            }\r\n        }\r\n        Collections.sort(ivrLibaTemplateScriptVOS, Comparator.comparingLong(IvrLibaTemplateScriptVO::getSort));\r\n\r\n        return ivrLibaTemplateScriptVOS;\r\n    }\r\n\r\n    /**\r\n     * 闂嵎淇℃伅\r\n     *\r\n     * @param serviceTask\r\n     * @param patid\r\n     * @return\r\n     */\r\n    private List wjInfo(ServiceTask serviceTask, Long patid, Boolean isFinish, String patfrom) {\r\n        //鐢ㄦ埛鐐瑰嚮浜嗗閾撅紝灏辩畻浠栭鍙栦簡\r\n        //杩欐牱鍋氫細鏈変竴涓棶棰橈紝濡傛灉鍥哄畾浠诲姟锛屼細鍑虹幇涓�涓换鍔¢噷锛屾湁澶氫釜璇ユ偅鑰匼r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskid(serviceTask.getTaskid());\r\n        serviceSubtaskVO.setPatid(patid);\r\n        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n        if (CollectionUtils.isNotEmpty(serviceSubtaskList) && serviceSubtaskList.size() == 1) {\r\n            if (serviceSubtaskList.get(0).getSendstate() == 3 && isFinish == true) {\r\n                ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n                serviceSubtask.setSendstate(1L);\r\n                serviceSubtask.setPatid(patid);\r\n                serviceSubtask.setTaskid(serviceTask.getTaskid());\r\n                serviceSubtaskMapper.updateServiceSubtaskByPatId(serviceSubtask);\r\n            }\r\n        }\r\n        //閫氳繃妯℃澘ID鑾峰彇闂淇℃伅\r\n        SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();\r\n        svyLibTemplateScript.setSvyid(Long.valueOf(serviceTask.getLibtemplateid()));\r\n        svyLibTemplateScript.setDelFlag(\"0\");\r\n        List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);\r\n        if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) {\r\n            log.info(\"ivrLibaTemplateScripts涓虹┖浜嗭紝璇峰敖蹇仈绯荤鐞嗗憳澶勭悊\");\r\n            return new ArrayList<>();\r\n        }\r\n        List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyLibTemplateScripts, SvyLibTemplateScriptVO.class);\r\n\r\n        //鑾峰彇鎮h�呬俊鎭痋r\n        PatArchive patArchive = null;\r\n        if (patfrom.equals(\"0\")) patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);\r\n        else if (patfrom.equals(\"1\")) {\r\n            PatArchiveImport patArchiveImport = patArchiveImportMapper.selectPatArchiveImportById(patid);\r\n            patArchive = DtoConversionUtils.sourceToTarget(patArchiveImport, PatArchive.class);\r\n        }\r\n\r\n\r\n        //閫氳繃鎮h�呬俊鎭拰浠诲姟淇℃伅涓殑textParam瀵归棶棰樹腑鐨勫彉閲忚繘琛屽~鍏匼r\n        ObjectMapper objectMapper = new ObjectMapper();\r\n        Map<String, Map<String, String>> ivrTaskMap = null;\r\n        try {\r\n            ivrTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);\r\n        } catch (JsonProcessingException e) {\r\n            e.printStackTrace();\r\n        }\r\n        List<Map<String, String>> mapList = new ArrayList<>();\r\n\r\n        for (Map<String, String> map : ivrTaskMap.values()) {\r\n            mapList.add(map);\r\n        }\r\n\r\n        //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹r\n        for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOS) {\r\n            if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent())) {\r\n                for (Map<String, String> map : mapList) {\r\n                    for (String key : map.keySet()) {\r\n\r\n                        svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : \"\"));\r\n                    }\r\n                }\r\n                //鏇挎崲鎮h�呬釜浜轰俊鎭暟鎹甛r\n                log.error(\"闂id锛歿},   闂鍐呭锛歿}\", svyLibTemplateScriptVO.getId(), svyLibTemplateScriptVO.getScriptContent());\r\n                if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent()) && ObjectUtils.isNotEmpty(patArchive)) {\r\n                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(\"${name}\", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : \"\"));\r\n                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(\"${dzz}\", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : \"\"));\r\n                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(\"${dhh}\", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : \"\"));\r\n                }\r\n                //鑾峰彇闂閫夐」\r\n                SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();\r\n                svyLibTemplateTargetoption.setScriptid(svyLibTemplateScriptVO.getId());\r\n                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);\r\n                svyLibTemplateScriptVO.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);\r\n            }\r\n        }\r\n        Collections.sort(svyLibTemplateScriptVOS, Comparator.comparingLong(SvyLibTemplateScriptVO::getSort));\r\n        return svyLibTemplateScriptVOS;\r\n    }\r\n\r\n    private List xjInfo(Long templateId, Long taskid, Long patid, Boolean isFinish) {\r\n        if (isFinish == true) {\r\n            ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n            serviceSubtask.setTaskid(taskid);\r\n            serviceSubtask.setPatid(patid);\r\n            Integer integer = serviceSubtaskMapper.selectSendstateByCondition(serviceSubtask);\r\n            if (integer == 3) {\r\n                serviceSubtask.setResult(\"瀹屾垚\");\r\n                serviceSubtask.setFinishtime(new Date());\r\n                serviceSubtask.setSendstate(6L);\r\n                serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);\r\n            }\r\n        }\r\n        HeLibrary heLibrary = heLibraryMapper.selectHeLibraryById(Long.valueOf(templateId));\r\n        List list = new ArrayList();\r\n        list.add(heLibrary);\r\n        return list;\r\n\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceTaskServiceImpl.java	(date 1758869535896)
-@@ -45,13 +45,15 @@
- 
- 
-     @Autowired
--    private SvyTaskTemplateMapper svyTaskTemplateMapper;
-+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
- 
-     @Autowired
-     private HeLibraryMapper heLibraryMapper;
- 
-     @Autowired
-     private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
-+    @Autowired
-+    private IvrTaskTemplateScriptMapper ivrTaskTemplateScriptMapper;
- 
-     @Autowired
-     private SvyLibTemplateScriptMapper svyLibTemplateScriptMapper;
-@@ -59,9 +61,17 @@
-     @Autowired
-     private PatArchiveMapper patArchiveMapper;
- 
-+    @Autowired
-+    private PatMedInhospMapper patMedInhospMapper;
-+
-+    @Autowired
-+    private PatMedOuthospMapper patMedOuthospMapper;
-+
- 
-     @Autowired
-     private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetOptionMapper;
-+    @Autowired
-+    private IvrTaskTemplateTargetoptionMapper ivrTaskTemplateTargetOptionMapper;
- 
-     @Autowired
-     private SvyLibTemplateTargetoptionMapper svyLibTemplateTargetoptionMapper;
-@@ -224,7 +234,8 @@
-         ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-         serviceSubtaskVO.setPatid(patid);
-         serviceSubtaskVO.setTaskid(taskid);
--//        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-+        serviceSubtaskVO.setSendstate(3L);
-+        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
- //        //鏌ヨ鎮h�呮槸鍚﹂噸瑕嗗仛棰�
- //        if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {
- //            Long submit = selectServiceSubtaskList.get(0).getSubmit();
-@@ -255,14 +266,26 @@
-                 Integer integer = serviceSubtaskMapper.selectSendstateByCondition(ss);
-                 if (integer != null && integer != 6) {
-                     ss.setSendstate(1L);
--//                    ss.setResult("success");
--//                    ss.setFinishtime(new Date());
-                     serviceSubtaskMapper.updateServiceSubtaskByCondition(ss);
-                 }
-             }
-         }
- 
--        SvyTaskTemplate svyTaskTemplate = svyTaskTemplateMapper.selectSvyTaskTemplateBySvyid(serviceTask.getTemplateid());
-+        if (CollectionUtils.isNotEmpty(selectServiceSubtaskList)) {
-+            //灏嗗綋鍓嶆柟寮忕殑鍙戦�佺姸鎬佹敼鎴愬凡棰嗗彇
-+            ServiceSubtask serviceSubtask = selectServiceSubtaskList.get(0);
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setPreachform(serviceSubtask.getCurrentPreachform());
-+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+            serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
-+            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+            if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+                ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0);
-+                ssp.setSendstate("3");
-+                serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp);
-+            }
-+        }
-+
-         if (StringUtils.isNotEmpty(serviceTask.getKcb())) map.put("kcb", serviceTask.getKcb());
-         map.put("script", info);
-         if (StringUtils.isNotEmpty(serviceTask.getJsy())) map.put("jsy", serviceTask.getJsy());
-@@ -272,6 +295,95 @@
-         return map;
-     }
- 
-+    @Override
-+    public Map<String, Object> getScriptByCondition(Long taskid, String zyserialnum, String mzserialnum, String tsserialnum) {
-+        //閫氳繃浠诲姟ID鑾峰彇妯℃澘ID
-+        ServiceTask serviceTask = selectServiceTaskByTaskid(taskid);
-+        //閫氳繃妯℃澘ID鑾峰彇闂淇℃伅
-+        SvyLibTemplateScript svyLibTemplateScript = new SvyLibTemplateScript();
-+        svyLibTemplateScript.setSvyid(Long.valueOf(serviceTask.getLibtemplateid()));
-+        svyLibTemplateScript.setDelFlag("0");
-+        List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.selectSvyLibTemplateScriptList(svyLibTemplateScript);
-+        if (CollectionUtils.isEmpty(svyLibTemplateScripts) || svyLibTemplateScripts.size() == 0) {
-+            log.info("ivrLibaTemplateScripts涓虹┖浜嗭紝璇峰敖蹇仈绯荤鐞嗗憳澶勭悊");
-+            return null;
-+        }
-+        PatArchive patArchive = null;
-+        if (StringUtils.isNotEmpty(zyserialnum)) {
-+            PatMedInhospVO patMedInhospVO = new PatMedInhospVO();
-+            patMedInhospVO.setSerialnum(zyserialnum);
-+            List<PatMedInhosp> patMedInhospList = patMedInhospMapper.selectPatMedInhospListByCondition(patMedInhospVO);
-+            if (CollectionUtils.isNotEmpty(patMedInhospList)) {
-+                patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedInhospList.get(0).getPatid());
-+            }
-+        } else if (StringUtils.isNotEmpty(mzserialnum)) {
-+            PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
-+            patMedOuthosp.setSerialnum(mzserialnum);
-+            List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.selectPatMedOuthospList(patMedOuthosp);
-+            if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
-+                patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosps.get(0).getPatid());
-+            }
-+        } else if (StringUtils.isNotEmpty(tsserialnum)) {
-+            PatArchive pa = new PatArchive();
-+            pa.setPatientno(tsserialnum);
-+            List<PatArchive> patArchives = patArchiveMapper.selectPatArchiveList(pa);
-+            if (CollectionUtils.isNotEmpty(patArchives)) patArchive = patArchives.get(0);
-+        }
-+
-+        //鍒ゆ柇涓�涓嬩粖澶╂槸鍚﹀凡缁忓仛杩囬锛屽仛杩囧氨涓嶈鍐嶅仛浜�
-+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-+        serviceSubtaskVO.setTaskid(taskid);
-+        serviceSubtaskVO.setPatid(patArchive.getId());
-+        serviceSubtaskVO.setVisitTime(new Date());
-+        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-+        if (CollectionUtils.isNotEmpty(serviceSubtaskList) && serviceSubtaskList.size() > 0) {
-+            Map<String, Object> map = new HashMap<>();
-+            map.put("result", "浠婃棩宸茬粡鍋氳繃婊℃剰搴﹁皟鏌� 锛屾棤闇�鍐嶉噸澶嶅仛绛旓紒");
-+            return map;
-+        }
-+
-+        List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS = DtoConversionUtils.sourceToTarget(svyLibTemplateScripts, SvyLibTemplateScriptVO.class);
-+        //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹�
-+        ObjectMapper objectMapper = new ObjectMapper();
-+        Map<String, Map<String, String>> serviceTaskMap = null;
-+        try {
-+            serviceTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
-+        } catch (JsonProcessingException e) {
-+            e.printStackTrace();
-+        }
-+        List<Map<String, String>> mapList = new ArrayList<>();
-+
-+        for (Map<String, String> map : serviceTaskMap.values()) {
-+            mapList.add(map);
-+        }
-+        for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOS) {
-+            if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent())) {
-+                for (Map<String, String> map : mapList) {
-+                    for (String key : map.keySet()) {
-+
-+                        svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
-+                    }
-+                }
-+                //鏇挎崲鎮h�呬釜浜轰俊鎭暟鎹�
-+                log.error("闂id锛歿},   闂鍐呭锛歿}", svyLibTemplateScriptVO.getId(), svyLibTemplateScriptVO.getScriptContent());
-+                if (StringUtils.isNotEmpty(svyLibTemplateScriptVO.getScriptContent()) && ObjectUtils.isNotEmpty(patArchive)) {
-+                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
-+                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
-+                    svyLibTemplateScriptVO.setScriptContent(svyLibTemplateScriptVO.getScriptContent().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
-+                }
-+                //鑾峰彇闂閫夐」
-+                SvyLibTemplateTargetoption svyLibTemplateTargetoption = new SvyLibTemplateTargetoption();
-+                svyLibTemplateTargetoption.setScriptid(svyLibTemplateScriptVO.getId());
-+                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateTargetoptionMapper.selectSvyLibTemplateTargetoptionList(svyLibTemplateTargetoption);
-+                svyLibTemplateScriptVO.setSvyLibTemplateTargetoptions(svyLibTemplateTargetoptions);
-+            }
-+        }
-+        Map<String, Object> map = new HashMap<>();
-+        map.put("result", null);
-+        map.put("svyLibTemplateScriptVOS", svyLibTemplateScriptVOS);
-+        return map;
-+    }
-+
-     /**
-      * 闅忚淇℃伅
-      *
-@@ -281,15 +393,15 @@
-      */
-     public List sfInfo(ServiceTask serviceTask, Long patid, String patfrom) {
-         //閫氳繃妯℃澘ID鑾峰彇闂淇℃伅
--        IvrLibaTemplateScript ivrLibaTemplateScript = new IvrLibaTemplateScript();
--        ivrLibaTemplateScript.setTemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
--        ivrLibaTemplateScript.setDelFlag("0");
--        List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);
--        if (CollectionUtils.isEmpty(ivrLibaTemplateScripts) || ivrLibaTemplateScripts.size() == 0) {
-+        IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
-+        ivrTaskTemplateScript.setTemplateID(Long.valueOf(serviceTask.getTemplateid()));
-+        ivrTaskTemplateScript.setDelFlag("0");
-+        List<IvrTaskTemplateScript> ivrTaskTemplateScripts = ivrTaskTemplateScriptMapper.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
-+        if (CollectionUtils.isEmpty(ivrTaskTemplateScripts) || ivrTaskTemplateScripts.size() == 0) {
-             log.info("ivrLibaTemplateScripts涓虹┖浜嗭紝璇峰敖蹇仈绯荤鐞嗗憳澶勭悊");
-             return new ArrayList<>();
-         }
--        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScripts, IvrLibaTemplateScriptVO.class);
-+        List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrTaskTemplateScripts, IvrTaskTemplateScriptVO.class);
- 
-         //鑾峰彇鎮h�呬俊鎭�
-         PatArchive patArchive = null;
-@@ -314,29 +426,29 @@
-         }
- 
-         //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹�
--        for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOS) {
--            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getScriptContent())) {
-+        for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateScriptVOS) {
-+            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getScriptContent())) {
-                 for (Map<String, String> map : mapList) {
-                     for (String key : map.keySet()) {
- 
--                        ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
-+                        ivrTaskTemplateScriptVO.setScriptContent(ivrTaskTemplateScriptVO.getScriptContent().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
-                     }
-                 }
-                 //鏇挎崲鎮h�呬釜浜轰俊鎭暟鎹�
--                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
--                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
--                ivrLibaTemplateScriptVO.setScriptContent(ivrLibaTemplateScriptVO.getScriptContent().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
-+                ivrTaskTemplateScriptVO.setScriptContent(ivrTaskTemplateScriptVO.getScriptContent().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
-+                ivrTaskTemplateScriptVO.setScriptContent(ivrTaskTemplateScriptVO.getScriptContent().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
-+                ivrTaskTemplateScriptVO.setScriptContent(ivrTaskTemplateScriptVO.getScriptContent().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
- 
-                 //鑾峰彇闂閫夐」
--                IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption = new IvrLibaTemplateTargetoption();
--                ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScriptVO.getId());
--                List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = ivrLibaTemplateTargetOptionMapper.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);
--                ivrLibaTemplateScriptVO.setIvrLibaScriptTargetoptionList(ivrLibaTemplateTargetoptions);
-+                IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption = new IvrTaskTemplateTargetoption();
-+                ivrTaskTemplateTargetoption.setScriptid(ivrTaskTemplateScriptVO.getId());
-+                List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = ivrTaskTemplateTargetOptionMapper.selectIvrTaskTemplateTargetoptionList(ivrTaskTemplateTargetoption);
-+                ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
-             }
-         }
--        Collections.sort(ivrLibaTemplateScriptVOS, Comparator.comparingLong(IvrLibaTemplateScriptVO::getSort));
-+        Collections.sort(ivrTaskTemplateScriptVOS, Comparator.comparingLong(IvrTaskTemplateScriptVO::getSort));
- 
--        return ivrLibaTemplateScriptVOS;
-+        return ivrTaskTemplateScriptVOS;
-     }
- 
-     /**
-Index: ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsRecordsServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.system.service.impl;\r\n\r\nimport java.io.IOException;\r\nimport java.sql.Date;\r\nimport java.time.LocalDate;\r\nimport java.util.Arrays;\r\nimport java.util.LinkedHashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\nimport com.alibaba.fastjson2.JSONObject;\r\nimport com.fasterxml.jackson.core.JsonProcessingException;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.google.gson.Gson;\r\nimport com.ruoyi.common.enums.MsgLSEnum;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.OkHttpExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.smartor.common.LSHospTokenUtil;\r\nimport com.smartor.domain.ServiceSubtask;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\nimport com.ruoyi.system.mapper.SmsRecordsMapper;\r\nimport com.ruoyi.system.domain.SmsRecords;\r\nimport com.ruoyi.system.service.ISmsRecordsService;\r\n\r\n/**\r\n * 鐭俊璁板綍Service涓氬姟灞傚鐞哱r\n *\r\n * @author smartor\r\n * @date 2023-03-06\r\n */\r\n@Slf4j\r\n@Service\r\npublic class SmsRecordsServiceImpl implements ISmsRecordsService {\r\n    @Autowired\r\n    private SmsRecordsMapper smsRecordsMapper;\r\n\r\n    @Autowired\r\n    private ISysConfigService iSysConfigService;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n    /**\r\n     * 鏌ヨ鐭俊璁板綍\r\n     *\r\n     * @param recordid 鐭俊璁板綍涓婚敭\r\n     * @return 鐭俊璁板綍\r\n     */\r\n    @Override\r\n    public SmsRecords selectSmsRecordsByRecordid(Long recordid) {\r\n        return smsRecordsMapper.selectSmsRecordsByRecordid(recordid);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鐭俊璁板綍鍒楄〃\r\n     *\r\n     * @param smsRecords 鐭俊璁板綍\r\n     * @return 鐭俊璁板綍\r\n     */\r\n    @Override\r\n    public List<SmsRecords> selectSmsRecordsList(SmsRecords smsRecords) {\r\n        return smsRecordsMapper.selectSmsRecordsList(smsRecords);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐭俊璁板綍\r\n     *\r\n     * @param smsRecords 鐭俊璁板綍\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertSmsRecords(SmsRecords smsRecords) {\r\n        smsRecords.setCreateTime(DateUtils.getNowDate());\r\n        return smsRecordsMapper.insertSmsRecords(smsRecords);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐭俊璁板綍\r\n     *\r\n     * @param smsRecords 鐭俊璁板綍\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public Boolean sendSmsRecords(SmsRecords smsRecords) {\r\n        //鑾峰彇閫氱煡鐭俊鎻愬墠\"鍑犲ぉ\"鍙戦�乗r\n        Integer days = 0;\r\n        String noticeSmsBeforeSend = iSysConfigService.selectConfigByKey(\"notice_sms_before_send\");\r\n        //鑾峰彇鍖婚櫌鏈烘瀯ID\r\n        String hospOrgid = iSysConfigService.selectConfigByKey(\"hosp_orgid\");\r\n        if (StringUtils.isNotEmpty(noticeSmsBeforeSend)) days = Integer.valueOf(noticeSmsBeforeSend);\r\n\r\n        //閫氳繃褰撳墠鏃ユ湡锛屽姞涓婃彁鍓嶇殑澶╂暟锛岃幏鍙栬\r\n        LocalDate newDate = LocalDate.now().plusDays(days);\r\n        Date date = Date.valueOf(newDate);\r\n        smsRecords.setVisitTime(date);\r\n\r\n        List<String> orgidList = null;\r\n        if (StringUtils.isNotEmpty(hospOrgid)) {\r\n            orgidList = Arrays.asList(hospOrgid.split(\",\"));\r\n            smsRecords.setOrgidList(orgidList);\r\n        }\r\n        List<SmsRecords> selectSmsRecordsList = smsRecordsMapper.selectSmsRecordsList(smsRecords);\r\n        for (SmsRecords record : selectSmsRecordsList) {\r\n            Boolean aBoolean = sendSMS(record.getOrgid(), record.getPhone(), record.getMsg());\r\n            ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n            serviceSubtask.setId(record.getSubId());\r\n            if (aBoolean) serviceSubtask.setVisitNotice(1);\r\n            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n\r\n    public Boolean sendSMS(String orgid, String phone, String content) {\r\n        //涓芥按鐨勭煭淇″彂閫佹柟寮廫r\n        Boolean isSuccess = false;\r\n        try {\r\n            String url = configService.selectConfigByKey(\"token.360\",orgid);\r\n            Map<String, String> map = MsgLSEnum.getAddressByCode(orgid);\r\n            String token = LSHospTokenUtil.getToken(orgid,url);\r\n            log.info(\"銆恠fHandlle銆戜附姘寸煭淇″彂閫侊紝鍦板潃锛歿}锛屽弬鏁帮細{}锛屾満鏋処D锛歿}\", map.get(\"address\"), orgid);\r\n            String dxCode = getDXCode(map.get(\"address\"), phone, content, map.get(\"sendPersonId\"), map.get(\"sendPersonName\"), MsgLSEnum.getHeaderByCode(orgid), token);\r\n            log.info(\"銆恠fHandlle銆戜附姘寸煭淇″彂閫佺粨鏋滐細{}\", dxCode);\r\n            ObjectMapper objectMapper = new ObjectMapper();\r\n            Map<String, Object> textParam = null;\r\n            textParam = objectMapper.readValue(dxCode, Map.class);\r\n            String code = textParam.get(\"Code\").toString();\r\n            if (code.equals(\"0\")) {\r\n                isSuccess = true;\r\n            }\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n        return isSuccess;\r\n    }\r\n\r\n    /**\r\n     * 淇敼鐭俊璁板綍\r\n     *\r\n     * @param smsRecords 鐭俊璁板綍\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateSmsRecords(SmsRecords smsRecords) {\r\n        smsRecords.setUpdateTime(DateUtils.getNowDate());\r\n        return smsRecordsMapper.updateSmsRecords(smsRecords);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鐭俊璁板綍\r\n     *\r\n     * @param recordids 闇�瑕佸垹闄ょ殑鐭俊璁板綍涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteSmsRecordsByRecordids(Long[] recordids) {\r\n        return smsRecordsMapper.deleteSmsRecordsByRecordids(recordids);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鐭俊璁板綍淇℃伅\r\n     *\r\n     * @param recordid 鐭俊璁板綍涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteSmsRecordsByRecordid(Long recordid) {\r\n        return smsRecordsMapper.deleteSmsRecordsByRecordid(recordid);\r\n    }\r\n\r\n\r\n    private String getDXCode(String address, String ShouJiHM, String FaSongNR, String FaSongRID, String FaSongRXM, Map<String, Object> headerMap, String token) {\r\n        Map<String, Object> map = new LinkedHashMap<>();\r\n\r\n        Map<String, Object> YeWuXX = new LinkedHashMap<>();\r\n        Map<String, Object> DuanXinXX = new LinkedHashMap<>();\r\n        DuanXinXX.put(\"ShouJiHM\", ShouJiHM);\r\n        DuanXinXX.put(\"FaSongNR\", FaSongNR);\r\n        DuanXinXX.put(\"FaSongRID\", FaSongRID);\r\n        DuanXinXX.put(\"FaSongRXM\", FaSongRXM);\r\n        YeWuXX.put(\"DuanXinXX\", DuanXinXX);\r\n\r\n        map.put(\"XiaoXiTou\", headerMap);\r\n        map.put(\"YeWuXX\", YeWuXX);\r\n\r\n        String body = new Gson().toJson(map);\r\n\r\n//        String result = HttpUtils.sendPost(address, body);\r\n        String result = null;\r\n        try {\r\n            result = OkHttpExample.sendPostRequest(address, body, token);\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n        log.info(\"銆恎etDXCode銆戠煭淇″彂閫佺粨鏋滐細{}\", result);\r\n\r\n        JSONObject jsonObject = JSONObject.parseObject(result);\r\n        String code = (String) jsonObject.toString();\r\n        return code;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsRecordsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsRecordsServiceImpl.java
---- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsRecordsServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SmsRecordsServiceImpl.java	(date 1758798203081)
-@@ -48,7 +48,6 @@
- 
-     @Autowired
-     private ISysConfigService configService;
--
-     /**
-      * 鏌ヨ鐭俊璁板綍
-      *
-Index: smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport com.alibaba.fastjson2.JSON;\r\nimport com.fasterxml.jackson.core.JsonProcessingException;\r\nimport com.fasterxml.jackson.core.type.TypeReference;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport com.smartor.service.CommonTaskService;\r\nimport com.smartor.service.IServiceTaskService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.StringUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Date;\r\nimport java.util.List;\r\nimport java.util.concurrent.TimeUnit;\r\n\r\n\r\n/**\r\n * 绗笁鏂瑰巶鍟嗘暟鎹甋ervice涓氬姟灞傚鐞哱r\n *\r\n * @author ruoyi\r\n * @date 2023-10-10\r\n */\r\n@Slf4j\r\n@Service\r\npublic class CommonTaskServiceImpl implements CommonTaskService {\r\n    @Autowired\r\n    private IServiceTaskService ivrTaskService;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private IServiceTaskService iServiceTaskService;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n\r\n    @Override\r\n    public Integer taskSend(SendTaskVO sendTaskVO) {\r\n\r\n        if (sendTaskVO.getTaskId() == null || sendTaskVO.getTaskType() == null)\r\n            throw new BaseException(\"浠诲姟ID鎴栬�呬换鍔$被鍨嬩笉鑳戒负绌猴紝璇锋鏌ュ悗锛屽啀杩涜鎵ц\");\r\n        if (sendTaskVO.getTaskType() == 1) {\r\n            //闅忚\r\n            return sfSend(sendTaskVO);\r\n        } else if (sendTaskVO.getTaskType() == 2) {\r\n            //闂嵎\r\n            return wjSend(sendTaskVO);\r\n        } else if (sendTaskVO.getTaskType() == 3) {\r\n            //瀹f暀\r\n            return xjSend(sendTaskVO);\r\n        }\r\n        log.error(\"璧板埌杩欓噷浜嗗槢\");\r\n        return null;\r\n    }\r\n\r\n    public int sfSend(SendTaskVO sendTaskVO) {\r\n        ServiceTask ivrTask = ivrTaskService.selectServiceTaskByTaskid(sendTaskVO.getTaskId());\r\n        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {\r\n            //浠诲姟鏆傚仠鎴栫粓姝r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(sendTaskVO.getTaskId());\r\n//            serviceTask.setStopState(ivrTask.getStopState() + 1);\r\n            serviceTask.setSendState(sendTaskVO.getSendState());\r\n            int i = ivrTaskService.updateServiceTask(serviceTask);\r\n            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎\r\n            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n            serviceSubtaskVO.setTaskid(serviceTask.getTaskid());\r\n            serviceSubtaskVO.setSendstate(2L);\r\n            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskVO.setSendstate(1L);\r\n            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);\r\n            } else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                    log.error(\"sfSend闇�瑕佺Щ闄ょ殑subId涓猴細{}\", serviceSubtask.getId().toString());\r\n                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());\r\n                    redisCache.removeElementFromList(\"cache-exist\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-0\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-1\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-2\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-3\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-4\", serviceSubtask.getId().toString());\r\n                }\r\n            }\r\n\r\n            return i;\r\n        }\r\n\r\n        //鍒ゆ柇鍙戦�佺姸鎬佹槸鍚︿负绌篭r\n        if (StringUtils.isEmpty(sendTaskVO.getSendType())) {\r\n            sendTaskVO.setSendType(ivrTask.getSendType().toString());\r\n        }\r\n        //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫乗r\n        if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"2\")) {\r\n            String content = sendMQContent(sendTaskVO, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), null);\r\n            //绔嬪嵆鍙戦�乗r\n            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);\r\n            //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(ivrTask.getTaskid());\r\n            serviceTask.setSendState(2L);\r\n            //涓嶇煡涓哄暐杩欐牱鍐欙紝鍏堝皢stopstate缃负null\r\n//            serviceTask.setStopState(ivrTask.getStopState());\r\n            serviceTask.setStopState(null);\r\n            ivrTaskService.updateServiceTask(serviceTask);\r\n            log.error(\"娑堟伅鍙戦�佹垚鍔焅");\r\n        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"1\") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"3\")) {\r\n            //鏃堕棿娈靛彂閫乗r\n            ObjectMapper objectMapper = new ObjectMapper();\r\n            if (org.apache.commons.lang3.StringUtils.isNotEmpty(ivrTask.getSendTimeSlot())) {\r\n                List<TaskSendTimeVO> taskSendTimeVOList = null;\r\n                try {\r\n                    taskSendTimeVOList = objectMapper.readValue(ivrTask.getSendTimeSlot(), new TypeReference<List<TaskSendTimeVO>>() {\r\n                    });\r\n                } catch (JsonProcessingException e) {\r\n                    log.error(\"JsonProcessingException鎶ラ敊浜嗭細{}\", e.getMessage());\r\n                }\r\n                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {\r\n//                    //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈礬r\n//                    List<TaskSendTimeVO> list = new ArrayList<>();\r\n//                    list.add(taskSendTimeVO);\r\n\r\n                    //鑾峰彇寮�濮嬪彂閫佹椂闂碶r\n                    String begantime = taskSendTimeVO.getBegantime();\r\n                    SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\r\n                    //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級\r\n                    Long milliseconds = 1000L;\r\n                    try {\r\n                        Date date = sdf.parse(begantime);\r\n                        milliseconds = date.getTime() - System.currentTimeMillis();\r\n                        System.out.println(\"鏃ユ湡姣鏁帮細\" + milliseconds);\r\n                        SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);\r\n                        sendTaskVO1.setSendType(\"1\");\r\n                        String content = sendMQContent(sendTaskVO1, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), taskSendTimeVO);\r\n                        redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);\r\n                    } catch (Exception e) {\r\n                        e.printStackTrace();\r\n                        if (milliseconds < 0) throw new BaseException(\"璇锋鏌ヤ换鍔″紑濮嬫椂闂达紝涓嶈兘灏忎簬褰撳墠鏃堕棿\");\r\n                    }\r\n                }\r\n                //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n                ServiceTask serviceTask = new ServiceTask();\r\n                serviceTask.setTaskid(ivrTask.getTaskid());\r\n                serviceTask.setSendState(2L);\r\n                serviceTask.setStopState(null);\r\n                ivrTaskService.updateServiceTask(serviceTask);\r\n            }\r\n        }\r\n        return 1;\r\n    }\r\n\r\n    public int wjSend(SendTaskVO sendTaskVO) {\r\n        ServiceTask serviceTask1 = iServiceTaskService.selectServiceTaskByTaskid(sendTaskVO.getTaskId());\r\n        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {\r\n            //浠诲姟鏆傚仠鎴栫粓姝r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(sendTaskVO.getTaskId());\r\n//            serviceTask.setStopState(serviceTask1.getStopState() + 1);\r\n            serviceTask.setSendState(sendTaskVO.getSendState());\r\n            int i = iServiceTaskService.updateServiceTask(serviceTask);\r\n            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎\r\n            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n            serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());\r\n            serviceSubtaskVO.setSendstate(2L);\r\n            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskVO.setSendstate(1L);\r\n            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);\r\n            } else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                    log.error(\"wjSend闇�瑕佺Щ闄ょ殑subId涓猴細{}\", serviceSubtask.getId().toString());\r\n                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());\r\n                    redisCache.removeElementFromList(\"cache-exist\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-0\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-1\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-2\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-3\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-4\", serviceSubtask.getId().toString());\r\n                }\r\n            }\r\n            return i;\r\n        }\r\n\r\n        //鍒ゆ柇鍙戦�佺姸鎬佹槸鍚︿负绌篭r\n        if (StringUtils.isEmpty(sendTaskVO.getSendType())) {\r\n            sendTaskVO.setSendType(serviceTask1.getSendType().toString());\r\n        }\r\n        //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫乗r\n        if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"2\")) {\r\n\r\n            String content = sendMQContent(sendTaskVO, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null);\r\n            //绔嬪嵆鍙戦�乗r\n            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);\r\n\r\n            //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(serviceTask1.getTaskid());\r\n            serviceTask.setSendState(2L);\r\n            serviceTask.setStopState(null);\r\n            iServiceTaskService.updateServiceTask(serviceTask);\r\n        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"1\") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"3\")) {\r\n            //鏃堕棿娈靛彂閫乗r\n            ObjectMapper objectMapper = new ObjectMapper();\r\n            if (StringUtils.isNotEmpty(serviceTask1.getSendTimeSlot())) {\r\n                List<TaskSendTimeVO> taskSendTimeVOList = null;\r\n                try {\r\n                    taskSendTimeVOList = objectMapper.readValue(serviceTask1.getSendTimeSlot(), new TypeReference<List<TaskSendTimeVO>>() {\r\n                    });\r\n                } catch (JsonProcessingException e) {\r\n                    log.error(\"JsonProcessingException鎶ラ敊浜嗭細{}\", e.getMessage());\r\n                }\r\n                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {\r\n                    //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈礬r\n//                    List<TaskSendTimeVO> list = new ArrayList<>();\r\n//                    list.add(taskSendTimeVO);\r\n\r\n                    //鑾峰彇寮�濮嬪彂閫佹椂闂碶r\n                    String begantime = taskSendTimeVO.getBegantime();\r\n                    SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\r\n                    //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級\r\n                    Long milliseconds = 1000L;\r\n                    try {\r\n                        Date date = sdf.parse(begantime);\r\n                        milliseconds = date.getTime() - System.currentTimeMillis();\r\n                        if (milliseconds < 0) {\r\n                            milliseconds = 1000L;\r\n                        }\r\n                        System.out.println(\"鏃ユ湡姣鏁帮細\" + milliseconds);\r\n                    } catch (Exception e) {\r\n                        e.printStackTrace();\r\n                    }\r\n\r\n                    SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);\r\n                    sendTaskVO1.setSendType(\"1\");\r\n                    String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO);\r\n                    redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);\r\n                }\r\n                //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n                ServiceTask serviceTask = new ServiceTask();\r\n                serviceTask.setTaskid(serviceTask1.getTaskid());\r\n                serviceTask.setSendState(2L);\r\n                serviceTask.setStopState(null);\r\n                iServiceTaskService.updateServiceTask(serviceTask);\r\n            }\r\n        }\r\n        return 1;\r\n    }\r\n\r\n    public int xjSend(SendTaskVO sendTaskVO) {\r\n        ServiceTask serviceTask1 = iServiceTaskService.selectServiceTaskByTaskid(sendTaskVO.getTaskId());\r\n        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {\r\n            //浠诲姟鏆傚仠鎴栫粓姝r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(sendTaskVO.getTaskId());\r\n//            serviceTask.setStopState(serviceTask1.getStopState() + 1);\r\n            serviceTask.setSendState(sendTaskVO.getSendState());\r\n            iServiceTaskService.updateServiceTask(serviceTask);\r\n            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎\r\n            ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n            serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());\r\n            serviceSubtaskVO.setSendstate(2L);\r\n            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            serviceSubtaskVO.setSendstate(1L);\r\n            List<ServiceSubtask> serviceSubtaskList1 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList.addAll(serviceSubtaskList1);\r\n            } else {\r\n                if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {\r\n                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {\r\n                    log.error(\"xjSend闇�瑕佺Щ闄ょ殑subId涓猴細{}\", serviceSubtask.getId().toString());\r\n                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());\r\n                    redisCache.removeElementFromList(\"cache-exist\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-0\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-1\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-2\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-3\", serviceSubtask.getId().toString());\r\n                    redisCache.removeElementFromList(\"cache-4\", serviceSubtask.getId().toString());\r\n                }\r\n            }\r\n\r\n            return 0;\r\n        }\r\n\r\n        //鍒ゆ柇鍙戦�佺姸鎬佹槸鍚︿负绌篭r\n        if (StringUtils.isEmpty(sendTaskVO.getSendType())) {\r\n            sendTaskVO.setSendType(serviceTask1.getSendType().toString());\r\n        }\r\n        //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫乗r\n        if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"2\")) {\r\n\r\n            String content = sendMQContent(sendTaskVO, serviceTask1.getLibtemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null);\r\n            //绔嬪嵆鍙戦�乗r\n            redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);\r\n\r\n            //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n            ServiceTask serviceTask = new ServiceTask();\r\n            serviceTask.setTaskid(serviceTask1.getTaskid());\r\n            serviceTask.setSendState(2L);\r\n            serviceTask.setSendType(1L);\r\n            serviceTask.setStopState(null);\r\n            iServiceTaskService.updateServiceTask(serviceTask);\r\n        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"1\") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals(\"3\")) {\r\n            //鏃堕棿娈靛彂閫乗r\n            ObjectMapper objectMapper = new ObjectMapper();\r\n            if (StringUtils.isNotEmpty(serviceTask1.getSendTimeSlot())) {\r\n                List<TaskSendTimeVO> taskSendTimeVOList = null;\r\n                try {\r\n                    taskSendTimeVOList = objectMapper.readValue(serviceTask1.getSendTimeSlot(), new TypeReference<List<TaskSendTimeVO>>() {\r\n                    });\r\n                } catch (JsonProcessingException e) {\r\n                    log.error(\"JsonProcessingException鎶ラ敊浜嗭細{}\", e.getMessage());\r\n                }\r\n                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {\r\n                    //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈礬r\n//                    List<TaskSendTimeVO> list = new ArrayList<>();\r\n//                    list.add(taskSendTimeVO);\r\n\r\n                    //鑾峰彇寮�濮嬪彂閫佹椂闂碶r\n                    String begantime = taskSendTimeVO.getBegantime();\r\n                    SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\r\n                    //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級\r\n                    Long milliseconds = 1000L;\r\n                    try {\r\n                        Date date = sdf.parse(begantime);\r\n                        milliseconds = date.getTime() - System.currentTimeMillis();\r\n                        System.out.println(\"鏃ユ湡姣鏁帮細\" + milliseconds);\r\n                    } catch (Exception e) {\r\n                        e.printStackTrace();\r\n                    }\r\n\r\n                    SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);\r\n                    sendTaskVO1.setSendType(\"1\");\r\n                    String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO);\r\n                    redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);\r\n                }\r\n                //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓璡r\n                ServiceTask serviceTask = new ServiceTask();\r\n                serviceTask.setTaskid(serviceTask1.getTaskid());\r\n                serviceTask.setSendState(2L);\r\n                serviceTask.setStopState(null);\r\n                iServiceTaskService.updateServiceTask(serviceTask);\r\n            }\r\n        }\r\n        return 1;\r\n    }\r\n\r\n    /**\r\n     * MQ浠诲姟鍒涘缓鍐呭\r\n     *\r\n     * @param sendTaskVO\r\n     * @param templateid\r\n     * @param preachform\r\n     * @param stopState\r\n     * @param sendTimeslot\r\n     * @return\r\n     */\r\n    private String sendMQContent(SendTaskVO sendTaskVO, String templateid, String preachform, Long stopState, TaskSendTimeVO sendTimeslot) {\r\n        CommonTaskcallMQ commonTaskcallMQ = new CommonTaskcallMQ();\r\n        commonTaskcallMQ.setTaskid(sendTaskVO.getTaskId());\r\n        commonTaskcallMQ.setSendType(sendTaskVO.getSendType());\r\n        commonTaskcallMQ.setTemplateid(templateid);\r\n        commonTaskcallMQ.setPreachform(preachform);\r\n        commonTaskcallMQ.setStopState(stopState);\r\n        commonTaskcallMQ.setTaskType(sendTaskVO.getTaskType());\r\n        commonTaskcallMQ.setSendTimeslot(sendTimeslot);\r\n\r\n        String commonTaskcallMQJson = JSON.toJSONString(commonTaskcallMQ);\r\n        commonTaskcallMQJson = commonTaskcallMQJson.substring(1, commonTaskcallMQJson.length() - 1);\r\n        return commonTaskcallMQJson;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/impl/CommonTaskServiceImpl.java	(date 1758798202458)
-@@ -60,7 +60,6 @@
-             //瀹f暀
-             return xjSend(sendTaskVO);
-         }
--        log.error("璧板埌杩欓噷浜嗗槢");
-         return null;
-     }
- 
-@@ -108,6 +107,8 @@
-         //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫�
-         if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) {
-             String content = sendMQContent(sendTaskVO, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), null);
-+            //鍏堜慨鏀圭姸鎬�
-+            updateServiceSubtask(ivrTask.getTaskid(), new Date());
-             //绔嬪嵆鍙戦��
-             redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
-             //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
-@@ -130,23 +131,23 @@
-                 } catch (JsonProcessingException e) {
-                     log.error("JsonProcessingException鎶ラ敊浜嗭細{}", e.getMessage());
-                 }
-+                Date date = new Date();
-                 for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {
--//                    //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈�
--//                    List<TaskSendTimeVO> list = new ArrayList<>();
--//                    list.add(taskSendTimeVO);
--
-                     //鑾峰彇寮�濮嬪彂閫佹椂闂�
-                     String begantime = taskSendTimeVO.getBegantime();
-                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                     //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級
-                     Long milliseconds = 1000L;
-                     try {
--                        Date date = sdf.parse(begantime);
-+                        date = sdf.parse(begantime);
-                         milliseconds = date.getTime() - System.currentTimeMillis();
-                         System.out.println("鏃ユ湡姣鏁帮細" + milliseconds);
-                         SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);
-                         sendTaskVO1.setSendType("1");
-                         String content = sendMQContent(sendTaskVO1, ivrTask.getTemplateid().toString(), ivrTask.getPreachform(), ivrTask.getStopState(), taskSendTimeVO);
-+
-+                        //鍏堜慨鏀圭姸鎬�
-+                        updateServiceSubtask(ivrTask.getTaskid(), date);
-                         redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
-                     } catch (Exception e) {
-                         e.printStackTrace();
-@@ -208,6 +209,8 @@
-         if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) {
- 
-             String content = sendMQContent(sendTaskVO, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null);
-+            //鍏堜慨鏀圭姸鎬�
-+            updateServiceSubtask(serviceTask1.getTaskid(), new Date());
-             //绔嬪嵆鍙戦��
-             redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
- 
-@@ -228,6 +231,7 @@
-                 } catch (JsonProcessingException e) {
-                     log.error("JsonProcessingException鎶ラ敊浜嗭細{}", e.getMessage());
-                 }
-+                Date date = new Date();
-                 for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {
-                     //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈�
- //                    List<TaskSendTimeVO> list = new ArrayList<>();
-@@ -239,7 +243,7 @@
-                     //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級
-                     Long milliseconds = 1000L;
-                     try {
--                        Date date = sdf.parse(begantime);
-+                        date = sdf.parse(begantime);
-                         milliseconds = date.getTime() - System.currentTimeMillis();
-                         if (milliseconds < 0) {
-                             milliseconds = 1000L;
-@@ -252,6 +256,8 @@
-                     SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);
-                     sendTaskVO1.setSendType("1");
-                     String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO);
-+                    //鍏堜慨鏀圭姸鎬�
-+                    updateServiceSubtask(serviceTask1.getTaskid(), date);
-                     redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
-                 }
-                 //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
-@@ -310,6 +316,8 @@
-         if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) {
- 
-             String content = sendMQContent(sendTaskVO, serviceTask1.getLibtemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), null);
-+            //鍏堜慨鏀圭姸鎬�
-+            updateServiceSubtask(serviceTask1.getTaskid(), new Date());
-             //绔嬪嵆鍙戦��
-             redisCache.setCacheObject(content, content, 1, TimeUnit.SECONDS);
- 
-@@ -323,6 +331,7 @@
-         } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("3")) {
-             //鏃堕棿娈靛彂閫�
-             ObjectMapper objectMapper = new ObjectMapper();
-+            Date date = new Date();
-             if (StringUtils.isNotEmpty(serviceTask1.getSendTimeSlot())) {
-                 List<TaskSendTimeVO> taskSendTimeVOList = null;
-                 try {
-@@ -342,7 +351,7 @@
-                     //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級
-                     Long milliseconds = 1000L;
-                     try {
--                        Date date = sdf.parse(begantime);
-+                        date = sdf.parse(begantime);
-                         milliseconds = date.getTime() - System.currentTimeMillis();
-                         System.out.println("鏃ユ湡姣鏁帮細" + milliseconds);
-                     } catch (Exception e) {
-@@ -352,6 +361,8 @@
-                     SendTaskVO sendTaskVO1 = DtoConversionUtils.sourceToTarget(sendTaskVO, SendTaskVO.class);
-                     sendTaskVO1.setSendType("1");
-                     String content = sendMQContent(sendTaskVO1, serviceTask1.getTemplateid().toString(), serviceTask1.getPreachform(), serviceTask1.getStopState(), taskSendTimeVO);
-+                    //鍏堜慨鏀圭姸鎬�
-+                    updateServiceSubtask(serviceTask1.getTaskid(), date);
-                     redisCache.setCacheObject(content, content, milliseconds / 1000, TimeUnit.SECONDS);
-                 }
-                 //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
-@@ -389,4 +400,17 @@
-         commonTaskcallMQJson = commonTaskcallMQJson.substring(1, commonTaskcallMQJson.length() - 1);
-         return commonTaskcallMQJson;
-     }
-+
-+    private void updateServiceSubtask(Long taskId, Date date) {
-+        //鍙杩涘叆闃熷垪灏辩畻寰呭彂閫�
-+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
-+        serviceSubtaskVO.setTaskid(taskId);
-+        serviceSubtaskVO.setSendstate(1L);
-+        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-+        for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-+            serviceSubtask.setSendstate(2L);
-+            serviceSubtask.setVisitTime(date);
-+            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-+        }
-+    }
- }
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSLTDHealthcareRecordController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.smartor.domain.ServiceSLTDInhospReqVO;\r\nimport com.smartor.domain.ServiceSLTDInhospResDTO;\r\nimport com.smartor.service.IServiceSLTDHealthcareRecordService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.web.bind.annotation.PostMapping;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RestController;\r\n\r\nimport java.util.List;\r\n\r\n/**\r\n * 鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨController\r\n *\r\n * @author smartor\r\n * @date 2025-08-14\r\n */\r\n@Slf4j\r\n@Api(description = \"鐪佺珛鍚屽痉鍋ュ悍璁板綍鏌ヨ鎺ュ彛\")\r\n@RestController\r\n@RequestMapping(\"/smartor/sltdHealthcareRecord\")\r\npublic class ServiceSLTDHealthcareRecordController extends BaseController {\r\n\r\n    @Autowired\r\n    private IServiceSLTDHealthcareRecordService serviceSLTDHealthcareRecordService;\r\n\r\n    /**\r\n     * 鏌ヨ鍦ㄩ櫌鎮h�呭仴搴疯褰曞垪琛╘r\n     */\r\n    @ApiOperation(\"鏌ヨ鍦ㄩ櫌鎮h�呭仴搴疯褰曞垪琛╘")\r\n    @PostMapping(\"/queryHealthcareRecordList\")\r\n    public AjaxResult queryHealthcareRecordList(@RequestBody ServiceSLTDInhospReqVO reqVO) {\r\n        try {\r\n            log.info(\"銆恞ueryHealthcareRecordList銆戞帴鏀跺埌鏌ヨ璇锋眰锛屽弬鏁帮細{}\", reqVO);\r\n\r\n            List<ServiceSLTDInhospResDTO> resultList = serviceSLTDHealthcareRecordService.queryHealthcareRecordList(reqVO);\r\n\r\n            log.info(\"銆恞ueryHealthcareRecordList銆戞煡璇㈡垚鍔燂紝杩斿洖{}鏉¤褰昞", resultList.size());\r\n            return AjaxResult.success(resultList);\r\n\r\n        } catch (Exception e) {\r\n            log.error(\"銆恞ueryHealthcareRecordList銆戞煡璇㈠紓甯革紝璇锋眰鍙傛暟锛歿}\", reqVO, e);\r\n            return AjaxResult.error(\"鏌ヨ鍋ュ悍璁板綍澶辫触锛歕" + e.getMessage());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅\r\n     */\r\n    @ApiOperation(\"閲囬泦鍖婚櫌鐢ㄦ埛淇℃伅\")\r\n    @PostMapping(\"/queryHospUserInfoList\")\r\n    public AjaxResult queryHospUserInfoList(@RequestBody ServiceSLTDInhospReqVO reqVO) {\r\n        try {\r\n            log.info(\"銆恞ueryHealthcareRecordList銆戞帴鏀跺埌鏌ヨ璇锋眰锛屽弬鏁帮細{}\", reqVO);\r\n\r\n            Boolean b = serviceSLTDHealthcareRecordService.queryHospUserInfoList(reqVO);\r\n\r\n            log.info(\"銆恞ueryHospUserInfoList銆戞煡璇㈡垚鍔燂紝鏄惁鎴愬姛锛歿}\", b);\r\n            return AjaxResult.success(b);\r\n\r\n        } catch (Exception e) {\r\n            log.error(\"銆恞ueryHospUserInfoList銆戞煡璇㈠紓甯革紝璇锋眰鍙傛暟锛歿}\", reqVO, e);\r\n            return AjaxResult.error(\"鏌ヨ鍋ュ悍璁板綍澶辫触锛歕" + e.getMessage());\r\n        }\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSLTDHealthcareRecordController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSLTDHealthcareRecordController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSLTDHealthcareRecordController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSLTDHealthcareRecordController.java	(date 1758798203094)
-@@ -2,6 +2,7 @@
- 
- import com.ruoyi.common.core.controller.BaseController;
- import com.ruoyi.common.core.domain.AjaxResult;
-+import com.smartor.domain.ServiceSLTDDeptReqVO;
- import com.smartor.domain.ServiceSLTDInhospReqVO;
- import com.smartor.domain.ServiceSLTDInhospResDTO;
- import com.smartor.service.IServiceSLTDHealthcareRecordService;
-@@ -62,6 +63,26 @@
- 
-             Boolean b = serviceSLTDHealthcareRecordService.queryHospUserInfoList(reqVO);
- 
-+            log.info("銆恞ueryHospUserInfoList銆戞煡璇㈡垚鍔燂紝鏄惁鎴愬姛锛歿}", b);
-+            return AjaxResult.success(b);
-+
-+        } catch (Exception e) {
-+            log.error("銆恞ueryHospUserInfoList銆戞煡璇㈠紓甯革紝璇锋眰鍙傛暟锛歿}", reqVO, e);
-+            return AjaxResult.error("鏌ヨ鍋ュ悍璁板綍澶辫触锛�" + e.getMessage());
-+        }
-+    }
-+
-+    /**
-+     * 閲囬泦绉戝鐥呭尯淇℃伅
-+     */
-+    @ApiOperation("閲囬泦绉戝鐥呭尯淇℃伅")
-+    @PostMapping("/queryDeptWardAreaInfoList")
-+    public AjaxResult queryDeptWardAreaInfoList(@RequestBody ServiceSLTDDeptReqVO reqVO) {
-+        try {
-+            log.info("銆恞ueryHealthcareRecordList銆戞帴鏀跺埌鏌ヨ璇锋眰锛屽弬鏁帮細{}", reqVO);
-+
-+            Boolean b = serviceSLTDHealthcareRecordService.queryDeptWardAreaInfoList(reqVO);
-+
-             log.info("銆恞ueryHospUserInfoList銆戞煡璇㈡垚鍔燂紝鏄惁鎴愬姛锛歿}", b);
-             return AjaxResult.success(b);
- 
-Index: smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.List;\r\n\r\n@ApiModel(value = \"ServiceSLTDCommonReqVO\", description = \"鐪佺珛鍚屽痉鍑哄叆闄㈣姹備俊鎭痋")\r\n@Data\r\npublic class ServiceSLTDInhospReqVO {\r\n    @ApiModelProperty(value = \"鏈烘瀯ID 鏈烘瀯鍞竴缂栧彿\")\r\n    private String orgId;\r\n\r\n    @ApiModelProperty(value = \"闄㈠尯ID\")\r\n    private Long campusIds;\r\n\r\n    @ApiModelProperty(value = \"鎮h�呭鍚�   蹇呭~涓�涓猏")\r\n    private String patientName;\r\n\r\n\r\n    @ApiModelProperty(value = \"韬唤璇佸彿   蹇呭~涓�涓猏")\r\n    private String idCardNo;\r\n\r\n    @ApiModelProperty(value = \"鐥呭尯id 蹇呭~涓�涓猏")\r\n    private Long areaId;\r\n\r\n    @ApiModelProperty(value = \"绉戝ID 蹇呭~涓�涓猏")\r\n    private Long deptId;\r\n\r\n    @ApiModelProperty(value = \"绉戝ID闆嗗悎\")\r\n    private List<Long> deptIdList;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟璁板綍鍙� 蹇呭~涓�涓猏")\r\n    private String healthcareRecordNo;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟璁板綍鍙烽泦鍚圽")\r\n    private List<String> healthcareRecordNoList;\r\n\r\n    @ApiModelProperty(value = \"鐥呭巻鍙� 蹇呭~涓�涓猏")\r\n    private String medicalRecordNo;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟璁板綍Id 蹇呭~涓�涓猏")\r\n    private Long healthcareRecordId;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟璁板綍ID闆嗗悎\")\r\n    private List<Long> idList;\r\n\r\n    @ApiModelProperty(value = \"灏辫瘖鍗″彿 蹇呭~涓�涓猏")\r\n    private String medicalCardNo;\r\n\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿-寮�濮嬫椂闂碶")\r\n    private String startHeadTime;\r\n\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿-缁撴潫鏃堕棿 yyyy-MM-dd\")\r\n    private String startTailTime;\r\n\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿-寮�濮嬫椂闂� yyyy-MM-dd\")\r\n    private String preOutHospitalHeadDate;\r\n\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿-缁撴潫鏃堕棿 yyyy-MM-dd\")\r\n    private String preOutHospitalTailDate;\r\n\r\n    @ApiModelProperty(value = \"灏辫瘖鏃堕棿-寮�濮嬫椂闂� :   闂ㄨ瘖璇婄枟璁板綍涓哄彿婧愭椂闂�  浣忛櫌璇婄枟璁板綍涓哄叆闄㈢櫥璁版椂闂� yyyy-MM-dd\")\r\n    private String encounterTimeStart;\r\n\r\n    @ApiModelProperty(value = \"灏辫瘖鏃堕棿-缁撴潫鏃堕棿 yyyy-MM-dd\")\r\n    private String encounterTimeEnd;\r\n\r\n    @ApiModelProperty(value = \"鍑洪櫌缁撶畻鏃堕棿-寮�濮嬫椂闂� yyyy-MM-dd\")\r\n    private String outHospitalSettleHeadDate;\r\n\r\n    @ApiModelProperty(value = \"鍑洪櫌缁撶畻鏃堕棿-缁撴潫鏃堕棿 yyyy-MM-dd\")\r\n    private String outHospitalSettleTailDate;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟绫诲瀷锛� FH0108.01-闂ㄨ瘖  FH0108.02-浣忛櫌   FH0108.03-鎬ヨ瘖  FH0108.04-鐣欒\" + \"FH0108.05-鎶㈡晳FH0108.06-闂ㄨ瘖浣撴   FH0108.07-浣忛櫌浣撴\")\r\n    private List<String> healthcareRecordTypeList;\r\n\r\n    @ApiModelProperty(value = \"璇婄枟鐘舵��  鍙傝�冨�煎煙鏂囨。2.6\")\r\n    private List<String> statusList;\r\n\r\n    @ApiModelProperty(value = \"鏄惁鍙栨渶杩戜竴娆¤瘖鐤椾俊鎭�  榛樿涓篺alse\")\r\n    private Boolean recently;\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java	(date 1758798203106)
-@@ -13,7 +13,7 @@
-     private String orgId;
- 
-     @ApiModelProperty(value = "闄㈠尯ID")
--    private Long campusIds;
-+    private Long campusId;
- 
-     @ApiModelProperty(value = "鎮h�呭鍚�   蹇呭~涓�涓�")
-     private String patientName;
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.system;\r\n\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.constant.UserConstants;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.*;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.exception.base.BaseException;\r\nimport com.ruoyi.common.utils.SecurityUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.ruoyi.system.service.ISysDeptService;\r\nimport com.ruoyi.system.service.ISysPostService;\r\nimport com.ruoyi.system.service.ISysRoleService;\r\nimport com.ruoyi.system.service.ISysUserService;\r\nimport com.smartor.mapper.SysUserDeptMapper;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.lang3.ArrayUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.security.access.prepost.PreAuthorize;\r\nimport org.springframework.validation.annotation.Validated;\r\nimport org.springframework.web.bind.annotation.*;\r\nimport org.springframework.web.multipart.MultipartFile;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.util.List;\r\nimport java.util.stream.Collectors;\r\n\r\n/**\r\n * 鐢ㄦ埛淇℃伅\r\n *\r\n * @author ruoyi\r\n */\r\n@Slf4j\r\n@RestController\r\n@RequestMapping(\"/system/user\")\r\npublic class SysUserController extends BaseController {\r\n    @Autowired\r\n    private ISysUserService userService;\r\n\r\n    @Autowired\r\n    private ISysRoleService roleService;\r\n\r\n    @Autowired\r\n    private ISysDeptService deptService;\r\n\r\n    @Autowired\r\n    private ISysPostService postService;\r\n\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    @Value(\"${isAdmin}\")\r\n    private List<Long> isAdmin;\r\n\r\n    /**\r\n     * 鑾峰彇鐢ㄦ埛鍒楄〃\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:list')\")\r\n    @GetMapping(\"/list\")\r\n    public TableDataInfo list(SysUser user) {\r\n        startPage();\r\n        List<SysUser> list = userService.selectUserList(user);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.EXPORT)\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:export')\")\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, SysUser user) {\r\n        List<SysUser> list = userService.selectUserList(user);\r\n        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);\r\n        util.exportExcel(response, list, \"鐢ㄦ埛鏁版嵁\");\r\n    }\r\n\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.IMPORT)\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:import')\")\r\n    @PostMapping(\"/importData\")\r\n    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {\r\n        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);\r\n        List<SysUser> userList = util.importExcel(file.getInputStream());\r\n        String operName = getUsername();\r\n        String message = userService.importUser(userList, updateSupport, operName);\r\n        return success(message);\r\n    }\r\n\r\n    @PostMapping(\"/importTemplate\")\r\n    public void importTemplate(HttpServletResponse response) {\r\n        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);\r\n        util.importTemplateExcel(response, \"鐢ㄦ埛鏁版嵁\");\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇璇︾粏淇℃伅\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:query')\")\r\n    @GetMapping(\"/getInfo/{userId}\")\r\n    public AjaxResult getInfo(@PathVariable(value = \"userId\", required = false) Long userId) {\r\n        log.info(\"--------userId鐨勫�间负锛歿}\",userId);\r\n        userService.checkUserDataScope(userId);\r\n        AjaxResult ajax = AjaxResult.success();\r\n        List<SysRole> roles = roleService.selectRoleAll();\r\n        ajax.put(\"roles\", isAdmin.contains(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));\r\n        ajax.put(\"posts\", postService.selectPostAll());\r\n        if (StringUtils.isNotNull(userId)) {\r\n            SysUser sysUser = userService.selectUserById(userId);\r\n            ajax.put(AjaxResult.DATA_TAG, sysUser);\r\n            ajax.put(\"postIds\", postService.selectPostListByUserId(userId));\r\n            ajax.put(\"roleIds\", sysUser.getRoles().stream().map(SysRole::getRoleId).collect(Collectors.toList()));\r\n        }\r\n        List<SysUserDept> sysUserDeptKSs = null;\r\n        List<SysUserDept> sysUserDeptBQs = null;\r\n        SysUserDept sysUserDept = new SysUserDept();\r\n        sysUserDept.setUserId(userId);\r\n        sysUserDept.setDeptType(\"1\");\r\n        LoginUser loginUser = getLoginUser();\r\n        SysUser user = loginUser.getUser();\r\n        log.info(\"--------user鐨勫�间负锛歿}\",user);\r\n        sysUserDept.setOrgid(user.getOrgid());\r\n        sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        ajax.put(\"belongDepts\", sysUserDeptKSs);\r\n\r\n        sysUserDept.setDeptType(\"2\");\r\n        sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        ajax.put(\"belongWards\", sysUserDeptBQs);\r\n\r\n        return ajax;\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐢ㄦ埛\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:add')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@Validated @RequestBody SysUser user) {\r\n        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) {\r\n            return error(\"鏂板鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪\");\r\n        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {\r\n            return error(\"鏂板鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪\");\r\n        } else if (StringUtils.isNotEmpty(user.getEmail()) && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {\r\n            return error(\"鏂板鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪\");\r\n        }\r\n        user.setCreateBy(getUsername());\r\n        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));\r\n        user.setOrgid(getOrgid());\r\n        int i = userService.insertUser(user);\r\n        return success(user.getUserId().intValue());\r\n    }\r\n\r\n    /**\r\n     * 淇敼鐢ㄦ埛\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:edit')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/edit\")\r\n    public AjaxResult edit(@Validated @RequestBody SysUser user) {\r\n        userService.checkUserAllowed(user);\r\n        userService.checkUserDataScope(user.getUserId());\r\n        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) {\r\n            return error(\"淇敼鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪\");\r\n        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {\r\n            return error(\"淇敼鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛屾墜鏈哄彿鐮佸凡瀛樺湪\");\r\n        } else if (StringUtils.isNotEmpty(user.getEmail()) && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {\r\n            return error(\"淇敼鐢ㄦ埛'\" + user.getUserName() + \"'澶辫触锛岄偖绠辫处鍙峰凡瀛樺湪\");\r\n        }\r\n        user.setUpdateBy(getUsername());\r\n        return toAjax(userService.updateUser(user));\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎鐢ㄦ埛\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:remove')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.DELETE)\r\n    @GetMapping(\"/remove/{userIds}\")\r\n    public AjaxResult remove(@PathVariable Long[] userIds) {\r\n        if (ArrayUtils.contains(userIds, getUserId())) {\r\n            return error(\"褰撳墠鐢ㄦ埛涓嶈兘鍒犻櫎\");\r\n        }\r\n        return toAjax(userService.deleteUserByIds(userIds));\r\n    }\r\n\r\n    /**\r\n     * 閲嶇疆瀵嗙爜\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:resetPwd')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/resetPwd\")\r\n    public AjaxResult resetPwd(@RequestBody SysUser user) {\r\n        userService.checkUserAllowed(user);\r\n        userService.checkUserDataScope(user.getUserId());\r\n        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));\r\n        user.setUpdateBy(getUsername());\r\n        return toAjax(userService.resetPwd(user));\r\n    }\r\n\r\n    /**\r\n     * 鐘舵�佷慨鏀筡r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:edit')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/changeStatus\")\r\n    public AjaxResult changeStatus(@RequestBody SysUser user) {\r\n        userService.checkUserAllowed(user);\r\n        userService.checkUserDataScope(user.getUserId());\r\n        user.setUpdateBy(getUsername());\r\n        return toAjax(userService.updateUserStatus(user));\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鎺堟潈瑙掕壊\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:query')\")\r\n    @GetMapping(\"/authRole/{userId}\")\r\n    public AjaxResult authRole(@PathVariable(\"userId\") Long userId) {\r\n        AjaxResult ajax = AjaxResult.success();\r\n        SysUser user = userService.selectUserById(userId);\r\n        List<SysRole> roles = roleService.selectRolesByUserId(userId);\r\n        ajax.put(\"user\", user);\r\n        ajax.put(\"roles\", isAdmin.contains(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));\r\n        return ajax;\r\n    }\r\n\r\n    /**\r\n     * 鐢ㄦ埛鎺堟潈瑙掕壊\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:edit')\")\r\n    @Log(title = \"鐢ㄦ埛绠$悊\", businessType = BusinessType.GRANT)\r\n    @PostMapping(\"/authRole/insertAuthRole\")\r\n    public AjaxResult insertAuthRole(@RequestBody AuthRole authRole) {\r\n        log.info(\"-----鐢ㄦ埛鎺堟潈瑙掕壊鐨勫叆鍙備负锛歶serId={},roleIds={}\", authRole.getUserId(), authRole.getRoleIds());\r\n        if (ObjectUtils.isEmpty(authRole.getRoleIds())) {\r\n            throw new BaseException(\"瑙掕壊涓虹┖锛岃妫�鏌ヤ箣鍚庡啀娆″皾璇昞");\r\n        }\r\n        Long[] roleIds = authRole.getRoleIds().stream().toArray(Long[]::new);\r\n        Long userId = authRole.getUserId();\r\n        userService.checkUserDataScope(userId);\r\n        userService.insertUserAuth(userId, roleIds, getOrgid());\r\n        return success();\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇閮ㄩ棬鏍戝垪琛╘r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:user:list')\")\r\n    @GetMapping(\"/deptTree\")\r\n    public AjaxResult deptTree(SysDept dept) {\r\n        return success(deptService.selectDeptTreeList(dept));\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java	(date 1758798203122)
-@@ -65,6 +65,9 @@
-     @GetMapping("/list")
-     public TableDataInfo list(SysUser user) {
-         startPage();
-+        LoginUser loginUser = getLoginUser();
-+        String orgid = loginUser.getUser().getOrgid();
-+        user.setOrgid(orgid);
-         List<SysUser> list = userService.selectUserList(user);
-         return getDataTable(list);
-     }
-Index: smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\nimport afu.org.checkerframework.checker.oigj.qual.O;\r\nimport com.alibaba.fastjson2.JSON;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.mapper.ServiceSubtaskAnswerMapper;\r\nimport com.smartor.mapper.ServiceSubtaskDetailMapper;\r\nimport com.smartor.mapper.ServiceSubtaskMapper;\r\nimport com.smartor.mapper.SvyTaskTemplateTargetoptionMapper;\r\nimport com.smartor.service.IServiceSubtaskAnswerService;\r\nimport com.smartor.service.IServiceTaskService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.*;\r\nimport java.util.concurrent.TimeUnit;\r\n\r\n/**\r\n * 浠诲姟闂嵎闂閫夐」Service涓氬姟灞傚鐞哱r\n *\r\n * @author ruoyi\r\n * @date 2024-07-18\r\n */\r\n@Slf4j\r\n@Service\r\npublic class ServiceSubtaskAnswerServiceImpl implements IServiceSubtaskAnswerService {\r\n    @Autowired\r\n    private ServiceSubtaskAnswerMapper serviceSubtaskAnswerMapper;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskMapper serviceSubtaskMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    @Autowired\r\n    private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;\r\n\r\n    @Autowired\r\n    private IServiceTaskService serviceTaskService;\r\n\r\n    @Autowired\r\n    private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper;\r\n\r\n    @Value(\"${pri_key}\")\r\n    private String pri_key;\r\n\r\n    /**\r\n     * 鏌ヨ浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param id 浠诲姟闂嵎闂閫夐」涓婚敭\r\n     * @return 浠诲姟闂嵎闂閫夐」\r\n     */\r\n    @Override\r\n    public ServiceSubtaskAnswer selectServiceSubtaskAnswerById(Long id) {\r\n        return serviceSubtaskAnswerMapper.selectServiceSubtaskAnswerById(id);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ浠诲姟闂嵎闂閫夐」鍒楄〃\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 浠诲姟闂嵎闂閫夐」\r\n     */\r\n    @Override\r\n    public List<ServiceSubtaskAnswer> selectServiceSubtaskAnswerList(ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        return serviceSubtaskAnswerMapper.selectServiceSubtaskAnswerList(serviceSubtaskAnswer);\r\n    }\r\n\r\n    /**\r\n     * 鏂板浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        serviceSubtaskAnswer.setCreateTime(DateUtils.getNowDate());\r\n        return serviceSubtaskAnswerMapper.insertServiceSubtaskAnswer(serviceSubtaskAnswer);\r\n    }\r\n\r\n    /**\r\n     * 淇敼浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer) {\r\n        serviceSubtaskAnswer.setUpdateTime(DateUtils.getNowDate());\r\n        return serviceSubtaskAnswerMapper.updateServiceSubtaskAnswer(serviceSubtaskAnswer);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param ids 闇�瑕佸垹闄ょ殑浠诲姟闂嵎闂閫夐」涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteServiceSubtaskAnswerByIds(Long[] ids) {\r\n        return serviceSubtaskAnswerMapper.deleteServiceSubtaskAnswerByIds(ids);\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎浠诲姟闂嵎闂閫夐」淇℃伅\r\n     *\r\n     * @param id 浠诲姟闂嵎闂閫夐」涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int deleteServiceSubtaskAnswerById(Long id) {\r\n        return serviceSubtaskAnswerMapper.deleteServiceSubtaskAnswerById(id);\r\n    }\r\n\r\n\r\n    @Override\r\n    public Integer saveQuestionAnswer(ServiceSubTaskAnswerReq serviceSubTaskAnswerReq, Long flag) {\r\n        Long tid = null;\r\n        Long pid = null;\r\n        Double score = null;\r\n        Set<String> allKeys = redisCache.getAllKeys();\r\n        if (ObjectUtils.isNotEmpty(serviceSubTaskAnswerReq)) {\r\n            //闇�瑕佺珛鍗虫墽琛孿r\n            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n\r\n            if (flag == 0) {\r\n                tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam1(), pri_key));\r\n                pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskAnswerReq.getParam2(), pri_key));\r\n            } else if (flag == 1) {\r\n                tid = Long.valueOf(serviceSubTaskAnswerReq.getParam1());\r\n                pid = Long.valueOf(serviceSubTaskAnswerReq.getParam2());\r\n            }\r\n            if (serviceSubTaskAnswerReq.getType() != null && serviceSubTaskAnswerReq.getType() == 2) {\r\n                allKeys = new HashSet<>();\r\n                allKeys.add(pid + \"-\" + tid + \"-WJscriptCache\");\r\n            } else if (serviceSubTaskAnswerReq.getType() != null && serviceSubTaskAnswerReq.getType() == 1) {\r\n                allKeys = new HashSet<>();\r\n                allKeys.add(pid + \"-\" + tid + \"-SFscriptCache\");\r\n            }\r\n        }\r\n\r\n        Long nextScriptno = null;\r\n        aa:\r\n        for (String key : allKeys) {\r\n            String[] split = key.split(\"-\");\r\n            //鍏堝垽鏂紝鏄笉鏄綋鍓嶆彁浜や汉鐨勶紝涓嶆槸褰撳墠鎻愪氦浜虹殑锛岃烦杩嘰r\n            try {\r\n                if (ObjectUtils.isNotEmpty(split[0]) && ObjectUtils.isNotEmpty(split[1]) && !Long.valueOf(split[0]).equals(pid) && !Long.valueOf(split[1]).equals(tid)) {\r\n                    continue;\r\n                }\r\n            } catch (Exception e) {\r\n                //杩欓噷涔嬫墍浠ヨ澶勭悊寮傚父锛屾槸鍥犱负鏈夌殑KEY灏变笉鏄垜浠鐨凨EY,娌℃湁鍘绘埅鍙栵紱鏈夊紓甯镐笉澶勭悊锛岀洿鎺ヤ笅涓�涓猏r\n                continue;\r\n            }\r\n            if (key.contains(\"-WJscriptCache\")) {\r\n                List<SvyLibTemplateScriptVO> cacheList = redisCache.getCacheList(key);\r\n                cacheList.sort(Comparator.comparingLong(SvyLibTemplateScriptVO::getSort));\r\n                log.error(\"闂嵎鍥炵瓟缁撴灉锛歿}\", cacheList);\r\n                for (int i = 0; i < cacheList.size(); i++) {\r\n                    if (i == 0) {\r\n                        //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰榎r\n                        for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : cacheList) {\r\n                            if (svyLibTemplateScriptVO.getSort() == 1L) {\r\n                                //璇存槑鏄涓�棰榎r\n                                SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(0), SvyTaskTemplateScriptVO.class);\r\n                                List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = cacheList.get(0).getSvyLibTemplateTargetoptions();\r\n                                List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyLibTemplateTargetoptions, SvyTaskTemplateTargetoption.class);\r\n                                svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);\r\n                                Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid);\r\n                                if (map == null) continue aa;\r\n                                nextScriptno = Long.valueOf(map.get(\"nextScriptNo\"));\r\n                                if (score == null) {\r\n                                    score = Double.valueOf(map.get(\"score\"));\r\n                                } else {\r\n                                    score = score + Double.valueOf(map.get(\"score\"));\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                    } else {\r\n                        SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), SvyTaskTemplateScriptVO.class);\r\n                        List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getSvyLibTemplateTargetoptions(), SvyTaskTemplateTargetoption.class);\r\n                        svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);\r\n\r\n                        if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {\r\n                            log.error(\"svyTaskTemplateScriptVO鐨勫�间负锛歿}\", svyTaskTemplateScriptVO);\r\n                            Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));\r\n                            log.error(\"map鐨勪俊鎭负锛歿}\", map);\r\n                            nextScriptno = Long.valueOf(map.get(\"nextScriptNo\"));\r\n                            if (score == null) {\r\n                                score = Double.valueOf(map.get(\"score\"));\r\n                            } else {\r\n                                score = score + Double.valueOf(map.get(\"score\"));\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            } else if (key.contains(\"-SFscriptCache\")) {\r\n                List<IvrLibaTemplateScriptVO> cacheList = redisCache.getCacheList(key);\r\n                cacheList.sort(Comparator.comparingLong(IvrLibaTemplateScriptVO::getSort));\r\n                log.error(\"鐢佃瘽闅忚闂嵎鍥炵瓟缁撴灉锛歿}\", cacheList);\r\n                for (int i = 0; i < cacheList.size(); i++) {\r\n                    if (i == 0) {\r\n                        //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰榎r\n                        for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : cacheList) {\r\n                            if (ivrLibaTemplateScriptVO.getSort() == 1L) {\r\n                                //璇存槑鏄涓�棰榎r\n                                IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(0), IvrTaskTemplateScriptVO.class);\r\n                                List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = cacheList.get(0).getIvrLibaScriptTargetoptionList();\r\n                                List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(ivrLibaTemplateTargetoptions, IvrTaskTemplateTargetoption.class);\r\n                                ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);\r\n                                Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid);\r\n                                nextScriptno = Long.valueOf(map.get(\"nextScriptNo\"));\r\n                                if (score == null) {\r\n                                    score = Double.valueOf(map.get(\"score\"));\r\n                                } else {\r\n                                    score = score + Double.valueOf(map.get(\"score\"));\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                    } else {\r\n                        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(cacheList.get(i), IvrTaskTemplateScriptVO.class);\r\n                        List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(cacheList.get(i).getIvrLibaScriptTargetoptionList(), IvrTaskTemplateTargetoption.class);\r\n                        ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);\r\n\r\n                        if (ivrTaskTemplateScriptVO.getSort() != null && Long.valueOf(ivrTaskTemplateScriptVO.getSort()).equals(nextScriptno)) {\r\n                            Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));\r\n                            log.error(\"map鐨勪俊鎭负锛歿}\", map);\r\n                            nextScriptno = Long.valueOf(map.get(\"nextScriptNo\"));\r\n                            if (score == null) {\r\n                                score = Double.valueOf(map.get(\"score\"));\r\n                            } else {\r\n                                score = score + Double.valueOf(map.get(\"score\"));\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            } else {\r\n                continue;\r\n            }\r\n            //灏嗚key鍜寁alue浠巖edis涓紝鍒犻櫎\r\n            redisCache.deleteObject(key);\r\n            ServiceSubtask serviceSubtask = new ServiceSubtask();\r\n            serviceSubtask.setTaskid(tid);\r\n            serviceSubtask.setPatid(pid);\r\n            serviceSubtask.setSubmit(1L);\r\n            serviceSubtask.setSendstate(6L);\r\n            serviceSubtask.setExcep(serviceSubTaskAnswerReq.getExcep());\r\n            serviceSubtask.setFinishtime(new Date());\r\n            serviceSubtask.setUpdateTime(new Date());\r\n            log.error(\"灏嗚key鍜寁alue浠巖edis涓�,serviceSubtask鐨勫�间负--------锛歿}\", serviceSubtask);\r\n            if (score != null) serviceSubtask.setScore(BigDecimal.valueOf(score));\r\n            serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);\r\n        }\r\n        return 1;\r\n    }\r\n\r\n\r\n    /**\r\n     * 灏嗛棶棰樹繚瀛樺埌缂撳瓨涓璡r\n     *\r\n     * @param serviceSubTaskCacheReq\r\n     * @return\r\n     */\r\n    @Override\r\n    public Integer saveQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq, Long flag) {\r\n        try {\r\n            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n            Long tid = null;\r\n            Long pid = null;\r\n            if (flag == 0L) {\r\n                tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam1(), pri_key));\r\n                pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam2(), pri_key));\r\n            } else if (flag == 1L) {\r\n                tid = Long.valueOf(serviceSubTaskCacheReq.getParam1());\r\n                pid = Long.valueOf(serviceSubTaskCacheReq.getParam2());\r\n            }\r\n            if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS()) &&  serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS().size() > 0) {\r\n                //闂嵎\r\n                redisCache.deleteObject(pid + \"-\" + tid + \"-WJscriptCache\");\r\n                redisCache.setCacheListRight(pid + \"-\" + tid + \"-WJscriptCache\", serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS());\r\n                //璁剧疆杩囨湡鏃堕棿 3澶‐r\n                Long tims = Long.valueOf(3 * 24 * 3600);\r\n                boolean expire = redisCache.expire(pid + \"-\" + tid + \"-WJscriptCache\", tims);\r\n                return 1;\r\n            } else if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getIvrLibaTemplateScriptVOList()) && serviceSubTaskCacheReq.getIvrLibaTemplateScriptVOList().size() > 0) {\r\n                //闂嵎\r\n                redisCache.deleteObject(pid + \"-\" + tid + \"-SFscriptCache\");\r\n                redisCache.setCacheListRight(pid + \"-\" + tid + \"-SFscriptCache\", serviceSubTaskCacheReq.getIvrLibaTemplateScriptVOList());\r\n                //璁剧疆杩囨湡鏃堕棿 3澶‐r\n                Long tims = Long.valueOf(3 * 24 * 3600);\r\n                redisCache.expire(pid + \"-\" + tid + \"-SFscriptCache\", tims);\r\n                return 1;\r\n            }\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"缂撳瓨淇濆瓨澶辫触锛歿}\", e.getMessage());\r\n            return 0;\r\n        }\r\n        return 0;\r\n    }\r\n\r\n    @Override\r\n    public Map<String, Object> getQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq, Long flag) {\r\n        Map<String, Object> map = new HashMap<>();\r\n        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n        Long tid = null;\r\n        Long pid = null;\r\n        Long subId = null;\r\n        if (flag == 0L) {\r\n            tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam1(), pri_key));\r\n            pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam2(), pri_key));\r\n            //杩欎釜鏄湁闂鐨勶紝鍏堣繖鏍凤紝鍚堝苟浠g爜鐨勬椂鍊欐病鏈夋妸param6鍚堣繘鏉r\n            if (StringUtils.isNotEmpty(serviceSubTaskCacheReq.getParam6())) {\r\n                subId = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskCacheReq.getParam6(), pri_key));\r\n            }\r\n        } else if (flag == 1L) {\r\n            tid = Long.valueOf(serviceSubTaskCacheReq.getParam1());\r\n            pid = Long.valueOf(serviceSubTaskCacheReq.getParam2());\r\n            if (StringUtils.isNotEmpty(serviceSubTaskCacheReq.getParam6()))\r\n                subId = Long.valueOf(serviceSubTaskCacheReq.getParam6());\r\n\r\n        }\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskid(tid);\r\n        serviceSubtaskVO.setPatid(pid);\r\n        serviceSubtaskVO.setSubId(subId);\r\n\r\n        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n        if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {\r\n            map.put(\"submit\", 0);\r\n        } else {\r\n            map.put(\"submit\", selectServiceSubtaskList.get(0).getSubmit());\r\n            if (selectServiceSubtaskList.get(0).getSubmit() == 1) {\r\n                return map;\r\n            }\r\n        }\r\n        //闂嵎\r\n        List<SvyLibTemplateScriptVO> svyTaskTemplateScriptVOList = redisCache.getCacheList(pid + \"-\" + tid + \"-WJscriptCache\");\r\n        map.put(\"result\", svyTaskTemplateScriptVOList);\r\n        return map;\r\n    }\r\n\r\n    @Override\r\n    public Map<String, Object> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq) {\r\n        log.error(\"selectPatQuesTionResult鐨勫叆鍙備负锛歿}\", serviceSubTaskQueryReq);\r\n        Map<String, Object> map = new HashMap<>();\r\n\r\n        //鑾峰彇鏈鐨勯棶绛旂粨鏋淺r\n        Map<String, Object> scriptInfoByCondition = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom());\r\n        map = getMap(scriptInfoByCondition, serviceSubTaskQueryReq.getSubId(), serviceSubTaskQueryReq.getPatid());\r\n\r\n        //鑾峰彇涓婃鐨勯棶绛旂粨鏋淺r\n        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubTaskQueryReq.getSubId());\r\n        map.put(\"upScriptResult\", null);\r\n        map.put(\"upTaskName\", null);\r\n        if (ObjectUtils.isNotEmpty(serviceSubtask) && serviceSubtask.getUpid() != null) {\r\n            Map<String, Object> scriptInfoByCondition2 = serviceTaskService.getScriptInfoByCondition(serviceSubTaskQueryReq.getTaskid(), serviceSubTaskQueryReq.getPatid(), serviceSubTaskQueryReq.getIsFinish(), serviceSubTaskQueryReq.getPatfrom());\r\n            Map<String, Object> map1 = getMap(scriptInfoByCondition2, Long.valueOf(serviceSubtask.getUpid()), serviceSubTaskQueryReq.getPatid());\r\n            if (!map1.isEmpty()) {\r\n                map.put(\"upScriptResult\", map1.get(\"scriptResult\"));\r\n                map.put(\"upTaskName\", map1.get(\"taskName\"));\r\n            }\r\n        }\r\n\r\n        return map;\r\n    }\r\n\r\n\r\n    private Map<String, Object> getMap(Map<String, Object> scriptInfoByCondition, Long subid, Long patid) {\r\n        Map<String, Object> map = new HashMap<>();\r\n        if (ObjectUtils.isNotEmpty(scriptInfoByCondition) && ObjectUtils.isNotEmpty(scriptInfoByCondition.get(\"script\"))) {\r\n//            log.error(\"-----------scriptInfoByCondition鐨勫�间负锛歿}\", scriptInfoByCondition);\r\n            if (scriptInfoByCondition.get(\"type\").equals(\"1\")) {\r\n                List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList = (List) scriptInfoByCondition.get(\"script\");\r\n                for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOList) {\r\n                    Map<String, String> scriptResult = getScriptResult(subid, patid, ivrLibaTemplateScriptVO.getId());\r\n                    if (ObjectUtils.isNotEmpty(scriptResult)) {\r\n                        ivrLibaTemplateScriptVO.setScriptResult(scriptResult.get(\"asrtext\"));\r\n                        ivrLibaTemplateScriptVO.setScriptResultId(scriptResult.get(\"asrtextId\"));\r\n                    }\r\n                }\r\n                map.put(\"scriptResult\", ivrLibaTemplateScriptVOList);\r\n                map.put(\"taskName\", scriptInfoByCondition.get(\"taskName\"));\r\n            } else if (scriptInfoByCondition.get(\"type\").equals(\"2\")) {\r\n                List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOList = (List) scriptInfoByCondition.get(\"script\");\r\n                for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOList) {\r\n                    Map<String, String> scriptResult = getScriptResult(subid, patid, svyLibTemplateScriptVO.getId());\r\n                    if (ObjectUtils.isNotEmpty(scriptResult)) {\r\n                        if (StringUtils.isNotEmpty(scriptResult.get(\"asrtext\")))\r\n                            svyLibTemplateScriptVO.setScriptResult(StringUtils.isNotEmpty(scriptResult.get(\"asrtext\")) ? scriptResult.get(\"asrtext\").replaceAll(\"^(\\\"|')(.*)\\\\1$\", \"$2\") : \"\");\r\n                        svyLibTemplateScriptVO.setScriptResultId(scriptResult.get(\"asrtextId\"));\r\n                        if (StringUtils.isNotEmpty(scriptResult.get(\"answerps\")))\r\n                            svyLibTemplateScriptVO.setAnswerps(scriptResult.get(\"answerps\"));\r\n                    }\r\n                }\r\n                map.put(\"scriptResult\", svyLibTemplateScriptVOList);\r\n                map.put(\"taskName\", scriptInfoByCondition.get(\"taskName\"));\r\n            } else if (scriptInfoByCondition.get(\"type\").equals(\"3\")) {\r\n                //瀹f暀涓嶉渶瑕佹煡鐪媆r\n                List<HeLibrary> heLibraryList = (List) scriptInfoByCondition.get(\"script\");\r\n                map.put(\"scriptResult\", heLibraryList);\r\n                map.put(\"taskName\", scriptInfoByCondition.get(\"taskName\"));\r\n            }\r\n        }\r\n        return map;\r\n    }\r\n\r\n\r\n    private Map<String, String> getScriptResult(Long subid, Long pid, Long sid) {\r\n        Map<String, String> map = new HashMap<>();\r\n        ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();\r\n        serviceSubtaskDetail.setSubId(subid);\r\n        serviceSubtaskDetail.setPatid(pid);\r\n        serviceSubtaskDetail.setScriptid(sid);\r\n        List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);\r\n        if (CollectionUtils.isNotEmpty(serviceSubtaskDetails)) {\r\n            map.put(\"asrtext\", serviceSubtaskDetails.get(0).getAsrtext());\r\n            map.put(\"asrtextId\", serviceSubtaskDetails.get(0).getId());\r\n            map.put(\"answerps\", serviceSubtaskDetails.get(0).getAnswerps());\r\n            return map;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private Map<String, String> setWJInfo(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO, Long taskid, Long patid) {\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskid(taskid);\r\n        serviceSubtaskVO.setPatid(patid);\r\n        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n\r\n        String score = \"0\";\r\n        //涓嬮璺宠浆\r\n        String nextScriptNo = null;\r\n        ServiceSubtaskDetailVO serviceSubtaskDetailVO = new ServiceSubtaskDetailVO();\r\n        List<ServiceSubtaskOptionAnswer> answerList = new ArrayList<>();\r\n        if (svyTaskTemplateScriptVO.getScriptType().equals(\"1\") || svyTaskTemplateScriptVO.getScriptType().equals(\"2\")) {\r\n            //1銆�2涓哄崟閫夋垨澶氶�塡r\n            for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption : svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions()) {\r\n                //灏嗛棶棰橀�夐」璁板綍涓嬫潵\r\n                if (StringUtils.isEmpty(serviceSubtaskDetailVO.getTargetvalue())) {\r\n                    serviceSubtaskDetailVO.setTargetvalue(svyTaskTemplateTargetoption.getOptioncontent());\r\n                } else {\r\n                    serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + \"&\" + svyTaskTemplateTargetoption.getOptioncontent());\r\n                }\r\n//                if (svyTaskTemplateTargetoption.getIsUserOperation() == true) {\r\n//                    //灏嗛�変腑鐨勭粨鏋滄斁鍒癮srtext涓璡r\n//                    if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {\r\n//                        //鍜屽墠绔晢閲忥紝鍓嶇浼氬皢閫変腑鐨勭粨鏋滄洿鏂板埌闂涓奬r\n////                        serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateTargetoption.getTargetvalue());\r\n//                        serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());\r\n//                    } else {\r\n//                        //濡傛灉鏄閫夛紝绛旀闇�瑕佺敤 & 杩涜鎷兼帴(//鍜屽墠绔晢閲忥紝鍓嶇浼氬皢閫変腑鐨勭粨鏋滄洿鏂板埌闂涓�)\r\n////                        serviceSubtaskDetailVO.setAsrtext(serviceSubtaskDetailVO.getAnswerps() + \"&\" + svyTaskTemplateTargetoption.getTargetvalue());\r\n//                        serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());\r\n//                    }\r\n//                    if (svyTaskTemplateScriptVO.getScriptType().equals(\"1\") && svyTaskTemplateScriptVO.getBranchFlag().equals(\"1\")) {\r\n//                        //鏄崟閫夛紝骞朵笖鏄湁鍒嗘敮鐨�(鍜屽墠绔晢閲忥紝鍦ㄥ閾剧粨鏋滀繚瀛樻椂锛屼細灏嗛�変腑鐨勯�夐」涓婄殑璺宠浆鏇存柊鍒伴鐩笂)\r\n////                        nextScriptNo = svyTaskTemplateTargetoption.getNextQuestion().toString();\r\n//                        nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();\r\n//                        score = svyTaskTemplateTargetoption.getScore().toString();\r\n//                    } else {\r\n//                        nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();\r\n//                        score = svyTaskTemplateScriptVO.getScore().toString();\r\n//                    }\r\n//                }\r\n            }\r\n            nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();\r\n            if (svyTaskTemplateScriptVO.getScore() != null) {\r\n                score = String.valueOf(svyTaskTemplateScriptVO.getScore());\r\n            }\r\n            serviceSubtaskDetailVO.setAsrtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? \"\" : svyTaskTemplateScriptVO.getScriptResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n            serviceSubtaskDetailVO.setMatchedtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? \"\" : svyTaskTemplateScriptVO.getScriptResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n//            if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {\r\n//                nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();\r\n//            }\r\n//            serviceSubtaskDetailVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions());\r\n        } else {\r\n            //闈炲崟澶氶�塡r\n            if (StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptResult())) {\r\n                serviceSubtaskDetailVO.setAsrtext(svyTaskTemplateScriptVO.getScriptResult());\r\n                if (svyTaskTemplateScriptVO.getScore() != null) {\r\n                    score = String.valueOf(svyTaskTemplateScriptVO.getScore());\r\n                }\r\n            }\r\n            nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();\r\n        }\r\n        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(taskid);\r\n        serviceSubtaskDetailVO.setQuestiontext(svyTaskTemplateScriptVO.getScriptContent());\r\n        serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid));\r\n        serviceSubtaskDetailVO.setTargetid(svyTaskTemplateScriptVO.getTargetid() != null ? svyTaskTemplateScriptVO.getTargetid().intValue() : null);\r\n        serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));\r\n        serviceSubtaskDetailVO.setScriptid(svyTaskTemplateScriptVO.getId());\r\n        serviceSubtaskDetailVO.setTemplatequestionnum(StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptno()) ? Long.valueOf(svyTaskTemplateScriptVO.getScriptno()) : null);\r\n        serviceSubtaskDetailVO.setValueType(svyTaskTemplateScriptVO.getScriptType());\r\n        serviceSubtaskDetailVO.setComment(null);\r\n        serviceSubtaskDetailVO.setCreateTime(new Date());\r\n        serviceSubtaskDetailVO.setUpdateTime(new Date());\r\n        if (ObjectUtils.isNotEmpty(serviceTask)) {\r\n            serviceSubtaskDetailVO.setGuid(serviceTask.getGuid());\r\n            serviceSubtaskDetailVO.setOrgid(serviceTask.getOrgid());\r\n        }\r\n        serviceSubtaskDetailVO.setSubId(CollectionUtils.isNotEmpty(selectServiceSubtaskList) ? selectServiceSubtaskList.get(0).getId() : null);\r\n        serviceSubtaskDetailVO.setTemplatequestionnum(svyTaskTemplateScriptVO.getId());\r\n        ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class);\r\n        serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);\r\n\r\n        Map<String, String> map = new HashMap<>();\r\n        map.put(\"nextScriptNo\", nextScriptNo);\r\n        map.put(\"score\", score);\r\n        return map;\r\n    }\r\n\r\n    private Map<String, String> setSFInfo(IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, Long taskid, Long patid) {\r\n        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n        serviceSubtaskVO.setTaskid(taskid);\r\n        serviceSubtaskVO.setPatid(patid);\r\n        List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);\r\n\r\n        String score = \"0\";\r\n        //涓嬮璺宠浆\r\n        String nextScriptNo = null;\r\n        ServiceSubtaskDetailVO serviceSubtaskDetailVO = new ServiceSubtaskDetailVO();\r\n        List<ServiceSubtaskOptionAnswer> answerList = new ArrayList<>();\r\n        if (ivrTaskTemplateScriptVO.getScriptType().equals(\"1\") || ivrTaskTemplateScriptVO.getScriptType().equals(\"2\")) {\r\n            //1銆�2涓哄崟閫夋垨澶氶�塡r\n            for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {\r\n                //灏嗛棶棰橀�夐」璁板綍涓嬫潵\r\n                if (StringUtils.isEmpty(serviceSubtaskDetailVO.getTargetvalue())) {\r\n                    serviceSubtaskDetailVO.setTargetvalue(ivrTaskTemplateTargetoption.getTargetvalue());\r\n                } else {\r\n                    serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + \"&\" + ivrTaskTemplateTargetoption.getTargetvalue());\r\n                }\r\n\r\n            }\r\n            nextScriptNo = ivrTaskTemplateScriptVO.getNextScriptno().toString();\r\n            if (ivrTaskTemplateScriptVO.getScore() != null) {\r\n                score = String.valueOf(ivrTaskTemplateScriptVO.getScore());\r\n            }\r\n            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getQuestionResult())) {\r\n                serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n                serviceSubtaskDetailVO.setMatchedtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n            }\r\n        } else {\r\n            //闈炲崟澶氶�塡r\n            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getQuestionResult())) {\r\n                serviceSubtaskDetailVO.setAsrtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n                serviceSubtaskDetailVO.setMatchedtext(ivrTaskTemplateScriptVO.getQuestionResult().replaceAll(\"^\\\"|\\\"$\", \"\"));\r\n                nextScriptNo = ivrTaskTemplateScriptVO.getNextScriptno().toString();\r\n                if (ivrTaskTemplateScriptVO.getScore() != null) {\r\n                    score = String.valueOf(ivrTaskTemplateScriptVO.getScore());\r\n                }\r\n            }\r\n        }\r\n        serviceSubtaskDetailVO.setTargetid(ivrTaskTemplateScriptVO.getTargetid() != null ? ivrTaskTemplateScriptVO.getTargetid().intValue() : null);\r\n        serviceSubtaskDetailVO.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());\r\n        serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid));\r\n        serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));\r\n        serviceSubtaskDetailVO.setScriptid(ivrTaskTemplateScriptVO.getScriptID());\r\n        serviceSubtaskDetailVO.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());\r\n        serviceSubtaskDetailVO.setValueType(ivrTaskTemplateScriptVO.getScriptType());\r\n        serviceSubtaskDetailVO.setComment(null);\r\n        serviceSubtaskDetailVO.setCreateTime(new Date());\r\n        serviceSubtaskDetailVO.setGuid(ivrTaskTemplateScriptVO.getGuid());\r\n        serviceSubtaskDetailVO.setOrgid(ivrTaskTemplateScriptVO.getOrgid());\r\n        serviceSubtaskDetailVO.setUpdateTime(new Date());\r\n        serviceSubtaskDetailVO.setSubId(selectServiceSubtaskList.get(0).getId());\r\n        serviceSubtaskDetailVO.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());\r\n        ServiceSubtaskDetail serviceSubtaskDetail = DtoConversionUtils.sourceToTarget(serviceSubtaskDetailVO, ServiceSubtaskDetail.class);\r\n        serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);\r\n\r\n        Map<String, String> map = new HashMap<>();\r\n        map.put(\"nextScriptNo\", nextScriptNo);\r\n        map.put(\"score\", score);\r\n        return map;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java	(date 1758874708484)
-@@ -1,17 +1,12 @@
- package com.smartor.service.impl;
- 
--import afu.org.checkerframework.checker.oigj.qual.O;
--import com.alibaba.fastjson2.JSON;
- import com.ruoyi.common.core.redis.RedisCache;
- import com.ruoyi.common.utils.DateUtils;
- import com.ruoyi.common.utils.DtoConversionUtils;
- import com.ruoyi.common.utils.RSAPublicKeyExample;
- import com.ruoyi.common.utils.StringUtils;
- 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.mapper.*;
- import com.smartor.service.IServiceSubtaskAnswerService;
- import com.smartor.service.IServiceTaskService;
- import lombok.extern.slf4j.Slf4j;
-@@ -23,7 +18,6 @@
- 
- import java.math.BigDecimal;
- import java.util.*;
--import java.util.concurrent.TimeUnit;
- 
- /**
-  * 浠诲姟闂嵎闂閫夐」Service涓氬姟灞傚鐞�
-@@ -40,6 +34,9 @@
-     @Autowired
-     private ServiceSubtaskMapper serviceSubtaskMapper;
- 
-+    @Autowired
-+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
-+
-     @Autowired
-     private RedisCache redisCache;
- 
-@@ -50,11 +47,21 @@
-     private IServiceTaskService serviceTaskService;
- 
-     @Autowired
--    private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper;
-+    private PatArchiveMapper patArchiveMapper;
-+
-+
-+    @Autowired
-+    private PatMedInhospMapper patMedInhospMapper;
-+
-+    @Autowired
-+    private PatMedOuthospMapper patMedOuthospMapper;
- 
-     @Value("${pri_key}")
-     private String pri_key;
- 
-+    @Value("${dealDeptCode}")
-+    private String dealDeptCode;
-+
-     /**
-      * 鏌ヨ浠诲姟闂嵎闂閫夐」
-      *
-@@ -129,6 +136,7 @@
-         Long tid = null;
-         Long pid = null;
-         Double score = null;
-+        Long isabno = 0L;
-         Set<String> allKeys = redisCache.getAllKeys();
-         if (ObjectUtils.isNotEmpty(serviceSubTaskAnswerReq)) {
-             //闇�瑕佺珛鍗虫墽琛�
-@@ -179,7 +187,8 @@
-                                 svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-                                 Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, tid, pid);
-                                 if (map == null) continue aa;
--                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                                if (!Objects.isNull(map.get("nextScriptNo")))
-+                                    nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                                 if (score == null) {
-                                     score = Double.valueOf(map.get("score"));
-                                 } else {
-@@ -197,7 +206,8 @@
-                             log.error("svyTaskTemplateScriptVO鐨勫�间负锛歿}", svyTaskTemplateScriptVO);
-                             Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));
-                             log.error("map鐨勪俊鎭负锛歿}", map);
--                            nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                            if (!Objects.isNull(map.get("nextScriptNo")))
-+                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                             if (score == null) {
-                                 score = Double.valueOf(map.get("score"));
-                             } else {
-@@ -221,7 +231,8 @@
-                                 List<IvrTaskTemplateTargetoption> ivrTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(ivrLibaTemplateTargetoptions, IvrTaskTemplateTargetoption.class);
-                                 ivrTaskTemplateScriptVO.setIvrTaskScriptTargetoptionList(ivrTaskTemplateTargetoptions);
-                                 Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, tid, pid);
--                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                                if (!Objects.isNull(map.get("nextScriptNo")))
-+                                    nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                                 if (score == null) {
-                                     score = Double.valueOf(map.get("score"));
-                                 } else {
-@@ -238,7 +249,8 @@
-                         if (ivrTaskTemplateScriptVO.getSort() != null && Long.valueOf(ivrTaskTemplateScriptVO.getSort()).equals(nextScriptno)) {
-                             Map<String, String> map = setSFInfo(ivrTaskTemplateScriptVO, Long.valueOf(split[1]), Long.valueOf(split[0]));
-                             log.error("map鐨勪俊鎭负锛歿}", map);
--                            nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                            if (!Objects.isNull(map.get("nextScriptNo")))
-+                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-                             if (score == null) {
-                                 score = Double.valueOf(map.get("score"));
-                             } else {
-@@ -252,6 +264,14 @@
-             }
-             //灏嗚key鍜寁alue浠巖edis涓紝鍒犻櫎
-             redisCache.deleteObject(key);
-+
-+            //鏌ヨ鍑鸿浠诲姟涓鍦ㄦ墽琛岀殑鎮h�呬俊鎭�
-+            ServiceSubtaskVO ssVO = new ServiceSubtaskVO();
-+            ssVO.setTaskid(tid);
-+            ssVO.setPatid(pid);
-+            ssVO.setSendstate(3L);
-+            List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ssVO);
-+
-             ServiceSubtask serviceSubtask = new ServiceSubtask();
-             serviceSubtask.setTaskid(tid);
-             serviceSubtask.setPatid(pid);
-@@ -263,10 +283,188 @@
-             log.error("灏嗚key鍜寁alue浠巖edis涓�,serviceSubtask鐨勫�间负--------锛歿}", serviceSubtask);
-             if (score != null) serviceSubtask.setScore(BigDecimal.valueOf(score));
-             serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
-+
-+            //灏嗗綋鍓嶅彂閫佺姸鎬佹敼鎴�9瀹屾垚
-+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+            serviceSubtaskPreachform.setPreachform(serviceSubtaskList.get(0).getCurrentPreachform());
-+            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+            serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+            if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+                ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0);
-+                ssp.setSendstate("9");
-+                serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp);
-+            }
-+
-         }
-         return 1;
-     }
- 
-+    @Override
-+    public Boolean saveMYDQuestionAnswer(ServiceSubTaskMYDAnswerReq serviceSubTaskMYDAnswerReq) {
-+        //鐢ㄦ潵澶勭悊鎶曡瘔寤鸿鐨勯儴闂�
-+        String dealDept = null;
-+
-+        Long patid = null;
-+        List<PatMedInhosp> patMedInhospList = null;
-+        List<PatMedOuthosp> patMedOuthosps = null;
-+        List<Long> idList = new ArrayList<>();
-+        if (serviceSubTaskMYDAnswerReq.getMzzy().equals("1")) {
-+            //浣忛櫌
-+            PatMedInhosp patMedInhosp = new PatMedInhosp();
-+            patMedInhosp.setSerialnum(serviceSubTaskMYDAnswerReq.getSerialnum());
-+            patMedInhospList = patMedInhospMapper.selectPatMedInhospList(patMedInhosp);
-+            if (CollectionUtils.isNotEmpty(patMedInhospList)) patid = patMedInhospList.get(0).getPatid();
-+        } else if (serviceSubTaskMYDAnswerReq.getMzzy().equals("2")) {
-+            //闂ㄨ瘖
-+            PatMedOuthosp patMedOuthosp = new PatMedOuthosp();
-+            patMedOuthosp.setSerialnum(serviceSubTaskMYDAnswerReq.getSerialnum());
-+            patMedOuthosps = patMedOuthospMapper.selectPatMedOuthospList(patMedOuthosp);
-+            if (CollectionUtils.isNotEmpty(patMedOuthosps)) patid = patMedOuthosps.get(0).getPatid();
-+        } else if (serviceSubTaskMYDAnswerReq.getMzzy().equals("3")) {
-+            //鎸囧畾涓�涓儴闂紝鐢ㄦ潵澶勭悊鎶曡瘔寤鸿
-+            dealDept = dealDeptCode;
-+            String serialnum = serviceSubTaskMYDAnswerReq.getSerialnum();
-+            PatArchive patArchive = new PatArchive();
-+            patArchive.setPatientno(serialnum);
-+            List<PatArchive> patArchives = patArchiveMapper.selectPatArchiveList(patArchive);
-+            if (CollectionUtils.isNotEmpty(patArchives)) {
-+                patid = patArchives.get(0).getId();
-+            }
-+        }
-+
-+        if (CollectionUtils.isNotEmpty(serviceSubTaskMYDAnswerReq.getSvyLibTemplateScriptVOS())) {
-+            Double score = null;
-+            List<SvyLibTemplateScriptVO> svyLibTemplateScriptVOS = serviceSubTaskMYDAnswerReq.getSvyLibTemplateScriptVOS();
-+            Long nextScriptno = null;
-+            for (int i = 0; i < svyLibTemplateScriptVOS.size(); i++) {
-+                if (i == 0) {
-+                    //杩欎釜鏃堕棿瑕佹壘鍒扮涓�棰�
-+                    for (SvyLibTemplateScriptVO svyLibTemplateScriptVO : svyLibTemplateScriptVOS) {
-+                        if (svyLibTemplateScriptVO.getSort() == 1L) {
-+                            //璇存槑鏄涓�棰�
-+                            SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(0), SvyTaskTemplateScriptVO.class);
-+                            List<SvyLibTemplateTargetoption> svyLibTemplateTargetoptions = svyLibTemplateScriptVOS.get(0).getSvyLibTemplateTargetoptions();
-+                            List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyLibTemplateTargetoptions, SvyTaskTemplateTargetoption.class);
-+                            svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-+                            Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()), patid);
-+                            if (map == null) continue;
-+                            if (!Objects.isNull(map.get("nextScriptNo")))
-+                                nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                            if (score == null) {
-+                                score = Double.valueOf(map.get("score"));
-+                            } else {
-+                                score = score + Double.valueOf(map.get("score"));
-+                            }
-+                            if (!Objects.isNull(map.get("id"))) {
-+                                idList.add(Long.valueOf(map.get("id")));
-+                            }
-+                        }
-+                    }
-+
-+                } else {
-+                    SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(i), SvyTaskTemplateScriptVO.class);
-+                    List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = DtoConversionUtils.sourceToTarget(svyLibTemplateScriptVOS.get(i).getSvyLibTemplateTargetoptions(), SvyTaskTemplateTargetoption.class);
-+                    svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
-+
-+                    if (svyTaskTemplateScriptVO.getSort() != null && svyTaskTemplateScriptVO.getSort().equals(nextScriptno)) {
-+                        log.error("svyTaskTemplateScriptVO鐨勫�间负锛歿}", svyTaskTemplateScriptVO);
-+                        Map<String, String> map = setWJInfo(svyTaskTemplateScriptVO, Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()), patid);
-+                        log.error("map鐨勪俊鎭负锛歿}", map);
-+                        if (!Objects.isNull(map.get("nextScriptNo")))
-+                            nextScriptno = Long.valueOf(map.get("nextScriptNo"));
-+                        if (score == null) {
-+                            score = Double.valueOf(map.get("score"));
-+                        } else {
-+                            score = score + Double.valueOf(map.get("score"));
-+                        }
-+                        if (!Objects.isNull(map.get("id"))) {
-+                            idList.add(Long.valueOf(map.get("id")));
-+                        }
-+                    }
-+                }
-+            }
-+            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(Long.valueOf(serviceSubTaskMYDAnswerReq.getTaskId()));
-+            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);
-+
-+            if (!Objects.isNull(serviceTask)) {
-+                ServiceSubtask serviceSubtask = new ServiceSubtask();
-+                serviceSubtask.setTaskid(serviceTask.getTaskid());
-+                serviceSubtask.setTaskName(serviceTask.getTaskName());
-+                serviceSubtask.setTaskDesc(serviceTask.getTaskDesc());
-+                serviceSubtask.setTemplateid(serviceTask.getTemplateid());
-+                serviceSubtask.setTemplatename(serviceTask.getTemplatename());
-+                serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
-+                if (CollectionUtils.isNotEmpty(patMedInhospList)) {
-+                    serviceSubtask.setHospType("2");
-+                    serviceSubtask.setDeptname(patMedInhospList.get(0).getDeptname());
-+                    serviceSubtask.setDeptcode(patMedInhospList.get(0).getDeptcode());
-+                    serviceSubtask.setLeavehospitaldistrictcode(patMedInhospList.get(0).getLeavehospitaldistrictcode());
-+                    serviceSubtask.setLeavehospitaldistrictname(patMedInhospList.get(0).getLeavehospitaldistrictname());
-+                    serviceSubtask.setDrname(patMedInhospList.get(0).getDrname());
-+                    serviceSubtask.setDrcode(patMedInhospList.get(0).getDrcode());
-+                    serviceSubtask.setNurseName(patMedInhospList.get(0).getNurseName());
-+                    serviceSubtask.setNurseId(patMedInhospList.get(0).getNurseId());
-+                    serviceSubtask.setInhospid(patMedInhospList.get(0).getInhospid());
-+                    serviceSubtask.setServiceType("6");
-+                } else if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
-+                    serviceSubtask.setHospType("1");
-+                    serviceSubtask.setAdmindate(patMedOuthosps.get(0).getAdmitdate());
-+                    serviceSubtask.setHospno(patMedOuthosps.get(0).getOuthospno());
-+                    serviceSubtask.setDeptname(patMedOuthosps.get(0).getDeptname());
-+                    serviceSubtask.setDeptcode(patMedOuthosps.get(0).getDeptcode());
-+                    serviceSubtask.setDrname(patMedOuthosps.get(0).getDrname());
-+                    serviceSubtask.setDrcode(patMedOuthosps.get(0).getDrcode());
-+                    serviceSubtask.setServiceType("14");
-+                }
-+                if (!Objects.isNull(patArchive)) {
-+                    serviceSubtask.setPatid(patArchive.getId());
-+                    serviceSubtask.setSendname(patArchive.getName());
-+                    serviceSubtask.setSex(patArchive.getSex());
-+                    serviceSubtask.setPhone(patArchive.getTelcode());
-+                    serviceSubtask.setSfzh(patArchive.getIdcardno());
-+                    serviceSubtask.setAddr(patArchive.getPlaceOfResidence());
-+                    serviceSubtask.setOrgid(patArchive.getOrgid());
-+                }
-+                if (StringUtils.isNotEmpty(dealDept)) {
-+                    //鎶曡瘔寤鸿鐨勫鐞嗛儴闂�
-+                    serviceSubtask.setDeptcode(dealDept);
-+                    serviceSubtask.setServiceType("15");
-+                }
-+                serviceSubtask.setSubmit(1L);
-+                serviceSubtask.setSendstate(6L);
-+                serviceSubtask.setType("2");
-+                serviceSubtask.setExcep(null);
-+                serviceSubtask.setFinishtime(new Date());
-+                serviceSubtask.setUpdateTime(new Date());
-+                serviceSubtask.setCreateTime(new Date());
-+                serviceSubtask.setVisitTime(new Date());
-+                if (score != null) serviceSubtask.setScore(BigDecimal.valueOf(score));
-+                serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
-+                //灏嗗綋鍓嶅彂閫佺姸鎬佹敼鎴�9瀹屾垚
-+                ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
-+                serviceSubtaskPreachform.setPreachform(serviceSubtask.getCurrentPreachform());
-+                serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-+                serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
-+                List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-+                if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
-+                    ServiceSubtaskPreachform ssp = serviceSubtaskPreachforms.get(0);
-+                    ssp.setSendstate("9");
-+                    serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(ssp);
-+                }
-+
-+                for (Long detailId : idList) {
-+                    ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
-+                    serviceSubtaskDetail.setId(detailId);
-+                    serviceSubtaskDetail.setSubId(serviceSubtask.getId());
-+                    serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail);
-+                }
-+            }
-+        }
-+
-+        return true;
-+    }
-+
- 
-     /**
-      * 灏嗛棶棰樹繚瀛樺埌缂撳瓨涓�
-@@ -287,7 +485,7 @@
-                 tid = Long.valueOf(serviceSubTaskCacheReq.getParam1());
-                 pid = Long.valueOf(serviceSubTaskCacheReq.getParam2());
-             }
--            if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS()) &&  serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS().size() > 0) {
-+            if (CollectionUtils.isNotEmpty(serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS()) && serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS().size() > 0) {
-                 //闂嵎
-                 redisCache.deleteObject(pid + "-" + tid + "-WJscriptCache");
-                 redisCache.setCacheListRight(pid + "-" + tid + "-WJscriptCache", serviceSubTaskCacheReq.getSvyLibTemplateScriptVOS());
-@@ -428,7 +626,7 @@
-         List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(serviceSubtaskDetail);
-         if (CollectionUtils.isNotEmpty(serviceSubtaskDetails)) {
-             map.put("asrtext", serviceSubtaskDetails.get(0).getAsrtext());
--            map.put("asrtextId", serviceSubtaskDetails.get(0).getId());
-+            map.put("asrtextId", "" + serviceSubtaskDetails.get(0).getId());
-             map.put("answerps", serviceSubtaskDetails.get(0).getAnswerps());
-             return map;
-         }
-@@ -440,7 +638,6 @@
-         serviceSubtaskVO.setTaskid(taskid);
-         serviceSubtaskVO.setPatid(patid);
-         List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
--
-         String score = "0";
-         //涓嬮璺宠浆
-         String nextScriptNo = null;
-@@ -455,35 +652,15 @@
-                 } else {
-                     serviceSubtaskDetailVO.setTargetvalue(serviceSubtaskDetailVO.getTargetvalue() + "&" + svyTaskTemplateTargetoption.getOptioncontent());
-                 }
--//                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();
--//                    }
--//                }
-+
-             }
--            nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
-+            nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno();
-             if (svyTaskTemplateScriptVO.getScore() != null) {
-                 score = String.valueOf(svyTaskTemplateScriptVO.getScore());
-             }
-             serviceSubtaskDetailVO.setAsrtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? "" : svyTaskTemplateScriptVO.getScriptResult().replaceAll("^\"|\"$", ""));
-             serviceSubtaskDetailVO.setMatchedtext(StringUtils.isEmpty(svyTaskTemplateScriptVO.getScriptResult()) ? "" : svyTaskTemplateScriptVO.getScriptResult().replaceAll("^\"|\"$", ""));
--//            if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {
-+            //            if (StringUtils.isEmpty(serviceSubtaskDetailVO.getAsrtext())) {
- //                nextScriptNo = svyTaskTemplateScriptVO.getNextScriptno().toString();
- //            }
- //            serviceSubtaskDetailVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateScriptVO.getSvyTaskTemplateTargetoptions());
-@@ -520,6 +697,7 @@
-         Map<String, String> map = new HashMap<>();
-         map.put("nextScriptNo", nextScriptNo);
-         map.put("score", score);
-+        map.put("id", "" + serviceSubtaskDetail.getId());
-         return map;
-     }
- 
-Index: ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.system.service.impl;\r\n\r\nimport com.ruoyi.common.annotation.DataScope;\r\nimport com.ruoyi.common.constant.UserConstants;\r\nimport com.ruoyi.common.core.domain.entity.*;\r\nimport com.ruoyi.common.exception.ServiceException;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.SecurityUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.bean.BeanValidators;\r\nimport com.ruoyi.common.utils.spring.SpringUtils;\r\nimport com.ruoyi.system.domain.SysPost;\r\nimport com.ruoyi.system.domain.SysUserPost;\r\nimport com.ruoyi.system.mapper.*;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.ruoyi.system.service.ISysUserService;\r\nimport com.smartor.domain.SvyTaskVO;\r\nimport com.smartor.mapper.SysUserDeptMapper;\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.stereotype.Service;\r\nimport org.springframework.transaction.annotation.Transactional;\r\nimport org.springframework.util.CollectionUtils;\r\nimport org.springframework.util.ObjectUtils;\r\n\r\nimport javax.validation.Validator;\r\nimport java.util.*;\r\nimport java.util.stream.Collectors;\r\n\r\n/**\r\n * 鐢ㄦ埛 涓氬姟灞傚鐞哱r\n *\r\n * @author ruoyi\r\n */\r\n@Service\r\npublic class SysUserServiceImpl implements ISysUserService {\r\n    private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);\r\n\r\n    @Autowired\r\n    private SysUserMapper userMapper;\r\n\r\n    @Autowired\r\n    private SysDeptMapper sysDeptMapper;\r\n\r\n    @Autowired\r\n    private SysUserDeptMapper sysUserDeptMapper;\r\n\r\n    @Autowired\r\n    private SysRoleMapper roleMapper;\r\n\r\n    @Autowired\r\n    private SysPostMapper postMapper;\r\n\r\n    @Autowired\r\n    private SysUserRoleMapper userRoleMapper;\r\n\r\n    @Autowired\r\n    private SysUserPostMapper userPostMapper;\r\n\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n    @Autowired\r\n    protected Validator validator;\r\n\r\n    @Value(\"${isAdmin}\")\r\n    private List<Long> isAdmin;\r\n\r\n    /**\r\n     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅\r\n     */\r\n    @Override\r\n    @DataScope(deptAlias = \"d\", userAlias = \"u\")\r\n    public List<SysUser> selectUserList(SysUser user) {\r\n        return userMapper.selectUserList(user);\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛╘r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅\r\n     */\r\n    @Override\r\n    @DataScope(deptAlias = \"d\", userAlias = \"u\")\r\n    public List<SysUser> selectAllocatedList(SysUser user) {\r\n        return userMapper.selectAllocatedList(user);\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛╘r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅\r\n     */\r\n    @Override\r\n    @DataScope(deptAlias = \"d\", userAlias = \"u\")\r\n    public List<SysUser> selectUnallocatedList(SysUser user) {\r\n        return userMapper.selectUnallocatedList(user);\r\n    }\r\n\r\n    /**\r\n     * 閫氳繃鐢ㄦ埛鍚嶆煡璇㈢敤鎴穃r\n     *\r\n     * @param userName 鐢ㄦ埛鍚峔r\n     * @return 鐢ㄦ埛瀵硅薄淇℃伅\r\n     */\r\n    @Override\r\n    public SysUser selectUserByUserName(String userName) {\r\n        SysUser sysUser = userMapper.selectUserByUserName(userName);\r\n        List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());\r\n        List<Long> deptIds = new ArrayList<>();\r\n        for (SysDept sysDept : sysDepts) {\r\n            deptIds.add(sysDept.getDeptId());\r\n        }\r\n        SysUserDept sysUserDept = new SysUserDept();\r\n        sysUserDept.setUserId(sysUser.getUserId());\r\n        sysUserDept.setDeptType(sysUser.getSearchscope());\r\n        List<SysUserDept> sysUserDeptKSs = null;\r\n        List<SysUserDept> sysUserDeptBQs = null;\r\n        if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"0\")) {\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"1\")) {\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"2\")) {\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        }\r\n\r\n        sysUser.setDepts(deptIds);\r\n        if (!CollectionUtils.isEmpty(sysUserDeptBQs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptBQs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"districtCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"districtCode\", sud.getDeptCode());\r\n                map.put(\"districtName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"districtName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongWards(list);\r\n        }\r\n        if (!CollectionUtils.isEmpty(sysUserDeptKSs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptKSs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"deptCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"deptCode\", sud.getDeptCode());\r\n                map.put(\"deptName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"deptName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongDepts(list);\r\n        }\r\n        return sysUser;\r\n    }\r\n\r\n    @Override\r\n    public SysUser selectUserByUserName2(String userName) {\r\n        String[] split = userName.split(\"&\");\r\n        SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], null);\r\n        if (Objects.isNull(sysUser)) return sysUser;\r\n        List<SysDept> sysDepts = null;\r\n        if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n            SysDept dept = new SysDept();\r\n            dept.setOrgid(split[1]);\r\n            sysDepts = sysDeptMapper.selectDeptList(dept);\r\n        } else {\r\n            sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());\r\n        }\r\n        List<Long> deptIds = new ArrayList<>();\r\n        for (SysDept sysDept : sysDepts) {\r\n            deptIds.add(sysDept.getDeptId());\r\n        }\r\n        SysUserDept sysUserDept = new SysUserDept();\r\n        sysUserDept.setUserId(sysUser.getUserId());\r\n        sysUserDept.setDeptType(sysUser.getSearchscope());\r\n        sysUserDept.setOrgid(split[1]);\r\n        List<SysUserDept> sysUserDeptKSs = null;\r\n        List<SysUserDept> sysUserDeptBQs = null;\r\n        if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"0\")) {\r\n            if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n                sysUserDept.setUserId(null);\r\n            }\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n            //濡傛灉鏄痑dmin锛岄渶瑕佸sysUserDeptBQs锛宻ysUserDeptBQs鍘婚噸\r\n            if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n                //濡傛灉鏄痑dmin锛屽彧鑳藉幓sys_dept鍘诲彇鏁版嵁\r\n                SysDept dept = new SysDept();\r\n                dept.setOrgid(split[1]);\r\n                dept.setDeptType(\"1\");\r\n                sysDepts = sysDeptMapper.selectDeptList(dept);\r\n                sysUserDeptKSs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);\r\n\r\n                dept.setDeptType(\"2\");\r\n                sysDepts = sysDeptMapper.selectDeptList(dept);\r\n                sysUserDeptBQs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);\r\n\r\n                List<SysUserDept> distinctUserDepts = new ArrayList<>();\r\n                Set<String> uniqueDeptCodes = new HashSet<>();\r\n                for (SysUserDept userDept : sysUserDeptKSs) {\r\n                    String deptCode = userDept.getDeptCode();\r\n                    if (StringUtils.isNotEmpty(deptCode) && !uniqueDeptCodes.contains(deptCode)) {\r\n                        distinctUserDepts.add(userDept);\r\n                        uniqueDeptCodes.add(deptCode);\r\n                    }\r\n                }\r\n\r\n                List<SysUserDept> distinctUserBQs = new ArrayList<>();\r\n                Set<String> uniqueBQCodes = new HashSet<>();\r\n                for (SysUserDept userDept : sysUserDeptBQs) {\r\n                    String deptCode = userDept.getDeptCode();\r\n                    if (StringUtils.isNotEmpty(deptCode) && !uniqueBQCodes.contains(deptCode)) {\r\n                        distinctUserBQs.add(userDept);\r\n                        uniqueBQCodes.add(deptCode);\r\n                    }\r\n                }\r\n                sysUserDeptKSs = distinctUserDepts;\r\n                sysUserDeptBQs = distinctUserBQs;\r\n            }\r\n\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"1\")) {\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"2\")) {\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        }\r\n\r\n        sysUser.setDepts(deptIds);\r\n        if (!CollectionUtils.isEmpty(sysUserDeptBQs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptBQs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"districtCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"districtCode\", sud.getDeptCode());\r\n                else continue;\r\n                map.put(\"districtName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"districtName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongWards(list);\r\n        }\r\n        if (!CollectionUtils.isEmpty(sysUserDeptKSs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptKSs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"deptCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"deptCode\", sud.getDeptCode());\r\n                else continue;\r\n                map.put(\"deptName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"deptName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongDepts(list);\r\n        }\r\n        return sysUser;\r\n    }\r\n\r\n    @Override\r\n    public SysUser selectUserByUserNameAndDeptId(String userName) {\r\n        String[] split = userName.split(\"&\");\r\n        SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], split[2]);\r\n        if (Objects.isNull(sysUser)) return sysUser;\r\n        List<SysDept> sysDepts = null;\r\n        if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n            SysDept dept = new SysDept();\r\n            dept.setOrgid(split[1]);\r\n            sysDepts = sysDeptMapper.selectDeptList(dept);\r\n        } else {\r\n            sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());\r\n        }\r\n        List<Long> deptIds = new ArrayList<>();\r\n        for (SysDept sysDept : sysDepts) {\r\n            deptIds.add(sysDept.getDeptId());\r\n        }\r\n        SysUserDept sysUserDept = new SysUserDept();\r\n        sysUserDept.setUserId(sysUser.getUserId());\r\n        sysUserDept.setDeptType(sysUser.getSearchscope());\r\n        sysUserDept.setOrgid(split[1]);\r\n        List<SysUserDept> sysUserDeptKSs = null;\r\n        List<SysUserDept> sysUserDeptBQs = null;\r\n        if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"0\")) {\r\n            if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n                sysUserDept.setUserId(null);\r\n            }\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n            //濡傛灉鏄痑dmin锛岄渶瑕佸sysUserDeptBQs锛宻ysUserDeptBQs鍘婚噸\r\n            if (StringUtils.isNotEmpty(split[0]) && split[0].equals(\"admin\")) {\r\n                //濡傛灉鏄痑dmin锛屽彧鑳藉幓sys_dept鍘诲彇鏁版嵁\r\n                SysDept dept = new SysDept();\r\n                dept.setOrgid(split[1]);\r\n                dept.setDeptType(\"1\");\r\n                sysDepts = sysDeptMapper.selectDeptList(dept);\r\n                sysUserDeptKSs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);\r\n\r\n                dept.setDeptType(\"2\");\r\n                sysDepts = sysDeptMapper.selectDeptList(dept);\r\n                sysUserDeptBQs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);\r\n\r\n                List<SysUserDept> distinctUserDepts = new ArrayList<>();\r\n                Set<String> uniqueDeptCodes = new HashSet<>();\r\n                for (SysUserDept userDept : sysUserDeptKSs) {\r\n                    String deptCode = userDept.getDeptCode();\r\n                    if (StringUtils.isNotEmpty(deptCode) && !uniqueDeptCodes.contains(deptCode)) {\r\n                        distinctUserDepts.add(userDept);\r\n                        uniqueDeptCodes.add(deptCode);\r\n                    }\r\n                }\r\n\r\n                List<SysUserDept> distinctUserBQs = new ArrayList<>();\r\n                Set<String> uniqueBQCodes = new HashSet<>();\r\n                for (SysUserDept userDept : sysUserDeptBQs) {\r\n                    String deptCode = userDept.getDeptCode();\r\n                    if (StringUtils.isNotEmpty(deptCode) && !uniqueBQCodes.contains(deptCode)) {\r\n                        distinctUserBQs.add(userDept);\r\n                        uniqueBQCodes.add(deptCode);\r\n                    }\r\n                }\r\n                sysUserDeptKSs = distinctUserDepts;\r\n                sysUserDeptBQs = distinctUserBQs;\r\n            }\r\n\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"1\")) {\r\n            sysUserDept.setDeptType(\"1\");\r\n            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals(\"2\")) {\r\n            sysUserDept.setDeptType(\"2\");\r\n            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n        }\r\n\r\n        sysUser.setDepts(deptIds);\r\n        if (!CollectionUtils.isEmpty(sysUserDeptBQs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptBQs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"districtCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"districtCode\", sud.getDeptCode());\r\n                else continue;\r\n                map.put(\"districtName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"districtName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongWards(list);\r\n        }\r\n        if (!CollectionUtils.isEmpty(sysUserDeptKSs)) {\r\n            List<Map<String, Object>> list = new ArrayList<>();\r\n            for (SysUserDept sud : sysUserDeptKSs) {\r\n                Map<String, Object> map = new HashMap<>();\r\n                map.put(\"deptCode\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptCode())) map.put(\"deptCode\", sud.getDeptCode());\r\n                else continue;\r\n                map.put(\"deptName\", \"\");\r\n                if (StringUtils.isNotEmpty(sud.getDeptName())) map.put(\"deptName\", sud.getDeptName());\r\n                list.add(map);\r\n            }\r\n            sysUser.setBelongDepts(list);\r\n        }\r\n        return sysUser;\r\n    }\r\n\r\n\r\n    /**\r\n     * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛\r\n     *\r\n     * @param userId 鐢ㄦ埛ID\r\n     * @return 鐢ㄦ埛瀵硅薄淇℃伅\r\n     */\r\n    @Override\r\n    public SysUser selectUserById(Long userId) {\r\n        SysUser sysUser = userMapper.selectUserById(userId);\r\n        List<SysDept> sysDepts = sysUserDeptMapper.selectDeptListByUserId(sysUser.getUserId());\r\n        List<Long> deptIds = new ArrayList<>();\r\n        for (SysDept sysDept : sysDepts) {\r\n            deptIds.add(sysDept.getDeptId());\r\n        }\r\n        sysUser.setDepts(deptIds);\r\n        return sysUser;\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鐢ㄦ埛鎵�灞炶鑹茬粍\r\n     *\r\n     * @param userName 鐢ㄦ埛鍚峔r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String selectUserRoleGroup(String userName) {\r\n        List<SysRole> list = roleMapper.selectRolesByUserName(userName);\r\n        if (CollectionUtils.isEmpty(list)) {\r\n            return StringUtils.EMPTY;\r\n        }\r\n        return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(\",\"));\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鐢ㄦ埛鎵�灞炲矖浣嶇粍\r\n     *\r\n     * @param userName 鐢ㄦ埛鍚峔r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String selectUserPostGroup(String userName) {\r\n        List<SysPost> list = postMapper.selectPostsByUserName(userName);\r\n        if (CollectionUtils.isEmpty(list)) {\r\n            return StringUtils.EMPTY;\r\n        }\r\n        return list.stream().map(SysPost::getPostName).collect(Collectors.joining(\",\"));\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String checkUserNameUnique(SysUser user) {\r\n        Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();\r\n        SysUser info = userMapper.checkUserNameUnique(user.getUserName());\r\n        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {\r\n            return UserConstants.NOT_UNIQUE;\r\n        }\r\n        return UserConstants.UNIQUE;\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙鎵嬫満鍙风爜鏄惁鍞竴\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return\r\n     */\r\n    @Override\r\n    public String checkPhoneUnique(SysUser user) {\r\n        Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();\r\n        SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber());\r\n        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {\r\n            return UserConstants.NOT_UNIQUE;\r\n        }\r\n        return UserConstants.UNIQUE;\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙email鏄惁鍞竴\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return\r\n     */\r\n    @Override\r\n    public String checkEmailUnique(SysUser user) {\r\n        Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();\r\n        SysUser info = userMapper.checkEmailUnique(user.getEmail());\r\n        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {\r\n            return UserConstants.NOT_UNIQUE;\r\n        }\r\n        return UserConstants.UNIQUE;\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     */\r\n    @Override\r\n    public void checkUserAllowed(SysUser user) {\r\n        if (StringUtils.isNotNull(user.getUserId()) && isAdmin.contains(user.getUserId())) {\r\n            throw new ServiceException(\"涓嶅厑璁告搷浣滆秴绾х鐞嗗憳鐢ㄦ埛\");\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙鐢ㄦ埛鏄惁鏈夋暟鎹潈闄怽r\n     *\r\n     * @param userId 鐢ㄦ埛id\r\n     */\r\n    @Override\r\n    public void checkUserDataScope(Long userId) {\r\n        if (!isAdmin.contains(SecurityUtils.getUserId())) {\r\n            SysUser user = new SysUser();\r\n            user.setUserId(userId);\r\n            List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user);\r\n            if (StringUtils.isEmpty(users)) {\r\n                throw new ServiceException(\"娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛乗");\r\n            }\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鏂板淇濆瓨鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    @Transactional\r\n    public int insertUser(SysUser user) {\r\n        // 鏂板鐢ㄦ埛淇℃伅\r\n        int rows = userMapper.insertUser(user);\r\n        //鏂板鐢ㄦ埛涓庨儴闂ㄥ叧鑱擻r\n        if (!CollectionUtils.isEmpty(user.getDepts())) {\r\n            for (Long deptId : user.getDepts()) {\r\n                SysUserDept sysUserDep = new SysUserDept();\r\n                sysUserDep.setUserId(user.getUserId());\r\n                sysUserDep.setDeptId(deptId);\r\n                sysUserDep.setCreateTime(new Date());\r\n                sysUserDep.setUpdateTime(new Date());\r\n                sysUserDep.setOrgid(user.getOrgid());\r\n                sysUserDeptMapper.insertSysUserDept(sysUserDep);\r\n            }\r\n        }\r\n        // 鏂板鐢ㄦ埛宀椾綅鍏宠仈\r\n        insertUserPost(user);\r\n        // 鏂板鐢ㄦ埛涓庤鑹茬鐞哱r\n        insertUserRole(user);\r\n        return rows;\r\n    }\r\n\r\n    /**\r\n     * 娉ㄥ唽鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public boolean registerUser(SysUser user) {\r\n        return userMapper.insertUser(user) > 0;\r\n    }\r\n\r\n    /**\r\n     * 淇敼淇濆瓨鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    @Transactional\r\n    public int updateUser(SysUser user) {\r\n        Long userId = user.getUserId();\r\n        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱擻r\n        userRoleMapper.deleteUserRoleByUserId(userId);\r\n        // 鏂板鐢ㄦ埛涓庤鑹茬鐞哱r\n        insertUserRole(user);\r\n        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱擻r\n        userPostMapper.deleteUserPostByUserId(userId);\r\n        // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞哱r\n        insertUserPost(user);\r\n        //鍒犻櫎鐢ㄦ埛涓庨儴闂ㄧ殑鍏宠仈\r\n        Long[] ids = {user.getUserId()};\r\n        //鏂板鐢ㄦ埛涓庨儴闂ㄥ叧鑱擻r\n//        sysUserDeptMapper.deleteSysUserDeptByIds(ids);\r\n//        if (!CollectionUtils.isEmpty(user.getDepts())) {\r\n//            for (Long deptId : user.getDepts()) {\r\n//                SysUserDept sysUserDep = new SysUserDept();\r\n//                sysUserDep.setUserId(user.getUserId());\r\n//                sysUserDep.setDeptId(deptId);\r\n//                //鏌ヨ鏄惁 宸茬粡鍏宠仈璇ラ儴闂╘r\n//                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDep);\r\n//                if (!CollectionUtils.isEmpty(sysUserDepts)) {\r\n//                    SysUserDept sysUserDept = sysUserDepts.get(0);\r\n//                    sysUserDept.setDelFlag(0L);\r\n//                    sysUserDeptMapper.updateSysUserDept(sysUserDept);\r\n//                    continue;\r\n//                }\r\n//                sysUserDep.setCreateTime(new Date());\r\n//                sysUserDep.setUpdateTime(new Date());\r\n//                sysUserDeptMapper.insertSysUserDept(sysUserDep);\r\n//            }\r\n//        }\r\n        if (!CollectionUtils.isEmpty(user.getDeptCodes())) {\r\n            for (String deptCode : user.getDeptCodes()) {\r\n                SysDept sysDept = sysDeptMapper.selectDeptByCode(deptCode);\r\n                if (ObjectUtils.isEmpty(sysDept)) {\r\n                    continue;\r\n                }\r\n\r\n                SysUserDept sysUserDept = new SysUserDept();\r\n                sysUserDept.setUserId(user.getUserId());\r\n                sysUserDept.setOrgid(user.getOrgid());\r\n                sysUserDept.setDeptCode(deptCode);\r\n                sysUserDept.setDeptId(sysDept.getDeptId());\r\n                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n                sysUserDept.setDelFlag(0L);\r\n                sysUserDept.setDeptType(\"1\");\r\n                sysUserDept.setDeptName(sysDept.getDeptName());\r\n                sysUserDept.setUpdateTime(new Date());\r\n                if (!CollectionUtils.isEmpty(sysUserDepts)) {\r\n                    sysUserDept.setId(sysUserDepts.get(0).getId());\r\n                    sysUserDeptMapper.updateSysUserDept(sysUserDept);\r\n                    continue;\r\n                }\r\n                sysUserDept.setCreateTime(new Date());\r\n                sysUserDeptMapper.insertSysUserDept(sysUserDept);\r\n            }\r\n        }\r\n        if (!CollectionUtils.isEmpty(user.getWardCodes())) {\r\n            for (String wardCode : user.getWardCodes()) {\r\n                SysDept sysDept = sysDeptMapper.selectDeptByCode(wardCode);\r\n                if (ObjectUtils.isEmpty(sysDept)) {\r\n                    continue;\r\n                }\r\n                SysUserDept sysUserDept = new SysUserDept();\r\n                sysUserDept.setUserId(user.getUserId());\r\n                sysUserDept.setDeptCode(wardCode);\r\n                sysUserDept.setDeptId(sysDept.getDeptId());\r\n                sysUserDept.setOrgid(user.getOrgid());\r\n                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);\r\n                sysUserDept.setDelFlag(0L);\r\n                sysUserDept.setDeptType(\"2\");\r\n                sysUserDept.setOrgid(user.getOrgid());\r\n                sysUserDept.setDeptName(sysDept.getDeptName());\r\n                sysUserDept.setUpdateTime(new Date());\r\n                if (!CollectionUtils.isEmpty(sysUserDepts)) {\r\n                    sysUserDeptMapper.updateSysUserDept(sysUserDept);\r\n                    continue;\r\n                }\r\n                sysUserDept.setCreateTime(new Date());\r\n                sysUserDeptMapper.insertSysUserDept(sysUserDept);\r\n            }\r\n        }\r\n        return userMapper.updateUser(user);\r\n    }\r\n\r\n    /**\r\n     * 鐢ㄦ埛鎺堟潈瑙掕壊\r\n     *\r\n     * @param userId  鐢ㄦ埛ID\r\n     * @param roleIds 瑙掕壊缁刓r\n     */\r\n    @Override\r\n    @Transactional\r\n    public void insertUserAuth(Long userId, Long[] roleIds, String orgid) {\r\n        userRoleMapper.deleteUserRoleByUserId(userId);\r\n        insertUserRole(userId, roleIds, orgid);\r\n    }\r\n\r\n    /**\r\n     * 淇敼鐢ㄦ埛鐘舵�乗r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateUserStatus(SysUser user) {\r\n        return userMapper.updateUser(user);\r\n    }\r\n\r\n    /**\r\n     * 淇敼鐢ㄦ埛鍩烘湰淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateUserProfile(SysUser user) {\r\n        return userMapper.updateUser(user);\r\n    }\r\n\r\n    /**\r\n     * 淇敼鐢ㄦ埛澶村儚\r\n     *\r\n     * @param userName 鐢ㄦ埛鍚峔r\n     * @param avatar   澶村儚鍦板潃\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public boolean updateUserAvatar(String userName, String avatar) {\r\n        return userMapper.updateUserAvatar(userName, avatar) > 0;\r\n    }\r\n\r\n    /**\r\n     * 閲嶇疆鐢ㄦ埛瀵嗙爜\r\n     *\r\n     * @param user 鐢ㄦ埛淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int resetPwd(SysUser user) {\r\n        return userMapper.updateUser(user);\r\n    }\r\n\r\n    /**\r\n     * 閲嶇疆鐢ㄦ埛瀵嗙爜\r\n     *\r\n     * @param userName 鐢ㄦ埛鍚峔r\n     * @param password 瀵嗙爜\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int resetUserPwd(String userName, String password) {\r\n        return userMapper.resetUserPwd(userName, password);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐢ㄦ埛瑙掕壊淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛瀵硅薄\r\n     */\r\n    public void insertUserRole(SysUser user) {\r\n        this.insertUserRole(user.getUserId(), user.getRoleIds(), user.getOrgid());\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐢ㄦ埛宀椾綅淇℃伅\r\n     *\r\n     * @param user 鐢ㄦ埛瀵硅薄\r\n     */\r\n    public void insertUserPost(SysUser user) {\r\n        Long[] posts = user.getPostIds();\r\n        if (StringUtils.isNotEmpty(posts)) {\r\n            // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞哱r\n            List<SysUserPost> list = new ArrayList<SysUserPost>(posts.length);\r\n            for (Long postId : posts) {\r\n                SysUserPost up = new SysUserPost();\r\n                up.setUserId(user.getUserId());\r\n                up.setPostId(postId);\r\n                up.setOrgid(user.getOrgid());\r\n                list.add(up);\r\n            }\r\n            userPostMapper.batchUserPost(list);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐢ㄦ埛瑙掕壊淇℃伅\r\n     *\r\n     * @param userId  鐢ㄦ埛ID\r\n     * @param roleIds 瑙掕壊缁刓r\n     */\r\n    public void insertUserRole(Long userId, Long[] roleIds, String orgid) {\r\n        if (StringUtils.isNotEmpty(roleIds)) {\r\n            // 鏂板鐢ㄦ埛涓庤鑹茬鐞哱r\n            List<SysUserRole> list = new ArrayList<SysUserRole>(roleIds.length);\r\n            for (Long roleId : roleIds) {\r\n                SysUserRole ur = new SysUserRole();\r\n                ur.setUserId(userId);\r\n                ur.setRoleId(roleId);\r\n                ur.setOrgid(orgid);\r\n                list.add(ur);\r\n            }\r\n            userRoleMapper.batchUserRole(list);\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛\r\n     *\r\n     * @param userId 鐢ㄦ埛ID\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    @Transactional\r\n    public int deleteUserById(Long userId) {\r\n        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱擻r\n        userRoleMapper.deleteUserRoleByUserId(userId);\r\n        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃\r\n        userPostMapper.deleteUserPostByUserId(userId);\r\n        return userMapper.deleteUserById(userId);\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅\r\n     *\r\n     * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    @Transactional\r\n    public int deleteUserByIds(Long[] userIds) {\r\n        for (Long userId : userIds) {\r\n            checkUserAllowed(new SysUser(userId));\r\n            checkUserDataScope(userId);\r\n        }\r\n        // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱擻r\n        userRoleMapper.deleteUserRole(userIds);\r\n        // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱擻r\n        userPostMapper.deleteUserPost(userIds);\r\n        return userMapper.deleteUserByIds(userIds);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎叆鐢ㄦ埛鏁版嵁\r\n     *\r\n     * @param userList        鐢ㄦ埛鏁版嵁鍒楄〃\r\n     * @param isUpdateSupport 鏄惁鏇存柊鏀寔锛屽鏋滃凡瀛樺湪锛屽垯杩涜鏇存柊鏁版嵁\r\n     * @param operName        鎿嶄綔鐢ㄦ埛\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {\r\n        if (StringUtils.isNull(userList) || userList.size() == 0) {\r\n            throw new ServiceException(\"瀵煎叆鐢ㄦ埛鏁版嵁涓嶈兘涓虹┖锛乗");\r\n        }\r\n        int successNum = 0;\r\n        int failureNum = 0;\r\n        StringBuilder successMsg = new StringBuilder();\r\n        StringBuilder failureMsg = new StringBuilder();\r\n        String password = configService.selectConfigByKey(\"sys.user.initPassword\");\r\n        for (SysUser user : userList) {\r\n            try {\r\n                // 楠岃瘉鏄惁瀛樺湪杩欎釜鐢ㄦ埛\r\n                SysUser u = userMapper.selectUserByUserName(user.getUserName());\r\n                if (StringUtils.isNull(u)) {\r\n                    BeanValidators.validateWithException(validator, user);\r\n                    user.setPassword(SecurityUtils.encryptPassword(password));\r\n                    user.setCreateBy(operName);\r\n                    this.insertUser(user);\r\n                    successNum++;\r\n                    successMsg.append(\"<br/>\" + successNum + \"銆佽处鍙� \" + user.getUserName() + \" 瀵煎叆鎴愬姛\");\r\n                } else if (isUpdateSupport) {\r\n                    BeanValidators.validateWithException(validator, user);\r\n                    checkUserAllowed(user);\r\n                    checkUserDataScope(user.getUserId());\r\n                    user.setUpdateBy(operName);\r\n                    this.updateUser(user);\r\n                    successNum++;\r\n                    successMsg.append(\"<br/>\" + successNum + \"銆佽处鍙� \" + user.getUserName() + \" 鏇存柊鎴愬姛\");\r\n                } else {\r\n                    failureNum++;\r\n                    failureMsg.append(\"<br/>\" + failureNum + \"銆佽处鍙� \" + user.getUserName() + \" 宸插瓨鍦╘");\r\n                }\r\n            } catch (Exception e) {\r\n                failureNum++;\r\n                String msg = \"<br/>\" + failureNum + \"銆佽处鍙� \" + user.getUserName() + \" 瀵煎叆澶辫触锛歕";\r\n                failureMsg.append(msg + e.getMessage());\r\n                log.error(msg, e);\r\n            }\r\n        }\r\n        if (failureNum > 0) {\r\n            failureMsg.insert(0, \"寰堟姳姝夛紝瀵煎叆澶辫触锛佸叡 \" + failureNum + \" 鏉℃暟鎹牸寮忎笉姝g‘锛岄敊璇涓嬶細\");\r\n            throw new ServiceException(failureMsg.toString());\r\n        } else {\r\n            successMsg.insert(0, \"鎭枩鎮紝鏁版嵁宸插叏閮ㄥ鍏ユ垚鍔燂紒鍏� \" + successNum + \" 鏉★紝鏁版嵁濡備笅锛歕");\r\n        }\r\n        return successMsg.toString();\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java	(date 1758798203175)
-@@ -272,7 +272,11 @@
-     @Override
-     public SysUser selectUserByUserNameAndDeptId(String userName) {
-         String[] split = userName.split("&");
-+        if (split[2].contains("null")) {
-+            split[2] = null;
-+        }
-         SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], split[2]);
-+        log.info("selectUserByUserNameAndDeptId鐨剆ysUser鐨勫�间负锛歿}", sysUser);
-         if (Objects.isNull(sysUser)) return sysUser;
-         List<SysDept> sysDepts = null;
-         if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) {
-@@ -512,15 +516,66 @@
-         // 鏂板鐢ㄦ埛淇℃伅
-         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());
--                sysUserDep.setOrgid(user.getOrgid());
--                sysUserDeptMapper.insertSysUserDept(sysUserDep);
-+//        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());
-+//                sysUserDep.setOrgid(user.getOrgid());
-+//                sysUserDeptMapper.insertSysUserDept(sysUserDep);
-+//            }
-+//        }
-+        if (!CollectionUtils.isEmpty(user.getDeptCodes())) {
-+            for (String deptCode : user.getDeptCodes()) {
-+                SysDept sysDept = sysDeptMapper.selectDeptByCode(deptCode);
-+                if (ObjectUtils.isEmpty(sysDept)) {
-+                    continue;
-+                }
-+
-+                SysUserDept sysUserDept = new SysUserDept();
-+                sysUserDept.setUserId(user.getUserId());
-+                sysUserDept.setOrgid(user.getOrgid());
-+                sysUserDept.setDeptCode(deptCode);
-+                sysUserDept.setDeptId(sysDept.getDeptId());
-+                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
-+                sysUserDept.setDelFlag(0L);
-+                sysUserDept.setDeptType("1");
-+                sysUserDept.setDeptName(sysDept.getDeptName());
-+                sysUserDept.setUpdateTime(new Date());
-+                if (!CollectionUtils.isEmpty(sysUserDepts)) {
-+                    sysUserDept.setId(sysUserDepts.get(0).getId());
-+                    sysUserDeptMapper.updateSysUserDept(sysUserDept);
-+                    continue;
-+                }
-+                sysUserDept.setCreateTime(new Date());
-+                sysUserDeptMapper.insertSysUserDept(sysUserDept);
-+            }
-+        }
-+        if (!CollectionUtils.isEmpty(user.getWardCodes())) {
-+            for (String wardCode : user.getWardCodes()) {
-+                SysDept sysDept = sysDeptMapper.selectDeptByCode(wardCode);
-+                if (ObjectUtils.isEmpty(sysDept)) {
-+                    continue;
-+                }
-+                SysUserDept sysUserDept = new SysUserDept();
-+                sysUserDept.setUserId(user.getUserId());
-+                sysUserDept.setDeptCode(wardCode);
-+                sysUserDept.setDeptId(sysDept.getDeptId());
-+                sysUserDept.setOrgid(user.getOrgid());
-+                List<SysUserDept> sysUserDepts = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
-+                sysUserDept.setDelFlag(0L);
-+                sysUserDept.setDeptType("2");
-+                sysUserDept.setOrgid(user.getOrgid());
-+                sysUserDept.setDeptName(sysDept.getDeptName());
-+                sysUserDept.setUpdateTime(new Date());
-+                if (!CollectionUtils.isEmpty(sysUserDepts)) {
-+                    sysUserDeptMapper.updateSysUserDept(sysUserDept);
-+                    continue;
-+                }
-+                sysUserDept.setCreateTime(new Date());
-+                sysUserDeptMapper.insertSysUserDept(sysUserDept);
-             }
-         }
-         // 鏂板鐢ㄦ埛宀椾綅鍏宠仈
-Index: ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.framework.web.service;\r\n\r\nimport javax.annotation.Resource;\r\n\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.lang3.ObjectUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.security.authentication.AuthenticationManager;\r\nimport org.springframework.security.authentication.BadCredentialsException;\r\nimport org.springframework.security.authentication.UsernamePasswordAuthenticationToken;\r\nimport org.springframework.security.core.Authentication;\r\nimport org.springframework.stereotype.Component;\r\nimport com.ruoyi.common.constant.CacheConstants;\r\nimport com.ruoyi.common.constant.Constants;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.exception.ServiceException;\r\nimport com.ruoyi.common.exception.user.CaptchaException;\r\nimport com.ruoyi.common.exception.user.CaptchaExpireException;\r\nimport com.ruoyi.common.exception.user.UserPasswordNotMatchException;\r\nimport com.ruoyi.common.utils.DateUtils;\r\nimport com.ruoyi.common.utils.MessageUtils;\r\nimport com.ruoyi.common.utils.ServletUtils;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.ip.IpUtils;\r\nimport com.ruoyi.framework.manager.AsyncManager;\r\nimport com.ruoyi.framework.manager.factory.AsyncFactory;\r\nimport com.ruoyi.framework.security.context.AuthenticationContextHolder;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.ruoyi.system.service.ISysUserService;\r\n\r\n/**\r\n * 鐧诲綍鏍¢獙鏂规硶\r\n *\r\n * @author ruoyi\r\n */\r\n@Slf4j\r\n@Component\r\npublic class SysLoginService {\r\n    @Autowired\r\n    private TokenService tokenService;\r\n\r\n    @Resource\r\n    private AuthenticationManager authenticationManager;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    @Autowired\r\n    private ISysUserService userService;\r\n\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n    /**\r\n     * 鐧诲綍楠岃瘉\r\n     *\r\n     * @param username 鐢ㄦ埛鍚峔r\n     * @param password 瀵嗙爜\r\n     * @param code     楠岃瘉鐮乗r\n     * @param uuid     鍞竴鏍囪瘑\r\n     * @return 缁撴灉\r\n     */\r\n    public String login(String username, String password, String code, String uuid, String orgid) {\r\n        boolean captchaEnabled = configService.selectCaptchaEnabled();\r\n        // 楠岃瘉鐮佸紑鍏砛r\n        if (captchaEnabled) {\r\n            validateCaptcha(username, code, uuid);\r\n        }\r\n        // 鐢ㄦ埛楠岃瘉\r\n        Authentication authentication = null;\r\n        try {\r\n            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username + \"&\" + orgid, password);\r\n            AuthenticationContextHolder.setContext(authenticationToken);\r\n            // 璇ユ柟娉曚細鍘昏皟鐢║serDetailsServiceImpl.loadUserByUsername\r\n            authentication = authenticationManager.authenticate(authenticationToken);\r\n        } catch (Exception e) {\r\n            if (e instanceof BadCredentialsException) {\r\n                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message(\"user.password.not.match\")));\r\n                throw new UserPasswordNotMatchException();\r\n            } else {\r\n                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));\r\n                throw new ServiceException(e.getMessage());\r\n            }\r\n        } finally {\r\n            AuthenticationContextHolder.clearContext();\r\n        }\r\n        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message(\"user.login.success\")));\r\n        LoginUser loginUser = (LoginUser) authentication.getPrincipal();\r\n        recordLoginInfo(loginUser.getUserId());\r\n        // 鐢熸垚token\r\n        return tokenService.createToken(loginUser);\r\n    }\r\n\r\n\r\n    public String loginByUserName(String userName) {\r\n        SysUser sysUser = userService.selectUserByUserNameAndDeptId(userName);\r\n        if (ObjectUtils.isNotEmpty(sysUser)) {\r\n            // 鏋勫缓鐧诲綍鐢ㄦ埛瀵硅薄\r\n            LoginUser loginUser = new LoginUser();\r\n            loginUser.setUser(sysUser);\r\n            loginUser.setUserId(sysUser.getUserId());\r\n            // 鍒涘缓 token\r\n            String token = tokenService.createToken(loginUser);\r\n            // 鐢熸垚token\r\n            return token;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙楠岃瘉鐮乗r\n     *\r\n     * @param username 鐢ㄦ埛鍚峔r\n     * @param code     楠岃瘉鐮乗r\n     * @param uuid     鍞竴鏍囪瘑\r\n     * @return 缁撴灉\r\n     */\r\n    public void validateCaptcha(String username, String code, String uuid) {\r\n        String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, \"\");\r\n        String captcha = redisCache.getCacheObject(verifyKey);\r\n        redisCache.deleteObject(verifyKey);\r\n        if (captcha == null) {\r\n            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message(\"user.jcaptcha.expire\")));\r\n            throw new CaptchaExpireException();\r\n        }\r\n        if (!code.equalsIgnoreCase(captcha)) {\r\n            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message(\"user.jcaptcha.error\")));\r\n            throw new CaptchaException();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 璁板綍鐧诲綍淇℃伅\r\n     *\r\n     * @param userId 鐢ㄦ埛ID\r\n     */\r\n    public void recordLoginInfo(Long userId) {\r\n        SysUser sysUser = new SysUser();\r\n        sysUser.setUserId(userId);\r\n        sysUser.setLoginIp(IpUtils.getIpAddr(ServletUtils.getRequest()));\r\n        sysUser.setLoginDate(DateUtils.getNowDate());\r\n        userService.updateUserProfile(sysUser);\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
---- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java	(date 1758798203188)
-@@ -96,6 +96,7 @@
- 
-     public String loginByUserName(String userName) {
-         SysUser sysUser = userService.selectUserByUserNameAndDeptId(userName);
-+        log.info("---------sysUser鐨勫�间负:{}", sysUser);
-         if (ObjectUtils.isNotEmpty(sysUser)) {
-             // 鏋勫缓鐧诲綍鐢ㄦ埛瀵硅薄
-             LoginUser loginUser = new LoginUser();
-Index: smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\n\r\n/**\r\n * 浠诲姟闂嵎闂閫夐」瀵硅薄 svy_task_answer\r\n *\r\n * @author ruoyi\r\n * @date 2024-06-27\r\n */\r\n@Data\r\n@ApiModel(value = \"SvyTaskAnswer\", description = \"浠诲姟闂嵎闂閫夐」瀵硅薄\")\r\npublic class SvyTaskAnswer extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n    @ApiModelProperty(value = \"鑷ID\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 浠诲姟ID\r\n     */\r\n    @ApiModelProperty(value = \"浠诲姟ID\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 瀛愪换鍔D\r\n     */\r\n    @ApiModelProperty(value = \"瀛愪换鍔D\")\r\n    private Long singleid;\r\n\r\n    /**\r\n     * 棰樼洰ID\r\n     */\r\n    @ApiModelProperty(value = \"棰樼洰ID\")\r\n    private Long scriptid;\r\n\r\n    /**\r\n     * 棰樼洰绫诲瀷\r\n     */\r\n    @ApiModelProperty(value = \"棰樼洰绫诲瀷\")\r\n    private Long scriptType;\r\n\r\n    /**\r\n     * 寰楀垎锛�1銆�2銆�3锛屾垨A銆丅銆丆锛屾垨浼樸�佽壇銆佸強鏍硷級\r\n     */\r\n    @ApiModelProperty(value = \"寰楀垎   1=銆�2銆�3锛屾垨A銆丅銆丆锛屾垨浼樸�佽壇銆佸強鏍糪")\r\n    private String score;\r\n\r\n    /**\r\n     * 鍥炵瓟锛堝厑璁稿閫夛級\r\n     */\r\n    @ApiModelProperty(value = \"鍥炵瓟  鍏�=璁稿閫塡")\r\n    private String answer;\r\n\r\n    /**\r\n     * 璇勮\r\n     */\r\n    @ApiModelProperty(value = \"璇勮\")\r\n    private String comment;\r\n\r\n    /**\r\n     * 闇�瑕佽窡杩涳紙鏄細1銆佸惁锛�0锛塡r\n     */\r\n    @ApiModelProperty(value = \"闇�瑕佽窡杩�  鏄�=锛�1銆佸惁锛�0\")\r\n    private String istrack;\r\n\r\n    /**\r\n     * 寮傚父棰勮锛堟槸锛�1銆佸惁锛�0锛塡r\n     */\r\n    @ApiModelProperty(value = \"寮傚父棰勮  鏄�=锛�1銆佸惁锛�0\")\r\n    private String isabnormal;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囧織锛�0锛氭湭鍒犻櫎 1锛氬凡鍒犻櫎锛塡r\n     */\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囧織锛�0锛氭湭涓婁紶 1锛氬凡涓婁紶锛塡r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏍囧織   0=锛氭湭涓婁紶,1=锛氬凡涓婁紶\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private String pid;\r\n\r\n    /**\r\n     * GUID\r\n     */\r\n    @ApiModelProperty(value = \"GUID\")\r\n    private String guid;\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java b/smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java
---- a/smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/SvyTaskAnswer.java	(date 1758798203199)
-@@ -70,10 +70,10 @@
-     private String istrack;
- 
-     /**
--     * 寮傚父棰勮锛堟槸锛�1銆佸惁锛�0锛�
-+     * 寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊
-      */
--    @ApiModelProperty(value = "寮傚父棰勮  鏄�=锛�1銆佸惁锛�0")
--    private String isabnormal;
-+    @ApiModelProperty(value = "寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊")
-+    private Long isabnormal;
- 
-     /**
-      * 鍒犻櫎鏍囧織锛�0锛氭湭鍒犻櫎 1锛氬凡鍒犻櫎锛�
-Index: smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service.impl;\r\n\r\n\r\nimport com.smartor.mapper.UtilsMapper;\r\nimport com.smartor.service.IServiceTelInfoService;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n@Slf4j\r\n@Service\r\npublic class ServiceTelInfoServiceImpl implements IServiceTelInfoService {\r\n    @Autowired\r\n    private UtilsMapper utilsMapper;\r\n\r\n    /**\r\n     * 璁剧疆鐢佃瘽鐘舵�乗r\n     *\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public List<Map<String,Object>> getList() {\r\n       List<Map<String,Object>> lists= utilsMapper.getList(\"select * from service_telinfo where state=0  OR DATE_ADD(editTime, INTERVAL 10 MINUTE)< NOW()  \");\r\n        return lists;\r\n    }\r\n    /**\r\n     * 璁剧疆鐢佃瘽鐘舵�乗r\n     *\r\n     * @param id 涓婚敭\r\n     * @param state 0姝e父1鍗犵嚎\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int setState(Integer id, Integer state) {\r\n        Integer result= utilsMapper.updateSql(\"update service_telinfo set state= \"+state+\" where id=\"+id+\" \");\r\n        return result;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java
---- a/smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceTelInfoServiceImpl.java	(date 1758798203212)
-@@ -23,7 +23,7 @@
-      */
-     @Override
-     public List<Map<String,Object>> getList() {
--       List<Map<String,Object>> lists= utilsMapper.getList("select * from service_telinfo where state=0  OR DATE_ADD(editTime, INTERVAL 10 MINUTE)< NOW()  ");
-+       List<Map<String,Object>> lists= utilsMapper.getList("select * from service_telinfo where state=0 ");
-         return lists;
-     }
-     /**
-Index: ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.system.service.impl;\r\n\r\nimport java.util.Collection;\r\nimport java.util.List;\r\nimport javax.annotation.PostConstruct;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\nimport com.ruoyi.common.annotation.DataSource;\r\nimport com.ruoyi.common.constant.CacheConstants;\r\nimport com.ruoyi.common.constant.UserConstants;\r\nimport com.ruoyi.common.core.redis.RedisCache;\r\nimport com.ruoyi.common.core.text.Convert;\r\nimport com.ruoyi.common.enums.DataSourceType;\r\nimport com.ruoyi.common.exception.ServiceException;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.system.domain.SysConfig;\r\nimport com.ruoyi.system.mapper.SysConfigMapper;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\n\r\n/**\r\n * 鍙傛暟閰嶇疆 鏈嶅姟灞傚疄鐜癨r\n * \r\n * @author ruoyi\r\n */\r\n@Service\r\npublic class SysConfigServiceImpl implements ISysConfigService\r\n{\r\n    @Autowired\r\n    private SysConfigMapper configMapper;\r\n\r\n    @Autowired\r\n    private RedisCache redisCache;\r\n\r\n    /**\r\n     * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧弬鏁板埌缂撳瓨\r\n     */\r\n    @PostConstruct\r\n    public void init()\r\n    {\r\n        loadingConfigCache();\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     * \r\n     * @param configId 鍙傛暟閰嶇疆ID\r\n     * @return 鍙傛暟閰嶇疆淇℃伅\r\n     */\r\n    @Override\r\n    @DataSource(DataSourceType.MASTER)\r\n    public SysConfig selectConfigById(Long configId)\r\n    {\r\n        SysConfig config = new SysConfig();\r\n        config.setConfigId(configId);\r\n        return configMapper.selectConfig(config);\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     * \r\n     * @param configKey 鍙傛暟key\r\n     * @return 鍙傛暟閿�糪r\n     */\r\n    @Override\r\n    public String selectConfigByKey(String configKey)\r\n    {\r\n        String configValue = Convert.toStr(redisCache.getCacheObject(getCacheKey(configKey)));\r\n        if (StringUtils.isNotEmpty(configValue))\r\n        {\r\n            return configValue;\r\n        }\r\n        SysConfig config = new SysConfig();\r\n        config.setConfigKey(configKey);\r\n        SysConfig retConfig = configMapper.selectConfig(config);\r\n        if (StringUtils.isNotNull(retConfig))\r\n        {\r\n            redisCache.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());\r\n            return retConfig.getConfigValue();\r\n        }\r\n        return StringUtils.EMPTY;\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅\r\n     *\r\n     * @param configKey 鍙傛暟key\r\n     * @return 鍙傛暟閿�糪r\n     */\r\n    @Override\r\n    public String selectConfigByKey(String configKey,String orgid)\r\n    {\r\n\r\n        SysConfig config = new SysConfig();\r\n        config.setConfigKey(configKey);\r\n        config.setOrgid(orgid);\r\n        SysConfig retConfig = configMapper.selectConfig(config);\r\n        if (StringUtils.isNotNull(retConfig))\r\n        {\r\n            return retConfig.getConfigValue();\r\n        }\r\n        return StringUtils.EMPTY;\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇楠岃瘉鐮佸紑鍏砛r\n     * \r\n     * @return true寮�鍚紝false鍏抽棴\r\n     */\r\n    @Override\r\n    public boolean selectCaptchaEnabled()\r\n    {\r\n        String captchaEnabled = selectConfigByKey(\"sys.account.captchaEnabled\");\r\n        if (StringUtils.isEmpty(captchaEnabled))\r\n        {\r\n            return true;\r\n        }\r\n        return Convert.toBool(captchaEnabled);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 鍙傛暟閰嶇疆闆嗗悎\r\n     */\r\n    @Override\r\n    public List<SysConfig> selectConfigList(SysConfig config)\r\n    {\r\n        return configMapper.selectConfigList(config);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鍙傛暟閰嶇疆\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int insertConfig(SysConfig config)\r\n    {\r\n        int row = configMapper.insertConfig(config);\r\n        if (row > 0)\r\n        {\r\n            redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());\r\n        }\r\n        return row;\r\n    }\r\n\r\n    /**\r\n     * 淇敼鍙傛暟閰嶇疆\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public int updateConfig(SysConfig config)\r\n    {\r\n        SysConfig temp = configMapper.selectConfigById(config.getConfigId());\r\n        if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey()))\r\n        {\r\n            redisCache.deleteObject(getCacheKey(temp.getConfigKey()));\r\n        }\r\n\r\n        int row = configMapper.updateConfig(config);\r\n        if (row > 0)\r\n        {\r\n            redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());\r\n        }\r\n        return row;\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎鍙傛暟淇℃伅\r\n     * \r\n     * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID\r\n     */\r\n    @Override\r\n    public void deleteConfigByIds(Long[] configIds)\r\n    {\r\n        for (Long configId : configIds)\r\n        {\r\n            SysConfig config = selectConfigById(configId);\r\n            if (StringUtils.equals(UserConstants.YES, config.getConfigType()))\r\n            {\r\n                throw new ServiceException(String.format(\"鍐呯疆鍙傛暟銆�%1$s銆戜笉鑳藉垹闄� \", config.getConfigKey()));\r\n            }\r\n            configMapper.deleteConfigById(configId);\r\n            redisCache.deleteObject(getCacheKey(config.getConfigKey()));\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 鍔犺浇鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    @Override\r\n    public void loadingConfigCache()\r\n    {\r\n        List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());\r\n        for (SysConfig config : configsList)\r\n        {\r\n            redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());\r\n        }\r\n    }\r\n\r\n    /**\r\n     * 娓呯┖鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    @Override\r\n    public void clearConfigCache()\r\n    {\r\n        Collection<String> keys = redisCache.keys(CacheConstants.SYS_CONFIG_KEY + \"*\");\r\n        redisCache.deleteObject(keys);\r\n    }\r\n\r\n    /**\r\n     * 閲嶇疆鍙傛暟缂撳瓨鏁版嵁\r\n     */\r\n    @Override\r\n    public void resetConfigCache()\r\n    {\r\n        clearConfigCache();\r\n        loadingConfigCache();\r\n    }\r\n\r\n    /**\r\n     * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴\r\n     * \r\n     * @param config 鍙傛暟閰嶇疆淇℃伅\r\n     * @return 缁撴灉\r\n     */\r\n    @Override\r\n    public String checkConfigKeyUnique(SysConfig config)\r\n    {\r\n        Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId();\r\n        SysConfig info = configMapper.checkConfigKeyUnique(config.getConfigKey());\r\n        if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue())\r\n        {\r\n            return UserConstants.NOT_UNIQUE;\r\n        }\r\n        return UserConstants.UNIQUE;\r\n    }\r\n\r\n    /**\r\n     * 璁剧疆cache key\r\n     * \r\n     * @param configKey 鍙傛暟閿甛r\n     * @return 缂撳瓨閿甼ey\r\n     */\r\n    private String getCacheKey(String configKey)\r\n    {\r\n        return CacheConstants.SYS_CONFIG_KEY + configKey;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
---- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java	(date 1758798203227)
-@@ -19,7 +19,7 @@
- 
- /**
-  * 鍙傛暟閰嶇疆 鏈嶅姟灞傚疄鐜�
-- * 
-+ *
-  * @author ruoyi
-  */
- @Service
-@@ -42,7 +42,7 @@
- 
-     /**
-      * 鏌ヨ鍙傛暟閰嶇疆淇℃伅
--     * 
-+     *
-      * @param configId 鍙傛暟閰嶇疆ID
-      * @return 鍙傛暟閰嶇疆淇℃伅
-      */
-@@ -57,7 +57,7 @@
- 
-     /**
-      * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
--     * 
-+     *
-      * @param configKey 鍙傛暟key
-      * @return 鍙傛暟閿��
-      */
-@@ -80,6 +80,22 @@
-         return StringUtils.EMPTY;
-     }
- 
-+    /**
-+     * 鑾峰彇楠岃瘉鐮佸紑鍏�
-+     *
-+     * @return true寮�鍚紝false鍏抽棴
-+     */
-+    @Override
-+    public boolean selectCaptchaEnabled()
-+    {
-+        String captchaEnabled = selectConfigByKey("sys.account.captchaEnabled");
-+        if (StringUtils.isEmpty(captchaEnabled))
-+        {
-+            return true;
-+        }
-+        return Convert.toBool(captchaEnabled);
-+    }
-+
-     /**
-      * 鏍规嵁閿悕鏌ヨ鍙傛暟閰嶇疆淇℃伅
-      *
-@@ -100,26 +116,9 @@
-         }
-         return StringUtils.EMPTY;
-     }
--
--    /**
--     * 鑾峰彇楠岃瘉鐮佸紑鍏�
--     * 
--     * @return true寮�鍚紝false鍏抽棴
--     */
--    @Override
--    public boolean selectCaptchaEnabled()
--    {
--        String captchaEnabled = selectConfigByKey("sys.account.captchaEnabled");
--        if (StringUtils.isEmpty(captchaEnabled))
--        {
--            return true;
--        }
--        return Convert.toBool(captchaEnabled);
--    }
--
-     /**
-      * 鏌ヨ鍙傛暟閰嶇疆鍒楄〃
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 鍙傛暟閰嶇疆闆嗗悎
-      */
-@@ -131,7 +130,7 @@
- 
-     /**
-      * 鏂板鍙傛暟閰嶇疆
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 缁撴灉
-      */
-@@ -148,7 +147,7 @@
- 
-     /**
-      * 淇敼鍙傛暟閰嶇疆
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 缁撴灉
-      */
-@@ -171,7 +170,7 @@
- 
-     /**
-      * 鎵归噺鍒犻櫎鍙傛暟淇℃伅
--     * 
-+     *
-      * @param configIds 闇�瑕佸垹闄ょ殑鍙傛暟ID
-      */
-     @Override
-@@ -224,7 +223,7 @@
- 
-     /**
-      * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴
--     * 
-+     *
-      * @param config 鍙傛暟閰嶇疆淇℃伅
-      * @return 缁撴灉
-      */
-@@ -242,7 +241,7 @@
- 
-     /**
-      * 璁剧疆cache key
--     * 
-+     *
-      * @param configKey 鍙傛暟閿�
-      * @return 缂撳瓨閿甼ey
-      */
-Index: smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.smartor.mapper.PatMedInhospMapper\">\r\n\r\n    <resultMap type=\"com.smartor.domain.PatMedInhosp\" id=\"PatMedInhospResult\">\r\n        <result property=\"inhospid\" column=\"inhospid\"/>\r\n        <result property=\"inhospno\" column=\"inhospno\"/>\r\n        <result property=\"serialnum\" column=\"serialnum\"/>\r\n        <result property=\"hospitalname\" column=\"hospitalname\"/>\r\n        <result property=\"hospitalcode\" column=\"hospitalcode\"/>\r\n        <result property=\"hospitaldistrictcode\" column=\"hospitaldistrictcode\"/>\r\n        <result property=\"hospitaldistrictname\" column=\"hospitaldistrictname\"/>\r\n        <result property=\"icd10code\" column=\"icd10code\"/>\r\n        <result property=\"diagname\" column=\"diagname\"/>\r\n        <result property=\"starttime\" column=\"starttime\"/>\r\n        <result property=\"endtime\" column=\"endtime\"/>\r\n        <result property=\"deptcode\" column=\"deptcode\"/>\r\n        <result property=\"deptname\" column=\"deptname\"/>\r\n        <result property=\"roomno\" column=\"roomno\"/>\r\n        <result property=\"bedNo\" column=\"bed_no\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"isupload\" column=\"isupload\"/>\r\n        <result property=\"uploadTime\" column=\"upload_time\"/>\r\n        <result property=\"patid\" column=\"patid\"/>\r\n        <result property=\"leavediagname\" column=\"leavediagname\"/>\r\n        <result property=\"leaveicd10code\" column=\"leaveicd10code\"/>\r\n        <result property=\"drcode\" column=\"drcode\"/>\r\n        <result property=\"drname\" column=\"drname\"/>\r\n        <result property=\"schemestatus\" column=\"schemestatus\"/>\r\n        <result property=\"generalschemestatus\" column=\"generalschemestatus\"/>\r\n        <result property=\"leaveldeptcode\" column=\"leaveldeptcode\"/>\r\n        <result property=\"leaveldeptname\" column=\"leaveldeptname\"/>\r\n        <result property=\"hospitaldistrictid\" column=\"hospitaldistrictid\"/>\r\n        <result property=\"leavehospitaldistrictcode\" column=\"leavehospitaldistrictcode\"/>\r\n        <result property=\"leavehospitaldistrictname\" column=\"leavehospitaldistrictname\"/>\r\n        <result property=\"leavehospitaldistrictid\" column=\"leavehospitaldistrictid\"/>\r\n        <result property=\"deptid\" column=\"deptid\"/>\r\n        <result property=\"leaveldeptid\" column=\"leaveldeptid\"/>\r\n        <result property=\"schemetime\" column=\"schemetime\"/>\r\n        <result property=\"patname\" column=\"patname\"/>\r\n        <result property=\"patno\" column=\"patno\"/>\r\n        <result property=\"inhospstate\" column=\"inhospstate\"/>\r\n        <result property=\"deptcheckFlag\" column=\"deptcheck_flag\"/>\r\n        <result property=\"wardcheckFlag\" column=\"wardcheck_flag\"/>\r\n        <result property=\"diagcheckFlag\" column=\"diagcheck_flag\"/>\r\n        <result property=\"age\" column=\"age\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"telcode\" column=\"telcode\"/>\r\n        <result property=\"longTaskReason\" column=\"long_task_reason\"/>\r\n        <result property=\"nurseId\" column=\"nurse_id\"/>\r\n        <result property=\"nurseName\" column=\"nurse_name\"/>\r\n        <result property=\"outWayId\" column=\"out_way_id\"/>\r\n        <result property=\"outWayName\" column=\"out_way_name\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"operator\" column=\"operator\"/>\r\n        <result property=\"operatorId\" column=\"operator_id\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"tagname\" column=\"tagname\"/>\r\n        <result property=\"fuflag\" column=\"fuflag\"/>\r\n        <result property=\"fudate\" column=\"fudate\"/>\r\n        <result property=\"fuperiod\" column=\"fuperiod\"/>\r\n        <result property=\"futypecode\" column=\"futypecode\"/>\r\n        <result property=\"futypedesc\" column=\"futypedesc\"/>\r\n        <result property=\"fuadvice\" column=\"fuadvice\"/>\r\n        <result property=\"fuspecialadvice\" column=\"fuspecialadvice\"/>\r\n        <result property=\"managementDoctor\" column=\"management_doctor\"/>\r\n        <result property=\"managementDoctorCode\" column=\"management_doctor_code\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectPatMedInhospVo\">\r\n        select inhospid,\r\n               patname,\r\n               fuflag,\r\n               management_doctor,\r\n               management_doctor_code,\r\n               fudate,\r\n               fuperiod,\r\n               futypecode,\r\n               futypedesc,\r\n               fuadvice,\r\n               fuspecialadvice,\r\n               remark,\r\n               guid,\r\n               operator,\r\n               operator_id,\r\n               out_way_id,\r\n               out_way_name,\r\n               nurse_id,\r\n               nurse_name,\r\n               deptcheck_flag,\r\n               wardcheck_flag,\r\n               diagcheck_flag,\r\n               inhospstate,\r\n               patno,\r\n               long_task_reason,\r\n               inhospno,\r\n               serialnum,\r\n               hospitalname,\r\n               hospitalcode,\r\n               hospitaldistrictcode,\r\n               hospitaldistrictname,\r\n               icd10code,\r\n               diagname,\r\n               starttime,\r\n               endtime,\r\n               deptcode,\r\n               deptname,\r\n               roomno,\r\n               bed_no,\r\n               orgid,\r\n               del_flag,\r\n               update_by,\r\n               update_time,\r\n               create_by,\r\n               create_time,\r\n               isupload,\r\n               upload_time,\r\n               patid,\r\n               leavediagname,\r\n               leaveicd10code,\r\n               drcode,\r\n               drname,\r\n               schemestatus,\r\n               generalschemestatus,\r\n               leaveldeptcode,\r\n               leaveldeptname,\r\n               hospitaldistrictid,\r\n               leavehospitaldistrictcode,\r\n               leavehospitaldistrictname,\r\n               leavehospitaldistrictid,\r\n               deptid,\r\n               leaveldeptid,\r\n               schemetime\r\n        from pat_med_inhosp\r\n    </sql>\r\n\r\n    <select id=\"selectPatMedInhospList\" parameterType=\"com.smartor.domain.PatMedInhosp\" resultMap=\"PatMedInhospResult\">\r\n        select CONCAT( a.age, a.age_unit ) AS age,\r\n        a.telcode as telcode,\r\n        a.sex,\r\n        b.inhospid,\r\n        b.nurse_id,\r\n        b.nurse_name,\r\n        b.patname,\r\n        b.management_doctor,\r\n        b.management_doctor_code,\r\n        b.out_way_id,\r\n        b.out_way_name,\r\n        b.deptcheck_flag,\r\n        b.wardcheck_flag,\r\n        b.diagcheck_flag,\r\n        b.inhospstate,\r\n        b.patno,\r\n        b.inhospno,\r\n        b.serialnum,\r\n        b.hospitalname,\r\n        b.hospitalcode,\r\n        b.hospitaldistrictcode,\r\n        b.hospitaldistrictname,\r\n        b.icd10code,\r\n        b.diagname,\r\n        b.starttime,\r\n        b.endtime,\r\n        b.deptcode,\r\n        b.deptname,\r\n        b.roomno,\r\n        b.bed_no,\r\n        b.orgid,\r\n        b.del_flag,\r\n        b.update_by,\r\n        b.update_time,\r\n        b.create_by,\r\n        b.create_time,\r\n        b.isupload,\r\n        b.upload_time,\r\n        b.patid,\r\n        b.leavediagname,\r\n        b.leaveicd10code,\r\n        b.drcode,\r\n        b.drname,\r\n        b.schemestatus,\r\n        b.generalschemestatus,\r\n        b.leaveldeptcode,\r\n        b.leaveldeptname,\r\n        b.hospitaldistrictid,\r\n        b.leavehospitaldistrictcode,\r\n        b.leavehospitaldistrictname,\r\n        b.leavehospitaldistrictid,\r\n        b.deptid,\r\n        b.leaveldeptid,\r\n        b.long_task_reason,\r\n        b.schemetime,\r\n        b.fuflag,\r\n        b.fudate,\r\n        b.fuperiod,\r\n        b.futypecode,\r\n        b.futypedesc,\r\n        b.fuadvice,\r\n        b.fuspecialadvice,\r\n        a.idcardno\r\n        FROM\r\n        pat_med_inhosp b\r\n        JOIN\r\n        pat_archive a ON a.id = b.patid\r\n        LEFT JOIN\r\n        pat_archivetag c ON c.patid = a.id AND (c.del_flag = 0 OR c.del_flag IS NULL)\r\n        <where>\r\n            a.del_flag = 0\r\n            AND b.del_flag = 0\r\n            AND a.idcardno IS NOT NULL\r\n            <if test=\"startOutHospTime != null \">and date_format(b.endtime,'%y%m%d') &gt;=\r\n                date_format(#{startOutHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"endOutHospTime != null \">and date_format(b.endtime,'%y%m%d') &lt;=\r\n                date_format(#{endOutHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"startInHospTime != null \">and date_format(b.starttime,'%y%m%d') &gt;=\r\n                date_format(#{startInHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"endInHospTime != null \">and date_format(b.starttime,'%y%m%d') &lt;=\r\n                date_format(#{endInHospTime},'%y%m%d')\r\n            </if>\r\n            <if test=\"hospitalname != null  and hospitalname != ''\">and hospitalname like concat('%', #{hospitalname},\r\n                '%')\r\n            </if>\r\n            <if test=\"patname != null  and patname != ''\">and patname like concat('%', #{patname}, '%')</if>\r\n            <if test=\"hospitaldistrictname != null  and hospitaldistrictname != ''\">and hospitaldistrictname like\r\n                concat('%', #{hospitaldistrictname}, '%')\r\n            </if>\r\n            <if test=\"endtime != null \">and b.endtime = #{endtime}</if>\r\n            <if test=\"managementDoctor != null \">and b.management_doctor = #{managementDoctor}</if>\r\n            <if test=\"managementDoctorCode != null \">and b.management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"inhospno != null \">and b.inhospno = #{inhospno}</if>\r\n            <if test=\"fuflag != null \">and b.fuflag = #{fuflag}</if>\r\n            <if test=\"orgid != null \">and b.orgid = #{orgid}</if>\r\n            <if test=\"serialnum != null \">and b.serialnum = #{serialnum}</if>\r\n            <if test=\"endtime != null \">and b.endtime = #{endtime}</if>\r\n            <if test=\"patno != null \">and b.patno = #{patno}</if>\r\n            <if test=\"nurseId != null \">and b.nurse_id = #{nurseId}</if>\r\n            <if test=\"nurseName != null and nurseName != ''\">and b.nurse_name = #{nurseName}</if>\r\n            <if test=\"deptcheckFlag != null \">and b.deptcheck_flag = #{deptcheckFlag}</if>\r\n            <if test=\"wardcheckFlag != null \">and b.wardcheck_flag = #{wardcheckFlag}</if>\r\n            <if test=\"diagcheckFlag != null \">and b.diagcheck_flag = #{diagcheckFlag}</if>\r\n            <if test=\"cry != null and cry == 0 \">and b.endtime is null</if>\r\n            <if test=\"cry != null and cry == 1 \">and b.inhospstate=1</if>\r\n            <if test=\"inhospstate != null \">and b.inhospstate = #{inhospstate}</if>\r\n            <if test=\"schemestatus != null \">and b.schemestatus = #{schemestatus}</if>\r\n            <if test=\"outWayId != null \">and b.out_way_id = #{outWayId}</if>\r\n            <if test=\"outWayName != null \">and b.out_way_name = #{outWayName}</if>\r\n            <if test=\"leaveldeptcode != null \">and b.leaveldeptcode = #{leaveldeptcode}</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">and b.leavediagname like concat('%',\r\n                #{leavediagname}, '%')\r\n            </if>\r\n            <if test=\"drname != null  and drname != ''\">and b.drname like concat('%', #{drname}, '%')</if>\r\n            <if test=\"leaveldeptname != null  and leaveldeptname != ''\">and b.leaveldeptname like concat('%',\r\n                #{leaveldeptname}, '%')\r\n            </if>\r\n            <if test=\"deptname != null  and deptname != ''\">and b.deptname like concat('%',\r\n                #{deptname}, '%')\r\n            </if>\r\n            <if test=\"patid != null  and patid != ''\">and a.id =#{patid}\r\n            </if>\r\n            <if test=\"leavehospitaldistrictname != null  and leavehospitaldistrictname != ''\">and\r\n                b.leavehospitaldistrictname like concat('%', #{leavehospitaldistrictname}, '%')\r\n            </if>\r\n\r\n            <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0\">\r\n                AND b.leavehospitaldistrictcode IN\r\n                <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leavehospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"leaveldeptcodes != null and leaveldeptcodes.size()>0\">\r\n                AND b.leaveldeptcode IN\r\n                <foreach collection=\"leaveldeptcodes\" item=\"leaveldeptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leaveldeptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        GROUP BY\r\n        b.inhospid,\r\n        a.age,\r\n        a.age_unit,\r\n        a.telcode,\r\n        a.id,\r\n        a.sex\r\n        <if test=\"cry==1\">\r\n            order by b.endtime desc\r\n        </if>\r\n        <if test=\"cry==0\">\r\n            order by b.starttime desc\r\n        </if>\r\n    </select>\r\n\r\n    <select id=\"selectPatMedInhospListBySerialnum\" parameterType=\"com.smartor.domain.PatMedInhosp\" resultMap=\"PatMedInhospResult\">\r\n        select\r\n        b.inhospid,\r\n        b.nurse_id,\r\n        b.nurse_name,\r\n        b.patname,\r\n        b.management_doctor,\r\n        b.management_doctor_code,\r\n        b.out_way_id,\r\n        b.out_way_name,\r\n        b.deptcheck_flag,\r\n        b.wardcheck_flag,\r\n        b.diagcheck_flag,\r\n        b.inhospstate,\r\n        b.patno,\r\n        b.inhospno,\r\n        b.serialnum,\r\n        b.hospitalname,\r\n        b.hospitalcode,\r\n        b.hospitaldistrictcode,\r\n        b.hospitaldistrictname,\r\n        b.icd10code,\r\n        b.diagname,\r\n        b.starttime,\r\n        b.endtime,\r\n        b.deptcode,\r\n        b.deptname,\r\n        b.roomno,\r\n        b.bed_no,\r\n        b.orgid,\r\n        b.del_flag,\r\n        b.update_by,\r\n        b.update_time,\r\n        b.create_by,\r\n        b.create_time,\r\n        b.isupload,\r\n        b.upload_time,\r\n        b.patid,\r\n        b.leavediagname,\r\n        b.leaveicd10code,\r\n        b.drcode,\r\n        b.drname,\r\n        b.schemestatus,\r\n        b.generalschemestatus,\r\n        b.leaveldeptcode,\r\n        b.leaveldeptname,\r\n        b.hospitaldistrictid,\r\n        b.leavehospitaldistrictcode,\r\n        b.leavehospitaldistrictname,\r\n        b.leavehospitaldistrictid,\r\n        b.deptid,\r\n        b.leaveldeptid,\r\n        b.long_task_reason,\r\n        b.schemetime,\r\n        b.fuflag,\r\n        b.fudate,\r\n        b.fuperiod,\r\n        b.futypecode,\r\n        b.futypedesc,\r\n        b.fuadvice,\r\n        b.fuspecialadvice\r\n        FROM\r\n        pat_med_inhosp b\r\n\r\n        <where>\r\n            <if test=\"serialnum != null \">and b.serialnum = #{serialnum}</if>\r\n\r\n        </where>\r\n        order by b.inhospid desc\r\n    </select>\r\n\r\n    <select id=\"selectPatMedInhospListByCondition\" parameterType=\"com.smartor.domain.PatMedInhospVO\"\r\n            resultMap=\"PatMedInhospResult\">\r\n        select CONCAT( a.age, a.age_unit ) AS age,\r\n        a.telcode as telcode,\r\n        b.inhospid,\r\n        b.management_doctor,\r\n        b.management_doctor_code,\r\n        b.patname,\r\n        b.operator_id,\r\n        b.operator,\r\n        b.remark,\r\n        b.out_way_id,\r\n        b.out_way_name,\r\n        b.nurse_id,\r\n        b.nurse_name,\r\n        b.deptcheckFlag,\r\n        b.diagcheckFlag,\r\n        b.wardcheckFlag,\r\n        b.inhospstate,\r\n        b.patno,\r\n        b.inhospno,\r\n        b.serialnum,\r\n        b.hospitalname,\r\n        b.hospitalcode,\r\n        b.hospitaldistrictcode,\r\n        b.hospitaldistrictname,\r\n        b.icd10code,\r\n        b.diagname,\r\n        b.starttime,\r\n        b.endtime,\r\n        b.deptcode,\r\n        b.deptname,\r\n        b.roomno,\r\n        b.bed_no,\r\n        b.orgid,\r\n        b.del_flag,\r\n        b.update_by,\r\n        b.update_time,\r\n        b.create_by,\r\n        b.create_time,\r\n        b.isupload,\r\n        b.upload_time,\r\n        b.patid,\r\n        b.leavediagname,\r\n        b.leaveicd10code,\r\n        b.drcode,\r\n        b.drname,\r\n        b.schemestatus,\r\n        b.generalschemestatus,\r\n        b.leaveldeptcode,\r\n        b.leaveldeptname,\r\n        b.hospitaldistrictid,\r\n        b.leavehospitaldistrictcode,\r\n        b.leavehospitaldistrictname,\r\n        b.leavehospitaldistrictid,\r\n        b.deptid,\r\n        b.leaveldeptid,\r\n        b.long_task_reason,\r\n        b.fuflag,\r\n        b.fudate,\r\n        b.fuperiod,\r\n        b.futypecode,\r\n        b.futypedesc,\r\n        b.fuadvice,\r\n        b.fuspecialadvice\r\n        b.schemetime\r\n        FROM\r\n        pat_med_inhosp b,\r\n        pat_archive a\r\n        <where>\r\n            a.del_flag=0\r\n            and b.del_flag=0\r\n            and a.id = b.patid\r\n            AND a.idcardno != ''\r\n            <if test=\"hospitalname != null  and hospitalname != ''\">and hospitalname like concat('%', #{hospitalname},\r\n                '%')\r\n            </if>\r\n            <if test=\"managementDoctor != null \">and b.management_doctor = #{managementDoctor}</if>\r\n            <if test=\"managementDoctorCode != null \">and b.management_doctor_code = #{managementDoctorCode}</if>\r\n            <if test=\"patname != null  and patname != ''\">and patname like concat('%', #{patname}, '%')</if>\r\n            <if test=\"hospitaldistrictname != null  and hospitaldistrictname != ''\">and hospitaldistrictname like\r\n                concat('%', #{hospitaldistrictname}, '%')\r\n            </if>\r\n            <if test=\"endtime != null \">and b.endtime = #{endtime}</if>\r\n            <if test=\"fuflag != null \">and b.fuflag = #{fuflag}</if>\r\n            <if test=\"nurseId != null \">and b.nurse_id = #{nurseId}</if>\r\n            <if test=\"nurseName != null \">and b.nurse_name = #{nurseName}</if>\r\n            <if test=\"patno != null \">and b.patno = #{patno}</if>\r\n            <if test=\"diagcheckFlag != null \">and b.diagcheck_flag = #{diagcheckFlag}</if>\r\n            <if test=\"deptcheckFlag != null \">and b.deptcheck_flag = #{deptcheckFlag}</if>\r\n            <if test=\"wardcheckFlag != null \">and b.wardcheck_flag = #{wardcheckFlag}</if>\r\n            <if test=\"inhospstate != null \">and b.inhospstate = #{inhospstate}</if>\r\n            <if test=\"schemestatus != null \">and b.schemestatus = #{schemestatus}</if>\r\n            <if test=\"leavediagname != null  and leavediagname != ''\">and b.leavediagname like concat('%',\r\n                #{leavediagname}, '%')\r\n            </if>\r\n            <if test=\"drname != null  and drname != ''\">and b.drname like concat('%', #{drname}, '%')</if>\r\n            <if test=\"leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size()>0\">\r\n                AND b.leavehospitaldistrictcode IN\r\n                <foreach collection=\"leavehospitaldistrictcodes\" item=\"leavehospitaldistrictcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leavehospitaldistrictcode}\r\n                </foreach>\r\n            </if>\r\n            <if test=\"leaveldeptcodes != null and leaveldeptcodes.size()>0\">\r\n                AND b.leaveldeptcode IN\r\n                <foreach collection=\"leaveldeptcodes\" item=\"leaveldeptcode\" open=\"(\" separator=\",\"\r\n                         close=\")\">\r\n                    #{leaveldeptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        order by b.inhospid desc\r\n    </select>\r\n\r\n\r\n    <select id=\"getTagnameBypatid\" parameterType=\"Long\" resultType=\"string\">\r\n        SELECT GROUP_CONCAT(d.tagname, ', ')\r\n        FROM pat_archivetag d\r\n        WHERE d.patid = #{patid}\r\n          AND d.del_flag = 0\r\n    </select>\r\n\r\n\r\n    <select id=\"selectPatMedInhospByInhospid\" parameterType=\"Long\" resultMap=\"PatMedInhospResult\">\r\n        <include refid=\"selectPatMedInhospVo\"/>\r\n        where inhospid = #{inhospid}\r\n    </select>\r\n\r\n\r\n    <insert id=\"insertPatMedInhosp\" parameterType=\"com.smartor.domain.PatMedInhosp\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"inhospid\">\r\n        insert into pat_med_inhosp\r\n        <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">serialnum,</if>\r\n            <if test=\"hospitalname != null\">hospitalname,</if>\r\n            <if test=\"hospitalcode != null\">hospitalcode,</if>\r\n            <if test=\"hospitaldistrictcode != null\">hospitaldistrictcode,</if>\r\n            <if test=\"hospitaldistrictname != null\">hospitaldistrictname,</if>\r\n            <if test=\"icd10code != null\">icd10code,</if>\r\n            <if test=\"diagname != null\">diagname,</if>\r\n            <if test=\"starttime != null\">starttime,</if>\r\n            <if test=\"endtime != null\">endtime,</if>\r\n            <if test=\"deptcode != null\">deptcode,</if>\r\n            <if test=\"deptname != null\">deptname,</if>\r\n            <if test=\"roomno != null\">roomno,</if>\r\n            <if test=\"bedNo != null\">bed_no,</if>\r\n            <if test=\"orgid != null\">orgid,</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag,</if>\r\n            <if test=\"updateBy != null\">update_by,</if>\r\n            <if test=\"updateTime != null\">update_time,</if>\r\n            <if test=\"createBy != null\">create_by,</if>\r\n            <if test=\"createTime != null\">create_time,</if>\r\n            <if test=\"isupload != null\">isupload,</if>\r\n            <if test=\"uploadTime != null\">upload_time,</if>\r\n            <if test=\"patid != null\">patid,</if>\r\n            <if test=\"leavediagname != null\">leavediagname,</if>\r\n            <if test=\"leaveicd10code != null\">leaveicd10code,</if>\r\n            <if test=\"drcode != null\">drcode,</if>\r\n            <if test=\"drname != null\">drname,</if>\r\n            <if test=\"schemestatus != null\">schemestatus,</if>\r\n            <if test=\"generalschemestatus != null\">generalschemestatus,</if>\r\n            <if test=\"leaveldeptcode != null\">leaveldeptcode,</if>\r\n            <if test=\"leaveldeptname != null\">leaveldeptname,</if>\r\n            <if test=\"hospitaldistrictid != null\">hospitaldistrictid,</if>\r\n            <if test=\"leavehospitaldistrictcode != null\">leavehospitaldistrictcode,</if>\r\n            <if test=\"leavehospitaldistrictname != null\">leavehospitaldistrictname,</if>\r\n            <if test=\"leavehospitaldistrictid != null\">leavehospitaldistrictid,</if>\r\n            <if test=\"deptid != null\">deptid,</if>\r\n            <if test=\"leaveldeptid != null\">leaveldeptid,</if>\r\n            <if test=\"schemetime != null\">schemetime,</if>\r\n            <if test=\"patname!= null\">patname,</if>\r\n            <if test=\"patno != null\">patno,</if>\r\n            <if test=\"inhospstate != null\">inhospstate,</if>\r\n            <if test=\"deptcheckFlag != null\">deptcheck_flag,</if>\r\n            <if test=\"wardcheckFlag != null\">wardcheck_flag,</if>\r\n            <if test=\"diagcheckFlag != null\">diagcheck_flag,</if>\r\n            <if test=\"longTaskReason != null\">long_task_reason,</if>\r\n            <if test=\"nurseId != null \">nurse_id,</if>\r\n            <if test=\"nurseName != null \">nurse_name,</if>\r\n            <if test=\"outWayId != null \">out_way_id,</if>\r\n            <if test=\"outWayName != null \">out_way_name,</if>\r\n            <if test=\"guid != null \">guid,</if>\r\n            <if test=\"operator != null \">operator,</if>\r\n            <if test=\"operatorId != null \">operator_id,</if>\r\n            <if test=\"inhospno != null \">inhospno,</if>\r\n            <if test=\"remark != null \">remark,</if>\r\n            <if test=\"fuflag != null \">fuflag,</if>\r\n            <if test=\"fudate != null \">fudate,</if>\r\n            <if test=\"fuperiod != null \">fuperiod,</if>\r\n            <if test=\"futypecode != null \">futypecode,</if>\r\n            <if test=\"futypedesc != null \">futypedesc,</if>\r\n            <if test=\"fuadvice != null \">fuadvice,</if>\r\n            <if test=\"fuspecialadvice != null \">fuspecialadvice,</if>\r\n            <if test=\"managementDoctor != null \">management_doctor,</if>\r\n            <if test=\"managementDoctorCode != null \">management_doctor_code,</if>\r\n        </trim>\r\n        <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">#{serialnum},</if>\r\n            <if test=\"hospitalname != null\">#{hospitalname},</if>\r\n            <if test=\"hospitalcode != null\">#{hospitalcode},</if>\r\n            <if test=\"hospitaldistrictcode != null\">#{hospitaldistrictcode},</if>\r\n            <if test=\"hospitaldistrictname != null\">#{hospitaldistrictname},</if>\r\n            <if test=\"icd10code != null\">#{icd10code},</if>\r\n            <if test=\"diagname != null\">#{diagname},</if>\r\n            <if test=\"starttime != null\">#{starttime},</if>\r\n            <if test=\"endtime != null\">#{endtime},</if>\r\n            <if test=\"deptcode != null\">#{deptcode},</if>\r\n            <if test=\"deptname != null\">#{deptname},</if>\r\n            <if test=\"roomno != null\">#{roomno},</if>\r\n            <if test=\"bedNo != null\">#{bedNo},</if>\r\n            <if test=\"orgid != null\">#{orgid},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">#{delFlag},</if>\r\n            <if test=\"updateBy != null\">#{updateBy},</if>\r\n            <if test=\"updateTime != null\">#{updateTime},</if>\r\n            <if test=\"createBy != null\">#{createBy},</if>\r\n            <if test=\"createTime != null\">#{createTime},</if>\r\n            <if test=\"isupload != null\">#{isupload},</if>\r\n            <if test=\"uploadTime != null\">#{uploadTime},</if>\r\n            <if test=\"patid != null\">#{patid},</if>\r\n            <if test=\"leavediagname != null\">#{leavediagname},</if>\r\n            <if test=\"leaveicd10code != null\">#{leaveicd10code},</if>\r\n            <if test=\"drcode != null\">#{drcode},</if>\r\n            <if test=\"drname != null\">#{drname},</if>\r\n            <if test=\"schemestatus != null\">#{schemestatus},</if>\r\n            <if test=\"generalschemestatus != null\">#{generalschemestatus},</if>\r\n            <if test=\"leaveldeptcode != null\">#{leaveldeptcode},</if>\r\n            <if test=\"leaveldeptname != null\">#{leaveldeptname},</if>\r\n            <if test=\"hospitaldistrictid != null\">#{hospitaldistrictid},</if>\r\n            <if test=\"leavehospitaldistrictcode != null\">#{leavehospitaldistrictcode},</if>\r\n            <if test=\"leavehospitaldistrictname != null\">#{leavehospitaldistrictname},</if>\r\n            <if test=\"leavehospitaldistrictid != null\">#{leavehospitaldistrictid},</if>\r\n            <if test=\"deptid != null\">#{deptid},</if>\r\n            <if test=\"leaveldeptid != null\">#{leaveldeptid},</if>\r\n            <if test=\"schemetime != null\">#{schemetime},</if>\r\n            <if test=\"patname!= null\">#{patname},</if>\r\n            <if test=\"patno != null\">#{patno},</if>\r\n            <if test=\"inhospstate != null\">#{inhospstate},</if>\r\n            <if test=\"deptcheckFlag != null\">#{deptcheckFlag},</if>\r\n            <if test=\"wardcheckFlag != null\">#{wardcheckFlag},</if>\r\n            <if test=\"diagcheckFlag != null\">#{diagcheckFlag},</if>\r\n            <if test=\"longTaskReason != null\">#{longTaskReason},</if>\r\n            <if test=\"nurseId != null \">#{nurseId},</if>\r\n            <if test=\"nurseName != null \">#{nurseName},</if>\r\n            <if test=\"outWayId != null \">#{outWayId},</if>\r\n            <if test=\"outWayName != null \">#{outWayName},</if>\r\n            <if test=\"guid != null \">#{guid},</if>\r\n            <if test=\"operator != null \">#{operator},</if>\r\n            <if test=\"operatorId != null \">#{operatorId},</if>\r\n            <if test=\"inhospno != null \">#{inhospno},</if>\r\n            <if test=\"remark != null \">#{remark},</if>\r\n            <if test=\"fuflag != null \">#{fuflag},</if>\r\n            <if test=\"fudate != null \">#{fudate},</if>\r\n            <if test=\"fuperiod != null \">#{fuperiod},</if>\r\n            <if test=\"futypecode != null \">#{futypecode},</if>\r\n            <if test=\"futypedesc != null \">#{futypedesc},</if>\r\n            <if test=\"fuadvice != null \">#{fuadvice},</if>\r\n            <if test=\"fuspecialadvice != null \">#{fuspecialadvice},</if>\r\n            <if test=\"managementDoctor != null \">#{managementDoctor},</if>\r\n            <if test=\"managementDoctorCode != null \">#{managementDoctorCode},</if>\r\n        </trim>\r\n    </insert>\r\n\r\n\r\n    <insert id=\"insertPatMedInhospBatch\" parameterType=\"java.util.List\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"item.inhospid\">\r\n        insert into pat_med_inhosp (\r\n        serialnum, hospitalname, hospitalcode, hospitaldistrictcode, hospitaldistrictname,\r\n        icd10code, diagname, starttime, endtime, deptcode, deptname, roomno, bed_no,\r\n        orgid, del_flag, update_by, update_time, create_by, create_time, isupload,\r\n        upload_time, patid, leavediagname, leaveicd10code, drcode, drname,\r\n        schemestatus, generalschemestatus, leaveldeptcode, leaveldeptname, hospitaldistrictid,\r\n        leavehospitaldistrictcode, leavehospitaldistrictname, leavehospitaldistrictid,\r\n        deptid, leaveldeptid, schemetime, patname, patno, inhospstate,\r\n        deptcheck_flag, wardcheck_flag, diagcheck_flag, long_task_reason,\r\n        nurse_id, nurse_name, out_way_id, out_way_name, guid,\r\n        operator, operator_id, inhospno, remark,\r\n        fuflag, fudate, fuperiod, futypecode, futypedesc, fuadvice, fuspecialadvice, management_doctor,\r\n        management_doctor_doctor\r\n        )\r\n        values\r\n        <foreach collection=\"list\" item=\"item\" separator=\",\">\r\n            (\r\n            #{item.serialnum}, #{item.hospitalname}, #{item.hospitalcode}, #{item.hospitaldistrictcode},\r\n            #{item.hospitaldistrictname},\r\n            #{item.icd10code}, #{item.diagname}, #{item.starttime}, #{item.endtime}, #{item.deptcode}, #{item.deptname},\r\n            #{item.roomno}, #{item.bedNo},\r\n            #{item.orgid}, #{item.delFlag}, #{item.updateBy}, #{item.updateTime}, #{item.createBy}, #{item.createTime},\r\n            #{item.isupload},\r\n            #{item.uploadTime}, #{item.patid}, #{item.leavediagname}, #{item.leaveicd10code}, #{item.drcode},\r\n            #{item.drname},\r\n            #{item.schemestatus}, #{item.generalschemestatus}, #{item.leaveldeptcode}, #{item.leaveldeptname},\r\n            #{item.hospitaldistrictid},\r\n            #{item.leavehospitaldistrictcode}, #{item.leavehospitaldistrictname}, #{item.leavehospitaldistrictid},\r\n            #{item.deptid}, #{item.leaveldeptid}, #{item.schemetime}, #{item.patname}, #{item.patno},\r\n            #{item.inhospstate},\r\n            #{item.deptcheckFlag}, #{item.wardcheckFlag}, #{item.diagcheckFlag}, #{item.longTaskReason},\r\n            #{item.nurseId}, #{item.nurseName}, #{item.outWayId}, #{item.outWayName}, #{item.guid},\r\n            #{item.operator}, #{item.operatorId}, #{item.inhospno}, #{item.remark},\r\n            #{item.fuflag}, #{item.fudate}, #{item.fuperiod}, #{item.futypecode}, #{item.futypedesc}, #{item.fuadvice},\r\n            #{item.fuspecialadvice}, #{item.managementDoctor}, #{item.managementDoctorCode}\r\n            )\r\n        </foreach>\r\n    </insert>\r\n\r\n\r\n    <update id=\"updatePatMedInhosp\" parameterType=\"com.smartor.domain.PatMedInhosp\">\r\n        update pat_med_inhosp\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            <if test=\"serialnum != null\">serialnum = #{serialnum},</if>\r\n            <if test=\"hospitalname != null\">hospitalname = #{hospitalname},</if>\r\n            <if test=\"hospitalcode != null\">hospitalcode = #{hospitalcode},</if>\r\n            <if test=\"hospitaldistrictcode != null\">hospitaldistrictcode = #{hospitaldistrictcode},</if>\r\n            <if test=\"hospitaldistrictname != null\">hospitaldistrictname = #{hospitaldistrictname},</if>\r\n            <if test=\"icd10code != null\">icd10code = #{icd10code},</if>\r\n            <if test=\"diagname != null\">diagname = #{diagname},</if>\r\n            <if test=\"starttime != null\">starttime = #{starttime},</if>\r\n            <if test=\"endtime != null\">endtime = #{endtime},</if>\r\n            <if test=\"deptcode != null\">deptcode = #{deptcode},</if>\r\n            <if test=\"deptname != null\">deptname = #{deptname},</if>\r\n            <if test=\"roomno != null\">roomno = #{roomno},</if>\r\n            <if test=\"bedNo != null\">bed_no = #{bedNo},</if>\r\n            <if test=\"orgid != null\">orgid = #{orgid},</if>\r\n            <if test=\"delFlag != null and delFlag != ''\">del_flag = #{delFlag},</if>\r\n            <if test=\"updateBy != null\">update_by = #{updateBy},</if>\r\n            <if test=\"updateTime != null\">update_time = #{updateTime},</if>\r\n            <if test=\"createBy != null\">create_by = #{createBy},</if>\r\n            <if test=\"createTime != null\">create_time = #{createTime},</if>\r\n            <if test=\"isupload != null\">isupload = #{isupload},</if>\r\n            <if test=\"uploadTime != null\">upload_time = #{uploadTime},</if>\r\n            <if test=\"patid != null\">patid = #{patid},</if>\r\n            <if test=\"leavediagname != null\">leavediagname = #{leavediagname},</if>\r\n            <if test=\"leaveicd10code != null\">leaveicd10code = #{leaveicd10code},</if>\r\n            <if test=\"drcode != null\">drcode = #{drcode},</if>\r\n            <if test=\"drname != null\">drname = #{drname},</if>\r\n            <if test=\"schemestatus != null\">schemestatus = #{schemestatus},</if>\r\n            <if test=\"generalschemestatus != null\">generalschemestatus = #{generalschemestatus},</if>\r\n            <if test=\"leaveldeptcode != null\">leaveldeptcode = #{leaveldeptcode},</if>\r\n            <if test=\"leaveldeptname != null\">leaveldeptname = #{leaveldeptname},</if>\r\n            <if test=\"hospitaldistrictid != null\">hospitaldistrictid = #{hospitaldistrictid},</if>\r\n            <if test=\"leavehospitaldistrictcode != null\">leavehospitaldistrictcode = #{leavehospitaldistrictcode},</if>\r\n            <if test=\"leavehospitaldistrictname != null\">leavehospitaldistrictname = #{leavehospitaldistrictname},</if>\r\n            <if test=\"leavehospitaldistrictid != null\">leavehospitaldistrictid = #{leavehospitaldistrictid},</if>\r\n            <if test=\"deptid != null\">deptid = #{deptid},</if>\r\n            <if test=\"leaveldeptid != null\">leaveldeptid = #{leaveldeptid},</if>\r\n            <if test=\"schemetime != null\">schemetime = #{schemetime},</if>\r\n            <if test=\"patname!= null\">patname = #{patname},</if>\r\n            <if test=\"patno != null\">patno = #{patno},</if>\r\n            <if test=\"inhospstate != null\">inhospstate = #{inhospstate},</if>\r\n            <if test=\"deptcheckFlag != null\">deptcheck_flag = #{deptcheckFlag},</if>\r\n            <if test=\"wardcheckFlag != null\">wardcheck_flag = #{wardcheckFlag},</if>\r\n            <if test=\"diagcheckFlag != null\">diagcheck_flag = #{diagcheckFlag},</if>\r\n            <if test=\"longTaskReason != null\">long_task_reason = #{longTaskReason},</if>\r\n            <if test=\"nurseId != null \">nurse_id = #{nurseId},</if>\r\n            <if test=\"nurseName != null \">nurse_name = #{nurseName},</if>\r\n            <if test=\"outWayId != null \">out_way_id = #{outWayId},</if>\r\n            <if test=\"outWayName != null \">out_way_name = #{outWayName},</if>\r\n            <if test=\"guid != null \">guid = #{guid},</if>\r\n            <if test=\"operator != null \">operator = #{operator},</if>\r\n            <if test=\"operatorId != null \">operator_id = #{operatorId},</if>\r\n            <if test=\"remark != null \">remark = #{remark},</if>\r\n            <if test=\"fuflag != null \">fuflag = #{fuflag},</if>\r\n            <if test=\"fudate != null \">fudate = #{fudate},</if>\r\n            <if test=\"fuperiod != null \">fuperiod = #{fuperiod},</if>\r\n            <if test=\"futypecode != null \">futypecode = #{futypecode},</if>\r\n            <if test=\"futypedesc != null \">futypedesc = #{futypedesc},</if>\r\n            <if test=\"fuadvice != null \">fuadvice = #{fuadvice},</if>\r\n            <if test=\"fuspecialadvice != null \">fuspecialadvice = #{fuspecialadvice},</if>\r\n            <if test=\"managementDoctor != null \">management_doctor = #{managementDoctor},</if>\r\n            <if test=\"managementDoctorCode != null \">management_doctor_code = #{managementDoctorCode}</if>\r\n\r\n        </trim>\r\n        where inhospid = #{inhospid}\r\n    </update>\r\n\r\n    <delete id=\"deletePatMedInhospByInhospid\" parameterType=\"Long\">\r\n        update pat_med_inhosp\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where inhospid = #{inhospid}\r\n    </delete>\r\n\r\n    <delete id=\"deletePatMedInhospByInhospno\" parameterType=\"String\">\r\n        update pat_med_inhosp\r\n        <trim prefix=\"SET\" suffixOverrides=\",\">\r\n            del_flag =1\r\n        </trim>\r\n        where inhospno = #{inhospno}\r\n    </delete>\r\n\r\n    <delete id=\"deletePatMedInhospByInhospids\" parameterType=\"String\">\r\n        delete from pat_med_inhosp where inhospid in\r\n        <foreach item=\"inhospid\" collection=\"array\" open=\"(\" separator=\",\" close=\")\">\r\n            #{inhospid}\r\n        </foreach>\r\n    </delete>\r\n\r\n    <select id=\"getDeptRanking\" parameterType=\"com.smartor.domain.PatMedReq\" resultType=\"com.smartor.domain.PatMedRes\">\r\n        SELECT deptname, COUNT(1) AS rc\r\n        FROM (\r\n        <if test=\"mz != null\">\r\n            SELECT deptname\r\n            FROM pat_med_outhosp\r\n            <where>\r\n                del_flag=0\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and deptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </where>\r\n        </if>\r\n        <if test=\"mz != null and zy != null\">\r\n            UNION ALL\r\n        </if>\r\n        <if test=\"zy != null\">\r\n            SELECT deptname\r\n            FROM pat_med_inhosp\r\n            <where>\r\n                del_flag=0\r\n                and inhospstate=0\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and deptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </where>\r\n        </if>\r\n        <if test=\"cy != null and zy != null\">\r\n            UNION ALL\r\n            SELECT deptname\r\n            FROM pat_med_inhosp\r\n            <where>\r\n                del_flag=0\r\n                and inhospstate=1\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and deptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </where>\r\n        </if>\r\n        <if test=\"mz != null and zy != null and cy==null\">\r\n            UNION ALL\r\n            SELECT deptname\r\n            FROM pat_med_inhosp\r\n            <where>\r\n                del_flag=0\r\n                and inhospstate=1\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and deptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </where>\r\n        </if>\r\n        ) AS combined\r\n        GROUP BY deptname;\r\n    </select>\r\n    <select id=\"selectPatMedInhospCount\" parameterType=\"com.smartor.domain.PatMedReq\"\r\n            resultType=\"com.smartor.domain.PatMedRes\">\r\n        SELECT SUM( rs ) AS rs,\r\n        SUM( rc ) AS rc\r\n        FROM (\r\n        SELECT\r\n        COUNT(1) AS rc,\r\n        0 AS rs\r\n        FROM\r\n        pat_med_inhosp\r\n        <where>\r\n            del_flag=0\r\n            <if test=\"orgid != null\">\r\n                AND orgid = #{orgid}\r\n            </if>\r\n            <if test=\"zy != null\">\r\n                and inhospstate=0\r\n                and date_format(starttime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n                and date_format(starttime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and deptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </if>\r\n            <if test=\"cy != null\">\r\n                and inhospstate=1\r\n                and date_format(endtime,'%y%m%d') &gt;= date_format(#{startDate},'%y%m%d')\r\n                and date_format(endtime,'%y%m%d') &lt;= date_format(#{endDate},'%y%m%d')\r\n                <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                    and leaveldeptcode in\r\n                    <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                        #{deptcode}\r\n                    </foreach>\r\n                </if>\r\n            </if>\r\n\r\n        </where>\r\n        union all\r\n        select\r\n        0 AS rc,\r\n        count(1) AS rs\r\n        FROM\r\n        service_subtask\r\n        <where>\r\n            del_flag = 0\r\n            and service_type=2\r\n            <if test=\"orgid != null\">\r\n                AND orgid = #{orgid}\r\n            </if>\r\n            <if test=\"startDate != null\">\r\n                AND date_format( visit_time, '%y%m%d' ) &gt;= date_format( #{startDate}, '%y%m%d' )\r\n            </if>\r\n            <if test=\"endDate != null\">\r\n                AND date_format( visit_time, '%y%m%d' ) &lt;= date_format(#{endDate},'%y%m%d')\r\n            </if>\r\n            <if test=\"deptcodeList != null   and deptcodeList.size() > 0\">\r\n                and deptcode in\r\n                <foreach collection=\"deptcodeList\" item=\"deptcode\" open=\"(\" separator=\",\" close=\")\">\r\n                    #{deptcode}\r\n                </foreach>\r\n            </if>\r\n        </where>\r\n        ) AS combined_data\r\n    </select>\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml
---- a/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/resources/mapper/smartor/PatMedInhospMapper.xml	(date 1758798203240)
-@@ -387,9 +387,9 @@
-         b.out_way_name,
-         b.nurse_id,
-         b.nurse_name,
--        b.deptcheckFlag,
--        b.diagcheckFlag,
--        b.wardcheckFlag,
-+        b.deptcheck_flag,
-+        b.diagcheck_flag,
-+        b.wardcheck_flag,
-         b.inhospstate,
-         b.patno,
-         b.inhospno,
-@@ -436,7 +436,7 @@
-         b.futypecode,
-         b.futypedesc,
-         b.fuadvice,
--        b.fuspecialadvice
-+        b.fuspecialadvice,
-         b.schemetime
-         FROM
-         pat_med_inhosp b,
-@@ -456,6 +456,7 @@
-                 concat('%', #{hospitaldistrictname}, '%')
-             </if>
-             <if test="endtime != null ">and b.endtime = #{endtime}</if>
-+            <if test="serialnum != null ">and b.serialnum = #{serialnum}</if>
-             <if test="fuflag != null ">and b.fuflag = #{fuflag}</if>
-             <if test="nurseId != null ">and b.nurse_id = #{nurseId}</if>
-             <if test="nurseName != null ">and b.nurse_name = #{nurseName}</if>
-Index: smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.util.Date;\r\n\r\n/**\r\n * 鎮h�呴棬璇婅褰曞璞� pat_med_outhosp\r\n *\r\n * @author smartor\r\n * @date 2023-03-04\r\n */\r\n@Data\r\n@ApiModel(value = \"PatMedOuthosp\", description = \"鎮h�呴棬璇婅褰曞璞")\r\npublic class PatMedOuthosp extends BaseEntity {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 鑷ID\r\n     */\r\n    @ApiModelProperty(value = \"鑷ID\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 闂ㄨ瘖缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"闂ㄨ瘖缂栧彿\")\r\n    private String outhospno;\r\n\r\n    @ApiModelProperty(value = \"闀挎湡浠诲姟闅忚鏍囪瘑锛�0涓嶉渶瑕侊紝1闇�瑕乗")\r\n    private String fuflag;\r\n\r\n    /**\r\n     * 娴佹按鍙穃r\n     */\r\n    @ApiModelProperty(value = \"娴佹按鍙穃")\r\n    private String serialnum;\r\n\r\n    /**\r\n     * 妗fID\r\n     */\r\n    @ApiModelProperty(value = \"妗fID\")\r\n    private Long patid;\r\n\r\n    /**\r\n     * 鐥呬汉濮撳悕\r\n     */\r\n    @ApiModelProperty(value = \" 鐥呬汉濮撳悕\")\r\n    private String patname;\r\n\r\n    /**\r\n     * 鍖婚櫌鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖婚櫌鍚嶇О\")\r\n    private String hospitalname;\r\n\r\n    /**\r\n     * 鍖婚櫌缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍖婚櫌缂栧彿\")\r\n    private String hospitalcode;\r\n\r\n    /**\r\n     * 璇婃柇ICD鍊糪r\n     */\r\n    @ApiModelProperty(value = \"璇婃柇ICD鍊糪")\r\n    private String icd10code;\r\n\r\n    /**\r\n     * 璇婃柇鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"璇婃柇鍚嶇О\")\r\n    private String diagname;\r\n\r\n    /**\r\n     * 绉戝浠g爜\r\n     */\r\n    @ApiModelProperty(value = \"绉戝浠g爜\")\r\n    private String deptcode;\r\n\r\n    /**\r\n     * 绉戝鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"绉戝鍚嶇О\")\r\n    @Excel(name = \" 绉戝鍚嶇О \")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 鍖荤敓宸ュ彿\r\n     */\r\n    @ApiModelProperty(value = \"鍖荤敓宸ュ彿\")\r\n    private String drcode;\r\n\r\n    /**\r\n     * 鍖荤敓鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍖荤敓鍚嶇О\")\r\n    private String drname;\r\n\r\n    /**\r\n     * 灏辫瘖鏃ユ湡\r\n     */\r\n    @ApiModelProperty(value = \"灏辫瘖鏃ユ湡\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 灏辫瘖鏃ユ湡 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date admitdate;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏄惁鐢熸垚鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚灏辫瘖 9鏃犲尮閰嶆柟妗圽r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鐢熸垚鏂规鐘舵��;0鏈敓鎴� 1鐢熸垚灏辫瘖 9鏃犲尮閰嶆柟妗圽")\r\n    private Long schemestatus;\r\n\r\n    /**\r\n     * 绉戝ID\r\n     */\r\n    @ApiModelProperty(value = \"绉戝ID\")\r\n    private Long deptid;\r\n\r\n    /**\r\n     * 鏂规鐘舵�佹搷浣滄椂闂碶r\n     */\r\n    @ApiModelProperty(value = \"鏂规鐘舵�佹搷浣滄椂闂碶")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鏂规鐘舵�佹搷浣滄椂闂� \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    private Date schemetime;\r\n\r\n    /**\r\n     * 鐜扮梾鍙瞈r\n     */\r\n    @ApiModelProperty(value = \"鐜扮梾鍙瞈")\r\n    private String hpi;\r\n\r\n    /**\r\n     鎮h�呮。妗堢紪鍙� 鐜扮梾鍙瞈r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呮。妗堢紪鍙穃")\r\n    private String patno;\r\n\r\n    /**\r\n     * 涓昏堪\r\n     */\r\n    @ApiModelProperty(value = \"涓昏堪\")\r\n    private String mainsuit;\r\n\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @ApiModelProperty(\"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @ApiModelProperty(\"pageSize\")\r\n    private Integer pageSize;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @ApiModelProperty(value = \"骞撮緞\")\r\n    private String age;\r\n\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @ApiModelProperty(value = \"鎵嬫満鍙穃")\r\n    private String telcode;\r\n\r\n    /**\r\n     * 鐤剧梾闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊\r\n     */\r\n    @ApiModelProperty(value = \"鐤剧梾闀挎湡浠诲姟锛屾槸鍚﹀鐞嗭細0鏈鐞�   1澶勭悊鎴愬姛    2澶勭悊澶辫触 \")\r\n    private String diagcheckFlag;\r\n\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"寮�濮嬪氨璇婃椂闂碶")\r\n    private Date beginTime;\r\n\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \"  \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"缁撴潫灏辫瘖鏃堕棿\")\r\n    private Date endTime;\r\n\r\n    @ApiModelProperty(value = \"鎸囧畾鐨勯殢璁挎棩鏈焅")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date fudate;\r\n\r\n    /**\r\n     * 璇佷欢鍙风爜\r\n     */\r\n    @ApiModelProperty(\"璇佷欢鍙风爜\")\r\n    @Excel(name = \" 璇佷欢鍙风爜 \")\r\n    private String idcardno;\r\n\r\n    @ApiModelProperty(value = \"鏄惁鏈夐殢璁�0娌℃湁;>=1鏈夐殢璁� \")\r\n    private String serverState;\r\n\r\n    @ApiModelProperty(value = \"鏈�鍚庡紑濮嬫椂闂碶")\r\n    private String lastStartTime;\r\n\r\n    @ApiModelProperty(value = \"鏈�鍚庣粨鏉熸椂闂碶")\r\n    private String lastEndTime;\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java b/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java
---- a/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/PatMedOuthosp.java	(date 1758798203254)
-@@ -8,6 +8,7 @@
- import lombok.Data;
- 
- import java.util.Date;
-+import java.util.List;
- 
- /**
-  * 鎮h�呴棬璇婅褰曞璞� pat_med_outhosp
-@@ -83,6 +84,12 @@
-     @ApiModelProperty(value = "绉戝浠g爜")
-     private String deptcode;
- 
-+    /**
-+     * 绉戝浠g爜
-+     */
-+    @ApiModelProperty(value = "绉戝浠g爜闆嗗悎")
-+    private List<String> deptcodes;
-+
-     /**
-      * 绉戝鍚嶇О
-      */
-@@ -161,7 +168,7 @@
-     private String hpi;
- 
-     /**
--     鎮h�呮。妗堢紪鍙� 鐜扮梾鍙�
-+     * 鎮h�呮。妗堢紪鍙� 鐜扮梾鍙�
-      */
-     @ApiModelProperty(value = "鎮h�呮。妗堢紪鍙�")
-     private String patno;
-Index: ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.framework.config;\r\n\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.context.annotation.Bean;\r\nimport org.springframework.http.HttpMethod;\r\nimport org.springframework.security.authentication.AuthenticationManager;\r\nimport org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;\r\nimport org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;\r\nimport org.springframework.security.config.annotation.web.builders.HttpSecurity;\r\nimport org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;\r\nimport org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;\r\nimport org.springframework.security.config.http.SessionCreationPolicy;\r\nimport org.springframework.security.core.userdetails.UserDetailsService;\r\nimport org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;\r\nimport org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;\r\nimport org.springframework.security.web.authentication.logout.LogoutFilter;\r\nimport org.springframework.web.filter.CorsFilter;\r\nimport com.ruoyi.framework.config.properties.PermitAllUrlProperties;\r\nimport com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter;\r\nimport com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl;\r\nimport com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl;\r\n\r\n/**\r\n * spring security閰嶇疆\r\n *\r\n * @author ruoyi\r\n */\r\n@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)\r\npublic class SecurityConfig extends WebSecurityConfigurerAdapter {\r\n    /**\r\n     * 鑷畾涔夌敤鎴疯璇侀�昏緫\r\n     */\r\n    @Autowired\r\n    private UserDetailsService userDetailsService;\r\n\r\n    /**\r\n     * 璁よ瘉澶辫触澶勭悊绫籠r\n     */\r\n    @Autowired\r\n    private AuthenticationEntryPointImpl unauthorizedHandler;\r\n\r\n    /**\r\n     * 閫�鍑哄鐞嗙被\r\n     */\r\n    @Autowired\r\n    private LogoutSuccessHandlerImpl logoutSuccessHandler;\r\n\r\n    /**\r\n     * token璁よ瘉杩囨护鍣╘r\n     */\r\n    @Autowired\r\n    private JwtAuthenticationTokenFilter authenticationTokenFilter;\r\n\r\n    /**\r\n     * 璺ㄥ煙杩囨护鍣╘r\n     */\r\n    @Autowired\r\n    private CorsFilter corsFilter;\r\n\r\n    /**\r\n     * 鍏佽鍖垮悕璁块棶鐨勫湴鍧�\r\n     */\r\n    @Autowired\r\n    private PermitAllUrlProperties permitAllUrl;\r\n\r\n    /**\r\n     * 瑙e喅 鏃犳硶鐩存帴娉ㄥ叆 AuthenticationManager\r\n     *\r\n     * @return\r\n     * @throws Exception\r\n     */\r\n    @Bean\r\n    @Override\r\n    public AuthenticationManager authenticationManagerBean() throws Exception {\r\n        return super.authenticationManagerBean();\r\n    }\r\n\r\n    /**\r\n     * anyRequest          |   鍖归厤鎵�鏈夎姹傝矾寰刓r\n     * access              |   SpringEl琛ㄨ揪寮忕粨鏋滀负true鏃跺彲浠ヨ闂甛r\n     * anonymous           |   鍖垮悕鍙互璁块棶\r\n     * denyAll             |   鐢ㄦ埛涓嶈兘璁块棶\r\n     * fullyAuthenticated  |   鐢ㄦ埛瀹屽叏璁よ瘉鍙互璁块棶锛堥潪remember-me涓嬭嚜鍔ㄧ櫥褰曪級\r\n     * hasAnyAuthority     |   濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず鏉冮檺锛屽垯鍏朵腑浠讳綍涓�涓潈闄愬彲浠ヨ闂甛r\n     * hasAnyRole          |   濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず瑙掕壊锛屽垯鍏朵腑浠讳綍涓�涓鑹插彲浠ヨ闂甛r\n     * hasAuthority        |   濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず鏉冮檺锛屽垯鍏舵潈闄愬彲浠ヨ闂甛r\n     * hasIpAddress        |   濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧずIP鍦板潃锛屽鏋滅敤鎴稩P鍜屽弬鏁板尮閰嶏紝鍒欏彲浠ヨ闂甛r\n     * hasRole             |   濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず瑙掕壊锛屽垯鍏惰鑹插彲浠ヨ闂甛r\n     * permitAll           |   鐢ㄦ埛鍙互浠绘剰璁块棶\r\n     * rememberMe          |   鍏佽閫氳繃remember-me鐧诲綍鐨勭敤鎴疯闂甛r\n     * authenticated       |   鐢ㄦ埛鐧诲綍鍚庡彲璁块棶\r\n     */\r\n    @Override\r\n    protected void configure(HttpSecurity httpSecurity) throws Exception {\r\n        // 娉ㄨВ鏍囪鍏佽鍖垮悕璁块棶鐨剈rl\r\n        ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity.authorizeRequests();\r\n        permitAllUrl.getUrls().forEach(url -> registry.antMatchers(url).permitAll());\r\n\r\n        httpSecurity\r\n                // CSRF绂佺敤锛屽洜涓轰笉浣跨敤session\r\n                .csrf().disable()\r\n                // 绂佺敤HTTP鍝嶅簲鏍囧ご\r\n                .headers().cacheControl().disable().and()\r\n                // 璁よ瘉澶辫触澶勭悊绫籠r\n                .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and()\r\n                // 鍩轰簬token锛屾墍浠ヤ笉闇�瑕乻ession\r\n                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()\r\n                // 杩囨护璇锋眰\r\n                .authorizeRequests()\r\n                // 瀵逛簬鐧诲綍login 娉ㄥ唽register 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶\r\n                .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/subtaskAnswer/saveQuestionAnswer\", \"/smartor/import/download\", \"/smartor/serviceSubtask/recordAccept\", \"/smartor/outPath/getInfoByParam\", \"/smartor/serviceExternal/addDeptInfo\", \"/smartor/serviceExternal/**\", \"/sso/**\",\"/smartor/sltdHealthcareRecord/**\",\"/smartor/servicetask/getScriptByCondition\",\"/smartor/subtaskAnswer/saveMYDQuestionAnswer\").permitAll()\r\n                .antMatchers(HttpMethod.GET, \"/SSOLogin/**\").permitAll()\r\n                // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂甛r\n                .antMatchers(HttpMethod.GET, \"/\", \"/*.html\", \"/**/*.html\", \"/**/*.css\", \"/**/*.js\", \"/profile/**\",\"/getDept/*\").permitAll().antMatchers(\"/swagger-ui.html\", \"/swagger-resources/**\", \"/webjars/**\", \"/*/api-docs\", \"/druid/**\").permitAll()\r\n                .antMatchers(\"/smartor/organization/list\").permitAll()\r\n                // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇乗r\n                .anyRequest().authenticated().and().headers().frameOptions().disable();\r\n        // 娣诲姞Logout filter\r\n        httpSecurity.logout().logoutUrl(\"/logout\").logoutSuccessHandler(logoutSuccessHandler);\r\n        // 娣诲姞JWT filter\r\n        httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);\r\n        // 娣诲姞CORS filter\r\n        httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class);\r\n        httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class);\r\n    }\r\n\r\n    /**\r\n     * 寮烘暎鍒楀搱甯屽姞瀵嗗疄鐜癨r\n     */\r\n    @Bean\r\n    public BCryptPasswordEncoder bCryptPasswordEncoder() {\r\n        return new BCryptPasswordEncoder();\r\n    }\r\n\r\n    /**\r\n     * 韬唤璁よ瘉鎺ュ彛\r\n     */\r\n    @Override\r\n    protected void configure(AuthenticationManagerBuilder auth) throws Exception {\r\n        auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java	(date 1758798203268)
-@@ -109,9 +109,8 @@
-                 .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/subtaskAnswer/getQuestionCache", "/smartor/subtaskAnswer/saveQuestionCache", "/smartor/servicetask/getScriptInfoByCondition", "/smartor/subtaskAnswer/saveQuestionAnswer", "/smartor/import/download", "/smartor/serviceSubtask/recordAccept", "/smartor/outPath/getInfoByParam", "/smartor/serviceExternal/addDeptInfo", "/smartor/serviceExternal/**", "/sso/**","/smartor/sltdHealthcareRecord/**","/smartor/servicetask/getScriptByCondition","/smartor/subtaskAnswer/saveMYDQuestionAnswer").permitAll()
--                .antMatchers(HttpMethod.GET, "/SSOLogin/**").permitAll()
-                 // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂�
--                .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**","/getDept/*").permitAll().antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
-+                .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**","/getDept/*","/SSOLogin/**").permitAll().antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
-                 .antMatchers("/smartor/organization/list").permitAll()
-                 // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇�
-                 .anyRequest().authenticated().and().headers().frameOptions().disable();
-Index: ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.ruoyi.system.mapper.SysDeptMapper\">\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysDept\" id=\"SysDeptResult\">\r\n        <id property=\"deptId\" column=\"dept_id\"/>\r\n        <id property=\"hisDeptId\" column=\"his_dept_id\"/>\r\n        <result property=\"parentId\" column=\"parent_id\"/>\r\n        <result property=\"hisParentId\" column=\"his_parent_id\"/>\r\n        <result property=\"ancestors\" column=\"ancestors\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"orderNum\" column=\"order_num\"/>\r\n        <result property=\"leader\" column=\"leader\"/>\r\n        <result property=\"phone\" column=\"phone\"/>\r\n        <result property=\"email\" column=\"email\"/>\r\n        <result property=\"status\" column=\"status\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"parentName\" column=\"parent_name\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptType\" column=\"dept_type\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectDeptVo\">\r\n        select d.dept_id,\r\n               d.dept_code,\r\n               d.parent_id,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.dept_type,\r\n               d.email,\r\n               d.status,\r\n               d.del_flag,\r\n               d.create_by,\r\n               d.guid,\r\n               d.orgid,\r\n               d.create_time,\r\n               d.his_dept_id,\r\n               d.his_parent_id\r\n        from sys_dept d\r\n    </sql>\r\n\r\n    <select id=\"selectDeptList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\" resultMap=\"SysDeptResult\">\r\n        <include refid=\"selectDeptVo\"/>\r\n        where d.del_flag = '0'\r\n        <if test=\"deptId != null and deptId != 0\">\r\n            AND dept_id = #{deptId}\r\n        </if>\r\n        <if test=\"parentId != null and parentId != 0\">\r\n            AND parent_id = #{parentId}\r\n        </if>\r\n        <if test=\"deptName != null and deptName != ''\">\r\n            AND dept_name like concat('%', #{deptName}, '%')\r\n        </if>\r\n        <if test=\"status != null and status != ''\">\r\n            AND status = #{status}\r\n        </if>\r\n        <if test=\"deptCode != null and deptCode != ''\">\r\n            AND dept_code = #{deptCode}\r\n        </if>\r\n        <if test=\"deptType != null and deptType != ''\">\r\n            AND dept_type = #{deptType}\r\n        </if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">\r\n            AND his_dept_id = #{hisDeptId}\r\n        </if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">\r\n            AND his_parent_id = #{hisParentId}\r\n        </if>\r\n            <if test=\"orgid != null and orgid != ''\">\r\n            AND orgid = #{orgid}\r\n        </if>\r\n        <!-- 鏁版嵁鑼冨洿杩囨护 -->\r\n        ${params.dataScope}\r\n        order by d.dept_type asc, d.parent_id, d.order_num\r\n    </select>\r\n\r\n    <select id=\"selectDeptListByRoleId\" resultType=\"Long\">\r\n        select d.dept_id\r\n        from sys_dept d\r\n        left join sys_role_dept rd on d.dept_id = rd.dept_id\r\n        where rd.role_id = #{roleId}\r\n        <if test=\"deptCheckStrictly\">\r\n            and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id =\r\n            rd.dept_id and rd.role_id = #{roleId})\r\n        </if>\r\n        order by d.parent_id, d.order_num\r\n    </select>\r\n\r\n    <select id=\"selectDeptById\" parameterType=\"Long\" resultMap=\"SysDeptResult\">\r\n        select d.dept_id,\r\n               d.parent_id,\r\n               d.dept_code,\r\n               d.dept_type,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.email,\r\n               d.status,\r\n               d.his_dept_id,\r\n               d.his_parent_id,\r\n               (select dept_name from sys_dept where dept_id = d.parent_id) parent_name\r\n        from sys_dept d\r\n        where d.dept_id = #{deptId}\r\n    </select>\r\n\r\n    <select id=\"selectDeptByCode\" parameterType=\"string\" resultMap=\"SysDeptResult\">\r\n        select d.dept_id,\r\n               d.parent_id,\r\n               d.dept_code,\r\n               d.dept_type,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.phone,\r\n               d.email,\r\n               d.his_dept_id,\r\n               d.his_parent_id,\r\n               d.status\r\n        from sys_dept d\r\n        where del_flag = 0\r\n          and d.dept_code = #{deptCode}\r\n    </select>\r\n\r\n    <select id=\"checkDeptExistUser\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(1)\r\n        from sys_user\r\n        where dept_id = #{deptId}\r\n          and del_flag = '0'\r\n    </select>\r\n\r\n    <select id=\"hasChildByDeptId\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(1)\r\n        from sys_dept\r\n        where del_flag = '0'\r\n          and parent_id = #{deptId} limit 1\r\n    </select>\r\n\r\n    <select id=\"selectChildrenDeptById\" parameterType=\"Long\" resultMap=\"SysDeptResult\">\r\n        select *\r\n        from sys_dept\r\n        where find_in_set(#{deptId}, ancestors)\r\n    </select>\r\n\r\n    <select id=\"selectNormalChildrenDeptById\" parameterType=\"Long\" resultType=\"int\">\r\n        select count(*)\r\n        from sys_dept\r\n        where status = 0\r\n          and del_flag = '0'\r\n          and find_in_set(#{deptId}, ancestors)\r\n    </select>\r\n\r\n    <select id=\"checkDeptNameUnique\" resultMap=\"SysDeptResult\">\r\n        <include refid=\"selectDeptVo\"/>\r\n        where dept_name=#{deptName} and parent_id = #{parentId} and del_flag = '0' limit 1\r\n    </select>\r\n\r\n    <insert id=\"insertDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        insert into sys_dept(\r\n        <if test=\"deptId != null and deptId != 0\">dept_id,</if>\r\n        <if test=\"parentId != null and parentId != 0\">parent_id,</if>\r\n        <if test=\"deptName != null and deptName != ''\">dept_name,</if>\r\n        <if test=\"ancestors != null and ancestors != ''\">ancestors,</if>\r\n        <if test=\"orderNum != null\">order_num,</if>\r\n        <if test=\"leader != null and leader != ''\">leader,</if>\r\n        <if test=\"phone != null and phone != ''\">phone,</if>\r\n        <if test=\"email != null and email != ''\">email,</if>\r\n        <if test=\"status != null\">status,</if>\r\n        <if test=\"deptCode != null\">dept_code,</if>\r\n        <if test=\"deptType != null\">dept_type,</if>\r\n        <if test=\"createBy != null and createBy != ''\">create_by,</if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">his_dept_id,</if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">his_parent_id,</if>\r\n        <if test=\"orgid != null and orgid != ''\">orgid,</if>\r\n        create_time\r\n        )values(\r\n        <if test=\"deptId != null and deptId != 0\">#{deptId},</if>\r\n        <if test=\"parentId != null and parentId != 0\">#{parentId},</if>\r\n        <if test=\"deptName != null and deptName != ''\">#{deptName},</if>\r\n        <if test=\"ancestors != null and ancestors != ''\">#{ancestors},</if>\r\n        <if test=\"orderNum != null\">#{orderNum},</if>\r\n        <if test=\"leader != null and leader != ''\">#{leader},</if>\r\n        <if test=\"phone != null and phone != ''\">#{phone},</if>\r\n        <if test=\"email != null and email != ''\">#{email},</if>\r\n        <if test=\"status != null\">#{status},</if>\r\n        <if test=\"deptCode != null\">#{deptCode},</if>\r\n        <if test=\"deptType != null\">#{deptType},</if>\r\n        <if test=\"createBy != null and createBy != ''\">#{createBy},</if>\r\n        <if test=\"hisDeptId != null and hisDeptId != ''\">#{hisDeptId},</if>\r\n        <if test=\"hisParentId != null and hisParentId != ''\">#{hisParentId},</if>\r\n        <if test=\"orgid != null and orgid != ''\">#{orgid},</if>\r\n        sysdate()\r\n        )\r\n    </insert>\r\n\r\n    <update id=\"updateDept\" parameterType=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        update sys_dept\r\n        <set>\r\n            <if test=\"parentId != null and parentId != 0\">parent_id = #{parentId},</if>\r\n            <if test=\"deptName != null and deptName != ''\">dept_name = #{deptName},</if>\r\n            <if test=\"ancestors != null and ancestors != ''\">ancestors = #{ancestors},</if>\r\n            <if test=\"orderNum != null\">order_num = #{orderNum},</if>\r\n            <if test=\"leader != null\">leader = #{leader},</if>\r\n            <if test=\"phone != null\">phone = #{phone},</if>\r\n            <if test=\"email != null\">email = #{email},</if>\r\n            <if test=\"status != null and status != ''\">status = #{status},</if>\r\n            <if test=\"deptCode != null\">dept_code=#{deptCode},</if>\r\n            <if test=\"deptType != null\">dept_type=#{deptType},</if>\r\n            <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\r\n            <if test=\"hisParentId != null and hisParentId != ''\">his_parent_id = #{hisParentId},</if>\r\n            <if test=\"hisDeptId != null and hisDeptId != ''\">his_dept_id = #{hisDeptId},</if>\r\n            <if test=\"orgid != null and orgid != ''\">orgid = #{orgid},</if>\r\n            update_time = sysdate()\r\n        </set>\r\n        where dept_id = #{deptId}\r\n    </update>\r\n\r\n    <update id=\"updateDeptChildren\" parameterType=\"java.util.List\">\r\n        update sys_dept set ancestors =\r\n        <foreach collection=\"depts\" item=\"item\" index=\"index\"\r\n                 separator=\" \" open=\"case dept_id\" close=\"end\">\r\n            when #{item.deptId} then #{item.ancestors}\r\n        </foreach>\r\n        where dept_id in\r\n        <foreach collection=\"depts\" item=\"item\" index=\"index\"\r\n                 separator=\",\" open=\"(\" close=\")\">\r\n            #{item.deptId}\r\n        </foreach>\r\n    </update>\r\n\r\n    <update id=\"updateDeptStatusNormal\" parameterType=\"Long\">\r\n        update sys_dept set status = '0' where dept_id in\r\n        <foreach collection=\"array\" item=\"deptId\" open=\"(\" separator=\",\" close=\")\">\r\n            #{deptId}\r\n        </foreach>\r\n    </update>\r\n\r\n    <delete id=\"deleteDeptById\" parameterType=\"Long\">\r\n        update sys_dept\r\n        set del_flag = '2'\r\n        where dept_id = #{deptId}\r\n    </delete>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
---- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml	(date 1758798203280)
-@@ -250,7 +250,7 @@
- 
-     <delete id="deleteDeptById" parameterType="Long">
-         update sys_dept
--        set del_flag = '2'
-+        set del_flag = '1'
-         where dept_id = #{deptId}
-     </delete>
- 
-Index: ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\n        PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n        \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.ruoyi.system.mapper.SysUserMapper\">\r\n\r\n    <resultMap type=\"com.ruoyi.common.core.domain.entity.SysUser\" id=\"SysUserResult\">\r\n        <id property=\"userId\" column=\"user_id\"/>\r\n        <id property=\"hisUserId\" column=\"his_user_id\"/>\r\n        <result property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"hospInfo\" column=\"hosp_info\"/>\r\n        <result property=\"deptInfo\" column=\"dept_info\"/>\r\n        <result property=\"userName\" column=\"user_name\"/>\r\n        <result property=\"nickName\" column=\"nick_name\"/>\r\n        <result property=\"email\" column=\"email\"/>\r\n        <result property=\"phonenumber\" column=\"phonenumber\"/>\r\n        <result property=\"sex\" column=\"sex\"/>\r\n        <result property=\"avatar\" column=\"avatar\"/>\r\n        <result property=\"password\" column=\"password\"/>\r\n        <result property=\"status\" column=\"status\"/>\r\n        <result property=\"delFlag\" column=\"del_flag\"/>\r\n        <result property=\"loginIp\" column=\"login_ip\"/>\r\n        <result property=\"loginDate\" column=\"login_date\"/>\r\n        <result property=\"createBy\" column=\"create_by\"/>\r\n        <result property=\"idCard\" column=\"id_card\"/>\r\n        <result property=\"createTime\" column=\"create_time\"/>\r\n        <result property=\"updateBy\" column=\"update_by\"/>\r\n        <result property=\"deptCode\" column=\"dept_code\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"title\" column=\"title\"/>\r\n        <result property=\"birthday\" column=\"birthday\"/>\r\n        <result property=\"jobPhone\" column=\"job_phone\"/>\r\n        <result property=\"updateTime\" column=\"update_time\"/>\r\n        <result property=\"remark\" column=\"remark\"/>\r\n        <result property=\"userType\" column=\"user_type\"/>\r\n        <result property=\"searchscope\" column=\"searchscope\"/>\r\n        <result property=\"guid\" column=\"guid\"/>\r\n        <result property=\"orgid\" column=\"orgid\"/>\r\n        <association property=\"dept\" column=\"dept_id\" javaType=\"com.ruoyi.common.core.domain.entity.SysDept\"\r\n                     resultMap=\"deptResult\"/>\r\n        <collection property=\"roles\" javaType=\"java.util.List\" resultMap=\"RoleResult\"/>\r\n    </resultMap>\r\n\r\n    <resultMap id=\"deptResult\" type=\"com.ruoyi.common.core.domain.entity.SysDept\">\r\n        <id property=\"deptId\" column=\"dept_id\"/>\r\n        <result property=\"parentId\" column=\"parent_id\"/>\r\n        <result property=\"deptName\" column=\"dept_name\"/>\r\n        <result property=\"ancestors\" column=\"ancestors\"/>\r\n        <result property=\"orderNum\" column=\"order_num\"/>\r\n        <result property=\"leader\" column=\"leader\"/>\r\n        <result property=\"status\" column=\"dept_status\"/>\r\n    </resultMap>\r\n\r\n    <resultMap id=\"RoleResult\" type=\"com.ruoyi.common.core.domain.entity.SysRole\">\r\n        <id property=\"roleId\" column=\"role_id\"/>\r\n        <result property=\"roleName\" column=\"role_name\"/>\r\n        <result property=\"roleKey\" column=\"role_key\"/>\r\n        <result property=\"roleSort\" column=\"role_sort\"/>\r\n        <result property=\"dataScope\" column=\"data_scope\"/>\r\n        <result property=\"status\" column=\"role_status\"/>\r\n    </resultMap>\r\n\r\n    <sql id=\"selectUserVo\">\r\n        select u.user_id,\r\n               u.dept_id,\r\n               u.id_card,\r\n               u.hosp_info,\r\n               u.dept_info,\r\n               u.searchscope,\r\n               u.user_name,\r\n               u.user_type,\r\n               u.nick_name,\r\n               u.dept_code,\r\n               u.dept_name,\r\n               u.title,\r\n               u.his_user_id,\r\n               u.job_phone,\r\n               u.birthday,\r\n               u.email,\r\n               u.avatar,\r\n               u.phonenumber,\r\n               u.password,\r\n               u.sex,\r\n               u.status,\r\n               u.del_flag,\r\n               u.login_ip,\r\n               u.login_date,\r\n               u.create_by,\r\n               u.create_time,\r\n               u.remark,\r\n               u.guid,\r\n               u.orgid,\r\n               d.dept_id,\r\n               d.parent_id,\r\n               d.ancestors,\r\n               d.dept_name,\r\n               d.order_num,\r\n               d.leader,\r\n               d.status as dept_status,\r\n               r.role_id,\r\n               r.role_name,\r\n               r.role_key,\r\n               r.role_sort,\r\n               r.data_scope,\r\n               r.status as role_status\r\n        from sys_user u\r\n                 left join sys_dept d on u.dept_id = d.dept_id\r\n                 left join sys_user_role ur on u.user_id = ur.user_id\r\n                 left join sys_role r on r.role_id = ur.role_id\r\n    </sql>\r\n\r\n    <select id=\"selectUserList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\" resultMap=\"SysUserResult\">\r\n        select u.user_id,u.title,u.his_user_id,u.hosp_info,u.dept_info, u.searchscope, u.dept_id, u.user_type,\r\n        u.nick_name, u.user_name,\r\n        u.email,u.id_card,\r\n        u.avatar,\r\n        u.dept_name,\r\n        u.dept_code,\r\n        u.birthday,\r\n        u.job_phone,\r\n        u.phonenumber, u.sex, u.status,\r\n        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\r\n        u\r\n        left join sys_dept d on u.dept_id = d.dept_id\r\n        where u.del_flag = '0'\r\n        <if test=\"userId != null\">\r\n            AND u.user_id = #{userId}\r\n        </if>\r\n        <if test=\"orgid != null and orgid != ''\">\r\n            AND u.orgid = #{orgid}\r\n        </if>\r\n        <if test=\"userName != null and userName != ''\">\r\n            AND u.user_name like concat('%', #{userName}, '%')\r\n        </if>\r\n        <if test=\"nickName != null and nickName != ''\">\r\n            AND u.nick_name like concat('%', #{nickName}, '%')\r\n        </if>\r\n        <if test=\"status != null and status != ''\">\r\n            AND u.status = #{status}\r\n        </if>\r\n        <if test=\"idCard != null and idCard != ''\">\r\n            AND u.id_card = #{idCard}\r\n        </if>\r\n        <if test=\"title != null and title != ''\">\r\n            AND u.title = #{title}\r\n        </if>\r\n        <if test=\"jobPhone != null and jobPhone != ''\">\r\n            AND u.job_phone = #{jobPhone}\r\n        </if>\r\n        <if test=\"birthday != null and birthday != ''\">\r\n            AND u.birthday = #{birthday}\r\n        </if>\r\n        <if test=\"deptName != null and deptName != ''\">\r\n            AND u.dept_name = #{deptName}\r\n        </if>\r\n        <if test=\"deptCode != null and deptCode != ''\">\r\n            AND u.dept_code = #{deptCode}\r\n        </if>\r\n        <if test=\"hisUserId != null and hisUserId != ''\">\r\n            AND u.his_user_id = #{hisUserId}\r\n        </if>\r\n        <if test=\"phonenumber != null and phonenumber != ''\">\r\n            AND u.phonenumber like concat('%', #{phonenumber}, '%')\r\n        </if>\r\n        <if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 寮�濮嬫椂闂存绱� -->\r\n            AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')\r\n        </if>\r\n        <if test=\"params.endTime != null and params.endTime != ''\"><!-- 缁撴潫鏃堕棿妫�绱� -->\r\n            AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')\r\n        </if>\r\n        <if test=\"deptId != null and deptId != 0\">\r\n            AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId},\r\n            ancestors) ))\r\n        </if>\r\n        <!-- 鏁版嵁鑼冨洿杩囨护 -->\r\n        ${params.dataScope}\r\n    </select>\r\n\r\n    <select id=\"selectAllocatedList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\"\r\n            resultMap=\"SysUserResult\">\r\n        select distinct u.user_id,u.his_user_id,u.title,u.hosp_info,u.dept_info, u.searchscope, u.dept_id, u.user_name,\r\n        u.user_type,\r\n        u.nick_name,\r\n        u.email,\r\n        u.dept_code,\r\n        u.dept_name,\r\n        u.birthday,\r\n        u.job_phone,\r\n        u.phonenumber, u.status,u.id_card,\r\n        u.create_time\r\n        from sys_user u\r\n        left join sys_dept d on u.dept_id = d.dept_id\r\n        left join sys_user_role ur on u.user_id = ur.user_id\r\n        left join sys_role r on r.role_id = ur.role_id\r\n        where u.del_flag = '0' and r.role_id = #{roleId}\r\n        <if test=\"userName != null and userName != ''\">\r\n            AND u.user_name like concat('%', #{userName}, '%')\r\n        </if>\r\n        <if test=\"phonenumber != null and phonenumber != ''\">\r\n            AND u.phonenumber like concat('%', #{phonenumber}, '%')\r\n        </if>\r\n        <if test=\"title != null and title != ''\">\r\n            AND u.title = #{title}\r\n        </if>\r\n        <if test=\"hisUserId != null and hisUserId != ''\">\r\n            AND u.his_user_id = #{hisUserId}\r\n        </if>\r\n        <!-- 鏁版嵁鑼冨洿杩囨护 -->\r\n        ${params.dataScope}\r\n    </select>\r\n\r\n    <select id=\"selectUnallocatedList\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\"\r\n            resultMap=\"SysUserResult\">\r\n        select distinct u.user_id, u.dept_id, u.hosp_info, u.dept_info,u.searchscope, u.user_name, u.user_type,\r\n        u.nick_name,\r\n        u.email,\r\n        u.his_user_id,\r\n        u.title,\r\n        u.dept_code,\r\n        u.dept_name,\r\n        u.job_phone,\r\n        u.birthday,\r\n        u.phonenumber, u.status,u.id_card,\r\n        u.create_time\r\n        from sys_user u\r\n        left join sys_dept d on u.dept_id = d.dept_id\r\n        left join sys_user_role ur on u.user_id = ur.user_id\r\n        left join sys_role r on r.role_id = ur.role_id\r\n        where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)\r\n        and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and\r\n        ur.role_id = #{roleId})\r\n        <if test=\"userName != null and userName != ''\">\r\n            AND u.user_name like concat('%', #{userName}, '%')\r\n        </if>\r\n        <if test=\"phonenumber != null and phonenumber != ''\">\r\n            AND u.phonenumber like concat('%', #{phonenumber}, '%')\r\n        </if>\r\n        <!-- 鏁版嵁鑼冨洿杩囨护 -->\r\n        ${params.dataScope}\r\n    </select>\r\n\r\n    <select id=\"selectUserByUserName\" parameterType=\"String\" resultMap=\"SysUserResult\">\r\n        <include refid=\"selectUserVo\"/>\r\n        where u.user_name = #{userName} and u.del_flag = '0'\r\n    </select>\r\n\r\n    <select id=\"selectUserByUserNameByCondition\" parameterType=\"String\" resultMap=\"SysUserResult\">\r\n        <include refid=\"selectUserVo\"/>\r\n        <where>\r\n            u.del_flag = '0'\r\n            <if test=\"userName != null and userName != ''\">\r\n                AND u.user_name = #{userName}\r\n            </if>\r\n            <if test=\"orgid != null and orgid != ''\">\r\n                AND u.orgid = #{orgid}\r\n            </if>\r\n            <if test=\"deptId != null and deptId != ''\">\r\n                AND u.dept_id = #{deptId}\r\n            </if>\r\n        </where>\r\n    </select>\r\n\r\n    <select id=\"selectUserById\" parameterType=\"Long\" resultMap=\"SysUserResult\">\r\n        <include refid=\"selectUserVo\"/>\r\n        where u.user_id = #{userId}\r\n    </select>\r\n\r\n    <select id=\"checkUserNameUnique\" parameterType=\"String\" resultMap=\"SysUserResult\">\r\n        select user_id, user_name\r\n        from sys_user\r\n        where user_name = #{userName}\r\n          and del_flag = '0' limit 1\r\n    </select>\r\n\r\n    <select id=\"checkPhoneUnique\" parameterType=\"String\" resultMap=\"SysUserResult\">\r\n        select user_id, phonenumber\r\n        from sys_user\r\n        where phonenumber = #{phonenumber}\r\n          and del_flag = '0' limit 1\r\n    </select>\r\n\r\n    <select id=\"checkEmailUnique\" parameterType=\"String\" resultMap=\"SysUserResult\">\r\n        select user_id, email\r\n        from sys_user\r\n        where email = #{email}\r\n          and del_flag = '0' limit 1\r\n    </select>\r\n\r\n    <insert id=\"insertUser\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\" useGeneratedKeys=\"true\"\r\n            keyProperty=\"userId\">\r\n        insert into sys_user(\r\n        <if test=\"userId != null and userId != 0\">user_id,</if>\r\n        <if test=\"deptId != null and deptId != 0\">dept_id,</if>\r\n        <if test=\"userName != null and userName != ''\">user_name,</if>\r\n        <if test=\"nickName != null and nickName != ''\">nick_name,</if>\r\n        <if test=\"email != null and email != ''\">email,</if>\r\n        <if test=\"avatar != null and avatar != ''\">avatar,</if>\r\n        <if test=\"phonenumber != null and phonenumber != ''\">phonenumber,</if>\r\n        <if test=\"sex != null and sex != ''\">sex,</if>\r\n        <if test=\"password != null and password != ''\">password,</if>\r\n        <if test=\"status != null and status != ''\">status,</if>\r\n        <if test=\"createBy != null and createBy != ''\">create_by,</if>\r\n        <if test=\"remark != null and remark != ''\">remark,</if>\r\n        <if test=\"userType != null and userType != ''\">user_type,</if>\r\n        <if test=\"deptInfo != null and deptInfo != ''\">dept_info,</if>\r\n        <if test=\"hospInfo != null and hospInfo != ''\">hosp_info,</if>\r\n        <if test=\"searchscope != null and searchscope != ''\">searchscope,</if>\r\n        <if test=\"idCard != null and idCard != ''\">id_card,</if>\r\n        <if test=\"title != null and title != ''\">title,</if>\r\n        <if test=\"hisUserId != null and hisUserId != ''\">his_user_id,</if>\r\n        <if test=\"jobPhone != null and jobPhone != ''\">job_phone,</if>\r\n        <if test=\"birthday != null \">birthday,</if>\r\n        <if test=\"hisUserId != null and hisUserId != ''\">his_user_id,</if>\r\n        <if test=\"orgid != null and orgid != ''\">orgid,</if>\r\n        <if test=\"deptCode != null and deptCode != ''\">dept_code,</if>\r\n        <if test=\"deptName != null and deptName != ''\">dept_name,</if>\r\n        create_time\r\n        )values(\r\n        <if test=\"userId != null and userId != ''\">#{userId},</if>\r\n        <if test=\"deptId != null and deptId != ''\">#{deptId},</if>\r\n        <if test=\"userName != null and userName != ''\">#{userName},</if>\r\n        <if test=\"nickName != null and nickName != ''\">#{nickName},</if>\r\n        <if test=\"email != null and email != ''\">#{email},</if>\r\n        <if test=\"avatar != null and avatar != ''\">#{avatar},</if>\r\n        <if test=\"phonenumber != null and phonenumber != ''\">#{phonenumber},</if>\r\n        <if test=\"sex != null and sex != ''\">#{sex},</if>\r\n        <if test=\"password != null and password != ''\">#{password},</if>\r\n        <if test=\"status != null and status != ''\">#{status},</if>\r\n        <if test=\"createBy != null and createBy != ''\">#{createBy},</if>\r\n        <if test=\"remark != null and remark != ''\">#{remark},</if>\r\n        <if test=\"userType != null and userType != ''\">#{userType},</if>\r\n        <if test=\"deptInfo != null and deptInfo != ''\">#{deptInfo},</if>\r\n        <if test=\"hospInfo != null and hospInfo != ''\">#{hospInfo},</if>\r\n        <if test=\"searchscope != null and searchscope != ''\">#{searchscope},</if>\r\n        <if test=\"idCard != null and idCard != ''\">#{idCard},</if>\r\n        <if test=\"title != null and title != ''\">#{title},</if>\r\n        <if test=\"jobPhone != null and jobPhone != ''\">#{jobPhone},</if>\r\n        <if test=\"birthday != null and birthday != ''\">#{birthday},</if>\r\n        <if test=\"hisUserId != null and hisUserId != ''\">#{hisUserId},</if>\r\n        <if test=\"orgid != null and orgid != ''\">#{orgid},</if>\r\n        <if test=\"deptCode != null and deptCode != ''\">#{deptCode},</if>\r\n        <if test=\"deptName != null and deptName != ''\">#{deptName},</if>\r\n        sysdate()\r\n        )\r\n    </insert>\r\n\r\n    <update id=\"updateUser\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\">\r\n        update sys_user\r\n        <set>\r\n            <if test=\"deptId != null and deptId != 0\">dept_id = #{deptId},</if>\r\n            <if test=\"userName != null and userName != ''\">user_name = #{userName},</if>\r\n            <if test=\"nickName != null and nickName != ''\">nick_name = #{nickName},</if>\r\n            <if test=\"email != null \">email = #{email},</if>\r\n            <if test=\"phonenumber != null \">phonenumber = #{phonenumber},</if>\r\n            <if test=\"sex != null and sex != ''\">sex = #{sex},</if>\r\n            <if test=\"avatar != null and avatar != ''\">avatar = #{avatar},</if>\r\n            <if test=\"password != null and password != ''\">password = #{password},</if>\r\n            <if test=\"status != null and status != ''\">status = #{status},</if>\r\n            <if test=\"loginIp != null and loginIp != ''\">login_ip = #{loginIp},</if>\r\n            <if test=\"loginDate != null\">login_date = #{loginDate},</if>\r\n            <if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\r\n            <if test=\"remark != null\">remark = #{remark},</if>\r\n            <if test=\"userType != null\">user_type = #{userType},</if>\r\n            <if test=\"searchscope != null\">searchscope = #{searchscope},</if>\r\n            <if test=\"deptInfo != null and deptInfo != ''\">dept_info=#{deptInfo},</if>\r\n            <if test=\"hospInfo != null and hospInfo != ''\">hosp_info=#{hospInfo},</if>\r\n            <if test=\"idCard != null and idCard != ''\">id_card=#{idCard},</if>\r\n            <if test=\"jobPhone != null and jobPhone != ''\">job_phone=#{jobPhone},</if>\r\n            <if test=\"birthday != null \">birthday=#{birthday},</if>\r\n            <if test=\"orgid != null \">orgid=#{orgid},</if>\r\n            <if test=\"title != null and title != ''\">\r\n                title = #{title},\r\n            </if>\r\n            <if test=\"hisUserId != null and hisUserId != ''\">\r\n                his_user_id = #{hisUserId},\r\n            </if>\r\n            <if test=\"deptCode != null and deptCode != ''\">dept_code=#{deptCode},</if>\r\n            <if test=\"deptName != null and deptName != ''\">dept_name=#{deptName},</if>\r\n            update_time = sysdate()\r\n        </set>\r\n        where user_id = #{userId}\r\n    </update>\r\n\r\n    <update id=\"updateUserStatus\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\">\r\n        update sys_user\r\n        set status = #{status}\r\n        where user_id = #{userId}\r\n    </update>\r\n\r\n    <update id=\"updateUserAvatar\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\">\r\n        update sys_user\r\n        set avatar = #{avatar}\r\n        where user_name = #{userName}\r\n    </update>\r\n\r\n    <update id=\"resetUserPwd\" parameterType=\"com.ruoyi.common.core.domain.entity.SysUser\">\r\n        update sys_user\r\n        set password = #{password}\r\n        where user_name = #{userName}\r\n    </update>\r\n\r\n    <delete id=\"deleteUserById\" parameterType=\"Long\">\r\n        update sys_user\r\n        set del_flag = '2'\r\n        where user_id = #{userId}\r\n    </delete>\r\n\r\n    <delete id=\"deleteUserByIds\" parameterType=\"Long\">\r\n        update sys_user set del_flag = '2' where user_id in\r\n        <foreach collection=\"array\" item=\"userId\" open=\"(\" separator=\",\" close=\")\">\r\n            #{userId}\r\n        </foreach>\r\n    </delete>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
---- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml	(date 1758798203297)
-@@ -119,9 +119,9 @@
-         u.birthday,
-         u.job_phone,
-         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.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name from sys_user
-         u
--        left join sys_dept d on u.dept_id = d.dept_id
-+        left join sys_user_dept d on u.user_id = d.user_id
-         where u.del_flag = '0'
-         <if test="userId != null">
-             AND u.user_id = #{userId}
-@@ -401,12 +401,12 @@
- 
-     <delete id="deleteUserById" parameterType="Long">
-         update sys_user
--        set del_flag = '2'
-+        set del_flag = '1'
-         where user_id = #{userId}
-     </delete>
- 
-     <delete id="deleteUserByIds" parameterType="Long">
--        update sys_user set del_flag = '2' where user_id in
-+        update sys_user set del_flag = '1' where user_id in
-         <foreach collection="array" item="userId" open="(" separator="," close=")">
-             #{userId}
-         </foreach>
-Index: smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.ArrayList;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\n/**\r\n * 闅忚浠诲姟妯$増闂璇濇湳搴撳璞� ivr_task_template_script\r\n *\r\n * @author ruoyi\r\n * @date 2024-05-13\r\n */\r\n@Data\r\n@ApiModel(value = \"IvrTaskTemplateScriptVO\", description = \"闅忚浠诲姟妯$増闂璇濇湳搴撳璞")\r\npublic class IvrTaskTemplateScriptVO extends BaseEntity {\r\n\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 涓婚敭ID\r\n     */\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 鍒嗘暟\r\n     */\r\n    @Excel(name = \"鍒嗘暟\")\r\n    @ApiModelProperty(value = \"鍒嗘暟\")\r\n    private BigDecimal score;\r\n\r\n    /**\r\n     * 浠诲姟id\r\n     */\r\n    @Excel(name = \"浠诲姟id\")\r\n    @ApiModelProperty(value = \"浠诲姟id\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 妯℃澘璇濇湳缂栧彿\r\n     */\r\n    @Excel(name = \"妯℃澘璇濇湳缂栧彿\")\r\n    @ApiModelProperty(value = \"妯℃澘璇濇湳缂栧彿\")\r\n    private Long scriptno;\r\n\r\n\r\n    /**\r\n     * 閫傜敤棰樺瀷锛�1.鍗曢�� 2澶氶�� 3濉┖ 4鍏跺畠锛塡r\n     */\r\n    @Excel(name = \"閫傜敤棰樺瀷锛�1.鍗曢�� 2澶氶�� 3濉┖ 4鍏跺畠锛塡")\r\n    @ApiModelProperty(value = \"閫傜敤棰樺瀷锛�1.鍗曢�� 2澶氶�� 3闂瓟 4濉┖  5鍏跺畠锛塡")\r\n    private String scriptType;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"妯℃澘ID\")\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private Long templateID;\r\n\r\n    /**\r\n     * 璇濇湳ID\r\n     */\r\n    @Excel(name = \"璇濇湳ID\")\r\n    @ApiModelProperty(value = \"璇濇湳ID\")\r\n    private Long scriptID;\r\n\r\n    /**\r\n     * 闂鐐筡r\n     */\r\n    @Excel(name = \"闂鐐筡")\r\n    @ApiModelProperty(value = \"闂鐐筡")\r\n    private String questionPoint;\r\n\r\n    /**\r\n     * 璇濇湳鍐呭\r\n     */\r\n    @Excel(name = \"璇濇湳鍐呭\")\r\n    @ApiModelProperty(value = \"璇濇湳鍐呭\")\r\n    private String scriptContent;\r\n\r\n    /**\r\n     * 璇濇湳璇煶\r\n     */\r\n    @Excel(name = \"璇濇湳璇煶\")\r\n    @ApiModelProperty(value = \"璇濇湳璇煶\")\r\n    private String scriptVoice;\r\n\r\n    /**\r\n     * 鏃犲尮閰嶈瘽鏈痋r\n     */\r\n    @Excel(name = \"鏃犲尮閰嶈瘽鏈痋")\r\n    @ApiModelProperty(value = \"鏃犲尮閰嶈瘽鏈痋")\r\n    private String noMatchText;\r\n\r\n    /**\r\n     * 鏃犲尮閰嶈瘽鏈闊砛r\n     */\r\n    @Excel(name = \"鏃犲尮閰嶈瘽鏈闊砛")\r\n    @ApiModelProperty(value = \"鏃犲尮閰嶈瘽鏈闊砛")\r\n    private String noMatchVoice;\r\n\r\n    /**\r\n     * 闈欓粯璇濇湳\r\n     */\r\n    @Excel(name = \"闈欓粯璇濇湳\")\r\n    @ApiModelProperty(value = \"闈欓粯璇濇湳\")\r\n    private String slienceText;\r\n\r\n    /**\r\n     * 闈欓粯璇濇湳璇煶\r\n     */\r\n    @Excel(name = \"闈欓粯璇濇湳璇煶\")\r\n    @ApiModelProperty(value = \"闈欓粯璇濇湳璇煶\")\r\n    private String slienceVoice;\r\n\r\n    /**\r\n     * 閫氱敤搴撳尮閰嶅悗璇濇湳\r\n     */\r\n    @Excel(name = \"閫氱敤搴撳尮閰嶅悗璇濇湳\")\r\n    @ApiModelProperty(value = \"閫氱敤搴撳尮閰嶅悗璇濇湳\")\r\n    private String submoduleText;\r\n\r\n    /**\r\n     * 閫氱敤搴撳尮閰嶅悗璇濇湳璇煶\r\n     */\r\n    @Excel(name = \"閫氱敤搴撳尮閰嶅悗璇濇湳璇煶\")\r\n    @ApiModelProperty(value = \"閫氱敤搴撳尮閰嶅悗璇濇湳璇煶\")\r\n    private String submoduleVoice;\r\n\r\n    /**\r\n     * 鍚笉娓呰瘽鏈痋r\n     */\r\n    @Excel(name = \"鍚笉娓呰瘽鏈痋")\r\n    @ApiModelProperty(value = \"鍚笉娓呰瘽鏈痋")\r\n    private String noClearlyText;\r\n\r\n    /**\r\n     * 鍚笉娓呰瘽鏈闊砛r\n     */\r\n    @Excel(name = \"鍚笉娓呰瘽鏈闊砛")\r\n    @ApiModelProperty(value = \"鍚笉娓呰瘽鏈闊砛")\r\n    private String noClearlyVoice;\r\n\r\n    /**\r\n     * 缁勫埆\r\n     */\r\n    @Excel(name = \"缁勫埆\")\r\n    @ApiModelProperty(value = \"缁勫埆\")\r\n    private String groupName;\r\n\r\n    /**\r\n     * 绫诲埆鍚峔r\n     */\r\n    @Excel(name = \"绫诲埆鍚峔")\r\n    @ApiModelProperty(value = \"绫诲埆鍚峔")\r\n    private String categoryName;\r\n\r\n    /**\r\n     * 鎸囨爣閫夐」\r\n     */\r\n    @Excel(name = \"鎸囨爣閫夐」\")\r\n    @ApiModelProperty(value = \"鎸囨爣閫夐」\")\r\n    private String targetOptions;\r\n\r\n    /**\r\n     * 璇濇湳璇煶鏂囨湰\r\n     */\r\n    @Excel(name = \"璇濇湳璇煶鏂囨湰\")\r\n    @ApiModelProperty(value = \"璇濇湳璇煶鏂囨湰\")\r\n    private String ivrtext;\r\n\r\n    /**\r\n     * 璇█\r\n     */\r\n    @Excel(name = \"璇█\")\r\n    @ApiModelProperty(value = \"璇█\")\r\n    private String language;\r\n\r\n    /**\r\n     * 鍙兘鎾斁WAV绫诲瀷\r\n     */\r\n    @Excel(name = \"鍙兘鎾斁WAV绫诲瀷\")\r\n    @ApiModelProperty(value = \"鍙兘鎾斁WAV绫诲瀷\")\r\n    private Long playWavOnly;\r\n\r\n    /**\r\n     * 鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級\r\n     */\r\n    @Excel(name = \"鍊肩被鍨媆", readConverterExp = \"鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級\")\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private Long valueType;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @Excel(name = \"鐖禝D\")\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private Long pid;\r\n\r\n    /**\r\n     * GUID\r\n     */\r\n    @Excel(name = \"GUID\")\r\n    @ApiModelProperty(value = \"GUID\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 鍩虹鎸囨爣绫诲瀷\r\n     */\r\n    @Excel(name = \"鍩虹鎸囨爣绫诲瀷\")\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣绫诲瀷\")\r\n    private String targettype;\r\n\r\n    /**\r\n     * 鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)\r\n     */\r\n    @Excel(name = \"鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)\")\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣ID(鏆傛椂褰撳簭鍙穒d)\")\r\n    private Long targetid;\r\n\r\n    /**\r\n     * 鍩虹鎸囨爣鍊糪r\n     */\r\n    @Excel(name = \"鍩虹鎸囨爣鍊糪")\r\n    @ApiModelProperty(value = \"鍩虹鎸囨爣鍊糪")\r\n    private String targetvalue;\r\n\r\n    /**\r\n     * 鏍囬\r\n     */\r\n    @Excel(name = \"鏍囬\")\r\n    @ApiModelProperty(value = \"鏍囬\")\r\n    private String scriptTopic;\r\n\r\n    /**\r\n     * 涓嬩竴棰榎r\n     */\r\n    @Excel(name = \"涓嬩竴棰榎")\r\n    @ApiModelProperty(value = \"涓嬩竴棰榎")\r\n    private Long nextScriptno;\r\n\r\n    /**\r\n     * 鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級\r\n     */\r\n    @Excel(name = \"鍏跺畠鏁版嵁\", readConverterExp = \"瀛�=鍌ㄥ彉閲廫")\r\n    @ApiModelProperty(value = \"鍏跺畠鏁版嵁锛堝瓨鍌ㄥ彉閲忥級\")\r\n    private String otherdata;\r\n\r\n    /**\r\n     * 鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛塡r\n     */\r\n    @Excel(name = \"鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    \", readConverterExp = \"缁�=浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧\")\r\n    @ApiModelProperty(value = \"鏄惁蹇呭~,1:蹇呭~    2锛氬彲浠ヤ笉濉�    锛堢粰浜哄伐鐢ㄧ殑锛孉I涓嶇敤閬靛畧锛塡")\r\n    private String isMust;\r\n\r\n    /**\r\n     * 闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級\r\n     */\r\n    @Excel(name = \"闂缁撴灉\", readConverterExp = \"缁�=鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨刓")\r\n    @ApiModelProperty(value = \"闂缁撴灉锛堢粰鈥滃�肩被鍨嬧�濇槸鏂囨湰鎴栬�呮暟鍊肩敤鐨勶級\")\r\n    private String questionResult;\r\n\r\n    @ApiModelProperty(value = \"閫氱敤搴撳尮閰嶅埌鐨勮瘽鏈痋")\r\n    private String extemplateText;\r\n\r\n    /**\r\n     * 鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁瀛樺湪鎿嶄綔锛�1 鏂板 2淇敼 3鍒犻櫎\")\r\n    private Integer isoperation;\r\n\r\n    /**\r\n     * 閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\r\n     */\r\n    @Excel(name = \"閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\")\r\n    @ApiModelProperty(value = \"閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)\")\r\n    private String branchFlag;\r\n\r\n    /**\r\n     * 搴忓彿\r\n     */\r\n    @ApiModelProperty(value = \"搴忓彿\")\r\n    private Integer sort;\r\n\r\n    /**\r\n     * 璇濇湳閫夐」\r\n     */\r\n    @ApiModelProperty(value = \"璇濇湳閫夐」\")\r\n    private List<IvrTaskTemplateTargetoption> ivrTaskScriptTargetoptionList = new ArrayList<>();\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java
---- a/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/IvrTaskTemplateScriptVO.java	(date 1758798203306)
-@@ -319,6 +319,12 @@
-     @ApiModelProperty(value = "搴忓彿")
-     private Integer sort;
- 
-+    /**
-+     * 寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊
-+     */
-+    @ApiModelProperty(value = "寮傚父棰勮锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊")
-+    private Long isabnormal;
-+
-     /**
-      * 璇濇湳閫夐」
-      */
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.system;\r\n\r\nimport java.util.List;\r\nimport javax.servlet.http.HttpServletResponse;\r\n\r\nimport com.ruoyi.common.core.domain.entity.SysUserRole;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.validation.annotation.Validated;\r\nimport org.springframework.web.bind.annotation.GetMapping;\r\nimport org.springframework.web.bind.annotation.PathVariable;\r\nimport org.springframework.web.bind.annotation.PostMapping;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RestController;\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.constant.UserConstants;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysDept;\r\nimport com.ruoyi.common.core.domain.entity.SysRole;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.domain.model.LoginUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.ruoyi.framework.web.service.SysPermissionService;\r\nimport com.ruoyi.framework.web.service.TokenService;\r\nimport com.ruoyi.system.service.ISysDeptService;\r\nimport com.ruoyi.system.service.ISysRoleService;\r\nimport com.ruoyi.system.service.ISysUserService;\r\n\r\n/**\r\n * 瑙掕壊淇℃伅\r\n *\r\n * @author ruoyi\r\n */\r\n@RestController\r\n@RequestMapping(\"/system/role\")\r\npublic class SysRoleController extends BaseController {\r\n    @Autowired\r\n    private ISysRoleService roleService;\r\n\r\n    @Autowired\r\n    private TokenService tokenService;\r\n\r\n    @Autowired\r\n    private SysPermissionService permissionService;\r\n\r\n    @Autowired\r\n    private ISysUserService userService;\r\n\r\n    @Autowired\r\n    private ISysDeptService deptService;\r\n    \r\n    @Value(\"${isAdmin}\")\r\n    private List<Long> isAdmin;\r\n\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:list')\")\r\n    @GetMapping(\"/list\")\r\n    public TableDataInfo list(SysRole role) {\r\n        startPage();\r\n        List<SysRole> list = roleService.selectRoleList(role);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.EXPORT)\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:export')\")\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, SysRole role) {\r\n        List<SysRole> list = roleService.selectRoleList(role);\r\n        ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);\r\n        util.exportExcel(response, list, \"瑙掕壊鏁版嵁\");\r\n    }\r\n\r\n    /**\r\n     * 鏍规嵁瑙掕壊缂栧彿鑾峰彇璇︾粏淇℃伅\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:query')\")\r\n    @GetMapping(value = \"/{roleId}\")\r\n    public AjaxResult getInfo(@PathVariable Long roleId) {\r\n        roleService.checkRoleDataScope(roleId);\r\n        return success(roleService.selectRoleById(roleId));\r\n    }\r\n\r\n    /**\r\n     * 鏂板瑙掕壊\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:add')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@Validated @RequestBody SysRole role) {\r\n        role.setOrgid(getLoginUser().getUser().getOrgid());\r\n        if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) {\r\n            return error(\"鏂板瑙掕壊'\" + role.getRoleName() + \"'澶辫触锛岃鑹插悕绉板凡瀛樺湪\");\r\n        } else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) {\r\n            return error(\"鏂板瑙掕壊'\" + role.getRoleName() + \"'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪\");\r\n        }\r\n        role.setCreateBy(getUsername());\r\n        return toAjax(roleService.insertRole(role));\r\n\r\n    }\r\n\r\n    /**\r\n     * 淇敼淇濆瓨瑙掕壊\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/edit\")\r\n    public AjaxResult edit(@Validated @RequestBody SysRole role) {\r\n        role.setOrgid(getLoginUser().getUser().getOrgid());\r\n        roleService.checkRoleAllowed(role);\r\n        roleService.checkRoleDataScope(role.getRoleId());\r\n        if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) {\r\n            return error(\"淇敼瑙掕壊'\" + role.getRoleName() + \"'澶辫触锛岃鑹插悕绉板凡瀛樺湪\");\r\n        } else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) {\r\n            return error(\"淇敼瑙掕壊'\" + role.getRoleName() + \"'澶辫触锛岃鑹叉潈闄愬凡瀛樺湪\");\r\n        }\r\n        role.setUpdateBy(getUsername());\r\n\r\n        if (roleService.updateRole(role) > 0) {\r\n            // 鏇存柊缂撳瓨鐢ㄦ埛鏉冮檺\r\n            LoginUser loginUser = getLoginUser();\r\n            if (StringUtils.isNotNull(loginUser.getUser()) && !isAdmin.contains(loginUser.getUser().getUserId())) {\r\n                loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));\r\n                loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));\r\n                tokenService.setLoginUser(loginUser);\r\n            }\r\n            return success();\r\n        }\r\n        return error(\"淇敼瑙掕壊'\" + role.getRoleName() + \"'澶辫触锛岃鑱旂郴绠$悊鍛榎");\r\n    }\r\n\r\n    /**\r\n     * 淇敼淇濆瓨鏁版嵁鏉冮檺\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/dataScope\")\r\n    public AjaxResult dataScope(@RequestBody SysRole role) {\r\n        roleService.checkRoleAllowed(role);\r\n        roleService.checkRoleDataScope(role.getRoleId());\r\n        return toAjax(roleService.authDataScope(role));\r\n    }\r\n\r\n    /**\r\n     * 鐘舵�佷慨鏀筡r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/changeStatus\")\r\n    public AjaxResult changeStatus(@RequestBody SysRole role) {\r\n        roleService.checkRoleAllowed(role);\r\n        roleService.checkRoleDataScope(role.getRoleId());\r\n        role.setUpdateBy(getUsername());\r\n        return toAjax(roleService.updateRoleStatus(role));\r\n    }\r\n\r\n    /**\r\n     * 鍒犻櫎瑙掕壊\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:remove')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.DELETE)\r\n    @GetMapping(\"/remove/{roleIds}\")\r\n    public AjaxResult remove(@PathVariable Long[] roleIds) {\r\n        return toAjax(roleService.deleteRoleByIds(roleIds));\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇瑙掕壊閫夋嫨妗嗗垪琛╘r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:query')\")\r\n    @GetMapping(\"/optionselect\")\r\n    public AjaxResult optionselect() {\r\n        return success(roleService.selectRoleAll());\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ宸插垎閰嶇敤鎴疯鑹插垪琛╘r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:list')\")\r\n    @GetMapping(\"/authUser/allocatedList\")\r\n    public TableDataInfo allocatedList(SysUser user) {\r\n        startPage();\r\n        List<SysUser> list = userService.selectAllocatedList(user);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    /**\r\n     * 鏌ヨ鏈垎閰嶇敤鎴疯鑹插垪琛╘r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:list')\")\r\n    @GetMapping(\"/authUser/unallocatedList\")\r\n    public TableDataInfo unallocatedList(SysUser user) {\r\n        startPage();\r\n        List<SysUser> list = userService.selectUnallocatedList(user);\r\n        return getDataTable(list);\r\n    }\r\n\r\n    /**\r\n     * 鍙栨秷鎺堟潈鐢ㄦ埛\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.GRANT)\r\n    @PostMapping(\"/authUser/cancel\")\r\n    public AjaxResult cancelAuthUser(@RequestBody SysUserRole userRole) {\r\n        return toAjax(roleService.deleteAuthUser(userRole));\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺鍙栨秷鎺堟潈鐢ㄦ埛\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.GRANT)\r\n    @PostMapping(\"/authUser/cancelAll\")\r\n    public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) {\r\n        return toAjax(roleService.deleteAuthUsers(roleId, userIds));\r\n    }\r\n\r\n    /**\r\n     * 鎵归噺閫夋嫨鐢ㄦ埛鎺堟潈\r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:edit')\")\r\n    @Log(title = \"瑙掕壊绠$悊\", businessType = BusinessType.GRANT)\r\n    @PostMapping(\"/authUser/selectAll\")\r\n    public AjaxResult selectAuthUserAll(Long roleId, Long[] userIds) {\r\n        roleService.checkRoleDataScope(roleId);\r\n        return toAjax(roleService.insertAuthUsers(roleId, userIds));\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇瀵瑰簲瑙掕壊閮ㄩ棬鏍戝垪琛╘r\n     */\r\n    //@PreAuthorize(\"@ss.hasPermi('system:role:query')\")\r\n    @GetMapping(value = \"/deptTree/{roleId}\")\r\n    public AjaxResult deptTree(@PathVariable(\"roleId\") Long roleId) {\r\n        AjaxResult ajax = AjaxResult.success();\r\n        ajax.put(\"checkedKeys\", deptService.selectDeptListByRoleId(roleId));\r\n        ajax.put(\"depts\", deptService.selectDeptTreeList(new SysDept()));\r\n        return ajax;\r\n    }\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java	(date 1758798203320)
-@@ -4,6 +4,7 @@
- import javax.servlet.http.HttpServletResponse;
- 
- import com.ruoyi.common.core.domain.entity.SysUserRole;
-+import com.ruoyi.common.utils.SecurityUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.validation.annotation.Validated;
-@@ -53,7 +54,7 @@
- 
-     @Autowired
-     private ISysDeptService deptService;
--    
-+
-     @Value("${isAdmin}")
-     private List<Long> isAdmin;
- 
-@@ -61,6 +62,8 @@
-     @GetMapping("/list")
-     public TableDataInfo list(SysRole role) {
-         startPage();
-+        SysUser user = SecurityUtils.getLoginUser().getUser();
-+        role.setOrgid(user.getOrgid());
-         List<SysRole> list = roleService.selectRoleList(role);
-         return getDataTable(list);
-     }
-Index: ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+><?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n<!DOCTYPE mapper\r\nPUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"\r\n\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n<mapper namespace=\"com.ruoyi.system.mapper.SysRoleMapper\">\r\n\r\n\t<resultMap type=\"SysRole\" id=\"SysRoleResult\">\r\n\t\t<id     property=\"roleId\"             column=\"role_id\"               />\r\n\t\t<result property=\"roleName\"           column=\"role_name\"             />\r\n\t\t<result property=\"roleKey\"            column=\"role_key\"              />\r\n\t\t<result property=\"roleSort\"           column=\"role_sort\"             />\r\n\t\t<result property=\"dataScope\"          column=\"data_scope\"            />\r\n\t\t<result property=\"menuCheckStrictly\"  column=\"menu_check_strictly\"   />\r\n\t\t<result property=\"deptCheckStrictly\"  column=\"dept_check_strictly\"   />\r\n\t\t<result property=\"status\"             column=\"status\"                />\r\n\t\t<result property=\"delFlag\"            column=\"del_flag\"              />\r\n\t\t<result property=\"createBy\"           column=\"create_by\"             />\r\n\t\t<result property=\"createTime\"         column=\"create_time\"           />\r\n\t\t<result property=\"updateBy\"           column=\"update_by\"             />\r\n\t\t<result property=\"updateTime\"         column=\"update_time\"           />\r\n\t\t<result property=\"remark\"             column=\"remark\"                />\r\n\t\t<result property=\"guid\"             column=\"guid\"                />\r\n\t\t<result property=\"orgid\"             column=\"orgid\"                />\r\n\t</resultMap>\r\n\r\n\t<sql id=\"selectRoleVo\">\r\n\t    select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,\r\n            r.status, r.del_flag, r.create_time, r.remark , r.guid, r.orgid\r\n        from sys_role r\r\n\t        left join sys_user_role ur on ur.role_id = r.role_id\r\n\t        left join sys_user u on u.user_id = ur.user_id\r\n\t        left join sys_dept d on u.dept_id = d.dept_id\r\n    </sql>\r\n\r\n    <select id=\"selectRoleList\" parameterType=\"SysRole\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\twhere r.del_flag = '0'\r\n\t\t<if test=\"roleId != null and roleId != 0\">\r\n\t\t\tAND r.role_id = #{roleId}\r\n\t\t</if>\r\n\t\t<if test=\"roleName != null and roleName != ''\">\r\n\t\t\tAND r.role_name like concat('%', #{roleName}, '%')\r\n\t\t</if>\r\n\t\t<if test=\"status != null and status != ''\">\r\n\t\t\tAND r.status = #{status}\r\n\t\t</if>\r\n\t\t<if test=\"roleKey != null and roleKey != ''\">\r\n\t\t\tAND r.role_key like concat('%', #{roleKey}, '%')\r\n\t\t</if>\r\n\t\t<if test=\"params.beginTime != null and params.beginTime != ''\"><!-- 寮�濮嬫椂闂存绱� -->\r\n\t\t\tand date_format(r.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')\r\n\t\t</if>\r\n\t\t<if test=\"params.endTime != null and params.endTime != ''\"><!-- 缁撴潫鏃堕棿妫�绱� -->\r\n\t\t\tand date_format(r.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')\r\n\t\t</if>\r\n\t\t<!-- 鏁版嵁鑼冨洿杩囨护 -->\r\n\t\t${params.dataScope}\r\n\t\torder by r.role_sort\r\n\t</select>\r\n\r\n\t<select id=\"selectRolePermissionByUserId\" parameterType=\"Long\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\tWHERE r.del_flag = '0' and ur.user_id = #{userId}\r\n\t</select>\r\n\r\n\t<select id=\"selectRoleAll\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t</select>\r\n\r\n\t<select id=\"selectRoleListByUserId\" parameterType=\"Long\" resultType=\"Long\">\r\n\t\tselect r.role_id\r\n        from sys_role r\r\n\t        left join sys_user_role ur on ur.role_id = r.role_id\r\n\t        left join sys_user u on u.user_id = ur.user_id\r\n\t    where u.user_id = #{userId}\r\n\t</select>\r\n\r\n\t<select id=\"selectRoleById\" parameterType=\"Long\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\twhere r.role_id = #{roleId}\r\n\t</select>\r\n\r\n\t<select id=\"selectRolesByUserName\" parameterType=\"String\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\tWHERE r.del_flag = '0' and u.user_name = #{userName}\r\n\t</select>\r\n\r\n\t<select id=\"checkRoleNameUnique\" parameterType=\"String\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\t where r.role_name=#{roleName} and r.del_flag = '0' limit 1\r\n\t</select>\r\n\r\n\t<select id=\"checkRoleKeyUnique\" parameterType=\"String\" resultMap=\"SysRoleResult\">\r\n\t\t<include refid=\"selectRoleVo\"/>\r\n\t\t where r.role_key=#{roleKey} and r.del_flag = '0' limit 1\r\n\t</select>\r\n\r\n \t<insert id=\"insertRole\" parameterType=\"SysRole\" useGeneratedKeys=\"true\" keyProperty=\"roleId\">\r\n \t\tinsert into sys_role(\r\n \t\t\t<if test=\"roleId != null and roleId != 0\">role_id,</if>\r\n \t\t\t<if test=\"roleName != null and roleName != ''\">role_name,</if>\r\n \t\t\t<if test=\"roleKey != null and roleKey != ''\">role_key,</if>\r\n \t\t\t<if test=\"roleSort != null\">role_sort,</if>\r\n \t\t\t<if test=\"dataScope != null and dataScope != ''\">data_scope,</if>\r\n \t\t\t<if test=\"menuCheckStrictly != null\">menu_check_strictly,</if>\r\n \t\t\t<if test=\"deptCheckStrictly != null\">dept_check_strictly,</if>\r\n \t\t\t<if test=\"status != null and status != ''\">status,</if>\r\n \t\t\t<if test=\"remark != null and remark != ''\">remark,</if>\r\n \t\t\t<if test=\"createBy != null and createBy != ''\">create_by,</if>\r\n \t\t\t<if test=\"guid != null and guid != ''\">guid,</if>\r\n \t\t\t<if test=\"orgid != null and orgid != ''\">orgid,</if>\r\n \t\t\tcreate_time\r\n \t\t)values(\r\n \t\t\t<if test=\"roleId != null and roleId != 0\">#{roleId},</if>\r\n \t\t\t<if test=\"roleName != null and roleName != ''\">#{roleName},</if>\r\n \t\t\t<if test=\"roleKey != null and roleKey != ''\">#{roleKey},</if>\r\n \t\t\t<if test=\"roleSort != null\">#{roleSort},</if>\r\n \t\t\t<if test=\"dataScope != null and dataScope != ''\">#{dataScope},</if>\r\n \t\t\t<if test=\"menuCheckStrictly != null\">#{menuCheckStrictly},</if>\r\n \t\t\t<if test=\"deptCheckStrictly != null\">#{deptCheckStrictly},</if>\r\n \t\t\t<if test=\"status != null and status != ''\">#{status},</if>\r\n \t\t\t<if test=\"remark != null and remark != ''\">#{remark},</if>\r\n \t\t\t<if test=\"createBy != null and createBy != ''\">#{createBy},</if>\r\n \t\t\t<if test=\"guid != null and guid != ''\">#{guid},</if>\r\n \t\t\t<if test=\"orgid != null and orgid != ''\">#{orgid},</if>\r\n \t\t\tsysdate()\r\n \t\t)\r\n\t</insert>\r\n\r\n\t<update id=\"updateRole\" parameterType=\"SysRole\">\r\n \t\tupdate sys_role\r\n \t\t<set>\r\n \t\t\t<if test=\"roleName != null and roleName != ''\">role_name = #{roleName},</if>\r\n \t\t\t<if test=\"roleKey != null and roleKey != ''\">role_key = #{roleKey},</if>\r\n \t\t\t<if test=\"roleSort != null\">role_sort = #{roleSort},</if>\r\n \t\t\t<if test=\"dataScope != null and dataScope != ''\">data_scope = #{dataScope},</if>\r\n \t\t\t<if test=\"menuCheckStrictly != null\">menu_check_strictly = #{menuCheckStrictly},</if>\r\n \t\t\t<if test=\"deptCheckStrictly != null\">dept_check_strictly = #{deptCheckStrictly},</if>\r\n \t\t\t<if test=\"status != null and status != ''\">status = #{status},</if>\r\n \t\t\t<if test=\"remark != null\">remark = #{remark},</if>\r\n \t\t\t<if test=\"updateBy != null and updateBy != ''\">update_by = #{updateBy},</if>\r\n \t\t\t<if test=\"guid != null and guid != ''\">guid = #{guid},</if>\r\n \t\t\t<if test=\"orgid != null and orgid != ''\">orgid = #{orgid},</if>\r\n \t\t\tupdate_time = sysdate()\r\n \t\t</set>\r\n \t\twhere role_id = #{roleId}\r\n\t</update>\r\n\r\n\t<delete id=\"deleteRoleById\" parameterType=\"Long\">\r\n \t\tupdate sys_role set del_flag = '2' where role_id = #{roleId}\r\n \t</delete>\r\n\r\n \t<delete id=\"deleteRoleByIds\" parameterType=\"Long\">\r\n \t    update sys_role set del_flag = '2' where role_id in\r\n \t\t<foreach collection=\"array\" item=\"roleId\" open=\"(\" separator=\",\" close=\")\">\r\n \t\t\t#{roleId}\r\n        </foreach>\r\n \t</delete>\r\n\r\n</mapper>\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml
---- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml	(date 1758798203334)
-@@ -1,160 +1,176 @@
- <?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.ruoyi.system.mapper.SysRoleMapper">
- 
--	<resultMap type="SysRole" id="SysRoleResult">
--		<id     property="roleId"             column="role_id"               />
--		<result property="roleName"           column="role_name"             />
--		<result property="roleKey"            column="role_key"              />
--		<result property="roleSort"           column="role_sort"             />
--		<result property="dataScope"          column="data_scope"            />
--		<result property="menuCheckStrictly"  column="menu_check_strictly"   />
--		<result property="deptCheckStrictly"  column="dept_check_strictly"   />
--		<result property="status"             column="status"                />
--		<result property="delFlag"            column="del_flag"              />
--		<result property="createBy"           column="create_by"             />
--		<result property="createTime"         column="create_time"           />
--		<result property="updateBy"           column="update_by"             />
--		<result property="updateTime"         column="update_time"           />
--		<result property="remark"             column="remark"                />
--		<result property="guid"             column="guid"                />
--		<result property="orgid"             column="orgid"                />
--	</resultMap>
-+    <resultMap type="SysRole" id="SysRoleResult">
-+        <id property="roleId" column="role_id"/>
-+        <result property="roleName" column="role_name"/>
-+        <result property="roleKey" column="role_key"/>
-+        <result property="roleSort" column="role_sort"/>
-+        <result property="dataScope" column="data_scope"/>
-+        <result property="menuCheckStrictly" column="menu_check_strictly"/>
-+        <result property="deptCheckStrictly" column="dept_check_strictly"/>
-+        <result property="status" column="status"/>
-+        <result property="delFlag" column="del_flag"/>
-+        <result property="createBy" column="create_by"/>
-+        <result property="createTime" column="create_time"/>
-+        <result property="updateBy" column="update_by"/>
-+        <result property="updateTime" column="update_time"/>
-+        <result property="remark" column="remark"/>
-+        <result property="guid" column="guid"/>
-+        <result property="orgid" column="orgid"/>
-+    </resultMap>
- 
--	<sql id="selectRoleVo">
--	    select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,
--            r.status, r.del_flag, r.create_time, r.remark , r.guid, r.orgid
-+    <sql id="selectRoleVo">
-+        select distinct r.role_id,
-+                        r.role_name,
-+                        r.role_key,
-+                        r.role_sort,
-+                        r.data_scope,
-+                        r.menu_check_strictly,
-+                        r.dept_check_strictly,
-+                        r.status,
-+                        r.del_flag,
-+                        r.create_time,
-+                        r.remark,
-+                        r.guid,
-+                        r.orgid
-         from sys_role r
--	        left join sys_user_role ur on ur.role_id = r.role_id
--	        left join sys_user u on u.user_id = ur.user_id
--	        left join sys_dept d on u.dept_id = d.dept_id
-+                 left join sys_user_role ur on ur.role_id = r.role_id
-+                 left join sys_user u on u.user_id = ur.user_id
-+                 left join sys_dept d on u.dept_id = d.dept_id
-     </sql>
- 
-     <select id="selectRoleList" parameterType="SysRole" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		where r.del_flag = '0'
--		<if test="roleId != null and roleId != 0">
--			AND r.role_id = #{roleId}
--		</if>
--		<if test="roleName != null and roleName != ''">
--			AND r.role_name like concat('%', #{roleName}, '%')
--		</if>
--		<if test="status != null and status != ''">
--			AND r.status = #{status}
--		</if>
--		<if test="roleKey != null and roleKey != ''">
--			AND r.role_key like concat('%', #{roleKey}, '%')
--		</if>
--		<if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
--			and date_format(r.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
--		</if>
--		<if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
--			and date_format(r.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
--		</if>
--		<!-- 鏁版嵁鑼冨洿杩囨护 -->
--		${params.dataScope}
--		order by r.role_sort
--	</select>
-+        <include refid="selectRoleVo"/>
-+        where r.del_flag = '0'
-+        <if test="roleId != null and roleId != 0">
-+            AND r.role_id = #{roleId}
-+        </if>
-+        <if test="roleName != null and roleName != ''">
-+            AND r.role_name like concat('%', #{roleName}, '%')
-+        </if>
-+        <if test="status != null and status != ''">
-+            AND r.status = #{status}
-+        </if>
-+        <if test="orgid != null and orgid != ''">
-+            AND r.orgid = #{orgid}
-+        </if>
-+        <if test="roleKey != null and roleKey != ''">
-+            AND r.role_key like concat('%', #{roleKey}, '%')
-+        </if>
-+        <if test="params.beginTime != null and params.beginTime != ''"><!-- 寮�濮嬫椂闂存绱� -->
-+            and date_format(r.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
-+        </if>
-+        <if test="params.endTime != null and params.endTime != ''"><!-- 缁撴潫鏃堕棿妫�绱� -->
-+            and date_format(r.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
-+        </if>
-+        <!-- 鏁版嵁鑼冨洿杩囨护 -->
-+        ${params.dataScope}
-+        order by r.role_sort
-+    </select>
- 
--	<select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		WHERE r.del_flag = '0' and ur.user_id = #{userId}
--	</select>
-+    <select id="selectRolePermissionByUserId" parameterType="Long" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+        WHERE r.del_flag = '0' and ur.user_id = #{userId}
-+    </select>
- 
--	<select id="selectRoleAll" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--	</select>
-+    <select id="selectRoleAll" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+    </select>
- 
--	<select id="selectRoleListByUserId" parameterType="Long" resultType="Long">
--		select r.role_id
-+    <select id="selectRoleListByUserId" parameterType="Long" resultType="Long">
-+        select r.role_id
-         from sys_role r
--	        left join sys_user_role ur on ur.role_id = r.role_id
--	        left join sys_user u on u.user_id = ur.user_id
--	    where u.user_id = #{userId}
--	</select>
-+                 left join sys_user_role ur on ur.role_id = r.role_id
-+                 left join sys_user u on u.user_id = ur.user_id
-+        where u.user_id = #{userId}
-+    </select>
- 
--	<select id="selectRoleById" parameterType="Long" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		where r.role_id = #{roleId}
--	</select>
-+    <select id="selectRoleById" parameterType="Long" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+        where r.role_id = #{roleId}
-+    </select>
- 
--	<select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		WHERE r.del_flag = '0' and u.user_name = #{userName}
--	</select>
-+    <select id="selectRolesByUserName" parameterType="String" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+        WHERE r.del_flag = '0' and u.user_name = #{userName}
-+    </select>
- 
--	<select id="checkRoleNameUnique" parameterType="String" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		 where r.role_name=#{roleName} and r.del_flag = '0' limit 1
--	</select>
-+    <select id="checkRoleNameUnique" parameterType="String" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+        where r.role_name=#{roleName} and r.del_flag = '0' limit 1
-+    </select>
- 
--	<select id="checkRoleKeyUnique" parameterType="String" resultMap="SysRoleResult">
--		<include refid="selectRoleVo"/>
--		 where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
--	</select>
-+    <select id="checkRoleKeyUnique" parameterType="String" resultMap="SysRoleResult">
-+        <include refid="selectRoleVo"/>
-+        where r.role_key=#{roleKey} and r.del_flag = '0' limit 1
-+    </select>
- 
-- 	<insert id="insertRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId">
-- 		insert into sys_role(
-- 			<if test="roleId != null and roleId != 0">role_id,</if>
-- 			<if test="roleName != null and roleName != ''">role_name,</if>
-- 			<if test="roleKey != null and roleKey != ''">role_key,</if>
-- 			<if test="roleSort != null">role_sort,</if>
-- 			<if test="dataScope != null and dataScope != ''">data_scope,</if>
-- 			<if test="menuCheckStrictly != null">menu_check_strictly,</if>
-- 			<if test="deptCheckStrictly != null">dept_check_strictly,</if>
-- 			<if test="status != null and status != ''">status,</if>
-- 			<if test="remark != null and remark != ''">remark,</if>
-- 			<if test="createBy != null and createBy != ''">create_by,</if>
-- 			<if test="guid != null and guid != ''">guid,</if>
-- 			<if test="orgid != null and orgid != ''">orgid,</if>
-- 			create_time
-- 		)values(
-- 			<if test="roleId != null and roleId != 0">#{roleId},</if>
-- 			<if test="roleName != null and roleName != ''">#{roleName},</if>
-- 			<if test="roleKey != null and roleKey != ''">#{roleKey},</if>
-- 			<if test="roleSort != null">#{roleSort},</if>
-- 			<if test="dataScope != null and dataScope != ''">#{dataScope},</if>
-- 			<if test="menuCheckStrictly != null">#{menuCheckStrictly},</if>
-- 			<if test="deptCheckStrictly != null">#{deptCheckStrictly},</if>
-- 			<if test="status != null and status != ''">#{status},</if>
-- 			<if test="remark != null and remark != ''">#{remark},</if>
-- 			<if test="createBy != null and createBy != ''">#{createBy},</if>
-- 			<if test="guid != null and guid != ''">#{guid},</if>
-- 			<if test="orgid != null and orgid != ''">#{orgid},</if>
-- 			sysdate()
-- 		)
--	</insert>
-+    <insert id="insertRole" parameterType="SysRole" useGeneratedKeys="true" keyProperty="roleId">
-+        insert into sys_role(
-+        <if test="roleId != null and roleId != 0">role_id,</if>
-+        <if test="roleName != null and roleName != ''">role_name,</if>
-+        <if test="roleKey != null and roleKey != ''">role_key,</if>
-+        <if test="roleSort != null">role_sort,</if>
-+        <if test="dataScope != null and dataScope != ''">data_scope,</if>
-+        <if test="menuCheckStrictly != null">menu_check_strictly,</if>
-+        <if test="deptCheckStrictly != null">dept_check_strictly,</if>
-+        <if test="status != null and status != ''">status,</if>
-+        <if test="remark != null and remark != ''">remark,</if>
-+        <if test="createBy != null and createBy != ''">create_by,</if>
-+        <if test="guid != null and guid != ''">guid,</if>
-+        <if test="orgid != null and orgid != ''">orgid,</if>
-+        create_time
-+        )values(
-+        <if test="roleId != null and roleId != 0">#{roleId},</if>
-+        <if test="roleName != null and roleName != ''">#{roleName},</if>
-+        <if test="roleKey != null and roleKey != ''">#{roleKey},</if>
-+        <if test="roleSort != null">#{roleSort},</if>
-+        <if test="dataScope != null and dataScope != ''">#{dataScope},</if>
-+        <if test="menuCheckStrictly != null">#{menuCheckStrictly},</if>
-+        <if test="deptCheckStrictly != null">#{deptCheckStrictly},</if>
-+        <if test="status != null and status != ''">#{status},</if>
-+        <if test="remark != null and remark != ''">#{remark},</if>
-+        <if test="createBy != null and createBy != ''">#{createBy},</if>
-+        <if test="guid != null and guid != ''">#{guid},</if>
-+        <if test="orgid != null and orgid != ''">#{orgid},</if>
-+        sysdate()
-+        )
-+    </insert>
- 
--	<update id="updateRole" parameterType="SysRole">
-- 		update sys_role
-- 		<set>
-- 			<if test="roleName != null and roleName != ''">role_name = #{roleName},</if>
-- 			<if test="roleKey != null and roleKey != ''">role_key = #{roleKey},</if>
-- 			<if test="roleSort != null">role_sort = #{roleSort},</if>
-- 			<if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if>
-- 			<if test="menuCheckStrictly != null">menu_check_strictly = #{menuCheckStrictly},</if>
-- 			<if test="deptCheckStrictly != null">dept_check_strictly = #{deptCheckStrictly},</if>
-- 			<if test="status != null and status != ''">status = #{status},</if>
-- 			<if test="remark != null">remark = #{remark},</if>
-- 			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
-- 			<if test="guid != null and guid != ''">guid = #{guid},</if>
-- 			<if test="orgid != null and orgid != ''">orgid = #{orgid},</if>
-- 			update_time = sysdate()
-- 		</set>
-- 		where role_id = #{roleId}
--	</update>
-+    <update id="updateRole" parameterType="SysRole">
-+        update sys_role
-+        <set>
-+            <if test="roleName != null and roleName != ''">role_name = #{roleName},</if>
-+            <if test="roleKey != null and roleKey != ''">role_key = #{roleKey},</if>
-+            <if test="roleSort != null">role_sort = #{roleSort},</if>
-+            <if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if>
-+            <if test="menuCheckStrictly != null">menu_check_strictly = #{menuCheckStrictly},</if>
-+            <if test="deptCheckStrictly != null">dept_check_strictly = #{deptCheckStrictly},</if>
-+            <if test="status != null and status != ''">status = #{status},</if>
-+            <if test="remark != null">remark = #{remark},</if>
-+            <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
-+            <if test="guid != null and guid != ''">guid = #{guid},</if>
-+            <if test="orgid != null and orgid != ''">orgid = #{orgid},</if>
-+            update_time = sysdate()
-+        </set>
-+        where role_id = #{roleId}
-+    </update>
- 
--	<delete id="deleteRoleById" parameterType="Long">
-- 		update sys_role set del_flag = '2' where role_id = #{roleId}
-- 	</delete>
-+    <delete id="deleteRoleById" parameterType="Long">
-+        update sys_role
-+        set del_flag = '1'
-+        where role_id = #{roleId}
-+    </delete>
- 
-- 	<delete id="deleteRoleByIds" parameterType="Long">
-- 	    update sys_role set del_flag = '2' where role_id in
-- 		<foreach collection="array" item="roleId" open="(" separator="," close=")">
-- 			#{roleId}
-+    <delete id="deleteRoleByIds" parameterType="Long">
-+        update sys_role set del_flag = '1' where role_id in
-+        <foreach collection="array" item="roleId" open="(" separator="," close=")">
-+            #{roleId}
-         </foreach>
-- 	</delete>
-+    </delete>
- 
- </mapper>
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport com.github.pagehelper.ISelect;\r\nimport com.ruoyi.common.annotation.Log;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.core.domain.entity.SysUser;\r\nimport com.ruoyi.common.core.page.TableDataInfo;\r\nimport com.ruoyi.common.enums.BusinessType;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.common.utils.PageUtils;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.StringUtils;\r\nimport com.ruoyi.common.utils.poi.ExcelUtil;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.service.IServiceSubtaskService;\r\nimport com.smartor.service.IServiceTaskService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.apache.commons.collections4.CollectionUtils;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.web.bind.annotation.*;\r\n\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport java.util.List;\r\nimport java.util.stream.Collectors;\r\n\r\n/**\r\n * 闅忚浠诲姟Controller\r\n *\r\n * @author smartor\r\n * @date 2023-03-24\r\n */\r\n@Slf4j\r\n@Api(description = \"闅忚浠诲姟\")\r\n@RestController\r\n@RequestMapping(\"/smartor/servicetask\")\r\npublic class ServiceTaskController extends BaseController {\r\n    @Autowired\r\n    private IServiceTaskService serviceTaskService;\r\n\r\n    @Autowired\r\n    private IServiceSubtaskService iServiceTaskCallService;\r\n\r\n    @Value(\"${pub_key}\")\r\n    private String pub_key;\r\n\r\n    @Value(\"${pri_key}\")\r\n    private String pri_key;\r\n\r\n    @Autowired\r\n    private RSAPublicKeyExample rsaPublicKeyExample;\r\n\r\n    /**\r\n     * 鏌ヨ璇煶浠诲姟鍒楄〃\r\n     */\r\n    @ApiOperation(\"鏌ヨ浠诲姟鍒楄〃\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:list')\")\r\n    @PostMapping(\"/list\")\r\n    public TableDataInfo list(@RequestBody ServiceTask serviceTask) {\r\n        PageUtils.startPageByPost(serviceTask.getPageNum(), serviceTask.getPageSize());\r\n//        List<ServiceTask> list = serviceTaskService.selectServiceTaskList(serviceTask);\r\n        List<ServiceTask> list = serviceTaskService.selectServiceTaskAndtaskDeptList(serviceTask);\r\n        List<ServiceTaskVO> serviceTaskVOS = DtoConversionUtils.sourceToTarget(list, ServiceTaskVO.class);\r\n\r\n        if (CollectionUtils.isNotEmpty(serviceTaskVOS)) {\r\n            for (ServiceTaskVO ServiceTaskVO : serviceTaskVOS) {\r\n                ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();\r\n                serviceSubtaskVO.setTaskid(ServiceTaskVO.getTaskid());\r\n                serviceSubtaskVO.setStartOutHospTime(serviceTask.getStartOutHospTime());\r\n                serviceSubtaskVO.setEndOutHospTime(serviceTask.getEndOutHospTime());\r\n                List<ServiceSubtask> ServiceTaskcalls = iServiceTaskCallService.selectServiceSubtaskList(serviceSubtaskVO);\r\n                if (CollectionUtils.isNotEmpty(ServiceTaskcalls)) {\r\n                    //宸插彂閫侊紙瀛愪换鍔′腑鐨� sendstate=1涓鸿棰嗗彇锛塡r\n                    long yfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> (serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() >= 3L) || (serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 1L)).collect(Collectors.toList()).stream().count();\r\n                    //鏈彂閫乗r\n                    long wfs = ServiceTaskcalls.stream().filter(serviceTaskcall1 -> serviceTaskcall1.getSendstate() != null && serviceTaskcall1.getSendstate() == 2L).collect(Collectors.toList()).stream().count();\r\n                    ServiceTaskVO.setYfs(yfs);\r\n                    ServiceTaskVO.setWfs(wfs);\r\n                }\r\n\r\n            }\r\n            //鑾峰彇total\r\n            long total = PageUtils.count(new ISelect() {\r\n                @Override\r\n                public void doSelect() {\r\n                    serviceTask.setPageNum(null);\r\n                    serviceTask.setPageSize(null);\r\n                    serviceTaskService.selectServiceTaskAndtaskDeptList(serviceTask);\r\n                }\r\n            });\r\n\r\n            return getDataTable2(total, serviceTaskVOS);\r\n        }\r\n\r\n        return getDataTable2(0, serviceTaskVOS);\r\n    }\r\n\r\n    /**\r\n     * 瀵煎嚭浠诲姟鍒楄〃\r\n     */\r\n    @ApiOperation(\"瀵煎嚭浠诲姟鍒楄〃\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:export')\")\r\n    @Log(title = \"璇煶浠诲姟\", businessType = BusinessType.EXPORT)\r\n    @PostMapping(\"/export\")\r\n    public void export(HttpServletResponse response, ServiceTask ServiceTask) {\r\n        List<ServiceTask> list = serviceTaskService.selectServiceTaskList(ServiceTask);\r\n        ExcelUtil<ServiceTask> util = new ExcelUtil<ServiceTask>(ServiceTask.class);\r\n        util.exportExcel(response, list, \"璇煶浠诲姟鏁版嵁\");\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇浠诲姟璇︾粏淇℃伅\r\n     */\r\n    @ApiOperation(\"鑾峰彇浠诲姟璇︾粏淇℃伅\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:query')\")\r\n    @GetMapping(value = \"/{taskid}\")\r\n    public AjaxResult getInfo(@PathVariable(\"taskid\") Long taskid) {\r\n        return success(serviceTaskService.selectServiceTaskByTaskid(taskid));\r\n    }\r\n\r\n    /**\r\n     * 鏂板浠诲姟\r\n     */\r\n    @ApiOperation(\"鏂板浠诲姟\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:add')\")\r\n    @Log(title = \"璇煶浠诲姟\", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/add\")\r\n    public AjaxResult add(@RequestBody ServiceTask ServiceTask) {\r\n        SysUser user = getLoginUser().getUser();\r\n        ServiceTask.setOrgid(user.getOrgid());\r\n        return toAjax(serviceTaskService.insertServiceTask(ServiceTask));\r\n    }\r\n\r\n    /**\r\n     * 鑾峰彇闅忚鍙婃椂鐜嘰r\n     */\r\n    @ApiOperation(\"鑾峰彇闅忚鍙婃椂鐜嘰")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:add')\")\r\n    @Log(title = \"鑾峰彇闅忚鍙婃椂鐜嘰", businessType = BusinessType.INSERT)\r\n    @PostMapping(\"/selectTimelyRate\")\r\n    public AjaxResult selectTimelyRate(@RequestBody ServiceSubtask serviceSubtask) {\r\n        SysUser user = getLoginUser().getUser();\r\n        serviceSubtask.setOrgid(user.getOrgid());\r\n        return success(serviceTaskService.selectTimelyRate(serviceSubtask));\r\n    }\r\n\r\n    /**\r\n     * 淇敼璇煶浠诲姟\r\n     */\r\n    @ApiOperation(\"淇敼浠诲姟\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:edit')\")\r\n    @Log(title = \"浠诲姟\", businessType = BusinessType.UPDATE)\r\n    @PostMapping(\"/edit\")\r\n    public AjaxResult edit(@RequestBody ServiceTask ServiceTask) {\r\n        return toAjax(serviceTaskService.updateServiceTask(ServiceTask));\r\n    }\r\n\r\n//    /**\r\n//     * 鍒犻櫎璇煶浠诲姟\r\n//     */\r\n//    @ApiOperation(\"鍒犻櫎浠诲姟\")\r\n//    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:remove')\")\r\n//    @Log(title = \"璇煶浠诲姟\", businessType = BusinessType.DELETE)\r\n//    @GetMapping(\"/remove/{taskids}\")\r\n//    public AjaxResult remove(@PathVariable Long[] taskids) {\r\n//        return toAjax(ServiceTaskService.deleteServiceTaskByTaskids(taskids));\r\n//    }\r\n//\r\n\r\n    /**\r\n     * 鍒犻櫎浠诲姟(鍖呮嫭瀹冨搴旂殑鎮h�呬俊鎭�)\r\n     */\r\n    @ApiOperation(\"鍒犻櫎浠诲姟(鍖呮嫭瀹冨搴旂殑鎮h�呬俊鎭�)\")\r\n    //@PreAuthorize(\"@ss.hasPermi('smartor:ServiceTask:remove')\")\r\n    @Log(title = \"璇煶浠诲姟\", businessType = BusinessType.DELETE)\r\n    @GetMapping(\"/remove/{taskId}\")\r\n    public AjaxResult removeTask(@PathVariable(\"taskId\") String taskId) {\r\n        if (StringUtils.isEmpty(taskId)) {\r\n            AjaxResult.error(\"鍏ュ弬涓嶈兘涓虹┖\");\r\n        }\r\n        Long tid = Long.valueOf(taskId);\r\n        return toAjax(serviceTaskService.deleteServiceTaskByTaskid(tid));\r\n    }\r\n\r\n    /**\r\n     * 閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅\r\n     *\r\n     * @return\r\n     */\r\n    @ApiOperation(\"閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅\")\r\n    @PostMapping(\"/getScriptInfoByCondition\")\r\n    public AjaxResult getScriptInfoByCondition(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) {\r\n        Long tid = null;\r\n        Long pid = null;\r\n        log.info(\"getScriptInfoByCondition鍏ュ弬涓猴細{}\", serviceTaskScriptQues);\r\n        try {\r\n            tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam1(), pri_key));\r\n            pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam2(), pri_key));\r\n        } catch (Exception e) {\r\n            log.error(\"getScriptInfoByCondition鎶ラ敊浜嗭細{}\", e.getMessage());\r\n        }\r\n\r\n        log.info(\"tid鍜宲id鐨勫�间负锛歿},{}\", tid, pid);\r\n        if (StringUtils.isEmpty(serviceTaskScriptQues.getPatfrom())) serviceTaskScriptQues.setPatfrom(\"0\");\r\n        return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom()));\r\n    }\r\n\r\n\r\n    /**\r\n     * 閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅\r\n     *\r\n     * @return\r\n     */\r\n    @ApiOperation(\"閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅(灏忕▼搴�)\")\r\n    @PostMapping(\"/getScriptInfoByConditionXCH\")\r\n    public AjaxResult getScriptInfoByConditionXCH(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) {\r\n        Long tid = null;\r\n        Long pid = null;\r\n        log.error(\"getScriptInfoByCondition鍏ュ弬涓猴細{}\", serviceTaskScriptQues);\r\n        try {\r\n            tid = Long.valueOf(serviceTaskScriptQues.getParam1());\r\n            pid = Long.valueOf(serviceTaskScriptQues.getParam2());\r\n        } catch (Exception e) {\r\n            log.error(\"getScriptInfoByCondition鎶ラ敊浜嗭細{}\", e.getMessage());\r\n        }\r\n\r\n        log.info(\"tid鍜宲id鐨勫�间负锛歿},{}\", tid, pid);\r\n        if (StringUtils.isEmpty(serviceTaskScriptQues.getPatfrom())) serviceTaskScriptQues.setPatfrom(\"0\");\r\n        return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom()));\r\n    }\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceTaskController.java	(date 1758798203347)
-@@ -25,6 +25,7 @@
- 
- import javax.servlet.http.HttpServletResponse;
- import java.util.List;
-+import java.util.Map;
- import java.util.stream.Collectors;
- 
- /**
-@@ -232,4 +233,31 @@
-         return success(serviceTaskService.getScriptInfoByCondition(tid, pid, true, serviceTaskScriptQues.getPatfrom()));
-     }
- 
-+
-+    /**
-+     * 閫氳繃浠诲姟ID鍜屾偅鑰匢D鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅
-+     *
-+     * @return
-+     */
-+    @ApiOperation("閫氳繃浠诲姟ID鍜岃瘖鐤楄褰曞彿鑾峰彇鍗曚釜浜虹殑棰樼洰淇℃伅")
-+    @PostMapping("/getScriptByCondition")
-+    public AjaxResult getScriptByCondition(@RequestBody ServiceTaskScriptQues serviceTaskScriptQues) {
-+        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-+        Long taskId = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam1(), pri_key));
-+        String zyserialnum = null;
-+        String mzserialnum = null;
-+        String tsserialnum = null;
-+        if (StringUtils.isNotEmpty(serviceTaskScriptQues.getParam2()))
-+            zyserialnum = rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam2(), pri_key);
-+        if (StringUtils.isNotEmpty(serviceTaskScriptQues.getParam3()))
-+            mzserialnum = rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam3(), pri_key);
-+        if (StringUtils.isNotEmpty(serviceTaskScriptQues.getParam4()))
-+            tsserialnum = rsaPublicKeyExample.decryptedData(serviceTaskScriptQues.getParam4(), pri_key);
-+        Map<String, Object> scriptByCondition = serviceTaskService.getScriptByCondition(taskId, zyserialnum, mzserialnum, tsserialnum);
-+        scriptByCondition.put("zy", serviceTaskScriptQues.getParam2());
-+        scriptByCondition.put("mz", serviceTaskScriptQues.getParam3());
-+        scriptByCondition.put("tid", serviceTaskScriptQues.getParam1());
-+        return success(scriptByCondition);
-+    }
-+
- }
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceExternalController.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.controller.smartor;\r\n\r\nimport cn.hutool.core.bean.BeanUtil;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\nimport com.ruoyi.common.core.controller.BaseController;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.utils.DtoConversionUtils;\r\nimport com.ruoyi.system.service.ISysConfigService;\r\nimport com.smartor.domain.*;\r\nimport com.smartor.service.IServiceExternalService;\r\nimport com.smartor.service.IServiceSubtaskDetailService;\r\nimport com.smartor.service.ISvyTaskSingleService;\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiOperation;\r\nimport lombok.extern.slf4j.Slf4j;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.web.bind.annotation.PostMapping;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RestController;\r\n\r\nimport java.util.Date;\r\nimport java.util.HashMap;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 绗笁鏂硅皟鐢ㄦ帴鍙ontroller\r\n *\r\n * @author smartor\r\n * @date 2024-12-10\r\n */\r\n@Slf4j\r\n@Api(description = \"绗笁鏂硅皟鐢ㄦ帴鍙")\r\n@RestController\r\n@RequestMapping(\"/smartor/serviceExternal\")\r\npublic class ServiceExternalController extends BaseController {\r\n    @Autowired\r\n    private IServiceExternalService serviceExternalService;\r\n    @Autowired\r\n    private ISvyTaskSingleService svyTaskSingleService;\r\n    @Autowired\r\n    private ISysConfigService configService;\r\n\r\n    /**\r\n     * 閫氱敤鎺ュ彛\r\n     */\r\n    @ApiOperation(\"閫氱敤鎺ュ彛\")\r\n    @PostMapping(\"/generalInterface\")\r\n    public Map<String, Object> generalInterface(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n\r\n        try {\r\n            aBoolean = serviceExternalService.generalInterface(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---generalInterface鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板浣撴浠诲姟杩涘瓙浠诲姟\r\n     */\r\n    @ApiOperation(\"鏂板浣撴浠诲姟杩涘瓙浠诲姟\")\r\n    @PostMapping(\"/generalInterfaceAddTask\")\r\n    public AjaxResult generalInterfaceAddTask(@RequestBody ServiceTaskInfo serviceTaskInfo) {\r\n        log.info(\"------serviceTaskInfo鐨勫�间负锛歿}\", serviceTaskInfo);\r\n        Integer res = 0;\r\n        try {\r\n            res = svyTaskSingleService.insertTaskInfo(serviceTaskInfo);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---generalInterfaceAddTask鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n        }\r\n        return toAjax(res);\r\n    }\r\n\r\n\r\n    /**\r\n     * 360鎮h�呬俊鎭幏鍙朶r\n     */\r\n    @ApiOperation(\"360鎮h�呬俊鎭幏鍙朶")\r\n    @PostMapping(\"/query360PatInfo\")\r\n    public Map query360PatInfo(@RequestBody ServiceQueryInfo serviceQueryInfo) {\r\n        log.info(\"------serviceQueryInfo鐨勫叆鍙備负锛歿}\", serviceQueryInfo);\r\n        Map map = null;\r\n        try {\r\n            String url = configService.selectConfigByKey(\"token.360\",serviceQueryInfo.getXiaoXiTou().getFaSongJGID());\r\n            serviceQueryInfo.setUrl(url);\r\n           String url360 = configService.selectConfigByKey(\"url.360\",serviceQueryInfo.getXiaoXiTou().getFaSongJGID());\r\n            serviceQueryInfo.setUrl360(url360);\r\n            map = svyTaskSingleService.query360PatInfo(serviceQueryInfo);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"query360PatInfo---query360PatInfo锛歿}\", e.getMessage());\r\n        }\r\n        return map;\r\n    }\r\n\r\n    /**\r\n     * 鍖诲槺鐭ヨ瘑鎻愮ず\r\n     */\r\n    @ApiOperation(\"鍖诲槺鐭ヨ瘑鎻愮ず\")\r\n    @PostMapping(\"/focus\")\r\n    public Map focus(@RequestBody ServiceQueryFocus serviceQueryFocus) {\r\n        Map map = null;\r\n        try {\r\n            map = svyTaskSingleService.focus(serviceQueryFocus);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"query360PatInfo---query360PatInfo锛歿}\", e.getMessage());\r\n        }\r\n        return map;\r\n    }\r\n\r\n\r\n    /**\r\n     * 鏂板绉戝淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板绉戝淇℃伅\")\r\n    @PostMapping(\"/addDeptInfo\")\r\n    public Map<String, Object> addDeptInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addDeptInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addDeptInfo鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板绉戝淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鐢ㄦ埛淇℃伅\")\r\n    @PostMapping(\"/addUserInfo\")\r\n    public Map<String, Object> addUserInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addUserInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addUserInfo鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n\r\n    }\r\n\r\n\r\n    /**\r\n     * 鏂板鏈烘瀯淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鏈烘瀯淇℃伅\")\r\n    @PostMapping(\"/addOrganInfo\")\r\n    public Map<String, Object> addOrganInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addOrganInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addOrganInfo鍑哄紓甯镐簡锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鍏ラ櫌淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鍏ラ櫌淇℃伅\")\r\n    @PostMapping(\"/addInHospInfo\")\r\n    public Map<String, Object> addInHospInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addInHospInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addInHospInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鍙栨秷鍏ラ櫌鐧昏淇℃伅\r\n     */\r\n    @ApiOperation(\"鍙栨秷鍏ラ櫌鐧昏淇℃伅\")\r\n    @PostMapping(\"/cancelInHospInfo\")\r\n    public Map<String, Object> cancelInHospInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.cancelInHospInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---cancelInHospInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鍑洪櫌鐧昏淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鍑洪櫌鐧昏淇℃伅\")\r\n    @PostMapping(\"/addOutHospInfo\")\r\n    public Map<String, Object> addOutHospInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addOutHospInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addOutHospInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     *\r\n     */\r\n    @ApiOperation(\"鏂板鍑洪櫌璁板綍鐧昏淇℃伅\")\r\n    @PostMapping(\"/addOutHospJLInfo\")\r\n    public Map<String, Object> addOutHospJLInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addOutHospJLInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addOutHospJLInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鍙栨秷鍑洪櫌鐧昏淇℃伅\r\n     */\r\n    @ApiOperation(\"鍙栨秷鍑洪櫌鐧昏淇℃伅\")\r\n    @PostMapping(\"/cancelOutHospInfo\")\r\n    public Map<String, Object> cancelOutHospInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.cancelOutHospInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---cancelOutHospInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鍑洪櫌鐧昏淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板棰勫嚭闄㈢櫥璁颁俊鎭痋")\r\n    @PostMapping(\"/addPreOutHospInfo\")\r\n    public Map<String, Object> addPreOutHospInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addPreOutHospInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addPreOutHospInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板瀹屾垚鎺ヨ瘖淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板瀹屾垚鎺ヨ瘖淇℃伅\")\r\n    @PostMapping(\"/addFinshJZInfo\")\r\n    public Map<String, Object> addFinshJZInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addFinshJZInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addFinshJZInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板瀹屾垚鎺ヨ瘖淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鐤剧梾淇℃伅\")\r\n    @PostMapping(\"/addDiseaseInfo\")\r\n    public Map<String, Object> addDiseaseInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addDiseaseInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addDiseaseInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 鏂板鐥呭尯淇℃伅\r\n     */\r\n    @ApiOperation(\"鏂板鐥呭尯淇℃伅\")\r\n    @PostMapping(\"/addWardAreaInfo\")\r\n    public Map<String, Object> addWardAreaInfo(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addWardAreaInfo(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addWardAreaInfo锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n\r\n    /**\r\n     * 妫�鏌ョ敵璇锋湇鍔�/妫�鏌ヤ慨鏀规湇鍔r\n     */\r\n    @ApiOperation(\"妫�鏌ョ敵璇锋湇鍔")\r\n    @PostMapping(\"/addInspectService\")\r\n    public Map<String, Object> addInspectService(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addInspectService(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addInspectService锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n    /**\r\n     * 妫�鏌ユ姤鍛婃湇鍔r\n     */\r\n    @ApiOperation(\"妫�鏌ユ姤鍛婃湇鍔")\r\n    @PostMapping(\"/addInspectBGService\")\r\n    public Map<String, Object> addInspectBGService(@RequestBody Map dataMap) {\r\n        Boolean aBoolean = true;\r\n        try {\r\n            aBoolean = serviceExternalService.addInspectBGService(dataMap);\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n            log.error(\"serviceExternal---addInspectBGService锛歿}\", e.getMessage());\r\n            aBoolean = false;\r\n        }\r\n        return returnParam(aBoolean, dataMap);\r\n    }\r\n\r\n\r\n\r\n    private Map<String, Object> returnParam(Boolean b, Map dataMap) {\r\n        Map yeWuXX = (Map) dataMap.get(\"YeWuXX\");\r\n        String XiaoXiID = (String) yeWuXX.get(\"XiaoXiID\");\r\n\r\n        Map<String, Object> map = new HashMap<>();\r\n        if (b) {\r\n            map.put(\"Code\", \"0\");\r\n            map.put(\"Message\", \"success\");\r\n        } else {\r\n            map.put(\"Code\", \"500\");\r\n            map.put(\"Message\", \"error\");\r\n        }\r\n\r\n        Map<String, Object> map2 = new HashMap<>();\r\n        map2.put(\"XiaoXiID\", XiaoXiID);\r\n        map2.put(\"ChuangJianSJ\", new Date());\r\n        map.put(\"Data\", map2);\r\n        return map;\r\n    }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceExternalController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceExternalController.java
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceExternalController.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceExternalController.java	(date 1758798203373)
-@@ -5,7 +5,6 @@
- import com.ruoyi.common.core.controller.BaseController;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.common.utils.DtoConversionUtils;
--import com.ruoyi.system.service.ISysConfigService;
- import com.smartor.domain.*;
- import com.smartor.service.IServiceExternalService;
- import com.smartor.service.IServiceSubtaskDetailService;
-@@ -38,8 +37,6 @@
-     private IServiceExternalService serviceExternalService;
-     @Autowired
-     private ISvyTaskSingleService svyTaskSingleService;
--    @Autowired
--    private ISysConfigService configService;
- 
-     /**
-      * 閫氱敤鎺ュ彛
-@@ -86,10 +83,6 @@
-         log.info("------serviceQueryInfo鐨勫叆鍙備负锛歿}", serviceQueryInfo);
-         Map map = null;
-         try {
--            String url = configService.selectConfigByKey("token.360",serviceQueryInfo.getXiaoXiTou().getFaSongJGID());
--            serviceQueryInfo.setUrl(url);
--           String url360 = configService.selectConfigByKey("url.360",serviceQueryInfo.getXiaoXiTou().getFaSongJGID());
--            serviceQueryInfo.setUrl360(url360);
-             map = svyTaskSingleService.query360PatInfo(serviceQueryInfo);
-         } catch (Exception e) {
-             e.printStackTrace();
-Index: smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.service;\r\n\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.smartor.domain.*;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\n\r\nimport java.util.List;\r\nimport java.util.Map;\r\n\r\n/**\r\n * 浠诲姟闂嵎闂閫夐」Service鎺ュ彛\r\n *\r\n * @author ruoyi\r\n * @date 2024-07-18\r\n */\r\npublic interface IServiceSubtaskAnswerService {\r\n    /**\r\n     * 鏌ヨ浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param id 浠诲姟闂嵎闂閫夐」涓婚敭\r\n     * @return 浠诲姟闂嵎闂閫夐」\r\n     */\r\n    public ServiceSubtaskAnswer selectServiceSubtaskAnswerById(Long id);\r\n\r\n    /**\r\n     * 鏌ヨ浠诲姟闂嵎闂閫夐」鍒楄〃\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 浠诲姟闂嵎闂閫夐」闆嗗悎\r\n     */\r\n    public List<ServiceSubtaskAnswer> selectServiceSubtaskAnswerList(ServiceSubtaskAnswer serviceSubtaskAnswer);\r\n\r\n    /**\r\n     * 鏂板浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 缁撴灉\r\n     */\r\n    public int insertServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer);\r\n\r\n    /**\r\n     * 淇敼浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param serviceSubtaskAnswer 浠诲姟闂嵎闂閫夐」\r\n     * @return 缁撴灉\r\n     */\r\n    public int updateServiceSubtaskAnswer(ServiceSubtaskAnswer serviceSubtaskAnswer);\r\n\r\n    /**\r\n     * 鎵归噺鍒犻櫎浠诲姟闂嵎闂閫夐」\r\n     *\r\n     * @param ids 闇�瑕佸垹闄ょ殑浠诲姟闂嵎闂閫夐」涓婚敭闆嗗悎\r\n     * @return 缁撴灉\r\n     */\r\n    public int deleteServiceSubtaskAnswerByIds(Long[] ids);\r\n\r\n    /**\r\n     * 鍒犻櫎浠诲姟闂嵎闂閫夐」淇℃伅\r\n     *\r\n     * @param id 浠诲姟闂嵎闂閫夐」涓婚敭\r\n     * @return 缁撴灉\r\n     */\r\n    public int deleteServiceSubtaskAnswerById(Long id);\r\n\r\n    /**\r\n     * 灏嗙紦瀛樼殑鏁版嵁淇濆瓨鍒版暟鎹簱\r\n     *\r\n     * @param serviceSubTaskAnswerReq\r\n     * @return\r\n     */\r\n    public Integer saveQuestionAnswer(ServiceSubTaskAnswerReq serviceSubTaskAnswerReq,Long flag);\r\n\r\n    /**\r\n     * 灏嗛棶棰樹繚瀛樺埌缂撳瓨\r\n     *\r\n     * @param serviceSubTaskCacheReq\r\n     * @return\r\n     */\r\n    public Integer saveQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq,Long flag);\r\n\r\n    public Map<String,Object> getQuestionCache(ServiceSubTaskCacheReq serviceSubTaskCacheReq, Long flag);\r\n\r\n    public Map<String, Object> selectPatQuestionResult(ServiceSubTaskQueryReq serviceSubTaskQueryReq);\r\n\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java
---- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskAnswerService.java	(date 1758798203385)
-@@ -70,6 +70,8 @@
-      */
-     public Integer saveQuestionAnswer(ServiceSubTaskAnswerReq serviceSubTaskAnswerReq,Long flag);
- 
-+    public Boolean saveMYDQuestionAnswer(ServiceSubTaskMYDAnswerReq serviceSubTaskMYDAnswerReq);
-+
-     /**
-      * 灏嗛棶棰樹繚瀛樺埌缂撳瓨
-      *
-Index: ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.ruoyi.web.test;\r\n\r\nimport com.alibaba.fastjson2.JSONObject;\r\nimport com.ruoyi.common.config.RuoYiConfig;\r\nimport com.ruoyi.common.core.domain.AjaxResult;\r\nimport com.ruoyi.common.utils.RSAPublicKeyExample;\r\nimport com.ruoyi.common.utils.file.FileUploadUtils;\r\nimport com.ruoyi.common.utils.file.FileUtils;\r\nimport com.ruoyi.common.utils.http.HttpUtils;\r\nimport com.smartor.domain.ServiceSubtaskDetail;\r\nimport com.smartor.domain.ThiedInhospInfo;\r\nimport com.smartor.service.IHNGatherPatArchiveService;\r\nimport io.swagger.models.auth.In;\r\nimport org.junit.Test;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.mock.web.MockMultipartFile;\r\nimport org.springframework.web.multipart.MultipartFile;\r\n\r\nimport java.io.*;\r\nimport java.math.BigInteger;\r\nimport java.nio.file.Files;\r\nimport java.security.MessageDigest;\r\nimport java.util.ArrayList;\r\nimport java.util.HashMap;\r\nimport java.util.List;\r\nimport java.util.Map;\r\nimport java.util.concurrent.CompletableFuture;\r\nimport java.util.regex.Matcher;\r\nimport java.util.regex.Pattern;\r\nimport java.util.stream.Collectors;\r\n\r\nimport static cn.hutool.core.convert.Convert.toHex;\r\nimport static org.eclipse.jetty.http.HttpGenerator.CHUNK_SIZE;\r\n\r\n//@SpringBootTest\r\n//@RunWith(SpringRunner.class)\r\npublic class MQTest {\r\n    @Autowired\r\n    private IHNGatherPatArchiveService ihnGatherPatArchiveService;\r\n\r\n    @Test\r\n    public void testSend22() {\r\n//        uploadFileInChunks(new File(\"C:\\\\Users\\\\86176\\\\Desktop\\\\19-鍥捐Вes鍐呴儴鍩轰簬_version涔愯閿佹帶鍒�.mp4\"));\r\n        File file = new File(\"C:\\\\Users\\\\86176\\\\Desktop\\\\19-鍥捐Вes鍐呴儴鍩轰簬_version涔愯閿佹帶鍒�.mp4\");\r\n\r\n\r\n        FileInputStream input = null;\r\n        try {\r\n            input = new FileInputStream(new File(\"C:\\\\Users\\\\86176\\\\Desktop\\\\19-鍥捐Вes鍐呴儴鍩轰簬_version涔愯閿佹帶鍒�.mp4\"));\r\n            MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(), \"application/octet-stream\", input);\r\n            aa(multipartFile);\r\n        } catch (FileNotFoundException e) {\r\n            e.printStackTrace();\r\n        } catch (IOException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n    }\r\n\r\n    @Test\r\n    public void bb() {\r\n        Boolean aBoolean = ihnGatherPatArchiveService.hnDataGather(null);\r\n    }\r\n\r\n    @Test\r\n    public void cc() {\r\n        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();\r\n        String s = rsaPublicKeyExample.encryptedData(\"1012320966\", \"MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==\");\r\n        System.out.println(\"鍔犲瘑缁撴灉涓猴細\" + s);\r\n        String s1 = rsaPublicKeyExample.decryptedData(s, \"MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==\");\r\n        System.out.println(\"瑙e瘑缁撴灉涓猴細\"+s1);\r\n    }\r\n\r\n    public void aa(MultipartFile file) throws IOException {\r\n        System.out.println(\"寮�濮婣a锛歕" + System.currentTimeMillis());\r\n        String filePath = \"D:\\\\test\\\\Ab\";\r\n        // 涓婁紶骞惰繑鍥炴柊鏂囦欢鍚嶇О\r\n        String fileName = FileUploadUtils.upload(filePath, file);\r\n        System.out.println(\"缁撴潫Aa锛歕" + System.currentTimeMillis());\r\n\r\n    }\r\n\r\n\r\n    public static String encode(String arg) {\r\n        if (arg == null) {\r\n            arg = \"\";\r\n        }\r\n        MessageDigest md5 = null;\r\n        try {\r\n            md5 = MessageDigest.getInstance(\"MD5\");\r\n            md5.update(arg.getBytes(\"UTF-8\"));\r\n        } catch (Exception e) {\r\n            e.printStackTrace();\r\n        }\r\n        return toHex(md5.digest());\r\n    }\r\n\r\n}\r\n\r\n\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-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
---- a/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/test/MQTest.java	(date 1758798203399)
-@@ -65,7 +65,7 @@
-     @Test
-     public void cc() {
-         RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
--        String s = rsaPublicKeyExample.encryptedData("1012320966", "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==");
-+        String s = rsaPublicKeyExample.encryptedData("20250815001094", "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALQzqW1EIXBKGMu+2oEYSB5gM7Ox/ihyYTeeoE0yPX1qtt4++5yNOeTBVd6EEM4iKzVEzWj6REIWVwaSNPn/SvUCAwEAAQ==");
-         System.out.println("鍔犲瘑缁撴灉涓猴細" + s);
-         String s1 = rsaPublicKeyExample.decryptedData(s, "MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAtDOpbUQhcEoYy77agRhIHmAzs7H+KHJhN56gTTI9fWq23j77nI055MFV3oQQziIrNUTNaPpEQhZXBpI0+f9K9QIDAQABAkB3n0fcWfrcoMN/FU3VnrnZOEF6CzFNxkgU9P8y36QECWKZ9JhYQkNpKrMC9oXlN3VSaRigV7B+L/I/a0Rs1W+tAiEA4jx7xcXJ4y4BNwAmVHt6NNiEkzIwWnwC/0qsEu8NsOsCIQDL6MMn1D2uznC6OuOWpxDCkBh1JL1NzZTZeH2G+hj7nwIgKGAC9tjFnvWm4dn0/T7MIIJDpsFeP8fCAS2iZ/6hwuECIAS/eLvWr1EAsZNEh8QcQ8GkBU3E+ztyjAK8UX/xFt/VAiBf79/1tDErX4/DChecM8w3c3DhbBcjuE3fHZn7p6/UKg==");
-         System.out.println("瑙e瘑缁撴灉涓猴細"+s1);
-Index: smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
-IDEA additional info:
-Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
-<+>package com.smartor.domain;\r\n\r\nimport java.math.BigDecimal;\r\nimport java.util.Date;\r\nimport java.util.List;\r\n\r\nimport com.fasterxml.jackson.annotation.JsonFormat;\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\nimport com.ruoyi.common.annotation.Excel;\r\nimport com.ruoyi.common.core.domain.BaseEntity;\r\n\r\n/**\r\n * 鍗曚竴浠诲姟锛堥殢璁匡級瀵硅薄 ivr_tasksingle\r\n *\r\n * @author ruoyi\r\n * @date 2024-02-02\r\n */\r\n@ApiModel(value = \"ServiceSubtask\", description = \"鍗曚竴闅忚浠诲姟\")\r\n@Data\r\npublic class ServiceSubtask extends PatArchive {\r\n    private static final long serialVersionUID = 1L;\r\n\r\n    /**\r\n     * 涓婚敭\r\n     */\r\n    @ApiModelProperty(value = \"涓婚敭\")\r\n    private Long id;\r\n\r\n    /**\r\n     * 浠诲姟ID\r\n     */\r\n    @ApiModelProperty(value = \"浠诲姟ID\")\r\n    private Long taskid;\r\n\r\n    /**\r\n     * 绗笁鏂逛换鍔D\r\n     */\r\n    @ApiModelProperty(value = \"绗笁鏂逛换鍔D\")\r\n    private String taskGuid;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呬汉璁板綍ID\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呬汉璁板綍ID\")\r\n    private Long inhospid;\r\n\r\n    /**\r\n     * 鐖禝D\r\n     */\r\n    @Excel(name = \"鐖禝D\")\r\n    @ApiModelProperty(value = \"鐖禝D\")\r\n    private Long pid;\r\n\r\n    /**\r\n     * 澶囨敞\r\n     */\r\n    @ApiModelProperty(value = \"澶囨敞\")\r\n    private String remark;\r\n\r\n    /**\r\n     * 澶囨敞\r\n     */\r\n    @ApiModelProperty(value = \"\")\r\n    private String guid;\r\n\r\n    /**\r\n     * 寮傚父鏍囪瘑\r\n     */\r\n    @ApiModelProperty(value = \"寮傚父鏍囪瘑\")\r\n    @Excel(name = \" 寮傚父鏍囪瘑 \")\r\n    private String excep;\r\n\r\n    /**\r\n     * 鍑洪櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date endtime;\r\n\r\n    /**\r\n     * 鍏ラ櫌鏃堕棿\r\n     */\r\n    @ApiModelProperty(value = \"鍏ラ櫌鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date starttime;\r\n\r\n    /**\r\n     * 鏄惁鎻愪氦\r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鎻愪氦锛�0鏈彁浜�   1宸叉彁浜")\r\n    private Long submit;\r\n\r\n    /**\r\n     * 鍙戦�佷汉\r\n     */\r\n    @Excel(name = \" 鍙戦�佷汉锛堟偅鑰咃級 \")\r\n    @ApiModelProperty(value = \"鍙戦�佷汉锛堟偅鑰咃級\")\r\n    private String sendname;\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @Excel(name = \" 鎵嬫満鍙� \")\r\n    @ApiModelProperty(value = \"鎵嬫満鍙穃")\r\n    private String phone;\r\n\r\n    /**\r\n     * 鎵嬫満鍙穃r\n     */\r\n    @Excel(name = \" 鎵嬫満鍙� \")\r\n    @ApiModelProperty(value = \"鎵嬫満鍙穃")\r\n    private String openid;\r\n\r\n    /**\r\n     * 鎬у埆\r\n     */\r\n    @Excel(name = \"  鎬у埆\")\r\n    @ApiModelProperty(value = \"鎬у埆\")\r\n    private Long sex;\r\n\r\n    /**\r\n     * 骞撮緞\r\n     */\r\n    @Excel(name = \" 骞撮緞 \")\r\n    @ApiModelProperty(value = \"骞撮緞\")\r\n    private Long age;\r\n\r\n    /**\r\n     * 韬唤璇佸彿\r\n     */\r\n    @Excel(name = \" 韬唤璇佸彿 \")\r\n    @ApiModelProperty(value = \"韬唤璇佸彿\")\r\n    private String sfzh;\r\n\r\n    /**\r\n     * 鍦板潃\r\n     */\r\n    @Excel(name = \" 鍦板潃 \")\r\n    @ApiModelProperty(value = \"鍦板潃\")\r\n    private String addr;\r\n\r\n    /**\r\n     * 鍙戦�佷汉璇︽儏\r\n     */\r\n    @Excel(name = \"  鍙戦�佷汉璇︽儏\")\r\n    @ApiModelProperty(value = \"鍙戦�佷汉璇︽儏\")\r\n    private String senderdetail;\r\n\r\n    /**\r\n     * 浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)\r\n     */\r\n    @Excel(name = \"浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶锛堥殢璁匡級  2锛岄棶鍗凤紱3锛岄�氱煡锛堝鏁欙級\")\r\n    @ApiModelProperty(value = \"浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶锛堥殢璁匡級  2锛岄棶鍗凤紱3锛屽鏁欙紱 4.閫氱煡)\")\r\n    private String type;\r\n\r\n    /**\r\n     * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)\r\n     */\r\n    @Excel(name = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)\")\r\n    @ApiModelProperty(value = \"鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚\")\r\n    private String serviceType;\r\n\r\n    /**\r\n     * 妯℃澘ID\r\n     */\r\n    @Excel(name = \"  妯℃澘ID\")\r\n    @ApiModelProperty(value = \"妯℃澘ID\")\r\n    private Long templateid;\r\n\r\n    /**\r\n     * 妯℃澘鍚峔r\n     */\r\n    @Excel(name = \" 妯℃澘鍚� \")\r\n    @ApiModelProperty(value = \"鎷夊彇鏃堕棿\")\r\n    private String templatename;\r\n\r\n    /**\r\n     * 鍙戝鐞嗘剰瑙侊細1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫閫乁UID\r\n     */\r\n    @Excel(name = \" 澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫 \")\r\n    @ApiModelProperty(value = \"澶勭悊鎰忚锛�1鏆備笉澶勭悊銆�2閫氱煡灏辫瘖銆�3鐥呮儏绋冲畾銆�4浜哄伐闅忚銆�5澶辫\")\r\n    private String suggest;\r\n\r\n    /**\r\n     * 鍙戦�佹棩鏈焅r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鍙戦�佹棩鏈� \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"鍙戦�佹棩鏈焅")\r\n    private Date senddate;\r\n\r\n    /**\r\n     * 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓婂崍寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitabegin;\r\n\r\n    /**\r\n     * 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓婂崍缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitaend;\r\n\r\n    /**\r\n     * 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓嬪崍寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitpbegin;\r\n\r\n    /**\r\n     * 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"涓嬪崍缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitpend;\r\n\r\n    /**\r\n     * 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"鏅氫笂寮�濮嬪彂閫佹椂闂撮檺鍒禱")\r\n    private String sendlimitnbegin;\r\n\r\n    /**\r\n     * 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒禱r\n     */\r\n    @Excel(name = \" 鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒� \")\r\n    @ApiModelProperty(value = \"鏅氫笂缁撴潫鍙戦�佹椂闂撮檺鍒禱")\r\n    private String sendlimitnend;\r\n\r\n    /**\r\n     * 鍙戦�佺姸鎬乗r\n     */\r\n//    @Excel(name = \" 鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴怽\\") \")\r\n    @ApiModelProperty(value = \"鍙戦�佺姸鎬� 1 琚鍙�(鍦ㄤ换鍔′腑鏄柊寤猴紝鍦ㄦ湇鍔′腑鏄棰嗗彇)  2 寰呭彂閫�  3 宸插彂閫�  4 涓嶆墽琛�  5 鍙戦�佸け璐� 6 宸插畬鎴怽")\r\n    private Long sendstate;\r\n\r\n    /**\r\n     * 鏆傚仠鐘� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1\r\n     */\r\n//    @Excel(name = \" 鏆傚仠鐘� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1 \")\r\n    @ApiModelProperty(value = \"鏆傚仠鐘� 锛� 鐘舵�佸鏋滃彂鐢熶慨鏀癸紝鍊煎氨鍔�1\")\r\n    private Long stopState;\r\n\r\n    /**\r\n     * 鍙戦�乁UID\r\n     */\r\n//    @Excel(name = \" 鍙戦�乁UID \")\r\n    @ApiModelProperty(value = \"鍙戦�乁UID\")\r\n    private String senduuid;\r\n\r\n    /**\r\n     * 缁撴灉\r\n     */\r\n//    @Excel(name = \" 缁撴灉 \")\r\n    @ApiModelProperty(value = \"缁撴灉\")\r\n    private String result;\r\n\r\n    /**\r\n     * 瀹屾垚鏃堕棿\r\n     */\r\n    @JsonFormat(timezone = \"GMT+8\", pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @ApiModelProperty(value = \"瀹屾垚鏃堕棿\")\r\n    private Date finishtime;\r\n\r\n    /**\r\n     * 灏辫瘖璁板綍缂栧彿\r\n     */\r\n    @Excel(name = \" 灏辫瘖璁板綍缂栧彿 \")\r\n    @ApiModelProperty(value = \"灏辫瘖璁板綍缂栧彿\")\r\n    private Long recordid;\r\n\r\n    /**\r\n     * 褰撳墠閲嶆嫧娆℃暟\r\n     */\r\n    @Excel(name = \" 褰撳墠閲嶆嫧娆℃暟 \")\r\n    @ApiModelProperty(value = \"褰撳墠閲嶆嫧娆℃暟\")\r\n    private Long exrecallcount;\r\n\r\n    /**\r\n     * 鎷夊彇鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 鎷夊彇鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"鎷夊彇鏃堕棿\")\r\n    private Date pulltime;\r\n\r\n    /**\r\n     * 閮ㄩ棬code\r\n     */\r\n    @Excel(name = \"  閮ㄩ棬code\")\r\n    @ApiModelProperty(value = \"閮ㄩ棬code\")\r\n    private String deptcode;\r\n\r\n    /**\r\n     * 鍖荤敓缂栫爜\r\n     */\r\n    @Excel(name = \"  鍖荤敓缂栫爜\")\r\n    @ApiModelProperty(value = \"鍖荤敓缂栫爜\")\r\n    private String drcode;\r\n\r\n    /**\r\n     * 鍖荤敓濮撳悕\r\n     */\r\n    @Excel(name = \"  鍖荤敓濮撳悕\")\r\n    @ApiModelProperty(value = \"鍖荤敓濮撳悕\")\r\n    private String drname;\r\n\r\n    /**\r\n     * 鏍囩鐘舵�乗r\n     */\r\n    @Excel(name = \"  鏍囩鐘舵�乗")\r\n    @ApiModelProperty(value = \"鏍囩鐘舵�乗")\r\n    private Long labelstatus;\r\n\r\n    /**\r\n     * 鍒犻櫎鏍囪\r\n     */\r\n    @ApiModelProperty(value = \"鍒犻櫎鏍囪\")\r\n    private String delFlag;\r\n\r\n    /**\r\n     * 涓婁紶鏍囪\r\n     */\r\n    @Excel(name = \" 涓婁紶鏍囪 \")\r\n    @ApiModelProperty(value = \"涓婁紶鏍囪\")\r\n    private Long isupload;\r\n\r\n    /**\r\n     * 涓婁紶鏃堕棿\r\n     */\r\n    @JsonFormat(pattern = \"yyyy-MM-dd\")\r\n    @Excel(name = \" 涓婁紶鏃堕棿 \", width = 30, dateFormat = \"yyyy-MM-dd\")\r\n    @ApiModelProperty(value = \"涓婁紶鏃堕棿\")\r\n    private Date uploadTime;\r\n\r\n    /**\r\n     * 鏈烘瀯ID\r\n     */\r\n    @Excel(name = \" 鏈烘瀯ID \")\r\n    @ApiModelProperty(value = \"鏈烘瀯ID\")\r\n    private String orgid;\r\n\r\n    /**\r\n     * 鏂囨湰鍙橀噺鍙傛暟\r\n     */\r\n    @Excel(name = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    @ApiModelProperty(value = \"鏂囨湰鍙橀噺鍙傛暟\")\r\n    private String textParam;\r\n\r\n    /**\r\n     * 瀹f暀褰㈠紡 : 1,鐭俊銆�2,绾夸笅銆�3,璇煶銆�4,瑙嗛銆�5,绾歌川  6.閾炬帴  7.閽夐拤   8.寰俊\r\n     */\r\n    @Excel(name = \" 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤\")\r\n    @ApiModelProperty(\"瀹f暀褰㈠紡 : 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤\")\r\n    private String preachform;\r\n\r\n    /**\r\n     * 搴婂彿\r\n     */\r\n    @Excel(name = \"搴婂彿\")\r\n    @ApiModelProperty(value = \"搴婂彿\")\r\n    private String bedNo;\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @Excel(name = \"pageNum\")\r\n    @ApiModelProperty(value = \"pageNum\")\r\n    private Integer pageNum;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @Excel(name = \"pageSize\")\r\n    @ApiModelProperty(value = \"pageSize\")\r\n    private Integer pageSize;\r\n\r\n\r\n    /**\r\n     * 鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦�乗r\n     */\r\n    @ApiModelProperty(value = \"鍙戦�佺被鍨�: 1 鏃堕棿娈�   2 鏃堕棿鐐�   3 鍗冲埢鍙戦�乗")\r\n    private String sendType;\r\n\r\n    /**\r\n     * 浠诲姟鍚嶇О\r\n     */\r\n    @Excel(name = \"浠诲姟鍚嶇О\")\r\n    @ApiModelProperty(value = \"浠诲姟鍚嶇О\")\r\n    private String taskName;\r\n\r\n    /**\r\n     * 浠诲姟鎻忚堪\r\n     */\r\n    @Excel(name = \"浠诲姟鎻忚堪\")\r\n    @ApiModelProperty(value = \"浠诲姟鎻忚堪\")\r\n    private String taskDesc;\r\n\r\n\r\n    /**\r\n     * 闅忚浜篭r\n     */\r\n    @Excel(name = \"  闅忚浜�  \")\r\n    @ApiModelProperty(value = \"闅忚浜篭")\r\n    private String operator;\r\n\r\n    /**\r\n     * 闅忚浜篭r\n     */\r\n    @Excel(name = \"  闅忚浜虹紪鍙�  \")\r\n    @ApiModelProperty(value = \"闅忚浜虹紪鍙穃")\r\n    private String operatorNo;\r\n\r\n    /**\r\n     * 灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛�  \")\r\n    @ApiModelProperty(value = \"灏辫瘖缂栧彿锛堝搴旂殑outhospno銆乮nhospno锛塡")\r\n    private String hospno;\r\n\r\n    /**\r\n     * 灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡r\n     */\r\n    @Excel(name = \"  灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌锛塡")\r\n    @ApiModelProperty(value = \"灏辫瘖绫诲瀷锛�1闂ㄨ瘖  2鍑洪櫌 3.涓撶梾 4.澶栭儴瀵煎叆 5鎬ヨ瘖銆�5浣忛櫌銆�7浣撴锛塡")\r\n    private String hospType;\r\n\r\n\r\n    /**\r\n     * 寰俊\r\n     */\r\n    @Excel(name = \"  寰俊\")\r\n    @ApiModelProperty(value = \"寰俊\")\r\n    private String wechat;\r\n\r\n    /**\r\n     * 鍑洪櫌璇婃柇缂栫爜\r\n     */\r\n    @Excel(name = \"  鍑洪櫌璇婃柇缂栫爜\")\r\n    @ApiModelProperty(value = \"鍑洪櫌璇婃柇缂栫爜\")\r\n    private String leaveicd10code;\r\n    /**\r\n     * 鍑洪櫌璇婃柇鍚嶇О\r\n     */\r\n    @Excel(name = \"  鍑洪櫌璇婃柇鍚嶇О\")\r\n    @ApiModelProperty(value = \"鍑洪櫌璇婃柇鍚嶇О\")\r\n    private String leavediagname;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"  鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private Long patid;\r\n\r\n    /**\r\n     * 鎮h�匢D\r\n     */\r\n    @Excel(name = \"  鎮h�匢D\")\r\n    @ApiModelProperty(value = \"鎮h�匢D\")\r\n    private String patguid;\r\n\r\n    /**\r\n     * 绉戝鍚嶇О\r\n     */\r\n    @Excel(name = \"绉戝鍚嶇О\")\r\n    @ApiModelProperty(value = \"绉戝鍚嶇О\")\r\n    private String deptname;\r\n\r\n    /**\r\n     * 灏辫瘖鏃ユ湡\r\n     */\r\n    @Excel(name = \" 灏辫瘖鏃ユ湡\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    @ApiModelProperty(value = \"灏辫瘖鏃ユ湡\")\r\n    private Date admindate;\r\n\r\n    /**\r\n     * 鐥呮埧鍙穃r\n     */\r\n    @Excel(name = \"  鐥呮埧鍙穃")\r\n    @ApiModelProperty(value = \"鐥呮埧鍙穃")\r\n    private String roomno;\r\n\r\n    /**\r\n     * 妯℃澘搴撴ā鐗圛D\r\n     */\r\n    @Excel(name = \"妯℃澘搴撴ā鐗圛D\")\r\n    @ApiModelProperty(value = \"妯℃澘搴撴ā鐗圛D\")\r\n    private Long libtemplateid;\r\n\r\n    /**\r\n     * 鎬诲垎\r\n     */\r\n    @Excel(name = \"鎬诲垎\")\r\n    @ApiModelProperty(value = \"鎬诲垎\")\r\n    private BigDecimal score;\r\n\r\n    /**\r\n     * 妯℃澘搴撴ā鐗堝悕绉癨r\n     */\r\n    @Excel(name = \"妯℃澘搴撴ā鐗堝悕绉癨")\r\n    @ApiModelProperty(value = \"妯℃澘搴撴ā鐗堝悕绉癨")\r\n    private String libtemplatename;\r\n\r\n\r\n    /**\r\n     * 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\r\n     */\r\n    @Excel(name = \" 闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\")\r\n    @ApiModelProperty(value = \"闀挎湡浠诲姟锛岀粰鎮h�呭彂閫佺殑鏃堕棿\")\r\n    private Date longSendTime;\r\n\r\n    /**\r\n     * 璐d换鎶ゅ+缂栫爜\r\n     */\r\n    @Excel(name = \"璐d换鎶ゅ+缂栫爜\")\r\n    @ApiModelProperty(\"璐d换鎶ゅ+缂栫爜\")\r\n    private String nurseId;\r\n\r\n    /**\r\n     * 璐d换鎶ゅ+濮撳悕\r\n     */\r\n    @Excel(name = \"璐d换鎶ゅ+濮撳悕\")\r\n    @ApiModelProperty(\"璐d换鎶ゅ+濮撳悕\")\r\n    private String nurseName;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿\")\r\n    private String leavehospitaldistrictcode;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯鍚嶇О\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯鍚嶇О\")\r\n    @Excel(name = \" 鍑洪櫌鐥呭尯鍚嶇О \")\r\n    private String leavehospitaldistrictname;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌鐥呭尯缂栧彿闆嗗悎\")\r\n    private List<String> leavehospitaldistrictcodes;\r\n\r\n    /**\r\n     * 鍑洪櫌鐥呭尯缂栧彿\r\n     */\r\n    @ApiModelProperty(value = \"鍑洪櫌閮ㄩ棬缂栧彿闆嗗悎\")\r\n    private List<String> leaveldeptcodes;\r\n\r\n    @ApiModelProperty(value = \"鍙戦�佽鎯匼")\r\n    private List<ServiceSubtaskRecord> serviceSubtaskRecordList;\r\n\r\n    @ApiModelProperty(value = \"url\")\r\n    private String url;\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呮潵婧愶細0鏈湴鎮h�呰〃    1澶栭儴鎮h�呰〃\")\r\n    private String patfrom;\r\n\r\n    /**\r\n     * 闅忚娆℃暟\r\n     */\r\n    @ApiModelProperty(value = \"闅忚娆℃暟\")\r\n    private Integer visitCount;\r\n\r\n    /**\r\n     * 澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡\r\n     */\r\n    @ApiModelProperty(value = \"澶嶈瘖閫氱煡锛�0宸查�氱煡    1鏈�氱煡\")\r\n    private Integer visitNotice;\r\n\r\n    /**\r\n     * 鏄惁鍦ㄦ闅忚锛�1鍚�    2鏄痋r\n     */\r\n    @ApiModelProperty(value = \"鏄惁鍦ㄦ闅忚锛�1鏄�    2鍚")\r\n    private Integer isVisitAgain;\r\n\r\n    /**\r\n     * 鎮h�呬笂娆¢殢璁跨殑subId\r\n     */\r\n    @ApiModelProperty(value = \"鎮h�呬笂娆¢殢璁跨殑subId\")\r\n    private Integer upid;\r\n\r\n    @ApiModelProperty(value = \"闅忚鏃堕棿\")\r\n    @JsonFormat(pattern = \"yyyy-MM-dd HH:mm:ss\")\r\n    private Date visitTime;\r\n\r\n    /**\r\n     * 闅忚鏂瑰紡\r\n     */\r\n    @ApiModelProperty(value = \"闅忚鏂瑰紡\")\r\n    private String visitType;\r\n\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬缂栫爜\")\r\n    private String visitDeptCode;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬鍚嶇О\")\r\n    private String visitDeptName;\r\n\r\n    @ApiModelProperty(value = \"闅忚閮ㄩ棬缂栫爜闆嗗悎\")\r\n    private List<String> visitDeptCodes;\r\n\r\n    /**\r\n     * pageNum\r\n     */\r\n    @Excel(name = \"pn\")\r\n    @ApiModelProperty(value = \"pn\")\r\n    private Integer pn;\r\n\r\n    /**\r\n     * pageSize\r\n     */\r\n    @Excel(name = \"ps\")\r\n    @ApiModelProperty(value = \"ps\")\r\n    private Integer ps;\r\n\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"缁忕鍖荤敓缂栫爜\")\r\n    private String managementDoctorCode;\r\n\r\n    /**\r\n     * 鎮h�呮潵婧怽r\n     */\r\n    @ApiModelProperty(value = \"缁忕鍖荤敓\")\r\n    private String managementDoctor;\r\n}\r\n
-Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
-<+>UTF-8
-===================================================================
-diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
---- a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java	(revision d52fedc8f49c1e7d9e58dcde1b278470e4228f39)
-+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java	(date 1758798203412)
-@@ -68,8 +68,8 @@
-     /**
-      * 寮傚父鏍囪瘑
-      */
--    @ApiModelProperty(value = "寮傚父鏍囪瘑")
--    @Excel(name = " 寮傚父鏍囪瘑 ")
-+    @ApiModelProperty(value = "寮傚父鏍囪瘑锛�0缁胯壊锛�1绾㈣壊锛�2榛勮壊")
-+    @Excel(name = " 寮傚父鏍囪瘑:0缁胯壊锛�1绾㈣壊锛�2榛勮壊 ")
-     private String excep;
- 
-     /**
-@@ -158,8 +158,8 @@
-     /**
-      * 鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)
-      */
--    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚)")
--    @ApiModelProperty(value = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佹弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚")
-+    @Excel(name = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿 16璇鹃闅忚")
-+    @ApiModelProperty(value = "鏈嶅姟绫诲瀷(1銆佺洃娴嬭瘎浼帮紱2銆佸嚭闄㈤殢璁匡紱3銆侀棬璇婇殢璁匡紱4銆佸鏁欏叧鎬�锛�5銆佸璇婄鐞嗭紱6銆佷綇闄㈡弧鎰忓害璋冩煡锛�7銆佹偅鑰呮姤鍛婏紱 8銆佸叾浠栭�氱煡 9浣撴闅忚 10.鍖绘妧闅忚  11锛屽奖鍍忎笓绉戦殢璁�  12銆佸績鐢典笓绉戦殢璁匡紝 13涓撶闅忚   14銆侀棬璇婃弧鎰忓害璋冩煡  15鎶曡瘔寤鸿  16璇鹃闅忚")
-     private String serviceType;
- 
-     /**
-@@ -360,6 +360,13 @@
-     @ApiModelProperty("瀹f暀褰㈠紡 : 浠诲姟褰㈠紡 1,浜哄伐   2,绾歌川  3,鐢佃瘽  4,鐭俊  5.寰俊鍏紬鍙� 6.寰俊灏忕▼搴�  7.鏀粯瀹�  8.鏅鸿兘灏忕▼搴�  9.閽夐拤")
-     private String preachform;
- 
-+    /**
-+     * 褰撳墠鍙戦�佹柟寮�
-+     */
-+    @Excel(name = " 褰撳墠鍙戦�佹柟寮�")
-+    @ApiModelProperty("褰撳墠鍙戦�佹柟寮�")
-+    private String currentPreachform;
-+
-     /**
-      * 搴婂彿
-      */
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_29_17_53__Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_29_17_53__Changes_.xml
deleted file mode 100644
index 62a4e71..0000000
--- a/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_29_17_53__Changes_.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<changelist name="Uncommitted_changes_before_Update_at_2025_9_29_17_53_[Changes]" date="1759139593536" recycled="true" deleted="true">
-  <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_2025_9_29_17_53_[Changes]/shelved.patch" />
-  <option name="DESCRIPTION" value="Uncommitted changes before Update at 2025/9/29 17:53 [Changes]" />
-</changelist>
\ No newline at end of file
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 0e049db..91ba685 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -185,12 +185,6 @@
             <artifactId>postgresql</artifactId>
             <version>42.6.0</version> <!-- 璇锋牴鎹渶瑕侀�夋嫨鏈�鏂扮増鏈� -->
         </dependency>
-        <!--oracle-->
-        <dependency>
-            <groupId>com.oracle.database.jdbc</groupId>
-            <artifactId>ojdbc8</artifactId>
-            <scope>runtime</scope>
-        </dependency>
     </dependencies>
     <build>
         <plugins>
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java
index 8c3a964..5c0afd1 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SmsController.java
@@ -5,6 +5,7 @@
 import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.FileUtils;
+import com.ruoyi.common.utils.http.HttpUtils;
 import com.ruoyi.common.utils.sms.smsUtils;
 import com.ruoyi.framework.config.ServerConfig;
 import com.smartor.domain.HtmlContentVO;
@@ -15,6 +16,9 @@
 import com.smartor.service.IServiceOutPathService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.MediaType;
@@ -30,6 +34,7 @@
 @RestController
 @Api(description = "鐭ヤ俊鎺ュ彛")
 @RequestMapping("/sms")
+@Slf4j
 public class SmsController {
     @Value("${xhsmsPath}")
     private String xhsmsPath;
@@ -61,18 +66,17 @@
      * @return
      */
     @ApiOperation("鐭俊鍙戦��")
-    @PostMapping("/send")
+    @PostMapping("/sendTest")
     public AjaxResult send(@RequestBody smsVO vo) {
-        String sendMsg = smsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, vo.getPhone(), vo.getContent());
+        String sendMsg=smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,vo.getPhone(),vo.getContent());
         return AjaxResult.success(sendMsg);
     }
-
     /**
      * @param
      * @return
      */
     @ApiOperation("鐭俊鍙戦��")
-    @PostMapping("/sendAsk")
+    @PostMapping("/send")
     public AjaxResult sendAsk(@RequestBody smsVO vo) throws UnsupportedEncodingException {
         RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
         String taskId = rsaPublicKeyExample.encryptedData(vo.getTaskId().toString(), pub_key);
@@ -84,11 +88,13 @@
         serviceOutPath.setParam3(vo.getTaskName());
         serviceOutPath.setParam6(subId);
         serviceOutPath.setCreateTime(new Date());
+        String format ="";
+        if(ObjectUtils.isNotEmpty(vo.getSubId())) {
+            format = String.format("%03X", Integer.parseInt(vo.getSubId()));
+            serviceOutPath.setRadix(format);
+        }
         iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-        String format = String.format("%03X", serviceOutPath.getId());
-        serviceOutPath.setRadix(format);
-        serviceOutPath.setUpdateTime(new Date());
-        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+
         String url = ip + ":" + req_path + "/wt?p=" + format;
         ServiceTask serviceTask = serviceTaskMapper.selectServiceTaskByTaskid(Long.valueOf(taskId));
         //濡傛灉type鏄闊抽殢璁跨殑璇濓紙璇存槑琛ュ伩鍙戦�佹柟寮忎腑鏈夌數璇濋殢璁跨殑鏂瑰紡锛岃繖閲岀殑澶栭摼灏卞湴鍧�鍙兘鐢�/sf锛�
@@ -96,12 +102,46 @@
             url = ip + ":" + req_path + "/sf?p=" + format;
         }
 
+        String content="鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + url + "濉啓銆傛劅璋㈡偍閰嶅悎锛�";
+        if(ObjectUtils.isNotEmpty(vo.getContent()))
+            content=vo.getContent();
+        else
+            sendChat(vo);
+        String sendMsg="";
+        try{
+            sendMsg=smsUtils.sendSms(xhsmsPath,xhsmsAccount,xhsmsPwd,vo.getPhone(),content);
+            log.info(sendMsg);
+        }catch (Exception ex){
+            log.error(ex.getMessage());
+        }
+        return AjaxResult.success(sendMsg);
+    }
 
-        //String url = = ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(vo.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false";
+    /**
+     * @param
+     * @return
+     */
+    @ApiOperation("寰俊鍙戦��")
+    @PostMapping("/sendChat")
+    public AjaxResult sendChat(@RequestBody smsVO vo) throws UnsupportedEncodingException {
+        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+        String taskId = rsaPublicKeyExample.encryptedData(vo.getTaskId().toString(), pub_key);
+        String patid = rsaPublicKeyExample.encryptedData(vo.getPatId().toString(), pub_key);
+        String url = ip + ":" + req_path + "/outsideChainwt?param1=" + taskId + "&param2=" + patid
+                + "&param3=" + URLEncoder.encode(vo.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false";
 
-        String content = "鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + url + "濉啓銆傛劅璋㈡偍閰嶅悎锛�";
+        String content="鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑�" + url + "濉啓銆傛劅璋㈡偍閰嶅悎锛�";
 
-        String sendMsg = smsUtils.sendSms(xhsmsPath, xhsmsAccount, xhsmsPwd, vo.getPhone(), content);
+        String urlTemp="http://192.200.54.14:5003/sfjk/SendMessage?sfzh="+vo.getIdCard()
+                +"&title=鎮ㄥソ锛岄個璇锋偍濉啓鍑洪櫌璋冩煡琛紝璇风偣鍑诲~鍐欍��&content="+content+"&phone="+vo.getPhone()
+                +"&url="+url+"&key=ff76f8904f5f32b5ee1739e8ea46e60g";
+        String sendMsg= "";
+        try{
+            sendMsg= HttpUtils.sendGet(urlTemp);
+            log.info(sendMsg);
+        }catch (Exception ex){
+            log.error(ex.getMessage());
+        }
         return AjaxResult.success(sendMsg);
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
index d24f5ee..27c1c48 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
@@ -77,6 +77,15 @@
     }
 
     /**
+     * 鏍规嵁鍙傛暟閿悕鏌ヨ鍙傛暟鍊�
+     */
+    @GetMapping(value = "/configKeyOrg")
+    public AjaxResult getConfigKeyOrg(String configKey,String orgid)
+    {
+        return success(configService.selectConfigByKey(configKey,orgid));
+    }
+
+    /**
      * 鏂板鍙傛暟閰嶇疆
      */
     //@PreAuthorize("@ss.hasPermi('system:config:add')")
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index b31ef4f..3676437 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -29,19 +29,15 @@
         #        driverClassName: com.mysql.cj.jdbc.Driver
 
         #  鍏徃浜�
-        #        url: jdbc:mysql://116.62.18.175:6002/smartor_lishui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-        #        username: hxsoft
-        #        password: Smartor.2023
-        #        driverClassName: com.mysql.cj.jdbc.Driver
+#        url: jdbc:mysql://116.62.18.175:6002/smartor_xinhua?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+#        username: hxsoft
+#        password: Hxerp2000
+#        driverClassName: com.mysql.cj.jdbc.Driver
         #  鍏徃鏈湴
         url: jdbc:mysql://haiershi.a1.luyouxia.net:23844/smartor_lishui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
         username: smartor
         password: Smartor.2023
         driverClassName: com.mysql.cj.jdbc.Driver
-      #        url: jdbc:mysql://127.0.0.1:2881/smartor-lisui?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-      #        username: root@sys
-      #        password:
-      #        driverClassName: com.mysql.cj.jdbc.Driver
 
       #        # 楂樻柉鏁版嵁搴撻厤缃�
       #        url: jdbc:postgresql://127.0.0.1:5432/smartorlishui
@@ -62,11 +58,11 @@
       #        password: Smartor.2023
       #        driverClassName: com.mysql.cj.jdbc.Driver
       # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(鍏徃)
-      #       enabled: true
-      #       url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor
-      #       username: sa
-      #       password: Hxerp2000
-      #       driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
+#       enabled: true
+#       url: jdbc:sqlserver://116.62.18.175:6001;DatabaseName=iv-ywey;encrypt=false;SelectMethod=cursor
+#       username: sa
+#       password: Hxerp2000
+#       driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
 
       # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴(涔変箤浜岄櫌)
       # enabled: true
@@ -117,7 +113,7 @@
             multi-statement-allow: true
   # redis 閰嶇疆
   redis:
-    host: 127.0.0.1
+    host: 192.168.100.10
     port: 6020
     database: 0
     password: Smartor
@@ -144,7 +140,6 @@
   sql-column-case: camel
   show-sql: true #閰嶇疆鎵撳嵃SQL
   page-config:
-    enabled: false  #绂佺敤鍒嗛〉
     size: size
     page: page
     default-page: 1
@@ -207,9 +202,9 @@
 
 #鏂板崕鍖婚櫌澶栭摼璇锋眰IP鍜岀鍙e彿
 req_path: 8093
-localIP: https://wx.lihusmart.com
+#localIP: https://wx.lihusmart.com
 #涓芥按澶栭摼璇锋眰IP鍜岀鍙e彿
-#localIP: http://221.12.19.26
+localIP: http://221.12.19.26
 
 #鑾峰彇鎮h�呬俊鎭疷RL(鍗庡崜鎻愪緵)
 hosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange
@@ -218,9 +213,9 @@
 uploadSwitch: 0
 
 #  鎸囧畾asr鍥炶皟鐨剈rl璺緞(鏈湴)
-ASRCallBackPath: http://192.168.100.127:8095/smartor/serviceSubtask/phoneCallBackYQ
+ASRCallBackPath: http://192.168.100.10:8095/smartor/serviceSubtask/phoneCallBackYQ
 #鎸傛柇IP(鏈湴)
-hangup: http://192.168.100.33:5060/hangup
+hangup: http://192.168.100.6:8089/hangup
 #fs鎵�浣跨敤鐨勯樋閲岀殑app_key(鏈湴)
 app_key_yq: ZurNHpaQLq6P55YS
 
@@ -272,11 +267,6 @@
 isAdmin: 1,2,3,4,5,6,7,8,9,10,11,12,13
 
 #闅忚鍖婚櫌锛�1鏂板崕   2涓芥按
-visitHosp: 1
+visitHosp: 2
 
 isEncryp:
-
-dealDeptCode:
-
-# 鍓嶇ip
-qdip: 192.168.100.132
diff --git a/ruoyi-admin/src/main/resources/application-hzszlyy.yml b/ruoyi-admin/src/main/resources/application-hzszlyy.yml
index c8967b7..4c2bc54 100644
--- a/ruoyi-admin/src/main/resources/application-hzszlyy.yml
+++ b/ruoyi-admin/src/main/resources/application-hzszlyy.yml
@@ -150,10 +150,10 @@
 #localIP: 192.168.2.13
 
 #鏂板崕鍖婚櫌澶栭摼璇锋眰IP鍜岀鍙e彿
-req_path: 8093
+req_path: 8092
 #localIP: https://wx.lihusmart.com
 #涓芥按澶栭摼璇锋眰IP鍜岀鍙e彿
-localIP: http://221.12.19.26
+localIP: http://sf.wehzsy.com
 
 #鑾峰彇鎮h�呬俊鎭疷RL(鍗庡崜鎻愪緵)
 hosp_info_url: http://esb-core-rest.wowjoy.cn/esb/exchange
diff --git a/ruoyi-common/ruoyi-common.iml b/ruoyi-common/ruoyi-common.iml
deleted file mode 100644
index 1daccae..0000000
--- a/ruoyi-common/ruoyi-common.iml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module version="4">
-  <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-  </component>
-</module>
\ No newline at end of file
diff --git a/ruoyi-framework/ruoyi-framework.iml b/ruoyi-framework/ruoyi-framework.iml
deleted file mode 100644
index 1daccae..0000000
--- a/ruoyi-framework/ruoyi-framework.iml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module version="4">
-  <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-  </component>
-</module>
\ No newline at end of file
diff --git a/ruoyi-generator/ruoyi-generator.iml b/ruoyi-generator/ruoyi-generator.iml
deleted file mode 100644
index 1daccae..0000000
--- a/ruoyi-generator/ruoyi-generator.iml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module version="4">
-  <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-  </component>
-</module>
\ No newline at end of file
diff --git a/ruoyi-quartz/ruoyi-quartz.iml b/ruoyi-quartz/ruoyi-quartz.iml
deleted file mode 100644
index 1daccae..0000000
--- a/ruoyi-quartz/ruoyi-quartz.iml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module version="4">
-  <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-  </component>
-</module>
\ No newline at end of file
diff --git a/ruoyi-system/ruoyi-system.iml b/ruoyi-system/ruoyi-system.iml
deleted file mode 100644
index 1daccae..0000000
--- a/ruoyi-system/ruoyi-system.iml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module version="4">
-  <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-  </component>
-</module>
\ No newline at end of file
diff --git a/smartor/smartor.iml b/smartor/smartor.iml
deleted file mode 100644
index ecab3f5..0000000
--- a/smartor/smartor.iml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module version="4">
-  <component name="FacetManager">
-    <facet type="Spring" name="Spring">
-      <configuration>
-        <fileset id="fileset" name="Spring 搴旂敤绋嬪簭涓婁笅鏂�" removed="false">
-          <file>file://$MODULE_DIR$/src/main/java/com/smartor/config/RobotPhoneUtils.java</file>
-        </fileset>
-      </configuration>
-    </facet>
-  </component>
-</module>
\ No newline at end of file
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
index e0ac5c6..5d7a07b 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtask.java
@@ -645,4 +645,7 @@
      */
     @ApiModelProperty(value = "缁忕鍖荤敓")
     private String managementDoctor;
+
+    @ApiModelProperty(value = "闅忚鎯呭喌:1姝e父璇煶,2鎮h�呮嫆鎺ユ垨鎷掕,3闈㈣鎴栬�呮帴璇�,4寰俊闅忚,5闅忚鐢佃瘽涓嶆纭�,6鍏朵粬")
+    private Integer taskSituation;
 }
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
index b98759a..eabcd62 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
@@ -188,4 +188,23 @@
 
     @ApiModelProperty(value = "婊℃剰搴︽瘮渚�")
     private String joyTotal="";
+
+    @ApiModelProperty(value = "闅忚鎯呭喌:1姝e父璇煶")
+    private Integer taskSituation1 = 0;
+
+    @ApiModelProperty(value = "闅忚鎯呭喌:2鎮h�呮嫆鎺ユ垨鎷掕")
+    private Integer taskSituation2 = 0;
+
+    @ApiModelProperty(value = "闅忚鎯呭喌:3闈㈣鎴栬�呮帴璇�")
+    private Integer taskSituation3 = 0;
+
+    @ApiModelProperty(value = "闅忚鎯呭喌:4寰俊闅忚")
+    private Integer taskSituation4 = 0;
+
+    @ApiModelProperty(value = "闅忚鎯呭喌:5闅忚鐢佃瘽涓嶆纭�")
+    private Integer taskSituation5 = 0;
+
+    @ApiModelProperty(value = "闅忚鎯呭喌:6鍏朵粬")
+    private Integer taskSituation6 = 0;
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/smsVO.java b/smartor/src/main/java/com/smartor/domain/smsVO.java
index ab3aba3..6dcc458 100644
--- a/smartor/src/main/java/com/smartor/domain/smsVO.java
+++ b/smartor/src/main/java/com/smartor/domain/smsVO.java
@@ -25,4 +25,7 @@
     @ApiModelProperty(value = "鎮h�匢D")
     private String patId;
 
+    @ApiModelProperty(value = "韬唤璇佸彿")
+    private String idCard;
+
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index cdb456b..fb24dc7 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -2303,8 +2303,25 @@
                     serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L);
                 }
             }
-
-
+            //闅忚鎯呭喌
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() ==1) {
+                serviceSubtaskStatistic.setTaskSituation1(serviceSubtaskStatistic.getTaskSituation1() + 1);
+            }
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() ==2) {
+                serviceSubtaskStatistic.setTaskSituation2(serviceSubtaskStatistic.getTaskSituation2() + 1);
+            }
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() ==3) {
+                serviceSubtaskStatistic.setTaskSituation3(serviceSubtaskStatistic.getTaskSituation3() + 1);
+            }
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() ==4) {
+                serviceSubtaskStatistic.setTaskSituation4(serviceSubtaskStatistic.getTaskSituation4() + 1);
+            }
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() ==5) {
+                serviceSubtaskStatistic.setTaskSituation5(serviceSubtaskStatistic.getTaskSituation5() + 1);
+            }
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() ==6) {
+                serviceSubtaskStatistic.setTaskSituation6(serviceSubtaskStatistic.getTaskSituation6() + 1);
+            }
         }
 
 
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index cd63052..6e2c64e 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -85,6 +85,7 @@
         <result property="managementDoctor" column="management_doctor"/>
         <result property="managementDoctorCode" column="management_doctor_code"/>
         <result property="currentPreachform" column="current_preachform"/>
+        <result property="taskSituation" column="task_situation"/>
     </resultMap>
 
     <resultMap type="com.smartor.domain.ServiceSubtaskCount" id="ServiceSubtaskResult2">
@@ -183,7 +184,8 @@
                orgid,
                visit_type,
                management_doctor,
-               management_doctor_code
+               management_doctor_code,
+               task_situation
         from service_subtask
     </sql>
 
@@ -624,6 +626,7 @@
             <if test="managementDoctorCode != null">management_doctor_code,</if>
             <if test="managementDoctor != null">management_doctor,</if>
             <if test="currentPreachform != null">current_preachform,</if>
+            <if test="taskSituation != null">task_situation,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="sendname != null">#{sendname},</if>
@@ -708,6 +711,7 @@
             <if test="managementDoctorCode != null">#{managementDoctorCode},</if>
             <if test="managementDoctor != null">#{managementDoctor},</if>
             <if test="currentPreachform != null">#{currentPreachform},</if>
+            <if test="taskSituation != null">#{taskSituation},</if>
         </trim>
     </insert>
 
@@ -797,6 +801,7 @@
             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
             <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
+            <if test="taskSituation != null">task_situation=#{taskSituation},</if>
         </trim>
         where id = #{id}
     </update>
@@ -887,6 +892,7 @@
             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
             <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
+            <if test="taskSituation != null">task_situation=#{taskSituation},</if>
         </trim>
         <where>
             <if test="patid != null ">and patid = #{patid}</if>
@@ -979,6 +985,7 @@
             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
             <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
+            <if test="taskSituation != null">task_situation=#{taskSituation},</if>
         </trim>
         where patid = #{patid} and taskid = #{taskid}
     </update>
@@ -1068,6 +1075,7 @@
             <if test="managementDoctorCode != null">management_doctor_code = #{managementDoctorCode},</if>
             <if test="managementDoctor != null">management_doctor=#{managementDoctor},</if>
             <if test="currentPreachform != null">current_preachform=#{currentPreachform},</if>
+            <if test="taskSituation != null">task_situation=#{taskSituation},</if>
         </trim>
         where task_guid = #{taskGuid} and task_name = #{taskName}
     </update>

--
Gitblit v1.9.3