From 562a960261b75d70abd65aa10528f09aeece94e8 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 24 九月 2024 09:49:23 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java |  327 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 321 insertions(+), 6 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
index 678eec7..37e4338 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/hanler/ChatWebSocketHandler.java
@@ -1,8 +1,16 @@
 package com.ruoyi.web.controller.hanler;
 
+import com.alibaba.fastjson2.JSON;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.smartor.domain.SocketMessage;
+import com.google.gson.Gson;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.StringUtils;
+import com.smartor.domain.*;
+import com.smartor.mapper.IvrLibaExtemplatescriptMapper;
+import com.smartor.service.IIvrLibaTemplateService;
+import com.smartor.service.IIvrTaskTemplateService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.web.socket.BinaryMessage;
 import org.springframework.web.socket.CloseStatus;
@@ -11,16 +19,40 @@
 import org.springframework.web.socket.handler.AbstractWebSocketHandler;
 
 import java.io.IOException;
-import java.util.Map;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 @Slf4j
 @Component
 public class ChatWebSocketHandler extends AbstractWebSocketHandler {
 
+    private static RedisCache redisCache;
+
+    private static IIvrTaskTemplateService ivrTaskTemplateService;
+
+    private static IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper;
+
     // 鐢ㄤ簬瀛樺偍鐢ㄦ埛ID鍜學ebSocketSession鐨勬槧灏勫叧绯�
     private static Map<String, WebSocketSession> sessions = new ConcurrentHashMap<>();
 
+    @Autowired
+    public void setIEMapper(IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper) {
+        ChatWebSocketHandler.ivrLibaExtemplatescriptMapper = ivrLibaExtemplatescriptMapper;
+    }
+
+    @Autowired
+    public void setTodayReaderService(IIvrTaskTemplateService ivrTaskTemplateService) {
+        ChatWebSocketHandler.ivrTaskTemplateService = ivrTaskTemplateService;
+    }
+
+    @Autowired
+    public void setRedisCache(RedisCache redisCache) {
+        ChatWebSocketHandler.redisCache = redisCache;
+    }
 
     @Override
     public void afterConnectionEstablished(WebSocketSession session) throws Exception {
@@ -42,7 +74,7 @@
         ObjectMapper mapper = new ObjectMapper();
         SocketMessage parsedMessage = mapper.readValue(payload, SocketMessage.class);
         if (parsedMessage != null) {
-            sendMessageToUser(parsedMessage.getUserId(), parsedMessage.getContent());
+            sendMessageToUser(parsedMessage.getUserId(), parsedMessage);
         }
 
     }
@@ -79,12 +111,295 @@
         return userId;
     }
 
