package com.smartor.service.impl; 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.smartor.config.PhoneUtils; import com.smartor.config.PhoneUtils; import com.smartor.config.RabbitMqConfig; import com.smartor.domain.*; import com.smartor.mapper.IvrLibaExtemplatescriptMapper; import com.smartor.mapper.IvrLibaTemplateTargetoptionMapper; import com.smartor.mapper.IvrTaskcallMapper; import com.smartor.service.IIvrTaskcallService; 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.amqp.AmqpException; import org.springframework.amqp.core.Message; import org.springframework.amqp.core.MessagePostProcessor; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; 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 IvrTaskcallServiceImpl implements IIvrTaskcallService { @Autowired private IvrTaskcallMapper ivrTaskcallMapper; @Autowired private IvrLibaTemplateTargetoptionMapper ivrLibaScriptTargetoptionMapper; @Autowired private RedisCache redisCache; @Autowired private IvrLibaExtemplatescriptMapper ivrLibaExtemplatescriptMapper; @Autowired private RabbitTemplate rabbitTemplate; /** * 查询单一任务(随访) * * @param id 单一任务(随访)主键 * @return 单一任务(随访) */ @Override public IvrTaskcall selectIvrTaskcallById(Long id) { return ivrTaskcallMapper.selectIvrTaskcallById(id); } /** * 查询单一任务(随访)列表 * * @param ivrTaskcall 单一任务(随访) * @return 单一任务(随访) */ @Override public List selectIvrTaskcallList(IvrTaskcall ivrTaskcall) { return ivrTaskcallMapper.selectIvrTaskcallList(ivrTaskcall); } /** * 新增单一任务(随访) * * @param ivrTaskcall 单一任务(随访) * @return 结果 */ @Override public int insertIvrTaskcall(IvrTaskcall ivrTaskcall) { ivrTaskcall.setCreateTime(DateUtils.getNowDate()); return ivrTaskcallMapper.insertIvrTaskcall(ivrTaskcall); } /** * 修改单一任务(随访) * * @param ivrTaskcall 单一任务(随访) * @return 结果 */ @Override public int updateIvrTaskcall(IvrTaskcall ivrTaskcall) { ivrTaskcall.setUpdateTime(DateUtils.getNowDate()); return ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); } /** * 批量删除单一任务(随访) * * @param ids 需要删除的单一任务(随访)主键 * @return 结果 */ @Override public int deleteIvrTaskcallByIds(Long[] ids) { Integer i = 0; for (Long id : ids) { i = ivrTaskcallMapper.deleteIvrTaskcallById(id); } return i; } /** * 单一任务 * * @param ivrTaskcallVO 单一任务 * @return 结果 */ @Transactional(rollbackFor = Exception.class) @Override public int insertOrUpdateTask(IvrTaskcallVO ivrTaskcallVO) { if (ObjectUtils.isEmpty(ivrTaskcallVO)) { log.info("任务入参为空,请检查入参"); throw new BaseException("任务入参为空,请检查入参"); } Integer integer = 0; if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 1) { //新增 if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getPatTaskRelevances())) { for (PatTaskRelevance patTaskRelevance : ivrTaskcallVO.getPatTaskRelevances()) { //将任务信息新增到宣教任务表中 IvrTaskcall ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskcall.class); ivrTaskcall.setSendname(patTaskRelevance.getName()); ivrTaskcall.setAge(patTaskRelevance.getAge()); ivrTaskcall.setSfzh(patTaskRelevance.getSfzh()); ivrTaskcall.setPhone(patTaskRelevance.getPhone()); ivrTaskcall.setAddr(patTaskRelevance.getAddr()); ivrTaskcall.setCreateTime(DateUtils.getNowDate()); ivrTaskcall.setTextParam(new Gson().toJson(ivrTaskcallVO.getTextParam())); if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) { ivrTaskcall.setSendTimeSlot(ivrTaskcallVO.getSendTimeslot().toString()); } ivrTaskcallMapper.insertIvrTaskcall(ivrTaskcall); integer = ivrTaskcall.getId().intValue(); } } } else if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 2) { if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getPatTaskRelevances())) { for (PatTaskRelevance patTaskRelevance : ivrTaskcallVO.getPatTaskRelevances()) { IvrTaskcall ivrTaskcall = DtoConversionUtils.sourceToTarget(ivrTaskcallVO, IvrTaskcall.class); ivrTaskcall.setSendname(patTaskRelevance.getName()); ivrTaskcall.setAge(patTaskRelevance.getAge()); ivrTaskcall.setSfzh(patTaskRelevance.getSfzh()); ivrTaskcall.setPhone(patTaskRelevance.getPhone()); ivrTaskcall.setAddr(patTaskRelevance.getAddr()); ivrTaskcall.setCreateTime(DateUtils.getNowDate()); if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) { ivrTaskcall.setSendTimeSlot(ivrTaskcallVO.getSendTimeslot().toString()); } ivrTaskcall.setTextParam(new Gson().toJson(ivrTaskcallVO.getTextParam())); ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); integer = ivrTaskcall.getId().intValue(); } } } else if (ivrTaskcallVO.getIsoperation() != null && ivrTaskcallVO.getIsoperation() == 3) { ivrTaskcallMapper.deleteIvrTaskcallById(ivrTaskcallVO.getId()); integer = ivrTaskcallVO.getId().intValue(); } return integer; } /** * 任务发送 * * @return */ @Override public int heTaskSend(IvrTaskcallVO ivrTaskcallVO) { //判断任务是否是立即发送 if (ivrTaskcallVO.getSendType().equals("2") && ivrTaskcallVO.getSendstate() == 1) { IvrTaskcallMQ ivrTaskcallMQ = new IvrTaskcallMQ(); ivrTaskcallMQ.setTaskid(ivrTaskcallVO.getTaskid()); ivrTaskcallMQ.setSendType("1"); ivrTaskcallMQ.setTemplateid(ivrTaskcallVO.getTemplateid()); //立即发送 rabbitTemplate.convertAndSend(RabbitMqConfig.phone_exchange, RabbitMqConfig.routing_key, new Gson().toJson(ivrTaskcallMQ), message -> { //注意这里时间可以使long,而且是设置header message.getMessageProperties().setHeader("x-delay", 0); return message; }); } else if (ivrTaskcallVO.getSendType().equals("2") && ivrTaskcallVO.getSendstate() == 1) { //时间段发送 if (CollectionUtils.isNotEmpty(ivrTaskcallVO.getSendTimeslot())) { for (TaskSendTimeVO taskSendTimeVO : ivrTaskcallVO.getSendTimeslot()) { List list = new ArrayList<>(); list.add(taskSendTimeVO); //获取开始发送时间 String begantime = taskSendTimeVO.getBegantime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //记录目前到发送时间的毫秒值 (发送时间的毫秒值 - 当前时间的毫秒值) Long milliseconds = 1000L; try { Date date = sdf.parse(begantime); milliseconds = date.getTime() - System.currentTimeMillis(); System.out.println("日期毫秒数:" + milliseconds); } catch (Exception e) { e.printStackTrace(); } IvrTaskcallMQ ivrTaskcallMQ = new IvrTaskcallMQ(); ivrTaskcallMQ.setTaskid(ivrTaskcallVO.getTaskid()); ivrTaskcallMQ.setSendType("2"); ivrTaskcallMQ.setTemplateid(ivrTaskcallVO.getTemplateid()); ivrTaskcallMQ.setSendTimeslot(list); Long finalMilliseconds = milliseconds; rabbitTemplate.convertAndSend(RabbitMqConfig.phone_exchange, RabbitMqConfig.routing_key, new Gson().toJson(ivrTaskcallMQ), message -> { //注意这里时间可以使long,而且是设置header message.getMessageProperties().setHeader("x-delay", finalMilliseconds); return message; }); } } } return 0; } @Override public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO) { log.info("phoneCallBackVO的入参:{},{},{},{},{},{},{}", phoneCallBackVO.getResultType(), phoneCallBackVO.getUuid(), phoneCallBackVO.getErrResult(), phoneCallBackVO.getTextResult(), phoneCallBackVO.getHangUpResult(), phoneCallBackVO.getEnumState(), phoneCallBackVO.getUint8()); //获取数据 Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid()); if (!aBoolean) { 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); } String cacheObject = redisCache.getCacheObject(phoneCallBackVO.getUuid()); ObjectMapper objectMapper = new ObjectMapper(); Map map = null; try { map = objectMapper.readValue(cacheObject, Map.class); } catch (JsonProcessingException e) { e.printStackTrace(); } IvrTaskcall ivrTaskcall = (IvrTaskcall) map.get("ivrTaskcall"); List ivrLibaTemplateScriptVOs = (List) map.get("ivrLibaTemplateScriptVO"); //将uuid更新到数据库中 ivrTaskcall.setSenduuid(phoneCallBackVO.getUuid()); ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); //获取模板信息 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 == ivrTaskcall.getRecallcount().intValue()) { log.info("无人接听:{}, {}", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid()); //连续打规定次,如果要没人接,那就结束 ivrTaskcall.setResult(phoneCallBackVO.getErrResult()); ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); redisCache.deleteObject(phoneCallBackVO.getUuid() + "uint8"); } else if (integer != null && integer < ivrTaskcall.getRecallcount().intValue()) { //进行重拨 PhoneUtils phoneUtils = new PhoneUtils(); phoneUtils.ob(phoneCallBackVO.getUuid(), null, ivrTaskcall.getPhone(), null, null, null, null, null, null, null, null); } } } else if (phoneCallBackVO.getResultType() == 2) { //通话状态更新接口: 2 if (phoneCallBackVO.getEnumState() == 0) { // 0-振铃 Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "enumState"); if (integer != null && integer < ivrTaskcall.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 == ivrTaskcall.getRecallcount().intValue()) { ivrTaskcall.setResult("无人接听"); ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState"); } } else if (phoneCallBackVO.getEnumState() == 2) { //患者挂断电话 log.info("患者挂断电话:{}", phoneCallBackVO.getUuid()); ivrTaskcall.setResult(phoneCallBackVO.getHangUpResult()); ivrTaskcallMapper.updateIvrTaskcall(ivrTaskcall); 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 list = Arrays.asList(split); List list1 = new ArrayList<>(); if (StringUtils.isNotEmpty(extemplateID)) { for (String str : list) { list1.add(Long.valueOf(str)); } List 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; } private IvrLibaTemplateScriptVO getNextQuestion(List ivrLibaTemplateScriptVOList, IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO) { for (int j = 0; j < ivrLibaTemplateScriptVOList.size(); j++) { if (ivrLibaTemplateScriptVOList.get(j).getTargetid() == ivrLibaTemplateScriptVO.getTargetid() + 1) { // 对该条templateScriptVO进行处理 return ivrLibaTemplateScriptVOList.get(j); } } return null; } }