From 5389773b2d1ae86daec68b00f67c3682dc907e01 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期五, 22 十一月 2024 14:35:48 +0800 Subject: [PATCH] 代码提交(长期任务电话完成) --- smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 141 +++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 124 insertions(+), 17 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 d5c88ea..aca304e 100644 --- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java @@ -1,6 +1,5 @@ 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; @@ -8,26 +7,21 @@ 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.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.math.BigDecimal; -import java.sql.Time; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalTime; @@ -71,8 +65,15 @@ @Autowired private IIvrTaskTemplateService ivrTaskTemplateService; + + @Autowired + private ISvyTaskTemplateService svyTaskTemplateService; + @Autowired private IIvrTaskTemplateScriptService iIvrTaskTemplateScriptService; + + @Autowired + private FtpService ftpService; @Value("${pri_key}") private String pri_key; @@ -82,6 +83,15 @@ @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; /** @@ -312,7 +322,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; @@ -334,6 +356,7 @@ serviceSubtask.setPatid(patTaskRelevance.getPatid()); serviceSubtask.setCreateTime(DateUtils.getNowDate()); serviceSubtask.setSendstate(1L); + if (serviceTaskVO.getLongTask() == 1) serviceSubtask.setSendstate(2L); serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode()); serviceSubtask.setDeptname(patTaskRelevance.getDeptName()); serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode()); @@ -347,6 +370,8 @@ serviceSubtask.setEndtime(patTaskRelevance.getEndtime()); serviceSubtask.setNurseId(patTaskRelevance.getNurseId()); serviceSubtask.setNurseName(patTaskRelevance.getNurseName()); + if (serviceTaskVO.getLongTask() == 1) + serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime()); serviceSubtaskMapper.insertServiceSubtask(serviceSubtask); integer = serviceSubtask.getId().intValue(); } @@ -363,7 +388,26 @@ 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); @@ -869,7 +913,17 @@ 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); //鍒ゆ柇涓�涓嬶紝杩欎釜閫夐」缁撴灉鏄笉鏄繕鏈夌户缁棶涓嬪幓鐨勫繀瑕侊紝渚嬪閫夐」缁撴灉鏄埆浜轰笉鎯崇户缁洖绛旈棶棰橈紝灏辫缁撴潫鎺� @@ -954,11 +1008,23 @@ if (j == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size() - 1 && flag == 0) { 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); + //濡傛灉娌℃湁 鍖归厤涓婏紝杩欎釜蹇呴』涓簄ull + serviceSubtaskDetailList.get(0).setMatchedtext(""); serviceSubTaskDetailReq.setServiceSubtaskDetailList(serviceSubtaskDetailList); saveQuestionAnswerPhone(serviceSubTaskDetailReq); - continue; } + continue; } } //閮芥病鏈夊尮閰嶅埌 @@ -1031,7 +1097,17 @@ //涓嶆槸閫夋嫨棰�,鐩存帴璁板綍绛旀锛屽皢缁撴灉鍐欏埌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]; @@ -1163,6 +1239,7 @@ //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"); @@ -1200,6 +1277,7 @@ private List<PullTaskVO> getPullTaskList(String subIds, String cacheName) { + log.error("浠诲姟鎷夊彇subIds鐨勫�兼槸澶氬皯锛歿}", subIds); //pullTaskVOList鐢ㄤ簬鏁版嵁杩斿洖 List<PullTaskVO> pullTaskVOList = new ArrayList<>(); //newValue0鐢ㄤ簬淇濆瓨娌℃湁澶勭悊鐨勫瓙 浠诲姟 @@ -1210,7 +1288,6 @@ if (cacheName.equals("cache-0") && i < 5 || !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()); @@ -1237,14 +1314,14 @@ //灏佽杩斿洖鏁版嵁 //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); 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(), ivrTaskTemplateScript.getId().toString(), 120, TimeUnit.MINUTES); // redisCache.setCacheObject(subId.trim() + "-" + serviceSubtask.getPhone().trim() + "-firstSort", 1, 120, TimeUnit.MINUTES); } else { if (StringUtils.isEmpty(newValue0)) { @@ -1520,10 +1597,35 @@ } else { for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) { serviceSubtaskDetail.setCreateTime(new Date()); - i = serviceSubtaskDetailMapper.insertServiceSubtaskDetail(serviceSubtaskDetail); + //鍏堟牴鎹瓙浠诲姟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) { + 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); + //涓嬭浇鏂囦欢 + ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString()); + } + return 1; } @Override @@ -1572,6 +1674,11 @@ 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()); @@ -1598,7 +1705,7 @@ 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()); -- Gitblit v1.9.3