From 55f5271f893a25a7be671b24938e49976936a67b Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 29 九月 2025 18:30:00 +0800
Subject: [PATCH] 新增Orgid

---
 ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java | 1005 +++++++++++++++++++++++++++++++----------------------------
 1 files changed, 528 insertions(+), 477 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
index 4a742f5..8ed8bdb 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -1,11 +1,11 @@
 package com.ruoyi.web.component;
 
-import afu.org.checkerframework.checker.oigj.qual.O;
 import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.databind.ObjectMapper;
 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;
@@ -15,15 +15,13 @@
 import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.http.HttpUtils;
+import com.ruoyi.system.service.ISysConfigService;
 import com.smartor.common.LSHospTokenUtil;
 import com.smartor.domain.*;
-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;
-import com.sun.org.apache.bcel.internal.generic.NEW;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
@@ -36,12 +34,13 @@
 
 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;
 import java.util.concurrent.TimeUnit;
 
-import static cn.hutool.core.convert.Convert.numberToWord;
 import static cn.hutool.core.convert.Convert.toHex;
 
 @Slf4j
@@ -66,6 +65,10 @@
     @Autowired
     private ServiceSubtaskMapper ivrTaskcallMapper;
 
+
+    @Autowired
+    private HeLibraryMapper heLibraryMapper;
+
     @Autowired
     private ServiceTaskMapper ivrTaskMapper;
 
@@ -82,6 +85,9 @@
     private ServiceSubtaskMapper serviceSubtaskMapper;
 
     @Autowired
+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
+
+    @Autowired
     private IServiceSubtaskRecordService serviceSubtaskRecordService;
 
     @Autowired
@@ -96,6 +102,9 @@
     @Value("${server.port}")
     private String port;
 
+    @Autowired
+    private ISysConfigService configService;
+
     // 鍒涘缓鍥哄畾澶у皬鐨勭嚎绋嬫睜
     private static final ExecutorService executorService = Executors.newFixedThreadPool(10);
 
@@ -107,7 +116,7 @@
     public void onMessage(Message message, byte[] pattern) {
         log.info("鐩戝惉Redis key杩囨湡锛宬ey锛歿}锛宑hannel锛歿}", message.toString(), new String(pattern));
         String ip = localIP;
-        log.error("鏈満鐨勭綉缁淚P涓�:{}", ip);
+        log.info("鏈満鐨勭綉缁淚P涓�:{}", ip);
         String content = message.toString();
         //鍒ゆ柇鏄笉鏄换鍔′俊鎭紝濡傛灉涓嶆槸锛岀洿鎺ヨ繑鍥烇紝涓嶉渶瑕佹墽琛�
         if (!content.contains("taskid") || !port.equals("8095")) {
@@ -157,534 +166,576 @@
      * @param commonTaskcallMQ
      */
     public void tsakHandle(CommonTaskcallMQ commonTaskcallMQ, String ip, Integer type) {
-        log.error("杩涗换鍔′簡鍚楋紵{}", commonTaskcallMQ);
+        log.info("杩涗换鍔′簡鍚楋紵{}", commonTaskcallMQ);
         //鍒ゆ柇涓�涓媍ommonTaskcallMQ涓殑stopstate鏄惁涓巌vr_task涓殑涓�鑷达紝涓嶄竴鑷达紝鍒欒鏄庢槸鏆傚仠浜�
         ServiceTask ivrTask1 = ivrTaskMapper.selectServiceTaskByTaskid(commonTaskcallMQ.getTaskid());
 
-//        if (ivrTask1.getStopState() != commonTaskcallMQ.getStopState()) {
-//            //灏嗘秷鎭粠闃熷垪涓墧闄�
-//            return;
-//        }
+        //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
+        ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+        serviceSubtaskVO.setTaskid(commonTaskcallMQ.getTaskid());
+        serviceSubtaskVO.setSendstate(2L);
+        List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtaskVO);
 
-        if (StringUtils.isNotEmpty(commonTaskcallMQ.getPreachform())) {
-            //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖
-            String[] split = commonTaskcallMQ.getPreachform().split(",");
-            log.error("split鐨勫�间负锛歿}", split);
+        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;
+            }
 
-            //瀹氫箟涓�涓泦鍚堬紝鐢ㄤ笌瀛樻病鏈夋墽琛岀殑瀛愪换鍔D
-            List<Long> subIds = new ArrayList<>();
-            //涓存椂瀛樻病鏈夋墽琛岀殑瀛愪换鍔D
-            List<Long> lssubIds = new ArrayList<>();
-            //鏄惁灏嗗叏閮ㄦ偅鑰呰�呭彂閫佸畬
-            Boolean isSend = false;
+            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;
+            }
 
-            aa:
-            for (String serviceFrom : split) {
-                String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
-                if (isSend == true) {
-                    break aa;
-                }
+            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;
+                    }
 
-                //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭�
-                ServiceSubtaskVO ivrTaskcall = new ServiceSubtaskVO();
-                ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid());
-                ivrTaskcall.setSendstate(1L);
-                List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall);
-                if (CollectionUtils.isEmpty(selectServiceSubtaskList)) {
+                    //鑾峰彇鍒皏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;
                 }
-                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;
+                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
+                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("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);
+
+                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);
+//                                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() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
                         }
 
-                        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.error("缂撳瓨涓璼erviceSubtask1鐨勫�间负锛歿}", serviceSubtask1);
-                                List<String> list = new ArrayList<>();
-                                List<ServiceSubtask> selectServiceSubtaskList1 = ivrTaskcallMapper.selectServiceSubtaskList(serviceSubtask1);
-                                for (ServiceSubtask serviceSubtask2 : selectServiceSubtaskList1) {
-                                    list.add(serviceSubtask2.getId().toString());
-                                }
-                                log.error("缂撳瓨涓璫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);
+                    } 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);
+//                                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);
+                        //濡傛灉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")) {
                         //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-                        String uuid = UUID.randomUUID().toString();
