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 | 697 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 560 insertions(+), 137 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 100d45c..a34347b 100644 --- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java @@ -1,31 +1,29 @@ package com.smartor.service.impl; -import afu.org.checkerframework.checker.oigj.qual.O; 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.domain.entity.SysDictData; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.*; -import com.ruoyi.common.utils.http.HttpUtils; +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.IIvrTaskTemplateScriptService; -import com.smartor.service.IIvrTaskTemplateService; -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; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Async; 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; @@ -70,18 +68,51 @@ @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; /** * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級 @@ -153,6 +184,7 @@ 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()); @@ -175,6 +207,7 @@ 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()); @@ -220,13 +253,18 @@ Integer yc = 0; Integer fssb = 0; Integer yfs = 0; - Integer blq = 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) blq = blq + 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); @@ -234,8 +272,10 @@ map.put("yc", yc); map.put("fssb", fssb); map.put("yfs", yfs); - map.put("blq", blq); - + map.put("xj", xj); + map.put("dfs", dfs); + map.put("ywc", ywc); + map.put("yfs2", yfs + ywc); return map; } @@ -309,7 +349,19 @@ 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; @@ -325,12 +377,15 @@ //灏嗕换鍔′俊鎭柊澧炲埌闅忚鏈嶅姟琛ㄤ腑 serviceSubtask.setSendname(patTaskRelevance.getName()); serviceSubtask.setAge(patTaskRelevance.getAge()); + serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid())); serviceSubtask.setSfzh(patTaskRelevance.getIdcardno()); - serviceSubtask.setPhone(patTaskRelevance.getPhone()); + 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()); @@ -344,6 +399,8 @@ 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(); } @@ -360,14 +417,33 @@ 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()); @@ -451,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()); @@ -462,7 +543,7 @@ // 闂锛� 鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙� String date = simpleDateFormat1.format(new Date()); log.info("鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid()); - phoneUtils.ttsPlayback(nowQuestion.getScriptContent(), phoneCallBackVO.getUuid()); + phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid()); } } else { redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES); @@ -471,7 +552,7 @@ //闈欓粯璇濇湳 + 闂锛� 鍘昏皟鐢ㄢ�渢ts鍚堟垚鍜屾挱鏀锯�濇帴鍙� String date = simpleDateFormat1.format(new Date()); log.info("闈欓粯璇濇湳 + 闂,鍘昏皟鐢╰ts鍚堟垚鍜屾挱鏀炬帴鍙�: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid()); - phoneUtils.ttsPlayback(slienceText + nowQuestion.getScriptContent(), phoneCallBackVO.getUuid()); + phoneUtils.ttsPlayback(slienceText + nowQuestion.getIvrtext(), phoneCallBackVO.getUuid()); return; } @@ -492,7 +573,7 @@ Pattern pattern2 = Pattern.compile(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()); matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult()); } - log.error("PCB--getQuestionText闂涓猴細{},UUID锛歿}", nowQuestion.getScriptContent(), 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鏄崟閫夐鐨勬敼娉� @@ -506,7 +587,7 @@ //灏嗘偅鑰呯殑鍥炵鍐欒繘琛ㄩ噷 IvrTaskVisitResult serviceTaskVisitResult = DtoConversionUtils.sourceToTarget(serviceSubtask, IvrTaskVisitResult.class); serviceTaskVisitResult.setId(null); - serviceTaskVisitResult.setQuestion(nowQuestion.getScriptContent()); + serviceTaskVisitResult.setQuestion(nowQuestion.getIvrtext()); serviceTaskVisitResult.setPatientAnswer(phoneCallBackVO.getTextResult()); serviceTaskVisitResult.setCreateTime(new Date()); serviceTaskVisitResult.setOptionResult(nowQuestion.getIvrTaskScriptTargetoptionList().get(j).getTargetvalue()); @@ -523,10 +604,14 @@ questionMessage.setNowQuestion(script); questionMessage.setQuestionList(IvrTaskTemplateScriptVOs); redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES); - phoneUtils.ttsPlayback(script.getScriptContent(), 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); @@ -564,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.getScriptContent(), 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); @@ -608,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(); @@ -627,13 +717,13 @@ //璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback鈥濆皢缁撴灉浼犲洖 String date = simpleDateFormat1.format(new Date()); log.info("璋冪敤鈥�15銆乼ts鍚堟垚鍜屾挱鏀�------: {},uuid涓猴細{}", date, phoneCallBackVO.getUuid()); - phoneUtils.ttsPlayback(nowQuestion.getScriptContent() + 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.getScriptContent(), phoneCallBackVO.getUuid()); + phoneUtils.ttsPlayback(nowQuestion.getIvrtext(), phoneCallBackVO.getUuid()); } } } @@ -645,6 +735,38 @@ */ @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); @@ -668,7 +790,8 @@ Map<String, String> req = new HashMap<>(); req.put("uuid", phoneCallReqYQVO.getUuid()); req.put("caller", phoneCallReqYQVO.getPhone()); - HttpUtils.sendPost(hangup, new Gson().toJson(req)); +// HttpUtils.sendPost(hangup, new Gson().toJson(req)); + HttpUtil.postJsonRequest(hangup, new Gson().toJson(req)); //鍒犻櫎缁撴潫璇殑鎮e瓨 redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "- jsy"); } else { @@ -679,9 +802,12 @@ return phoneCallBackYQVO; } //鑾峰彇鏀鹃煶鏄惁缁撴潫 - boolean isPlayEventOver = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop"); - if (!isPlayEventOver) { - return phoneCallBackYQVO; + Object isPlayEventOverObj = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop"); + if (ObjectUtils.isNotEmpty(isPlayEventOverObj)) { + Boolean isPlayEventOver = (Boolean) isPlayEventOverObj; + if (!isPlayEventOver) { + return phoneCallBackYQVO; + } } //閫氳繃瀛愪换鍔D鑾峰彇鍒版ā鏉夸俊鎭� @@ -713,7 +839,7 @@ //灏忎笌鐨勮瘽,灏辩户缁棶鎮h�� phoneCallBackYQVO.setType("text"); phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue()); - String scriptContent = ivrTaskTemplateScriptVO.getScriptContent(); + String scriptContent = ivrTaskTemplateScriptVO.getIvrtext(); log.error("SilentCallback鐨勯棶棰樺唴瀹箂criptContent锛歿}", scriptContent); phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent)); //灏嗛潤榛樻鏁板姞1 @@ -722,10 +848,16 @@ 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(ivrTaskTemplate.getRevisitAfter()); + phoneCallBackYQVO.setValue(serviceTask1.getJsy()); //灏嗙粨鏋滃啓鍒癲etail涓� ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq(); List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>(); @@ -740,34 +872,85 @@ serviceSubtask.setFinishtime(new Date()); serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); Map<String, String> map = delRedisValue(null, id.toString()); - redisCache.setCacheObject(map.get("cacheName"), map.get("val")); + 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涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄� - redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", ivrTaskTemplate.getRevisitAfter(), 120, TimeUnit.MINUTES); + 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) { - //鎾姤绗竴棰� - Integer integer = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim() + "-firstSort"); -// if(integer==0){ -// //integer==0,琛ㄧず寮�鍦虹櫧鍒氭挱鎶ュ畬锛岄渶瑕佸仠椤夸竴涓嬶紝绛夋偅鑰呰璇� -// redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim() + "-firstSort", 1, 120, TimeUnit.MINUTES); -// return phoneCallBackYQVO; -// } - if (ivrTaskTemplateScriptVO.getSort() == 1 && integer == 1) { - phoneCallBackYQVO.setType("text"); - phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue()); - String scriptContent = ivrTaskTemplateScriptVO.getScriptContent(); - phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent)); - redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim() + "-firstSort", 2, 120, TimeUnit.MINUTES); - return phoneCallBackYQVO; + //鍋氫竴涓爣璇嗭紝鐢ㄦ潵鍦ㄩ�氳瘽璇︽儏鎺ュ彛閲岋紝鍒ゆ柇鏄惁鏈変汉鎺ョ數璇濓紙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()); @@ -796,9 +979,34 @@ ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq(); List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>(); ivrTaskTemplateScriptVO.setQuestionResult(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getOptiondesc()); - serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate)); + 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"); // //鑾峰彇涓嬩竴棰� @@ -817,70 +1025,129 @@ 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); + 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.getScriptContent(); + String scriptContent = script.getIvrtext(); log.error("涓嬩竴棰橀棶棰橈細{}", scriptContent); - phoneCallBackYQVO.setValue(getObject(serviceSubtask, 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.getBranchFlag().equals("0")) { - if (ivrTaskTemplateScriptVO.getNextScriptno() == null || ivrTaskTemplateScriptVO.getNextScriptno() == 0) { - phoneCallBackYQVO.setType("text"); - phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue()); - //鏇存柊涓�涓嬪垎鏁� - double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); - serviceSubtask.setScore(BigDecimal.valueOf(score)); - serviceSubtask.setFinishtime(new Date()); - serviceSubtaskMapper.updateServiceSubtask(serviceSubtask); - //璁剧疆缁撴潫璇� - phoneCallBackYQVO.setValue(ivrTaskTemplate.getRevisitAfter()); - Long id = serviceSubtask.getId(); - Map<String, String> map = delRedisValue(null, id.toString()); + } 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涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄� - redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", ivrTaskTemplate.getRevisitAfter(), 120, TimeUnit.MINUTES); + 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 = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid()); + 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.getValue() + ivrTaskTemplate.getRevisitAfter()); - else phoneCallBackYQVO.setValue(ivrTaskTemplate.getRevisitAfter()); + phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + phoneCallBackYQVO.getValue() + serviceTask1.getJsy()); + else phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy()); //鏇存柊涓�涓嬪垎鏁� - double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + 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涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄� - redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", ivrTaskTemplate.getRevisitAfter(), 120, TimeUnit.MINUTES); + 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()); @@ -894,16 +1161,18 @@ if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) { phoneCallBackYQVO.setType("text"); phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue()); - String scriptContent = script.getScriptContent(); - phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent)); + 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 = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + 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); + redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES); } } } @@ -914,7 +1183,7 @@ redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid(), count + 1, 120, TimeUnit.MINUTES); phoneCallBackYQVO.setType("text"); - phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, ivrTaskTemplateScriptVO.getScriptContent())); + phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, ivrTaskTemplateScriptVO.getIvrtext())); } } @@ -922,10 +1191,20 @@ //涓嶆槸閫夋嫨棰�,鐩存帴璁板綍绛旀锛屽皢缁撴灉鍐欏埌detail涓� ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq(); List<ServiceSubtaskDetail> serviceSubtaskDetailList = new ArrayList<>(); - serviceSubtaskDetailList.add(getServiceSubtaskDetail(phoneCallReqYQVO, ivrTaskTemplateScriptVO, serviceSubtask, ivrTaskTemplate)); + 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]; + // String xh = idSort.split("-")[1]; //濡傛灉閫夐」鍒嗘敮涓�1鐨勮瘽锛屽垯闇�瑕佹牴鎹棶棰樹笂鐨刵extScriptno杩涜璺宠浆 //闂瓟棰樻病鏈夎烦杞� @@ -934,29 +1213,35 @@ if (ivrTaskTemplateScriptVO.getNextScriptno().intValue() == ivrTaskTemplateScript1.getSort()) { phoneCallBackYQVO.setType("text"); phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue()); - String scriptContent = ivrTaskTemplateScript1.getScriptContent(); - phoneCallBackYQVO.setValue(getObject(serviceSubtask, scriptContent)); + 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 = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + 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); + redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "SCORE", score, 120, TimeUnit.MINUTES); -// return phoneCallBackYQVO; } } } 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(ivrTaskTemplate.getRevisitAfter()); + phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy()); //鏇存柊涓�涓嬪垎鏁� - double score = redisCache.getCacheObject(phoneCallReqYQVO.getUuid() + "SCORE"); + 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鍒犻櫎 @@ -964,42 +1249,13 @@ Map<String, String> map = delRedisValue(null, id.toString()); redisCache.setCacheObject(map.get("cacheName"), map.get("val")); //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄� - redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", ivrTaskTemplate.getRevisitAfter(), 120, TimeUnit.MINUTES); + redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask1.getJsy(), 120, TimeUnit.MINUTES); redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone()); redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE"); } - - //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆� - 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); - 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()); - } - break; - } - } } } + log.error("phoneCallBackYQVO鐨勮繑鍥炲�兼槸锛歿}", phoneCallBackYQVO); return phoneCallBackYQVO; } @@ -1011,9 +1267,9 @@ scriptContent = scriptContent.replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : ""); } } - scriptContent.replace("${name}", StringUtils.isNotEmpty(serviceSubtask.getName()) ? serviceSubtask.getName() : ""); - scriptContent.replace("${dzz}", StringUtils.isNotEmpty(serviceSubtask.getPlaceOfResidence()) ? serviceSubtask.getPlaceOfResidence() : ""); - scriptContent.replace("${phone}", StringUtils.isNotEmpty(serviceSubtask.getTelcode()) ? serviceSubtask.getTelcode() : ""); + 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; } @@ -1079,10 +1335,11 @@ //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涓� + //灏哻ache-0鐨勬暟鎹紝杞Щ鍒癱ache-00涓� redisCache.deleteObject("cache-00"); String cache00 = redisCache.getCacheObject("cache-00"); if (!StringUtils.isEmpty(cache00)) @@ -1116,6 +1373,7 @@ private List<PullTaskVO> getPullTaskList(String subIds, String cacheName) { + log.error("浠诲姟鎷夊彇subIds鐨勫�兼槸澶氬皯锛歿}", subIds); //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖 List<PullTaskVO> pullTaskVOList = new ArrayList<>(); //newValue0鐢ㄤ簬淇濆瓨娌℃湁澶勭悊鐨勫瓙 浠诲姟 @@ -1123,12 +1381,13 @@ //鏍规嵁,鑾峰彇瀛愪换鍔$殑ID String[] split = subIds.split(",,"); for (int i = 0; i < split.length; i++) { - if (cacheName.equals("cache-0") && i < 5 || !cacheName.equals("cache-0") && i < 1) { + 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(); @@ -1144,21 +1403,22 @@ //濡傛灉ivrTaskTemplateScript涓虹┖锛屼篃灏辨病鏈夊線涓嬫墽琛岀殑蹇呰浜� if (ObjectUtils.isEmpty(ivrTaskTemplateScript)) return null; //鑾峰彇閫氶厤绗﹀尮閰嶈繃鍚庣殑闂 -// String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getScriptContent()); -// String kcb = ivrTaskTemplate.getRevisitBefore() + "," + scrContent; - String kcb = ivrTaskTemplate.getRevisitBefore(); + String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getIvrtext()); + String kcb = serviceTask.getKcb() + "," + scrContent; +// String kcb = ivrTaskTemplate.getRevisitBefore(); //灏佽杩斿洖鏁版嵁 //taskId = 瀛愪换鍔D + 闂ID +闂搴忓彿 pullTaskVO.setTaskid(subId); - pullTaskVO.setAppkey("ZurNHpaQLq6P55YS"); + 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); - pullTaskVO.setDisplayNo("85129866"); + 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()); - redisCache.setCacheObject(subId.trim() + "-" + serviceSubtask.getPhone().trim() + "-firstSort", 1, 120, TimeUnit.MINUTES); + 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() + ","; @@ -1431,12 +1691,64 @@ i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail); } } else { - for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) { - serviceSubtaskDetail.setCreateTime(new Date()); - i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail); + 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 @@ -1471,6 +1783,80 @@ 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) { for (int j = 0; j < IvrTaskTemplateScriptVOList.size(); j++) { @@ -1482,10 +1868,14 @@ 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()); @@ -1501,16 +1891,18 @@ serviceSubtaskDetail.setSentEnd(1L); serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString()); serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId()); - serviceSubtaskDetail.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent()); + 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()) ? i + ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetail.getTargetvalue() + " " + (i + 1) + ivrTaskTemplateTargetoption.getTargetvalue()); + serviceSubtaskDetail.setTargetvalue(StringUtils.isEmpty(serviceSubtaskDetail.getTargetvalue()) ? ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetail.getTargetvalue() + "&" + ivrTaskTemplateTargetoption.getTargetvalue()); } serviceSubtaskDetail.setAddtime(new Date()); @@ -1521,4 +1913,35 @@ 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