From e52b0e34fc06372aab64c30b526ec289b99c9af7 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 19 六月 2024 10:43:47 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java |  591 ++++++++++++++++++++++++++--------------------------------
 1 files changed, 268 insertions(+), 323 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java
index 5a9142d..158c85a 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskSingleServiceImpl.java
@@ -4,15 +4,11 @@
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DtoConversionUtils;
-//import com.smartor.config.PhoneUtils;
 import com.smartor.config.PhoneUtils;
-import com.smartor.config.RabbitMqConfig;
 import com.smartor.domain.*;
 import com.smartor.mapper.*;
 import com.smartor.service.IIvrTaskService;
@@ -21,7 +17,6 @@
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -48,10 +43,10 @@
     private IIvrTaskService ivrTaskService;
 
     @Autowired
-    private IvrLibaTemplateTargetoptionMapper ivrLibaScriptTargetoptionMapper;
+    private IvrTaskTemplateTargetoptionMapper ivrTaskScriptTargetoptionMapper;
 
     @Autowired
-    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
+    private IvrLibaTemplateScriptMapper ivrTaskTemplateScriptMapper;
 
     @Autowired
     private IvrTaskVisitResultMapper ivrTaskVisitResultMapper;
@@ -61,9 +56,6 @@
 
     @Autowired
     private IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper;
