From b17665b2645701d6eea22ab9d4662b76c97dd6e3 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 09 十月 2025 16:17:26 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  578 +++++++++++++++++++++++++++------------------------------
 1 files changed, 271 insertions(+), 307 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 92b45c6..62f39a4 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,7 @@
 package com.smartor.service.impl;
 
 import com.alibaba.fastjson2.JSON;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
@@ -48,6 +49,9 @@
 public class ServiceSubtaskServiceImpl implements IServiceSubtaskService {
     @Autowired
     private ServiceSubtaskMapper serviceSubtaskMapper;
+
+    @Autowired
+    private ServiceSubtaskPreachformMapper serviceSubtaskPreachformMapper;
 
     @Autowired
     private ServiceSubtaskDetailMapper serviceSubtaskDetailMapper;
@@ -170,9 +174,21 @@
 
         ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
         if (CollectionUtils.isEmpty(list) || list.size() == 0) {
-            return DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);
-        }
+            ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);
+            ObjectMapper objectMapper = new ObjectMapper();
+            try {
+                List<Map<String, Object>> mapList = objectMapper.readValue(serviceTask.getPreachform(), List.class);
+                serviceTaskVO.setPreachformList(mapList);
 
+                String result = mapList.stream().map(mapList1 -> mapList1.get("preachform")).map(String::valueOf).collect(Collectors.joining(","));
+                serviceTaskVO.setPreachform(result);
+            } catch (JsonProcessingException e) {
+                e.printStackTrace();
+            }
+
+
+            return serviceTaskVO;
+        }
 
         //灏嗘煡鍑烘潵鐨勬暟鎹�掑叆ServiceSubtaskVO涓�
         ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);
@@ -253,6 +269,23 @@
                 patTaskRelevance.setNurseName(serviceSubtask1.getNurseName());
                 patTaskRelevances.add(patTaskRelevance);
             }
+
+            //鑾峰彇璇ユ偅鑰呮墍鏈夌殑鎵ц鐘舵��
+            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+            serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
+            serviceSubtaskPreachform.setSubid(serviceSubtask1.getId());
+            List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+            List<Map<String, Object>> resultList = serviceSubtaskPreachformList.stream().map(item -> {
+                Map<String, Object> map = new HashMap<>();
+                map.put("sort", item.getSort());
+                map.put("preachform", item.getPreachform());
+                map.put("compensateTime", item.getCompensateTime());
+                return map;
+            }).collect(Collectors.toList());
+            serviceTaskVO.setPreachformList(resultList);
+
+            String result = resultList.stream().map(mapList1 -> mapList1.get("preachform")).map(String::valueOf).collect(Collectors.joining(","));
+            serviceTaskVO.setPreachform(result);
         }
 
         serviceTaskVO.setPatTaskRelevances(patTaskRelevances);
@@ -297,7 +330,8 @@
             if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;
             if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;
             if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
-            if (serviceSubtask.getExcep().equals("1")) yc = yc + 1;
+            if (StringUtils.isNotEmpty(serviceSubtask.getExcep()) && !serviceSubtask.getExcep().equals("0"))
+                yc = yc + 1;
         }
         map.put("wzx", wzx);
         map.put("ysf", ysf);
@@ -414,6 +448,16 @@
             throw new BaseException("浠诲姟鍏ュ弬涓虹┖锛岃妫�鏌ュ叆鍙�");
         }
         ServiceTask serviceTask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceTask.class);
+        if (CollectionUtils.isEmpty(serviceTaskVO.getPreachformList())) throw new BaseException("浠诲姟鐨勫彂閫佹柟寮忎负绌�");
+        //灏唒reachfromList鏀惧埌serviceTask涓殑preachfrom涓�
+        ObjectMapper mapper = new ObjectMapper();
+        try {
+            String preachformList = mapper.writeValueAsString(serviceTaskVO.getPreachformList());
+            serviceTask.setPreachform(preachformList);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+
         serviceTask.setTextParam(JSON.toJSONString(serviceTaskVO.getTextParam()));
         if (serviceTaskVO.getIsoperation() != null && serviceTaskVO.getIsoperation() == 1) {
             //鏂板妯℃澘淇℃伅
@@ -460,7 +504,7 @@
                     ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
                     serviceTaskdiag.setTaskId(serviceTask.getTaskid());
                     serviceTaskdiag.setTaskName(serviceTask.getTaskName());
-                    serviceTaskdiag.setLongtask(0L);
+                    serviceTaskdiag.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                     if (serviceTaskVO.getLongTask() == 1) serviceTaskdiag.setLongtask(1L);
                     serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());
                     serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
@@ -481,11 +525,10 @@
                     serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
                     serviceTaskoper.setTaskId(serviceTask.getTaskid());
                     serviceTaskoper.setTaskName(serviceTask.getTaskName());
-                    serviceTaskoper.setLongtask(0L);
+                    serviceTaskoper.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                     serviceTaskoper.setGuid(serviceTask.getGuid());
                     serviceTaskoper.setOrgid(serviceTask.getOrgid());
                     serviceTaskoper.setCreateTime(new Date());
-                    if (serviceTaskVO.getLongTask() == 1) serviceTaskoper.setLongtask(1L);
                     if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {
                         String[] opcodes = serviceTaskVO.getOpcode().split(",");
                         for (String opcode : opcodes) {
@@ -500,8 +543,7 @@
                     serviceTaskdept.setTaskId(serviceTask.getTaskid());
                     serviceTaskdept.setTaskName(serviceTask.getTaskName());
                     serviceTaskdept.setOrgid(serviceTask.getOrgid());
-                    serviceTaskdept.setLongtask(0L);
-                    if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
+                    serviceTaskdept.setLongtask(Long.valueOf(serviceTaskVO.getLongTask()));
                     if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
                         String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
                         for (String deptCode : deptcodes) {
@@ -522,11 +564,12 @@
                     }
                 }
             }
-            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {
-                Map<String, Integer> map = new HashMap<>();
-                map.put("taskId", serviceTask.getTaskid().intValue());
-                return map;
-            }
+//闀挎湡浠诲姟锛屼篃鍏佽鍔犱汉浜�
+//            if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1 && serviceTaskVO.getPatCycle() == 0L) {
+//                Map<String, Integer> map = new HashMap<>();
+//                map.put("taskId", serviceTask.getTaskid().intValue());
+//                return map;
+//            }
 
             //灏嗕换鍔′俊鎭斁鍒版湇鍔¤〃涓�
             ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTaskVO, ServiceSubtask.class);
