From da6cce0d9f01b98d20b9ed89b438cd32006a8dd8 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 22 十一月 2024 17:17:10 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  488 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 369 insertions(+), 119 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index 1a0cf5b..d96e13e 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -1,6 +1,5 @@
 package com.smartor.service.impl;
 
-import afu.org.checkerframework.checker.oigj.qual.O;
 import com.alibaba.fastjson2.JSON;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -8,26 +7,21 @@
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.*;
-import com.ruoyi.common.utils.http.HttpUtils;
+import com.smartor.common.FtpService;
 import com.smartor.config.PhoneUtils;
 import com.smartor.domain.*;
 import com.smartor.mapper.*;
-import com.smartor.service.IIvrTaskTemplateScriptService;
-import com.smartor.service.IIvrTaskTemplateService;
-import com.smartor.service.IServiceSubtaskService;
-import com.smartor.service.IServiceTaskService;
+import com.smartor.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.sql.Time;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalTime;
@@ -71,8 +65,15 @@
 
     @Autowired
     private IIvrTaskTemplateService ivrTaskTemplateService;
+
+    @Autowired
+    private ISvyTaskTemplateService svyTaskTemplateService;
+
     @Autowired
     private IIvrTaskTemplateScriptService iIvrTaskTemplateScriptService;
+
+    @Autowired
+    private FtpService ftpService;
 
     @Value("${pri_key}")
     private String pri_key;