-
-    @Autowired
-    private RabbitTemplate rabbitTemplate;
 
 
     /**
@@ -89,27 +81,34 @@
     }
 
     @Override
-    public IvrTaskSingleVO queryTaskByCondition(IvrTaskSingle ivrTaskcall) {
+    public IvrTaskVO queryTaskByCondition(IvrTaskSingle ivrTaskcall) {
         //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚�
         List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
         List<IvrTaskSingle> list = selectIvrTaskcallList(ivrTaskcall);
-        if (CollectionUtils.isEmpty(list)) {
-            new BaseException("璇ヤ换鍔′笉瀛樺湪");
+        if (CollectionUtils.isEmpty(list) || list.size() == 0) {
+            return new IvrTaskVO();
         }
-        //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆IvrTaskcallVO涓�
-        IvrTaskSingleVO ivrTaskcallVO2 = DtoConversionUtils.sourceToTarget(list.get(0), IvrTaskSingleVO.class);
-        String sendTimeSlot = list.get(0).getSendTimeSlot();
+        IvrTask ivrTask = ivrTaskService.selectIvrTaskByTaskid(ivrTaskcall.getTaskid());
+        //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ivrTasksingleVO涓�
+        IvrTaskVO ivrTaskVO = DtoConversionUtils.sourceToTarget(list.get(0), IvrTaskVO.class);
+        ivrTaskVO.setShowDate(ivrTask.getShowDate());
+        ivrTaskVO.setShowTimeMorn(ivrTask.getShowTimeMorn());
+        ivrTaskVO.setShowTimeNoon(ivrTask.getShowTimeNoon());
+        ivrTaskVO.setShowTimeNight(ivrTask.getShowTimeNight());
+        ivrTaskVO.setPreachform(ivrTask.getPreachform());
+        String sendTimeSlot = ivrTask.getSendTimeSlot();
         ObjectMapper objectMapper = new ObjectMapper();
         try {
             //鑾峰彇鍒板彂閫佹椂闂寸殑闆嗗悎
             if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {
                 List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);
-                ivrTaskcallVO2.setSendTimeslot(taskSendTimeVOList);
+                ivrTaskVO.setSendTimeslot(taskSendTimeVOList);
+                ivrTaskVO.setSendType(ivrTask.getSendType());
             }
             //鏂囨湰鍙橀噺鍙傛暟
-            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(list.get(0).getTextParam())) {
-                Map<String, Map<String, String>> textParam = objectMapper.readValue(list.get(0).getTextParam(), Map.class);
-                ivrTaskcallVO2.setTextParam(textParam);
+            if (com.ruoyi.common.utils.StringUtils.isNotEmpty(ivrTask.getTextParam())) {
+                Map<String, Map<String, String>> textParam = objectMapper.readValue(ivrTask.getTextParam(), Map.class);
+                ivrTaskVO.setTextParam(textParam);
             }
         } catch (JsonProcessingException e) {
             e.printStackTrace();
@@ -126,6 +125,7 @@
                 patTaskRelevance.setPhone(ivrTaskcall1.getPhone());
                 patTaskRelevance.setAddr(ivrTaskcall1.getAddr());
                 patTaskRelevance.setDiagname(ivrTaskcall1.getDiagname());
+                patTaskRelevance.setPatid(ivrTaskcall1.getPatid());
                 patTaskRelevances.add(patTaskRelevance);
             }
             if (ivrTaskcall1.getHospType().equals("2")) {
@@ -138,12 +138,13 @@
                 patTaskRelevance.setDeptName(ivrTaskcall1.getDeptname());
                 patTaskRelevance.setBedNo(ivrTaskcall1.getBedNo());
                 patTaskRelevance.setDiagname(ivrTaskcall1.getDiagname());
+                patTaskRelevance.setPatid(ivrTaskcall1.getPatid());
                 patTaskRelevances.add(patTaskRelevance);
             }
         }
 
-        ivrTaskcallVO2.setPatTaskRelevances(patTaskRelevances);
-        return ivrTaskcallVO2;
+        ivrTaskVO.setPatTaskRelevances(patTaskRelevances);
+        return ivrTaskVO;
     }
 
     @Override
@@ -198,373 +199,316 @@
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public int insertOrUpdateTask(IvrTaskSingleVO ivrTaskcallVO) {
-        if (ObjectUtils.isEmpty(ivrTaskcallVO)) {
+    public int insertOrUpdateTask(IvrTaskVO ivrTaskVO) {
+        if (ObjectUtils.isEmpty(ivrTaskVO)) {
             log.info("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
             throw new BaseException("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
         }
-        Integer integer = 0;
-        if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 1) {
+        Integer integer = 1;
+        IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTaskVO, IvrTask.class);
+        ivrTask.setTextParam(JSON.toJSONString(ivrTaskVO.getTextParam()));
+        if (ivrTaskVO.getIsoperation() != null && ivrTaskVO.getIsoperation() == 1) {
             //寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔�
-            IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTask.class);
+            if (ObjectUtils.isNotEmpty(ivrTaskVO.getSendTimeslot()))
+                ivrTask.setSendTimeSlot(JSON.toJSONString(ivrTaskVO.getSendTimeslot()));
+            if (ivrTask.getSendState() == null) ivrTask.setSendState(1);
+            ivrTask.setTemplateid(ivrTaskVO.getLibtemplateid());
             ivrTaskService.insertIvrTask(ivrTask);
 
-            ivrTaskcallVO.setTaskid(ivrTask.getTaskid().longValue());
+            //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓�
+            IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskVO, IvrTaskSingle.class);
+            ivrTaskcall.setTaskid(ivrTask.getTaskid().longValue());
             //鏂板
-            if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getPatTaskRelevances())) {
-                for (PatTaskRelevance patTaskRelevance : ivrTaskcallVO.getPatTaskRelevances()) {
-                    //灏嗕换鍔′俊鎭柊澧炲埌瀹f暀浠诲姟琛ㄤ腑
-                    IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskSingle.class);
+            if (CollectionUtils.isNotEmpty(ivrTaskVO.getPatTaskRelevances())) {
+                for (PatTaskRelevance patTaskRelevance : ivrTaskVO.getPatTaskRelevances()) {
+                    //灏嗕换鍔′俊鎭柊澧炲埌闅忚鏈嶅姟琛ㄤ腑
                     ivrTaskcall.setSendname(patTaskRelevance.getName());
                     ivrTaskcall.setAge(patTaskRelevance.getAge());
                     ivrTaskcall.setSfzh(patTaskRelevance.getSfzh());
                     ivrTaskcall.setPhone(patTaskRelevance.getPhone());
                     ivrTaskcall.setAddr(patTaskRelevance.getAddr());
+                    ivrTaskcall.setPatid(patTaskRelevance.getPatid());
                     ivrTaskcall.setCreateTime(DateUtils.getNowDate());
-                    ivrTaskcall.setTextParam(new Gson().toJson(patTaskRelevance.getTextParam()));
-                    if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) {
-                        ivrTaskcall.setSendTimeSlot(ivrTaskcallVO.getSendTimeslot().toString());
-                    }
+                    ivrTaskcall.setCreateTime(DateUtils.getNowDate());
+                    ivrTaskcall.setType(ivrTaskVO.getHospType());
                     ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall);
                     integer = ivrTaskcall.getId().intValue();
                 }
             }
 
-        } else if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 2) {
+        } else if (ivrTaskVO.getIsoperation() != null && ivrTaskVO.getIsoperation() == 2) {
             //浠诲姟淇敼
-            IvrTask ivrTask = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTask.class);
+            if (ObjectUtils.isNotEmpty(ivrTaskVO.getSendTimeslot()))
+                ivrTask.setSendTimeSlot(JSON.toJSONString(ivrTaskVO.getSendTimeslot()));
+            //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1
+            IvrTask ivrTask1 = ivrTaskService.selectIvrTaskByTaskid(ivrTask.getTaskid());
+            ivrTask.setStopState(ivrTask1.getStopState() + 1);
+            ivrTask.setTemplateid(ivrTaskVO.getLibtemplateid());
             ivrTaskService.updateIvrTask(ivrTask);
 
-            if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getPatTaskRelevances())) {
-                for (PatTaskRelevance patTaskRelevance : ivrTaskcallVO.getPatTaskRelevances()) {
+            if (CollectionUtils.isNotEmpty(ivrTaskVO.getPatTaskRelevances())) {
+                for (PatTaskRelevance patTaskRelevance : ivrTaskVO.getPatTaskRelevances()) {
 
-                    IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskSingle.class);
+                    IvrTaskSingle ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskVO, IvrTaskSingle.class);
                     ivrTaskcall.setSendname(patTaskRelevance.getName());
                     ivrTaskcall.setAge(patTaskRelevance.getAge());
                     ivrTaskcall.setSfzh(patTaskRelevance.getSfzh());
                     ivrTaskcall.setPhone(patTaskRelevance.getPhone());
                     ivrTaskcall.setAddr(patTaskRelevance.getAddr());
+                    ivrTaskcall.setPatid(patTaskRelevance.getPatid());
+                    ivrTaskcall.setType(ivrTaskVO.getHospType());
                     ivrTaskcall.setCreateTime(DateUtils.getNowDate());
-                    if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) {
-                        ivrTaskcall.setSendTimeSlot(ivrTaskcallVO.getSendTimeslot().toString());
+                    ivrTaskcall.setTextParam(new Gson().toJson(ivrTaskVO.getTextParam()));
+                    if (patTaskRelevance.getIsoperation() != null) {
+                        if (patTaskRelevance.getIsoperation() == 2)
+                            ivrTaskSingleMapper.updateIvrTaskcallByCondition(ivrTaskcall);
+                        if (patTaskRelevance.getIsoperation() == 1) ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall);
+                        if (patTaskRelevance.getIsoperation() == 3)
+                            //  閫氳繃taskid鍜宲atid鍘诲垹闄よ鏉℃暟鎹�
+                            ivrTaskSingleMapper.deleteIvrTaskcallByCondition(ivrTaskVO.getTaskid(), patTaskRelevance.getPatid());
                     }
-                    ivrTaskcall.setTextParam(new Gson().toJson(ivrTaskcallVO.getTextParam()));
-                    if (patTaskRelevance.getIsoperation() == 2) ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
-                    if (patTaskRelevance.getIsoperation() == 1) ivrTaskSingleMapper.insertIvrTaskcall(ivrTaskcall);
-                    integer = ivrTaskcall.getId().intValue();
+                    integer = ivrTaskcall.getTaskid().intValue();
                 }
             }
-
-        } else if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 3) {
-            ivrTaskSingleMapper.deleteIvrTaskcallById(ivrTaskcallVO.getId());
-
-            integer = ivrTaskcallVO.getId().intValue();
         }
+
+
         return integer;
     }
 
-    /**
-     * 浠诲姟鍙戦��
-     *
-     * @return
-     */
-    @Override
-    public int heTaskSend(IvrTaskSingleVO ivrTaskcallVO) {
-        //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫�
-        if (ivrTaskcallVO.getSendType().equals("2")) {
-            IvrTaskcallMQ ivrTaskcallMQ = new IvrTaskcallMQ();
-            ivrTaskcallMQ.setTaskid(ivrTaskcallVO.getTaskid());
-            ivrTaskcallMQ.setSendType("1");
-            ivrTaskcallMQ.setTemplateid(ivrTaskcallVO.getTemplateid());
-
-            String ivrTaskcallMQJson = JSON.toJSONString(ivrTaskcallMQ);
-            ivrTaskcallMQJson = ivrTaskcallMQJson.substring(1, ivrTaskcallMQJson.length() - 1);
-            //绔嬪嵆鍙戦��
-            rabbitTemplate.convertAndSend(RabbitMqConfig.phone_exchange, RabbitMqConfig.routing_key, ivrTaskcallMQJson, message -> {
-                //娉ㄦ剰杩欓噷鏃堕棿鍙互浣縧ong锛岃�屼笖鏄缃甴eader
-                message.getMessageProperties().setHeader("x-delay", 0);
-                return message;
-            });
-        } else if (ivrTaskcallVO.getSendType().equals("1")) {
-            //鏃堕棿娈靛彂閫�
-            if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) {
-                for (TaskSendTimeVO taskSendTimeVO : ivrTaskcallVO.getSendTimeslot()) {
-                    //鍘籗endTimeslot涓紝鑾峰彇鎵�鏈夌殑鏃堕棿娈�
-                    List<TaskSendTimeVO> list = new ArrayList<>();
-                    list.add(taskSendTimeVO);
-
-                    //鑾峰彇寮�濮嬪彂閫佹椂闂�
-                    String begantime = taskSendTimeVO.getBegantime();
-                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                    //璁板綍鐩墠鍒板彂閫佹椂闂寸殑姣鍊� 锛堝彂閫佹椂闂寸殑姣鍊� - 褰撳墠鏃堕棿鐨勬绉掑�硷級
-                    Long milliseconds = 1000L;
-                    try {
-                        Date date = sdf.parse(begantime);
-                        milliseconds = date.getTime() - System.currentTimeMillis();
-                        System.out.println("鏃ユ湡姣鏁帮細" + milliseconds);
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                    IvrTaskcallMQ ivrTaskcallMQ = new IvrTaskcallMQ();
-                    ivrTaskcallMQ.setTaskid(ivrTaskcallVO.getTaskid());
-                    ivrTaskcallMQ.setSendType("1");
-                    ivrTaskcallMQ.setTemplateid(ivrTaskcallVO.getTemplateid());
-                    ivrTaskcallMQ.setSendTimeslot(list);
-
-                    Long finalMilliseconds = milliseconds;
-                    String ivrTaskcallMQJson = JSON.toJSONString(ivrTaskcallMQ);
-                    ivrTaskcallMQJson = ivrTaskcallMQJson.substring(1, ivrTaskcallMQJson.length() - 1);
-                    rabbitTemplate.convertAndSend(RabbitMqConfig.phone_exchange, RabbitMqConfig.routing_key, ivrTaskcallMQJson, message -> {
-                        //娉ㄦ剰杩欓噷鏃堕棿鍙互浣縧ong锛岃�屼笖鏄缃甴eader
-                        message.getMessageProperties().setHeader("x-delay", finalMilliseconds);
-                        return message;
-                    });
-                }
-                //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
-                IvrTask ivrTask = new IvrTask();
-                ivrTask.setTaskid(ivrTaskcallVO.getTaskid());
-                ivrTask.setSendState("2");
-                ivrTaskService.updateIvrTask(ivrTask);
-            }
-        }
-
-        return 0;
-    }
 
     @Override
     public void phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
