From f0a09ee996ab2605869844d6a3d812709e2bf0fa Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 16 十月 2026 16:07:25 +0800
Subject: [PATCH] 任务模块、电话模块

---
 ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java | 2109 ++--------------------------------------------------------
 1 files changed, 80 insertions(+), 2,029 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
similarity index 63%
rename from smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
rename to ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
index 734aca1..18d40e8 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
@@ -1,4 +1,4 @@
-package com.smartor.service.impl;
+package com.ruoyi.task.service.impl;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
@@ -20,28 +20,13 @@
 import com.ruoyi.message.sms.SmsSenderFactory;
 import com.ruoyi.message.wechat.WechatSendRequest;
 import com.ruoyi.message.wechat.WechatSenderFactory;
-import com.ruoyi.system.domain.SysConfig;
-import com.ruoyi.system.mapper.SysConfigMapper;
-import com.ruoyi.system.service.ISysConfigService;
-import com.smartor.common.FtpService;
-import com.smartor.common.ScheduleSubtaskBuilder;
-import com.ruoyi.common.utils.PhoneUtils;
-import com.smartor.domain.DTO.*;
-import com.smartor.domain.*;
-import com.smartor.domain.VO.*;
-import com.smartor.domain.entity.ServiceSubtaskEntity;
-import com.smartor.mapper.*;
-import com.smartor.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.ObjectUtils;
-import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.Cacheable;
-import org.springframework.data.redis.core.ListOperations;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -57,8 +42,6 @@
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -75,9 +58,7 @@
 import com.ruoyi.template.domain.IvrTaskTemplateScriptVO;
 import com.ruoyi.template.domain.IvrTaskTemplateTargetoption;
 import com.ruoyi.template.domain.IvrTaskTemplateVO;
-import com.smartor.domain.IvrTaskVisitResult;
 import com.ruoyi.template.mapper.IvrTaskTemplateTargetoptionMapper;
-import com.smartor.mapper.IvrTaskVisitResultMapper;
 import com.ruoyi.template.service.IIvrTaskTemplateScriptService;
 import com.ruoyi.template.service.IIvrTaskTemplateService;
 import com.ruoyi.template.service.IIvrTaskTemplateTargetoptionService;
@@ -92,6 +73,57 @@
 import com.ruoyi.template.service.ISvyTaskTemplateScriptService;
 import com.ruoyi.template.service.ISvyTaskTemplateService;
 import static cn.hutool.core.convert.Convert.toHex;