@@ -565,11 +608,29 @@
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
                     serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                     serviceSubtask.setUpdateBy(serviceTask.getCreateBy());
-                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
+                    serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
                     if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
                         serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
                     serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                     serviceSubtask.getId().intValue();
+
+                    //闇�瑕佹寜service_task閲岀殑preachform鐨勯『搴忓皢鍙戦�佹柟寮忎繚瀛樺埌service_subtask_preachform琛ㄤ腑
+                    if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformList())) {
+                        List<Map<String, Object>> pfList = serviceTaskVO.getPreachformList();
+                        for (Map<String, Object> map : pfList) {
+                            ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+                            serviceSubtaskPreachform.setSort(ObjectUtils.isEmpty(map.get("sort")) ? 0 : Long.valueOf(map.get("sort").toString()));
+                            serviceSubtaskPreachform.setPreachform(ObjectUtils.isEmpty(map.get("preachform")) ? "" : map.get("preachform").toString());
+                            serviceSubtaskPreachform.setCompensateTime(ObjectUtils.isEmpty(map.get("compensateTime")) ? "" : map.get("preachcompensateTimeform").toString());
+                            serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
+                            serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+                            //杩欎釜sendstate闇�瑕佸湪鏁版嵁搴撹缃竴涓粯璁ゅ�间负鈥�1鈥�
+                            serviceSubtaskPreachform.setSendstate("1");
+                            serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
+                            serviceSubtaskPreachform.setCreateTime(new Date());
+                            serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
+                        }
+                    }
                 }
             }
 
@@ -579,8 +640,6 @@
                 serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
             //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1
             ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
-//            long l = serviceTask1.getStopState() + 1;
-//            serviceTask.setStopState(l);
             //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
             ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
             serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
@@ -593,18 +652,6 @@
             } else {
                 if (CollectionUtils.isNotEmpty(serviceSubtaskList1)) serviceSubtaskList = serviceSubtaskList1;
             }
-            if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
-                for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-                    log.info("insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
-                    serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());
-                    redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
-                    redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
-                    redisCache.removeElementFromList("cache-1", serviceSubtask.getId().toString());
-                    redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
-                    redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
-                    redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
-                }
-            }
 
             if (serviceTaskVO.getLibtemplateid() != null)
                 serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid().toString());
@@ -613,17 +660,14 @@
             serviceTask.setUpdateTime(new Date());
             serviceTaskService.updateServiceTask(serviceTask);
             if (serviceTaskVO.getAppltype().equals("1") || serviceTaskVO.getAppltype().equals("2")) {
-
-
                 if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
                     String[] deptcodes = serviceTaskVO.getDeptcode().split(",");
                     for (String deptCode : deptcodes) {
                         ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
                         serviceTaskdept.setTaskId(serviceTask.getTaskid());
                         serviceTaskdept.setTaskName(serviceTask.getTaskName());
-                        serviceTaskdept.setLongtask(0L);
+                        serviceTaskdept.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                         serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());
-                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
                         serviceTaskdept.setDeptCode(deptCode);
                         serviceTaskdept.setDeptType("1");
                         serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
@@ -644,9 +688,8 @@
                         ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
                         serviceTaskdept.setTaskId(serviceTask.getTaskid());
                         serviceTaskdept.setTaskName(serviceTask.getTaskName());
-                        serviceTaskdept.setLongtask(0L);
+                        serviceTaskdept.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                         serviceTaskdept.setOrgid(serviceTaskVO.getOrgid());
-                        if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
                         serviceTaskdept.setDeptCode(districtcode);
                         serviceTaskdept.setDeptType("2");
                         serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
@@ -669,9 +712,7 @@
                 if (StringUtils.isEmpty(serviceTaskVO.getIcd10code())) {
                     throw new BaseException("鐤剧梾缂栫爜涓虹┖");
                 }
-//                serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());
-
-                serviceTaskdiag.setLongtask(1L);
+                serviceTaskdiag.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                 serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
                 serviceTaskdiag.setGuid(serviceTask.getGuid());
                 serviceTaskdiag.setOrgid(serviceTask.getOrgid());
@@ -695,7 +736,6 @@
                     }
                 }
 
-
             } else if (serviceTaskVO.getAppltype().equals("4")) {
                 ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
                 if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) {
@@ -705,7 +745,7 @@
                 serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
                 serviceTaskoper.setTaskId(serviceTask.getTaskid());
                 serviceTaskoper.setTaskName(serviceTask.getTaskName());
-                serviceTaskoper.setLongtask(1L);
+                serviceTaskoper.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                 serviceTaskoper.setGuid(serviceTask.getGuid());
                 serviceTaskoper.setOrgid(serviceTask.getOrgid());
                 serviceTaskoper.setCreateTime(new Date());
@@ -728,7 +768,6 @@
                         }
                     }
                 }
-
             }
             if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
                 IvrTaskTemplate ivrTaskTemplate = new IvrTaskTemplate();
@@ -771,12 +810,13 @@
                     serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
                     serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