@@ -82,6 +83,15 @@
 
     @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;
 
 
     /**
@@ -154,6 +164,7 @@
                 patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime());
                 patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
                 patTaskRelevance.setPhone(serviceSubtask1.getPhone());
+                patTaskRelevance.setTelcode(serviceSubtask1.getPhone());
                 patTaskRelevance.setAddr(serviceSubtask1.getAddr());
                 patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
                 patTaskRelevance.setPatid(serviceSubtask1.getPatid());
@@ -176,6 +187,7 @@
                 patTaskRelevance.setAge(serviceSubtask1.getAge());
                 patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
                 patTaskRelevance.setPhone(serviceSubtask1.getPhone());
+                patTaskRelevance.setTelcode(serviceSubtask1.getPhone());
                 patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime());
                 patTaskRelevance.setAddr(serviceSubtask1.getAddr());
                 patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
@@ -310,7 +322,19 @@
             serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode());
             serviceTaskService.insertServiceTask(serviceTask);
             if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) {
+                //杩欓噷闇�瑕佸皢浠诲姟id涓庝换鍔℃ā鏉縄D锛屽湪浠诲姟妯℃澘涓粦瀹�
                 Map<String, Integer> map = new HashMap<>();
+                if (StringUtils.isNotEmpty(serviceTaskVO.getType()) && serviceTaskVO.getType().equals("1")) {
+                    IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate();
+                    ivrTaskTemplate.setTaskid(serviceTask.getTaskid());
+                    ivrTaskTemplate.setId(serviceTaskVO.getTemplateid());
+                    ivrTaskTemplateService.updateIvrTaskTemplate(ivrTaskTemplate);
+                } else if (StringUtils.isNotEmpty(serviceTaskVO.getType()) && serviceTaskVO.getType().equals("2")) {
+                    SvyTaskTemplate svyTaskTemplate = new SvyTaskTemplate();
+                    svyTaskTemplate.setTaskid(serviceTask.getTaskid());
+                    svyTaskTemplate.setId(serviceTaskVO.getTemplateid());
+                    svyTaskTemplateService.updateSvyTaskTemplate(svyTaskTemplate);
+                }
                 map.put("subTaskId", null);
                 map.put("taskId", serviceTask.getTaskid().intValue());
                 return map;
@@ -327,11 +351,12 @@
                     serviceSubtask.setSendname(patTaskRelevance.getName());
                     serviceSubtask.setAge(patTaskRelevance.getAge());
                     serviceSubtask.setSfzh(patTaskRelevance.getIdcardno());
-                    serviceSubtask.setPhone(patTaskRelevance.getPhone());
+                    serviceSubtask.setPhone(patTaskRelevance.getTelcode());
                     serviceSubtask.setAddr(patTaskRelevance.getAddr());
                     serviceSubtask.setPatid(patTaskRelevance.getPatid());
                     serviceSubtask.setCreateTime(DateUtils.getNowDate());
                     serviceSubtask.setSendstate(1L);
+                    if (serviceTaskVO.getLongTask() == 1) serviceSubtask.setSendstate(2L);
                     serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode());
                     serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
@@ -345,6 +370,8 @@
                     serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
                     serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
+                    if (serviceTaskVO.getLongTask() == 1)
+                        serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
                     serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                     integer = serviceSubtask.getId().intValue();
                 }
@@ -361,14 +388,33 @@
             if (serviceTaskVO.getLibtemplateid() != null)
                 serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString());
             serviceTask.setTemplateid(serviceTaskVO.getTemplateid());
+            serviceTask.setLongTask(serviceTaskVO.getLongTask());
             serviceTaskService.updateServiceTask(serviceTask);
+            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) {
+                //杩欓噷闇�瑕佸皢浠诲姟id涓庝换鍔℃ā鏉縄D锛屽湪浠诲姟妯℃澘涓粦瀹�
+                Map<String, Integer> map = new HashMap<>();
+                if (StringUtils.isNotEmpty(serviceTaskVO.getType()) && serviceTaskVO.getType().equals("1")) {
+                    IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate();
+                    ivrTaskTemplate.setTaskid(serviceTask.getTaskid());
+                    ivrTaskTemplate.setId(serviceTaskVO.getTemplateid());
+                    ivrTaskTemplateService.updateIvrTaskTemplate(ivrTaskTemplate);
+                } else if (StringUtils.isNotEmpty(serviceTaskVO.getType()) && serviceTaskVO.getType().equals("2")) {
+                    SvyTaskTemplate svyTaskTemplate = new SvyTaskTemplate();
+                    svyTaskTemplate.setTaskid(serviceTask.getTaskid());
+                    svyTaskTemplate.setId(serviceTaskVO.getTemplateid());
+                    svyTaskTemplateService.updateSvyTaskTemplate(svyTaskTemplate);
+                }
+                map.put("subTaskId", null);
+                map.put("taskId", serviceTask.getTaskid().intValue());
+                return map;
+            }
             if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
                 for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
                     ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
                     serviceSubtask.setSendname(patTaskRelevance.getName());
                     serviceSubtask.setAge(patTaskRelevance.getAge());
                     serviceSubtask.setSfzh(patTaskRelevance.getSfzh());
-                    serviceSubtask.setPhone(patTaskRelevance.getPhone());
+                    serviceSubtask.setPhone(patTaskRelevance.getTelcode());
                     serviceSubtask.setAddr(patTaskRelevance.getAddr());
                     serviceSubtask.setPatid(patTaskRelevance.getPatid());
                     serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
@@ -452,6 +498,11 @@
             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());
@@ -528,6 +579,10 @@
                             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);
@@ -569,6 +624,11 @@
                         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);
@@ -609,7 +669,7 @@
                         Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
                         matcher2 = pattern2.matcher(returnQues.getContent());
                     }
-                    log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
+                    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();
@@ -646,6 +706,27 @@
      */
     @Override
     public PhoneCallBackYQVO phoneCallBackYQ(PhoneCallReqYQVO phoneCallReqYQVO) {
+        //鍒ゆ柇鏄惁鎸傛満
+        String hangupState = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "- hangup");
+        if (StringUtils.isNotEmpty(hangupState) && hangup.equals("1")) {
+            return new PhoneCallBackYQVO();
+        }
+        if ("AsrCallback".equals(phoneCallReqYQVO.getOperate()) && phoneCallReqYQVO.getEnd_time() != null && phoneCallReqYQVO.getEnd_time() != -1) {
+            //澶勭悊鎸傛柇
+            if (phoneCallReqYQVO.getAsrtext().contains("鎷ㄥ彨鐨勭敤鎴锋蹇�")) {
+                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);
+                return new PhoneCallBackYQVO();
+            }
+        }
         //瀹氫箟涓�涓垎鏁扮殑鍙橀噺
         Boolean aBoolean1 = redisCache.hasKey(phoneCallReqYQVO.getUuid() + "SCORE");
         if (!aBoolean1) redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", 0.0, 120, TimeUnit.MINUTES);
@@ -669,7 +750,8 @@
                     Map<String, String> req = new HashMap<>();
                     req.put("uuid", phoneCallReqYQVO.getUuid());
                     req.put("caller", phoneCallReqYQVO.getPhone());
