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