-                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
+                    serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
                     serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
                     if (patTaskRelevance.getIsoperation() != null) {
-                        if (patTaskRelevance.getIsoperation() == 2)
+                        if (patTaskRelevance.getIsoperation() == 2) {
                             serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
-                        serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
+                            serviceSubtaskMapper.updateServiceSubtaskByCondition(serviceSubtask);
+                        }
                         if (patTaskRelevance.getIsoperation() == 1) {
                             serviceSubtask.setSendstate(1L);
                             serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
@@ -788,6 +828,36 @@
                             serviceSubtaskMapper.deleteServiceSubtaskByCondition(serviceTaskVO.getTaskid(), patTaskRelevance.getPatid());
                     }
                     serviceSubtask.getTaskid().intValue();
+                }
+            }
+            // 鏈夊彲鑳戒細鎶婂彂閫侀『搴忎篃淇敼浜嗭紙闇�瑕佹牴鎹畉askId灏嗘墍鏈夌殑sendstate锛�=4,5,6鐨剆ubTask鎷夊嚭鏉ワ紝杩涜淇敼涓�涓嬶級
+            ServiceSubtaskVO ssVo = new ServiceSubtaskVO();
+            ssVo.setTaskid(serviceTaskVO.getTaskid());
+            ssVo.setDelFlag("0");
+            List<Long> ssList = new ArrayList<>();
+            ssList.add(1l);
+            ssList.add(2L);
+            ssList.add(3L);
+            ssVo.setSendstates(ssList);
+            List<ServiceSubtask> ssTaskList = serviceSubtaskMapper.selectServiceSubtaskBySendstate(ssVo);
+            for (int i = 0; i < ssTaskList.size(); i++) {
+                ServiceSubtask serviceSubtask = ssTaskList.get(i);
+                serviceSubtaskPreachformMapper.deleteServiceSubtaskPreachformBySubid(serviceSubtask.getId());
+                if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformList())) {
+                    List<Map<String, Object>> pfList = serviceTaskVO.getPreachformList();
+                    for (Map<String, Object> map : pfList) {
+                        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+                        serviceSubtaskPreachform.setSort(ObjectUtils.isEmpty(map.get("sort")) ? 0 : Long.valueOf(map.get("sort").toString()));
+                        serviceSubtaskPreachform.setPreachform(ObjectUtils.isEmpty(map.get("preachform")) ? "" : map.get("preachform").toString());
+                        serviceSubtaskPreachform.setCompensateTime(ObjectUtils.isEmpty(map.get("compensateTime")) ? "" : map.get("preachcompensateTimeform").toString());
+                        serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
+                        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+                        //杩欎釜sendstate闇�瑕佸湪鏁版嵁搴撹缃竴涓粯璁ゅ�间负鈥�1鈥�
+                        serviceSubtaskPreachform.setSendstate("1");
+                        serviceSubtaskPreachform.setOrgid(serviceTask.getOrgid());
+//                        serviceSubtaskPreachform.setSort(Long.valueOf(i));
+                        serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
+                    }
                 }
             }
         }
@@ -1055,7 +1125,7 @@
         //鍒ゆ柇鏄惁鎸傛満
         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")) {
+        if (StringUtils.isNotEmpty(hangupState) && hangupState.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) {
@@ -1064,6 +1134,8 @@
                 //鍒ゆ柇 recordAccept-hungup 鏄惁鏈夊�硷紝濡傛灉鏈夛紝鍒欒鏄庝笉鐢ㄥ鐞嗕簡锛屼箣鍓嶅凡缁忓鐞嗚繃浜嗭紙recordAccept-hungup杩欎釜涓昏鏄粰"閫氳瘽璁板綍鐢ㄧ殑锛�"锛�
                 Object cacheObject = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
                 if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("1")) {
+                    ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
+                    setFailPreachForm(serviceSubtask, "3", "鎷ㄥ彨鐨勭敤鎴锋蹇�", "4");
                     return new PhoneCallBackYQVO();
                 }
                 //濡傛灉鍙戦�佺姸鎬佷负6锛屽氨璇存槑宸茬粡鎵撳畬浜嗭紝涔熸病鏈夊繀瑕佺户缁線涓嬭蛋浜�
@@ -1085,8 +1157,12 @@
                 //鍏堟妸榛樿鐨剅ecordAccept-hungup鍒犻櫎锛屽啀鏇存柊
                 redisCache.deleteObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup");
                 redisCache.setCacheObject(phoneCallReqYQVO.getTaskid() + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
+
+                //璁板綍鐢佃瘽鍙戦�佺姸鎬�
+                setFailPreachForm(serviceSubtask2, "3", "鐢佃瘽鍙戦�佹垚鍔燂紙鎮h�呮寕鏂級", "4");
+
                 //杩欎釜鏃跺�欏氨闇�瑕佽蛋琛ュ伩鏈哄埗浜嗭紝鍏堟殏瀹氳蛋鐭俊
-                getSmsCompensate(Long.valueOf(phoneCallReqYQVO.getTaskid()));
+//                getSmsCompensate(Long.valueOf(phoneCallReqYQVO.getTaskid()));
                 return new PhoneCallBackYQVO();
             }
         }
@@ -1115,6 +1191,9 @@
                     req.put("caller", phoneCallReqYQVO.getPhone());
 //                    HttpUtils.sendPost(hangup, new Gson().toJson(req));
                     HttpUtil.postJsonRequest(hangup, new Gson().toJson(req));
+                    ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
+                    //璁板綍鐢佃瘽鍙戦�佺姸鎬�
+                    setFailPreachForm(serviceSubtask, "3", "閫氳瘽姝e父缁撴潫", "9");
                     //鍒犻櫎缁撴潫璇殑鎮e瓨
                     redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "- jsy");
                 } else {
@@ -1122,6 +1201,7 @@
                     log.error("-------PlayEventCallbackPlaystop鐨勫�间负锛歿}", true);
                 }
             }
+
             return phoneCallBackYQVO;
         }
         //鑾峰彇鏀鹃煶鏄惁缁撴潫
@@ -1198,6 +1278,9 @@
                 serviceSubtask.setUpdateTime(new Date());
                 log.error("鍏堟洿鏂颁竴涓嬪垎鏁�,鐢佃瘽鐨剆erviceSubtask鐨勫�间负锛歿}", serviceSubtask);
                 serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                //璁板綍鐘舵��
