From f0a09ee996ab2605869844d6a3d812709e2bf0fa Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 16 十月 2026 16:07:25 +0800
Subject: [PATCH] 任务模块、电话模块
---
ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java | 2109 ++--------------------------------------------------------
1 files changed, 80 insertions(+), 2,029 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
similarity index 63%
rename from smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
rename to ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
index 734aca1..18d40e8 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/service/impl/ServiceSubtaskServiceImpl.java
@@ -1,4 +1,4 @@
-package com.smartor.service.impl;
+package com.ruoyi.task.service.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
@@ -20,28 +20,13 @@
import com.ruoyi.message.sms.SmsSenderFactory;
import com.ruoyi.message.wechat.WechatSendRequest;
import com.ruoyi.message.wechat.WechatSenderFactory;
-import com.ruoyi.system.domain.SysConfig;
-import com.ruoyi.system.mapper.SysConfigMapper;
-import com.ruoyi.system.service.ISysConfigService;
-import com.smartor.common.FtpService;
-import com.smartor.common.ScheduleSubtaskBuilder;
-import com.ruoyi.common.utils.PhoneUtils;
-import com.smartor.domain.DTO.*;
-import com.smartor.domain.*;
-import com.smartor.domain.VO.*;
-import com.smartor.domain.entity.ServiceSubtaskEntity;
-import com.smartor.mapper.*;
-import com.smartor.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.ObjectUtils;
-import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.Cacheable;
-import org.springframework.data.redis.core.ListOperations;
-import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
@@ -57,8 +42,6 @@
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -75,9 +58,7 @@
import com.ruoyi.template.domain.IvrTaskTemplateScriptVO;
import com.ruoyi.template.domain.IvrTaskTemplateTargetoption;
import com.ruoyi.template.domain.IvrTaskTemplateVO;
-import com.smartor.domain.IvrTaskVisitResult;
import com.ruoyi.template.mapper.IvrTaskTemplateTargetoptionMapper;
-import com.smartor.mapper.IvrTaskVisitResultMapper;
import com.ruoyi.template.service.IIvrTaskTemplateScriptService;
import com.ruoyi.template.service.IIvrTaskTemplateService;
import com.ruoyi.template.service.IIvrTaskTemplateTargetoptionService;
@@ -92,6 +73,57 @@
import com.ruoyi.template.service.ISvyTaskTemplateScriptService;
import com.ruoyi.template.service.ISvyTaskTemplateService;
import static cn.hutool.core.convert.Convert.toHex;
+import com.ruoyi.common.core.domain.entity.PatArchive;
+import com.ruoyi.task.domain.DTO.ServiceSubtaskDetailDTO;
+import com.ruoyi.task.domain.entity.ServiceSubtaskEntity;
+import com.ruoyi.task.domain.ServiceStatisticsRequest;
+import com.ruoyi.task.domain.ServiceStatisticsResponse;
+import com.ruoyi.task.domain.ServiceSubtask;
+import com.ruoyi.task.domain.ServiceSubtaskCount;
+import com.ruoyi.task.domain.ServiceSubtaskCountReq;
+import com.ruoyi.task.domain.ServiceSubtaskDetail;
+import com.ruoyi.task.domain.ServiceSubtaskDetailVO;
+import com.ruoyi.task.domain.ServiceSubtaskScriptCount;
+import com.ruoyi.task.domain.ServiceSubtaskStatistic;
+import com.ruoyi.task.domain.ServiceTask;
+import com.ruoyi.task.domain.ServiceTaskdept;
+import com.ruoyi.task.domain.ServiceTaskdiag;
+import com.ruoyi.task.domain.ServiceTaskmedical;
+import com.ruoyi.task.domain.ServiceTaskoper;
+import com.ruoyi.task.domain.ServiceTaskSchedule;
+import com.ruoyi.task.domain.ServiceTaskScheduleDetail;
+import com.ruoyi.task.domain.TaskSendTimeVO;
+import com.ruoyi.task.domain.VO.ServiceSubtaskCotinueCountVO;
+import com.ruoyi.task.mapper.ServiceSubtaskDetailMapper;
+import com.ruoyi.task.mapper.ServiceSubtaskMapper;
+import com.ruoyi.task.domain.ServiceSubtaskDetailTrace;
+import com.ruoyi.task.domain.ServiceOutPath;
+import com.ruoyi.task.mapper.ServiceOutPathMapper;
+import com.ruoyi.task.service.IServiceOutPathService;
+import com.ruoyi.task.domain.ServiceSubtaskPreachform;
+import com.ruoyi.task.api.spi.TaskPreachformPort;
+import com.ruoyi.task.api.spi.TaskArchivePort;
+import com.ruoyi.task.api.spi.TaskFtpPort;
+import com.ruoyi.task.api.spi.TaskSysConfigPort;
+import com.ruoyi.task.api.spi.TaskSysDeptPort;
+import com.ruoyi.task.common.ScheduleSubtaskBuilder;
+import com.ruoyi.task.domain.ServiceTaskScheduleVO;
+import com.ruoyi.task.service.IServiceSubtaskService;
+import com.ruoyi.task.service.IServiceTaskScheduleService;
+import com.ruoyi.task.service.IServiceTaskService;
+import com.ruoyi.task.service.IServiceTaskdeptService;
+import com.ruoyi.task.service.IServiceTaskdiagService;
+import com.ruoyi.task.service.IServiceTaskmedicalService;
+import com.ruoyi.task.service.IServiceTaskoperService;
+import com.ruoyi.task.domain.PatArchiveSrmVO;
+import com.ruoyi.task.domain.PatTaskRelevance;
+import com.ruoyi.task.domain.SendMagParam;
+import com.ruoyi.task.domain.ServiceSubtaskDiagname;
+import com.ruoyi.task.domain.ServiceSubtaskIsAbnormalStatistic;
+import com.ruoyi.task.domain.ServiceSubtaskRes;
+import com.ruoyi.task.domain.ServiceSubtaskTemplateVO;
+import com.ruoyi.task.domain.ServiceTaskVO;
+import com.ruoyi.task.domain.VO.TransferDeptVO;
/**
* 鍗曚竴浠诲姟锛堥殢璁匡級Service涓氬姟灞傚鐞�
@@ -134,7 +166,7 @@
private ServiceSubtaskMapper serviceSubtaskMapper;
@Autowired
- private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
+ private TaskPreachformPort taskPreachformPort;
@Autowired
private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;
@@ -144,9 +176,6 @@
@Autowired
private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;
-
- @Autowired
- private IvrTaskVisitResultMapper serviceTaskVisitResultMapper;
@Autowired
private IServiceTaskdeptService serviceTaskdeptService;
@@ -184,45 +213,30 @@
private IServiceOutPathService iServiceOutPathService;
@Autowired
- private IServiceSubtaskDetailTraceService traceService;
-
- @Autowired
private IServiceTaskScheduleService serviceTaskScheduleService;
@Autowired
- private IPatArchiveService patArchiveService;
+ private TaskArchivePort taskArchivePort;
@Autowired
private ScheduleSubtaskBuilder scheduleSubtaskBuilder;
@Autowired
- private FtpService ftpService;
+ private TaskFtpPort taskFtpPort;
- @Autowired
- private PatArchiveMapper patArchiveMapper;
@Autowired
private SvyLibScriptCategoryMapper svyLibScriptCategoryMapper;
- @Autowired
- private IPatMedInhospService patMedInhospService;
-
- @Value("${pri_key}")
- private String pri_key;
@Value("${pub_key}")
private String pub_key;
- @Value("${ASRCallBackPath}")
- private String ASRCallBackPath;
@Autowired
- private ISysConfigService configService;
-
- @Autowired
- private SysConfigMapper sysConfigMapper;
+ private TaskSysConfigPort taskSysConfigPort;
/**
* 娑堟伅鍙戦�佹柟宸ュ巶锛堢煭淇�/寰俊鍏紬鍙凤級锛屾浛浠e師鏉ョ洿鎺ヨ皟鐢ㄥ悇绔欑偣鍙戦�佷唬鐮佺殑鍐欐硶
@@ -233,36 +247,15 @@
@Autowired
private WechatSenderFactory wechatSenderFactory;
- @Autowired
- private RedisTemplate redisTemplate;
-
- @Value("${hangup}")
- private String hangup;
-
- @Value("${app_key_yq}")
- private String app_key_yq;
-
- @Value("${ruoyi.profile}")
- private String profile;
-
- @Value("${voicePathPrefix}")
- private String voicePathPrefix;
-
@Value("${localIP}")
private String localIP;
@Value("${req_path}")
private String req_path;
- @Value("${phoneUpEveryHour}")
- private Integer phoneUpEveryHour;
- @Value("${phoneEndHour}")
- private Integer phoneEndHour;
@Autowired
- private IPatMedOuthospService patMedOuthospService;
- @Autowired
- private SysDept2Mapper sysDept2Mapper;
+ private TaskSysDeptPort taskSysDeptPort;
@Value("${spring.profiles.active}")
private String active;
@@ -374,7 +367,7 @@
} catch (JsonProcessingException e) {
e.printStackTrace();
}
- List<ServiceSubtaskPreachform> serviceSubtaskPreachformLists = serviceSubtaskPreachformMapper.selectBySubtask(serviceSubtask);
+ List<ServiceSubtaskPreachform> serviceSubtaskPreachformLists = taskPreachformPort.selectBySubtask(serviceSubtask);
for (ServiceSubtask serviceSubtask1 : list) {
PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
if (!serviceSubtask1.getHospType().equals("2")) {
@@ -495,7 +488,7 @@
}
PatMedInhosp inhosp = inhospVisitFacade.selectPatMedInhospByInhospid(serviceSubtask.getInhospid());
if (ObjectUtils.isNotEmpty(inhosp)) {
- PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(inhosp.getPatid());
+ PatArchive patArchive = taskArchivePort.findByPatid(inhosp.getPatid());
if (ObjectUtils.isNotEmpty(patArchive)) {
Map<String, String> stringStringMap = calculateAge(patArchive.getBirthdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
serviceSubtaskRes.setAge(StringUtils.isNotEmpty(stringStringMap.get("age")) ? Long.valueOf(stringStringMap.get("age")) : null);
@@ -524,7 +517,7 @@
//鎮h�呰幏鍙栭殢璁夸换鍔�-闇�瑕佹煡璇㈠悓涓偅鑰咃紙韬唤璇侊級鎵�鏈夌殑浠诲姟 鏅畞
if (StringUtils.isNotEmpty(serviceSubtaskEntity.getOrgid()) && serviceSubtaskEntity.getOrgid().equals("47255004333112711A1001")) {
if (ObjectUtils.isNotEmpty(serviceSubtaskEntity.getPatid())) {
- PatArchive patArchive = patArchiveService.selectPatArchiveByPatid(serviceSubtaskEntity.getPatid());
+ PatArchive patArchive = taskArchivePort.findByPatid(serviceSubtaskEntity.getPatid());
if (ObjectUtils.isNotEmpty(patArchive) && StringUtils.isNotEmpty(patArchive.getIdcardno())) {
serviceSubtaskEntity.setPatid(null);
serviceSubtaskEntity.setSfzh(patArchive.getIdcardno());
@@ -827,7 +820,7 @@
patMedInhosp.setPatid(serviceSubtask1.getPatid());
patMedInhosp.setInhospstate("0");
List<PatMedInhosp> patMedInhospList = inhospVisitFacade.selectPatMedInhospList(patMedInhosp);
- PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask1.getPatid());
+ PatArchive patArchive = taskArchivePort.findByPatid(serviceSubtask1.getPatid());
//鏅畞 鏂板鍐嶆闅忚涓嶈兘瑙﹀彂鎮h�呭啀鍏ラ櫌
boolean inhospAgain = true;
if (serviceSubtask1.getOrgid().equals("47255004333112711A1001")) {
@@ -1001,7 +994,7 @@
}
serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes());
if (StringUtils.isEmpty(serviceTask.getLeavehospitaldistrictname()) && StringUtils.isNotEmpty(serviceTask.getLeavehospitaldistrictcode())) {
- SysDept sysDept = sysDept2Mapper.selectDeptByCode(serviceTask.getLeavehospitaldistrictcode(), null);
+ SysDept sysDept = taskSysDeptPort.selectDeptByCode(serviceTask.getLeavehospitaldistrictcode(), null);
serviceTask.setLeavehospitaldistrictname(sysDept.getDeptName());
}
if (serviceTaskVO.getLongTask() == 1) serviceTask.setSendState(2L);
@@ -1230,7 +1223,7 @@
serviceSubtaskPreachform.setSendstate("1");
serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
serviceSubtaskPreachform.setCreateTime(new Date());
- serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
+ taskPreachformPort.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
}
}
}
@@ -1283,7 +1276,7 @@
if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
PatMedOuthosp patMedOuthosp = patMedOuthosps.get(0);
patMedOuthosp.setServerState("0");
- patMedOuthospService.updatePatMedOuthosp(patMedOuthosp);
+ outhospDataFacade.update(patMedOuthosp);
}
}
} else if (serviceSubtask.getServiceType().equals("19")) {
@@ -1599,7 +1592,7 @@
List<ServiceSubtask> ssTaskList = serviceSubtaskMapper.selectServiceSubtaskBySendstate(ssVo);
for (int i = 0; i < ssTaskList.size(); i++) {
ServiceSubtask serviceSubtask = ssTaskList.get(i);
- serviceSubtaskPreachformMapper.deleteServiceSubtaskPreachformBySubid(serviceSubtask.getId());
+ taskPreachformPort.deleteServiceSubtaskPreachformBySubid(serviceSubtask.getId());
if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformList())) {
List<Map<String, Object>> pfList = serviceTaskVO.getPreachformList();
for (Map<String, Object> map : pfList) {
@@ -1613,7 +1606,7 @@
serviceSubtaskPreachform.setSendstate("1");
serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
// serviceSubtaskPreachform.setSort(Long.valueOf(i));
- serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
+ taskPreachformPort.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
}
}
}
@@ -1621,1239 +1614,6 @@
Map<String, Integer> map = new HashMap<>();
map.put("taskId", serviceTask.getTaskid().intValue());
return map;
- }
-
- @Override
- public void phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
- 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());
- ServiceSubtask serviceSubtask = (ServiceSubtask) map.get("ServiceSubtask");
- List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOs = (List<IvrTaskTemplateScriptVO>) map.get("IvrTaskTemplateScriptVO");
- //灏唘uid鏇存柊鍒版暟鎹簱涓�
- serviceSubtask.setSenduuid(phoneCallBackVO.getUuid());
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-
- //鑾峰彇妯℃澘淇℃伅
- 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()) {
- ServiceSubtask ss = new ServiceSubtask();
- ss.setId(serviceSubtask.getId());
- ss.setSendstate(5L);
- ss.setRemark("鐢佃瘽鏃犲搷搴�");
- serviceSubtaskMapper.updateServiceSubtask(ss);
- //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
- 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);
- // 闂锛� 鍘昏皟鐢�"tts鍚堟垚鍜屾挱鏀�"鎺ュ彛
- String date = simpleDateFormat1.format(new Date());
- log.info("鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
- phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());
- }
- } else {
- redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
- //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
- String slienceText = nowQuestion.getSlienceText();
- //闈欓粯璇濇湳 + 闂锛� 鍘昏皟鐢�"tts鍚堟垚鍜屾挱鏀�"鎺ュ彛
- String date = simpleDateFormat1.format(new Date());
- log.info("闈欓粯璇濇湳 + 闂,鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
- phoneUtils.ttsPlayback(slienceText + nowQuestion.getIvrtext(), 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());
- }
- //涓嶅寘鍚�
- 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.getIvrtext(), 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(1);
- serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(nowQuestion.getIvrTaskScriptTargetoptionList().get(j));
-
- //灏嗛潤榛樼疆涓�0
- redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
- redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
-
- //灏嗘偅鑰呯殑鍥炵鍐欒繘琛ㄩ噷
- IvrTaskVisitResult serviceTaskVisitResult = DtoConversionUtils.sourceToTarget(serviceSubtask, IvrTaskVisitResult.class);
- serviceTaskVisitResult.setId(null);
- serviceTaskVisitResult.setQuestion(nowQuestion.getIvrtext());
- serviceTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());
- serviceTaskVisitResult.setCreateTime(new Date());
- serviceTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue());
- serviceTaskVisitResultMapper.insertIvrTaskVisitResult(serviceTaskVisitResult);
-
- //灏嗗尮閰嶅埌鐨勬爣璇嗘敼鎴恡rue
- isppd = true;
-
- //鑾峰彇涓嬩竴棰�
- Long nextQuestion = nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();
- for (IvrTaskTemplateScriptVO script : IvrTaskTemplateScriptVOs) {
- if (script.getTargetid() == nextQuestion) {
- QuestionMessage questionMessage = new QuestionMessage();
- questionMessage.setNowQuestion(script);
- questionMessage.setQuestionList(IvrTaskTemplateScriptVOs);
- redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
- phoneUtils.ttsPlayback(script.getIvrtext(), phoneCallBackVO.getUuid());
- return;
- } else if (nextQuestion > IvrTaskTemplateScriptVOs.size()) {
- //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�
- ServiceSubtask ss = new ServiceSubtask();
- ss.setId(serviceSubtask.getId());
- ss.setSendstate(6L);
- serviceSubtaskMapper.updateServiceSubtask(ss);
- String date = simpleDateFormat1.format(new Date());
- log.error("娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�: {},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();
- }
- phoneUtils.hangup("", "", ivrTaskTemplateVO.getRevisitAfter(), "", "", "", "", phoneCallBackVO.getUuid());
- return;
- }
- }
- return;
- } else {
- //娌℃湁鍖归厤涓婂綋鍓峯ption
- //Targetregex2 涓篺alse锛岃〃绀哄湪Targetregex2涓瓨鍦� 璇彞涓殑鍏抽敭瀛楋紝杩欎釜option灏变笉鐢ㄥ啀缁х画鍖归厤浜嗭紝鐩存帴鍖归厤涓嬩竴涓猳ption
- continue;
- }
- }
-
- 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.getIvrtext(), phoneCallBackVO.getUuid());
- return;
- } else {
- //灏卞彲浠ユ寕鏂數璇濅簡
- ServiceSubtask ss = new ServiceSubtask();
- ss.setId(serviceSubtask.getId());
- ss.setSendstate(6L);
- serviceSubtaskMapper.updateServiceSubtask(ss);
-
- 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();
- }
- 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.error("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細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.setScriptContent(null);
- nowQuestion1.setScriptVoice(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("璋冪敤tts鍚堟垚鍜屾挱鏀�------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
- phoneUtils.ttsPlayback(nowQuestion.getIvrtext() + ivrTaskTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid());
- }
- break;
- }
- String date = simpleDateFormat1.format(new Date());
- log.info("鏈�鍚庣殑淇℃伅鍥炲-: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
- phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());
- }
- }
- }
-
- /**
- * 鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划)
- *
- * @param phoneCallReqYQVO
- */
- @Override
- public PhoneCallBackYQVO phoneCallBackYQ(PhoneCallReqYQVO phoneCallReqYQVO) {
- //鍏堟妸璇ubId浠巆ache_exist涓墧闄わ紝鍙鏈夊洖璋冨氨鍓旈櫎锛堢洰鐨勬槸锛屽敖蹇cache-exist涓虹┖锛屽幓缂撳瓨涓嬩竴鎵硅鎵撶殑鐢佃瘽;杩欓噷鍓旈櫎涓嶅奖鍝嶇數璇濈殑姝e父涓氬姟锛�
-// redisCache.removeElementFromList("cache-exist", phoneCallReqYQVO.getTaskid());
-
- //鍒ゆ柇鏄惁鎸傛満
- String hangupState = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "- hangup");
- Object cacheObject1 = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
- if (StringUtils.isNotEmpty(hangupState) && hangupState.equals("1") || ObjectUtils.isNotEmpty(cacheObject1) && String.valueOf(cacheObject1).equals("1")) {
- return new PhoneCallBackYQVO();
- }
- if ("AsrCallback".equals(phoneCallReqYQVO.getOperate()) && phoneCallReqYQVO.getEnd_time() != null && phoneCallReqYQVO.getEnd_time() != -1) {
- //澶勭悊鎸傛柇
- if (phoneCallReqYQVO.getAsrtext().contains("鎷ㄥ彨鐨勭敤鎴锋蹇�")) {
- //鍒ゆ柇 recordAccept-hungup 鏄惁鏈夊�硷紝濡傛灉鏈夛紝鍒欒鏄庝笉鐢ㄥ鐞嗕簡锛屼箣鍓嶅凡缁忓鐞嗚繃浜嗭紙recordAccept-hungup杩欎釜涓昏鏄粰"閫氳瘽璁板綍鐢ㄧ殑锛�"锛�
- Object cacheObject = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
- if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("1")) {
- ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
- setFailPreachForm(serviceSubtask, "3", "鎷ㄥ彨鐨勭敤鎴锋蹇�", "4");
- return new PhoneCallBackYQVO();
- }
- //濡傛灉鍙戦�佺姸鎬佷负6锛屽氨璇存槑宸茬粡鎵撳畬浜嗭紝涔熸病鏈夊繀瑕佺户缁線涓嬭蛋浜�
- if (StringUtils.isNotEmpty(phoneCallReqYQVO.getTaskid())) {
- ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
- if (serviceSubtask.getSendstate() == 6L) return new PhoneCallBackYQVO();
- }
-
- ServiceSubtask serviceSubtask2 = new ServiceSubtask();
- serviceSubtask2.setRemark("鐢佃瘽鍙戦�佹垚鍔燂紙鎮h�呮寕鏂級");
- serviceSubtask2.setSenduuid(phoneCallReqYQVO.getUuid());
- serviceSubtask2.setId(Long.valueOf(phoneCallReqYQVO.getTaskid()));
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask2);
- Map<String, String> req = new HashMap<>();
- req.put("uuid", phoneCallReqYQVO.getUuid());
- req.put("caller", phoneCallReqYQVO.getPhone());
- HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- hangup", "1", 2, TimeUnit.MINUTES);
- //鍏堟妸榛樿鐨剅ecordAccept-hungup鍒犻櫎锛屽啀鏇存柊
- redisCache.deleteObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
- redisCache.setCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
-
- //璁板綍鐢佃瘽鍙戦�佺姸鎬�
- setFailPreachForm(serviceSubtask2, "3", "鐢佃瘽鍙戦�佹垚鍔燂紙鎮h�呮寕鏂級", "4");
-
- //杩欎釜鏃跺�欏氨闇�瑕佽蛋琛ュ伩鏈哄埗浜嗭紝鍏堟殏瀹氳蛋鐭俊
-// getSmsCompensate(Long.valueOf(phoneCallReqYQVO.getTaskid()));
- return new PhoneCallBackYQVO();
- }
- }
- //瀹氫箟涓�涓垎鏁扮殑鍙橀噺
- Boolean aBoolean1 = redisCache.hasKey(phoneCallReqYQVO.getUuid() + "SCORE");
- if (!aBoolean1) redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", 0.0, 120, TimeUnit.MINUTES);
- PhoneCallBackYQVO phoneCallBackYQVO = new PhoneCallBackYQVO();
- //channel_create 閫氶亾鍒涘缓鐨勬椂鍊欙紝鍙互鎵ц涓�浜涘叾瀹冩搷浣滐紝璀鍙戜釜鐭俊涔嬬被鐨�; 鎴戜滑鐨勪笟鍔″彲浠ヤ笉鐢ㄧ PlayEventCallback 杩欎釜鏄挱鏀捐闊崇殑,鏆傛椂鐢ㄤ笉鍒� End_time()= -1鎴杗ull琛ㄧず褰撳墠鐨刟srtext涓嶆槸涓�鍙ュ畬鏁寸殑璇�
- if (phoneCallReqYQVO.getOperate().equals("channel_create")) {
- return phoneCallBackYQVO;
- }
- //PlayEventCallback 杩欎釜鏄挱鏀捐闊崇殑 playstart锛氭斁闊冲紑濮嬶紙闂鎾姤寮�濮嬶級 playstop锛� 鏀鹃煶缁撴潫锛堥棶棰樻挱鎶ョ粨鏉燂級
- if (phoneCallReqYQVO.getOperate().equals("PlayEventCallback")) {
- String cacheJSY = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "- jsy");
- if (phoneCallReqYQVO.getOperate().equals("PlayEventCallback") && phoneCallReqYQVO.getPlaystop() == false) {
- //鍒ゆ柇redis涓槸鍚︽湁缁撴潫璇�
- if (StringUtils.isEmpty(cacheJSY)) {
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop", false, 120, TimeUnit.MINUTES);
- log.error("PlayEventCallbackPlaystop鐨勫�间负-------锛歿}", false);
- }
- } else {
- //濡傛灉缁撴潫璇笉涓虹┖锛屽垯瑕佹寕鐢佃瘽浜�
- if (StringUtils.isNotEmpty(cacheJSY)) {
- Map<String, String> req = new HashMap<>();
- req.put("uuid", phoneCallReqYQVO.getUuid());
- req.put("caller", phoneCallReqYQVO.getPhone());
-// HttpUtils.sendPost(hangup, new Gson().toJson(req));
- HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));
- ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
- //璁板綍鐢佃瘽鍙戦�佺姸鎬�
- setFailPreachForm(serviceSubtask, "3", "閫氳瘽姝e父缁撴潫", "9");
- //鍒犻櫎缁撴潫璇殑缂撳瓨
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "- jsy");
- } else {
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop", true, 120, TimeUnit.MINUTES);
- log.error("-------PlayEventCallbackPlaystop鐨勫�间负锛歿}", true);
- }
- }
-
- return phoneCallBackYQVO;
- }
- //鑾峰彇鏀鹃煶鏄惁缁撴潫
- Object isPlayEventOverObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
- if (ObjectUtils.isNotEmpty(isPlayEventOverObj)) {
- Boolean isPlayEventOver = (Boolean) isPlayEventOverObj;
- if (!isPlayEventOver) {
- return phoneCallBackYQVO;
- }
- }
-
- //閫氳繃瀛愪换鍔D鑾峰彇鍒版ā鏉夸俊鎭�
- ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
- IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
- //鑾峰彇妯℃澘闂
- IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
- ivrTaskTemplateScript.setTemplateID(serviceSubtask.getTemplateid());
- List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
- //鑾峰彇闂ID 鍜� 搴忓彿
- String scriptId = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim());
- log.error("scriptId鏄灏戯細{}", scriptId);
- //褰撳墠棰樼殑淇℃伅
- IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = iIvrTaskTemplateScriptService.getTaskTempScriptInfoByid(Long.valueOf(scriptId));
- //鍒ゆ柇UUID鏄惁瀛樺湪
- Boolean aBoolean = redisCache.hasKey(phoneCallReqYQVO.getUuid());
- if (!aBoolean) {
- //缁欓潤榛樿缃竴涓粯璁ゆ鏁板湪redis涓�
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
- //濡傛灉涓嶅瓨鍦紝灏辨妸褰撳墠鐨刄UID鍋氫负key锛屾斁鍒板璞′腑鍘�
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid(), phoneCallReqYQVO, 120, TimeUnit.MINUTES);
- }
-
- if ("SilentCallback".equals(phoneCallReqYQVO.getOperate())) {
- //濡傛灉鏄潤榛樺洖璋�
- Integer num = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "noVoice");
- //鍒ゆ柇闈欓粯鍥炶皟娆℃暟鏄惁灏忎笌妯℃澘瑙勫畾鐨勬鏁�
- if (num < ivrTaskTemplate.getNoVoiceNum()) {
- //灏忎笌鐨勮瘽,灏辩户缁棶鎮h��
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- String scriptContent = ivrTaskTemplateScriptVO.getIvrtext();
- log.error("SilentCallback鐨勯棶棰樺唴瀹箂criptContent锛歿}", scriptContent);
- phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent));
- //灏嗛潤榛樻鏁板姞1
- Integer noVoiceNum = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "noVoice");
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "noVoice", noVoiceNum + 1, 120, TimeUnit.MINUTES);
- return phoneCallBackYQVO;
- } else {
- log.error("闈欓粯娆℃暟杈惧埌,鎸傛帀鐢佃瘽锛歿}", num);
- ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- ServiceSubtask ss = new ServiceSubtask();
- ss.setId(serviceSubtask.getId());
- ss.setSendstate(5L);
- ss.setRemark("鐢佃瘽闈欓粯");
- serviceSubtaskMapper.updateServiceSubtask(ss);
- //澶т笌绛変簬鐨勮瘽,鐩存帴鎸傛柇
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- phoneCallBackYQVO.setValue(serviceTask1.getJsy());
- //灏嗙粨鏋滃啓鍒癲etail涓�
- ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
- List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
- serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));
- serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
- serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
- serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
- saveQuestionAnswerPhone(serviceSubTaskDetailReq);
- //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
- Long id = serviceSubtask.getId();
- //鍏堟洿鏂颁竴涓嬪垎鏁�
- double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- serviceSubtask.setScore(String.valueOf(score));
- serviceSubtask.setFinishtime(new Date());
- serviceSubtask.setUpdateTime(new Date());
- log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆erviceSubtask鐨勫�间负锛歿}", serviceSubtask);
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "闈欓粯娆℃暟杈惧埌" + num + "娆�", "4");
-
- Map<String, String> map = delRedisValue(null, id.toString());
- if (ObjectUtils.isNotEmpty(map)) redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
- }
- return phoneCallBackYQVO;
- } else if ("AsrCallback".equals(phoneCallReqYQVO.getOperate()) && phoneCallReqYQVO.getEnd_time() != null && phoneCallReqYQVO.getEnd_time() != -1) {
- //鍋氫竴涓爣璇嗭紝鐢ㄦ潵鍦ㄩ�氳瘽璇︽儏鎺ュ彛閲岋紝鍒ゆ柇鏄惁鏈変汉鎺ョ數璇濓紙value=2,琛ㄧず鏈変汉鎺ワ級
- redisCache.deleteObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
- redisCache.setCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup", "2", 10, TimeUnit.MINUTES);
- // 鍏堝閫氳瘽杩涜閫氱敤搴撳尮閰嶄竴娆�
- String extemplateID = ivrTaskTemplate.getSubmoduleID();
- if (StringUtils.isNotEmpty(extemplateID)) {
- String[] split = extemplateID.split(",");
- List<String> list = Arrays.asList(split);
- List<Long> list1 = new ArrayList<>();
- for (String str : list) {
- list1.add(Long.valueOf(str));
- }
- List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);
- IvrLibaExtemplatescript les = null;
- for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {
- Matcher matcher = null;
- if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {
- Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());
- matcher = pattern.matcher(phoneCallReqYQVO.getAsrtext());
- }
-
- Matcher matcher2 = null;
- if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {
- Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
- matcher2 = pattern2.matcher(phoneCallReqYQVO.getAsrtext());
- }
- 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()) {
- //灏嗛�氱敤搴撳尮閰嶇殑锛屾斁鍒拌繑鍥炲�间腑
-// phoneCallBackYQVO.setValue(phoneCallBackYQVO.getValue() + ivrLibaExtemplatescript.getSwitchText());
- phoneCallBackYQVO.setCommonValue(ivrLibaExtemplatescript.getSwitchText());
- les = ivrLibaExtemplatescript;
- }
- break;
- }
- log.info("鏄惁闇�瑕佹寕鏈猴細{}", les);
- if (ObjectUtils.isNotEmpty(les)) {
- //瀵瑰尮閰嶇殑缁撴灉澶勭悊涓�涓�(鐪嬬湅鏄笉鏄渶瑕佹寕鏈�)
- if (les.getIsEnd() != null && les.getIsEnd() == 1) {
- ServiceSubtask ss = new ServiceSubtask();
- ss.setId(serviceSubtask.getId());
- ss.setSendstate(6L);
- ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
- serviceSubtaskMapper.updateServiceSubtask(ss);
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
- //鍙互鎸傛満浜�
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "noVoice");
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + les.getSwitchText());
- //灏嗙粨鏋滃啓杩沝etail琛�
- ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
- List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
- ivrTaskTemplateScriptVO.setExtemplateText(les.getSwitchText());
- serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));
- serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
- serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
- serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
- saveQuestionAnswerPhone(serviceSubTaskDetailReq);
- return phoneCallBackYQVO;
- }
- }
- }
-
- //濡傛灉鏄枃鏈洖璋�
- //鏍规嵁闂ID鑾峰彇璇ラ棶棰樼殑绫诲瀷
- if (ivrTaskTemplateScriptVO.getScriptType().equals("1")) {
- //鐢ㄦ潵鏍囪锛屾槸鍚︽湁鍖归厤涓婄殑
- Integer flag = 0;
- //1-AI璇嗗埆
- String url = configService.selectConfigByKey("sys.voice.match.ai.url", phoneCallReqYQVO.getOrgid());
-
- if (ObjectUtils.isNotEmpty(url)) {
- PhoneCallBackYQVO aiMatchResult = AiMatch(url, phoneCallReqYQVO, phoneCallBackYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate, ivrTaskTemplateScripts, scriptId, flag, phoneCallReqYQVO.getUuid());
- if (aiMatchResult != null) {
- return aiMatchResult;
- }
- } else {
- //鏄�夋嫨棰�
- for (int j = 0; j < ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size(); j++) {
- log.error("phoneCallReqYQVO.getAsrtext()鐨勫�间负锛歿}", phoneCallReqYQVO.getAsrtext());
- if (StringUtils.isEmpty(phoneCallReqYQVO.getAsrtext())) {
- continue;
- }
- boolean matchedFlag = false;
- //鍖呭惈
- Matcher matcher = null;
- if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex())) {
- Pattern pattern = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex());
- matcher = pattern.matcher(phoneCallReqYQVO.getAsrtext());
- }
- //涓嶅寘鍚�
- Matcher matcher2 = null;
- if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2())) {
- Pattern pattern2 = Pattern.compile(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());
- matcher2 = pattern2.matcher(phoneCallReqYQVO.getAsrtext());
- }
-
- 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).getTargetregex()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
- matchedFlag = true;
- }
- //璇存槑鍖归厤姝g‘浜�
- if (matchedFlag) {
- //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
- log.info("鍖归厤姝g‘浜嗗悧--------------");
- ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1);
- serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j));
-
- //灏嗘偅鑰呯殑鍥炵鍐欒繘service_subtask_detail涓�
- ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
- List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
- ivrTaskTemplateScriptVO.setQuestionResult(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getOptiondesc());
- ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
- //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
- if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
- String questionvoice = serviceSubtaskDetail.getQuestionvoice();
- String[] split = questionvoice.split("\\\\");
- if (split.length > 0) {
- String lastPart = split[split.length - 1];
- serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
- }
- }
- serviceSubtaskDetailList.add(serviceSubtaskDetail);
- serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
- serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
- serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
- saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-
- //鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓攄utyDeptCode鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
- if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getIsabnormal()) {
- ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
- //鐢╰askid銆乻ubid鍜宻criptid鍘昏幏鍙杁etailid
- ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();
- ssd.setSubId(serviceSubtask.getId());
- ssd.setTaskid(serviceSubtask.getTaskid());
- ssd.setScriptid(StringUtils.isNotEmpty(scriptId) ? Long.valueOf(scriptId) : null);
- List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(ssd);
- subtaskDetailTrace.setDetailId(CollectionUtils.isNotEmpty(serviceSubtaskDetails) ? serviceSubtaskDetails.get(0).getId() : null);
-
- subtaskDetailTrace.setSubId(serviceSubtask.getId());
- subtaskDetailTrace.setTaskid(serviceSubtask.getTaskid());
- subtaskDetailTrace.setTemplateid(ivrTaskTemplateScriptVO.getId());
- subtaskDetailTrace.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
- subtaskDetailTrace.setSwitchid(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getId());
- subtaskDetailTrace.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());
- subtaskDetailTrace.setQuestionvoice(null);
- subtaskDetailTrace.setCategoryname(ivrTaskTemplateScriptVO.getScriptAssortname());
- subtaskDetailTrace.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid());
- //鑾峰彇鎵�鏈夐�夐」
- String optionDescStr = Optional.ofNullable(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()).filter(list -> !list.isEmpty()).map(list -> list.stream().map(IvrTaskTemplateTargetoption::getOptiondesc).filter(Objects::nonNull).collect(Collectors.joining("&"))).orElse("");
- subtaskDetailTrace.setTargetid(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getId());
- subtaskDetailTrace.setTargetvalue(optionDescStr);
- subtaskDetailTrace.setMatchedtext(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getOptiondesc());
- subtaskDetailTrace.setValueType(serviceSubtaskDetails.get(0).getValueType());
- subtaskDetailTrace.setTemplateType(1);
-
- SvyLibScriptCategory svyLibScriptCategory = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryById(ivrTaskTemplateScriptVO.getScriptAssortid());
- subtaskDetailTrace.setType(svyLibScriptCategory.getType());
- subtaskDetailTrace.setScriptid(ivrTaskTemplateScriptVO.getId());
- subtaskDetailTrace.setAsrtext(phoneCallReqYQVO.getAsrtext());
- subtaskDetailTrace.setRecordpath(phoneCallReqYQVO.getRecordpath());
- subtaskDetailTrace.setPatid(serviceSubtask.getPatid());
- JSONObject patdescJson = new JSONObject();
- patdescJson.put("sendname", serviceSubtask.getSendname());
- patdescJson.put("phone", serviceSubtask.getPhone());
- patdescJson.put("age", serviceSubtask.getAge());
- patdescJson.put("sex", serviceSubtask.getSex() != null ? serviceSubtask.getSex() == 1 ? "鐢�" : "濂�" : null);
- subtaskDetailTrace.setPatdesc(patdescJson.toJSONString());
- subtaskDetailTrace.setTodeptcode(ivrTaskTemplateScriptVO.getDutyDeptCode());
- subtaskDetailTrace.setTodeptname(ivrTaskTemplateScriptVO.getDutyDeptName());
- subtaskDetailTrace.setOrgid(serviceSubtask.getOrgid());
- subtaskDetailTrace.setHandleFlag("0");
- subtaskDetailTrace.setGuid(phoneCallReqYQVO.getGuid());
- subtaskDetailTrace.setCreateTime(new Date());
- subtaskDetailTrace.setUpdateTime(new Date());
- subtaskDetailTrace.setOrgid(phoneCallReqYQVO.getOrgid());
- traceService.insertServiceSubtaskDetailTtrace(subtaskDetailTrace);
- }
-
- //鍒ゆ柇涓�涓嬶紝杩欎釜閫夐」缁撴灉鏄笉鏄繕鏈夌户缁棶涓嬪幓鐨勫繀瑕侊紝渚嬪閫夐」缁撴灉鏄埆浜轰笉鎯崇户缁洖绛旈棶棰橈紝灏辫缁撴潫鎺�
- if (ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getIsEnd() == 1) {
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "noVoice");
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
- return phoneCallBackYQVO;
- }
-
- flag = 1;
- //灏嗗綋鍓嶅墠鐨勬挱鎶ョ姸鎬佸垹闄わ紝缁欎笅涓�棰樿浣�
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-// //鑾峰彇涓嬩竴棰�
- log.error("鑾峰彇涓嬩竴棰樼殑淇℃伅锛歿}", ivrTaskTemplateScriptVO);
- if (ivrTaskTemplateScriptVO.getBranchFlag().equals("1") || ivrTaskTemplateScriptVO.getBranchFlag().equals("0") && ivrTaskTemplateScriptVO.getNextScriptno() != null && ivrTaskTemplateScriptVO.getNextScriptno() != 0) {
- Long nextQuestion = null;
- if (ivrTaskTemplateScriptVO.getBranchFlag().equals("1")) {
- nextQuestion = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getNextQuestion();
- //鏇存柊鍒嗘暟
- double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- score = BigDecimal.valueOf(score).add(new BigDecimal(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore())).doubleValue();
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score);
- } else {
- nextQuestion = ivrTaskTemplateScriptVO.getNextScriptno();
- //鏇存柊鍒嗘暟
- Object obj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- Double score = (obj == null ? new Double(0.00) : new Double(((Double) obj).doubleValue()));
- score = BigDecimal.valueOf(score).add(new BigDecimal(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getScore())).doubleValue();
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
- }
- if (nextQuestion == null || nextQuestion == 0L) {
- //濡傛灉涓嬩竴棰樹负绌猴紝鎴栬�呬负0锛屽垯鎸傛満
- ServiceSubtask ss = new ServiceSubtask();
- ss.setId(serviceSubtask.getId());
- ss.setSendstate(6L);
- ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
- serviceSubtaskMapper.updateServiceSubtask(ss);
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "noVoice");
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());
- //灏嗙粨鏋滃啓杩沝etail琛�
- ServiceSubTaskDetailReq ssdReq = new ServiceSubTaskDetailReq();
- List<ServiceSubtaskDetail> serviceSubtaskDetailList2 = new ArrayList<>();
- serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate));
- serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList2);
- ssdReq.setGuid(phoneCallReqYQVO.getGuid());
- ssdReq.setOrgid(phoneCallReqYQVO.getOrgid());
- saveQuestionAnswerPhone(ssdReq);
- return phoneCallBackYQVO;
- }
-
- for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
- if (script.getSort() == nextQuestion.intValue()) {
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();
- log.error("涓嬩竴棰橀棶棰橈細{}", scriptContent);
- log.error("涓嬩竴棰樼殑瀛愪换鍔℃槸锛歿}", serviceSubtask);
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
- //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀�
- redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);
- //鍒犻櫎鏃犲搷搴�
- redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
- }
- }
- } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
- ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- //鏇存柊涓�涓嬪垎鏁�
- double score = 0.0;
- Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- if (ObjectUtils.isNotEmpty(scoreObj)) score = (double) scoreObj;
- serviceSubtask.setScore(String.valueOf(score));
- serviceSubtask.setFinishtime(new Date());
- serviceSubtask.setSendstate(6L);
- serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
- //璁剧疆缁撴潫璇�
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
- Long id = serviceSubtask.getId();
- Map<String, String> map = delRedisValue(null, id.toString());
- log.error("map鐨勫�间负锛歿}", map);
- if (ObjectUtils.isNotEmpty(map))
- redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
-// return phoneCallBackYQVO;
-
- }
- } else {
- log.info("娌℃湁鍖归厤涓�----------------------------");
- //flag=0,璇存槑娌� 鍖归厤涓婏紝涔熻鎶婃偅鑰呰鐨勮瘽璁板綍涓嬫潵
- if (j == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size() - 1 && flag == 0) {
- ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
- List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
- ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
- //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
- if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
- String questionvoice = serviceSubtaskDetail.getQuestionvoice();
- String[] split = questionvoice.split("\\\\");
- if (split.length > 0) {
- String lastPart = split[split.length - 1];
- serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
- }
- }
- serviceSubtaskDetailList.add(serviceSubtaskDetail);
- //濡傛灉娌℃湁 鍖归厤涓婏紝杩欎釜蹇呴』涓簄ull
- serviceSubtaskDetailList.get(0).setMatchedtext("");
- serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
- serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
- serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
- saveQuestionAnswerPhone(serviceSubTaskDetailReq);
- }
- continue;
- }
- }
- }
- //閮芥病鏈夊尮閰嶅埌
- if (StringUtils.isEmpty(phoneCallBackYQVO.getValue())) {
- log.info("閮芥病鏈夊尮閰嶅埌-------------------------");
- Integer count = null;
- Object countObj = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
- if (ObjectUtils.isNotEmpty(countObj)) count = (Integer) countObj;
- if (count != null && count >= ivrTaskTemplate.getMateNum()) {
- //濡傛灉count宸茬粡澶т簬鎴栫瓑浜庢病鏈夊尮閰嶆鏁�
- if (ivrTaskTemplateScriptVO.getBranchFlag().equals("0") && ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getBranchFlag().equals("0") && ivrTaskTemplateScriptVO.getNextScriptno() == 0 || ivrTaskTemplateScriptVO.getBranchFlag().equals("1") && ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getBranchFlag().equals("1") && ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
- //濡傛灉鏄渶鍚庝竴閬撻锛屾垨鑰呮病鏈変笅涓�棰樹簡锛屽氨鐩存帴鎸傛満
- ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- if (StringUtils.isNotEmpty(phoneCallBackYQVO.getValue()))
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + phoneCallBackYQVO.getValue() + serviceTask1.getJsy());
- else phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
-
- //鏇存柊涓�涓嬪垎鏁�
- Double score = null;
- Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
- serviceSubtask.setScore(String.valueOf(score));
- serviceSubtask.setFinishtime(new Date());
- serviceSubtask.setSendstate(6L);
- serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
- //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
- Long id = serviceSubtask.getId();
- Map<String, String> map = delRedisValue(null, id.toString());
- if (ObjectUtils.isNotEmpty(map)) {
- redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- }
-// return phoneCallBackYQVO;
- } else {
- //鏍规嵁ivrTaskTemplateScriptVO.getNextScriptno()鑾峰彇涓嬩竴棰樿繘琛屾彁闂�
- for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
- if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
- //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀�
- redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);
-
- //鏇存柊涓�涓嬪垎鏁�
- Double score = null;
- Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
- score = BigDecimal.valueOf(score).add(new BigDecimal(script.getScore())).doubleValue();
-
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
- }
- }
- }
- } else {
- if (count == null)
- redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid(), 1, 120, TimeUnit.MINUTES);
- else
- redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid(), count + 1, 120, TimeUnit.MINUTES);
-
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent()));
- }
- }
-
- } else {
- //涓嶆槸閫夋嫨棰�,鐩存帴璁板綍绛旀锛屽皢缁撴灉鍐欏埌detail涓�
- ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
- List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
- ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
- //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
- if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
- String questionvoice = serviceSubtaskDetail.getQuestionvoice();
- String[] split = questionvoice.split("\\\\");
- if (split.length > 0) {
- String lastPart = split[split.length - 1];
- serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
- }
- }
- serviceSubtaskDetailList.add(serviceSubtaskDetail);
- serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
- serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
- serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
- saveQuestionAnswerPhone(serviceSubTaskDetailReq);
- // String xh = idSort.split("-")[1];
-
- //濡傛灉閫夐」鍒嗘敮涓�1鐨勮瘽锛屽垯闇�瑕佹牴鎹棶棰樹笂鐨刵extScriptno杩涜璺宠浆
- //闂瓟棰樻病鏈夎烦杞�
- if (ivrTaskTemplateScriptVO.getNextScriptno() != null && ivrTaskTemplateScriptVO.getNextScriptno() != 0) {
- for (IvrTaskTemplateScript ivrTaskTemplateScript1 : ivrTaskTemplateScripts) {
- if (ivrTaskTemplateScriptVO.getNextScriptno().intValue() == ivrTaskTemplateScript1.getSort()) {
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- String scriptContent = StringUtils.isNotEmpty(ivrTaskTemplateScript1.getIvrtext()) ? ivrTaskTemplateScript1.getIvrtext() : ivrTaskTemplateScript1.getScriptContent();
-
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
- redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
- redisCache.setCacheObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone(), ivrTaskTemplateScript1.getId().toString());
-
- //鏇存柊涓�涓嬪垎鏁�
- Double score = null;
- Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
- score = BigDecimal.valueOf(score).add(new BigDecimal(ivrTaskTemplateScriptVO.getScore())).doubleValue();
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
-
- }
- }
- } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
- //娌℃湁涓嬩竴棰樹簡锛屽氨缁撴潫浜�
- ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
-
- //鏇存柊涓�涓嬪垎鏁�
- Double score = null;
- Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
- serviceSubtask.setScore(String.valueOf(score));
- serviceSubtask.setFinishtime(new Date());
- serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
- serviceSubtask.setSendstate(6L);
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
- //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
- Long id = serviceSubtask.getId();
- Map<String, String> map = delRedisValue(null, id.toString());
- redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask1.getJsy(), 120, TimeUnit.MINUTES);
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- }
- }
- }
- log.error("phoneCallBackYQVO鐨勮繑鍥炲�兼槸锛歿}", phoneCallBackYQVO);
- return phoneCallBackYQVO;
- }
-
- private String getObject(ServiceSubtask serviceSubtask, String scriptContent) {
- Map<String, Map<String, String>> param = getParam(serviceSubtask.getTaskid());
- for (Map<String, String> map : param.values()) {
- for (String key : map.keySet()) {
- scriptContent = scriptContent.replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : "");
- }
- }
- if (StringUtils.isEmpty(scriptContent)) {
- return scriptContent;
- }
- scriptContent = scriptContent.replace("${name}", StringUtils.isNotEmpty(serviceSubtask.getSendname()) ? serviceSubtask.getSendname() : "");
- scriptContent = scriptContent.replace("${dzz}", StringUtils.isNotEmpty(serviceSubtask.getAddr()) ? serviceSubtask.getAddr() : "");
- scriptContent = scriptContent.replace("${phone}", StringUtils.isNotEmpty(serviceSubtask.getTelcode()) ? serviceSubtask.getTelcode() : "");
-
- return scriptContent;
- }
-
- /**
- * 鑾峰彇浠诲姟閲岀殑閫氶厤绗�
- *
- * @param taskId
- * @return
- */
- private Map<String, Map<String, String>> getParam(Long taskId) {
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(taskId);
- ObjectMapper objectMapper = new ObjectMapper();
- Map<String, Map<String, String>> serviceTaskMap = null;
- try {
- serviceTaskMap = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
- } catch (JsonProcessingException e) {
- e.printStackTrace();
- }
- return serviceTaskMap;
- }
-
- private Map<String, String> delRedisValue(String cache, String id) {
- id = "," + id + ",";
- String val = "";
- String cacheName = "";
- Map<String, String> map = new HashMap<>();
-
- if (StringUtils.isNotEmpty(cache)) {
- val = redisCache.getCacheObject(cache);
- if (!StringUtils.isEmpty(val)) {
- if (val.contains(id)) {
- val = val.replaceAll(id, "");
- }
- }
- map.put("val", val);
- map.put("cacheName", cache);
- return map;
- }
-
- for (int i = 0; i < 6; i++) {
- val = redisCache.getCacheObject("cache-0" + i);
- if (!StringUtils.isEmpty(val)) {
- if (val.contains(id)) {
- val = val.replaceAll(id, "");
- map.put("val", val);
- map.put("cacheName", "cache-0" + i);
- }
- }
- }
- return map;
- }
-
- /**
- * 闆ㄧ划浠诲姟鎷夊彇
- *
- * @return
- */
- @Override
- public List<PullTaskVO> taskPull() {
- //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖
- List<PullTaskVO> pullTaskVOList = new ArrayList<>();
- List<String> cacheList = new ArrayList<>();
- ListOperations<String, String> listOps = redisTemplate.opsForList();
- //蹇呴』绛塧che-exist鍏ㄩ儴鎵撳畬鎵嶈兘鎷夊彇涓嬩竴鎵癸紙涓昏鏄�曟墍鏈夌殑鏁版嵁閮藉爢鍦ㄧ數璇濈殑缂撳瓨閲岋紝鍦ㄨ瀹氱殑鏃堕棿鎵撲笉瀹岋級
-// long existSize = listOps.size("cache-exist");
-// if (existSize > 0) return pullTaskVOList;
- int count = 0;
- long size = listOps.size("cache-0");
- log.info("---------鎵撶數璇濅箣鍓嶇紦瀛樹腑鐨勬暟鎹噺锛歿}", size);
- if (size > 0) {
- //phoneCount() 閫氳繃缁欏嚭鐨勬瘡涓皬鏃堕渶瑕佹墦鍑虹殑鐢佃瘽閲忥紝绠楀嚭鍒版櫄涓�8鐐逛竴鐐硅兘鎵撳嚭澶氬皯涓數璇濓紝鑾峰彇鍒版�婚噺
- //濡傛灉闇�瑕佺珛鍗虫墽琛岀殑鏁版嵁閲忓ぇ浜庝竴澶╄鎵ц鐨勪笂闄愶紝鍒欏彧鍙栦笂闄愮殑鏁伴噺锛屽叾瀹冪殑鍒欐斁鍥瀝edis涓�
- count = Math.min(phoneCount(), (int) size);
- if (count != 0) {
- cacheList = listOps.range("cache-0", 0, count - 1);
- } else {
- return null;
- }
- }
-
- log.info("浠诲姟鎷夊彇cache-0鐨勫�兼槸澶氬皯锛歿}", cacheList);
- // cache-0涓虹珛鍗冲彂璧风殑,鍏跺畠鐨勫厛鎺ㄨ繜
- if (!CollectionUtils.isEmpty(cacheList)) {
- pullTaskVOList = getPullTaskList(cacheList, "cache-0");
- // 鍒犻櫎宸插鐞嗙殑鏁版嵁
- listOps.trim("cache-0", count, -1);
- log.info("鎵撶數璇濅箣鍚庣紦瀛樹腑鐨勬暟鎹噺---------锛歿}", listOps.size("cache-0"));
- } else {
- for (int i = 1; i < 6; i++) {
- //鍙栧嚭浠巆ache-1 鍒� cache-5鐨勭涓�涓瓙浠诲姟淇℃伅
- try {
- Long size1 = listOps.size("cache-" + i);
- if (size1 == null || size1 == 0) continue;
- int count1 = Math.min(phoneCount(), size1.intValue());
- List<String> value = listOps.range("cache-0" + i, 0, count1 - 1);
-
- List<PullTaskVO> pullTaskVOList2 = getPullTaskList(value, "cache-" + i);
- if (CollectionUtils.isNotEmpty(pullTaskVOList2) && pullTaskVOList2.size() > 0) {
- pullTaskVOList.addAll(pullTaskVOList2);
- }
- //灏嗗鐞嗚繃鐨勬暟鎹垹闄�
- listOps.trim("cache-0" + i, count1, -1);
- } catch (Exception e) {
-// log.error("鐪嬬潃鐑�");
- }
- }
- }
- //existList鐢ㄦ潵璁板綍鎺ヤ笅鏉ラ渶瑕佹墽琛岀殑瀛愪换鍔D
-// List<String> existList = new ArrayList<>();
- if (CollectionUtils.isNotEmpty(pullTaskVOList)) {
- //缁欏洖璋冨弬鏁拌祴鍊�
- for (PullTaskVO pullTaskVO : pullTaskVOList) {
-// existList.add(pullTaskVO.getTaskid());
- pullTaskVO.setAsrcallback(ASRCallBackPath);
- }
- }
-// if (existList.size() != 0) redisCache.setCacheListRight("cache-exist", existList);
- log.info("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null);
- return pullTaskVOList;
- }
-
- private List<PullTaskVO> getPullTaskList(List<String> subIds, String cacheName) {
- log.error("浠诲姟鎷夊彇subIds鐨勫�兼槸澶氬皯锛歿}", subIds);
- //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖
- List<PullTaskVO> pullTaskVOList = new ArrayList<>();
- //newValue0鐢ㄤ簬淇濆瓨娌℃湁澶勭悊鐨勫瓙 浠诲姟
-// String newValue0 = "";
- List<String> newValue0 = new ArrayList<>();
- //鏍规嵁,鑾峰彇瀛愪换鍔$殑ID
-// String[] split = subIds.split(",,");
- for (int i = 0; i < subIds.size(); i++) {
- if (cacheName.equals("cache-0") && i < subIds.size() || !cacheName.equals("cache-0") && i < 1) {
- PullTaskVO pullTaskVO = new PullTaskVO();
- String subId = subIds.get(i).trim();
- ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(subId));
- if (ObjectUtils.isEmpty(serviceSubtask)) {
- log.error("璇ubId鏈夐棶棰橈紝鍦ㄨ〃涓煡璇笉鍒帮細{}", subId);
- continue;
- }
- if (StringUtils.isEmpty(serviceSubtask.getPhone())) {
- serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
- serviceSubtask.setSendstate(4L);
- serviceSubtask.setResult("error");
-// serviceSubtask.setFinishtime(new Date());
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- continue;
- }
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
- if (ObjectUtils.isEmpty(ivrTaskTemplate)) continue;
- //閫氳繃浠诲姟妯℃澘涓殑"绗竴娆¢棶棰樼紪鍙�"鑾峰彇绗竴涓棶棰�;
- IvrTaskTemplateScript ivrTaskTemplateScript = null;
- IvrTaskTemplateScript ivrTaskTemplateScript1 = new IvrTaskTemplateScript();
- ivrTaskTemplateScript1.setTemplateID(ivrTaskTemplate.getId());
- List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript1);
- aa:
- for (IvrTaskTemplateScript ivrTaskTemplateScript2 : ivrTaskTemplateScripts) {
- if (ivrTaskTemplate.getFirstQuestionNum() == Long.valueOf(ivrTaskTemplateScript2.getSort())) {
- ivrTaskTemplateScript = ivrTaskTemplateScript2;
- break aa;
- }
- }
- //濡傛灉ivrTaskTemplateScript涓虹┖锛屼篃灏辨病鏈夊線涓嬫墽琛岀殑蹇呰浜�
- if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) {
- log.error("---------杩欎釜ivrTaskTemplate.getId()鐨勯棶棰樹负绌猴細{}", ivrTaskTemplate.getId());
- continue;
- }
- //鑾峰彇閫氶厤绗﹀尮閰嶈繃鍚庣殑闂
- String scriptContent = ivrTaskTemplateScript.getIvrtext();
- if (StringUtils.isEmpty(scriptContent)) scriptContent = ivrTaskTemplateScript.getScriptContent();
- String scrContent = getObject(serviceSubtask, scriptContent);
- String kcb = serviceTask.getKcb() + "," + scrContent;
-
- //灏佽杩斿洖鏁版嵁
- //taskId = 瀛愪换鍔D + 闂ID +闂搴忓彿
- pullTaskVO.setTaskid(subId);
- pullTaskVO.setAppkey(app_key_yq);
- pullTaskVO.setSections(LocalTime.now().format(DateTimeFormatter.ofPattern("hh:mm")) + "-" + LocalTime.now().plusMinutes(1).format(DateTimeFormatter.ofPattern("hh:mm")));
- pullTaskVO.setPhones(serviceSubtask.getPhone());
- pullTaskVO.setPrologue(kcb);
- if (cacheName.equals("cache-0")) pullTaskVO.setDisplayNo("2");
- else pullTaskVO.setDisplayNo("2");
- pullTaskVOList.add(pullTaskVO);
- redisCache.setCacheObject(subId.trim() + "-" + serviceSubtask.getPhone().trim(), ivrTaskTemplateScript.getId().toString(), 120, TimeUnit.MINUTES);
- } else {
- newValue0.add(subIds.get(i));
- redisCache.setCacheListRight(cacheName, newValue0);
- }
- }
-
- return pullTaskVOList;
- }
-
- @Override
- public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
- int i = 0;
- log.info("淇濆瓨鐢佃瘽鍥炶皟鍐呭 saveQuestionAnswerPhone锛歿}", serviceSubTaskDetailReq);
- if (StringUtils.isNotEmpty(serviceSubTaskDetailReq.getParam1())) {
- RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
- Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam1(), pri_key));
- Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam2(), pri_key));
- ServiceSubtaskEntity ivrTaskSingle = new ServiceSubtaskEntity();
- ivrTaskSingle.setTaskid(tid);
- ivrTaskSingle.setPatid(pid);
- List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ivrTaskSingle);
- if (CollectionUtils.isEmpty(selectServiceSubtaskList) || selectServiceSubtaskList.size() == 0) {
- log.error("鎶ラ敊浜嗭紝selectServiceSubtaskList鏁版嵁涓虹┖浜嗭細{}", ivrTaskSingle);
- return 0;
- }
- //闅忚
- for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
- if (serviceSubtaskDetail.getScriptid() != null) {
- //璁剧疆涓�涓嬮棶棰樺垎绫�
- IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskDetail.getScriptid());
- if (ivrTaskTemplateScript != null)
- serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getScriptAssortid());
- serviceSubtaskDetail.setIsMydException(ivrTaskTemplateScript.getIsMydException());
- serviceSubtaskDetail.setDimension(ivrTaskTemplateScript.getDimension());
- }
-
- serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());
-// serviceSubtaskDetail.setId(UUID.randomUUID().toString());
- serviceSubtaskDetail.setCreateTime(new Date());
- serviceSubtaskDetail.setGuid(selectServiceSubtaskList.get(0).getGuid());
- serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());
- serviceSubtaskDetail.setGuid(serviceSubTaskDetailReq.getGuid());
- i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
- }
- } else {
- if (serviceSubTaskDetailReq != null && CollectionUtils.isNotEmpty(serviceSubTaskDetailReq.getServiceSubtaskDetailList())) {
- for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
- if (serviceSubtaskDetail.getScriptid() != null) {
- //璁剧疆涓�涓嬮棶棰樺垎绫�
- IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskDetail.getScriptid());
- if (ivrTaskTemplateScript != null)
- serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getScriptAssortid());
- }
- serviceSubtaskDetail.setCreateTime(new Date());
- serviceSubtaskDetail.setGuid(serviceSubTaskDetailReq.getGuid());
- serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());
- //鍏堟牴鎹瓙浠诲姟id,浠诲姟ID鍜岄棶棰樺簭鍙锋煡璇竴涓嬶紝璇ラ棶棰樻槸鍚﹀凡缁忔湁鍊硷紝濡傛灉鏈夊�硷紝鐩存帴淇敼锛屽鏋滀负绌猴紝鐩存帴鎻掑叆
- ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();
- ssd.setSubId(serviceSubtaskDetail.getSubId());
- ssd.setTaskid(serviceSubtaskDetail.getTaskid());
- ssd.setScriptid(serviceSubtaskDetail.getScriptid());
- if (serviceSubtaskDetail.getSubId() != null) {
- ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskDetail.getSubId());
- ssd.setGuid(serviceSubtask.getGuid());
- ssd.setOrgid(serviceSubtask.getOrgid());
- }
- List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(ssd);
- if (CollectionUtils.isNotEmpty(serviceSubtaskDetails) && StringUtils.isNotEmpty(serviceSubtaskDetails.get(0).getMatchedtext())) {
- serviceSubtaskDetail.setId(serviceSubtaskDetails.get(0).getId());
- serviceSubtaskDetailMapper.updateServiceSubtaskDetail(serviceSubtaskDetail);
- } else {
- if (serviceSubtaskDetail.getSubId() != null) {
- ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskDetail.getSubId());
- serviceSubtaskDetail.setGuid(serviceSubtask.getGuid());
- serviceSubtaskDetail.setOrgid(serviceSubtask.getOrgid());
- }
- i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
- }
- }
- }
- }
- return i;
- }
-
- @Override
- public Integer recordAccept(PhoneCallRecordVO phoneCallRecordVO) {
- Object cacheObject = redisCache.getCacheObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
- if (phoneCallRecordVO.getHangup_cause().equals("NO_USER_RESPONSE") || ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("1")) {
- //鏃犱汉鎺ュ惉
- //璁板綍鐢佃瘽鍙戦�佺姸鎬�
- ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallRecordVO.getTaskid()));
- setFailPreachForm(serviceSubtask, "3", "鏃犱汉鎺ュ惉", "4");
- //杩涜鐭俊琛ュ伩
-// getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid()));
- redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
-// redisCache.removeElementFromList("cache-exist", phoneCallRecordVO.getTaskid());
- } else if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("2")) {
-// if (phoneCallRecordVO.getAnswered() != null && phoneCallRecordVO.getAnswered() == true) {
- log.error("鏈変汉鎺ョ數璇濅簡锛屽苟涓斿畬浜�");
- //璇存槑鏈変汉鎺ヤ簡
- int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1; // 鍔�1鏄烦杩�/绗﹀彿
- int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/");
- String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);
- ServiceSubtask serviceSubtask = new ServiceSubtask();
- serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
- serviceSubtask.setSendstate(6L);
- serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));
- serviceSubtask.setFinishtime(new Date());
- serviceSubtask.setUpdateTime(new Date());
- log.error("鐢佃瘽鎷ㄦ墦宸插畬鎴恠erviceSubtask鐨勫�间负:{}", serviceSubtask);
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- setFailPreachForm(serviceSubtask, StringUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) ? serviceSubtask.getCurrentPreachform() : "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
- //涓嬭浇鏂囦欢
- ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
- redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
- } else {
- //鎮h�呮嫆缁濋殢璁�
- //鍏堟妸璇ubId浠巆ache_exist涓墧闄わ紝鍙鏈夊洖璋冨氨鍓旈櫎锛堢洰鐨勬槸锛屽敖蹇cache-exist涓虹┖锛屽幓缂撳瓨涓嬩竴鎵硅鎵撶殑鐢佃瘽;杩欓噷鍓旈櫎涓嶅奖鍝嶇數璇濈殑姝e父涓氬姟锛�
-// redisCache.removeElementFromList("cache-exist", phoneCallRecordVO.getTaskid());
- ServiceSubtask serviceSubtask = new ServiceSubtask();
- serviceSubtask.setRemark("鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�");
- serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));
- serviceSubtask.setSendstate(6L);
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-// int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1; // 鍔�1鏄烦杩�/绗﹀彿
-// int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/");
-// String result = phoneCallRecordVO.getRecord_path().substring(startIndex, endIndex);
- //涓嬭浇鏂囦欢
-// ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
- redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
- ServiceSubtask ss = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtask.getId());
- setFailPreachForm(ss, StringUtils.isNotEmpty(ss.getCurrentPreachform()) ? ss.getCurrentPreachform() : "3", "鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�", "5");
- }
-
- return 1;
}
@Override
@@ -4078,163 +2838,6 @@
return serviceSubtaskStatistic;
}
- 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 IvrTaskTemplateScriptVOList.get(j);
- }
- }
- return null;
- }
-
- private ServiceSubtaskDetail getServiceSubtaskDetail(PhoneCallReqYQVO phoneCallReqYQVO, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask, IvrTaskTemplate ivrTaskTemplate) {
- log.info("-----------------phoneCallReqYQVO鐨勫�间负锛歿}", phoneCallReqYQVO);
-
- ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
- serviceSubtaskDetail.setSubId(Long.valueOf(phoneCallReqYQVO.getTaskid()));
- ServiceSubtask serviceSubtask1 = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
- if (serviceSubtask1 != null) {
- serviceSubtaskDetail.setTaskid(serviceSubtask1.getTaskid());
- serviceSubtaskDetail.setPatid(serviceSubtask1.getPatid());
- }
- serviceSubtaskDetail.setTargetid(ivrTaskTemplateScriptVO.getTargetid() != null ? ivrTaskTemplateScriptVO.getTargetid().intValue() : null);
- serviceSubtaskDetail.setUuid(phoneCallReqYQVO.getUuid());
- serviceSubtaskDetail.setPhone(phoneCallReqYQVO.getPhone());
- serviceSubtaskDetail.setOperate(serviceSubtask.getCreateBy());
- serviceSubtaskDetail.setDisplayno(phoneCallReqYQVO.getPhone());
- serviceSubtaskDetail.setAssigntime(System.currentTimeMillis());
- serviceSubtaskDetail.setStarttime(System.currentTimeMillis());
- serviceSubtaskDetail.setAnswertime(System.currentTimeMillis());
- serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid());
- serviceSubtaskDetail.setAsrtext("鏃犲簲绛�");
- if (StringUtils.isNotEmpty(phoneCallReqYQVO.getAsrtext()))
- serviceSubtaskDetail.setAsrtext(phoneCallReqYQVO.getAsrtext());
- serviceSubtaskDetail.setBeginTime(System.currentTimeMillis());
- serviceSubtaskDetail.setEndTime(System.currentTimeMillis());
- serviceSubtaskDetail.setSentEnd(1L);
- serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString());
- serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
- serviceSubtaskDetail.setQuestiontext(StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent());
- serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath());
- serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType());
- serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());
- serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText());
- serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId());
- serviceSubtaskDetail.setLibTemplateid(serviceSubtask.getLibtemplateid() != null ? serviceSubtask.getLibtemplateid().intValue() : null);
-
- int i = 1;
- for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {
- if (ivrTaskTemplateTargetoption.getIsUserOperation() == 1) {
- serviceSubtaskDetail.setMatchedtext(ivrTaskTemplateTargetoption.getTargetvalue());
- serviceSubtaskDetail.setScore(ivrTaskTemplateTargetoption.getScore() != null ? ivrTaskTemplateTargetoption.getScore().toString() : "0");
- }
- serviceSubtaskDetail.setTargetvalue(StringUtils.isEmpty(serviceSubtaskDetail.getTargetvalue()) ? ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetail.getTargetvalue() + "&" + ivrTaskTemplateTargetoption.getTargetvalue());
- }
-
- serviceSubtaskDetail.setAddtime(new Date());
- serviceSubtaskDetail.setIsupload(0L);
- serviceSubtaskDetail.setUploadTime(new Date());
- serviceSubtaskDetail.setDelFlag("0");
- serviceSubtaskDetail.setValueType(ivrTaskTemplateScriptVO.getScriptType());
- return serviceSubtaskDetail;
- }
-
- /**
- * 鐢佃瘽鐨勮ˉ鍋挎柟娉曪紙鑰侊級
- *
- * @param subTaskId
- */
- private void getSmsCompensate(Long subTaskId) {
- ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(subTaskId);
- RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
- String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);
- String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
- String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
- ServiceOutPath serviceOutPath = new ServiceOutPath();
- serviceOutPath.setParam1(taskId);
- serviceOutPath.setParam2(patid);
- serviceOutPath.setCreateTime(new Date());
- serviceOutPath.setParam6(subId);
- serviceOutPath.setOrgid(serviceSubtask.getOrgid());
- iServiceOutPathService.insertServiceOutPath(serviceOutPath);
- //杞垚16杩涘埗
- String format = String.format("%03X", serviceOutPath.getId());
- String url = "";
- SendMagParam sendMagParam = new SendMagParam();
- url = localIP + ":" + req_path + "/sf?p=" + format;
- sendMagParam.setUrl(url);
- sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
- serviceOutPath.setRadix(format);
- serviceOutPath.setUpdateTime(new Date());
- serviceOutPath.setUrl(url);
- iServiceOutPathService.updateServiceOutPath(serviceOutPath);
- //鐭俊鍙戦�佸凡鏀跺彛鍒� ruoyi-message 妯″潡锛涗笌鍘熷疄鐜颁竴鑷达細涓嶅垽鏂彂閫佺粨鏋�
- smsSenderFactory.send(active, SmsSendRequest.of(serviceSubtask.getPhone(), sendMagParam.getContent(), serviceSubtask.getOrgid()));
- redisCache.setCacheObject(subTaskId + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
- if (StringUtils.isNotEmpty(serviceSubtask.getRemark()))
- serviceSubtask.setRemark("鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔�");
- else serviceSubtask.setRemark("鐭俊琛ュ伩鍙戦�佹垚鍔�");
- serviceSubtask.setSendstate(3L);
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-
- //闇�瑕佸湪servicePreachform閲岃褰曚竴涓嬬煭淇$姸鎬�
- ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
- serviceSubtaskPreachform.setPreachform("4");
- serviceSubtaskPreachform.setSubid(subTaskId);
- serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
- serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
- List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
- if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
- ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
- serviceSubtaskPreachform1.setSendstate("9");
- serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
- } else if (CollectionUtils.isEmpty(serviceSubtaskPreachforms)) {
- //濡傛灉涓虹┖鐨勮瘽锛岃鏄庣敤鎴锋病鏈夐�夌煭淇″彂閫佹柟寮忥紝杩欎釜鏃跺�欓渶瑕佸己鍒舵柊澧炰竴鏉�
- //鑾峰彇sort鐨勬渶澶у��
- ServiceSubtaskPreachform ssp = new ServiceSubtaskPreachform();
- ssp.setSubid(subTaskId);
- ssp.setTaskid(serviceSubtask.getTaskid());
- ssp.setOrgid(serviceSubtask.getOrgid());
- List<ServiceSubtaskPreachform> sspf2 = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(ssp);
-
- serviceSubtaskPreachform.setSort(0L);
- if (CollectionUtils.isNotEmpty(sspf2)) {
- serviceSubtaskPreachform.setSort(Long.valueOf(sspf2.size()));
- }
- serviceSubtaskPreachform.setSendstate("2");
- serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
- }
-
- }
-
- //閫氳繃褰撳墠鏃堕棿锛屾媺鍙栫數璇濇�绘暟
- private Integer phoneCount() {
- // 褰撳墠鏃堕棿
- LocalTime currentTime = LocalTime.now();
- // 鐩爣鏃堕棿锛堟櫄涓� 8 鐐癸級
- LocalTime targetTime = LocalTime.of(phoneEndHour, 0);
-// // 璁$畻褰撳墠鏃堕棿鍒扮洰鏍囨椂闂寸殑鏃堕暱
-// Duration duration = Duration.between(currentTime, targetTime);
-// // 鑾峰彇鍓╀綑鏃堕棿鐨勫皬鏃舵暟
-// long remainingHours = 0;
-// long remainingMinutes = duration.toMinutes();
-// //濡傛灉瓒呰繃8鐐�,灏辫缃负0
-// //璺濈缁撴潫鏃堕棿灏忎簬20鍒嗛挓锛屽氨涓嶆媺鍙栦簡
-// if (remainingMinutes < 20) remainingHours = 0;
-// else if (remainingMinutes < 60 && remainingMinutes > 20) remainingHours = 1;
-// else if (remainingMinutes > 60) remainingHours = remainingMinutes / 60;
-// // 璁$畻鍓╀綑鍙互鎵撶殑鐢佃瘽鏁�
-// int remainingCalls = (int) (remainingHours * phoneUpEveryHour);
-// return remainingCalls;
- if (currentTime.isBefore(targetTime)) {
- //濡傛灉褰撳墠鏃堕棿杩樺湪鎴鏃堕棿鍐咃紝鍒欑户缁彂
- return phoneUpEveryHour;
- }
- return 0;
- }
-
public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq) {
return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);
}
@@ -4681,83 +3284,6 @@
}
/**
- * @param serviceSubtask
- * @param preachform
- * @param remark
- * @param failSendstate
- * @return
- */
- public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
- log.info("setFailPreachForm 闅忚娴佺▼澶勭悊 serviceSubtask:{}, preachform:{}, remark:{}, failSendstate:{}", serviceSubtask, preachform, remark, failSendstate);
- //灏嗙姸鎬佽缃负澶辫触
- ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
- serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
- serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
- serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
- //鑾峰彇璇ユ偅鑰呯殑鍙戦�佹柟寮忔�绘暟
- List<ServiceSubtaskPreachform> spSize = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
-
- serviceSubtaskPreachform.setPreachform(preachform);
- //1:鏈彂閫佺姸鎬�
- serviceSubtaskPreachform.setSendstate("1");
- if (preachform.equals("3")) {
- //鐢佃瘽杩涘叆闃熷垪鍚庯紝鐘舵�佷細鍙樻垚2
- serviceSubtaskPreachform.setSendstate("2");
- }
- List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
- if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
- ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
- serviceSubtaskPreachform1.setSendstate(failSendstate);
- serviceSubtaskPreachform1.setRemark(remark);
- serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
-
- //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
- if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
- serviceSubtask.setCurrentPreachform(preachform);
- serviceSubtask.setSendstate(5L);
- serviceSubtask.setRemark(remark + ";鎵�鏈夋墽琛屾柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- return true;
- } else {
- //鍔犲叆鐩墠琛ュ伩閲岀殑 remark
- serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + remark : remark);
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- }
- }
-
- //灏界澶辫触锛岃繖閲屼篃灏嗗綋鍓嶅彂閫佹柟寮忕户缁缃垚鈥滅數璇濃�濓紝sendstate璁剧疆鎴�3锛涘洜涓簉yTask閲岀殑琛ュ伩鐨勫畾鏃朵换鍔¤繍琛屾椂锛屼細鎵惧埌杩欐潯subtask锛屽苟杩涜澶勭悊
- serviceSubtask.setCurrentPreachform(preachform);
- serviceSubtask.setSendstate(3L);
- //濡傛灉绛変簬9锛屽垯璇存槑鐢佃瘽姝e父缁撴潫浜�
- if (failSendstate.equals("9")) serviceSubtask.setSendstate(6L);
- serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- return true;
- }
-
- private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) {
- ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
- serviceSubtaskPreachform.setSubid(subid);
- serviceSubtaskPreachform.setTaskid(taskid);
- List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
- if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
- //娌℃湁闅忚鏃堕棿鍒欐寜褰撳ぉ鏉ョ畻--涓存椂
- if (ObjectUtils.isEmpty(visitTime)) {
- visitTime = new Date();
- }
-
- String compensateTime = serviceSubtaskPreachforms.get(0).getCompensateTime();
- int hoursToAdd = Integer.valueOf(compensateTime) * 24;
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(visitTime);
- calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd);
- Date newDate = calendar.getTime();
- return newDate;
- }
- return visitTime;
- }
-
- /**
* 璁$畻鎬昏琛�
*
* @param statistics 缁熻鏁版嵁鍒楄〃
@@ -4956,8 +3482,8 @@
public void setFailSubTaskDefalutVal(Long failDay) {
//1.鍏堝幓sys_config涓紝鑾峰彇鍝簺绉戝鎴栫梾鍖洪渶瑕侀粯璁ら棶鍗烽粯璁ゅ��
IConfigService configService = SpringUtils.getBean(IConfigService.class);
- String deptConfigValue = configService.selectConfigByKey("hosp.default.dept");
- String wardConfigValue = configService.selectConfigByKey("hosp.default.ward");
+ String deptConfigValue = taskSysConfigPort.selectConfigValue("hosp.default.dept");
+ String wardConfigValue = taskSysConfigPort.selectConfigValue("hosp.default.ward");
List<String> leaveWard = null;
List<String> leaveDept = null;
if (deptConfigValue != null && !deptConfigValue.isEmpty()) {
@@ -4985,7 +3511,7 @@
Boolean flag = false;
ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
- List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+ List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = taskPreachformPort.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms))
preachformSize = serviceSubtaskPreachforms.size();
if (serviceSubtask.getUpdateTime() != null && DateUtils.differentDaysByMillisecond(new Date(), serviceSubtask.getUpdateTime()) >= failDay) {
@@ -5114,12 +3640,13 @@
serviceOutPath.setUpdateTime(new Date());
serviceOutPath.setUrl(url);
iServiceOutPathService.updateServiceOutPath(serviceOutPath);
- SysConfig sysConfig = new SysConfig();
- sysConfig = sysConfigMapper.checkConfigKeyUnique("wj.sms.template");
+ // 鍙傛暟鍊肩粡绔彛鍙栫敤锛堝師涓� sysConfigMapper.checkConfigKeyUnique + getConfigValue锛夈��
+ // 璇箟绛変环锛氬師鍒ゅ畾"琛屽瓨鍦�"銆佽繖閲屽垽瀹�"鍊奸潪 null"锛岃�� sys_config.config_value 鏄�
+ // varchar(500) NOT NULL DEFAULT '' 鈬� 浜岃�呬笉鍙兘涓嶅悓锛堣瑙� TaskSysConfigPort javadoc锛夈��
+ String smsContemt = taskSysConfigPort.findConfigValueByKey("wj.sms.template");
- if (!Objects.isNull(sysConfig)) {
- String smsContemt = sysConfig.getConfigValue();
+ if (smsContemt != null) {
sendMagParam.setContent(smsContemt.replace("${wjurl}", sendMagParam.getUrl()));
}
@@ -5148,7 +3675,7 @@
//鑾峰彇闅忚鐨勫熀鏈俊鎭�
ServiceSubtask serviceSubtask = selectServiceSubtaskById(subid);
//鑾峰彇鎮h�呬俊鎭�
- PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(serviceSubtask.getPatid());
+ PatArchive patArchive = taskArchivePort.findByPatid(serviceSubtask.getPatid());
RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
@@ -5485,7 +4012,7 @@
return null;
}
try {
- SysDept sysDept = sysDept2Mapper.selectDeptByCode(deptCode, orgid);
+ SysDept sysDept = taskSysDeptPort.selectDeptByCode(deptCode, orgid);
return sysDept == null ? null : sysDept.getCampusid();
} catch (Exception e) {
log.warn("鎸夌紪鐮佸弽鏌ラ櫌鍖哄け璐ワ細deptCode={}, orgid={}, err={}", deptCode, orgid, e.getMessage());
@@ -5529,460 +4056,6 @@
}
}
- public PhoneCallBackSHVO getFirstQues(PhoneCallReqYQVO phoneCallReqYQVO) {
- //鐢ㄤ簬杩斿洖
- PhoneCallBackSHVO phoneCallBackSHVO = new PhoneCallBackSHVO();
-
- //鏍规嵁鎵嬫満鍙疯幏鍙栫敤鎴风殑鐨勫瓙浠诲姟淇℃伅
- ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
- serviceSubtaskVO.setPhone(phoneCallReqYQVO.getPhone());
- serviceSubtaskVO.setType("1");
- serviceSubtaskVO.setSendstate(2L);
- List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
- if (CollectionUtils.isNotEmpty(serviceSubtasks)) {
- ServiceSubtask serviceSubtask = serviceSubtasks.get(0);
- IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
-
- //閫氳繃浠诲姟妯℃澘涓殑"绗竴娆¢棶棰樼紪鍙�"鑾峰彇绗竴涓棶棰�;
- IvrTaskTemplateScript ivrTaskTemplateScript = null;
- IvrTaskTemplateScript ivrTaskTemplateScript1 = new IvrTaskTemplateScript();
- ivrTaskTemplateScript1.setTemplateID(ivrTaskTemplate.getId());
- List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript1);
-
- for (IvrTaskTemplateScript ivrTaskTemplateScript2 : ivrTaskTemplateScripts) {
- if (ivrTaskTemplate.getFirstQuestionNum() == Long.valueOf(ivrTaskTemplateScript2.getSort())) {
- ivrTaskTemplateScript = ivrTaskTemplateScript2;
- break;
- }
- }
- //鑾峰彇寮�鍦虹櫧
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
-
- phoneCallBackSHVO.setSubId(serviceSubtask.getId());
- phoneCallBackSHVO.setScriptId(ivrTaskTemplateScript.getId());
- phoneCallBackSHVO.setSort(ivrTaskTemplateScript.getSort());
- phoneCallBackSHVO.setTaskTemplateid(ivrTaskTemplateScript.getTemplateID());
- phoneCallBackSHVO.setScriptContent(serviceTask.getKcb() + "," + ivrTaskTemplateScript.getScriptContent());
- }
- return phoneCallBackSHVO;
- }
-
- /**
- * 涓夋眹ASR缁撴灉澶勭悊
- *
- * @param phoneCallResultYQVO
- * @return
- */
- public PhoneCallBackSHVO processResust(PhoneCallResultYQVO phoneCallResultYQVO) {
- PhoneCallBackSHVO phoneCallBackSHVO = new PhoneCallBackSHVO();
- //閫氳繃scriptid锛岃幏鍙栨墍鏈夌殑缁撴灉
- String url = configService.selectConfigByKey("sys.voice.match.ai.url", phoneCallResultYQVO.getOrgid());
- ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(phoneCallResultYQVO.getSubId());
- IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(serviceSubtask.getTemplateid());
- IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO = iIvrTaskTemplateScriptService.getTaskTempScriptInfoByid(Long.valueOf(phoneCallResultYQVO.getScriptId()));
- Integer i = matchOptionIndex(url, phoneCallResultYQVO.getScriptContent(), phoneCallResultYQVO.getAsrResult(), ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList(), phoneCallResultYQVO.getUuid());
- if (i >= 0) {
- String optiondesc = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(i).getOptiondesc();
- //灏嗘偅鑰呯殑鍥炵瓟鍐欒繘service_subtask_detail涓�
- ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
- List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
- ivrTaskTemplateScriptVO.setQuestionResult(optiondesc);
-
- PhoneCallReqYQVO phoneCallReqYQVO = new PhoneCallReqYQVO();
- phoneCallReqYQVO.setTaskid("" + serviceSubtask.getId());
- phoneCallReqYQVO.setPhone(phoneCallResultYQVO.getPhone());
- phoneCallReqYQVO.setAsrtext(phoneCallResultYQVO.getAsrResult());
- ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
- //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
- if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
- String questionvoice = serviceSubtaskDetail.getQuestionvoice();
- String[] split = questionvoice.split("\\\\");
- if (split.length > 0) {
- String lastPart = split[split.length - 1];
- serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
- }
- }
- serviceSubtaskDetailList.add(serviceSubtaskDetail);
- serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
- serviceSubTaskDetailReq.setGuid(phoneCallResultYQVO.getGuid());
- serviceSubTaskDetailReq.setOrgid(phoneCallResultYQVO.getOrgid());
- saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-
- IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
- ivrTaskTemplateScript.setTemplateID(ivrTaskTemplateScriptVO.getTemplateID());
- List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
-
- //鑾峰彇涓嬩竴棰�
- for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
- if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- phoneCallBackSHVO.setScriptContent(serviceTask.getJsy());
- phoneCallBackSHVO.setTaskTemplateid(script.getTemplateID());
- phoneCallBackSHVO.setSort(script.getSort());
- phoneCallBackSHVO.setScriptId(script.getId());
- phoneCallBackSHVO.setSubId(serviceSubtask.getId());
- phoneCallBackSHVO.setStatus("0");
- } else if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
- phoneCallBackSHVO.setScriptContent(script.getScriptContent());
- phoneCallBackSHVO.setTaskTemplateid(script.getTemplateID());
- phoneCallBackSHVO.setSort(script.getSort());
- phoneCallBackSHVO.setScriptId(script.getId());
- phoneCallBackSHVO.setSubId(serviceSubtask.getId());
- break;
- }
- }
- //鎶婄紦瀛樻竻闄�
- redisCache.deleteObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId());
- } else {
- //鍐嶅皢閲嶅璇㈤棶
- //璁板綍涓�涓嬭繖涓棶棰樿闂鐨勬鏁�
- Object cacheObject = redisCache.getCacheObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId());
- if (cacheObject == null || (Integer) cacheObject < ivrTaskTemplate.getMateNum()) {
-
- // 鑾峰彇閫夐」闆嗗悎涓殑 optiondesc 鐢ㄤ簬寮曞鎮h��
- List<IvrTaskTemplateTargetoption> optionList = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList();
- String optionDescStr = "";
- if (optionList != null && !optionList.isEmpty()) {
- optionDescStr = optionList.stream().map(IvrTaskTemplateTargetoption::getTargetvalue).filter(StringUtils::isNotEmpty).collect(Collectors.joining("鎴�"));
- }
-
- String scriptContent = "璇烽棶" + phoneCallResultYQVO.getScriptContent();
- if (StringUtils.isNotEmpty(optionDescStr)) {
- scriptContent += "锛屼綘鍙互鍥炵瓟锛�" + optionDescStr;
- }
- phoneCallBackSHVO.setScriptContent(scriptContent);
- phoneCallBackSHVO.setTaskTemplateid(phoneCallResultYQVO.getTaskTemplateid());
- phoneCallBackSHVO.setSort(phoneCallResultYQVO.getSort());
- phoneCallBackSHVO.setScriptId(phoneCallResultYQVO.getScriptId());
- phoneCallBackSHVO.setSubId(phoneCallResultYQVO.getSubId());
- if (cacheObject == null)
- redisCache.setCacheObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId(), 1, 120, TimeUnit.MINUTES);
- else
- redisCache.setCacheObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId(), (Integer) cacheObject + 1, 120, TimeUnit.MINUTES);
- } else if ((Integer) cacheObject >= ivrTaskTemplate.getMateNum()) {
- //濡傛灉宸茬粡闂簡瑙勫畾娆℃暟锛屽氨涓嶉棶浜嗭紝缁х画闂笅涓�棰橈紙杩欎釜瑕佸晢閲忎竴涓嬶紝鏄户缁棶涓嬩竴棰橈紝杩樻槸鍋滀簡锛屾槸涓嶆槸瑕佸仛涓紑鍏筹級
- IvrTaskTemplateScript ivrTaskTemplateScript = new IvrTaskTemplateScript();
- ivrTaskTemplateScript.setTemplateID(ivrTaskTemplateScriptVO.getTemplateID());
- List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
- //鑾峰彇涓嬩竴棰�
- for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
- if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
- phoneCallBackSHVO.setScriptContent(script.getScriptContent());
- phoneCallBackSHVO.setTaskTemplateid(script.getTemplateID());
- phoneCallBackSHVO.setSort(script.getSort());
- phoneCallBackSHVO.setScriptId(script.getId());
- phoneCallBackSHVO.setSubId(serviceSubtask.getId());
- break;
- }
- }
- //鎶婄紦瀛樻竻闄�
- redisCache.deleteObject(phoneCallResultYQVO.getSubId() + "-" + phoneCallResultYQVO.getScriptId());
- }
- }
- return phoneCallBackSHVO;
- }
-
- public PhoneCallBackYQVO AiMatch(String url, PhoneCallReqYQVO phoneCallReqYQVO, PhoneCallBackYQVO phoneCallBackYQVO, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask, IvrTaskTemplate ivrTaskTemplate, List<IvrTaskTemplateScript> ivrTaskTemplateScripts, String scriptId, Integer flag, String uuid) {
- PhoneCallBackYQVO back = null;
- List<IvrTaskTemplateTargetoption> options = ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList();
- String voiceText = phoneCallReqYQVO.getAsrtext();
- String questionText = StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent();
- Integer matched = -1;
- log.info("AI鍖归厤:url = {},questionText = {},voiceText = {},options = {},uuid ={}",
- url,questionText,voiceText,options,uuid);
- matched = matchOptionIndex(url, questionText, voiceText, options, uuid);
- //璇存槑鍖归厤姝g‘浜�
- if (matched != null && matched >= 0) {
- IvrTaskTemplateTargetoption chosenOption = options.get(matched);
- //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
- log.info("鍖归厤姝g‘浜嗗悧--------------");
- chosenOption.setIsUserOperation(1);
- serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(chosenOption);
-
- //灏嗘偅鑰呯殑鍥炵鍐欒繘service_subtask_detail涓�
- ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
- List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
- ivrTaskTemplateScriptVO.setQuestionResult(chosenOption.getOptiondesc());
- ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
- //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
- if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
- String questionvoice = serviceSubtaskDetail.getQuestionvoice();
- String[] split = questionvoice.split("\\\\");
- if (split.length > 0) {
- String lastPart = split[split.length - 1];
- serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
- }
- }
- serviceSubtaskDetailList.add(serviceSubtaskDetail);
- serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
- serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
- serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
- saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-
- //鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓攄utyDeptCode鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
- if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == chosenOption.getIsabnormal()) {
- ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
- //鐢╰askid銆乻ubid鍜宻criptid鍘昏幏鍙杁etailid
- ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();
- ssd.setSubId(serviceSubtask.getId());
- ssd.setTaskid(serviceSubtask.getTaskid());
- ssd.setScriptid(StringUtils.isNotEmpty(scriptId) ? Long.valueOf(scriptId) : null);
- List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(ssd);
- subtaskDetailTrace.setDetailId(CollectionUtils.isNotEmpty(serviceSubtaskDetails) ? serviceSubtaskDetails.get(0).getId() : null);
-
- subtaskDetailTrace.setSubId(serviceSubtask.getId());
- subtaskDetailTrace.setTaskid(serviceSubtask.getTaskid());
- subtaskDetailTrace.setTemplateid(ivrTaskTemplateScriptVO.getId());
- subtaskDetailTrace.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
- subtaskDetailTrace.setSwitchid(chosenOption.getId());
- subtaskDetailTrace.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());
- subtaskDetailTrace.setQuestionvoice(null);
- subtaskDetailTrace.setCategoryname(ivrTaskTemplateScriptVO.getScriptAssortname());
- subtaskDetailTrace.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid());
- //鑾峰彇鎵�鏈夐�夐」
- String optionDescStr = Optional.ofNullable(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()).filter(list -> !list.isEmpty()).map(list -> list.stream().map(IvrTaskTemplateTargetoption::getOptiondesc).filter(Objects::nonNull).collect(Collectors.joining("&"))).orElse("");
- subtaskDetailTrace.setTargetid(chosenOption.getId());
- subtaskDetailTrace.setTargetvalue(optionDescStr);
- subtaskDetailTrace.setMatchedtext(chosenOption.getOptiondesc());
- subtaskDetailTrace.setValueType(serviceSubtaskDetails.get(0).getValueType());
- subtaskDetailTrace.setTemplateType(1);
-
- SvyLibScriptCategory svyLibScriptCategory = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryById(ivrTaskTemplateScriptVO.getScriptAssortid());
- subtaskDetailTrace.setType(svyLibScriptCategory.getType());
- subtaskDetailTrace.setScriptid(ivrTaskTemplateScriptVO.getId());
- subtaskDetailTrace.setAsrtext(phoneCallReqYQVO.getAsrtext());
- subtaskDetailTrace.setRecordpath(phoneCallReqYQVO.getRecordpath());
- subtaskDetailTrace.setPatid(serviceSubtask.getPatid());
- JSONObject patdescJson = new JSONObject();
- patdescJson.put("sendname", serviceSubtask.getSendname());
- patdescJson.put("phone", serviceSubtask.getPhone());
- patdescJson.put("age", serviceSubtask.getAge());
- patdescJson.put("sex", serviceSubtask.getSex() != null ? serviceSubtask.getSex() == 1 ? "鐢�" : "濂�" : null);
- subtaskDetailTrace.setPatdesc(patdescJson.toJSONString());
- subtaskDetailTrace.setTodeptcode(ivrTaskTemplateScriptVO.getDutyDeptCode());
- subtaskDetailTrace.setTodeptname(ivrTaskTemplateScriptVO.getDutyDeptName());
- subtaskDetailTrace.setOrgid(serviceSubtask.getOrgid());
- subtaskDetailTrace.setHandleFlag("0");
- subtaskDetailTrace.setGuid(phoneCallReqYQVO.getGuid());
- subtaskDetailTrace.setCreateTime(new Date());
- subtaskDetailTrace.setUpdateTime(new Date());
- subtaskDetailTrace.setOrgid(phoneCallReqYQVO.getOrgid());
- traceService.insertServiceSubtaskDetailTtrace(subtaskDetailTrace);
- }
-
- //鍒ゆ柇涓�涓嬶紝杩欎釜閫夐」缁撴灉鏄笉鏄繕鏈夌户缁棶涓嬪幓鐨勫繀瑕侊紝渚嬪閫夐」缁撴灉鏄埆浜轰笉鎯崇户缁洖绛旈棶棰橈紝灏辫缁撴潫鎺�
- if (chosenOption.getIsEnd() == 1) {
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "noVoice");
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
- back = phoneCallBackYQVO;
- return back;
- }
-
- flag = 1;
- //灏嗗綋鍓嶅墠鐨勬挱鎶ョ姸鎬佸垹闄わ紝缁欎笅涓�棰樿浣�
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
-// //鑾峰彇涓嬩竴棰�
- log.error("鑾峰彇涓嬩竴棰樼殑淇℃伅锛歿}", ivrTaskTemplateScriptVO);
- //branchFlag涓簄ull鏃舵寜鍒嗘敮0澶勭悊锛岄伩鍏峃PE
- if ("1".equals(ivrTaskTemplateScriptVO.getBranchFlag()) || "0".equals(ivrTaskTemplateScriptVO.getBranchFlag()) && ivrTaskTemplateScriptVO.getNextScriptno() != null && ivrTaskTemplateScriptVO.getNextScriptno() != 0) {
- Long nextQuestion = null;
- if ("1".equals(ivrTaskTemplateScriptVO.getBranchFlag())) {
- nextQuestion = chosenOption.getNextQuestion();
- //鏇存柊鍒嗘暟
- double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- score = BigDecimal.valueOf(score).add(new BigDecimal(chosenOption.getScore())).doubleValue();
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score);
- } else {
- nextQuestion = ivrTaskTemplateScriptVO.getNextScriptno();
- //鏇存柊鍒嗘暟
- Object obj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- Double score = (obj == null ? new Double(0.00) : new Double(((Double) obj).doubleValue()));
- score = BigDecimal.valueOf(score).add(new BigDecimal(String.valueOf(chosenOption.getScore()))).doubleValue();
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
- }
- if (nextQuestion == null || nextQuestion == 0L) {
- //濡傛灉涓嬩竴棰樹负绌猴紝鎴栬�呬负0锛屽垯鎸傛満
- ServiceSubtask ss = new ServiceSubtask();
- ss.setId(serviceSubtask.getId());
- ss.setSendstate(6L);
- ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
- serviceSubtaskMapper.updateServiceSubtask(ss);
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
-
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "noVoice");
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());
- //鏄庣粏鍦ㄦ湰棰樺尮閰嶆垚鍔熸椂宸茶惤搴擄紙瑙佷笂鏂� saveQuestionAnswerPhone锛夛紝杩欓噷涓嶅啀閲嶅淇濆瓨
- back = phoneCallBackYQVO;
- return back;
- }
-
- for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
- if (script.getSort() == nextQuestion.intValue()) {
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();
- log.error("涓嬩竴棰橀棶棰橈細{}", scriptContent);
- log.error("涓嬩竴棰樼殑瀛愪换鍔℃槸锛歿}", serviceSubtask);
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
- //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀�
- redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);
- //鍒犻櫎鏃犲搷搴�
- redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
- }
- }
- //涓嬩竴棰樿剼鏈病鎵惧埌鏃讹紝鍏滃簳閲嶉棶褰撳墠棰橈紝閬垮厤璋冪敤鏂硅鍒や负鏈鐞嗚�岄��鍥炴鍒欒瘑鍒�
- if (StringUtils.isEmpty(phoneCallBackYQVO.getValue())) {
- log.error("涓嬩竴棰樿剼鏈湭鎵惧埌锛岄噸闂綋鍓嶉锛宯extQuestion锛歿}", nextQuestion);
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, questionText));
- }
- back = phoneCallBackYQVO;
- return back;
- } else if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) {
- ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- //鏇存柊涓�涓嬪垎鏁�
- double score = 0.0;
- Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- if (ObjectUtils.isNotEmpty(scoreObj)) score = (double) scoreObj;
- serviceSubtask.setScore(String.valueOf(score));
- serviceSubtask.setFinishtime(new Date());
- serviceSubtask.setSendstate(6L);
- serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
- //璁剧疆缁撴潫璇�
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
- Long id = serviceSubtask.getId();
- Map<String, String> map = delRedisValue(null, id.toString());
- log.error("map鐨勫�间负锛歿}", map);
- if (ObjectUtils.isNotEmpty(map)) redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
- //缁撴潫璇凡鎷艰繘杩斿洖鍊硷紝鎸傛満鐢卞钩鍙版寜杩斿洖鍊兼墽琛�
- back = phoneCallBackYQVO;
- return back;
-
- }
- } else {
- //AI娌℃湁鍖归厤涓婏細鐢盇I鍒嗘敮鑷繁鎸�"娌¢棶娓呭氨閲嶉棶"鐨勬鏁板鐞嗭紝涓嶅啀閫�鍥炴鍒欒瘑鍒�
- log.info("ai娌℃湁鍖归厤涓�----------------------------");
- //娌″尮閰嶄笂涔熻鎶婃偅鑰呰鐨勮瘽璁板綍涓嬫潵锛坢atchedtext缃┖锛屼笌姝e垯璺緞鍙e緞涓�鑷达級
- ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
- List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>();
- ServiceSubtaskDetail serviceSubtaskDetail = getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate);
- //淇敼涓�涓嬭闊宠矾寰勶紙鏀规垚鍓嶇鍙互璁块棶鐨勶紝瀛樺埌鏁版嵁搴撲腑锛�
- if (StringUtils.isNotEmpty(serviceSubtaskDetail.getQuestionvoice())) {
- String questionvoice = serviceSubtaskDetail.getQuestionvoice();
- String[] split = questionvoice.split("\\\\");
- if (split.length > 0) {
- String lastPart = split[split.length - 1];
- serviceSubtaskDetail.setQuestionvoice(voicePathPrefix + lastPart);
- }
- }
- serviceSubtaskDetailList.add(serviceSubtaskDetail);
- //濡傛灉娌℃湁 鍖归厤涓婏紝杩欎釜蹇呴』涓簄ull
- serviceSubtaskDetailList.get(0).setMatchedtext("");
- serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList);
- serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
- serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
- saveQuestionAnswerPhone(serviceSubTaskDetailReq);
-
- String mateKey = phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid();
- Integer count = null;
- Object countObj = redisCache.getCacheObject(mateKey);
- if (ObjectUtils.isNotEmpty(countObj)) count = (Integer) countObj;
- if (count != null && count >= ivrTaskTemplate.getMateNum()) {
- //娌″尮閰嶆鏁板凡缁忕敤婊★紝涓嶈兘鍐嶉噸闂簡
- boolean noNextQuestion = ("0".equals(ivrTaskTemplateScriptVO.getBranchFlag()) || "1".equals(ivrTaskTemplateScriptVO.getBranchFlag()))
- && (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0);
- if (noNextQuestion) {
- //宸茬粡鏄渶鍚庝竴棰橈紝鐩存帴鎸傛満
- ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
- //鏇存柊涓�涓嬪垎鏁�
- Double score = null;
- Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
- serviceSubtask.setScore(String.valueOf(score));
- serviceSubtask.setFinishtime(new Date());
- serviceSubtask.setSendstate(6L);
- serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
- serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
- //璁板綍鐘舵��
- setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
- //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
- //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
- Long id = serviceSubtask.getId();
- Map<String, String> map = delRedisValue(null, id.toString());
- if (ObjectUtils.isNotEmpty(map)) {
- redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
- redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
- redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
- }
- } else {
- //杩樻湁涓嬩竴棰橈紝鎸塶extScriptno缁х画鎻愰棶
- for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
- if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();
- phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
- //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀�
- redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);
- //鏇存柊涓�涓嬪垎鏁�
- Double score = null;
- Object scoreObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
- if (ObjectUtils.isNotEmpty(scoreObj)) score = (Double) scoreObj;
- score = BigDecimal.valueOf(score).add(new BigDecimal(script.getScore())).doubleValue();
- redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES);
- //鎹㈤鎴愬姛锛屾病鍖归厤娆℃暟娓呴浂
- redisCache.deleteObject(mateKey);
- }
- }
- }
- } else {
- //杩樻病闂弧娆℃暟锛岀敤noMatchText寮曞鎮h�呴噸绛�
- redisCache.setCacheObject(mateKey, count == null ? 1 : count + 1, 120, TimeUnit.MINUTES);
- phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
- phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent()));
- }
- back = phoneCallBackYQVO;
- return back;
- }
- return back;
- }
-
//鑾峰彇浠诲姟缁勪俊鎭�
private void findServiceTaskScheduleVO(ServiceTaskVO serviceTaskVO) {
if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype()) && serviceTaskVO.getAppltype().equals("5")) {
@@ -5997,34 +4070,12 @@
}
}
- @Test
- public void TestMatch() {
- String questionText = "鎮ㄥソ,璇烽棶鎮ㄦ槸鎮h�呮湰浜鸿繕鏄灞烇紵\n";
- String voiceText = "鎴戣嚜宸�";
- String matchedText = "";
- List<IvrTaskTemplateTargetoption> options = new ArrayList<>();
- IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption1 = new IvrTaskTemplateTargetoption();
- ivrTaskTemplateTargetoption1.setTargetvalue("鏈汉");
- options.add(ivrTaskTemplateTargetoption1);
- IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption2 = new IvrTaskTemplateTargetoption();
- ivrTaskTemplateTargetoption2.setTargetvalue("瀹跺睘");
- options.add(ivrTaskTemplateTargetoption2);
- IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption3 = new IvrTaskTemplateTargetoption();
- ivrTaskTemplateTargetoption3.setTargetvalue("鍏朵粬");
- options.add(ivrTaskTemplateTargetoption3);
- //1-AI璇嗗埆
- String url = configService.selectConfigByKey("sys.voice.match.ai.url");
- Integer matched = matchOptionIndex(url, questionText, voiceText, options, "1");
- if (ObjectUtils.isNotEmpty(matched)) {
- if (matched >= 0) {
- matchedText = options.get(matched).getTargetvalue();
- }
- }
- log.info("ai鍖归厤鎴愬姛锛屽尮閰嶇粨鏋滄槸:" + matchedText);
- }
-
// ---------------------------------------------------------------------
// 璇存槑锛氬師绉佹湁 getWXCode / encode 宸查殢鍙戦�佹柟涓�璧锋敹鍙e埌 ruoyi-message 妯″潡
// 锛圶inHuaMpApi锛夛紝姝ゅ宸插垹闄わ紝閬垮厤涓変唤鎷疯礉鍚勫啓涓�濂楃鍚嶉�昏緫銆�
+ //
+ // 鍙︼細鏈被鍘熸湰杩樻湁涓�涓� @Test 鏍囨敞鐨� TestMatch()锛堝紑鍙戞湡鎵嬪啓鐨� AI 閫夐」鍖归厤璋冭瘯鏂规硶锛夛紝
+ // 鍏ㄤ粨鏃犱换浣曡皟鐢ㄧ偣銆傚畠浼氭妸 org.junit 鎷栬繘銆愮敓浜с�戞簮鐮佷緷璧栵紝鑰� ruoyi-task 鏄�
+ // jar 妯″潡銆佷笉甯� junit 鈥斺�� 鏁呴殢妯″潡鍖栦竴骞跺垹闄わ紙灞炴浠g爜锛岃涓烘棤褰卞搷锛夈��
// ---------------------------------------------------------------------
}
--
Gitblit v1.9.3