+import com.ruoyi.common.core.domain.entity.PatArchive;
+import com.ruoyi.task.domain.DTO.ServiceSubtaskDetailDTO;
+import com.ruoyi.task.domain.entity.ServiceSubtaskEntity;
+import com.ruoyi.task.domain.ServiceStatisticsRequest;
+import com.ruoyi.task.domain.ServiceStatisticsResponse;
+import com.ruoyi.task.domain.ServiceSubtask;
+import com.ruoyi.task.domain.ServiceSubtaskCount;
+import com.ruoyi.task.domain.ServiceSubtaskCountReq;
+import com.ruoyi.task.domain.ServiceSubtaskDetail;
+import com.ruoyi.task.domain.ServiceSubtaskDetailVO;
+import com.ruoyi.task.domain.ServiceSubtaskScriptCount;
+import com.ruoyi.task.domain.ServiceSubtaskStatistic;
+import com.ruoyi.task.domain.ServiceTask;
+import com.ruoyi.task.domain.ServiceTaskdept;
+import com.ruoyi.task.domain.ServiceTaskdiag;
+import com.ruoyi.task.domain.ServiceTaskmedical;
+import com.ruoyi.task.domain.ServiceTaskoper;
+import com.ruoyi.task.domain.ServiceTaskSchedule;
+import com.ruoyi.task.domain.ServiceTaskScheduleDetail;
+import com.ruoyi.task.domain.TaskSendTimeVO;
+import com.ruoyi.task.domain.VO.ServiceSubtaskCotinueCountVO;
+import com.ruoyi.task.mapper.ServiceSubtaskDetailMapper;
+import com.ruoyi.task.mapper.ServiceSubtaskMapper;
+import com.ruoyi.task.domain.ServiceSubtaskDetailTrace;
+import com.ruoyi.task.domain.ServiceOutPath;
+import com.ruoyi.task.mapper.ServiceOutPathMapper;
+import com.ruoyi.task.service.IServiceOutPathService;
+import com.ruoyi.task.domain.ServiceSubtaskPreachform;
+import com.ruoyi.task.api.spi.TaskPreachformPort;
+import com.ruoyi.task.api.spi.TaskArchivePort;
+import com.ruoyi.task.api.spi.TaskFtpPort;
+import com.ruoyi.task.api.spi.TaskSysConfigPort;
+import com.ruoyi.task.api.spi.TaskSysDeptPort;
+import com.ruoyi.task.common.ScheduleSubtaskBuilder;
+import com.ruoyi.task.domain.ServiceTaskScheduleVO;
+import com.ruoyi.task.service.IServiceSubtaskService;
+import com.ruoyi.task.service.IServiceTaskScheduleService;
+import com.ruoyi.task.service.IServiceTaskService;
+import com.ruoyi.task.service.IServiceTaskdeptService;
+import com.ruoyi.task.service.IServiceTaskdiagService;
+import com.ruoyi.task.service.IServiceTaskmedicalService;
+import com.ruoyi.task.service.IServiceTaskoperService;
+import com.ruoyi.task.domain.PatArchiveSrmVO;
+import com.ruoyi.task.domain.PatTaskRelevance;
+import com.ruoyi.task.domain.SendMagParam;
+import com.ruoyi.task.domain.ServiceSubtaskDiagname;
+import com.ruoyi.task.domain.ServiceSubtaskIsAbnormalStatistic;
+import com.ruoyi.task.domain.ServiceSubtaskRes;
+import com.ruoyi.task.domain.ServiceSubtaskTemplateVO;
+import com.ruoyi.task.domain.ServiceTaskVO;
+import com.ruoyi.task.domain.VO.TransferDeptVO;
 
 /**
  * 鍗曚竴浠诲姟锛堥殢璁匡級Service涓氬姟灞傚鐞�
@@ -134,7 +166,7 @@
     private ServiceSubtaskMapper serviceSubtaskMapper;
 
     @Autowired
-    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
+    private TaskPreachformPort taskPreachformPort;
 
     @Autowired
     private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;
@@ -144,9 +176,6 @@
 
     @Autowired
     private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;
-
-    @Autowired
-    private IvrTaskVisitResultMapper serviceTaskVisitResultMapper;
 
     @Autowired
     private IServiceTaskdeptService serviceTaskdeptService;
@@ -184,45 +213,30 @@
     private IServiceOutPathService iServiceOutPathService;
 
     @Autowired
-    private IServiceSubtaskDetailTraceService traceService;
-
-    @Autowired
     private IServiceTaskScheduleService serviceTaskScheduleService;
 
     @Autowired
-    private IPatArchiveService patArchiveService;
+    private TaskArchivePort taskArchivePort;
 
     @Autowired
     private ScheduleSubtaskBuilder scheduleSubtaskBuilder;
 
     @Autowired
-    private FtpService ftpService;
+    private TaskFtpPort taskFtpPort;
 
 
 
-    @Autowired
-    private PatArchiveMapper patArchiveMapper;
 
     @Autowired
     private SvyLibScriptCategoryMapper svyLibScriptCategoryMapper;
 
-    @Autowired
-    private IPatMedInhospService patMedInhospService;
-
-    @Value("${pri_key}")
-    private String pri_key;
 
     @Value("${pub_key}")
     private String pub_key;
 
-    @Value("${ASRCallBackPath}")
-    private String ASRCallBackPath;
 
     @Autowired
-    private ISysConfigService configService;
-
-    @Autowired
-    private SysConfigMapper sysConfigMapper;
+    private TaskSysConfigPort taskSysConfigPort;
 
     /**
      * 娑堟伅鍙戦�佹柟宸ュ巶锛堢煭淇�/寰俊鍏紬鍙凤級锛屾浛浠e師鏉ョ洿鎺ヨ皟鐢ㄥ悇绔欑偣鍙戦�佷唬鐮佺殑鍐欐硶
@@ -233,36 +247,15 @@
     @Autowired
     private WechatSenderFactory wechatSenderFactory;
 
-    @Autowired
-    private RedisTemplate redisTemplate;
-
-    @Value("${hangup}")
-    private String hangup;
-
-    @Value("${app_key_yq}")
-    private String app_key_yq;
-
-    @Value("${ruoyi.profile}")
-    private String profile;
-
-    @Value("${voicePathPrefix}")
-    private String voicePathPrefix;
-
     @Value("${localIP}")
     private String localIP;
 
     @Value("${req_path}")
     private String req_path;
 
-    @Value("${phoneUpEveryHour}")
-    private Integer phoneUpEveryHour;
-    @Value("${phoneEndHour}")
-    private Integer phoneEndHour;
 
     @Autowired
-    private IPatMedOuthospService patMedOuthospService;
-    @Autowired
-    private SysDept2Mapper sysDept2Mapper;
+    private TaskSysDeptPort taskSysDeptPort;
 
     @Value("${spring.profiles.active}")
     private String active;
@@ -374,7 +367,7 @@
         } catch (JsonProcessingException e) {
             e.printStackTrace();
         }
-        List<ServiceSubtaskPreachform> serviceSubtaskPreachformLists = serviceSubtaskPreachformMapper.selectBySubtask(serviceSubtask);
+        List<ServiceSubtaskPreachform> serviceSubtaskPreachformLists = taskPreachformPort.selectBySubtask(serviceSubtask);
         for (ServiceSubtask serviceSubtask1 : list) {
             PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
             if (!serviceSubtask1.getHospType().equals("2")) {
@@ -495,7 +488,7 @@
             }
             PatMedInhosp inhosp = inhospVisitFacade.selectPatMedInhospByInhospid(serviceSubtask.getInhospid());
             if (ObjectUtils.isNotEmpty(inhosp)) {
-                PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(inhosp.getPatid());
+                PatArchive patArchive = taskArchivePort.findByPatid(inhosp.getPatid());
                 if (ObjectUtils.isNotEmpty(patArchive)) {
                     Map<String, String> stringStringMap = calculateAge(patArchive.getBirthdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
                     serviceSubtaskRes.setAge(StringUtils.isNotEmpty(stringStringMap.get("age")) ? Long.valueOf(stringStringMap.get("age")) : null);
@@ -524,7 +517,7 @@
         //鎮h�呰幏鍙栭殢璁夸换鍔�-闇�瑕佹煡璇㈠悓涓偅鑰咃紙韬唤璇侊級鎵�鏈夌殑浠诲姟 鏅畞
         if (StringUtils.isNotEmpty(serviceSubtaskEntity.getOrgid()) && serviceSubtaskEntity.getOrgid().equals("47255004333112711A1001")) {
             if (ObjectUtils.isNotEmpty(serviceSubtaskEntity.getPatid())) {
-                PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtaskEntity.getPatid());
+                PatArchive patArchive = taskArchivePort.findByPatid(serviceSubtaskEntity.getPatid());
                 if (ObjectUtils.isNotEmpty(patArchive) && StringUtils.isNotEmpty(patArchive.getIdcardno())) {
                     serviceSubtaskEntity.setPatid(null);
                     serviceSubtaskEntity.setSfzh(patArchive.getIdcardno());
@@ -827,7 +820,7 @@
         patMedInhosp.setPatid(serviceSubtask1.getPatid());
         patMedInhosp.setInhospstate("0");
         List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
-        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask1.getPatid());
+        PatArchive patArchive = taskArchivePort.findByPatid(serviceSubtask1.getPatid());
         //鏅畞 鏂板鍐嶆闅忚涓嶈兘瑙﹀彂鎮h�呭啀鍏ラ櫌
         boolean inhospAgain = true;
         if (serviceSubtask1.getOrgid().equals("47255004333112711A1001")) {
@@ -1001,7 +994,7 @@
             }
             serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes());
             if (StringUtils.isEmpty(serviceTask.getLeavehospitaldistrictname()) && StringUtils.isNotEmpty(serviceTask.getLeavehospitaldistrictcode())) {
-                SysDept sysDept = sysDept2Mapper.selectDeptByCode(serviceTask.getLeavehospitaldistrictcode(), null);
+                SysDept sysDept = taskSysDeptPort.selectDeptByCode(serviceTask.getLeavehospitaldistrictcode(), null);
                 serviceTask.setLeavehospitaldistrictname(sysDept.getDeptName());
             }
             if (serviceTaskVO.getLongTask() == 1) serviceTask.setSendState(2L);
@@ -1230,7 +1223,7 @@
                             serviceSubtaskPreachform.setSendstate("1");
                             serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
                             serviceSubtaskPreachform.setCreateTime(new Date());
-                            serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
+                            taskPreachformPort.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
                         }
                     }
                 }
@@ -1283,7 +1276,7 @@
                             if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
                                 PatMedOuthosp patMedOuthosp = patMedOuthosps.get(0);
                                 patMedOuthosp.setServerState("0");
-                                patMedOuthospService.updatePatMedOuthosp(patMedOuthosp);
+                                outhospDataFacade.update(patMedOuthosp);
                             }
                         }
                     } else if (serviceSubtask.getServiceType().equals("19")) {
@@ -1599,7 +1592,7 @@
             List<ServiceSubtask> ssTaskList = serviceSubtaskMapper.selectServiceSubtaskBySendstate(ssVo);
             for (int i = 0; i < ssTaskList.size(); i++) {
                 ServiceSubtask serviceSubtask = ssTaskList.get(i);
-                serviceSubtaskPreachformMapper.deleteServiceSubtaskPreachformBySubid(serviceSubtask.getId());
+                taskPreachformPort.deleteServiceSubtaskPreachformBySubid(serviceSubtask.getId());
                 if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformList())) {
                     List<Map<String, Object>> pfList = serviceTaskVO.getPreachformList();
                     for (Map<String, Object> map : pfList) {
@@ -1613,7 +1606,7 @@
                         serviceSubtaskPreachform.setSendstate("1");
                         serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
 //                        serviceSubtaskPreachform.setSort(Long.valueOf(i));
-                        serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
+                        taskPreachformPort.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
                     }
                 }
             }
@@ -1621,1239 +1614,6 @@
         Map<String, Integer> map = new HashMap<>();
         map.put("taskId", serviceTask.getTaskid().intValue());
         return map;
-    }
-
-    @Override
-    public void phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
-        phoneCallBackVO.setTextResult(phoneCallBackVO.getTextResult().substring(0, phoneCallBackVO.getTextResult().length() - 1));
-        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
-
-        //鑾峰彇鏁版嵁
-        Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());
-        if (!aBoolean) {
-            throw new BaseException("璇uid涓嶅瓨鍦�");
-        }
-        Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "hangup");
-        PhoneUtils phoneUtils = new PhoneUtils();
-        if (hangupValue != null && hangupValue == 1) {
-            String date = simpleDateFormat1.format(new Date());
-            log.info("鐢佃瘽瑕佹寕鏂簡: {}", date);
-            //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽
-            phoneUtils.hangup("", "", "", "", "", "", "", phoneCallBackVO.getUuid());
-            return;
-        }
-
-        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());
-        ServiceSubtask serviceSubtask = (ServiceSubtask) map.get("ServiceSubtask");
-        List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOs = (List<IvrTaskTemplateScriptVO>) map.get("IvrTaskTemplateScriptVO");
-        //灏唘uid鏇存柊鍒版暟鎹簱涓�
-        serviceSubtask.setSenduuid(phoneCallBackVO.getUuid());
-        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-
-        //鑾峰彇妯℃澘淇℃伅
-        IvrTaskTemplateVO ivrTaskTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "IvrTaskTemplateVO");
-
-        //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3
-        Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
-        QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
-        //灏嗕紶鍥炵殑缁撴灉鏀惧埌鍥炲瀵硅薄涓�
-        returnQues.setContent(phoneCallBackVO.getTextResult());
-
-        IvrTaskTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
-
-        if (StringUtils.isEmpty(returnQues.getContent())) {
-            //鏃犲洖璇�
-            //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у��
-            if (noVoice == ivrTaskTemplateVO.getNoVoiceNum().intValue()) {
-                //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰�
-                if (nowQuestion.getTargetid() == IvrTaskTemplateScriptVOs.size()) {
-                    ServiceSubtask ss = new ServiceSubtask();
-                    ss.setId(serviceSubtask.getId());
-                    ss.setSendstate(5L);
-                    ss.setRemark("鐢佃瘽鏃犲搷搴�");
-                    serviceSubtaskMapper.updateServiceSubtask(ss);
-                    //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                    phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
-                    return;
-                } else {
-                    //鏈変笅涓�棰�
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
-                    IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(IvrTaskTemplateScriptVOs, nowQuestion);
-                    // 闂锛�  鍘昏皟鐢�"tts鍚堟垚鍜屾挱鏀�"鎺ュ彛
-                    String date = simpleDateFormat1.format(new Date());
-                    log.info("鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                    phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());
-                }
-            } else {
-                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
-                //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
-                String slienceText = nowQuestion.getSlienceText();
-                //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢�"tts鍚堟垚鍜屾挱鏀�"鎺ュ彛
-                String date = simpleDateFormat1.format(new Date());
-                log.info("闈欓粯璇濇湳  + 闂,鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                phoneUtils.ttsPlayback(slienceText + nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());
-                return;
-            }
-
-        } else {
-            //isppd鐢ㄦ潵璁板綍鏄惁鍖归厤鍒�
-            Boolean isppd = false;
-            //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛�
-            for (int j = 0; j < nowQuestion.getIvrTaskScriptTargetoptionList().size(); j++) {
-                //鍖呭惈
-                Matcher matcher = null;
-                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex())) {
-                    Pattern pattern = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex());
-                    matcher = pattern.matcher(phoneCallBackVO.getTextResult());
-                }
-                //涓嶅寘鍚�
-                Matcher matcher2 = null;
-                if (StringUtils.isNotEmpty(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2())) {
-                    Pattern pattern2 = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());
-                    matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
-                }
-                log.error("PCB--getQuestionText闂涓猴細{},UUID锛歿}", nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());
-                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()) {
-                    //璇存槑鍖归厤姝g‘浜�
-                    //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
-                    nowQuestion.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1);
-                    serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(nowQuestion.getIvrTaskScriptTargetoptionList().get(j));
-
-                    //灏嗛潤榛樼疆涓�0
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
-
-                    //灏嗘偅鑰呯殑鍥炵鍐欒繘琛ㄩ噷
-                    IvrTaskVisitResult serviceTaskVisitResult = DtoConversionUtils.sourceToTarget(serviceSubtask, IvrTaskVisitResult.class);
-                    serviceTaskVisitResult.setId(null);
-                    serviceTaskVisitResult.setQuestion(nowQuestion.getIvrtext());
-                    serviceTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());
-                    serviceTaskVisitResult.setCreateTime(new Date());
-                    serviceTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue());
-                    serviceTaskVisitResultMapper.insertIvrTaskVisitResult(serviceTaskVisitResult);
-
-                    //灏嗗尮閰嶅埌鐨勬爣璇嗘敼鎴恡rue
-                    isppd = true;
-
-                    //鑾峰彇涓嬩竴棰�
-                    Long nextQuestion = nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();
-                    for (IvrTaskTemplateScriptVO script : IvrTaskTemplateScriptVOs) {
-                        if (script.getTargetid() == nextQuestion) {
-                            QuestionMessage questionMessage = new QuestionMessage();
-                            questionMessage.setNowQuestion(script);
-                            questionMessage.setQuestionList(IvrTaskTemplateScriptVOs);
-                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-                            phoneUtils.ttsPlayback(script.getIvrtext(), phoneCallBackVO.getUuid());
-                            return;
-                        } else if (nextQuestion > IvrTaskTemplateScriptVOs.size()) {
-                            //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�
-                            ServiceSubtask ss = new ServiceSubtask();
-                            ss.setId(serviceSubtask.getId());
-                            ss.setSendstate(6L);
-                            serviceSubtaskMapper.updateServiceSubtask(ss);
-                            String date = simpleDateFormat1.format(new Date());
-                            log.error("娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                            phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
-                            try {
-                                Thread.sleep(3000);
-                            } catch (InterruptedException e) {
-                                e.printStackTrace();
-                            }
-                            phoneUtils.hangup("", "", ivrTaskTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid());
-                            return;
-                        }
-                    }
-                    return;
-                } else {
-                    //娌℃湁鍖归厤涓婂綋鍓峯ption
-                    //Targetregex2 涓篺alse锛岃〃绀哄湪Targetregex2涓瓨鍦�  璇彞涓殑鍏抽敭瀛楋紝杩欎釜option灏变笉鐢ㄥ啀缁х画鍖归厤浜嗭紝鐩存帴鍖归厤涓嬩竴涓猳ption
-                    continue;
-                }
-            }
-
-            if (isppd != true) {
-                //娌℃湁鍖归厤鍒�
-                Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum");
-                if (mateNum == null) mateNum = 0;
-                //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
-                if (mateNum == ivrTaskTemplateVO.getMateNum().intValue()) {
-                    //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
-                    if (nowQuestion.getTargetid() < IvrTaskTemplateScriptVOs.size()) {
-                        QuestionMessage questionMessage = new QuestionMessage();
-                        IvrTaskTemplateScriptVO nextQuestion = getNextQuestion(IvrTaskTemplateScriptVOs, nowQuestion);
-                        questionMessage.setQuestionList(IvrTaskTemplateScriptVOs);
-                        questionMessage.setNowQuestion(nextQuestion);
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
-                        String date = simpleDateFormat1.format(new Date());
-                        log.info("濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                        phoneUtils.ttsPlayback(nextQuestion.getIvrtext(), phoneCallBackVO.getUuid());
-                        return;
-                    } else {
-                        //灏卞彲浠ユ寕鏂數璇濅簡
-                        ServiceSubtask ss = new ServiceSubtask();
-                        ss.setId(serviceSubtask.getId());
-                        ss.setSendstate(6L);
-                        serviceSubtaskMapper.updateServiceSubtask(ss);
-
-                        String date = simpleDateFormat1.format(new Date());
-                        log.info("灏卞彲浠ユ寕鏂數璇濅簡------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                        phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
-                        try {
-                            Thread.sleep(3000);
-                        } catch (InterruptedException e) {
-                            e.printStackTrace();
-                        }
-                        phoneUtils.hangup("", "", ivrTaskTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid());
-                        return;
-                    }
-                } else if (mateNum < ivrTaskTemplateVO.getMateNum().intValue()) {
-                    //娌℃湁闂埌瑙勫畾娆℃暟
-                    mateNum = mateNum + 1;
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES);
-                }
-            }
-            //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
-            String extemplateID = ivrTaskTemplateVO.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.error("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細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");
-                        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = returnQues.getNowQuestion();
-                        ivrTaskTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
-                        ivrTaskTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-                        if (ivrLibaExtemplatescript.getIsEnd() == 1) {
-                            //灏嗛棶棰樼疆绌�
-                            IvrTaskTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
-                            nowQuestion1.setScriptContent(null);
-                            nowQuestion1.setScriptVoice(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"灏嗙粨鏋滀紶鍥�
-                        String date = simpleDateFormat1.format(new Date());
-                        log.info("璋冪敤tts鍚堟垚鍜屾挱鏀�------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                        phoneUtils.ttsPlayback(nowQuestion.getIvrtext() + ivrTaskTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid());
-                    }
-                    break;
-                }
-                String date = simpleDateFormat1.format(new Date());
-                log.info("鏈�鍚庣殑淇℃伅鍥炲-: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());
-            }
-        }
-    }
-
-    /**
-     * 鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划)
-     *
-     * @param phoneCallReqYQVO
-     */
-    @Override
-    public PhoneCallBackYQVO phoneCallBackYQ(PhoneCallReqYQVO phoneCallReqYQVO) {
-        //鍏堟妸璇ubId浠巆ache_exist涓墧闄わ紝鍙鏈夊洖璋冨氨鍓旈櫎锛堢洰鐨勬槸锛屽敖蹇cache-exist涓虹┖锛屽幓缂撳瓨涓嬩竴鎵硅鎵撶殑鐢佃瘽;杩欓噷鍓旈櫎涓嶅奖鍝嶇數璇濈殑姝e父涓氬姟锛�
-//        redisCache.removeElementFromList("cache-exist", phoneCallReqYQVO.getTaskid());
-
-        //鍒ゆ柇鏄惁鎸傛満
-        String hangupState = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "- hangup");
-        Object cacheObject1 = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
-        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) {
-            //澶勭悊鎸傛柇
-            if (phoneCallReqYQVO.getAsrtext().contains("鎷ㄥ彨鐨勭敤鎴锋蹇�")) {
-                //鍒ゆ柇 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锛屽氨璇存槑宸茬粡鎵撳畬浜嗭紝涔熸病鏈夊繀瑕佺户缁線涓嬭蛋浜�
-                if (StringUtils.isNotEmpty(phoneCallReqYQVO.getTaskid())) {
-                    ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-                    if (serviceSubtask.getSendstate() == 6L) return new PhoneCallBackYQVO();
-                }
-
-                ServiceSubtask serviceSubtask2 = new ServiceSubtask();
-                serviceSubtask2.setRemark("鐢佃瘽鍙戦�佹垚鍔燂紙鎮h�呮寕鏂級");
-                serviceSubtask2.setSenduuid(phoneCallReqYQVO.getUuid());
-                serviceSubtask2.setId(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask2);
-                Map<String, String> req = new HashMap<>();
-                req.put("uuid", phoneCallReqYQVO.getUuid());
-                req.put("caller", phoneCallReqYQVO.getPhone());
-                HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));
-                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- hangup", "1", 2, TimeUnit.MINUTES);
-                //鍏堟妸榛樿鐨剅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()));
-                return new PhoneCallBackYQVO();
-            }
-        }
-        //瀹氫箟涓�涓垎鏁扮殑鍙橀噺
-        Boolean aBoolean1 = redisCache.hasKey(phoneCallReqYQVO.getUuid() + "SCORE");
-        if (!aBoolean1) redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", 0.0, 120, TimeUnit.MINUTES);
-        PhoneCallBackYQVO phoneCallBackYQVO = new PhoneCallBackYQVO();
-        //channel_create 閫氶亾鍒涘缓鐨勬椂鍊欙紝鍙互鎵ц涓�浜涘叾瀹冩搷浣滐紝璀鍙戜釜鐭俊涔嬬被鐨�;  鎴戜滑鐨勪笟鍔″彲浠ヤ笉鐢ㄧ    PlayEventCallback 杩欎釜鏄挱鏀捐闊崇殑,鏆傛椂鐢ㄤ笉鍒�     End_time()= -1鎴杗ull琛ㄧず褰撳墠鐨刟srtext涓嶆槸涓�鍙ュ畬鏁寸殑璇�
-        if (phoneCallReqYQVO.getOperate().equals("channel_create")) {
-            return phoneCallBackYQVO;
-        }
-        //PlayEventCallback 杩欎釜鏄挱鏀捐闊崇殑    playstart锛氭斁闊冲紑濮嬶紙闂鎾姤寮�濮嬶級    playstop锛� 鏀鹃煶缁撴潫锛堥棶棰樻挱鎶ョ粨鏉燂級
-        if (phoneCallReqYQVO.getOperate().equals("PlayEventCallback")) {
-            String cacheJSY = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "- jsy");
-            if (phoneCallReqYQVO.getOperate().equals("PlayEventCallback") && phoneCallReqYQVO.getPlaystop() == false) {
-                //鍒ゆ柇redis涓槸鍚︽湁缁撴潫璇�
-                if (StringUtils.isEmpty(cacheJSY)) {
-                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop", false, 120, TimeUnit.MINUTES);
-                    log.error("PlayEventCallbackPlaystop鐨勫�间负-------锛歿}", false);
-                }
-            } else {
-                //濡傛灉缁撴潫璇笉涓虹┖锛屽垯瑕佹寕鐢佃瘽浜�
-                if (StringUtils.isNotEmpty(cacheJSY)) {
-                    Map<String, String> req = new HashMap<>();
-                    req.put("uuid", phoneCallReqYQVO.getUuid());
-                    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");
-                    //鍒犻櫎缁撴潫璇殑缂撳瓨
-                    redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "- jsy");
-                } else {
-                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop", true, 120, TimeUnit.MINUTES);
-                    log.error("-------PlayEventCallbackPlaystop鐨勫�间负锛歿}", true);
-                }
-            }
-
-            return phoneCallBackYQVO;
-        }
-        //鑾峰彇鏀鹃煶鏄惁缁撴潫
-        Object isPlayEventOverObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-        if (ObjectUtils.isNotEmpty(isPlayEventOverObj)) {
-            Boolean isPlayEventOver = (Boolean) isPlayEventOverObj;
-            if (!isPlayEventOver) {
-                return phoneCallBackYQVO;
-            }
-        }
-
-        //閫氳繃瀛愪换鍔D鑾峰彇鍒版ā鏉夸俊鎭�
-        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-        IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
-        //鑾峰彇妯℃澘闂
-        IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
-        ivrTaskTemplateScript.setTemplateID(serviceSubtask.getTemplateid());
-        List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
-        //鑾峰彇闂ID 鍜� 搴忓彿
-        String scriptId = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim());
-        log.error("scriptId鏄灏戯細{}", scriptId);
-        //褰撳墠棰樼殑淇℃伅
-        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = iIvrTaskTemplateScriptService.getTaskTempScriptInfoByid(Long.valueOf(scriptId));
-        //鍒ゆ柇UUID鏄惁瀛樺湪
-        Boolean aBoolean = redisCache.hasKey(phoneCallReqYQVO.getUuid());
-        if (!aBoolean) {
-            //缁欓潤榛樿缃竴涓粯璁ゆ鏁板湪redis涓�
-            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
-            //濡傛灉涓嶅瓨鍦紝灏辨妸褰撳墠鐨刄UID鍋氫负key锛屾斁鍒板璞′腑鍘�
-            redisCache.setCacheObject(phoneCallReqYQVO.getUuid(), phoneCallReqYQVO, 120, TimeUnit.MINUTES);
-        }
-
-        if ("SilentCallback".equals(phoneCallReqYQVO.getOperate())) {
-            //濡傛灉鏄潤榛樺洖璋�
-            Integer num = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "noVoice");
-            //鍒ゆ柇闈欓粯鍥炶皟娆℃暟鏄惁灏忎笌妯℃澘瑙勫畾鐨勬鏁�
-            if (num < ivrTaskTemplate.getNoVoiceNum()) {
-                //灏忎笌鐨勮瘽,灏辩户缁棶鎮h��
-                phoneCallBackYQVO.setType("text");
-                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                String scriptContent = ivrTaskTemplateScriptVO.getIvrtext();
-                log.error("SilentCallback鐨勯棶棰樺唴瀹箂criptContent锛歿}", scriptContent);
-                phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent));
-                //灏嗛潤榛樻鏁板姞1
-                Integer noVoiceNum = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "noVoice");
-                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "noVoice", noVoiceNum + 1, 120, TimeUnit.MINUTES);
-                return phoneCallBackYQVO;
-            } else {
-                log.error("闈欓粯娆℃暟杈惧埌,鎸傛帀鐢佃瘽锛歿}", num);
-                ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                ServiceSubtask ss = new ServiceSubtask();
-                ss.setId(serviceSubtask.getId());
-                ss.setSendstate(5L);
-                ss.setRemark("鐢佃瘽闈欓粯");
-                serviceSubtaskMapper.updateServiceSubtask(ss);
-                //澶т笌绛変簬鐨勮瘽,鐩存帴鎸傛柇
-                phoneCallBackYQVO.setType("text");
-                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                phoneCallBackYQVO.setValue(serviceTask1.getJsy());
-                //灏嗙粨鏋滃啓鍒癲etail涓�
-                ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
-                List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
-                serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));
-                serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
-                serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
-                serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
-                saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-                //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
-                Long id = serviceSubtask.getId();
-                //鍏堟洿鏂颁竴涓嬪垎鏁�
-                double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                serviceSubtask.setScore(String.valueOf(score));
-                serviceSubtask.setFinishtime(new Date());
-                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());
-                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-                //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-            }
-            return phoneCallBackYQVO;
-        } else if ("AsrCallback".equals(phoneCallReqYQVO.getOperate()) && phoneCallReqYQVO.getEnd_time() != null && phoneCallReqYQVO.getEnd_time() != -1) {
-            //鍋氫竴涓爣璇嗭紝鐢ㄦ潵鍦ㄩ�氳瘽璇︽儏鎺ュ彛閲岋紝鍒ゆ柇鏄惁鏈変汉鎺ョ數璇濓紙value=2,琛ㄧず鏈変汉鎺ワ級
-            redisCache.deleteObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
-            redisCache.setCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup", "2", 10, TimeUnit.MINUTES);
-            // 鍏堝閫氳瘽杩涜閫氱敤搴撳尮閰嶄竴娆�
-            String extemplateID = ivrTaskTemplate.getSubmoduleID();
-            if (StringUtils.isNotEmpty(extemplateID)) {
-                String[] split = extemplateID.split(",");
-                List<String> list = Arrays.asList(split);
-                List<Long> list1 = new ArrayList<>();
-                for (String str : list) {
-                    list1.add(Long.valueOf(str));
-                }
-                List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);
-                IvrLibaExtemplatescript les = null;
-                for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {
-                    Matcher matcher = null;
-                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {
-                        Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());
-                        matcher = pattern.matcher(phoneCallReqYQVO.getAsrtext());
-                    }
-
-                    Matcher matcher2 = null;
-                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {
-                        Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
-                        matcher2 = pattern2.matcher(phoneCallReqYQVO.getAsrtext());
-                    }
-                    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()) {
-                        //灏嗛�氱敤搴撳尮閰嶇殑锛屾斁鍒拌繑鍥炲�间腑
-//                        phoneCallBackYQVO.setValue(phoneCallBackYQVO.getValue() + ivrLibaExtemplatescript.getSwitchText());
-                        phoneCallBackYQVO.setCommonValue(ivrLibaExtemplatescript.getSwitchText());
-                        les = ivrLibaExtemplatescript;
-                    }
-                    break;
-                }
-                log.info("鏄惁闇�瑕佹寕鏈猴細{}", les);
-                if (ObjectUtils.isNotEmpty(les)) {
-                    //瀵瑰尮閰嶇殑缁撴灉澶勭悊涓�涓�(鐪嬬湅鏄笉鏄渶瑕佹寕鏈�)
-                    if (les.getIsEnd() != null && les.getIsEnd() == 1) {
-                        ServiceSubtask ss = new ServiceSubtask();
-                        ss.setId(serviceSubtask.getId());
-                        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");
-                        redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "noVoice");
-                        //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                        redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-                        phoneCallBackYQVO.setType("text");
-                        phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + les.getSwitchText());
-                        //灏嗙粨鏋滃啓杩沝etail琛�
-                        ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
-                        List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
-                        ivrTaskTemplateScriptVO.setExtemplateText(les.getSwitchText());
-                        serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));
-                        serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
-                        serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
-                        serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
-                        saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-                        return phoneCallBackYQVO;
-                    }
-                }
-            }
-
-            //濡傛灉鏄枃鏈洖璋�
-            //鏍规嵁闂ID鑾峰彇璇ラ棶棰樼殑绫诲瀷
-            if (ivrTaskTemplateScriptVO.getScriptType().equals("1")) {
-                //鐢ㄦ潵鏍囪锛屾槸鍚︽湁鍖归厤涓婄殑
-                Integer flag = 0;
-                //1-AI璇嗗埆
-                String url = configService.selectConfigByKey("sys.voice.match.ai.url", phoneCallReqYQVO.getOrgid());
-
-                if (ObjectUtils.isNotEmpty(url)) {
-                    PhoneCallBackYQVO aiMatchResult = AiMatch(url, phoneCallReqYQVO, phoneCallBackYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate, ivrTaskTemplateScripts, scriptId, flag, phoneCallReqYQVO.getUuid());
-                    if (aiMatchResult != null) {
-                        return aiMatchResult;
-                    }
-                } else {
-                    //鏄�夋嫨棰�
-                    for (int j = 0; j < ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size(); j++) {
-                        log.error("phoneCallReqYQVO.getAsrtext()鐨勫�间负锛歿}", phoneCallReqYQVO.getAsrtext());
-                        if (StringUtils.isEmpty(phoneCallReqYQVO.getAsrtext())) {
-                            continue;
-                        }
-                        boolean matchedFlag = false;
-                        //鍖呭惈
-                        Matcher matcher = null;
-                        if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex())) {
-                            Pattern pattern = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex());
-                            matcher = pattern.matcher(phoneCallReqYQVO.getAsrtext());
-                        }
-                        //涓嶅寘鍚�
-                        Matcher matcher2 = null;
-                        if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2())) {
-                            Pattern pattern2 = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());
-                            matcher2 = pattern2.matcher(phoneCallReqYQVO.getAsrtext());
-                        }
-
-                        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()) {
-                            matchedFlag = true;
-                        }
-                        //璇存槑鍖归厤姝g‘浜�
-                        if (matchedFlag) {
-                            //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
-                            log.info("鍖归厤姝g‘浜嗗悧--------------");
-                            ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1);
-                            serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j));
-
-                            //灏嗘偅鑰呯殑鍥炵鍐欒繘service_subtask_detail涓�
-                            ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
-                            List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
-                            ivrTaskTemplateScriptVO.setQuestionResult(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getOptiondesc());
-                            ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
-                            //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
-                            if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
-                                String questionvoice = serviceSubtaskDetail.getQuestionvoice();
-                                String[] split = questionvoice.split("\\\\");
-                                if (split.length > 0) {
-                                    String lastPart = split[split.length - 1];
-                                    serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
-                                }
-                            }
-                            serviceSubtaskDetailList.add(serviceSubtaskDetail);
-                            serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
-                            serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
-                            serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
-                            saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-
-                            //鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓攄utyDeptCode鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
-                            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getIsabnormal()) {
-                                ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
-                                //鐢╰askid銆乻ubid鍜宻criptid鍘昏幏鍙杁etailid
-                                ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();
-                                ssd.setSubId(serviceSubtask.getId());
-                                ssd.setTaskid(serviceSubtask.getTaskid());
-                                ssd.setScriptid(StringUtils.isNotEmpty(scriptId) ? Long.valueOf(scriptId) : null);
-                                List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(ssd);
-                                subtaskDetailTrace.setDetailId(CollectionUtils.isNotEmpty(serviceSubtaskDetails) ? serviceSubtaskDetails.get(0).getId() : null);
-
-                                subtaskDetailTrace.setSubId(serviceSubtask.getId());
-                                subtaskDetailTrace.setTaskid(serviceSubtask.getTaskid());
-                                subtaskDetailTrace.setTemplateid(ivrTaskTemplateScriptVO.getId());
-                                subtaskDetailTrace.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
-                                subtaskDetailTrace.setSwitchid(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getId());
-                                subtaskDetailTrace.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());
-                                subtaskDetailTrace.setQuestionvoice(null);
-                                subtaskDetailTrace.setCategoryname(ivrTaskTemplateScriptVO.getScriptAssortname());
-                                subtaskDetailTrace.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid());
-                                //鑾峰彇鎵�鏈夐�夐」
-                                String optionDescStr = Optional.ofNullable(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()).filter(list -> !list.isEmpty()).map(list -> list.stream().map(IvrTaskTemplateTargetoption::getOptiondesc).filter(Objects::nonNull).collect(Collectors.joining("&"))).orElse("");
-                                subtaskDetailTrace.setTargetid(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getId());
-                                subtaskDetailTrace.setTargetvalue(optionDescStr);
-                                subtaskDetailTrace.setMatchedtext(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getOptiondesc());
-                                subtaskDetailTrace.setValueType(serviceSubtaskDetails.get(0).getValueType());
-                                subtaskDetailTrace.setTemplateType(1);
-
-                                SvyLibScriptCategory svyLibScriptCategory = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryById(ivrTaskTemplateScriptVO.getScriptAssortid());
-                                subtaskDetailTrace.setType(svyLibScriptCategory.getType());
-                                subtaskDetailTrace.setScriptid(ivrTaskTemplateScriptVO.getId());
-                                subtaskDetailTrace.setAsrtext(phoneCallReqYQVO.getAsrtext());
-                                subtaskDetailTrace.setRecordpath(phoneCallReqYQVO.getRecordpath());
-                                subtaskDetailTrace.setPatid(serviceSubtask.getPatid());
-                                JSONObject patdescJson = new JSONObject();
-                                patdescJson.put("sendname", serviceSubtask.getSendname());
-                                patdescJson.put("phone", serviceSubtask.getPhone());
-                                patdescJson.put("age", serviceSubtask.getAge());
-                                patdescJson.put("sex", serviceSubtask.getSex() != null ? serviceSubtask.getSex() == 1 ? "鐢�" : "濂�" : null);
-                                subtaskDetailTrace.setPatdesc(patdescJson.toJSONString());
-                                subtaskDetailTrace.setTodeptcode(ivrTaskTemplateScriptVO.getDutyDeptCode());
-                                subtaskDetailTrace.setTodeptname(ivrTaskTemplateScriptVO.getDutyDeptName());
-                                subtaskDetailTrace.setOrgid(serviceSubtask.getOrgid());
-                                subtaskDetailTrace.setHandleFlag("0");
-                                subtaskDetailTrace.setGuid(phoneCallReqYQVO.getGuid());
-                                subtaskDetailTrace.setCreateTime(new Date());
-                                subtaskDetailTrace.setUpdateTime(new Date());
-                                subtaskDetailTrace.setOrgid(phoneCallReqYQVO.getOrgid());
-                                traceService.insertServiceSubtaskDetailTtrace(subtaskDetailTrace);
-                            }
-
-                            //鍒ゆ柇涓�涓嬶紝杩欎釜閫夐」缁撴灉鏄笉鏄繕鏈夌户缁棶涓嬪幓鐨勫繀瑕侊紝渚嬪閫夐」缁撴灉鏄埆浜轰笉鎯崇户缁洖绛旈棶棰橈紝灏辫缁撴潫鎺�
-                            if (ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getIsEnd() == 1) {
-                                redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "noVoice");
-                                //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                                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;
-                            }
-
-                            flag = 1;
-                            //灏嗗綋鍓嶅墠鐨勬挱鎶ョ姸鎬佸垹闄わ紝缁欎笅涓�棰樿浣�
-                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-//                        //鑾峰彇涓嬩竴棰�
-                            log.error("鑾峰彇涓嬩竴棰樼殑淇℃伅锛歿}", ivrTaskTemplateScriptVO);
-                            if (ivrTaskTemplateScriptVO.getBranchFlag().equals("1") || ivrTaskTemplateScriptVO.getBranchFlag().equals("0") && ivrTaskTemplateScriptVO.getNextScriptno() != null && ivrTaskTemplateScriptVO.getNextScriptno() != 0) {
-                                Long nextQuestion = null;
-                                if (ivrTaskTemplateScriptVO.getBranchFlag().equals("1")) {
-                                    nextQuestion = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();
-                                    //鏇存柊鍒嗘暟
-                                    double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                                    score = BigDecimal.valueOf(score).add(new BigDecimal(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore())).doubleValue();
-                                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score);
-                                } else {
-                                    nextQuestion = ivrTaskTemplateScriptVO.getNextScriptno();
-                                    //鏇存柊鍒嗘暟
-                                    Object obj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                                    Double score = (obj == null ? new Double(0.00) : new Double(((Double) obj).doubleValue()));
-                                    score = BigDecimal.valueOf(score).add(new BigDecimal(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore())).doubleValue();
-                                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
-                                }
-                                if (nextQuestion == null || nextQuestion == 0L) {
-                                    //濡傛灉涓嬩竴棰樹负绌猴紝鎴栬�呬负0锛屽垯鎸傛満
-                                    ServiceSubtask ss = new ServiceSubtask();
-                                    ss.setId(serviceSubtask.getId());
-                                    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");
-                                    redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "noVoice");
-                                    //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                                    ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-                                    phoneCallBackYQVO.setType("text");
-                                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());
-                                    //灏嗙粨鏋滃啓杩沝etail琛�
-                                    ServiceSubTaskDetailReq ssdReq = new ServiceSubTaskDetailReq();
-                                    List<ServiceSubtaskDetail> serviceSubtaskDetailList2 = new ArrayList<>();
-                                    serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));
-                                    serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList2);
-                                    ssdReq.setGuid(phoneCallReqYQVO.getGuid());
-                                    ssdReq.setOrgid(phoneCallReqYQVO.getOrgid());
-                                    saveQuestionAnswerPhone(ssdReq);
-                                    return phoneCallBackYQVO;
-                                }
-
-                                for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
-                                    if (script.getSort() == nextQuestion.intValue()) {
-                                        phoneCallBackYQVO.setType("text");
-                                        phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                                        String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();
-                                        log.error("涓嬩竴棰橀棶棰橈細{}", scriptContent);
-                                        log.error("涓嬩竴棰樼殑瀛愪换鍔℃槸锛歿}", serviceSubtask);
-                                        phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
-                                        //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀�
-                                        redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);
-                                        //鍒犻櫎鏃犲搷搴�
-                                        redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
-                                    }
-                                }
-                            } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
-                                ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                                phoneCallBackYQVO.setType("text");
-                                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                                //鏇存柊涓�涓嬪垎鏁�
-                                double score = 0.0;
-                                Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                                if (ObjectUtils.isNotEmpty(scoreObj)) score = (double) scoreObj;
-                                serviceSubtask.setScore(String.valueOf(score));
-                                serviceSubtask.setFinishtime(new Date());
-                                serviceSubtask.setSendstate(6L);
-                                serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-                                //璁板綍鐘舵��
-                                setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                                //璁剧疆缁撴潫璇�
-                                phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
-                                Long id = serviceSubtask.getId();
-                                Map<String, String> map = delRedisValue(null, id.toString());
-                                log.error("map鐨勫�间负锛歿}", map);
-                                if (ObjectUtils.isNotEmpty(map))
-                                    redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
-                                redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-                                redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
-                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-                                //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-//                                return phoneCallBackYQVO;
-
-                            }
-                        } else {
-                            log.info("娌℃湁鍖归厤涓�----------------------------");
-                            //flag=0,璇存槑娌� 鍖归厤涓婏紝涔熻鎶婃偅鑰呰鐨勮瘽璁板綍涓嬫潵
-                            if (j == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size() - 1 && flag == 0) {
-                                ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
-                                List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
-                                ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
-                                //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
-                                if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
-                                    String questionvoice = serviceSubtaskDetail.getQuestionvoice();
-                                    String[] split = questionvoice.split("\\\\");
-                                    if (split.length > 0) {
-                                        String lastPart = split[split.length - 1];
-                                        serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
-                                    }
-                                }
-                                serviceSubtaskDetailList.add(serviceSubtaskDetail);
-                                //濡傛灉娌℃湁 鍖归厤涓婏紝杩欎釜蹇呴』涓簄ull
-                                serviceSubtaskDetailList.get(0).setMatchedtext("");
-                                serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
-                                serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
-                                serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
-                                saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-                            }
-                            continue;
-                        }
-                    }
-                }
-                //閮芥病鏈夊尮閰嶅埌
-                if (StringUtils.isEmpty(phoneCallBackYQVO.getValue())) {
-                    log.info("閮芥病鏈夊尮閰嶅埌-------------------------");
-                    Integer count = null;
-                    Object countObj = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
-                    if (ObjectUtils.isNotEmpty(countObj)) count = (Integer) countObj;
-                    if (count != null && count >= ivrTaskTemplate.getMateNum()) {
-                        //濡傛灉count宸茬粡澶т簬鎴栫瓑浜庢病鏈夊尮閰嶆鏁�
-                        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) {
-                            //濡傛灉鏄渶鍚庝竴閬撻锛屾垨鑰呮病鏈変笅涓�棰樹簡锛屽氨鐩存帴鎸傛満
-                            ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                            phoneCallBackYQVO.setType("text");
-                            phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                            if (StringUtils.isNotEmpty(phoneCallBackYQVO.getValue()))
-                                phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + phoneCallBackYQVO.getValue() + serviceTask1.getJsy());
-                            else phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
-
-                            //鏇存柊涓�涓嬪垎鏁�
-                            Double score = null;
-                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
-                            serviceSubtask.setScore(String.valueOf(score));
-                            serviceSubtask.setFinishtime(new Date());
-                            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);
-                            //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
-                            Long id = serviceSubtask.getId();
-                            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());
-                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                            }
-//                            return phoneCallBackYQVO;
-                        } else {
-                            //鏍规嵁ivrTaskTemplateScriptVO.getNextScriptno()鑾峰彇涓嬩竴棰樿繘琛屾彁闂�
-                            for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
-                                if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
-                                    phoneCallBackYQVO.setType("text");
-                                    phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                                    String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();
-                                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
-                                    //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀�
-                                    redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);
-
-                                    //鏇存柊涓�涓嬪垎鏁�
-                                    Double score = null;
-                                    Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                                    if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
-                                    score = BigDecimal.valueOf(score).add(new BigDecimal(script.getScore())).doubleValue();
-
-                                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
-                                }
-                            }
-                        }
-                    } else {
-                        if (count == null)
-                            redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid(), 1, 120, TimeUnit.MINUTES);
-                        else
-                            redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid(), count + 1, 120, TimeUnit.MINUTES);
-
-                        phoneCallBackYQVO.setType("text");
-                        phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent()));
-                    }
-                }
-
-            } else {
-                //涓嶆槸閫夋嫨棰�,鐩存帴璁板綍绛旀锛屽皢缁撴灉鍐欏埌detail涓�
-                ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
-                List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
-                ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
-                //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
-                if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
-                    String questionvoice = serviceSubtaskDetail.getQuestionvoice();
-                    String[] split = questionvoice.split("\\\\");
-                    if (split.length > 0) {
-                        String lastPart = split[split.length - 1];
-                        serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
-                    }
-                }
-                serviceSubtaskDetailList.add(serviceSubtaskDetail);
-                serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
-                serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
-                serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
-                saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-                //    String xh = idSort.split("-")[1];
-
-                //濡傛灉閫夐」鍒嗘敮涓�1鐨勮瘽锛屽垯闇�瑕佹牴鎹棶棰樹笂鐨刵extScriptno杩涜璺宠浆
-                //闂瓟棰樻病鏈夎烦杞�
-                if (ivrTaskTemplateScriptVO.getNextScriptno() != null && ivrTaskTemplateScriptVO.getNextScriptno() != 0) {
-                    for (IvrTaskTemplateScript ivrTaskTemplateScript1 : ivrTaskTemplateScripts) {
-                        if (ivrTaskTemplateScriptVO.getNextScriptno().intValue() == ivrTaskTemplateScript1.getSort()) {
-                            phoneCallBackYQVO.setType("text");
-                            phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                            String scriptContent = StringUtils.isNotEmpty(ivrTaskTemplateScript1.getIvrtext()) ? ivrTaskTemplateScript1.getIvrtext() : ivrTaskTemplateScript1.getScriptContent();
-
-                            phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
-                            redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
-                            redisCache.setCacheObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone(), ivrTaskTemplateScript1.getId().toString());
-
-                            //鏇存柊涓�涓嬪垎鏁�
-                            Double score = null;
-                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
-                            score = BigDecimal.valueOf(score).add(new BigDecimal(ivrTaskTemplateScriptVO.getScore())).doubleValue();
-                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
-
-                        }
-                    }
-                } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
-                    //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�
-                    ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                    phoneCallBackYQVO.setType("text");
-                    phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
-
-                    //鏇存柊涓�涓嬪垎鏁�
-                    Double score = null;
-                    Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                    if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
-                    serviceSubtask.setScore(String.valueOf(score));
-                    serviceSubtask.setFinishtime(new Date());
-                    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());
-                    redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
-                    //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask1.getJsy(), 120, TimeUnit.MINUTES);
-                    redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-                    redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                }
-            }
-        }
-        log.error("phoneCallBackYQVO鐨勮繑鍥炲�兼槸锛歿}", phoneCallBackYQVO);
-        return phoneCallBackYQVO;
-    }
-
-    private String getObject(ServiceSubtask serviceSubtask, String scriptContent) {
-        Map<String, Map<String, String>> param = getParam(serviceSubtask.getTaskid());
-        for (Map<String, String> map : param.values()) {
-            for (String key : map.keySet()) {
-                scriptContent = scriptContent.replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : "");
-            }
-        }
-        if (StringUtils.isEmpty(scriptContent)) {
-            return scriptContent;
-        }
-        scriptContent = scriptContent.replace("${name}", StringUtils.isNotEmpty(serviceSubtask.getSendname()) ? serviceSubtask.getSendname() : "");
-        scriptContent = scriptContent.replace("${dzz}", StringUtils.isNotEmpty(serviceSubtask.getAddr()) ? serviceSubtask.getAddr() : "");
-        scriptContent = scriptContent.replace("${phone}", StringUtils.isNotEmpty(serviceSubtask.getTelcode()) ? serviceSubtask.getTelcode() : "");
-
-        return scriptContent;
-    }
-
-    /**
-     * 鑾峰彇浠诲姟閲岀殑閫氶厤绗�
-     *
-     * @param taskId
-     * @return
-     */
-    private Map<String, Map<String, String>> getParam(Long taskId) {
-        ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(taskId);
-        ObjectMapper objectMapper = new ObjectMapper();
-        Map<String, Map<String, String>> serviceTaskMap = null;
-        try {
-            serviceTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
-        return serviceTaskMap;
-    }
-
-    private Map<String, String> delRedisValue(String cache, String id) {
-        id = "," + id + ",";
-        String val = "";
-        String cacheName = "";
-        Map<String, String> map = new HashMap<>();
-
-        if (StringUtils.isNotEmpty(cache)) {
-            val = redisCache.getCacheObject(cache);
-            if (!StringUtils.isEmpty(val)) {
-                if (val.contains(id)) {
-                    val = val.replaceAll(id, "");
-                }
-            }
-            map.put("val", val);
-            map.put("cacheName", cache);
-            return map;
-        }
-
-        for (int i = 0; i < 6; i++) {
-            val = redisCache.getCacheObject("cache-0" + i);
-            if (!StringUtils.isEmpty(val)) {
-                if (val.contains(id)) {
-                    val = val.replaceAll(id, "");
-                    map.put("val", val);
-                    map.put("cacheName", "cache-0" + i);
-                }
-            }
-        }
-        return map;
-    }
-
-    /**
-     * 闆ㄧ划浠诲姟鎷夊彇
-     *
-     * @return
-     */
-    @Override
-    public List<PullTaskVO> taskPull() {
-        //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖
-        List<PullTaskVO> pullTaskVOList = new ArrayList<>();
-        List<String> cacheList = new ArrayList<>();
-        ListOperations<String, String> listOps = redisTemplate.opsForList();
-        //蹇呴』绛塧che-exist鍏ㄩ儴鎵撳畬鎵嶈兘鎷夊彇涓嬩竴鎵癸紙涓昏鏄�曟墍鏈夌殑鏁版嵁閮藉爢鍦ㄧ數璇濈殑缂撳瓨閲岋紝鍦ㄨ瀹氱殑鏃堕棿鎵撲笉瀹岋級
-//        long existSize = listOps.size("cache-exist");
-//        if (existSize > 0) return pullTaskVOList;
-        int count = 0;
-        long size = listOps.size("cache-0");
-        log.info("---------鎵撶數璇濅箣鍓嶇紦瀛樹腑鐨勬暟鎹噺锛歿}", size);
-        if (size > 0) {
-            //phoneCount()  閫氳繃缁欏嚭鐨勬瘡涓皬鏃堕渶瑕佹墦鍑虹殑鐢佃瘽閲忥紝绠楀嚭鍒版櫄涓�8鐐逛竴鐐硅兘鎵撳嚭澶氬皯涓數璇濓紝鑾峰彇鍒版�婚噺
-            //濡傛灉闇�瑕佺珛鍗虫墽琛岀殑鏁版嵁閲忓ぇ浜庝竴澶╄鎵ц鐨勪笂闄愶紝鍒欏彧鍙栦笂闄愮殑鏁伴噺锛屽叾瀹冪殑鍒欐斁鍥瀝edis涓�
-            count = Math.min(phoneCount(), (int) size);
-            if (count != 0) {
-                cacheList = listOps.range("cache-0", 0, count - 1);
-            } else {
-                return null;
-            }
-        }
-
-        log.info("浠诲姟鎷夊彇cache-0鐨勫�兼槸澶氬皯锛歿}", cacheList);
-        //  cache-0涓虹珛鍗冲彂璧风殑,鍏跺畠鐨勫厛鎺ㄨ繜
-        if (!CollectionUtils.isEmpty(cacheList)) {
-            pullTaskVOList = getPullTaskList(cacheList, "cache-0");
-            // 鍒犻櫎宸插鐞嗙殑鏁版嵁
-            listOps.trim("cache-0", count, -1);
-            log.info("鎵撶數璇濅箣鍚庣紦瀛樹腑鐨勬暟鎹噺---------锛歿}", listOps.size("cache-0"));
-        } else {
-            for (int i = 1; i < 6; i++) {
-                //鍙栧嚭浠巆ache-1 鍒� cache-5鐨勭涓�涓瓙浠诲姟淇℃伅
-                try {
-                    Long size1 = listOps.size("cache-" + i);
-                    if (size1 == null || size1 == 0) continue;
-                    int count1 = Math.min(phoneCount(), size1.intValue());
-                    List<String> value = listOps.range("cache-0" + i, 0, count1 - 1);
-
-                    List<PullTaskVO> pullTaskVOList2 = getPullTaskList(value, "cache-" + i);
-                    if (CollectionUtils.isNotEmpty(pullTaskVOList2) && pullTaskVOList2.size() > 0) {
-                        pullTaskVOList.addAll(pullTaskVOList2);
-                    }
-                    //灏嗗鐞嗚繃鐨勬暟鎹垹闄�
-                    listOps.trim("cache-0" + i, count1, -1);
-                } catch (Exception e) {
-//                    log.error("鐪嬬潃鐑�");
-                }
-            }
-        }
-        //existList鐢ㄦ潵璁板綍鎺ヤ笅鏉ラ渶瑕佹墽琛岀殑瀛愪换鍔D
-//        List<String> existList = new ArrayList<>();
-        if (CollectionUtils.isNotEmpty(pullTaskVOList)) {
-            //缁欏洖璋冨弬鏁拌祴鍊�
-            for (PullTaskVO pullTaskVO : pullTaskVOList) {
-//                existList.add(pullTaskVO.getTaskid());
-                pullTaskVO.setAsrcallback(ASRCallBackPath);
-            }
-        }
-//        if (existList.size() != 0) redisCache.setCacheListRight("cache-exist", existList);
-        log.info("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null);
-        return pullTaskVOList;
-    }
-
-    private List<PullTaskVO> getPullTaskList(List<String> subIds, String cacheName) {
-        log.error("浠诲姟鎷夊彇subIds鐨勫�兼槸澶氬皯锛歿}", subIds);
-        //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖
-        List<PullTaskVO> pullTaskVOList = new ArrayList<>();
-        //newValue0鐢ㄤ簬淇濆瓨娌℃湁澶勭悊鐨勫瓙 浠诲姟
-//        String newValue0 = "";
-        List<String> newValue0 = new ArrayList<>();
-        //鏍规嵁,鑾峰彇瀛愪换鍔$殑ID
-//        String[] split = subIds.split(",,");
-        for (int i = 0; i < subIds.size(); i++) {
-            if (cacheName.equals("cache-0") && i < subIds.size() || !cacheName.equals("cache-0") && i < 1) {
-                PullTaskVO pullTaskVO = new PullTaskVO();
-                String subId = subIds.get(i).trim();
-                ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(subId));
-                if (ObjectUtils.isEmpty(serviceSubtask)) {
-                    log.error("璇ubId鏈夐棶棰橈紝鍦ㄨ〃涓煡璇笉鍒帮細{}", subId);
-                    continue;
-                }
-                if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
-                    serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
-                    serviceSubtask.setSendstate(4L);
-                    serviceSubtask.setResult("error");
-//                    serviceSubtask.setFinishtime(new Date());
-                    serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-                    continue;
-                }
-                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
-                if (ObjectUtils.isEmpty(ivrTaskTemplate)) continue;
-                //閫氳繃浠诲姟妯℃澘涓殑"绗竴娆¢棶棰樼紪鍙�"鑾峰彇绗竴涓棶棰�;
-                IvrTaskTemplateScript ivrTaskTemplateScript = null;
-                IvrTaskTemplateScript ivrTaskTemplateScript1 = new IvrTaskTemplateScript();
-                ivrTaskTemplateScript1.setTemplateID(ivrTaskTemplate.getId());
-                List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript1);
-                aa:
-                for (IvrTaskTemplateScript ivrTaskTemplateScript2 : ivrTaskTemplateScripts) {
-                    if (ivrTaskTemplate.getFirstQuestionNum() == Long.valueOf(ivrTaskTemplateScript2.getSort())) {
-                        ivrTaskTemplateScript = ivrTaskTemplateScript2;
-                        break aa;
-                    }
-                }
-                //濡傛灉ivrTaskTemplateScript涓虹┖锛屼篃灏辨病鏈夊線涓嬫墽琛岀殑蹇呰浜�
-                if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) {
-                    log.error("---------杩欎釜ivrTaskTemplate.getId()鐨勯棶棰樹负绌猴細{}", ivrTaskTemplate.getId());
-                    continue;
-                }
-                //鑾峰彇閫氶厤绗﹀尮閰嶈繃鍚庣殑闂
-                String scriptContent = ivrTaskTemplateScript.getIvrtext();
-                if (StringUtils.isEmpty(scriptContent)) scriptContent = ivrTaskTemplateScript.getScriptContent();
-                String scrContent = getObject(serviceSubtask, scriptContent);
-                String kcb = serviceTask.getKcb() + "," + scrContent;
-
-                //灏佽杩斿洖鏁版嵁
-                //taskId = 瀛愪换鍔D + 闂ID +闂搴忓彿
-                pullTaskVO.setTaskid(subId);
-                pullTaskVO.setAppkey(app_key_yq);
-                pullTaskVO.setSections(LocalTime.now().format(DateTimeFormatter.ofPattern("hh:mm")) + "-" + LocalTime.now().plusMinutes(1).format(DateTimeFormatter.ofPattern("hh:mm")));
-                pullTaskVO.setPhones(serviceSubtask.getPhone());
-                pullTaskVO.setPrologue(kcb);
-                if (cacheName.equals("cache-0")) pullTaskVO.setDisplayNo("2");
-                else pullTaskVO.setDisplayNo("2");
-                pullTaskVOList.add(pullTaskVO);
-                redisCache.setCacheObject(subId.trim() + "-" + serviceSubtask.getPhone().trim(), ivrTaskTemplateScript.getId().toString(), 120, TimeUnit.MINUTES);
-            } else {
-                newValue0.add(subIds.get(i));
-                redisCache.setCacheListRight(cacheName, newValue0);
-            }
-        }
-
-        return pullTaskVOList;
-    }
-
-    @Override
-    public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
-        int i = 0;
-        log.info("淇濆瓨鐢佃瘽鍥炶皟鍐呭 saveQuestionAnswerPhone锛歿}", serviceSubTaskDetailReq);
-        if (StringUtils.isNotEmpty(serviceSubTaskDetailReq.getParam1())) {
-            RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-            Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam1(), pri_key));
-            Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam2(), pri_key));
-            ServiceSubtaskEntity ivrTaskSingle = new ServiceSubtaskEntity();
-            ivrTaskSingle.setTaskid(tid);
-            ivrTaskSingle.setPatid(pid);
-            List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ivrTaskSingle);
-            if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {
-                log.error("鎶ラ敊浜嗭紝selectServiceSubtaskList鏁版嵁涓虹┖浜嗭細{}", ivrTaskSingle);
-                return 0;
-            }
-            //闅忚
-            for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
-                if (serviceSubtaskDetail.getScriptid() != null) {
-                    //璁剧疆涓�涓嬮棶棰樺垎绫�
-                    IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskDetail.getScriptid());
-                    if (ivrTaskTemplateScript != null)
-                        serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getScriptAssortid());
-                    serviceSubtaskDetail.setIsMydException(ivrTaskTemplateScript.getIsMydException());
-                    serviceSubtaskDetail.setDimension(ivrTaskTemplateScript.getDimension());
-                }
-
-                serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());
-//                serviceSubtaskDetail.setId(UUID.randomUUID().toString());
-                serviceSubtaskDetail.setCreateTime(new Date());
-                serviceSubtaskDetail.setGuid(selectServiceSubtaskList.get(0).getGuid());
-                serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());
-                serviceSubtaskDetail.setGuid(serviceSubTaskDetailReq.getGuid());
-                i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
-            }
-        } else {
-            if (serviceSubTaskDetailReq != null && CollectionUtils.isNotEmpty(serviceSubTaskDetailReq.getServiceSubtaskDetailList())) {
-                for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
-                    if (serviceSubtaskDetail.getScriptid() != null) {
-                        //璁剧疆涓�涓嬮棶棰樺垎绫�
-                        IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskDetail.getScriptid());
-                        if (ivrTaskTemplateScript != null)
-                            serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getScriptAssortid());
-                    }
-                    serviceSubtaskDetail.setCreateTime(new Date());
-                    serviceSubtaskDetail.setGuid(serviceSubTaskDetailReq.getGuid());
-                    serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());
-                    //鍏堟牴鎹瓙浠诲姟id,浠诲姟ID鍜岄棶棰樺簭鍙锋煡璇竴涓嬶紝璇ラ棶棰樻槸鍚﹀凡缁忔湁鍊硷紝濡傛灉鏈夊�硷紝鐩存帴淇敼锛屽鏋滀负绌猴紝鐩存帴鎻掑叆
-                    ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();
-                    ssd.setSubId(serviceSubtaskDetail.getSubId());
-                    ssd.setTaskid(serviceSubtaskDetail.getTaskid());
-                    ssd.setScriptid(serviceSubtaskDetail.getScriptid());
-                    if (serviceSubtaskDetail.getSubId() != null) {
-                        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskDetail.getSubId());
-                        ssd.setGuid(serviceSubtask.getGuid());
-                        ssd.setOrgid(serviceSubtask.getOrgid());
-                    }
-                    List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(ssd);
-                    if (CollectionUtils.isNotEmpty(serviceSubtaskDetails) && StringUtils.isNotEmpty(serviceSubtaskDetails.get(0).getMatchedtext())) {
-                        serviceSubtaskDetail.setId(serviceSubtaskDetails.get(0).getId());
-                        serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail);
-                    } else {
-                        if (serviceSubtaskDetail.getSubId() != null) {
-                            ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskDetail.getSubId());
-                            serviceSubtaskDetail.setGuid(serviceSubtask.getGuid());
-                            serviceSubtaskDetail.setOrgid(serviceSubtask.getOrgid());
-                        }
-                        i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
-                    }
-                }
-            }
-        }
-        return i;
-    }
-
-    @Override
-    public Integer recordAccept(PhoneCallRecordVO phoneCallRecordVO) {
-        Object cacheObject = redisCache.getCacheObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
-        if (phoneCallRecordVO.getHangup_cause().equals("NO_USER_RESPONSE") || ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("1")) {
-            //鏃犱汉鎺ュ惉
-            //璁板綍鐢佃瘽鍙戦�佺姸鎬�
-            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")) {
-//        if (phoneCallRecordVO.getAnswered() != null && phoneCallRecordVO.getAnswered() == true) {
-            log.error("鏈変汉鎺ョ數璇濅簡锛屽苟涓斿畬浜�");
-            //璇存槑鏈変汉鎺ヤ簡
-            int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1;  // 鍔�1鏄烦杩�/绗﹀彿
-            int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/");
-            String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);
-            ServiceSubtask serviceSubtask = new ServiceSubtask();
-            serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-            serviceSubtask.setSendstate(6L);
-            serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));
-            serviceSubtask.setFinishtime(new Date());
-            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");
-        } else {
-            //鎮h�呮嫆缁濋殢璁�
-            //鍏堟妸璇ubId浠巆ache_exist涓墧闄わ紝鍙鏈夊洖璋冨氨鍓旈櫎锛堢洰鐨勬槸锛屽敖蹇cache-exist涓虹┖锛屽幓缂撳瓨涓嬩竴鎵硅鎵撶殑鐢佃瘽;杩欓噷鍓旈櫎涓嶅奖鍝嶇數璇濈殑姝e父涓氬姟锛�
-//            redisCache.removeElementFromList("cache-exist", phoneCallRecordVO.getTaskid());
-            ServiceSubtask serviceSubtask = new ServiceSubtask();
-            serviceSubtask.setRemark("鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�");
-            serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));
-            serviceSubtask.setSendstate(6L);
-            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-//            int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1;  // 鍔�1鏄烦杩�/绗﹀彿
-//            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());
-            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;
     }
 
     @Override