+                setFailPreachForm(serviceSubtask, "3", "闈欓粯娆℃暟杈惧埌" + num + "娆�", "4");
+
                 Map<String, String> map = delRedisValue(null, id.toString());
                 if (ObjectUtils.isNotEmpty(map)) redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
                 redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
@@ -1252,6 +1335,8 @@
                         ss.setSendstate(6L);
                         ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
                         serviceSubtaskMapper.updateServiceSubtask(ss);
+                        //璁板綍鐘舵��
+                        setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
                         //鍙互鎸傛満浜�
                         redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
                         redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
@@ -1336,6 +1421,8 @@
                             redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
                             phoneCallBackYQVO.setType("text");
                             phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask.getJsy());
+                            //璁板綍鐘舵��
+                            setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
                             return phoneCallBackYQVO;
                         }
 
@@ -1367,6 +1454,9 @@
                                 ss.setSendstate(6L);
                                 ss.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
                                 serviceSubtaskMapper.updateServiceSubtask(ss);
+                                //璁板綍鐘舵��
+                                setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
+
                                 redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
                                 redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
                                 redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop");
@@ -1414,6 +1504,8 @@
                             serviceSubtask.setSendstate(6L);
                             serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
                             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                            //璁板綍鐘舵��
+                            setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
                             //璁剧疆缁撴潫璇�
                             phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + serviceTask1.getJsy());
                             Long id = serviceSubtask.getId();
@@ -1484,7 +1576,8 @@
                             serviceSubtask.setSendstate(6L);
                             serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
                             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-
+                            //璁板綍鐘舵��
+                            setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
                             //鍦╮edis涓繚瀛樹竴涓嬬粨鏉熻锛屽湪璋冪敤鎸傜數璇濈殑鏂规硶鏃跺垹闄�
                             ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
                             redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "- jsy", serviceTask.getJsy(), 120, TimeUnit.MINUTES);
@@ -1588,7 +1681,8 @@
                     serviceSubtask.setRemark("鐢佃瘽鎷ㄦ墦宸插畬鎴�");
                     serviceSubtask.setSendstate(6L);
                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
-
+                    //璁板綍鐘舵��
+                    setFailPreachForm(serviceSubtask, "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
                     //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
                     Long id = serviceSubtask.getId();
                     Map<String, String> map = delRedisValue(null, id.toString());
@@ -1813,241 +1907,6 @@
     }
 
 