-    private void sendMessageToUser(String userId, String message) throws IOException {
+    private void sendMessageToUser(String userId, SocketMessage socketMessage) throws IOException {
         WebSocketSession session = sessions.get(userId);
         if (session != null && session.isOpen()) {
-            session.sendMessage(new TextMessage(message));
+            if (socketMessage.getTemplateId() != null) {
+                //閫氳繃妯℃澘ID鑾峰彇妯℃澘闂
+                IvrTaskTemplateVO ivrTaskTemplateVO = new IvrTaskTemplateVO();
+                ivrTaskTemplateVO.setId(socketMessage.getTemplateId());
+                IvrTaskTemplateVO ivrTaskTemplateVO1 = ivrTaskTemplateService.selectInfoByCondition(ivrTaskTemplateVO);
+                redisCache.setCacheObject(userId + "ivrTaskTemplateVO1", ivrTaskTemplateVO1, 120, TimeUnit.MINUTES);
+                //灏嗘煡鍑烘潵鐨勯棶棰�,鏀惧埌鍏ㄥ眬鍙橀噺涓幓
+                List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOList = ivrTaskTemplateVO1.getIvrTaskTemplateScriptVOList();
+                //鏍规嵁搴忓彿杩涜鎺掑簭
+                Collections.sort(ivrTaskTemplateScriptVOList, Comparator.comparing(IvrTaskTemplateScriptVO::getTargetid));
+
+                //灏嗘煡鍑烘潵鐨勬暟鎹斁鍒皉edis涓�
+                redisCache.setCacheObject(userId + "ivrTaskTemplateScriptVOList", ivrTaskTemplateScriptVOList, 120, TimeUnit.MINUTES);
+                //鐢ㄦ潵杩斿洖璋冩煡鐨勬�荤粨鏋�
+                redisCache.setCacheObject(userId + "backQuset", new ArrayList<>(), 120, TimeUnit.MINUTES);
+                //鐢ㄦ潵璁板綍鏃犲0鍝嶅簲娆℃暟
+                redisCache.setCacheObject(userId + "noVoice", 0, 120, TimeUnit.MINUTES);
+                //鐢ㄦ潵璁板綍鏃犲尮閰嶆鏁�
+                redisCache.setCacheObject(userId + "mateNum", 0, 120, TimeUnit.MINUTES);
+                //鐢ㄦ潵璁板綍鏁翠釜闂嵎鏄惁缁撴潫 0 锛氭湭缁撴潫     1锛氱粨鏉�
+                redisCache.setCacheObject(userId + "isOver", 0, 120, TimeUnit.MINUTES);
+
+                //鐢ㄦ潵杩斿洖褰撳墠闇�瑕侀棶鐨勯棶棰樹俊鎭�
+                QuestionMessage returnQues = new QuestionMessage();
+
+                for (IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO : ivrTaskTemplateScriptVOList) {
+                    if (ivrTaskTemplateScriptVO.getTargetid() == ivrTaskTemplateVO1.getFirstQuestionNum().intValue())
+                        //鑾峰彇绗竴棰樼殑闂
+                        returnQues.setNowQuestion(ivrTaskTemplateScriptVO);
+//                        returnQues.setCode(ivrTaskTemplateScriptVO.getTargetid() + 1);
+                }
+//              璁剧疆寮�鍦虹櫧
+                returnQues.setKcb(ivrTaskTemplateVO1.getRevisitBefore());
+
+                //璁板綍鍝嶅簲
+                redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+            } else {
+                //鑾峰彇socketMessage閲岀殑QuestionMessage,瀵圭瓟妗堣繘琛屽鐞嗙劧鍚�,鍐嶉棶涓嬩竴閬�
+                Gson gson = new Gson();
+                if (!StringUtils.isEmpty(socketMessage.getContent())) {
+                    socketMessage.setQuestionMessage(gson.fromJson(socketMessage.getContent(), QuestionMessage.class));
+                }
+
+                QuestionMessage questionMessage = socketMessage.getQuestionMessage();
+                List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOList = redisCache.getCacheObject(userId + "ivrTaskTemplateScriptVOList");
+                //鏍规嵁鍓嶇浼犲洖鐨勬潯浠讹紝鑾峰彇褰撳墠棰樼洰
+                IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = questionMessage.getNowQuestion();
+                if (ivrTaskTemplateScriptVO.getId() == null) {
+                    QuestionMessage returnQues = redisCache.getCacheObject(userId + "returnQues");
+                    ivrTaskTemplateScriptVO = returnQues.getNowQuestion();
+                }
+                //鑾峰彇妯℃澘淇℃伅
+                IvrTaskTemplateVO ivrTaskTemplateVO1 = redisCache.getCacheObject(userId + "ivrTaskTemplateVO1");
+
+                if (StringUtils.isEmpty(questionMessage.getContent())) {
+                    //璋冪敤ivrTaskTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
+                    Integer noVoice = redisCache.getCacheObject(userId + "noVoice");
+                    //瀹為檯闈欓粯娆℃暟鏄惁 绛変簬 妯℃澘涓厤缃殑娆℃暟
+                    if (noVoice == ivrTaskTemplateVO1.getNoVoiceNum().intValue()) {
+                        //鐢ㄦ潵杩斿洖璋冩煡鐨勬�荤粨鏋�
+                        List<IvrTaskTemplateScriptVO> backQuset = new ArrayList<>();
+                        backQuset.add(ivrTaskTemplateScriptVO);
+                        redisCache.setCacheObject(userId + "backQuset", backQuset, 120, TimeUnit.MINUTES);
+
+                        //濡傛灉鍑犳閮芥病鍝嶅簲锛屽氨涓嬩竴棰橈紙闇�瑕佸厛鍒ゆ柇鏄惁鏈変笅涓�棰橈級
+                        if (ivrTaskTemplateScriptVO.getTargetid() == ivrTaskTemplateScriptVOList.size()) {
+                            //濡傛灉涓嬩竴棰樻病鏈変簡锛屽氨缁撴潫浜�
+                            QuestionMessage returnQues = new QuestionMessage();
+//                            returnQues.setCode(null);
+                            List<IvrTaskTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
+                            returnQues.setContent(JSON.toJSONString(backQusetRedis));
+                            returnQues.setJsy(ivrTaskTemplateVO1.getRevisitAfter());
+                            redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+                            redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
+
+                        } else {
+                            //濡傛灉鏈変笅涓�棰橈紝灏辨牴鎹綋鍓峵eagetID+1 鑾峰彇涓嬩竴棰�
+                            QuestionMessage returnQues = getNextQuestion(ivrTaskTemplateScriptVOList, ivrTaskTemplateScriptVO);
+                            redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+                            redisCache.setCacheObject(userId + "noVoice", 0, 120, TimeUnit.MINUTES);
+                        }
+                    } else {
+                        //瀹為檯闈欓粯娆℃暟鏄惁 涓嶇瓑浜� 妯℃澘涓厤缃殑娆℃暟
+//                        QuestionMessage returnQues = redisCache.getCacheObject(userId + "returnQues");
+//                        returnQues.setContent(null);
+//                        redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+
+                        Integer noVoice2 = redisCache.getCacheObject(userId + "noVoice");
+                        noVoice2 = noVoice2 + 1;
+                        redisCache.setCacheObject(userId + "noVoice", noVoice2, 120, TimeUnit.MINUTES);
+                    }
+                } else {
+                    //閫氳繃valueType鍒ゆ柇鏄粈涔堥鍨嬶紙鍊肩被鍨嬶紙1 閫夐」  2 鏂囨湰  3 鏁板�硷級锛�
+                    if (ivrTaskTemplateScriptVO.getValueType() == 2 || ivrTaskTemplateScriptVO.getValueType() == 3) {
+                        ivrTaskTemplateScriptVO.setQuestionResult(questionMessage.getContent());
+
+                        List<IvrTaskTemplateScriptVO> backQusetList = redisCache.getCacheObject(userId + "backQuset");
+                        //鍖归厤瀹屾垚鍚�,灏嗙粨鏋滀繚瀛樺埌鏂扮殑鏁扮粍
+                        backQusetList.add(ivrTaskTemplateScriptVO);
+                        redisCache.setCacheObject(userId + "backQuset", backQusetList, 120, TimeUnit.MINUTES);
+                        //灏嗛潤榛樼疆涓�0
+                        redisCache.setCacheObject(userId + "noVoice", 0, 120, TimeUnit.MINUTES);
+                        //鑾峰彇涓嬩竴棰�
+                        Long nextQuestion = ivrTaskTemplateScriptVO.getTargetid() + 1;
+                        if (nextQuestion > ivrTaskTemplateScriptVOList.size()) {
+                            //濡傛灉涓嬩竴棰樻病鏈変簡锛屽氨缁撴潫浜�
+                            QuestionMessage returnQues = new QuestionMessage();
+                            List<IvrTaskTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
+                            returnQues.setContent(JSON.toJSONString(backQusetRedis));
+                            returnQues.setJsy(ivrTaskTemplateVO1.getRevisitAfter());
+                            redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+                            redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
+                        } else {
+                            for (IvrTaskTemplateScriptVO script : ivrTaskTemplateScriptVOList) {
+                                if (script.getTargetid() == nextQuestion) {
+                                    QuestionMessage returnQues = new QuestionMessage();
+                                    returnQues.setNowQuestion(script);
+                                    redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+                                }
+                            }
+                        }
+
+                    } else if (ivrTaskTemplateScriptVO.getValueType() == 1) {
+
+                        //瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛墄
+                        for (int j = 0; j < ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size(); j++) {
+                            //鍖呭惈
+                            Matcher matcher = null;
+                            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex())) {
+                                Pattern pattern = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex());
+                                matcher = pattern.matcher(questionMessage.getContent());
+                            }
+                            //涓嶅寘鍚�
+                            Matcher matcher2 = null;
+                            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2())) {
+                                Pattern pattern2 = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());
+                                matcher2 = pattern2.matcher(questionMessage.getContent());
+                            }
+                            log.info("==============================Targetregex鐨勫�间负锛歿},   Targetregex2鐨勫�间负锛歿}", ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex(), ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());
+
+                            if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
+
+                                //璇存槑鍖归厤姝g‘浜�
+                                ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1);
+                                List<IvrTaskTemplateScriptVO> backQuset = redisCache.getCacheObject(userId + "backQuset");
+                                //鍖归厤瀹屾垚鍚�,灏嗙粨鏋滀繚瀛樺埌鏂扮殑鏁扮粍
+                                backQuset.add(ivrTaskTemplateScriptVO);
+                                redisCache.setCacheObject(userId + "backQuset", backQuset, 120, TimeUnit.MINUTES);
+                                //灏嗛潤榛樼疆涓�0
+                                redisCache.setCacheObject(userId + "noVoice", 0, 120, TimeUnit.MINUTES);
+                                //鑾峰彇涓嬩竴棰�
+                                Long nextQuestion = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();
+                                if (nextQuestion > ivrTaskTemplateScriptVOList.size()) {
+                                    //濡傛灉涓嬩竴棰樻病鏈変簡锛屽氨缁撴潫浜�
+                                    QuestionMessage returnQues = new QuestionMessage();
+                                    List<IvrTaskTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
+                                    returnQues.setContent(JSON.toJSONString(backQusetRedis));
+                                    returnQues.setJsy(ivrTaskTemplateVO1.getRevisitAfter());
+                                    redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+                                    redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
+                                } else {
+                                    for (IvrTaskTemplateScriptVO script : ivrTaskTemplateScriptVOList) {
+                                        if (script.getTargetid() == nextQuestion) {
+                                            QuestionMessage returnQues = new QuestionMessage();
+                                            returnQues.setNowQuestion(script);
+                                            redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+                                            break;
+                                        }
+                                    }
+                                }
+                                break;
+                            } else {
+                                //娌℃湁鍖归厤鍒�
+                                Integer mateNum = redisCache.getCacheObject(userId + "mateNum");
+
+                                //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
+                                if (mateNum == ivrTaskTemplateVO1.getMateNum().intValue() && j == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size() - 1) {
+                                    //闂簡鏈�澶ц闂鏁板悗锛岃繕鏄病鏈夊尮閰嶄笂,灏嗙粨鏋滀繚瀛樺埌鏂扮殑鏁扮粍
+                                    List<IvrTaskTemplateScriptVO> backQuset = redisCache.getCacheObject(userId + "backQuset");
+                                    backQuset.add(ivrTaskTemplateScriptVO);
+                                    redisCache.setCacheObject(userId + "backQuset", backQuset, 120, TimeUnit.MINUTES);
+
+                                    //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
+                                    if (ivrTaskTemplateScriptVO.getTargetid() < ivrTaskTemplateScriptVOList.size()) {
+                                        QuestionMessage returnQues = getNextQuestion(ivrTaskTemplateScriptVOList, ivrTaskTemplateScriptVO);
+                                        redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+                                        redisCache.setCacheObject(userId + "mateNum", 0, 120, TimeUnit.MINUTES);
+                                    } else {
+                                        QuestionMessage returnQues2 = new QuestionMessage();
+//                                    returnQues2.setCode(null);
+                                        List<IvrTaskTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
+                                        returnQues2.setQuestionList(backQusetRedis);
+                                        returnQues2.setJsy("鎰熻阿鎮ㄧ殑鑰愬績鍥炵瓟锛屽啀瑙�");
+                                        redisCache.setCacheObject(userId + "returnQues", returnQues2, 120, TimeUnit.MINUTES);
+                                        redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
+                                        break;
+                                    }
+                                } else if (mateNum < ivrTaskTemplateVO1.getMateNum().intValue() && j == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size() - 1) {
+                                    //娌℃湁闂埌瑙勫畾娆℃暟
+                                    mateNum = mateNum + 1;
+                                    redisCache.setCacheObject(userId + "mateNum", mateNum, 120, TimeUnit.MINUTES);
+                                }
+                            }
+                        }
+                    }
+                    //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
+                    String extemplateID = ivrTaskTemplateVO1.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(questionMessage.getContent());
+                            }
+
+                            Matcher matcher2 = null;
+                            if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {
+                                Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
+                                matcher2 = pattern2.matcher(questionMessage.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 returnQues = redisCache.getCacheObject(userId + "returnQues");
+                                IvrTaskTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
+                                nowQuestion.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
+                                nowQuestion.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
+                                redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+                                if (ivrLibaExtemplatescript.getIsEnd() == 1) {
+                                    //灏嗛棶棰樼疆绌�
+                                    IvrTaskTemplateScriptVO nowQuestion1 = returnQues.getNowQuestion();
+                                    nowQuestion1.setScriptContent(null);
+                                    nowQuestion1.setScriptVoice(null);
+                                    returnQues.setNowQuestion(nowQuestion1);
+                                    redisCache.setCacheObject(userId + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+
+                                    redisCache.setCacheObject(userId + "isOver", 1, 120, TimeUnit.MINUTES);
+                                }
+                            }
+                            break;
+                        }
+                    }
+                }
+
+            }
+            QuestionMessage returnQues = redisCache.getCacheObject(userId + "returnQues");
+            List<IvrTaskTemplateScriptVO> backQusetRedis = redisCache.getCacheObject(userId + "backQuset");
+            returnQues.setQuestionList(backQusetRedis);
+            session.sendMessage(new TextMessage(JSON.toJSONString(returnQues).getBytes(StandardCharsets.UTF_8)));
+
+            //鏁翠釜娴佺▼鏄惁缁撴潫锛屽皢redis涓殑璇serId涓嬬殑鏁版嵁鍒犻櫎;
+            Integer isOver = redisCache.getCacheObject(userId + "isOver");
+            if (isOver == 1) {
+                redisCache.deleteObject(userId + "ivrTaskTemplateScriptVOList");
+                redisCache.deleteObject(userId + "backQuset");
+                redisCache.deleteObject(userId + "noVoice");
+                redisCache.deleteObject(userId + "returnQues");
+                redisCache.deleteObject(userId + "isOver");
+                redisCache.deleteObject(userId + "ivrTaskTemplateVO1");
+                try {
+                    //鏂紑閾炬帴
+                    afterConnectionClosed(session, null);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
         }
     }
 
+    //鑾峰彇涓嬩竴棰橈紙杩欎釜鏂规硶涓嶉�傚悎閫夐」涓殑nextQuestion锛�
+    private QuestionMessage getNextQuestion(List<IvrTaskTemplateScriptVO> ivrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO) {
+        QuestionMessage returnQues = new QuestionMessage();
+        for (int j = 0; j < ivrTaskTemplateScriptVOList.size(); j++) {
+            if (ivrTaskTemplateScriptVOList.get(j).getTargetid() == ivrTaskTemplateScriptVO.getTargetid() + 1) {
+                // 瀵硅鏉emplateScriptVO杩涜澶勭悊
+                returnQues.setNowQuestion(ivrTaskTemplateScriptVOList.get(j));
+            }
+        }
+        return returnQues;
+    }
 
-}
\ No newline at end of file
+}

--
Gitblit v1.9.3