From 6d51501ca93f5bf46759f851988650477cf32e6c Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 12 六月 2024 18:02:45 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java |  238 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 213 insertions(+), 25 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java
index 1001557..5764701 100644
--- a/smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java
@@ -1,96 +1,284 @@
 package com.smartor.service.impl;
 
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+import com.alibaba.fastjson2.JSON;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+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 org.apache.commons.lang3.StringUtils;
+import com.smartor.domain.*;
+import com.smartor.mapper.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.smartor.mapper.IvrTaskMapper;
-import com.smartor.domain.IvrTask;
 import com.smartor.service.IIvrTaskService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 璇煶浠诲姟Service涓氬姟灞傚鐞�
- * 
+ *
  * @author smartor
  * @date 2023-03-24
  */
+@Slf4j
 @Service
-public class IvrTaskServiceImpl implements IIvrTaskService 
-{
+public class IvrTaskServiceImpl implements IIvrTaskService {
     @Autowired
     private IvrTaskMapper ivrTaskMapper;
 
+    @Autowired
+    private IvrTaskSingleMapper ivrTaskcallMapper;
+
+    @Autowired
+    private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
+
+    @Autowired
+    private PatArchiveMapper patArchiveMapper;
+
+    @Autowired
+    private IvrLibaTemplateTargetoptionMapper ivrLibaTemplateTargetOptionMapper;
+
+    @Autowired
+    private RedisCache redisCache;
+
     /**
      * 鏌ヨ璇煶浠诲姟
-     * 
+     *
      * @param taskid 璇煶浠诲姟涓婚敭
      * @return 璇煶浠诲姟
      */
     @Override
-    public IvrTask selectIvrTaskByTaskid(Long taskid)
-    {
+    public IvrTask selectIvrTaskByTaskid(Long taskid) {
         return ivrTaskMapper.selectIvrTaskByTaskid(taskid);
     }
 
     /**
      * 鏌ヨ璇煶浠诲姟鍒楄〃
-     * 
+     *
      * @param ivrTask 璇煶浠诲姟
      * @return 璇煶浠诲姟
      */
     @Override
-    public List<IvrTask> selectIvrTaskList(IvrTask ivrTask)
-    {
+    public List<IvrTask> selectIvrTaskList(IvrTask ivrTask) {
         return ivrTaskMapper.selectIvrTaskList(ivrTask);
     }
 
     /**
      * 鏂板璇煶浠诲姟
-     * 
+     *
      * @param ivrTask 璇煶浠诲姟
      * @return 缁撴灉
      */
     @Override
-    public int insertIvrTask(IvrTask ivrTask)
-    {
+    public int insertIvrTask(IvrTask ivrTask) {
         ivrTask.setCreateTime(DateUtils.getNowDate());
         return ivrTaskMapper.insertIvrTask(ivrTask);
     }
 
     /**
      * 淇敼璇煶浠诲姟
-     * 
+     *
      * @param ivrTask 璇煶浠诲姟
      * @return 缁撴灉
      */
     @Override
-    public int updateIvrTask(IvrTask ivrTask)
-    {
+    public int updateIvrTask(IvrTask ivrTask) {
         ivrTask.setUpdateTime(DateUtils.getNowDate());
         return ivrTaskMapper.updateIvrTask(ivrTask);
     }
 
     /**
      * 鎵归噺鍒犻櫎璇煶浠诲姟
-     * 
+     *
      * @param taskids 闇�瑕佸垹闄ょ殑璇煶浠诲姟涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteIvrTaskByTaskids(Long[] taskids)
-    {
+    public int deleteIvrTaskByTaskids(Long[] taskids) {
         return ivrTaskMapper.deleteIvrTaskByTaskids(taskids);
     }
 
     /**
      * 鍒犻櫎璇煶浠诲姟淇℃伅
-     * 
+     *
      * @param taskid 璇煶浠诲姟涓婚敭
      * @return 缁撴灉
      */
+    @Transactional(rollbackFor = Exception.class)
     @Override
-    public int deleteIvrTaskByTaskid(Long taskid)
-    {
-        return ivrTaskMapper.deleteIvrTaskByTaskid(taskid);
+    public Boolean deleteIvrTaskByTaskid(Long taskid) {
+        IvrTaskSingle ivrTaskcall = new IvrTaskSingle();
+        ivrTaskcall.setTaskid(taskid);
+        ivrTaskcall.setDelFlag("1");
+        Boolean aBoolean = ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall);
+        Boolean isSuccess = false;
+        if (!aBoolean) {
+            new BaseException("浠诲姟鍒犻櫎澶辫触");
+        }
+        isSuccess = ivrTaskMapper.deleteIvrTaskByTaskid(taskid);
+        return isSuccess;
+    }
+
+    @Override
+    public List<IvrLibaTemplateScriptVO> getScriptInfoByCondition(Long taskid, Long patid) {
+        //閫氳繃浠诲姟ID鑾峰彇妯℃澘ID
+        IvrTask ivrTask = selectIvrTaskByTaskid(taskid);
+
+        //閫氳繃妯℃澘ID鑾峰彇闂淇℃伅
+        IvrLibaTemplateScript ivrLibaTemplateScript = new IvrLibaTemplateScript();
+        ivrLibaTemplateScript.setTemplateID(ivrTask.getTemplateid());
+        ivrLibaTemplateScript.setDelFlag("0");
+        List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.selectIvrLibaTemplateScriptList(ivrLibaTemplateScript);
+        if (CollectionUtils.isEmpty(ivrLibaTemplateScripts) || ivrLibaTemplateScripts.size() == 0) {
+            log.info("ivrLibaTemplateScripts涓虹┖浜嗭紝璇峰敖蹇仈绯荤鐞嗗憳澶勭悊");
+            return new ArrayList<>();
+        }
+        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOS = DtoConversionUtils.sourceToTarget(ivrLibaTemplateScripts, IvrLibaTemplateScriptVO.class);
+
+        //鑾峰彇鎮h�呬俊鎭�
+        PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patid);
+
+        //閫氳繃鎮h�呬俊鎭拰浠诲姟淇℃伅涓殑textParam瀵归棶棰樹腑鐨勫彉閲忚繘琛屽~鍏�
+        ObjectMapper objectMapper = new ObjectMapper();
+        Map<String, Map<String, String>> ivrTaskMap = null;
+        try {
+            ivrTaskMap = objectMapper.readValue(ivrTask.getTextParam(), Map.class);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+        List<Map<String, String>> mapList = new ArrayList<>();
+
+        for (Map<String, String> map : ivrTaskMap.values()) {
+            mapList.add(map);
+        }
+
+        //灏嗘ā鏉块棶棰樿瘽鏈噷鐨勯�氶厤绗︽浛鎹�
+        for (IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO : ivrLibaTemplateScriptVOS) {
+            if (StringUtils.isNotEmpty(ivrLibaTemplateScriptVO.getQuestionText())) {
+                for (Map<String, String> map : mapList) {
+                    for (String key : map.keySet()) {
+
+                        ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""));
+                    }
+                }
+                //鏇挎崲鎮h�呬釜浜轰俊鎭暟鎹�
+                ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace("${name}", StringUtils.isNotEmpty(patArchive.getName()) ? patArchive.getName() : ""));
+                ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace("${dzz}", StringUtils.isNotEmpty(patArchive.getPlaceOfResidence()) ? patArchive.getPlaceOfResidence() : ""));
+                ivrLibaTemplateScriptVO.setQuestionText(ivrLibaTemplateScriptVO.getQuestionText().replace("${dhh}", StringUtils.isNotEmpty(patArchive.getTelcode()) ? patArchive.getTelcode() : ""));
+
+                //鑾峰彇闂閫夐」
+                IvrLibaTemplateTargetoption ivrLibaTemplateTargetoption = new IvrLibaTemplateTargetoption();
+                ivrLibaTemplateTargetoption.setScriptid(ivrLibaTemplateScriptVO.getID());
+                List<IvrLibaTemplateTargetoption> ivrLibaTemplateTargetoptions = ivrLibaTemplateTargetOptionMapper.selectIvrLibaTemplateTargetoptionList(ivrLibaTemplateTargetoption);
+                ivrLibaTemplateScriptVO.setIvrLibaScriptTargetoptionList(ivrLibaTemplateTargetoptions);
+            }
+        }
+
+
+        return ivrLibaTemplateScriptVOS;
+    }
+
+    /**
+     * 浠诲姟鍙戦��
+     *
+     * @return
+     */
+    @Override
+    public int taskSend(SendTaskVO sendTaskVO) {
+        if (sendTaskVO.getTaskId() == null) throw new BaseException("浠诲姟ID涓嶈兘涓虹┖锛岃妫�鏌ュ悗锛屽啀杩涜鎵ц");
+        IvrTask ivrTask = selectIvrTaskByTaskid(sendTaskVO.getTaskId());
+        if (sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 3 || sendTaskVO.getSendState() != null && sendTaskVO.getSendState() == 4) {
+            //浠诲姟鏆傚仠鎴栫粓姝�
+            IvrTask ivrTask3 = new IvrTask();
+            ivrTask3.setTaskid(sendTaskVO.getTaskId());
+            ivrTask3.setStopState(ivrTask.getStopState() + 1);
+            ivrTask3.setSendState(sendTaskVO.getSendState());
+            updateIvrTask(ivrTask3);
+            return 0;
+        }
+
+        //鍒ゆ柇鍙戦�佺姸鎬佹槸鍚︿负绌�
+        if (org.apache.commons.lang3.StringUtils.isEmpty(sendTaskVO.getSendType())) {
+            sendTaskVO.setSendType(ivrTask.getSendType().toString());
+        }
+        //鍒ゆ柇浠诲姟鏄惁鏄珛鍗冲彂閫�
+        if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("2")) {
+            IvrTaskcallMQ ivrTaskcallMQ = new IvrTaskcallMQ();
+            ivrTaskcallMQ.setTaskid(sendTaskVO.getTaskId());
+            ivrTaskcallMQ.setSendType(sendTaskVO.getSendType());
+            ivrTaskcallMQ.setTemplateid(ivrTask.getTemplateid().toString());
+            ivrTaskcallMQ.setPreachform(ivrTask.getPreachform());
+            ivrTaskcallMQ.setStopState(ivrTask.getStopState());
+
+            String ivrTaskcallMQJson = JSON.toJSONString(ivrTaskcallMQ);
+            ivrTaskcallMQJson = ivrTaskcallMQJson.substring(1, ivrTaskcallMQJson.length() - 1);
+
+            //绔嬪嵆鍙戦��
+//            rabbitMqCallPhoneConfig.sendMessage("phone_exchange", "phone.123", ivrTaskcallMQJson, 0L);
+            redisCache.setCacheObject(ivrTaskcallMQJson, ivrTaskcallMQJson, 1, TimeUnit.SECONDS);
+
+            //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
+            IvrTask ivrTask2 = new IvrTask();
+            ivrTask2.setTaskid(ivrTask.getTaskid());
+            ivrTask2.setSendState(2);
+            updateIvrTask(ivrTask2);
+        } else if (StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1") || StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("3")) {
+            //鏃堕棿娈靛彂閫�
+            ObjectMapper objectMapper = new ObjectMapper();
+            if (org.apache.commons.lang3.StringUtils.isNotEmpty(ivrTask.getSendTimeSlot())) {
+                List<TaskSendTimeVO> taskSendTimeVOList = null;
+                try {
+                    taskSendTimeVOList = objectMapper.readValue(ivrTask.getSendTimeSlot(), new TypeReference<List<TaskSendTimeVO>>() {
+                    });
+                } catch (JsonProcessingException e) {
+                    log.error("JsonProcessingException鎶ラ敊浜嗭細{}", e.getMessage());
+                }
+                for (TaskSendTimeVO taskSendTimeVO : taskSendTimeVOList) {
+                    //鍘籗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(sendTaskVO.getTaskId());
+                    ivrTaskcallMQ.setSendType("1");
+                    ivrTaskcallMQ.setTemplateid(ivrTask.getTemplateid().toString());
+                    ivrTaskcallMQ.setSendTimeslot(list);
+                    ivrTaskcallMQ.setStopState(ivrTask.getStopState());
+                    ivrTaskcallMQ.setPreachform(ivrTask.getPreachform());
+
+                    Long finalMilliseconds = milliseconds;
+                    String ivrTaskcallMQJson = JSON.toJSONString(ivrTaskcallMQ);
+                    ivrTaskcallMQJson = ivrTaskcallMQJson.substring(1, ivrTaskcallMQJson.length() - 1);
+//                    rabbitMqCallPhoneConfig.sendMessage("phone_exchange", "phone.123", ivrTaskcallMQJson, milliseconds);
+                    redisCache.setCacheObject(ivrTaskcallMQJson, ivrTaskcallMQJson, milliseconds / 1000, TimeUnit.SECONDS);
+                }
+                //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓�
+                IvrTask ivrTask2 = new IvrTask();
+                ivrTask2.setTaskid(ivrTask.getTaskid());
+                ivrTask2.setSendState(2);
+                updateIvrTask(ivrTask2);
+            }
+        }
+        return 1;
     }
 }

--
Gitblit v1.9.3