From ef81a5cbfbb98974ed1ba54d0e47b7e74a9b96b9 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期四, 06 六月 2024 15:33:55 +0800 Subject: [PATCH] 代码提交 --- smartor/src/main/java/com/smartor/service/impl/IvrTaskServiceImpl.java | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 210 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..de011f5 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,281 @@ package com.smartor.service.impl; -import java.util.List; +import java.text.SimpleDateFormat; +import java.util.*; + +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.exception.base.BaseException; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.DtoConversionUtils; +import com.ruoyi.common.utils.StringUtils; +import com.smartor.config.RabbitMqCallPhoneConfig; +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 RabbitMqCallPhoneConfig rabbitMqCallPhoneConfig; + /** * 鏌ヨ璇煶浠诲姟 - * + * * @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 (org.apache.commons.lang3.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); + + //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓� + IvrTask ivrTask2 = new IvrTask(); + ivrTask2.setTaskid(ivrTask.getTaskid()); + ivrTask2.setSendState(2); + updateIvrTask(ivrTask2); + } else if (org.apache.commons.lang3.StringUtils.isNotEmpty(sendTaskVO.getSendType()) && sendTaskVO.getSendType().equals("1")) { + //鏃堕棿娈靛彂閫� + 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); + } + //灏嗕换鍔$姸鎬佷慨鏀规垚鎵ц涓� + IvrTask ivrTask2 = new IvrTask(); + ivrTask2.setTaskid(ivrTask.getTaskid()); + ivrTask2.setSendState(2); + updateIvrTask(ivrTask2); + } + } + return 1; } } -- Gitblit v1.9.3