-    //涓嬮潰鐨勪唬鐮佷笉鑳藉垹闄わ紝涓婇潰鐨勬柟娉曞彧鏄厤鍚堢數璇濈鑱旇皟鐢ㄧ殑锛�
-//    @Override
-//    public PhoneCallBackVO phoneCallBack(PhoneCallBackVO phoneCallBackVO) {
-//        log.error("phoneCallBackVO鐨勫叆鍙傦細{},{},{},{},{},{},{}", phoneCallBackVO.getResultType(), phoneCallBackVO.getUuid(), phoneCallBackVO.getErrResult(), phoneCallBackVO.getTextResult(), phoneCallBackVO.getHangUpResult(), phoneCallBackVO.getEnumState(), phoneCallBackVO.getUint8());
-//        //鑾峰彇鏁版嵁
-//        Boolean aBoolean = redisCache.hasKey(phoneCallBackVO.getUuid());
-//        if (!aBoolean) {
-//            throw new BaseException("璇uid涓嶅瓨鍦�");
-//        }
-//        Integer hangupValue = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "hangup");
-//        if (hangupValue != null && hangupValue == 1) {
-//            //hangupValue == 1  闅忚缁撴潫锛岀洿鎺ュ彲浠ユ寕鐢佃瘽
-//            PhoneUtils phoneUtils = new PhoneUtils();
-//            phoneUtils.hangup(phoneCallBackVO.getUuid(), null, null, null, null, null, null, null);
-//
-//        }
-//
-//        Map<String, Object> map = redisCache.getCacheObject(phoneCallBackVO.getUuid());
-////        ObjectMapper objectMapper = new ObjectMapper();
-////        Map<String, Object> map = null;
-////        try {
-////            map = objectMapper.readValue(cacheObject, Map.class);
-////        } catch (JsonProcessingException e) {
-////            e.printStackTrace();
-////        }
-//
-//        ServiceSubtask ServiceSubtask = (ServiceSubtask) map.get("ServiceSubtask");
-//        List<IvrLibaTemplateScriptVO> ivrLibaTemplateScriptVOs = (List<IvrLibaTemplateScriptVO>) map.get("ivrLibaTemplateScriptVO");
-//        //灏唘uid鏇存柊鍒版暟鎹簱涓�
-//        ServiceSubtask.setSenduuid(phoneCallBackVO.getUuid());
-//        ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
-//
-//        //鑾峰彇妯℃澘淇℃伅
-//        IvrLibaTemplateVO ivrLibaTemplateVO = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "ivrLibaTemplateVO");
-//
-//
-//        //棣栧厛鍒ゆ柇resultType
-//        if (phoneCallBackVO.getResultType() == 1) {
-//            //鍛煎彨缁撴灉鎺ュ彛: 1
-//            if (phoneCallBackVO.getUint8() == 1) {
-//                //鍛煎彨澶辫触锛屽幓redis涓褰曚竴涓嬪け璐ユ鏁帮紝杩涜鍐嶆鍛煎彨
-//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "uint8");
-//                if (integer != null) {
-//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", integer + 1, 120, TimeUnit.MINUTES);
-//                } else {
-//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "uint8", 1, 120, TimeUnit.MINUTES);
-//                }
-//
-//                if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {
-//                    log.info("鏃犱汉鎺ュ惉锛歿},   {}", phoneCallBackVO.getErrResult(), phoneCallBackVO.getUuid());
-//                    //杩炵画鎵撹瀹氭锛屽鏋滆娌′汉鎺ワ紝閭e氨缁撴潫
-//                    ServiceSubtask.setResult(phoneCallBackVO.getErrResult());
-//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
-//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "uint8");
-//                } else if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {
-//                    //杩涜閲嶆嫧
-//                    PhoneUtils phoneUtils = new PhoneUtils();
-//                    phoneUtils.ob(null, null, null, null, null, null, null, ServiceSubtask.getPhone(), phoneCallBackVO.getUuid(), true);
-//                }
-//            }
-//
-//        } else if (phoneCallBackVO.getResultType() == 2) {
-//            //閫氳瘽鐘舵�佹洿鏂版帴鍙�: 2
-//            if (phoneCallBackVO.getEnumState() == 0) {
-//                // 0-鎸搩
-//                Integer integer = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "enumState");
-//
-//                if (integer != null && integer < ServiceSubtask.getRecallcount().intValue()) {
-//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", integer + 1, 120, TimeUnit.MINUTES);
-//                } else if (integer == null) {
-//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "enumState", 1, 120, TimeUnit.MINUTES);
-//                } else if (integer != null && integer == ServiceSubtask.getRecallcount().intValue()) {
-//                    ServiceSubtask.setResult("鏃犱汉鎺ュ惉");
-//                    ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
-//                    redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
-//                }
-//            } else if (phoneCallBackVO.getEnumState() == 2) {
-//                //鎮h�呮寕鏂數璇�
-//                log.info("鎮h�呮寕鏂數璇濓細{}", phoneCallBackVO.getUuid());
-//                ServiceSubtask.setResult(phoneCallBackVO.getHangUpResult());
-//                ServiceSubtaskMapper.updateServiceSubtask(ServiceSubtask);
-//                redisCache.deleteObject(phoneCallBackVO.getUuid() + "enumState");
-//            }
-//
-//
-//        } else if (phoneCallBackVO.getResultType() == 3) {
-//            //璇煶璇嗗埆缁撴灉涓婃姤鎺ュ彛: 3
-//            Integer noVoice = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "noVoice");
-//            QuestionMessage returnQues = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
-//            IvrLibaTemplateScriptVO nowQuestion = returnQues.getNowQuestion();
-//            PhoneUtils phoneUtils = new PhoneUtils();
-//
-//            if (StringUtils.isEmpty(phoneCallBackVO.getTextResult())) {
-//                //鏃犲洖璇�
-//                //鍒ゆ柇noVoice鏄惁宸茬粡鍒颁簡鏈�澶у��
-//                if (noVoice == ivrLibaTemplateVO.getNoVoiceNum().intValue()) {
-//                    //宸茬粡闂簡瀵瑰簲鐨勯亶鏁帮紝灏卞垽鏂槸鍚﹁繕鏈変笅涓�棰�
-//                    if (nowQuestion.getTargetid() == ivrLibaTemplateScriptVOs.size()) {
-//                        //娌℃湁涓嬩竴棰樹簡锛屽氨鎸傛柇鐢佃瘽锛屾挱鏀剧粨鏉熻
-//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-//                        phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
-//                    } else {
-//                        //鏈変笅涓�棰�
-//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
-//                        IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
-//                        // 闂锛�  鍘昏皟鐢�"tts鍚堟垚鍜屾挱鏀�"鎺ュ彛
-//                        phoneUtils.ttsPlayback(nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
-//                    }
-//                } else {
-//                    redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", noVoice + 1, 120, TimeUnit.MINUTES);
-//                    //璋冪敤ivrLibaTemplateScriptVO涓殑slienceText(闈欓粯璇濇湳)
-//                    String slienceText = nowQuestion.getSlienceText();
-//                    //闈欓粯璇濇湳  + 闂锛�  鍘昏皟鐢�"tts鍚堟垚鍜屾挱鏀�"鎺ュ彛
-//                    phoneUtils.ttsPlayback(slienceText + nowQuestion.getQuestionText(), phoneCallBackVO.getUuid());
-//                    return new PhoneCallBackVO();
-//                }
-//
-//            } else {
-//                //鏈夊洖璇濓紝瀵瑰洖绛旂殑闂,杩涜姝e垯鍖归厤锛堣繖閲屽彧閽堝閫夋嫨棰橈紝鍏跺畠棰樺瀷涓嶈锛�
-//                for (int j = 0; j < nowQuestion.getIvrLibaScriptTargetoptionList().size(); j++) {
-//                    //鍖呭惈
-//                    Matcher matcher = null;
-//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex())) {
-//                        Pattern pattern = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex());
-//                        matcher = pattern.matcher(phoneCallBackVO.getTextResult());
-//                    }
-//                    //涓嶅寘鍚�
-//                    Matcher matcher2 = null;
-//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2())) {
-//                        Pattern pattern2 = Pattern.compile(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
-//                        matcher2 = pattern2.matcher(phoneCallBackVO.getTextResult());
-//                    }
-//                    log.info("phoneCallBack--Targetregex鐨勫�间负锛歿}, phoneCallBack--Targetregex2鐨勫�间负锛歿}", nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex(), nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2());
-//                    if (StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
-//                        //璇存槑鍖归厤姝g‘浜�
-//                        //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
-//                        nowQuestion.getIvrLibaScriptTargetoptionList().get(j).setIsUserOperation(true);
-//                        ivrLibaScriptTargetoptionMapper.updateIvrLibaTemplateTargetoption(nowQuestion.getIvrLibaScriptTargetoptionList().get(j));
-//
-//
-//                        //灏嗛潤榛樼疆涓�0
-//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "noVoice", 0, 120, TimeUnit.MINUTES);
-//                        redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
-//                        //鑾峰彇涓嬩竴棰�
-//                        Integer nextQuestion = nowQuestion.getIvrLibaScriptTargetoptionList().get(j).getNextQuestion();
-//                        for (IvrLibaTemplateScriptVO script : ivrLibaTemplateScriptVOs) {
-//                            if (script.getTargetid() == nextQuestion) {
-//                                QuestionMessage questionMessage = new QuestionMessage();
-//                                questionMessage.setNowQuestion(script);
-//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
-//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-//                                break;
-//                            }
-//                        }
-//                        break;
-//                    } else {
-//                        //娌℃湁鍖归厤鍒�
-//                        Integer mateNum = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "mateNum");
-//                        //鏃犲尮閰嶆鏁板幓鍒ゆ柇鏄惁鍒版渶澶ц闂鏁帮紝骞朵笖鎵�鏈夌殑閫夐」閮藉尮閰嶅畬浜�
-//                        if (mateNum == ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
-//                            //濡傛灉涓嬩竴棰樹负绌�.鍒欐柊鐨勬暟鎹繑鍥�,骞跺姞涓婃劅璋㈣
-//                            if (nowQuestion.getTargetid() < ivrLibaTemplateScriptVOs.size()) {
-//                                QuestionMessage questionMessage = new QuestionMessage();
-//                                IvrLibaTemplateScriptVO nextQuestion = getNextQuestion(ivrLibaTemplateScriptVOs, nowQuestion);
-//                                questionMessage.setQuestionList(ivrLibaTemplateScriptVOs);
-//                                questionMessage.setNowQuestion(nextQuestion);
-//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", 0, 120, TimeUnit.MINUTES);
-//                            } else {
-//                                //灏卞彲浠ユ寕鏂數璇濅簡
-//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "hangup", 1, 120, TimeUnit.MINUTES);
-//                                phoneUtils.ttsPlayback(ivrLibaTemplateVO.getRevisitAfter(), phoneCallBackVO.getUuid());
-//                                break;
-//                            }
-//                        } else if (mateNum < ivrLibaTemplateVO.getMateNum().intValue() && j == nowQuestion.getIvrLibaScriptTargetoptionList().size() - 1) {
-//                            //娌℃湁闂埌瑙勫畾娆℃暟
-//                            mateNum = mateNum + 1;
-//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "mateNum", mateNum, 120, TimeUnit.MINUTES);
-//                        }
-//                    }
-//
-//                }
-//                //閫夐」鍖归厤瀹屾垚鍚庯紝闇�瑕佸啀鍘婚�氳繃搴撳啀杩涜鍖归厤涓�娆�
-//                String extemplateID = ivrLibaTemplateVO.getSubmoduleID();
-//                String[] split = extemplateID.split(",");
-//                List<String> list = Arrays.asList(split);
-//                List<Long> list1 = new ArrayList<>();
-//                if (StringUtils.isNotEmpty(extemplateID)) {
-//                    for (String str : list) {
-//                        list1.add(Long.valueOf(str));
-//                    }
-//                    List<IvrLibaExtemplatescript> ivrLibaExtemplatescripts = ivrLibaExtemplatescriptMapper.queryIvrLibaExtemplatescriptList(list1);
-//                    for (IvrLibaExtemplatescript ivrLibaExtemplatescript : ivrLibaExtemplatescripts) {
-//                        Matcher matcher = null;
-//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex())) {
-//                            Pattern pattern = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex());
-//                            matcher = pattern.matcher(returnQues.getContent());
-//                        }
-//
-//                        Matcher matcher2 = null;
-//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2())) {
-//                            Pattern pattern2 = Pattern.compile(ivrLibaExtemplatescript.getSelfRegex2());
-//                            matcher2 = pattern2.matcher(returnQues.getContent());
-//                        }
-//                        log.info("++++++++++++++++++++++++++閫氱敤搴撴槸鍚︿负绌猴細selfRegex : {} , selfRegex2 : {}", ivrLibaExtemplatescript.getSelfRegex(), ivrLibaExtemplatescript.getSelfRegex2());
-//                        if (StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches() && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && matcher2.matches() || StringUtils.isEmpty(ivrLibaExtemplatescript.getSelfRegex2()) && StringUtils.isNotEmpty(ivrLibaExtemplatescript.getSelfRegex()) && matcher.matches()) {
-//                            QuestionMessage questionMessage = redisCache.getCacheObject(phoneCallBackVO.getUuid() + "returnQues");
-//                            IvrLibaTemplateScriptVO ivrLibaTemplateScriptVO = returnQues.getNowQuestion();
-//                            ivrLibaTemplateScriptVO.setSubmoduleText(ivrLibaExtemplatescript.getSwitchText());
-//                            ivrLibaTemplateScriptVO.setSubmoduleVoice(ivrLibaExtemplatescript.getSwitchWav());
-//                            redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-//                            if (ivrLibaExtemplatescript.getIsEnd() == 1) {
-//                                //灏嗛棶棰樼疆绌�
-//                                IvrLibaTemplateScriptVO nowQuestion1 = questionMessage.getNowQuestion();
-//                                nowQuestion1.setQuestionText(null);
-//                                nowQuestion1.setQuestionVoice(null);
-//                                questionMessage.setNowQuestion(nowQuestion1);
-//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "returnQues", questionMessage, 120, TimeUnit.MINUTES);
-//
-//                                redisCache.setCacheObject(phoneCallBackVO.getUuid() + "isOver", 1, 120, TimeUnit.MINUTES);
-//                            }
-//
-//                            //璋冪敤"15銆乼ts鍚堟垚鍜屾挱鏀撅紝 tts_playback"灏嗙粨鏋滀紶鍥�
-//
-//
-//                        }
-//                        break;
-//                    }
-//                }
-//
-//            }
-//        }
-//        return phoneCallBackVO;
-//    }
-
     @Override
     public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
         int i = 0;