-                    HttpUtils.sendPost(hangup, new Gson().toJson(req));
+//                    HttpUtils.sendPost(hangup, new Gson().toJson(req));
+                    HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));
                     //鍒犻櫎缁撴潫璇殑鎮e瓨
                     redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "- jsy");
                 } else {
@@ -680,9 +762,12 @@
             return phoneCallBackYQVO;
         }
         //鑾峰彇鏀鹃煶鏄惁缁撴潫
-        boolean isPlayEventOver = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-        if (!isPlayEventOver) {
-            return phoneCallBackYQVO;
+        Object isPlayEventOverObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
+        if (ObjectUtils.isNotEmpty(isPlayEventOverObj)) {
+            Boolean isPlayEventOver = (Boolean) isPlayEventOverObj;
+            if (!isPlayEventOver) {
+                return phoneCallBackYQVO;
+            }
         }
 
         //閫氳繃瀛愪换鍔D鑾峰彇鍒版ā鏉夸俊鎭�
@@ -723,10 +808,16 @@
                 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(ivrTaskTemplate.getRevisitAfter());
+                phoneCallBackYQVO.setValue(serviceTask1.getJsy());
                 //灏嗙粨鏋滃啓鍒癲etail涓�
                 ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
                 List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
@@ -741,34 +832,83 @@
                 serviceSubtask.setFinishtime(new Date());
                 serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                 Map<String, String> map = delRedisValue(null, id.toString());
-                redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
+                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涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", ivrTaskTemplate.getRevisitAfter(), 120, TimeUnit.MINUTES);
+                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) {
-            //鎾姤绗竴棰�
-            Integer integer = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim() + "-firstSort");
-//            if(integer==0){
-//                //integer==0,琛ㄧず寮�鍦虹櫧鍒氭挱鎶ュ畬锛岄渶瑕佸仠椤夸竴涓嬶紝绛夋偅鑰呰璇�
-//                redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim() + "-firstSort", 1, 120, TimeUnit.MINUTES);
-//                return phoneCallBackYQVO;
-//            }
-            if (ivrTaskTemplateScriptVO.getSort() == 1 && integer == 1) {
-                phoneCallBackYQVO.setType("text");
-                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                String scriptContent = ivrTaskTemplateScriptVO.getScriptContent();
-                phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent));
-                redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim() + "-firstSort", 2, 120, TimeUnit.MINUTES);
-                return phoneCallBackYQVO;
+
+            // 鍏堝閫氳瘽杩涜閫氱敤搴撳尮閰嶄竴娆�
+            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;
+                }
+                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);
+                        //鍙互鎸傛満浜�
+                        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);
+                        saveQuestionAnswerPhone(serviceSubTaskDetailReq);
+                        return phoneCallBackYQVO;
+                    }
+                }
             }
 
             //濡傛灉鏄枃鏈洖璋�
             //鏍规嵁闂ID鑾峰彇璇ラ棶棰樼殑绫诲瀷
             if (ivrTaskTemplateScriptVO.getScriptType().equals("1")) {
+                //鐢ㄦ潵鏍囪锛屾槸鍚︽湁鍖归厤涓婄殑
+                Integer flag = 0;
                 //鏄�夋嫨棰�
                 for (int j = 0; j < ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size(); j++) {
                     log.error("phoneCallReqYQVO.getAsrtext()鐨勫�间负锛歿}", phoneCallReqYQVO.getAsrtext());
@@ -797,9 +937,34 @@
                         ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
                         List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
                         ivrTaskTemplateScriptVO.setQuestionResult(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getOptiondesc());
-                        serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));
+                        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);
                         saveQuestionAnswerPhone(serviceSubTaskDetailReq);
+                        //鍒ゆ柇涓�涓嬶紝杩欎釜閫夐」缁撴灉鏄笉鏄繕鏈夌户缁棶涓嬪幓鐨勫繀瑕侊紝渚嬪閫夐」缁撴灉鏄埆浜轰笉鎯崇户缁洖绛旈棶棰橈紝灏辫缁撴潫鎺�
+                        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());
+                            return phoneCallBackYQVO;
+                        }
+
+                        flag = 1;
                         //灏嗗綋鍓嶅墠鐨勬挱鎶ョ姸鎬佸垹闄わ紝缁欎笅涓�棰樿浣�
                         redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
 //                        //鑾峰彇涓嬩竴棰�
@@ -818,7 +983,31 @@
                                 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(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore()).doubleValue();
-                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score,120,TimeUnit.MINUTES);
+                                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);
+                                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);
+                                saveQuestionAnswerPhone(ssdReq);
+                                return phoneCallBackYQVO;
                             }
 
                             for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
@@ -827,61 +1016,96 @@
                                     phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
                                     String scriptContent = script.getScriptContent();
                                     log.error("涓嬩竴棰橀棶棰橈細{}", scriptContent);
-                                    phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent));
+                                    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.getBranchFlag().equals("0")) {
-                            if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
-                                phoneCallBackYQVO.setType("text");
-                                phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                                //鏇存柊涓�涓嬪垎鏁�
-                                double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
-                                serviceSubtask.setScore(BigDecimal.valueOf(score));
-                                serviceSubtask.setFinishtime(new Date());
-                                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-                                //璁剧疆缁撴潫璇�
-                                phoneCallBackYQVO.setValue(ivrTaskTemplate.getRevisitAfter());
-                                Long id = serviceSubtask.getId();
-                                Map<String, String> map = delRedisValue(null, id.toString());
+                        } 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(BigDecimal.valueOf(score));
+                            serviceSubtask.setFinishtime(new Date());
+                            serviceSubtask.setSendstate(6L);
+                            serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+                            serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                            //璁剧疆缁撴潫璇�
+                            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涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                                redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", ivrTaskTemplate.getRevisitAfter(), 120, TimeUnit.MINUTES);
+                            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 {
+                        //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);
+                            saveQuestionAnswerPhone(serviceSubTaskDetailReq);
+                        }
                         continue;
                     }
                 }
                 //閮芥病鏈夊尮閰嶅埌
                 if (StringUtils.isEmpty(phoneCallBackYQVO.getValue())) {
-                    Integer count = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
+                    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.getValue() + ivrTaskTemplate.getRevisitAfter());
-                            else phoneCallBackYQVO.setValue(ivrTaskTemplate.getRevisitAfter());
+                                phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + phoneCallBackYQVO.getValue() + serviceTask1.getJsy());
+                            else phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
 
                             //鏇存柊涓�涓嬪垎鏁�
-                            double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
+                            Double score = null;
+                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
+                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
                             serviceSubtask.setScore(BigDecimal.valueOf(score));
                             serviceSubtask.setFinishtime(new Date());
+                            serviceSubtask.setSendstate(6L);
+                            serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
                             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
 
                             //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", ivrTaskTemplate.getRevisitAfter(), 120, TimeUnit.MINUTES);
+                            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());
@@ -896,15 +1120,17 @@
                                     phoneCallBackYQVO.setType("text");
                                     phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
                                     String scriptContent = script.getScriptContent();
-                                    phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent));
+                                    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 = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
+                                    Double score = null;
+                                    Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
+                                    if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
                                     score = BigDecimal.valueOf(score).add(script.getScore()).doubleValue();
 
-                                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score,120, TimeUnit.MINUTES);
+                                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
                                 }
                             }
                         }
@@ -923,10 +1149,20 @@
                 //涓嶆槸閫夋嫨棰�,鐩存帴璁板綍绛旀锛屽皢缁撴灉鍐欏埌detail涓�
                 ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
                 List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
-                serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));
+                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);
                 saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-//                String xh = idSort.split("-")[1];
+                //    String xh = idSort.split("-")[1];
 
                 //濡傛灉閫夐」鍒嗘敮涓�1鐨勮瘽锛屽垯闇�瑕佹牴鎹棶棰樹笂鐨刵extScriptno杩涜璺宠浆
                 //闂瓟棰樻病鏈夎烦杞�
@@ -936,28 +1172,34 @@
                             phoneCallBackYQVO.setType("text");
                             phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
                             String scriptContent = ivrTaskTemplateScript1.getScriptContent();
-                            phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent));
+                            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 = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
+                            Double score = null;
+                            Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
+                            if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
                             score = BigDecimal.valueOf(score).add(ivrTaskTemplateScriptVO.getScore()).doubleValue();
-                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score,120, TimeUnit.MINUTES);
+                            redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
 
