From f243bb8af00a2464d16536d42150a4107f87b4ae Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期日, 12 五月 2024 21:32:57 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java |  131 ++++++++++++++++++++++++-------------------
 1 files changed, 74 insertions(+), 57 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java b/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java
index d719abf..771d92a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/task/PhoneTask.java
@@ -1,15 +1,16 @@
 package com.ruoyi.web.task;
 
+import com.alibaba.fastjson2.JSON;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.rabbitmq.client.Channel;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.smartor.common.SendService;
 import com.smartor.config.PhoneUtils;
+import com.smartor.config.RabbitMqCallPhoneConfig;
 import com.smartor.domain.*;
 import org.springframework.amqp.core.Message;
-import org.springframework.data.convert.Jsr310Converters;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
 
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -19,79 +20,95 @@
     private List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVO;
     private RedisCache redisCache;
     private IvrLibaTemplateVO ivrLibaTemplateVO;
-    private Channel channel;
+    private RabbitMqCallPhoneConfig rabbitMqCallPhoneConfig;
     private Message message;
     private SendService sendService;
 
 
-    public PhoneTask(IvrTaskSingle ivrTaskSingle, IvrLibaTemplateVO ivrLibaTemplateVO, RedisCache redisCache, Channel channel, Message message, SendService sendService) {
+    public PhoneTask(IvrTaskSingle ivrTaskSingle, IvrLibaTemplateVO ivrLibaTemplateVO, RedisCache redisCache, RabbitMqCallPhoneConfig rabbitMqCallPhoneConfig, Message message, SendService sendService) {
         this.ivrTaskSingle = DtoConversionUtils.sourceToTarget(ivrTaskSingle, IvrTaskSingle.class);
         this.ivrLibaTemplateScriptVO = DtoConversionUtils.sourceToTarget(ivrLibaTemplateVO.getIvrLibaTemplateScriptVOList(), IvrLibaTemplateScriptVO.class);
         this.ivrLibaTemplateVO = DtoConversionUtils.sourceToTarget(ivrLibaTemplateVO, IvrLibaTemplateVO.class);
         this.redisCache = redisCache;
-        this.channel = channel;
+        this.rabbitMqCallPhoneConfig = rabbitMqCallPhoneConfig;
         this.message = message;
         this.sendService = sendService;
     }
 
     @Override
     public void run() {
-        synchronized (PhoneTask.class) {
-            try {
-                //鑾峰彇鐢佃瘽缁勶紝鏌ョ湅鍝簺鐢佃瘽鍙互浣跨敤
-                PhoneUtils phoneUtils = new PhoneUtils();
-                final String uuid = IdUtils.randomUUID();
-                //鑾峰彇鎵�鏈夌殑鈥滈�氶厤绗︹�濋敭鍊煎
-                ObjectMapper objectMapper = new ObjectMapper();
-                Map<String, Map<String, String>> ivrTaskSingleMmap = objectMapper.readValue(ivrTaskSingle.getTextParam(), Map.class);
-                List<Map<String, String>> mapList = new ArrayList<>();
-                if (!Objects.isNull(ivrTaskSingleMmap)) {
-                    for (Map<String, String> map : ivrTaskSingleMmap.values()) {
-                        mapList.add(map);
-                    }
-                    //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹�
-                    for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVO) {
-                        for (Map<String, String> map : mapList) {
-                            for (String key : map.keySet()) {
-                                ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace(key, map.get(key)));
-                            }
+        try {
+            //鑾峰彇鐢佃瘽缁勶紝鏌ョ湅鍝簺鐢佃瘽鍙互浣跨敤
+            PhoneUtils phoneUtils = new PhoneUtils();
+            final String uuid = IdUtils.randomUUID();
+            //鑾峰彇鎵�鏈夌殑鈥滈�氶厤绗︹�濋敭鍊煎
+            ObjectMapper objectMapper = new ObjectMapper();
+            Map<String, Map<String, String>> ivrTaskSingleMmap = objectMapper.readValue(ivrTaskSingle.getTextParam(), Map.class);
+            List<Map<String, String>> mapList = new ArrayList<>();
+            if (!Objects.isNull(ivrTaskSingleMmap)) {
+                for (Map<String, String> map : ivrTaskSingleMmap.values()) {
+                    mapList.add(map);
+                }
+                //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹�
+                for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVO) {
+                    for (Map<String, String> map : mapList) {
+                        for (String key : map.keySet()) {
+                            ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace(key, map.get(key)));
                         }
                     }
                 }
-                Map<String, Object> objectMap = new HashMap<>();
-                objectMap.put("ivrTaskSingle", ivrTaskSingle);
-                objectMap.put("ivrLibaTemplateScriptVO", ivrLibaTemplateScriptVO);
-                //灏嗘暟鎹斁鍒皉edis涓紝鏂逛究鍦ㄥ洖璋冩柟娉曢噷鑾峰彇
-                redisCache.setCacheObject(uuid, objectMap, 120, TimeUnit.MINUTES);
-
-                //璁板綍棣栨闂
-                QuestionMessage returnQues = new QuestionMessage();
-                returnQues.setKcb(ivrLibaTemplateVO.getRevisitBefore());
-                for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVO) {
-                    if (ivrLibaTemplateScriptVO.getTargetid() == ivrLibaTemplateVO.getFirstQuestionNum().intValue()) {
-                        returnQues.setNowQuestion(ivrLibaTemplateScriptVO);
-                    }
-                }
-                returnQues.setQuestionList(ivrLibaTemplateScriptVO);
-                //灏嗛棶棰橈紝鍜屾ā鏉夸俊鎭斁鍒皉edis涓�
-                redisCache.setCacheObject(uuid + "returnQues", returnQues, 120, TimeUnit.MINUTES);
-                redisCache.setCacheObject(uuid + "ivrLibaTemplateVO", ivrLibaTemplateVO, 120, TimeUnit.MINUTES);
-
-                System.out.println("----------------uuID涓� 锛�" + uuid + "       " + ivrTaskSingle.getSendname() + "       " + returnQues.getNowQuestion().getQuestionText() + "     " + ivrTaskSingle.getPhone());
-
-                //璋冪敤鏈哄櫒浜虹數璇濓紝寮�濮嬬數璇濓紙闇�瑕佸皢鍥炶皟鏂规硶浼犲叆锛岃繖涓瓑鈥濈數璇濇柟鈥滃憡璇夋�庝箞浼狅紝鐜板湪鍏堢┖鐫�,杩樻湁绗竴鍙ラ棶棰樿瘽鏈級
-                String ob = phoneUtils.ob("", "", "", "", "", "", "", ivrTaskSingle.getPhone(), uuid, true);
-                System.out.println("OB鐨勫�间负锛�" + ob);
-                //閫氫簡涔嬪悗锛岀珛椹幓璋冨紑鍦虹櫧
-                System.out.println("闂鐨勫�间负锛�" + returnQues.getNowQuestion().getQuestionText() + "       " + uuid);
-                phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitBefore() + returnQues.getNowQuestion().getQuestionText(), uuid);
-
-//                //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
-//                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
-            } catch (Exception e) {
-                e.printStackTrace();
             }
-        }
+            Map<String, Object> objectMap = new HashMap<>();
+            objectMap.put("ivrTaskSingle", ivrTaskSingle);
+            objectMap.put("ivrLibaTemplateScriptVO", ivrLibaTemplateScriptVO);
+            //灏嗘暟鎹斁鍒皉edis涓紝鏂逛究鍦ㄥ洖璋冩柟娉曢噷鑾峰彇
+            redisCache.setCacheObject(uuid, objectMap, 120, TimeUnit.MINUTES);
 
+            //璁板綍棣栨闂
+            QuestionMessage returnQues = new QuestionMessage();
+            returnQues.setKcb(ivrLibaTemplateVO.getRevisitBefore());
+            for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVO) {
+                if (ivrLibaTemplateScriptVO.getTargetid() == ivrLibaTemplateVO.getFirstQuestionNum().intValue()) {
+                    returnQues.setNowQuestion(ivrLibaTemplateScriptVO);
+                }
+            }
+            returnQues.setQuestionList(ivrLibaTemplateScriptVO);
+            //灏嗛棶棰橈紝鍜屾ā鏉夸俊鎭斁鍒皉edis涓�
+            redisCache.setCacheObject(uuid + "returnQues", returnQues, 120, TimeUnit.MINUTES);
+            redisCache.setCacheObject(uuid + "ivrLibaTemplateVO", ivrLibaTemplateVO, 120, TimeUnit.MINUTES);
+
+            System.out.println("----------------uuID涓� 锛�" + uuid + "       " + ivrTaskSingle.getSendname() + "       " + returnQues.getNowQuestion().getQuestionText() + "     " + ivrTaskSingle.getPhone());
+
+            //鍏堝皢璇濇湳鏀惧埌ob_queue闃熷垪涓�
+            IvrTaskcallPhoneMQ ivrTaskcallPhoneMQ = new IvrTaskcallPhoneMQ();
+            ivrTaskcallPhoneMQ.setScript(ivrLibaTemplateVO.getRevisitBefore() + returnQues.getNowQuestion().getQuestionText());
+            ivrTaskcallPhoneMQ.setType("1");
+            ivrTaskcallPhoneMQ.setUuid(uuid);
+            String data = JSON.toJSONString(ivrTaskcallPhoneMQ);
+            rabbitMqCallPhoneConfig.sendMessage("phone_exchange", "phone.ob1", data, 0L);
+
+            //璋冪敤鏈哄櫒浜虹數璇濓紝寮�濮嬬數璇�
+            String ob = phoneUtils.ob("", "", "", "", "", "", "", ivrTaskSingle.getPhone(), uuid, true);
+            System.out.println("----------------uuID涓� 锛�" + uuid + "       " + ivrTaskSingle.getSendname() + "       " + returnQues.getNowQuestion().getQuestionText() + "     " + ivrTaskSingle.getPhone() + "----------宸茬粡鎷ㄦ墦");
+            Map<String, String> obMap = objectMapper.readValue(ob, Map.class);
+            Thread.sleep(1000);
+            redisCache.setCacheObject(uuid + "state_id", "0", 10, TimeUnit.MINUTES);
+//杩欓噷鍏堟敞閲婏紝state_id,鐢佃瘽閭h竟锛屽彧鑳借繑鍥�6锛屼笉鑳借繑鍥�0锛岃繕闇�瑕佺數璇濋偅杈硅繘琛屼慨鏀癸紝閭h竟淇敼涔嬪悗锛屼笂闈袱琛屽彲鍒犻櫎锛屽皢涓嬮潰鐨勮В寮�娉ㄩ噴
+//            if (obMap.get("state_id").equals("0")) {
+//                // 璇存槑鎵撻�氫簡
+//                redisCache.setCacheObject(uuid + "state_id", "0", 10, TimeUnit.MINUTES);
+//            } else {
+//                while (true) {
+//                    Thread.sleep(2000);
+//                    redisCache.setCacheObject(uuid + "state_id", "0", 10, TimeUnit.MINUTES);
+//                }
+//            }
+
+
+            System.out.println("OB鐨勫�间负锛�" + ob);
+        } catch (Exception e) {
+            e.printStackTrace();
+
+        }
     }
 }

--
Gitblit v1.9.3