package com.smartor.service.impl;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.google.gson.Gson;
|
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.smartor.config.PhoneUtils;
|
import com.smartor.domain.*;
|
import com.smartor.mapper.*;
|
import com.smartor.service.IServiceSubtaskService;
|
import com.smartor.service.IServiceTaskService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.concurrent.TimeUnit;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
/**
|
* 单一任务(随访)Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2024-02-02
|
*/
|
@Slf4j
|
@Service
|
public class ServiceSubtaskServiceImpl implements IServiceSubtaskService {
|
@Autowired
|
private ServiceSubtaskMapper serviceSubtaskMapper;
|
|
@Autowired
|
private IvrTaskcalldetailMapper ivrTaskcalldetailMapper;
|
@Autowired
|
private SvyTasksingledetailMapper svyTasksingledetailMapper;
|
|
@Autowired
|
private IServiceTaskService serviceTaskService;
|
|
@Autowired
|
private IvrTaskTemplateTargetoptionMapper serviceTaskScriptTargetoptionMapper;
|
|
@Autowired
|
private IvrLibaTemplateScriptMapper ivrLibaTemplateScriptMapper;
|
|
@Autowired
|
private IvrTaskVisitResultMapper serviceTaskVisitResultMapper;
|
|
@Autowired
|
private RedisCache redisCache;
|
|
@Autowired
|
private IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper;
|
|
@Value("${pri_key}")
|
private String pri_key;
|
|
|
/**
|
* 查询单一任务(随访)
|
*
|
* @param id 单一任务(随访)主键
|
* @return 单一任务(随访)
|
*/
|
@Override
|
public ServiceSubtask selectServiceSubtaskById(Long id) {
|
return serviceSubtaskMapper.selectServiceSubtaskById(id);
|
}
|
|
/**
|
* 查询单一任务(随访)列表
|
*
|
* @param ServiceSubtask 单一任务(随访)
|
* @return 单一任务(随访)
|
*/
|
@Override
|
public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtask ServiceSubtask) {
|
return serviceSubtaskMapper.selectServiceSubtaskList(ServiceSubtask);
|
}
|
|
@Override
|
public ServiceTaskVO queryTaskByCondition(ServiceSubtask ServiceSubtask) {
|
//定义患者与单一任务关联表集合
|
List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
|
List<ServiceSubtask> list = selectServiceSubtaskList(ServiceSubtask);
|
if (CollectionUtils.isEmpty(list) || list.size() == 0) {
|
return new ServiceTaskVO();
|
}
|
ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(ServiceSubtask.getTaskid());
|
//将查出来的数据倒入ServiceSubtaskVO中
|
ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);
|
serviceTaskVO.setShowDate(serviceTask.getShowDate());
|
serviceTaskVO.setShowTimeMorn(serviceTask.getShowTimeMorn());
|
serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon());
|
serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight());
|
serviceTaskVO.setPreachform(serviceTask.getPreachform());
|
String sendTimeSlot = serviceTask.getSendTimeSlot();
|
ObjectMapper objectMapper = new ObjectMapper();
|
try {
|
//获取到发送时间的集合
|
if (com.ruoyi.common.utils.StringUtils.isNotEmpty(sendTimeSlot)) {
|
List<TaskSendTimeVO> taskSendTimeVOList = objectMapper.readValue(sendTimeSlot, List.class);
|
serviceTaskVO.setSendTimeslot(taskSendTimeVOList);
|
serviceTaskVO.setSendType(serviceTask.getSendType());
|
}
|
//文本变量参数
|
if (com.ruoyi.common.utils.StringUtils.isNotEmpty(serviceTask.getTextParam())) {
|
Map<String, Map<String, String>> textParam = objectMapper.readValue(serviceTask.getTextParam(), Map.class);
|
serviceTaskVO.setTextParam(textParam);
|
}
|
} catch (JsonProcessingException e) {
|
e.printStackTrace();
|
}
|
|
for (ServiceSubtask serviceSubtask1 : list) {
|
PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
|
if (!serviceSubtask1.getHospType().equals("2")) {
|
log.info("随访查询不为出院,{}", serviceSubtask1.getHospType());
|
//获取到患者信息,并放入到集合中
|
patTaskRelevance.setName(serviceSubtask1.getSendname());
|
patTaskRelevance.setAge(serviceSubtask1.getAge());
|
patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
|
patTaskRelevance.setPhone(serviceSubtask1.getPhone());
|
patTaskRelevance.setAddr(serviceSubtask1.getAddr());
|
patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
|
patTaskRelevance.setPatid(serviceSubtask1.getPatid());
|
patTaskRelevance.setSendState(serviceSubtask1.getSendstate());
|
patTaskRelevances.add(patTaskRelevance);
|
}
|
if (serviceSubtask1.getHospType().equals("2")) {
|
log.info("随访查询为出院,{}", serviceSubtask1.getHospType());
|
patTaskRelevance.setName(serviceSubtask1.getSendname());
|
patTaskRelevance.setAge(serviceSubtask1.getAge());
|
patTaskRelevance.setSfzh(serviceSubtask1.getSfzh());
|
patTaskRelevance.setPhone(serviceSubtask1.getPhone());
|
patTaskRelevance.setAddr(serviceSubtask1.getAddr());
|
patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
|
patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());
|
patTaskRelevance.setDiagname(serviceSubtask1.getDiagname());
|
patTaskRelevance.setPatid(serviceSubtask1.getPatid());
|
patTaskRelevance.setSendState(serviceSubtask1.getSendstate());
|
patTaskRelevances.add(patTaskRelevance);
|
}
|
}
|
|
serviceTaskVO.setPatTaskRelevances(patTaskRelevances);
|
return serviceTaskVO;
|
}
|
|
@Override
|
public List<ServiceSubtask> patItem(ServiceSubtask serviceSubtask) {
|
|
|
return this.selectServiceSubtaskList(serviceSubtask);
|
}
|
|
/**
|
* 新增单一任务(随访)
|
*
|
* @param serviceSubtask 单一任务(随访)
|
* @return 结果
|
*/
|
@Override
|
public int insertServiceSubtask(ServiceSubtask serviceSubtask) {
|
serviceSubtask.setCreateTime(DateUtils.getNowDate());
|
return serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
|
}
|
|
/**
|
* 修改单一任务(随访)
|
*
|
* @param serviceSubtask 单一任务(随访)
|
* @return 结果
|
*/
|
@Override
|
public Boolean updateServiceSubtask(ServiceSubtask serviceSubtask) {
|
serviceSubtask.setUpdateTime(DateUtils.getNowDate());
|
return serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
|
}
|
|
/**
|
* 批量删除单一任务(随访)
|
*
|
* @return 结果
|
*/
|
@Override
|
public int deleteServiceSubtaskByIds(Long[] ids) {
|
Integer i = 0;
|
for (Long id : ids) {
|
i = serviceSubtaskMapper.deleteServiceSubtaskById(id);
|
}
|
return i;
|
}
|
|
/**
|
* 单一任务
|
*
|
* @return 结果
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
@Override
|
public int insertOrUpdateTask(ServiceTaskVO serviceTaskVO) {
|
if (ObjectUtils.isEmpty(serviceTaskVO)) {
|
log.info("任务入参为空,请检查入参");
|
throw new BaseException("任务入参为空,请检查入参");
|
}
|
Integer integer = 1;
|
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());
|
serviceTaskService.insertServiceTask(serviceTask);
|
|
//将任务信息放到服务表中
|
ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
|
serviceSubtask.setTaskid(serviceTask.getTaskid().longValue());
|
serviceSubtask.setTemplatename(serviceTaskVO.getTemplatename());
|
//新增
|
if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
|
for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
|
//将任务信息新增到随访服务表中
|
serviceSubtask.setSendname(patTaskRelevance.getName());
|
serviceSubtask.setAge(patTaskRelevance.getAge());
|
serviceSubtask.setSfzh(patTaskRelevance.getSfzh());
|
serviceSubtask.setPhone(patTaskRelevance.getPhone());
|
serviceSubtask.setAddr(patTaskRelevance.getAddr());
|
serviceSubtask.setPatid(patTaskRelevance.getPatid());
|
serviceSubtask.setCreateTime(DateUtils.getNowDate());
|
serviceSubtask.setSendstate(1L);
|
serviceSubtask.setType(serviceTaskVO.getHospType());
|
serviceSubtask.setHospType(patTaskRelevance.getHospType());
|
serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
|
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
|
integer = serviceSubtask.getId().intValue();
|
}
|
}
|
|
} else if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 2) {
|
//任务修改
|
if (ObjectUtils.isNotEmpty(serviceTaskVO.getSendTimeslot()))
|
serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
|
//修改操作,需要将stopState状态+1
|
ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
|
serviceTask.setStopState(serviceTask1.getStopState() + 1);
|
serviceTask.setTemplateid(serviceTaskVO.getLibtemplateid());
|
serviceTaskService.updateServiceTask(serviceTask);
|
|
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.setAddr(patTaskRelevance.getAddr());
|
serviceSubtask.setPatid(patTaskRelevance.getPatid());
|
serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
|
serviceSubtask.setType(serviceTaskVO.getHospType());
|
serviceSubtask.setCreateTime(DateUtils.getNowDate());
|
serviceSubtask.setHospType(patTaskRelevance.getHospType());
|
serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
|
if (patTaskRelevance.getIsoperation() != null) {
|
if (patTaskRelevance.getIsoperation() == 2)
|
serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
|
if (patTaskRelevance.getIsoperation() == 1) {
|
serviceSubtask.setSendstate(1L);
|
serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
|
}
|
if (patTaskRelevance.getIsoperation() == 3)
|
// 通过taskid和patid去删除该条数据
|
serviceSubtaskMapper.deleteServiceSubtaskByCondition(serviceTaskVO.getTaskid(), patTaskRelevance.getPatid());
|
}
|
integer = serviceSubtask.getTaskid().intValue();
|
}
|
}
|
}
|
return integer;
|
}
|
|
|
@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("该uuid不存在");
|
}
|
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");
|
//将uuid更新到数据库中
|
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()) {
|
//没有下一题了,就挂断电话,播放结束语
|
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("去调用tts合成和播放接口: {},uuid为:{}", date, phoneCallBackVO.getUuid());
|
phoneUtils.ttsPlayback(nowQuestion.getScriptContent(), 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("静默话术 + 问题,去调用tts合成和播放接口: {},uuid为:{}", date, phoneCallBackVO.getUuid());
|
phoneUtils.ttsPlayback(slienceText + nowQuestion.getScriptContent(), phoneCallBackVO.getUuid());
|
return;
|
}
|
|
} else {
|
//isppd用来记录是否匹配到
|
Boolean isppd = false;
|
//有回话,对回答的问题,进行正则匹配(这里只针对选择题,其它题型不行)
|
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.getScriptContent(), 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()) {
|
//说明匹配正确了
|
//这里应该先判断类型,去再修改,设置IsUserOperation是单选题的改法
|
nowQuestion.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(true);
|
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.getScriptContent());
|
serviceTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult());
|
serviceTaskVisitResult.setCreateTime(new Date());
|
serviceTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue());
|
serviceTaskVisitResultMapper.insertIvrTaskVisitResult(serviceTaskVisitResult);
|
|
//将匹配到的标识改成true
|
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.getScriptContent(), phoneCallBackVO.getUuid());
|
return;
|
} else if (nextQuestion > IvrTaskTemplateScriptVOs.size()) {
|
//没有下一题了,就结束了
|
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 {
|
//没有匹配上当前option
|
//Targetregex2 为false,表示在Targetregex2中存在 语句中的关键字,这个option就不用再继续匹配了,直接匹配下一个option
|
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.getScriptContent(), phoneCallBackVO.getUuid());
|
return;
|
} else {
|
//就可以挂断电话了
|
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.info("++++++++++++++++++++++++++通用库是否为空: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、tts合成和播放, tts_playback”将结果传回
|
String date = simpleDateFormat1.format(new Date());
|
log.info("调用“15、tts合成和播放------: {},uuid为:{}", date, phoneCallBackVO.getUuid());
|
phoneUtils.ttsPlayback(nowQuestion.getScriptContent() + ivrTaskTemplateScriptVO.getSubmoduleText(), phoneCallBackVO.getUuid());
|
}
|
break;
|
}
|
String date = simpleDateFormat1.format(new Date());
|
log.info("最后的信息回复-: {},uuid为:{}", date, phoneCallBackVO.getUuid());
|
phoneUtils.ttsPlayback(nowQuestion.getScriptContent(), phoneCallBackVO.getUuid());
|
}
|
}
|
}
|
|
//下面的代码不能删除,上面的方法只是配合电话端联调用的,
|
// @Override
|
// public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
|
// log.error("phoneCallBackVO的入参:{},{},{},{},{},{},{}", phoneCallBackVO.getResultType(), phoneCallBackVO.getUuid(), phoneCallBackVO.getErrResult(), phoneCallBackVO.getTextResult(), phoneCallBackVO.getHangUpResult(), phoneCallBackVO.getEnumState(), phoneCallBackVO.getUint8());
|
// //获取数据
|
// Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());
|
// if (!aBoolean) {
|
// throw new BaseException("该uuid不存在");
|
// }
|
// Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "hangup");
|
// if (hangupValue != null && hangupValue == 1) {
|
// //hangupValue == 1 随访结束,直接可以挂电话
|
// PhoneUtils phoneUtils = new PhoneUtils();
|
// phoneUtils.hangup(phoneCallBackVO.getUuid(), null, null, null, null, null, null, null);
|
//
|
// }
|
//
|
// Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());
|
//// ObjectMapper objectMapper = new ObjectMapper();
|
//// Map<String, Object> map = null;
|
//// try {
|
//// map = objectMapper.readValue(cacheObject, Map.class);
|
//// } catch (JsonProcessingException e) {
|
//// e.printStackTrace();
|
//// }
|
//
|
// ServiceSubtask ServiceSubtask = (ServiceSubtask) map.get("ServiceSubtask");
|
// List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO");
|
// //将uuid更新到数据库中
|
// ServiceSubtask.setSenduuid(phoneCallBackVO.getUuid());
|
// ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
|
//
|
// //获取模板信息
|
// IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO");
|
//
|
//
|
// //首先判断resultType
|
// if (phoneCallBackVO.getResultType() == 1) {
|
// //呼叫结果接口: 1
|
// if (phoneCallBackVO.getUint8() == 1) {
|
// //呼叫失败,去redis中记录一下失败次数,进行再次呼叫
|
// Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "uint8");
|
// if (integer != null) {
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", integer + 1, 120, TimeUnit.MINUTES);
|
// } else {
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", 1, 120, TimeUnit.MINUTES);
|
// }
|
//
|
// if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {
|
// log.info("无人接听:{}, {}", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid());
|
// //连续打规定次,如果要没人接,那就结束
|
// ServiceSubtask.setResult(phoneCallBackVO.getErrResult());
|
// ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
|
// redisCache.deleteObject(phoneCallBackVO.getUuid() + "uint8");
|
// } else if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {
|
// //进行重拨
|
// PhoneUtils phoneUtils = new PhoneUtils();
|
// phoneUtils.ob(null, null, null, null, null, null, null, ServiceSubtask.getPhone(), phoneCallBackVO.getUuid(), true);
|
// }
|
// }
|
//
|
// } else if (phoneCallBackVO.getResultType() == 2) {
|
// //通话状态更新接口: 2
|
// if (phoneCallBackVO.getEnumState() == 0) {
|
// // 0-振铃
|
// Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "enumState");
|
//
|
// if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", integer + 1, 120, TimeUnit.MINUTES);
|
// } else if (integer == null) {
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", 1, 120, TimeUnit.MINUTES);
|
// } else if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {
|
// ServiceSubtask.setResult("无人接听");
|
// ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
|
// redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
|
// }
|
// } else if (phoneCallBackVO.getEnumState() == 2) {
|
// //患者挂断电话
|
// log.info("患者挂断电话:{}", phoneCallBackVO.getUuid());
|
// ServiceSubtask.setResult(phoneCallBackVO.getHangUpResult());
|
// ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
|
// redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
|
// }
|
//
|
//
|
// } else if (phoneCallBackVO.getResultType() == 3) {
|
// //语音识别结果上报接口: 3
|
// Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
|
// QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
|
// IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
|
// PhoneUtils phoneUtils = new PhoneUtils();
|
//
|
// if (StringUtils.isEmpty(phoneCallBackVO.getTextResult())) {
|
// //无回话
|
// //判断noVoice是否已经到了最大值
|
// if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {
|
// //已经问了对应的遍数,就判断是否还有下一题
|
// if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {
|
// //没有下一题了,就挂断电话,播放结束语
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
|
// phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
|
// } else {
|
// //有下一题
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
|
// IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
|
// // 问题, 去调用“tts合成和播放”接口
|
// phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
|
// }
|
// } else {
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
|
// //调用ivrLibaTemplateScriptVO中的slienceText(静默话术)
|
// String slienceText = nowQuestion.getSlienceText();
|
// //静默话术 + 问题, 去调用“tts合成和播放”接口
|
// phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
|
// return new PhoneCallBackVO();
|
// }
|
//
|
// } else {
|
// //有回话,对回答的问题,进行正则匹配(这里只针对选择题,其它题型不行)
|
// for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {
|
// //包含
|
// Matcher matcher = null;
|
// if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {
|
// Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());
|
// matcher = pattern.matcher(phoneCallBackVO.getTextResult());
|
// }
|
// //不包含
|
// Matcher matcher2 = null;
|
// if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {
|
// Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
|
// matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
|
// }
|
// log.info("phoneCallBack--Targetregex的值为:{}, phoneCallBack--Targetregex2的值为:{}", nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
|
// if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
|
// //说明匹配正确了
|
// //这里应该先判断类型,去再修改,设置IsUserOperation是单选题的改法
|
// nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
|
// ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));
|
//
|
//
|
// //将静默置为0
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
|
// //获取下一题
|
// Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
|
// for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {
|
// if (script.getTargetid() == nextQuestion) {
|
// QuestionMessage questionMessage = new QuestionMessage();
|
// questionMessage.setNowQuestion(script);
|
// questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
|
// break;
|
// }
|
// }
|
// break;
|
// } else {
|
// //没有匹配到
|
// Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum");
|
// //无匹配次数去判断是否到最大询问次数,并且所有的选项都匹配完了
|
// if (mateNum == ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
|
// //如果下一题为空.则新的数据返回,并加上感谢语
|
// if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {
|
// QuestionMessage questionMessage = new QuestionMessage();
|
// IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
|
// questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
|
// questionMessage.setNowQuestion(nextQuestion);
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
|
// } else {
|
// //就可以挂断电话了
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
|
// phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
|
// break;
|
// }
|
// } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
|
// //没有问到规定次数
|
// mateNum = mateNum + 1;
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES);
|
// }
|
// }
|
//
|
// }
|
// //选项匹配完成后,需要再去通过库再进行匹配一次
|
// String extemplateID = ivrLibaTemplateVO.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.info("++++++++++++++++++++++++++通用库是否为空: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");
|
// IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();
|
// ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
|
// ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
|
// if (ivrLibaExtemplatescript.getIsEnd() == 1) {
|
// //将问题置空
|
// IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
|
// nowQuestion1.setQuestionText(null);
|
// nowQuestion1.setQuestionVoice(null);
|
// questionMessage.setNowQuestion(nowQuestion1);
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
|
//
|
// redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES);
|
// }
|
//
|
// //调用“15、tts合成和播放, tts_playback”将结果传回
|
//
|
//
|
// }
|
// break;
|
// }
|
// }
|
//
|
// }
|
// }
|
// return phoneCallBackVO;
|
// }
|
|
@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;
|
}
|
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);
|
}
|
} 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);
|
}
|
}
|
return i;
|
}
|
|
private IvrTaskTemplateScriptVO getNextQuestion(List<IvrTaskTemplateScriptVO> IvrTaskTemplateScriptVOList, IvrTaskTemplateScriptVO IvrTaskTemplateScriptVO) {
|
|
for (int j = 0; j < IvrTaskTemplateScriptVOList.size(); j++) {
|
if (IvrTaskTemplateScriptVOList.get(j).getTargetid() == IvrTaskTemplateScriptVO.getTargetid() + 1) {
|
// 对该条templateScriptVO进行处理
|
return IvrTaskTemplateScriptVOList.get(j);
|
}
|
}
|
return null;
|
}
|
|
}
|