-//                            return phoneCallBackYQVO;
                         }
                     }
                 } 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(ivrTaskTemplate.getRevisitAfter());
+                    phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
 
                     //鏇存柊涓�涓嬪垎鏁�
-                    double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
+                    Double score = null;
+                    Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
+                    if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
                     serviceSubtask.setScore(BigDecimal.valueOf(score));
                     serviceSubtask.setFinishtime(new Date());
+                    serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+                    serviceSubtask.setSendstate(6L);
                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
 
                     //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
@@ -965,42 +1207,13 @@
                     Map<String, String> map = delRedisValue(null, id.toString());
                     redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
                     //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
-                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", ivrTaskTemplate.getRevisitAfter(), 120, TimeUnit.MINUTES);
+                    redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask1.getJsy(), 120, TimeUnit.MINUTES);
                     redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
                     redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
                 }
-
-                //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
-                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);
-                    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());
-                        }
-                        break;
-                    }
-                }
             }
         }
+        log.error("phoneCallBackYQVO鐨勮繑鍥炲�兼槸锛歿}", phoneCallBackYQVO);
         return phoneCallBackYQVO;
     }
 
@@ -1012,9 +1225,9 @@
                 scriptContent = scriptContent.replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : "");
             }
         }
-        scriptContent.replace("${name}", StringUtils.isNotEmpty(serviceSubtask.getName()) ? serviceSubtask.getName() : "");
-        scriptContent.replace("${dzz}", StringUtils.isNotEmpty(serviceSubtask.getPlaceOfResidence()) ? serviceSubtask.getPlaceOfResidence() : "");
-        scriptContent.replace("${phone}", StringUtils.isNotEmpty(serviceSubtask.getTelcode()) ? serviceSubtask.getTelcode() : "");
+        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;
     }
@@ -1080,10 +1293,11 @@
         //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖
         List<PullTaskVO> pullTaskVOList = new ArrayList<>();
         String value0 = redisCache.getCacheObject("cache-0");
+        log.error("浠诲姟鎷夊彇value0鐨勫�兼槸澶氬皯锛歿}", value0);
         //  cache-0涓虹珛鍗冲彂璧风殑,鍏跺畠鐨勫厛鎺ㄨ繜
         if (!StringUtils.isEmpty(value0)) {
             pullTaskVOList = getPullTaskList(value0, "cache-0");
-            //灏哻ache-0鐨勬暟鎹紝杞Щ涓嶅鍔瞔ache-00涓�
+            //灏哻ache-0鐨勬暟鎹紝杞Щ鍒癱ache-00涓�
             redisCache.deleteObject("cache-00");
             String cache00 = redisCache.getCacheObject("cache-00");
             if (!StringUtils.isEmpty(cache00))
@@ -1117,6 +1331,7 @@
 
 
     private List<PullTaskVO> getPullTaskList(String subIds, String cacheName) {
+        log.error("浠诲姟鎷夊彇subIds鐨勫�兼槸澶氬皯锛歿}", subIds);
         //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖
         List<PullTaskVO> pullTaskVOList = new ArrayList<>();
         //newValue0鐢ㄤ簬淇濆瓨娌℃湁澶勭悊鐨勫瓙 浠诲姟
@@ -1127,9 +1342,10 @@
             if (cacheName.equals("cache-0") && i < 5 || !cacheName.equals("cache-0") && i < 1) {
                 PullTaskVO pullTaskVO = new PullTaskVO();
                 String subId = split[i].trim().replace(",", "");
-
                 ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(subId));
+                ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
                 IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
+                if (ObjectUtils.isEmpty(ivrTaskTemplate)) continue;
                 //閫氳繃浠诲姟妯℃澘涓殑"绗竴娆¢棶棰樼紪鍙�"鑾峰彇绗竴涓棶棰�;
                 IvrTaskTemplateScript ivrTaskTemplateScript = null;
                 IvrTaskTemplateScript ivrTaskTemplateScript1 = new IvrTaskTemplateScript();
@@ -1145,21 +1361,22 @@
                 //濡傛灉ivrTaskTemplateScript涓虹┖锛屼篃灏辨病鏈夊線涓嬫墽琛岀殑蹇呰浜�
                 if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) return null;
                 //鑾峰彇閫氶厤绗﹀尮閰嶈繃鍚庣殑闂
-//                String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getScriptContent());
-//                String kcb = ivrTaskTemplate.getRevisitBefore() + "," + scrContent;
-                String kcb = ivrTaskTemplate.getRevisitBefore();
+                String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getScriptContent());
+                String kcb = serviceTask.getKcb() + "," + scrContent;
+//                String kcb = ivrTaskTemplate.getRevisitBefore();
 
                 //灏佽杩斿洖鏁版嵁
                 //taskId = 瀛愪换鍔D + 闂ID +闂搴忓彿
                 pullTaskVO.setTaskid(subId);