-                        serviceSubtask.setResult("success");
-                        serviceSubtask.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�");
-                        serviceSubtask.setGuid(uuid);
-                        serviceSubtask.setSendstate(3L);
-                        serviceSubtask.setFinishtime(new Date());
-                        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-
+                        setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佹垚鍔�", "2");
                         //浠诲姟鍙戦�佽褰�
                         ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord();
                         serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
                         serviceSubtaskRecord.setSubtaskId(serviceSubtask.getId());
-                        serviceSubtaskRecord.setUuid(uuid);
+                        serviceSubtaskRecord.setUuid(UUID.randomUUID().toString());
                         serviceSubtaskRecord.setTasktype(serviceSubtask.getType());
-                        serviceSubtaskRecord.setPreachform("3");
+                        serviceSubtaskRecord.setPreachform("5");
                         serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-                        serviceSubtaskRecord.setRemark("闃熷垪浠诲姟鐢佃瘽鍙戦�佹垚鍔�");
+                        serviceSubtaskRecord.setResult("success");
+                        serviceSubtaskRecord.setRemark("鐭俊鍙戦�佹垚鍔�");
                         serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
+                        log.error("serviceSubtaskRecord淇濆瓨鎴愬姛浜嗗悧锛燂細{}", serviceSubtaskRecord);
+                    } else {
+                        //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
+                        setFailPreachForm(serviceSubtask, sendPreachform, "鐭俊鍙戦�佸け璐�", "5");
                     }
-                    if (CollectionUtils.isEmpty(lssubIds)) {
-                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜�
-                        isSend = true;
-                    }
-                    //灏嗗瓙浠诲姟ID娓呯┖锛屽皢鈥滀复鏃跺瓙浠诲姟鈥濇暟鎹� 鏀惧埌 鈥滃瓙浠诲姟鈥� 涓�
-                    subIds.clear();
-                    subIds.addAll(lssubIds);
-                    lssubIds.clear();
-                } else if (descByCode.equals("澶氬獟浣�")) {
-                    //澶氬獟浣�
+                } 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;
-                } else if (descByCode.equals("绾歌川")) {
-                    //绾歌川
-                    continue;
-                } 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;
-                        }
+            } 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 {
-                            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() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
-                                }
-
-                            } 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);
-//                                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(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);
-//                                sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainxj?param1=" + taskId + "&param2=" + patid + "&param3=" + URLEncoder.encode(ivrTask1.getTaskName(), StandardCharsets.UTF_8.toString()) + "&param5=false");
-                                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() + "鏌ョ湅銆傛劅璋㈡偍閰嶅悎锛�");
-                            }
-                            //鐭俊杩橀渶瑕佹ā鏉�
-                            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) {
-                                //涓芥按鐨勭煭淇″彂閫佹柟寮�
-                                Map<String, String> map = MsgLSEnum.getAddressByCode(serviceSubtask.getOrgid());
-                                String token = LSHospTokenUtil.getToken(serviceSubtask.getOrgid());
-                                log.error("-----------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.error("---------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.error("---------涓芥按鐭俊鍙戦�佺粨鏋滐細{}-------", 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")) {
-                                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
-                                log.error("serviceSubtask淇濆瓨鎴愬姛浜嗗悧锛燂細{}", s);
-                                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;
-                        }
-
-
+                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 (CollectionUtils.isEmpty(lssubIds)) {
-                        //濡傛灉鈥滀复鏃跺瓙浠诲姟鈥濅负绌猴紝璇存槑鍏ㄥ彂閫佸畬浜�
-                        isSend = true;
+                    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;
                     }
-                    //灏嗗瓙浠诲姟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;
-                            }
 
-                            //鑾峰彇寰俊鍏紬鍙疯姹備俊鎭牴鎹満鏋処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) {
+                    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.setResult("fail");
                             serviceSubtaskRecord.setStartTime(System.currentTimeMillis());
-                            serviceSubtaskRecord.setRemark("鍏紬鍙峰彂閫佸け璐�");
-                            log.error("鍏紬鍙峰彂閫佸け璐ワ細{}", e.getMessage());
-                            lssubIds.add(serviceSubtask.getId());
+                            serviceSubtaskRecord.setRemark(ObjectUtils.isNotEmpty(map.get("msg")) ? map.get("msg").toString() : null);
                             serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
+                            //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
+                            setFailPreachForm(serviceSubtask, sendPreachform, "鍏紬鍙峰彂閫佸け璐�", "5");
                             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();
+                } 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;
                 }
-                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
+                //鍦ㄥ瓙浠诲姟琛ㄩ噷璁板綍涓�涓�
+                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");
             }
-            if (CollectionUtils.isNotEmpty(subIds)) {
-                //濡傛灉鍏ㄩ儴鐨勫彂閫佹柟寮忛兘鍙戝畬浜嗭紝杩樻湁鏄湭鍙戦�佺殑,闇�瑕佸幓subTask琛ㄤ腑锛岃褰曚竴涓嬶紝鍙戦�佸け璐�
-                for (Long id : subIds) {
-                    ServiceSubtask serviceSubtask = new ServiceSubtask();
-                    serviceSubtask.setResult("error");
-                    serviceSubtask.setRemark("鍙戦�佸け璐�");
+        }
+
+    }
+
+    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));
-            }
+
+    /**
+     * @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;
         }
 
-        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();
+        //灏嗙姸鎬佽缃负澶辫触
+        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;
         }
-        return key;
+
+        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 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();
         xinHuaWXReq.setIdcard(idcard);

--
Gitblit v1.9.3