-        synchronized (new IvrTaskSingleServiceImpl()) {
-            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) {
+        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());
+        IvrTaskSingle ivrTaskcall = (IvrTaskSingle) map.get("ivrTaskSingle");
+        List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOs = (List<IvrTaskTemplateScriptVO>) map.get("ivrTaskTemplateScriptVO");
+        //灏唘uid鏇存柊鍒版暟鎹簱涓�
+        ivrTaskcall.setSenduuid(phoneCallBackVO.getUuid());
+        ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
+
+        //鑾峰彇妯℃澘淇℃伅
+        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()) {
+                    //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
+                    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);
+                    // 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
+                    String date = simpleDateFormat1.format(new Date());
+                    log.info("鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
+                    phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
+                }
+            } else {
+                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
+                //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
+                String slienceText = nowQuestion.getSlienceText();
+                //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
                 String date = simpleDateFormat1.format(new Date());
-                log.info("鐢佃瘽瑕佹寕鏂簡: {}", date);
-                //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽
-                phoneUtils.hangup("", "", "", "", "", "", "", phoneCallBackVO.getUuid());
+                log.info("闈欓粯璇濇湳  + 闂,鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
+                phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
                 return;
             }
 
-            Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());
-            IvrTaskSingle ivrTaskcall = (IvrTaskSingle) map.get("ivrTaskSingle");
-            List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO");
-            //灏唘uid鏇存柊鍒版暟鎹簱涓�
-            ivrTaskcall.setSenduuid(phoneCallBackVO.getUuid());
-            ivrTaskSingleMapper.updateIvrTaskcall(ivrTaskcall);
-
-            //鑾峰彇妯℃澘淇℃伅
-            IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO");
-
-            //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3
-            Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
-            QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
-            //灏嗕紶鍥炵殑缁撴灉鏀惧埌鍥炲瀵硅薄涓�
-            returnQues.setContent(phoneCallBackVO.getTextResult());
-
-            IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
-
-            if (StringUtils.isEmpty(returnQues.getContent())) {
-                //鏃犲洖璇�
-                //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у��
-                if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {
-                    //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰�
-                    if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {
-                        //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                        phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
-                        return;
-                    } else {
-                        //鏈変笅涓�棰�
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
-                        IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
-                        // 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
-                        String date = simpleDateFormat1.format(new Date());
-                        log.info("鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
-                    }
-                } else {
-                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
-                    //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
-                    String slienceText = nowQuestion.getSlienceText();
-                    //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
-                    String date = simpleDateFormat1.format(new Date());
-                    log.info("闈欓粯璇濇湳  + 闂,鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                    phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), 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());
                 }
-
-            } else {
-                //isppd鐢ㄦ潵璁板綍鏄惁鍖归厤鍒�
-                Boolean isppd = false;
-                //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛�
-                for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {
-                    //鍖呭惈
-                    Matcher matcher = null;
-                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {
-                        Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());
-                        matcher = pattern.matcher(phoneCallBackVO.getTextResult());
-                    }
-                    //涓嶅寘鍚�
-                    Matcher matcher2 = null;
-                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {
-                        Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
-                        matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
-                    }
-                    log.error("PCB--getQuestionText闂涓猴細{},UUID锛歿}", nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
-                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
-                        //璇存槑鍖归厤姝g‘浜�
-                        //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
-                        nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
-                        ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));
-
-                        //灏嗛潤榛樼疆涓�0
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
-
-                        //灏嗘偅鑰呯殑鍥炵鍐欒繘琛ㄩ噷
-                        IvrTaskVisitResult ivrTaskVisitResult = DtoConversionUtils.sourceToTarget(ivrTaskcall, IvrTaskVisitResult.class);
-                        ivrTaskVisitResult.setId(null);
-                        ivrTaskVisitResult.setQuestion(nowQuestion.getQuestionText());
-                        ivrTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());
-                        ivrTaskVisitResult.setCreateTime(new Date());
-                        ivrTaskVisitResult.setOptionResult(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetvalue());
-                        ivrTaskVisitResultMapper.insertIvrTaskVisitResult(ivrTaskVisitResult);
-
-                        //灏嗗尮閰嶅埌鐨勬爣璇嗘敼鎴恡rue
-                        isppd = true;
-
-                        //鑾峰彇涓嬩竴棰�
-                        Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
-                        for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {
-                            if (script.getTargetid() == nextQuestion) {
-                                QuestionMessage questionMessage = new QuestionMessage();
-                                questionMessage.setNowQuestion(script);
-                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
-                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-                                phoneUtils.ttsPlayback(script.getQuestionText(), phoneCallBackVO.getUuid());
-                                return;
-                            } else if (nextQuestion > ivrLibaTemplateScriptVOs.size()) {
-                                //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�
-                                String date = simpleDateFormat1.format(new Date());
-                                log.error("娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                                phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
-                                try {
-                                    Thread.sleep(3000);
-                                } catch (InterruptedException e) {
-                                    e.printStackTrace();
-                                }
-                                phoneUtils.hangup("", "", ivrLibaTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid());
-                                return;
-                            }
-                        }
-                        return;
-                    } else {
-                        //娌℃湁鍖归厤涓婂綋鍓峯ption
-                        //Targetregex2 涓篺alse锛岃〃绀哄湪Targetregex2涓瓨鍦�  璇彞涓殑鍏抽敭瀛楋紝杩欎釜option灏变笉鐢ㄥ啀缁х画鍖归厤浜嗭紝鐩存帴鍖归厤涓嬩竴涓猳ption
-                        continue;
-                    }
+                //涓嶅寘鍚�
+                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.getQuestionText(), 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(true);
+                    ivrTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(nowQuestion.getIvrTaskScriptTargetoptionList().get(j));
 
-                if (isppd != true) {
-                    //娌℃湁鍖归厤鍒�
-                    Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum");
-                    if (mateNum == null) mateNum = 0;
-                    //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
-                    if (mateNum == ivrLibaTemplateVO.getMateNum().intValue()) {
-                        //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
-                        if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {
+                    //灏嗛潤榛樼疆涓�0
+                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
+                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
+
+                    //灏嗘偅鑰呯殑鍥炵鍐欒繘琛ㄩ噷
+                    IvrTaskVisitResult ivrTaskVisitResult = DtoConversionUtils.sourceToTarget(ivrTaskcall, IvrTaskVisitResult.class);
+                    ivrTaskVisitResult.setId(null);
+                    ivrTaskVisitResult.setQuestion(nowQuestion.getQuestionText());
+                    ivrTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());
+                    ivrTaskVisitResult.setCreateTime(new Date());
+                    ivrTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue());
+                    ivrTaskVisitResultMapper.insertIvrTaskVisitResult(ivrTaskVisitResult);
+
+                    //灏嗗尮閰嶅埌鐨勬爣璇嗘敼鎴恡rue
+                    isppd = true;
+
+                    //鑾峰彇涓嬩竴棰�
+                    Long nextQuestion = nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();
+                    for (IvrTaskTemplateScriptVO script : ivrTaskTemplateScriptVOs) {
+                        if (script.getTargetid() == nextQuestion) {
                             QuestionMessage questionMessage = new QuestionMessage();
-                            IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
-                            questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
-                            questionMessage.setNowQuestion(nextQuestion);
+                            questionMessage.setNowQuestion(script);
+                            questionMessage.setQuestionList(ivrTaskTemplateScriptVOs);
                             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.getQuestionText(), phoneCallBackVO.getUuid());
+                            phoneUtils.ttsPlayback(script.getQuestionText(), phoneCallBackVO.getUuid());
                             return;
-                        } else {
-                            //灏卞彲浠ユ寕鏂數璇濅簡
+                        } else if (nextQuestion > ivrTaskTemplateScriptVOs.size()) {
+                            //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�
                             String date = simpleDateFormat1.format(new Date());
-                            log.info("灏卞彲浠ユ寕鏂數璇濅簡------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
+                            log.error("娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
                             redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-                            phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
+                            phoneUtils.ttsPlayback(ivrTaskTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
                             try {
                                 Thread.sleep(3000);
                             } catch (InterruptedException e) {
                                 e.printStackTrace();
                             }
-                            phoneUtils.hangup("", "", ivrLibaTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid());
+                            phoneUtils.hangup("", "", ivrTaskTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid());
                             return;
                         }
-                    } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue()) {
-                        //娌℃湁闂埌瑙勫畾娆℃暟
-                        mateNum = mateNum + 1;
-                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES);
                     }
+                    return;
+                } else {
+                    //娌℃湁鍖归厤涓婂綋鍓峯ption
+                    //Targetregex2 涓篺alse锛岃〃绀哄湪Targetregex2涓瓨鍦�  璇彞涓殑鍏抽敭瀛楋紝杩欎釜option灏变笉鐢ㄥ啀缁х画鍖归厤浜嗭紝鐩存帴鍖归厤涓嬩竴涓猳ption
+                    continue;
                 }
-                //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
-                String extemplateID = ivrLibaTemplateVO.getSubmoduleID();
-                String[] split = extemplateID.split(",");
-                List<String> list = Arrays.asList(split);
-                List<Long> list1 = new ArrayList<>();
-                if (StringUtils.isNotEmpty(extemplateID)) {
-                    for (String str : list) {
-                        list1.add(Long.valueOf(str));
-                    }
-                    List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);
-                    for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {
-                        Matcher matcher = null;
-                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {
-                            Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());
-                            matcher = pattern.matcher(returnQues.getContent());
-                        }
+            }
 