-                pullTaskVO.setAppkey("ZurNHpaQLq6P55YS");
+                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);
-                pullTaskVO.setDisplayNo("85129866");
+                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());
-                redisCache.setCacheObject(subId.trim() + "-" + serviceSubtask.getPhone().trim() + "-firstSort", 1, 120, TimeUnit.MINUTES);
+                redisCache.setCacheObject(subId.trim() + "-" + serviceSubtask.getPhone().trim(), ivrTaskTemplateScript.getId().toString(), 120, TimeUnit.MINUTES);
+//                redisCache.setCacheObject(subId.trim() + "-" + serviceSubtask.getPhone().trim() + "-firstSort", 1, 120, TimeUnit.MINUTES);
             } else {
                 if (StringUtils.isEmpty(newValue0)) {
                     newValue0 = "," + split[i].trim() + ",";
@@ -1432,12 +1649,39 @@
                 i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
             }
         } else {
-            for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
-                serviceSubtaskDetail.setCreateTime(new Date());
-                i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
+            if (serviceSubTaskDetailReq != null && CollectionUtils.isNotEmpty(serviceSubTaskDetailReq.getServiceSubtaskDetailList())) {
+                for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
+                    serviceSubtaskDetail.setCreateTime(new Date());
+                    //鍏堟牴鎹瓙浠诲姟id,浠诲姟ID鍜岄棶棰樺簭鍙锋煡璇竴涓嬶紝璇ラ棶棰樻槸鍚﹀凡缁忔湁鍊硷紝濡傛灉鏈夊�硷紝鐩存帴淇敼锛屽鏋滀负绌猴紝鐩存帴鎻掑叆
+                    ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();
+                    ssd.setSubId(serviceSubtaskDetail.getSubId());
+                    ssd.setTaskid(serviceSubtaskDetail.getTaskid());
+                    ssd.setTemplatequestionnum(serviceSubtaskDetail.getTemplatequestionnum());
+                    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 {
+                        i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
+                    }
+                }
             }
         }
         return i;
+    }
+
+    @Override
+    public Integer recordAccept(PhoneCallRecordVO phoneCallRecordVO) {
+        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);
+            //涓嬭浇鏂囦欢
+            ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
+        }
+        return 1;
     }
 
     @Override
@@ -1483,10 +1727,14 @@
         return null;
     }
 
-
     private ServiceSubtaskDetail getServiceSubtaskDetail(PhoneCallReqYQVO phoneCallReqYQVO, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask, IvrTaskTemplate ivrTaskTemplate) {
         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.setUuid(phoneCallReqYQVO.getUuid());
         serviceSubtaskDetail.setPhone(phoneCallReqYQVO.getPhone());
         serviceSubtaskDetail.setOperate(serviceSubtask.getCreateBy());
@@ -1503,15 +1751,17 @@
         serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString());
         serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());
         serviceSubtaskDetail.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());
+        serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath());
         serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType());
         serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());
+        serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText());
 
         int i = 1;
         for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {
             if (ivrTaskTemplateTargetoption.getIsUserOperation() == 1) {
                 serviceSubtaskDetail.setMatchedtext(ivrTaskTemplateTargetoption.getTargetvalue());
             }
-            serviceSubtaskDetail.setTargetvalue(StringUtils.isEmpty(serviceSubtaskDetail.getTargetvalue()) ? i + ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetail.getTargetvalue() + "  " + (i + 1) + ivrTaskTemplateTargetoption.getTargetvalue());
+            serviceSubtaskDetail.setTargetvalue(StringUtils.isEmpty(serviceSubtaskDetail.getTargetvalue()) ? ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetail.getTargetvalue() + "&" + ivrTaskTemplateTargetoption.getTargetvalue());
         }
 
         serviceSubtaskDetail.setAddtime(new Date());

--
Gitblit v1.9.3