@@ -2066,7 +1925,7 @@
             //闅忚
             for (ServiceSubtaskDetail serviceSubtaskDetail : serviceSubTaskDetailReq.getServiceSubtaskDetailList()) {
                 serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());
-                serviceSubtaskDetail.setId(UUID.randomUUID().toString());
+//                serviceSubtaskDetail.setId(UUID.randomUUID().toString());
                 serviceSubtaskDetail.setCreateTime(new Date());
                 serviceSubtaskDetail.setGuid(selectServiceSubtaskList.get(0).getGuid());
                 serviceSubtaskDetail.setOrgid(serviceSubTaskDetailReq.getOrgid());
@@ -2112,7 +1971,11 @@
         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()));
+            //璁板綍鐢佃瘽鍙戦�佺姸鎬�
+            ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallRecordVO.getTaskid()));
+            setFailPreachForm(serviceSubtask, "3", "鏃犱汉鎺ュ惉", "4");
+            //杩涜鐭俊琛ュ伩
+//            getSmsCompensate(Long.valueOf(phoneCallRecordVO.getTaskid()));
             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
             redisCache.removeElementFromList("cache-exist", phoneCallRecordVO.getTaskid());
         } else if (ObjectUtils.isNotEmpty(cacheObject) && String.valueOf(cacheObject).equals("2")) {
@@ -2130,6 +1993,7 @@
             serviceSubtask.setUpdateTime(new Date());
             log.error("鐢佃瘽鎷ㄦ墦宸插畬鎴恠erviceSubtask鐨勫�间负:{}", serviceSubtask);
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+            setFailPreachForm(serviceSubtask, StringUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) ? serviceSubtask.getCurrentPreachform() : "3", "鐢佃瘽鎷ㄦ墦宸插畬鎴�", "9");
             //涓嬭浇鏂囦欢
             ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