@@ -4078,163 +2838,6 @@
         return serviceSubtaskStatistic;
     }
 
-    private IvrTaskTemplateScriptVO getNextQuestion(List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO IvrTaskTemplateScriptVO) {
-
-        for (int j = 0; j < IvrTaskTemplateScriptVOList.size(); j++) {
-            if (IvrTaskTemplateScriptVOList.get(j).getTargetid() == IvrTaskTemplateScriptVO.getTargetid() + 1) {
-                // 瀵硅鏉emplateScriptVO杩涜澶勭悊
-                return IvrTaskTemplateScriptVOList.get(j);
-            }
-        }
-        return null;
-    }
-
-    private ServiceSubtaskDetail getServiceSubtaskDetail(PhoneCallReqYQVO phoneCallReqYQVO, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask, IvrTaskTemplate ivrTaskTemplate) {
-        log.info("-----------------phoneCallReqYQVO鐨勫�间负锛歿}", phoneCallReqYQVO);
-
-        ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
-        serviceSubtaskDetail.setSubId(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-        ServiceSubtask serviceSubtask1 = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
-        if (serviceSubtask1 != null) {
-            serviceSubtaskDetail.setTaskid(serviceSubtask1.getTaskid());
-            serviceSubtaskDetail.setPatid(serviceSubtask1.getPatid());
-        }
-        serviceSubtaskDetail.setTargetid(ivrTaskTemplateScriptVO.getTargetid() != null ? ivrTaskTemplateScriptVO.getTargetid().intValue() : null);
-        serviceSubtaskDetail.setUuid(phoneCallReqYQVO.getUuid());
-        serviceSubtaskDetail.setPhone(phoneCallReqYQVO.getPhone());
-        serviceSubtaskDetail.setOperate(serviceSubtask.getCreateBy());
-        serviceSubtaskDetail.setDisplayno(phoneCallReqYQVO.getPhone());
-        serviceSubtaskDetail.setAssigntime(System.currentTimeMillis());
-        serviceSubtaskDetail.setStarttime(System.currentTimeMillis());
-        serviceSubtaskDetail.setAnswertime(System.currentTimeMillis());
-        serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid());
-        serviceSubtaskDetail.setAsrtext("鏃犲簲绛�");
-        if (StringUtils.isNotEmpty(phoneCallReqYQVO.getAsrtext()))
-            serviceSubtaskDetail.setAsrtext(phoneCallReqYQVO.getAsrtext());
-        serviceSubtaskDetail.setBeginTime(System.currentTimeMillis());
-        serviceSubtaskDetail.setEndTime(System.currentTimeMillis());
-        serviceSubtaskDetail.setSentEnd(1L);
-        serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString());
-        serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
-        serviceSubtaskDetail.setQuestiontext(StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent());
-        serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath());
-        serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType());
-        serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());
-        serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText());
-        serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId());
-        serviceSubtaskDetail.setLibTemplateid(serviceSubtask.getLibtemplateid() != null ? serviceSubtask.getLibtemplateid().intValue() : null);
-
-        int i = 1;
-        for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {
-            if (ivrTaskTemplateTargetoption.getIsUserOperation() == 1) {
-                serviceSubtaskDetail.setMatchedtext(ivrTaskTemplateTargetoption.getTargetvalue());
-                serviceSubtaskDetail.setScore(ivrTaskTemplateTargetoption.getScore() != null ? ivrTaskTemplateTargetoption.getScore().toString() : "0");
-            }
-            serviceSubtaskDetail.setTargetvalue(StringUtils.isEmpty(serviceSubtaskDetail.getTargetvalue()) ? ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetail.getTargetvalue() + "&" + ivrTaskTemplateTargetoption.getTargetvalue());
-        }
-
-        serviceSubtaskDetail.setAddtime(new Date());
-        serviceSubtaskDetail.setIsupload(0L);
-        serviceSubtaskDetail.setUploadTime(new Date());
-        serviceSubtaskDetail.setDelFlag("0");
-        serviceSubtaskDetail.setValueType(ivrTaskTemplateScriptVO.getScriptType());
-        return serviceSubtaskDetail;
-    }
-
-    /**
-     * 鐢佃瘽鐨勮ˉ鍋挎柟娉曪紙鑰侊級
-     *
-     * @param subTaskId
-     */
-    private void getSmsCompensate(Long subTaskId) {
-        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(subTaskId);
-        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
-        String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);
-        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
-        String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
-        ServiceOutPath serviceOutPath = new ServiceOutPath();
-        serviceOutPath.setParam1(taskId);
-        serviceOutPath.setParam2(patid);
-        serviceOutPath.setCreateTime(new Date());
-        serviceOutPath.setParam6(subId);
-        serviceOutPath.setOrgid(serviceSubtask.getOrgid());
-        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
-        //杞垚16杩涘埗
-        String format = String.format("%03X", serviceOutPath.getId());
-        String url = "";
-        SendMagParam sendMagParam = new SendMagParam();
-        url = localIP + ":" + req_path + "/sf?p=" + format;
-        sendMagParam.setUrl(url);
-        sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
-        serviceOutPath.setRadix(format);
-        serviceOutPath.setUpdateTime(new Date());
-        serviceOutPath.setUrl(url);
-        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-        //鐭俊鍙戦�佸凡鏀跺彛鍒� ruoyi-message 妯″潡锛涗笌鍘熷疄鐜颁竴鑷达細涓嶅垽鏂彂閫佺粨鏋�
-        smsSenderFactory.send(active, SmsSendRequest.of(serviceSubtask.getPhone(), sendMagParam.getContent(), serviceSubtask.getOrgid()));
-        redisCache.setCacheObject(subTaskId + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
-        if (StringUtils.isNotEmpty(serviceSubtask.getRemark()))
-            serviceSubtask.setRemark("鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔�");
-        else serviceSubtask.setRemark("鐭俊琛ュ伩鍙戦�佹垚鍔�");
-        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);
-        }
-
-    }
-
-    //閫氳繃褰撳墠鏃堕棿锛屾媺鍙栫數璇濇�绘暟
-    private Integer phoneCount() {
-        // 褰撳墠鏃堕棿
-        LocalTime currentTime = LocalTime.now();
-        // 鐩爣鏃堕棿锛堟櫄涓� 8 鐐癸級
-        LocalTime targetTime = LocalTime.of(phoneEndHour, 0);
-//        // 璁$畻褰撳墠鏃堕棿鍒扮洰鏍囨椂闂寸殑鏃堕暱
-//        Duration duration = Duration.between(currentTime, targetTime);
-//        // 鑾峰彇鍓╀綑鏃堕棿鐨勫皬鏃舵暟
-//        long remainingHours = 0;
-//        long remainingMinutes = duration.toMinutes();
-//        //濡傛灉瓒呰繃8鐐�,灏辫缃负0
-//        //璺濈缁撴潫鏃堕棿灏忎簬20鍒嗛挓锛屽氨涓嶆媺鍙栦簡
-//        if (remainingMinutes < 20) remainingHours = 0;
-//        else if (remainingMinutes < 60 && remainingMinutes > 20) remainingHours = 1;
-//        else if (remainingMinutes > 60) remainingHours = remainingMinutes / 60;
-//        // 璁$畻鍓╀綑鍙互鎵撶殑鐢佃瘽鏁�
-//        int remainingCalls = (int) (remainingHours * phoneUpEveryHour);
-//        return remainingCalls;
-        if (currentTime.isBefore(targetTime)) {
-            //濡傛灉褰撳墠鏃堕棿杩樺湪鎴鏃堕棿鍐咃紝鍒欑户缁彂
-            return phoneUpEveryHour;
-        }
-        return 0;
-    }
-
     public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq) {
         return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);
     }
