From 10aaa035f5be0312304d20f022bdb714a8f4900a Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 11 十二月 2024 22:16:23 +0800
Subject: [PATCH] 代码提交
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 1288 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 1,213 insertions(+), 75 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index 3a45920..a34347b 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -4,16 +4,16 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
+import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.base.BaseException;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.DtoConversionUtils;
-import com.ruoyi.common.utils.RSAPublicKeyExample;
+import com.ruoyi.common.utils.*;
+import com.smartor.common.FtpService;
+import com.smartor.common.SendService;
import com.smartor.config.PhoneUtils;
import com.smartor.domain.*;
import com.smartor.mapper.*;
-import com.smartor.service.IServiceSubtaskService;
-import com.smartor.service.IServiceTaskService;
+import com.smartor.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
@@ -23,11 +23,18 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
/**
* 鍗曚竴浠诲姟锛堥殢璁匡級Service涓氬姟灞傚鐞�
@@ -42,18 +49,13 @@
private ServiceSubtaskMapper serviceSubtaskMapper;
@Autowired
- private IvrTaskcalldetailMapper ivrTaskcalldetailMapper;
- @Autowired
- private SvyTasksingledetailMapper svyTasksingledetailMapper;
+ private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;
@Autowired
private IServiceTaskService serviceTaskService;
@Autowired
private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;
-
- @Autowired
- private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
@Autowired
private IvrTaskVisitResultMapper serviceTaskVisitResultMapper;
@@ -64,9 +66,53 @@
@Autowired
private IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper;
+ @Autowired
+ private IIvrTaskTemplateService ivrTaskTemplateService;
+
+ @Autowired
+ private ISvyTaskTemplateService svyTaskTemplateService;
+
+ @Autowired
+ private IIvrTaskTemplateScriptService iIvrTaskTemplateScriptService;
+
+ @Autowired
+ private IServiceOutPathService iServiceOutPathService;
+
+ @Autowired
+ private FtpService ftpService;
+
@Value("${pri_key}")
private String pri_key;
+ @Value("${pub_key}")
+ private String pub_key;
+
+ @Value("${ASRCallBackPath}")
+ private String ASRCallBackPath;
+
+ @Autowired
+ private SendService sendService;
+
+ @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("${xhsmsPath}")
+ private String xhsmsPath;
/**
* 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級
@@ -82,23 +128,27 @@
/**
* 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級鍒楄〃
*
- * @param ServiceSubtask 鍗曚竴浠诲姟锛堥殢璁匡級
+ * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級
* @return 鍗曚竴浠诲姟锛堥殢璁匡級
*/
@Override
- public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtask ServiceSubtask) {
- return serviceSubtaskMapper.selectServiceSubtaskList(ServiceSubtask);
+ public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO) {
+ return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
}
@Override
- public ServiceTaskVO queryTaskByCondition(ServiceSubtask ServiceSubtask) {
+ public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {
//瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚�
List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
- List<ServiceSubtask> list = selectServiceSubtaskList(ServiceSubtask);
+ ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);
+ List<ServiceSubtask> list = selectServiceSubtaskList(serviceSubtaskVO);
+
+ ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
if (CollectionUtils.isEmpty(list) || list.size() == 0) {
- return new ServiceTaskVO();
+ return DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);
}
- ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(ServiceSubtask.getTaskid());
+
+
//灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ServiceSubtaskVO涓�
ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);
serviceTaskVO.setShowDate(serviceTask.getShowDate());
@@ -131,12 +181,24 @@
//鑾峰彇鍒版偅鑰呬俊鎭紝骞舵斁鍏ュ埌闆嗗悎涓�
patTaskRelevance.setName(serviceSubtask1.getSendname());
patTaskRelevance.setAge(serviceSubtask1.getAge());
+ patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime());
patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
patTaskRelevance.setPhone(serviceSubtask1.getPhone());
+ patTaskRelevance.setTelcode(serviceSubtask1.getPhone());
patTaskRelevance.setAddr(serviceSubtask1.getAddr());
patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
patTaskRelevance.setPatid(serviceSubtask1.getPatid());
- patTaskRelevance.setSendState(serviceSubtask1.getSendstate());
+ patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
+ patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode());
+ patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
+ patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode());
+ patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname());
+ patTaskRelevance.setInhosptime(serviceSubtask1.getInhosptime());
+ patTaskRelevance.setDrname(serviceSubtask1.getDrname());
+ patTaskRelevance.setDrcode(serviceSubtask1.getDrcode());
+ patTaskRelevance.setEndtime(serviceSubtask1.getEndtime());
+ patTaskRelevance.setNurseId(serviceSubtask1.getNurseId());
+ patTaskRelevance.setNurseName(serviceSubtask1.getNurseName());
patTaskRelevances.add(patTaskRelevance);
}
if (serviceSubtask1.getHospType().equals("2")) {
@@ -145,12 +207,25 @@
patTaskRelevance.setAge(serviceSubtask1.getAge());
patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
patTaskRelevance.setPhone(serviceSubtask1.getPhone());
+ patTaskRelevance.setTelcode(serviceSubtask1.getPhone());
+ patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime());
patTaskRelevance.setAddr(serviceSubtask1.getAddr());
patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
+ patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode());
patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());
patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
patTaskRelevance.setPatid(serviceSubtask1.getPatid());
- patTaskRelevance.setSendState(serviceSubtask1.getSendstate());
+ patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
+ patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode());
+ patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname());
+ patTaskRelevance.setInhosptime(serviceSubtask1.getInhosptime());
+ patTaskRelevance.setStarttime(serviceSubtask1.getStarttime());
+ patTaskRelevance.setDrname(serviceSubtask1.getDrname());
+ patTaskRelevance.setDrcode(serviceSubtask1.getDrcode());
+ patTaskRelevance.setEndtime(serviceSubtask1.getEndtime());
+ patTaskRelevance.setStarttime(serviceSubtask1.getStarttime());
+ patTaskRelevance.setNurseId(serviceSubtask1.getNurseId());
+ patTaskRelevance.setNurseName(serviceSubtask1.getNurseName());
patTaskRelevances.add(patTaskRelevance);
}
}
@@ -160,10 +235,48 @@
}
@Override
- public List<ServiceSubtask> patItem(ServiceSubtask serviceSubtask) {
+ public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) {
+ List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
+ //鏍规嵁鍑洪櫌 鏃堕棿鍊掑簭
+// List<ServiceSubtask> sortedServiceSubtaskList = selectServiceSubtaskList.stream().sorted(Comparator.comparing(ServiceSubtask::getEndtime).reversed()).collect(Collectors.toList());
+ return selectServiceSubtaskList;
+ }
-
- return this.selectServiceSubtaskList(serviceSubtask);
+ @Override
+ public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) {
+ serviceSubtaskVO.setPageSize(99999999);
+ serviceSubtaskVO.setPageNum(1);
+ List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
+ Map<String, Object> map = new HashMap<>();
+ Integer wzx = 0;
+ Integer ysf = 0;
+ Integer yc = 0;
+ Integer fssb = 0;
+ Integer yfs = 0;
+ Integer xj = 0;
+ Integer dfs = 0;
+ Integer ywc = 0;
+ Integer ywc2 = 0;
+ for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+ if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;
+ else if (serviceSubtask.getSendstate() != 4L) ysf = ysf + 1;
+ if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;
+ if (serviceSubtask.getSendstate() == 3L) yfs = yfs + 1;
+ if (serviceSubtask.getSendstate() == 1L) xj = xj + 1;
+ if (serviceSubtask.getSendstate() == 2L) dfs = dfs + 1;
+ if (serviceSubtask.getSendstate() == 6L) ywc = ywc + 1;
+ if (serviceSubtask.getExcep().equals("1")) yc = yc + 1;
+ }
+ map.put("wzx", wzx);
+ map.put("ysf", ysf);
+ map.put("yc", yc);
+ map.put("fssb", fssb);
+ map.put("yfs", yfs);
+ map.put("xj", xj);
+ map.put("dfs", dfs);
+ map.put("ywc", ywc);
+ map.put("yfs2", yfs + ywc);
+ return map;
}
/**
@@ -211,21 +324,48 @@
*/
@Transactional(rollbackFor = Exception.class)
@Override
- public int insertOrUpdateTask(ServiceTaskVO serviceTaskVO) {
+ public Map<String, Integer> insertOrUpdateTask(ServiceTaskVO serviceTaskVO) {
if (ObjectUtils.isEmpty(serviceTaskVO)) {
log.info("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
throw new BaseException("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
}
- Integer integer = 1;
+ Integer integer = null;
ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);
serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));
if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {
//寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔�
if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))
serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
- if (serviceTask.getSendState() == null) serviceTask.setSendState(1);
- serviceTask.setTemplateid(serviceTaskVO.getLibtemplateid());
+ if (serviceTask.getSendState() == null) {
+ serviceTask.setSendState(1L);
+ serviceTaskVO.setSendState(1L);
+ }
+ if (StringUtils.isNotEmpty(serviceTaskVO.getLibtemplateid())) {
+ serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid());
+ }
+ serviceTask.setTemplateid(serviceTaskVO.getTemplateid());
+
+ serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes());
+ serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode());
serviceTaskService.insertServiceTask(serviceTask);
+ if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) {
+ //杩欓噷闇�瑕佸皢浠诲姟id涓庝换鍔℃ā鏉縄D锛屽湪浠诲姟妯℃澘涓粦瀹�
+ Map<String, Integer> map = new HashMap<>();
+ if (StringUtils.isNotEmpty(serviceTaskVO.getType()) && serviceTaskVO.getType().equals("1")) {
+ IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate();
+ ivrTaskTemplate.setTaskid(serviceTask.getTaskid());
+ ivrTaskTemplate.setId(serviceTaskVO.getTemplateid());
+ ivrTaskTemplateService.updateIvrTaskTemplate(ivrTaskTemplate);
+ } else if (StringUtils.isNotEmpty(serviceTaskVO.getType()) && serviceTaskVO.getType().equals("2")) {
+ SvyTaskTemplate svyTaskTemplate = new SvyTaskTemplate();
+ svyTaskTemplate.setTaskid(serviceTask.getTaskid());
+ svyTaskTemplate.setId(serviceTaskVO.getTemplateid());
+ svyTaskTemplateService.updateSvyTaskTemplate(svyTaskTemplate);
+ }
+ map.put("subTaskId", null);
+ map.put("taskId", serviceTask.getTaskid().intValue());
+ return map;
+ }
//灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓�
ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
@@ -237,14 +377,30 @@
//灏嗕换鍔′俊鎭柊澧炲埌闅忚鏈嶅姟琛ㄤ腑
serviceSubtask.setSendname(patTaskRelevance.getName());
serviceSubtask.setAge(patTaskRelevance.getAge());
- serviceSubtask.setSfzh(patTaskRelevance.getSfzh());
- serviceSubtask.setPhone(patTaskRelevance.getPhone());
+ serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
+ serviceSubtask.setSfzh(patTaskRelevance.getIdcardno());
+ serviceSubtask.setPhone(patTaskRelevance.getTelcode());
serviceSubtask.setAddr(patTaskRelevance.getAddr());
serviceSubtask.setPatid(patTaskRelevance.getPatid());
serviceSubtask.setCreateTime(DateUtils.getNowDate());
serviceSubtask.setSendstate(1L);
+ if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
+ serviceSubtask.setSendstate(2L);
+ serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode());
+ serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
+ serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
+ serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
serviceSubtask.setType(serviceTaskVO.getHospType());
serviceSubtask.setHospType(patTaskRelevance.getHospType());
+ serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
+ serviceSubtask.setDrname(patTaskRelevance.getDrname());
+ serviceSubtask.setDrcode(patTaskRelevance.getDrcode());
+ serviceSubtask.setInhosptime(patTaskRelevance.getInhosptime());
+ serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
+ serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
+ serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
+ if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
+ serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
integer = serviceSubtask.getId().intValue();
}
@@ -256,23 +412,54 @@
serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
//淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1
ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
- serviceTask.setStopState(serviceTask1.getStopState() + 1);
- serviceTask.setTemplateid(serviceTaskVO.getLibtemplateid());
+ long l = serviceTask1.getStopState() + 1;
+ serviceTask.setStopState(l);
+ if (serviceTaskVO.getLibtemplateid() != null)
+ serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString());
+ serviceTask.setTemplateid(serviceTaskVO.getTemplateid());
+ serviceTask.setLongTask(serviceTaskVO.getLongTask());
serviceTaskService.updateServiceTask(serviceTask);
-
+ if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) {
+ //杩欓噷闇�瑕佸皢浠诲姟id涓庝换鍔℃ā鏉縄D锛屽湪浠诲姟妯℃澘涓粦瀹�
+ Map<String, Integer> map = new HashMap<>();
+ if (StringUtils.isNotEmpty(serviceTaskVO.getType()) && serviceTaskVO.getType().equals("1")) {
+ IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate();
+ ivrTaskTemplate.setTaskid(serviceTask.getTaskid());
+ ivrTaskTemplate.setId(serviceTaskVO.getTemplateid());
+ ivrTaskTemplateService.updateIvrTaskTemplate(ivrTaskTemplate);
+ } else if (StringUtils.isNotEmpty(serviceTaskVO.getType()) && serviceTaskVO.getType().equals("2")) {
+ SvyTaskTemplate svyTaskTemplate = new SvyTaskTemplate();
+ svyTaskTemplate.setTaskid(serviceTask.getTaskid());
+ svyTaskTemplate.setId(serviceTaskVO.getTemplateid());
+ svyTaskTemplateService.updateSvyTaskTemplate(svyTaskTemplate);
+ }
+ map.put("subTaskId", null);
+ map.put("taskId", serviceTask.getTaskid().intValue());
+ return map;
+ }
if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
-
ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
serviceSubtask.setSendname(patTaskRelevance.getName());
serviceSubtask.setAge(patTaskRelevance.getAge());
serviceSubtask.setSfzh(patTaskRelevance.getSfzh());
- serviceSubtask.setPhone(patTaskRelevance.getPhone());
+ serviceSubtask.setPhone(patTaskRelevance.getTelcode());
serviceSubtask.setAddr(patTaskRelevance.getAddr());
serviceSubtask.setPatid(patTaskRelevance.getPatid());
+ serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
+ serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode());
+ serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
+ serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
+ serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
serviceSubtask.setType(serviceTaskVO.getHospType());
serviceSubtask.setCreateTime(DateUtils.getNowDate());
+ serviceSubtask.setDrname(patTaskRelevance.getDrname());
+ serviceSubtask.setDrcode(patTaskRelevance.getDrcode());
+ serviceSubtask.setInhosptime(patTaskRelevance.getInhosptime());
serviceSubtask.setHospType(patTaskRelevance.getHospType());
+ serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
+ serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
+ serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
if (patTaskRelevance.getIsoperation() != null) {
if (patTaskRelevance.getIsoperation() == 2)
@@ -289,13 +476,15 @@
}
}
}
- return integer;
+ Map<String, Integer> map = new HashMap<>();
+ map.put("subTaskId", integer);
+ 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");
@@ -338,6 +527,11 @@
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());
@@ -349,7 +543,7 @@
// 闂锛� 鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
String date = simpleDateFormat1.format(new Date());
log.info("鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
- phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
+ phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());
}
} else {
redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
@@ -358,7 +552,7 @@
//闈欓粯璇濇湳 + 闂锛� 鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙�
String date = simpleDateFormat1.format(new Date());
log.info("闈欓粯璇濇湳 + 闂,鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
- phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
+ phoneUtils.ttsPlayback(slienceText + nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());
return;
}
@@ -379,11 +573,11 @@
Pattern pattern2 = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2());
matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
}
- log.error("PCB--getQuestionText闂涓猴細{},UUID锛歿}", nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
+ 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(true);
+ nowQuestion.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1);
serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(nowQuestion.getIvrTaskScriptTargetoptionList().get(j));
//灏嗛潤榛樼疆涓�0
@@ -393,7 +587,7 @@
//灏嗘偅鑰呯殑鍥炵鍐欒繘琛ㄩ噷
IvrTaskVisitResult serviceTaskVisitResult = DtoConversionUtils.sourceToTarget(serviceSubtask, IvrTaskVisitResult.class);
serviceTaskVisitResult.setId(null);
- serviceTaskVisitResult.setQuestion(nowQuestion.getQuestionText());
+ serviceTaskVisitResult.setQuestion(nowQuestion.getIvrtext());
serviceTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());
serviceTaskVisitResult.setCreateTime(new Date());
serviceTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue());
@@ -410,10 +604,14 @@
questionMessage.setNowQuestion(script);
questionMessage.setQuestionList(IvrTaskTemplateScriptVOs);
redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
- phoneUtils.ttsPlayback(script.getQuestionText(), phoneCallBackVO.getUuid());
+ 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);
@@ -451,10 +649,15 @@
redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
String date = simpleDateFormat1.format(new Date());
log.info("濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
- phoneUtils.ttsPlayback(nextQuestion.getQuestionText(), 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);
@@ -495,7 +698,7 @@
Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
matcher2 = pattern2.matcher(returnQues.getContent());
}
- log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
+ 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();
@@ -505,26 +708,730 @@
if (ivrLibaExtemplatescript.getIsEnd() == 1) {
//灏嗛棶棰樼疆绌�
IvrTaskTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
- nowQuestion1.setQuestionText(null);
- nowQuestion1.setQuestionVoice(null);
+ 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("璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀�------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid());
- phoneUtils.ttsPlayback(nowQuestion.getQuestionText() + ivrTaskTemplateScriptVO.getSubmoduleText(), 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.getQuestionText(), phoneCallBackVO.getUuid());
+ phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid());
}
}
}
+
+ /**
+ * 鐢佃瘽ASR閫氳瘽鍥炶皟(闆ㄧ划)
+ *
+ * @param phoneCallReqYQVO
+ */
+ @Override
+ public PhoneCallBackYQVO phoneCallBackYQ(PhoneCallReqYQVO phoneCallReqYQVO) {
+ //鍒ゆ柇鏄惁鎸傛満
+ String hangupState = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "- hangup");
+ Object cacheObject1 = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
+ if (StringUtils.isNotEmpty(hangupState) && hangup.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")) {
+ 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);
+ //杩欎釜鏃跺�欏氨闇�瑕佽蛋琛ュ伩鏈哄埗浜嗭紝鍏堟殏瀹氳蛋鐭俊
+ 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));
+ //鍒犻櫎缁撴潫璇殑鎮e瓨
+ 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);
+ saveQuestionAnswerPhone(serviceSubTaskDetailReq);
+ //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
+ Long id = serviceSubtask.getId();
+ //鍏堟洿鏂颁竴涓嬪垎鏁�
+ double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE");
+ serviceSubtask.setScore(BigDecimal.valueOf(score));
+ serviceSubtask.setFinishtime(new Date());
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+ 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;
+ }
+ 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);
+ //鍙互鎸傛満浜�
+ 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);
+ saveQuestionAnswerPhone(serviceSubTaskDetailReq);
+ return phoneCallBackYQVO;
+ }
+ }
+ }
+
+ //濡傛灉鏄枃鏈洖璋�
+ //鏍规嵁闂ID鑾峰彇璇ラ棶棰樼殑绫诲瀷
+ if (ivrTaskTemplateScriptVO.getScriptType().equals("1")) {
+ //鐢ㄦ潵鏍囪锛屾槸鍚︽湁鍖归厤涓婄殑
+ Integer flag = 0;
+ //鏄�夋嫨棰�
+ for (int j = 0; j < ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size(); j++) {
+ log.error("phoneCallReqYQVO.getAsrtext()鐨勫�间负锛歿}", phoneCallReqYQVO.getAsrtext());
+ if (StringUtils.isEmpty(phoneCallReqYQVO.getAsrtext())) {
+ continue;
+ }
+ //鍖呭惈
+ 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()) {
+ //璇存槑鍖归厤姝g‘浜�
+ //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
+ 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);
+ saveQuestionAnswerPhone(serviceSubTaskDetailReq);
+ //鍒ゆ柇涓�涓嬶紝杩欎釜閫夐」缁撴灉鏄笉鏄繕鏈夌户缁棶涓嬪幓鐨勫繀瑕侊紝渚嬪閫夐」缁撴灉鏄埆浜轰笉鎯崇户缁洖绛旈棶棰橈紝灏辫缁撴潫鎺�
+ 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());
+ 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(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(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);
+ 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);
+ saveQuestionAnswerPhone(ssdReq);
+ return phoneCallBackYQVO;
+ }
+
+ for (IvrTaskTemplateScript script : ivrTaskTemplateScripts) {
+ if (script.getSort() == nextQuestion.intValue()) {
+ phoneCallBackYQVO.setType("text");
+ phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
+ String scriptContent = script.getIvrtext();
+ log.error("涓嬩竴棰橀棶棰橈細{}", scriptContent);
+ 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(BigDecimal.valueOf(score));
+ serviceSubtask.setFinishtime(new Date());
+ serviceSubtask.setSendstate(6L);
+ serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+ //璁剧疆缁撴潫璇�
+ 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 {
+ //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);
+ saveQuestionAnswerPhone(serviceSubTaskDetailReq);
+ }
+ continue;
+ }
+ }
+ //閮芥病鏈夊尮閰嶅埌
+ if (StringUtils.isEmpty(phoneCallBackYQVO.getValue())) {
+ 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(BigDecimal.valueOf(score));
+ serviceSubtask.setFinishtime(new Date());
+ serviceSubtask.setSendstate(6L);
+ serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+
+ //鍦╮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());
+ 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 = script.getIvrtext();
+ 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(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, ivrTaskTemplateScriptVO.getIvrtext()));
+ }
+ }
+
+ } 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);
+ 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 = ivrTaskTemplateScript1.getIvrtext();
+ 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(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(BigDecimal.valueOf(score));
+ serviceSubtask.setFinishtime(new Date());
+ serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
+ serviceSubtask.setSendstate(6L);
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+
+ //鍘籸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) : "");
+ }
+ }
+ 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<>();
+ String value0 = redisCache.getCacheObject("cache-0");
+ log.error("浠诲姟鎷夊彇value0鐨勫�兼槸澶氬皯锛歿}", value0);
+ // cache-0涓虹珛鍗冲彂璧风殑,鍏跺畠鐨勫厛鎺ㄨ繜
+ if (!StringUtils.isEmpty(value0)) {
+ pullTaskVOList = getPullTaskList(value0, "cache-0");
+ //灏哻ache-0鐨勬暟鎹紝杞Щ鍒癱ache-00涓�
+ redisCache.deleteObject("cache-00");
+ String cache00 = redisCache.getCacheObject("cache-00");
+ if (!StringUtils.isEmpty(cache00))
+ redisCache.setCacheObject("cache-00", cache00 + "," + value0, 120, TimeUnit.MINUTES);
+ else redisCache.setCacheObject("cache-00", value0, 120, TimeUnit.MINUTES);
+ redisCache.deleteObject("cache-0");
+ } else {
+ for (int i = 1; i < 6; i++) {
+ //鍙栧嚭浠巆ache-1 鍒� cache-5鐨勭涓�涓瓙浠诲姟淇℃伅
+ String value = redisCache.getCacheObject("cache-" + i);
+ if (StringUtils.isEmpty(value)) continue;
+ List<PullTaskVO> pullTaskVOList2 = getPullTaskList(value, "cache-" + i);
+ if (CollectionUtils.isNotEmpty(pullTaskVOList2) && pullTaskVOList2.size() > 0) {
+ pullTaskVOList.addAll(pullTaskVOList2);
+ }
+ //灏哻ache-i鐨勬暟鎹紝杞Щ涓嶅鍔瞔ache-0i涓�
+ String cache0i = redisCache.getCacheObject("cache-0" + i);
+ if (!StringUtils.isEmpty(cache0i)) redisCache.setCacheObject("cache-0" + i, cache0i + "," + value);
+ else redisCache.setCacheObject("cache-0" + i, value);
+ redisCache.deleteObject("cache-" + i);
+ }
+ }
+ if (CollectionUtils.isNotEmpty(pullTaskVOList)) {
+ //缁欏洖璋冨弬鏁拌祴鍊�
+ for (PullTaskVO pullTaskVO : pullTaskVOList) {
+ pullTaskVO.setAsrcallback(ASRCallBackPath);
+ }
+ }
+ return pullTaskVOList;
+ }
+
+
+ private List<PullTaskVO> getPullTaskList(String subIds, String cacheName) {
+ log.error("浠诲姟鎷夊彇subIds鐨勫�兼槸澶氬皯锛歿}", subIds);
+ //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖
+ List<PullTaskVO> pullTaskVOList = new ArrayList<>();
+ //newValue0鐢ㄤ簬淇濆瓨娌℃湁澶勭悊鐨勫瓙 浠诲姟
+ String newValue0 = "";
+ //鏍规嵁,鑾峰彇瀛愪换鍔$殑ID
+ String[] split = subIds.split(",,");
+ for (int i = 0; i < split.length; i++) {
+ if (cacheName.equals("cache-0") && i < split.length || !cacheName.equals("cache-0") && i < 1) {
+ PullTaskVO pullTaskVO = new PullTaskVO();
+ String subId = split[i].trim().replace(",", "");
+ ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(subId));
+ 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)) return null;
+ //鑾峰彇閫氶厤绗﹀尮閰嶈繃鍚庣殑闂
+ String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getIvrtext());
+ String kcb = serviceTask.getKcb() + "," + scrContent;
+// String kcb = ivrTaskTemplate.getRevisitBefore();
+
+ //灏佽杩斿洖鏁版嵁
+ //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);
+// redisCache.setCacheObject(subId.trim() + "-" + serviceSubtask.getPhone().trim() + "-firstSort", 1, 120, TimeUnit.MINUTES);
+ } else {
+ if (StringUtils.isEmpty(newValue0)) {
+ newValue0 = "," + split[i].trim() + ",";
+ } else {
+ newValue0 = newValue0 + "," + split[i].trim() + ",";
+ }
+ redisCache.setCacheObject(cacheName, newValue0);
+ }
+ }
+
+ return pullTaskVOList;
+ }
+
//涓嬮潰鐨勪唬鐮佷笉鑳藉垹闄わ紝涓婇潰鐨勬柟娉曞彧鏄厤鍚堢數璇濈鑱旇皟鐢ㄧ殑锛�
// @Override
@@ -762,37 +1669,192 @@
// }
@Override
- public Integer saveQuestionAnswer(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
- RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
- Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam1(), pri_key));
- Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam2(), pri_key));
- ServiceSubtask ivrTaskSingle = new ServiceSubtask();
- ivrTaskSingle.setTaskid(tid);
- ivrTaskSingle.setPatid(pid);
- List<ServiceSubtask> ivrTaskSingles = serviceSubtaskMapper.selectServiceSubtaskList(ivrTaskSingle);
- if (CollectionUtils.isEmpty(ivrTaskSingles) || ivrTaskSingles.size() == 0) {
- log.error("鎶ラ敊浜嗭紝ivrTaskSingles鏁版嵁涓虹┖浜嗭細{}", ivrTaskSingle);
- return 0;
- }
+ public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
int i = 0;
- if (CollectionUtils.isNotEmpty(serviceSubTaskDetailReq.getIvrTaskcalldetailList())) {
- //闅忚
- for (IvrTaskcalldetail ivrTaskcalldetail : serviceSubTaskDetailReq.getIvrTaskcalldetailList()) {
- ivrTaskcalldetail.setCallid(ivrTaskSingles.get(0).getId().toString());
- ivrTaskcalldetail.setCalldetailid(UUID.randomUUID().toString());
- ivrTaskcalldetail.setCreateTime(new Date());
- i = ivrTaskcalldetailMapper.insertIvrTaskcalldetail(ivrTaskcalldetail);
+ 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));
+ ServiceSubtaskVO ivrTaskSingle = new ServiceSubtaskVO();
+ 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;
}
- } else if (CollectionUtils.isNotEmpty(serviceSubTaskDetailReq.getSvyTasksingledetailList())) {
- //闂嵎
- for (SvyTasksingledetail svyTasksingledetail : serviceSubTaskDetailReq.getSvyTasksingledetailList()) {
- svyTasksingledetail.setCallid(ivrTaskSingles.get(0).getId().toString());
- svyTasksingledetail.setCalldetailid(UUID.randomUUID().toString());
- svyTasksingledetail.setCreateTime(new Date());
- i = svyTasksingledetailMapper.insertSvyTasksingledetail(svyTasksingledetail);
+ //闅忚
+ for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
+ serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());
+ serviceSubtaskDetail.setId(UUID.randomUUID().toString());
+ serviceSubtaskDetail.setCreateTime(new Date());
+ i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail);
+ }
+ } else {
+ if (serviceSubTaskDetailReq != null && CollectionUtils.isNotEmpty(serviceSubTaskDetailReq.getServiceSubtaskDetailList())) {
+ for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
+ serviceSubtaskDetail.setCreateTime(new Date());
+ //鍏堟牴鎹瓙浠诲姟id,浠诲姟ID鍜岄棶棰樺簭鍙锋煡璇竴涓嬶紝璇ラ棶棰樻槸鍚﹀凡缁忔湁鍊硷紝濡傛灉鏈夊�硷紝鐩存帴淇敼锛屽鏋滀负绌猴紝鐩存帴鎻掑叆
+ ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();
+ ssd.setSubId(serviceSubtaskDetail.getSubId());
+ ssd.setTaskid(serviceSubtaskDetail.getTaskid());
+ ssd.setTemplatequestionnum(serviceSubtaskDetail.getTemplatequestionnum());
+ 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 {
+ 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")) {
+ //鏃犱汉鎺ュ惉
+ getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid()));
+ redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
+ } 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()));
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+ //涓嬭浇鏂囦欢
+ ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
+ redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
+ } else {
+ //鎮h�呮嫆缁濋殢璁�
+ ServiceSubtask serviceSubtask = new ServiceSubtask();
+ serviceSubtask.setRemark("鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�");
+ serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));
+ 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");
+ }
+
+ return 1;
+ }
+
+ @Override
+ public List<ServiceSubtaskCount> getSfFzInfoEveryMonth(ServiceSubtaskCountReq serviceSubtaskCountReq) {
+ if (serviceSubtaskCountReq.getUserId() == null) {
+ Long userId = SecurityUtils.getUserId();
+ serviceSubtaskCountReq.setUserId(userId);
+ }
+ if (serviceSubtaskCountReq.getStartTime() == null) {
+ LocalDate of = LocalDate.of(LocalDate.now().getYear(), 1, 1);
+ serviceSubtaskCountReq.setStartTime(Date.from(of.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+ }
+ if (serviceSubtaskCountReq.getEndTime() == null) {
+ serviceSubtaskCountReq.setEndTime(new Date());
+ }
+ List<ServiceSubtaskCount> sfFzInfoEveryMonth = serviceSubtaskMapper.getSfFzInfoEveryMonth(serviceSubtaskCountReq);
+ List<ServiceSubtaskCount> result = sfFzInfoEveryMonth.stream().collect(Collectors.groupingBy(ServiceSubtaskCount::getMonth, Collectors.groupingBy(ServiceSubtaskCount::getServiceType, Collectors.summingLong(ServiceSubtaskCount::getCount)))).entrySet().stream().flatMap(monthEntry -> monthEntry.getValue().entrySet().stream().map(typeEntry -> new ServiceSubtaskCount(monthEntry.getKey(), typeEntry.getKey(), typeEntry.getValue()))).collect(Collectors.toList());
+
+ List<ServiceSubtaskCount> result2 = new ArrayList<>();
+ //鏍规嵁鏈嶅姟绫诲瀷杩涜绛涢��
+ if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getServiceType())) {
+ for (ServiceSubtaskCount serviceSubtaskCount : result) {
+ for (Long type : serviceSubtaskCountReq.getServiceType()) {
+ if (type == serviceSubtaskCount.getServiceType()) {
+ result2.add(serviceSubtaskCount);
+ }
+ }
+ }
+ } else {
+ result2 = result;
+ }
+ return result2;
+ }
+
+ /**
+ * 鑾峰彇闅忚缁熻姣斾緥
+ *
+ * @param serviceSubtaskCountReq
+ * @return
+ */
+ @Override
+ public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {
+ log.error("getSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
+ List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
+ Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(ServiceSubtask::getLeavehospitaldistrictname));
+ for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
+ if (CollectionUtils.isEmpty(serviceSubtaskList)) {
+ continue;
+ }
+ ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList);
+ if (ObjectUtils.isNotEmpty(statistic)) {
+ serviceSubtaskStatistics.add(statistic);
+ }
+ }
+ return serviceSubtaskStatistics;
+ }
+
+ private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) {
+ ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
+ serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
+ serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
+ serviceSubtaskStatistic.setServiceCount(serviceSubtaskList.size());
+ for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+ //涓嶉殢璁挎暟閲�
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
+ serviceSubtaskStatistic.setBzxCount(serviceSubtaskStatistic.getBzxCount() + 1L);
+ }
+ //搴旈殢璁挎暟閲�
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+ serviceSubtaskStatistic.setYsfCount(serviceSubtaskStatistic.getYsfCount() + 1L);
+ }
+ //鍙戦�佸け璐ユ暟閲�
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+ serviceSubtaskStatistic.setFssbCount(serviceSubtaskStatistic.getFssbCount() + 1L);
+ }
+ //寰呭彂閫佹暟閲�
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
+ serviceSubtaskStatistic.setDfsCount(serviceSubtaskStatistic.getDfsCount() + 1L);
+ }
+ //宸插彂閫佹暟閲�
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 3) {
+ serviceSubtaskStatistic.setYfsCount(serviceSubtaskStatistic.getYfsCount() + 1L);
+ }
+ //宸插畬鎴愭暟閲�
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 6) {
+ //宸插彂閫侊紝鍖呭惈宸插畬鎴�
+ serviceSubtaskStatistic.setYfsCount(serviceSubtaskStatistic.getYfsCount() + 1L);
+ serviceSubtaskStatistic.setYwcCount(serviceSubtaskStatistic.getYwcCount() + 1L);
+ }
+
+ if (StringUtils.isNotEmpty(serviceSubtask.getExcep()) && serviceSubtask.getExcep().equals("1")) {
+ //寮傚父鏍囪瘑
+ serviceSubtaskStatistic.setYczs(serviceSubtaskStatistic.getYczs() + 1L);
+
+ }
+
+ }
+ //闅忚瀹屾垚鐜�=宸插彂閫�/闅忚鏁�
+ if (serviceSubtaskStatistic.getYfsCount() == 0 || CollectionUtils.isEmpty(serviceSubtaskList)) {
+ serviceSubtaskStatistic.setSfwcl("0");
+ } else {
+ BigDecimal multiply = BigDecimal.valueOf(serviceSubtaskStatistic.getYfsCount()).divide(BigDecimal.valueOf(serviceSubtaskList.size()), 2, BigDecimal.ROUND_HALF_UP);
+ serviceSubtaskStatistic.setSfwcl(multiply.toString());
+ }
+
+ return serviceSubtaskStatistic;
}
private IvrTaskTemplateScriptVO getNextQuestion(List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO IvrTaskTemplateScriptVO) {
@@ -806,4 +1868,80 @@
return null;
}
+ private ServiceSubtaskDetail getServiceSubtaskDetail(PhoneCallReqYQVO phoneCallReqYQVO, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask, IvrTaskTemplate ivrTaskTemplate) {
+ 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.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.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.getId());
+ serviceSubtaskDetail.setQuestiontext(ivrTaskTemplateScriptVO.getIvrtext());
+ serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath());
+ serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType());
+ serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());
+ serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText());
+
+ int i = 1;
+ for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {
+ if (ivrTaskTemplateTargetoption.getIsUserOperation() == 1) {
+ serviceSubtaskDetail.setMatchedtext(ivrTaskTemplateTargetoption.getTargetvalue());
+ }
+ 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;
+ }
+
+ 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);
+ ServiceOutPath serviceOutPath = new ServiceOutPath();
+ serviceOutPath.setParam1(taskId);
+ serviceOutPath.setParam2(patid);
+ serviceOutPath.setCreateTime(new Date());
+ iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+ //杞垚16杩涘埗
+ String format = String.format("%03X", serviceOutPath.getId());
+ serviceOutPath.setRadix(format);
+ serviceOutPath.setUpdateTime(new Date());
+ iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+ SendMagParam sendMagParam = new SendMagParam();
+ sendMagParam.setUrl(localIP + ":" + req_path + "/sf?p=" + format);
+ sendMagParam.setContent("銆愭柊鍗庡尰闄€�戞偍濂斤紝閭�璇锋偍濉啓鍑洪櫌闅忚璋冩煡琛紝璇风偣鍑�" + sendMagParam.getUrl() + "濉啓銆傛劅璋㈡偍閰嶅悎锛�");
+ Map<String, String> map = new HashMap<>();
+ map.put("phone", serviceSubtask.getPhone());
+ map.put("content", sendMagParam.getContent());
+ String result = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(map));
+ redisCache.setCacheObject(subTaskId + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
+ if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) serviceSubtask.setRemark("鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔�");
+ else serviceSubtask.setRemark("鐭俊琛ュ伩鍙戦�佹垚鍔�");
+ //璁板綍涓�涓嬭ˉ鍋挎柟寮�
+ if (StringUtils.isNotEmpty(serviceSubtask.getPreachform())) {
+ serviceSubtask.setPreachform(serviceSubtask.getPreachform() + ",1");
+ }
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+ }
}
--
Gitblit v1.9.3