-                        Matcher matcher2 = null;
-                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {
-                            Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
-                            matcher2 = pattern2.matcher(returnQues.getContent());
+            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.getQuestionText(), phoneCallBackVO.getUuid());
+                        return;
+                    } else {
+                        //灏卞彲浠ユ寕鏂數璇濅簡
+                        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();
                         }
-                        log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
-                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {
-                            QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
-                            IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();
-                            ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
-                            ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
+                        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.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
+                    if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {
+                        QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
+                        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.setQuestionText(null);
+                            nowQuestion1.setQuestionVoice(null);
+                            questionMessage.setNowQuestion(nowQuestion1);
                             redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-                            if (ivrLibaExtemplatescript.getIsEnd() == 1) {
-                                //灏嗛棶棰樼疆绌�
-                                IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
-                                nowQuestion1.setQuestionText(null);
-                                nowQuestion1.setQuestionVoice(null);
-                                questionMessage.setNowQuestion(nowQuestion1);
-                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
 
-                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES);
-                            }
-                            //璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback鈥濆皢缁撴灉浼犲洖
-                            String date = simpleDateFormat1.format(new Date());
-                            log.info("璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀�------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                            phoneUtils.ttsPlayback(nowQuestion.getQuestionText() + ivrLibaTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid());
+                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES);
                         }