@@ -2147,8 +2011,10 @@
 //            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());
+//            ftpService.downloadFolder("/" + LocalDate.now().toString(), profile + "/upload/vadio/voice/" + LocalDate.now().toString());
             redisCache.deleteObject(phoneCallRecordVO.getTaskid() + "recordAccept-hungup");
+            ServiceSubtask ss = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtask.getId());
+            setFailPreachForm(ss, StringUtils.isNotEmpty(ss.getCurrentPreachform()) ? ss.getCurrentPreachform() : "3", "鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�", "5");
         }
 
         return 1;
@@ -2227,11 +2093,11 @@
     public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {
         log.error("getSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
         List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
-        List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
-        
+//        List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
+
         // 鏍规嵁鏉′欢杩涜鍒嗙粍
         Map<String, List<ServiceSubtask>> collect = new HashMap<>();
-        
+
         if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) {
             if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
                 collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown")));
@@ -2245,7 +2111,7 @@
                 collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
             }
         }
-        
+
         for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
             if (CollectionUtils.isEmpty(serviceSubtaskList)) {
                 continue;
@@ -2259,14 +2125,14 @@
             // 濡傛灉鏈夊尰鐢熺紪鐮侊紝璁剧疆鍖荤敓缂栫爜鐢ㄤ簬鍙婃椂鐜囨煡璇�
             if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
                 ss.setDrcode(serviceSubtaskList.get(0).getDrcode());
-            }else {
+            } else {
                 if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {
                     ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
                 } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) {
                     ss.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
                 }
             }
-            
+
             ss.setStarttime(serviceSubtaskCountReq.getStartTime());
             ss.setEndtime(serviceSubtaskCountReq.getEndTime());
             if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {
@@ -2310,15 +2176,15 @@
                 collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
             }
         }
-        List<ServiceSubtaskCount> joySubCount=serviceSubtaskMapper.getSfStatisticsJoy(serviceSubtaskCountReq);
+        List<ServiceSubtaskCount> joySubCount = serviceSubtaskMapper.getSfStatisticsJoy(serviceSubtaskCountReq);
         for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
             if (CollectionUtils.isEmpty(serviceSubtaskList)) {
                 continue;
             }
-            ServiceSubtaskStatistic statistic = getStatisticJoy(serviceSubtaskList,joySubCount);
-            if(statistic.getJoyCount()!=0&&statistic.getJoyAllCount()!=0) {
+            ServiceSubtaskStatistic statistic = getStatisticJoy(serviceSubtaskList, joySubCount);
+            if (statistic.getJoyCount() != 0 && statistic.getJoyAllCount() != 0) {
                 Double joyTotal = Double.parseDouble(statistic.getJoyCount() + "") / Double.parseDouble(statistic.getJoyAllCount() + "") * 100;
-                statistic.setJoyTotal(String.format("%.2f", joyTotal)+"%");
+                statistic.setJoyTotal(String.format("%.2f", joyTotal) + "%");
             }
             //鍙婃椂鐜�
             ServiceSubtask ss = new ServiceSubtask();
@@ -2327,7 +2193,7 @@
             // 濡傛灉鏈夊尰鐢熺紪鐮侊紝璁剧疆鍖荤敓缂栫爜鐢ㄤ簬鍙婃椂鐜囨煡璇�
             if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
                 ss.setDrcode(serviceSubtaskList.get(0).getDrcode());
-            }else {
+            } else {
                 if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {
                     ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
                 } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) {
@@ -2380,7 +2246,7 @@
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
                     serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && ( serviceSubtask.getSendstate() == 6)) {
+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
                     serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                 }
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
@@ -2445,7 +2311,7 @@
         return serviceSubtaskStatistic;
     }
 