@@ -4681,83 +3284,6 @@
     }
 
     /**
-     * @param serviceSubtask
-     * @param preachform
-     * @param remark
-     * @param failSendstate
-     * @return
-     */
-    public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
-        log.info("setFailPreachForm 闅忚娴佺▼澶勭悊 serviceSubtask:{}, preachform:{}, remark:{}, failSendstate:{}", serviceSubtask, preachform, remark, 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);
-                serviceSubtask.setRemark(remark + ";鎵�鏈夋墽琛屾柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
-                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-                return true;
-            } else {
-                //鍔犲叆鐩墠琛ュ伩閲岀殑 remark
-                serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + remark : remark);
-                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-            }
-        }
-
-        //灏界澶辫触锛岃繖閲屼篃灏嗗綋鍓嶅彂閫佹柟寮忕户缁缃垚鈥滅數璇濃�濓紝sendstate璁剧疆鎴�3锛涘洜涓簉yTask閲岀殑琛ュ伩鐨勫畾鏃朵换鍔¤繍琛屾椂锛屼細鎵惧埌杩欐潯subtask锛屽苟杩涜澶勭悊
-        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)) {
-            //娌℃湁闅忚鏃堕棿鍒欐寜褰撳ぉ鏉ョ畻--涓存椂
-            if (ObjectUtils.isEmpty(visitTime)) {
-                visitTime = new Date();
-            }
-
-            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;
-    }
-
-    /**
      * 璁$畻鎬昏琛�
      *
      * @param statistics 缁熻鏁版嵁鍒楄〃
@@ -4956,8 +3482,8 @@
     public void setFailSubTaskDefalutVal(Long failDay) {
         //1.鍏堝幓sys_config涓紝鑾峰彇鍝簺绉戝鎴栫梾鍖洪渶瑕侀粯璁ら棶鍗烽粯璁ゅ��
         IConfigService configService = SpringUtils.getBean(IConfigService.class);
-        String deptConfigValue = configService.selectConfigByKey("hosp.default.dept");
-        String wardConfigValue = configService.selectConfigByKey("hosp.default.ward");
+        String deptConfigValue = taskSysConfigPort.selectConfigValue("hosp.default.dept");
+        String wardConfigValue = taskSysConfigPort.selectConfigValue("hosp.default.ward");
         List<String> leaveWard = null;
         List<String> leaveDept = null;
         if (deptConfigValue != null && !deptConfigValue.isEmpty()) {
@@ -4985,7 +3511,7 @@
             Boolean flag = false;
             ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
             serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
-            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+            List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = taskPreachformPort.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
             if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms))
                 preachformSize = serviceSubtaskPreachforms.size();
             if (serviceSubtask.getUpdateTime() != null && DateUtils.differentDaysByMillisecond(new Date(), serviceSubtask.getUpdateTime()) >= failDay) {
@@ -5114,12 +3640,13 @@
         serviceOutPath.setUpdateTime(new Date());
         serviceOutPath.setUrl(url);
         iServiceOutPathService.updateServiceOutPath(serviceOutPath);
-        SysConfig sysConfig = new SysConfig();
 
-        sysConfig = sysConfigMapper.checkConfigKeyUnique("wj.sms.template");
+        // 鍙傛暟鍊肩粡绔彛鍙栫敤锛堝師涓� sysConfigMapper.checkConfigKeyUnique + getConfigValue锛夈��
+        // 璇箟绛変环锛氬師鍒ゅ畾"琛屽瓨鍦�"銆佽繖閲屽垽瀹�"鍊奸潪 null"锛岃�� sys_config.config_value 鏄�
+        // varchar(500) NOT NULL DEFAULT '' 鈬� 浜岃�呬笉鍙兘涓嶅悓锛堣瑙� TaskSysConfigPort javadoc锛夈��
+        String smsContemt = taskSysConfigPort.findConfigValueByKey("wj.sms.template");
 
-        if (!Objects.isNull(sysConfig)) {
-            String smsContemt = sysConfig.getConfigValue();
+        if (smsContemt != null) {
             sendMagParam.setContent(smsContemt.replace("${wjurl}", sendMagParam.getUrl()));
         }
 
@@ -5148,7 +3675,7 @@
             //鑾峰彇闅忚鐨勫熀鏈俊鎭�
             ServiceSubtask serviceSubtask = selectServiceSubtaskById(subid);
             //鑾峰彇鎮h�呬俊鎭�
-            PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid());
+            PatArchive patArchive = taskArchivePort.findByPatid(serviceSubtask.getPatid());
 
             RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
             String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
@@ -5485,7 +4012,7 @@
             return null;
         }
         try {
-            SysDept sysDept = sysDept2Mapper.selectDeptByCode(deptCode, orgid);
+            SysDept sysDept = taskSysDeptPort.selectDeptByCode(deptCode, orgid);
             return sysDept == null ? null : sysDept.getCampusid();
         } catch (Exception e) {
             log.warn("鎸夌紪鐮佸弽鏌ラ櫌鍖哄け璐ワ細deptCode={}, orgid={}, err={}", deptCode, orgid, e.getMessage());
@@ -5529,460 +4056,6 @@
         }
     }
 
-    public PhoneCallBackSHVO getFirstQues(PhoneCallReqYQVO phoneCallReqYQVO) {
-        //鐢ㄤ簬杩斿洖
-        PhoneCallBackSHVO phoneCallBackSHVO = new PhoneCallBackSHVO();
-
-        //鏍规嵁鎵嬫満鍙疯幏鍙栫敤鎴风殑鐨勫瓙浠诲姟淇℃伅
-        ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
-        serviceSubtaskVO.setPhone(phoneCallReqYQVO.getPhone());
-        serviceSubtaskVO.setType("1");
-        serviceSubtaskVO.setSendstate(2L);
-        List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
-        if (CollectionUtils.isNotEmpty(serviceSubtasks)) {
-            ServiceSubtask serviceSubtask = serviceSubtasks.get(0);
-            IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
-
-            //閫氳繃浠诲姟妯℃澘涓殑"绗竴娆¢棶棰樼紪鍙�"鑾峰彇绗竴涓棶棰�;
-            IvrTaskTemplateScript ivrTaskTemplateScript = null;
-            IvrTaskTemplateScript ivrTaskTemplateScript1 = new IvrTaskTemplateScript();
-            ivrTaskTemplateScript1.setTemplateID(ivrTaskTemplate.getId());
-            List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript1);
-
-            for (IvrTaskTemplateScript ivrTaskTemplateScript2 : ivrTaskTemplateScripts) {
-                if (ivrTaskTemplate.getFirstQuestionNum() == Long.valueOf(ivrTaskTemplateScript2.getSort())) {
-                    ivrTaskTemplateScript = ivrTaskTemplateScript2;
-                    break;
-                }
-            }
-            //鑾峰彇寮�鍦虹櫧
-            ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-
-            phoneCallBackSHVO.setSubId(serviceSubtask.getId());
-            phoneCallBackSHVO.setScriptId(ivrTaskTemplateScript.getId());
-            phoneCallBackSHVO.setSort(ivrTaskTemplateScript.getSort());
-            phoneCallBackSHVO.setTaskTemplateid(ivrTaskTemplateScript.getTemplateID());
-            phoneCallBackSHVO.setScriptContent(serviceTask.getKcb() + "," + ivrTaskTemplateScript.getScriptContent());
-        }
-        return phoneCallBackSHVO;
-    }
-
-    /**
-     * 涓夋眹ASR缁撴灉澶勭悊
-     *
-     * @param phoneCallResultYQVO
-     * @return
-     */
-    public PhoneCallBackSHVO processResust(PhoneCallResultYQVO phoneCallResultYQVO) {
-        PhoneCallBackSHVO phoneCallBackSHVO = new PhoneCallBackSHVO();
-        //閫氳繃scriptid锛岃幏鍙栨墍鏈夌殑缁撴灉
-        String url = configService.selectConfigByKey("sys.voice.match.ai.url", phoneCallResultYQVO.getOrgid());
-        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(phoneCallResultYQVO.getSubId());
-        IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
-        IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = iIvrTaskTemplateScriptService.getTaskTempScriptInfoByid(Long.valueOf(phoneCallResultYQVO.getScriptId()));
-        Integer i = matchOptionIndex(url, phoneCallResultYQVO.getScriptContent(), phoneCallResultYQVO.getAsrResult(), ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList(), phoneCallResultYQVO.getUuid());
-        if (i >= 0) {
-            String optiondesc = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(i).getOptiondesc();
-            //灏嗘偅鑰呯殑鍥炵瓟鍐欒繘service_subtask_detail涓�
-            ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
-            List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
-            ivrTaskTemplateScriptVO.setQuestionResult(optiondesc);
-
-            PhoneCallReqYQVO phoneCallReqYQVO = new PhoneCallReqYQVO();
-            phoneCallReqYQVO.setTaskid("" + serviceSubtask.getId());
-            phoneCallReqYQVO.setPhone(phoneCallResultYQVO.getPhone());
-            phoneCallReqYQVO.setAsrtext(phoneCallResultYQVO.getAsrResult());
-            ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
-            //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
-            if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
-                String questionvoice = serviceSubtaskDetail.getQuestionvoice();
-                String[] split = questionvoice.split("\\\\");
-                if (split.length > 0) {
-                    String lastPart = split[split.length - 1];
-                    serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
-                }
-            }
-            serviceSubtaskDetailList.add(serviceSubtaskDetail);
-            serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
-            serviceSubTaskDetailReq.setGuid(phoneCallResultYQVO.getGuid());
-            serviceSubTaskDetailReq.setOrgid(phoneCallResultYQVO.getOrgid());
-            saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-
-            IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
-            ivrTaskTemplateScript.setTemplateID(ivrTaskTemplateScriptVO.getTemplateID());
-            List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
-
-            //鑾峰彇涓嬩竴棰�
-            for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
-                if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
-                    ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                    phoneCallBackSHVO.setScriptContent(serviceTask.getJsy());
-                    phoneCallBackSHVO.setTaskTemplateid(script.getTemplateID());
-                    phoneCallBackSHVO.setSort(script.getSort());
-                    phoneCallBackSHVO.setScriptId(script.getId());
-                    phoneCallBackSHVO.setSubId(serviceSubtask.getId());
-                    phoneCallBackSHVO.setStatus("0");
-                } else if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
-                    phoneCallBackSHVO.setScriptContent(script.getScriptContent());
-                    phoneCallBackSHVO.setTaskTemplateid(script.getTemplateID());
-                    phoneCallBackSHVO.setSort(script.getSort());
-                    phoneCallBackSHVO.setScriptId(script.getId());
-                    phoneCallBackSHVO.setSubId(serviceSubtask.getId());
-                    break;
-                }
-            }
-            //鎶婄紦瀛樻竻闄�
-            redisCache.deleteObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId());
-        } else {
-            //鍐嶅皢閲嶅璇㈤棶
-            //璁板綍涓�涓嬭繖涓棶棰樿闂鐨勬鏁�
-            Object cacheObject = redisCache.getCacheObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId());
-            if (cacheObject == null || (Integer) cacheObject < ivrTaskTemplate.getMateNum()) {
-
-                // 鑾峰彇閫夐」闆嗗悎涓殑 optiondesc 鐢ㄤ簬寮曞鎮h��
-                List<IvrTaskTemplateTargetoption> optionList = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList();
-                String optionDescStr = "";
-                if (optionList != null && !optionList.isEmpty()) {
-                    optionDescStr = optionList.stream().map(IvrTaskTemplateTargetoption::getTargetvalue).filter(StringUtils::isNotEmpty).collect(Collectors.joining("鎴�"));
-                }
-
-                String scriptContent = "璇烽棶" + phoneCallResultYQVO.getScriptContent();
-                if (StringUtils.isNotEmpty(optionDescStr)) {
-                    scriptContent += "锛屼綘鍙互鍥炵瓟锛�" + optionDescStr;
-                }
-                phoneCallBackSHVO.setScriptContent(scriptContent);
-                phoneCallBackSHVO.setTaskTemplateid(phoneCallResultYQVO.getTaskTemplateid());
-                phoneCallBackSHVO.setSort(phoneCallResultYQVO.getSort());
-                phoneCallBackSHVO.setScriptId(phoneCallResultYQVO.getScriptId());
-                phoneCallBackSHVO.setSubId(phoneCallResultYQVO.getSubId());
-                if (cacheObject == null)
-                    redisCache.setCacheObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId(), 1, 120, TimeUnit.MINUTES);
-                else
-                    redisCache.setCacheObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId(), (Integer) cacheObject + 1, 120, TimeUnit.MINUTES);
-            } else if ((Integer) cacheObject >= ivrTaskTemplate.getMateNum()) {
-                //濡傛灉宸茬粡闂簡瑙勫畾娆℃暟锛屽氨涓嶉棶浜嗭紝缁х画闂笅涓�棰橈紙杩欎釜瑕佸晢閲忎竴涓嬶紝鏄户缁棶涓嬩竴棰橈紝杩樻槸鍋滀簡锛屾槸涓嶆槸瑕佸仛涓紑鍏筹級
-                IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
-                ivrTaskTemplateScript.setTemplateID(ivrTaskTemplateScriptVO.getTemplateID());
-                List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
-                //鑾峰彇涓嬩竴棰�
-                for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
-                    if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
-                        phoneCallBackSHVO.setScriptContent(script.getScriptContent());
-                        phoneCallBackSHVO.setTaskTemplateid(script.getTemplateID());
-                        phoneCallBackSHVO.setSort(script.getSort());
-                        phoneCallBackSHVO.setScriptId(script.getId());
-                        phoneCallBackSHVO.setSubId(serviceSubtask.getId());
-                        break;
-                    }
-                }
-                //鎶婄紦瀛樻竻闄�
-                redisCache.deleteObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId());
-            }
-        }
-        return phoneCallBackSHVO;
-    }
-
-    public PhoneCallBackYQVO AiMatch(String url, PhoneCallReqYQVO phoneCallReqYQVO, PhoneCallBackYQVO phoneCallBackYQVO, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask, IvrTaskTemplate ivrTaskTemplate, List<IvrTaskTemplateScript> ivrTaskTemplateScripts, String scriptId, Integer flag, String uuid) {
-        PhoneCallBackYQVO back = null;
-        List<IvrTaskTemplateTargetoption> options = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList();
-        String voiceText = phoneCallReqYQVO.getAsrtext();
-        String questionText = StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent();
-        Integer matched = -1;
-        log.info("AI鍖归厤:url = {},questionText = {},voiceText = {},options = {},uuid ={}",
-                url,questionText,voiceText,options,uuid);
-        matched = matchOptionIndex(url, questionText, voiceText, options, uuid);
-        //璇存槑鍖归厤姝g‘浜�
-        if (matched != null && matched >= 0) {
-            IvrTaskTemplateTargetoption chosenOption = options.get(matched);
-            //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
-            log.info("鍖归厤姝g‘浜嗗悧--------------");
-            chosenOption.setIsUserOperation(1);
-            serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(chosenOption);
-
-            //灏嗘偅鑰呯殑鍥炵鍐欒繘service_subtask_detail涓�
-            ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
-            List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
-            ivrTaskTemplateScriptVO.setQuestionResult(chosenOption.getOptiondesc());
-            ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
-            //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
-            if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
-                String questionvoice = serviceSubtaskDetail.getQuestionvoice();
-                String[] split = questionvoice.split("\\\\");
-                if (split.length > 0) {
-                    String lastPart = split[split.length - 1];
-                    serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
-                }
-            }
-            serviceSubtaskDetailList.add(serviceSubtaskDetail);
-            serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
-            serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
-            serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
-            saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-
-            //鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓攄utyDeptCode鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
-            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == chosenOption.getIsabnormal()) {
-                ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
-                //鐢╰askid銆乻ubid鍜宻criptid鍘昏幏鍙杁etailid
-                ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();
-                ssd.setSubId(serviceSubtask.getId());
-                ssd.setTaskid(serviceSubtask.getTaskid());
-                ssd.setScriptid(StringUtils.isNotEmpty(scriptId) ? Long.valueOf(scriptId) : null);
-                List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(ssd);
-                subtaskDetailTrace.setDetailId(CollectionUtils.isNotEmpty(serviceSubtaskDetails) ? serviceSubtaskDetails.get(0).getId() : null);
-
-                subtaskDetailTrace.setSubId(serviceSubtask.getId());
-                subtaskDetailTrace.setTaskid(serviceSubtask.getTaskid());
-                subtaskDetailTrace.setTemplateid(ivrTaskTemplateScriptVO.getId());
-                subtaskDetailTrace.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
-                subtaskDetailTrace.setSwitchid(chosenOption.getId());
-                subtaskDetailTrace.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());
-                subtaskDetailTrace.setQuestionvoice(null);
-                subtaskDetailTrace.setCategoryname(ivrTaskTemplateScriptVO.getScriptAssortname());
-                subtaskDetailTrace.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid());
-                //鑾峰彇鎵�鏈夐�夐」
-                String optionDescStr = Optional.ofNullable(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()).filter(list -> !list.isEmpty()).map(list -> list.stream().map(IvrTaskTemplateTargetoption::getOptiondesc).filter(Objects::nonNull).collect(Collectors.joining("&"))).orElse("");
-                subtaskDetailTrace.setTargetid(chosenOption.getId());
-                subtaskDetailTrace.setTargetvalue(optionDescStr);
-                subtaskDetailTrace.setMatchedtext(chosenOption.getOptiondesc());
-                subtaskDetailTrace.setValueType(serviceSubtaskDetails.get(0).getValueType());
-                subtaskDetailTrace.setTemplateType(1);
-
-                SvyLibScriptCategory svyLibScriptCategory = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryById(ivrTaskTemplateScriptVO.getScriptAssortid());
-                subtaskDetailTrace.setType(svyLibScriptCategory.getType());
-                subtaskDetailTrace.setScriptid(ivrTaskTemplateScriptVO.getId());
-                subtaskDetailTrace.setAsrtext(phoneCallReqYQVO.getAsrtext());
-                subtaskDetailTrace.setRecordpath(phoneCallReqYQVO.getRecordpath());
-                subtaskDetailTrace.setPatid(serviceSubtask.getPatid());
-                JSONObject patdescJson = new JSONObject();
-                patdescJson.put("sendname", serviceSubtask.getSendname());
-                patdescJson.put("phone", serviceSubtask.getPhone());
-                patdescJson.put("age", serviceSubtask.getAge());
-                patdescJson.put("sex", serviceSubtask.getSex() != null ? serviceSubtask.getSex() == 1 ? "鐢�" : "濂�" : null);
-                subtaskDetailTrace.setPatdesc(patdescJson.toJSONString());
-                subtaskDetailTrace.setTodeptcode(ivrTaskTemplateScriptVO.getDutyDeptCode());
-                subtaskDetailTrace.setTodeptname(ivrTaskTemplateScriptVO.getDutyDeptName());
-                subtaskDetailTrace.setOrgid(serviceSubtask.getOrgid());
-                subtaskDetailTrace.setHandleFlag("0");
-                subtaskDetailTrace.setGuid(phoneCallReqYQVO.getGuid());
-                subtaskDetailTrace.setCreateTime(new Date());
-                subtaskDetailTrace.setUpdateTime(new Date());
-                subtaskDetailTrace.setOrgid(phoneCallReqYQVO.getOrgid());
-                traceService.insertServiceSubtaskDetailTtrace(subtaskDetailTrace);
-            }
-
-            //鍒ゆ柇涓�涓嬶紝杩欎釜閫夐」缁撴灉鏄笉鏄繕鏈夌户缁棶涓嬪幓鐨勫繀瑕侊紝渚嬪閫夐」缁撴灉鏄埆浜轰笉鎯崇户缁洖绛旈棶棰橈紝灏辫缁撴潫鎺�
-            if (chosenOption.getIsEnd() == 1) {
-                redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "noVoice");
-                //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-                phoneCallBackYQVO.setType("text");
-                phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());
-                //璁板綍鐘舵��
-                setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                back = phoneCallBackYQVO;
-                return back;
-            }
-
-            flag = 1;
-            //灏嗗綋鍓嶅墠鐨勬挱鎶ョ姸鎬佸垹闄わ紝缁欎笅涓�棰樿浣�
-            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-//                        //鑾峰彇涓嬩竴棰�
-            log.error("鑾峰彇涓嬩竴棰樼殑淇℃伅锛歿}", ivrTaskTemplateScriptVO);
-            //branchFlag涓簄ull鏃舵寜鍒嗘敮0澶勭悊锛岄伩鍏峃PE
-            if ("1".equals(ivrTaskTemplateScriptVO.getBranchFlag()) || "0".equals(ivrTaskTemplateScriptVO.getBranchFlag()) && ivrTaskTemplateScriptVO.getNextScriptno() != null && ivrTaskTemplateScriptVO.getNextScriptno() != 0) {
-                Long nextQuestion = null;
-                if ("1".equals(ivrTaskTemplateScriptVO.getBranchFlag())) {
-                    nextQuestion = chosenOption.getNextQuestion();
-                    //鏇存柊鍒嗘暟
-                    double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                    score = BigDecimal.valueOf(score).add(new BigDecimal(chosenOption.getScore())).doubleValue();
-                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score);
-                } else {
-                    nextQuestion = ivrTaskTemplateScriptVO.getNextScriptno();
-                    //鏇存柊鍒嗘暟
-                    Object obj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                    Double score = (obj == null ? new Double(0.00) : new Double(((Double) obj).doubleValue()));
-                    score = BigDecimal.valueOf(score).add(new BigDecimal(String.valueOf(chosenOption.getScore()))).doubleValue();
-                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
-                }
-                if (nextQuestion == null || nextQuestion == 0L) {
-                    //濡傛灉涓嬩竴棰樹负绌猴紝鎴栬�呬负0锛屽垯鎸傛満
-                    ServiceSubtask ss = new ServiceSubtask();
-                    ss.setId(serviceSubtask.getId());
-                    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");
-                    redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "noVoice");
-                    //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                    ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-                    phoneCallBackYQVO.setType("text");
-                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());
-                    //鏄庣粏鍦ㄦ湰棰樺尮閰嶆垚鍔熸椂宸茶惤搴擄紙瑙佷笂鏂� saveQuestionAnswerPhone锛夛紝杩欓噷涓嶅啀閲嶅淇濆瓨
-                    back = phoneCallBackYQVO;
-                    return back;
-                }
-
-                for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
-                    if (script.getSort() == nextQuestion.intValue()) {
-                        phoneCallBackYQVO.setType("text");
-                        phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                        String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();
-                        log.error("涓嬩竴棰橀棶棰橈細{}", scriptContent);
-                        log.error("涓嬩竴棰樼殑瀛愪换鍔℃槸锛歿}", serviceSubtask);
-                        phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
-                        //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀�
-                        redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);
-                        //鍒犻櫎鏃犲搷搴�
-                        redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
-                    }
-                }
-                //涓嬩竴棰樿剼鏈病鎵惧埌鏃讹紝鍏滃簳閲嶉棶褰撳墠棰橈紝閬垮厤璋冪敤鏂硅鍒や负鏈鐞嗚�岄��鍥炴鍒欒瘑鍒�
-                if (StringUtils.isEmpty(phoneCallBackYQVO.getValue())) {
-                    log.error("涓嬩竴棰樿剼鏈湭鎵惧埌锛岄噸闂綋鍓嶉锛宯extQuestion锛歿}", nextQuestion);
-                    phoneCallBackYQVO.setType("text");
-                    phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, questionText));
-                }
-                back = phoneCallBackYQVO;
-                return back;
-            } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
-                ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                phoneCallBackYQVO.setType("text");
-                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                //鏇存柊涓�涓嬪垎鏁�
-                double score = 0.0;
-                Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                if (ObjectUtils.isNotEmpty(scoreObj)) score = (double) scoreObj;
-                serviceSubtask.setScore(String.valueOf(score));
-                serviceSubtask.setFinishtime(new Date());
-                serviceSubtask.setSendstate(6L);
-                serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
-                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-                //璁板綍鐘舵��
-                setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-                //璁剧疆缁撴潫璇�
-                phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
-                Long id = serviceSubtask.getId();
-                Map<String, String> map = delRedisValue(null, id.toString());
-                log.error("map鐨勫�间负锛歿}", map);
-                if (ObjectUtils.isNotEmpty(map)) redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
-                redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-                redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
-                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-                //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-                //缁撴潫璇凡鎷艰繘杩斿洖鍊硷紝鎸傛満鐢卞钩鍙版寜杩斿洖鍊兼墽琛�
-                back = phoneCallBackYQVO;
-                return back;
-
-            }
-        } else {
-            //AI娌℃湁鍖归厤涓婏細鐢盇I鍒嗘敮鑷繁鎸�"娌¢棶娓呭氨閲嶉棶"鐨勬鏁板鐞嗭紝涓嶅啀閫�鍥炴鍒欒瘑鍒�
-            log.info("ai娌℃湁鍖归厤涓�----------------------------");
-            //娌″尮閰嶄笂涔熻鎶婃偅鑰呰鐨勮瘽璁板綍涓嬫潵锛坢atchedtext缃┖锛屼笌姝e垯璺緞鍙e緞涓�鑷达級
-            ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
-            List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
-            ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
-            //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
-            if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
-                String questionvoice = serviceSubtaskDetail.getQuestionvoice();
-                String[] split = questionvoice.split("\\\\");
-                if (split.length > 0) {
-                    String lastPart = split[split.length - 1];
-                    serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
-                }
-            }
-            serviceSubtaskDetailList.add(serviceSubtaskDetail);
-            //濡傛灉娌℃湁 鍖归厤涓婏紝杩欎釜蹇呴』涓簄ull
-            serviceSubtaskDetailList.get(0).setMatchedtext("");
-            serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
-            serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
-            serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
-            saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-
-            String mateKey = phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid();
-            Integer count = null;
-            Object countObj = redisCache.getCacheObject(mateKey);
-            if (ObjectUtils.isNotEmpty(countObj)) count = (Integer) countObj;
-            if (count != null && count >= ivrTaskTemplate.getMateNum()) {
-                //娌″尮閰嶆鏁板凡缁忕敤婊★紝涓嶈兘鍐嶉噸闂簡
-                boolean noNextQuestion = ("0".equals(ivrTaskTemplateScriptVO.getBranchFlag()) || "1".equals(ivrTaskTemplateScriptVO.getBranchFlag()))
-                        && (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0);
-                if (noNextQuestion) {
-                    //宸茬粡鏄渶鍚庝竴棰橈紝鐩存帴鎸傛満
-                    ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-                    phoneCallBackYQVO.setType("text");
-                    phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
-                    //鏇存柊涓�涓嬪垎鏁�
-                    Double score = null;
-                    Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                    if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
-                    serviceSubtask.setScore(String.valueOf(score));
-                    serviceSubtask.setFinishtime(new Date());
-                    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);
-                    //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
-                    Long id = serviceSubtask.getId();
-                    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());
-                        redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                    }
-                } else {
-                    //杩樻湁涓嬩竴棰橈紝鎸塶extScriptno缁х画鎻愰棶
-                    for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
-                        if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
-                            phoneCallBackYQVO.setType("text");
-                            phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                            String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();
-                            phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
-                            //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀�
-                            redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);
-                            //鏇存柊涓�涓嬪垎鏁�
-                            Double score = null;
-                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
-                            score = BigDecimal.valueOf(score).add(new BigDecimal(script.getScore())).doubleValue();
-                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
-                            //鎹㈤鎴愬姛锛屾病鍖归厤娆℃暟娓呴浂
-                            redisCache.deleteObject(mateKey);
-                        }
-                    }
-                }
-            } else {
-                //杩樻病闂弧娆℃暟锛岀敤noMatchText寮曞鎮h�呴噸绛�
-                redisCache.setCacheObject(mateKey, count == null ? 1 : count + 1, 120, TimeUnit.MINUTES);
-                phoneCallBackYQVO.setType("text");
-                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent()));
-            }
-            back = phoneCallBackYQVO;
-            return back;
-        }
-        return back;
-    }
-
     //鑾峰彇浠诲姟缁勪俊鎭�
     private void findServiceTaskScheduleVO(ServiceTaskVO serviceTaskVO) {
         if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype()) && serviceTaskVO.getAppltype().equals("5")) {
@@ -5997,34 +4070,12 @@
         }
     }
 