-                        break;
+                        //璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback鈥濆皢缁撴灉浼犲洖
+                        String date = simpleDateFormat1.format(new Date());
+                        log.info("璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀�------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
+                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText() + ivrTaskTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid());
                     }
-                    String date = simpleDateFormat1.format(new Date());
-                    log.info("鏈�鍚庣殑淇℃伅鍥炲-: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
-                    phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
+                    break;
                 }
+                String date = simpleDateFormat1.format(new Date());
+                log.info("鏈�鍚庣殑淇℃伅鍥炲-: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
+                phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
             }
         }
     }
-
 
     //涓嬮潰鐨勪唬鐮佷笉鑳藉垹闄わ紝涓婇潰鐨勬柟娉曞彧鏄厤鍚堢數璇濈鑱旇皟鐢ㄧ殑锛�
 //    @Override
@@ -801,12 +745,13 @@
 //        return phoneCallBackVO;
 //    }
 
-    private IvrLibaTemplateScriptVO getNextQuestion(List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOList, IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO) {
 
-        for (int j = 0; j < ivrLibaTemplateScriptVOList.size(); j++) {
-            if (ivrLibaTemplateScriptVOList.get(j).getTargetid() == ivrLibaTemplateScriptVO.getTargetid() + 1) {
+    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 ivrLibaTemplateScriptVOList.get(j);
+                return ivrTaskTemplateScriptVOList.get(j);
             }
         }
         return null;

--
Gitblit v1.9.3