-    private ServiceSubtaskStatistic getStatisticJoy(List<ServiceSubtask> serviceSubtaskList,List<ServiceSubtaskCount> joySubCount) {
+    private ServiceSubtaskStatistic getStatisticJoy(List<ServiceSubtask> serviceSubtaskList, List<ServiceSubtaskCount> joySubCount) {
         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
         //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
         DecimalFormat percentFormat = new DecimalFormat("##.##%");
@@ -2461,13 +2327,12 @@
         serviceSubtaskStatistic.setJoyAllCount(0);
         for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
             //婊℃剰搴�
-            List<ServiceSubtaskCount> joyCountTemp= joySubCount.stream().filter(r->r.getSubTaskId().equals(serviceSubtask.getId()))
-                    .collect(Collectors.toList());
-            if(joyCountTemp!=null&&joyCountTemp.size()>0){
-                if(ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyCount()))
-                    serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount()+joyCountTemp.get(0).getJoyCount());
-                if(ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyAllCount()))
-                    serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount()+joyCountTemp.get(0).getJoyAllCount());
+            List<ServiceSubtaskCount> joyCountTemp = joySubCount.stream().filter(r -> r.getSubTaskId().equals(serviceSubtask.getId())).collect(Collectors.toList());
+            if (joyCountTemp != null && joyCountTemp.size() > 0) {
+                if (ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyCount()))
+                    serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount() + joyCountTemp.get(0).getJoyCount());
+                if (ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyAllCount()))
+                    serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount() + joyCountTemp.get(0).getJoyAllCount());
             }
             //鏃犻渶闅忚浜烘
             if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
@@ -2486,7 +2351,7 @@
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
                     serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && ( serviceSubtask.getSendstate() == 6)) {
+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
                     serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                 }
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
@@ -2611,6 +2476,11 @@
         return serviceSubtaskDetail;
     }
 
+    /**
+     * 鐢佃瘽鐨勮ˉ鍋挎柟娉曪紙鑰侊級
+     *
+     * @param subTaskId
+     */
     private void getSmsCompensate(Long subTaskId) {
         ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(subTaskId);
         RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
@@ -2641,6 +2511,34 @@
         serviceSubtask.setSendstate(3L);
         serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
 
+        //闇�瑕佸湪servicePreachform閲岃褰曚竴涓嬬煭淇$姸鎬�
+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+        serviceSubtaskPreachform.setPreachform("4");
+        serviceSubtaskPreachform.setSubid(subTaskId);
+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
+            serviceSubtaskPreachform1.setSendstate("9");
+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
+        } else if (CollectionUtils.isEmpty(serviceSubtaskPreachforms)) {
+            //濡傛灉涓虹┖鐨勮瘽锛岃鏄庣敤鎴锋病鏈夐�夌煭淇″彂閫佹柟寮忥紝杩欎釜鏃跺�欓渶瑕佸己鍒舵柊澧炰竴鏉�
+            //鑾峰彇sort鐨勬渶澶у��
+            ServiceSubtaskPreachform ssp = new ServiceSubtaskPreachform();
+            ssp.setSubid(subTaskId);
+            ssp.setTaskid(serviceSubtask.getTaskid());
+            ssp.setOrgid(serviceSubtask.getOrgid());
+            List<ServiceSubtaskPreachform> sspf2 = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(ssp);
+
+            serviceSubtaskPreachform.setSort(0L);
+            if (CollectionUtils.isNotEmpty(sspf2)) {
+                serviceSubtaskPreachform.setSort(Long.valueOf(sspf2.size()));
+            }
+            serviceSubtaskPreachform.setSendstate("2");
+            serviceSubtaskPreachformMapper.insertServiceSubtaskPreachform(serviceSubtaskPreachform);
+        }
+
     }
 
     //閫氳繃褰撳墠鏃堕棿锛屾媺鍙栫數璇濇�绘暟
@@ -2665,6 +2563,72 @@
     }
 
     public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq) {
-       return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);
+        return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);
+    }
+
+
+    /**
+     * @param serviceSubtask
+     * @param preachform
+     * @param remark
+     * @param failSendstate
+     * @return
+     */
+    public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
+        //灏嗙姸鎬佽缃负澶辫触
+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+        serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
+        serviceSubtaskPreachform.setTaskid(serviceSubtask.getTaskid());
+        serviceSubtaskPreachform.setOrgid(serviceSubtask.getOrgid());
+        //鑾峰彇璇ユ偅鑰呯殑鍙戦�佹柟寮忔�绘暟
+        List<ServiceSubtaskPreachform> spSize = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+
+        serviceSubtaskPreachform.setPreachform(preachform);
+        //1:鏈彂閫佺姸鎬�
+        serviceSubtaskPreachform.setSendstate("1");
+        if (preachform.equals("3")) {
+            //鐢佃瘽杩涘叆闃熷垪鍚庯紝鐘舵�佷細鍙樻垚2
+            serviceSubtaskPreachform.setSendstate("2");
+        }
+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
+            ServiceSubtaskPreachform serviceSubtaskPreachform1 = serviceSubtaskPreachforms.get(0);
+            serviceSubtaskPreachform1.setSendstate(failSendstate);
+            serviceSubtaskPreachform1.setRemark(remark);
+            serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
+
+            //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
+            if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
+                serviceSubtask.setCurrentPreachform(preachform);
+                serviceSubtask.setSendstate(5L);
+                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+                return true;
+            }
+        }
+
+        serviceSubtask.setCurrentPreachform(preachform);
+        serviceSubtask.setSendstate(3L);
+        //濡傛灉绛変簬9锛屽垯璇存槑鐢佃瘽姝e父缁撴潫浜�
+        if (failSendstate.equals("9")) serviceSubtask.setSendstate(6L);
+        serviceSubtask.setVisitTime(getNextVisitTime(serviceSubtask.getId(), serviceSubtask.getTaskid(), serviceSubtask.getVisitTime()));
+        serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
+        return true;
+    }
+
+    private Date getNextVisitTime(Long subid, Long taskid, Date visitTime) {
+        ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
+        serviceSubtaskPreachform.setSubid(subid);
+        serviceSubtaskPreachform.setTaskid(taskid);
+        List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+        if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
+            String compensateTime = serviceSubtaskPreachforms.get(0).getCompensateTime();
+            int hoursToAdd = Integer.valueOf(compensateTime) * 24;
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(visitTime);
+            calendar.add(Calendar.HOUR_OF_DAY, hoursToAdd);
+            Date newDate = calendar.getTime();
+            return newDate;
+        }
+        return visitTime;
     }
 }

--
Gitblit v1.9.3