-    @Test
-    public void TestMatch() {
-        String questionText = "鎮ㄥソ,璇烽棶鎮ㄦ槸鎮h�呮湰浜鸿繕鏄灞烇紵\n";
-        String voiceText = "鎴戣嚜宸�";
-        String matchedText = "";
-        List<IvrTaskTemplateTargetoption> options = new ArrayList<>();
-        IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption1 = new IvrTaskTemplateTargetoption();
-        ivrTaskTemplateTargetoption1.setTargetvalue("鏈汉");
-        options.add(ivrTaskTemplateTargetoption1);
-        IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption2 = new IvrTaskTemplateTargetoption();
-        ivrTaskTemplateTargetoption2.setTargetvalue("瀹跺睘");
-        options.add(ivrTaskTemplateTargetoption2);
-        IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption3 = new IvrTaskTemplateTargetoption();
-        ivrTaskTemplateTargetoption3.setTargetvalue("鍏朵粬");
-        options.add(ivrTaskTemplateTargetoption3);
-        //1-AI璇嗗埆
-        String url = configService.selectConfigByKey("sys.voice.match.ai.url");
-        Integer matched = matchOptionIndex(url, questionText, voiceText, options, "1");
-        if (ObjectUtils.isNotEmpty(matched)) {
-            if (matched >= 0) {
-                matchedText = options.get(matched).getTargetvalue();
-            }
-        }
-        log.info("ai鍖归厤鎴愬姛锛屽尮閰嶇粨鏋滄槸:" + matchedText);
-    }
-
     // ---------------------------------------------------------------------
     // 璇存槑锛氬師绉佹湁 getWXCode / encode 宸查殢鍙戦�佹柟涓�璧锋敹鍙e埌 ruoyi-message 妯″潡
     // 锛圶inHuaMpApi锛夛紝姝ゅ宸插垹闄わ紝閬垮厤涓変唤鎷疯礉鍚勫啓涓�濂楃鍚嶉�昏緫銆�
+    //
+    // 鍙︼細鏈被鍘熸湰杩樻湁涓�涓� @Test 鏍囨敞鐨� TestMatch()锛堝紑鍙戞湡鎵嬪啓鐨� AI 閫夐」鍖归厤璋冭瘯鏂规硶锛夛紝
+    //     鍏ㄤ粨鏃犱换浣曡皟鐢ㄧ偣銆傚畠浼氭妸 org.junit 鎷栬繘銆愮敓浜с�戞簮鐮佷緷璧栵紝鑰� ruoyi-task 鏄�
+    //     jar 妯″潡銆佷笉甯� junit 鈥斺�� 鏁呴殢妯″潡鍖栦竴骞跺垹闄わ紙灞炴浠g爜锛岃涓烘棤褰卞搷锛夈��
     // ---------------------------------------------------------------------
 }

--
Gitblit v1.9.3