From aed6d61750963f48efbd74f843175075684819de Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 12 五月 2026 15:00:46 +0800
Subject: [PATCH] 【市一】随访查询结果为0

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  255 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 203 insertions(+), 52 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 5805099..b731d40 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -16,6 +16,7 @@
 import com.smartor.config.PhoneUtils;
 import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
 import com.smartor.domain.*;
+import com.smartor.domain.VO.HeLibraryCountVO;
 import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
@@ -31,6 +32,7 @@
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -162,6 +164,12 @@
     private Integer phoneUpEveryHour;
     @Value("${phoneEndHour}")
     private Integer phoneEndHour;
+
+    @Autowired
+    private Icd10Mapper icd10Mapper;
+
+    @Value("${spring.profiles.active}")
+    private String active;
 
     /**
      * 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級
@@ -513,6 +521,23 @@
         return serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
     }
 
+    @Override
+    public Boolean updateTemplate(ServiceSubtaskTemplateVO serviceSubtaskTemplateVO) {
+        ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskTemplateVO.getSubId());
+        if (serviceSubtask == null || serviceSubtask.getSendstate() != 2L)
+            throw new BaseException("璇ヤ换鍔″凡鍙戦�佺粰鎮h�咃紝涓嶈兘鍐嶈繘琛屼慨鏀规ā鏉�");
+
+        Integer taskTempid = svyTaskTemplateService.saveOrUpdateTemplate(serviceSubtaskTemplateVO.getSvyTaskTemplateVO());
+        if (taskTempid == null) return false;
+
+        String tempName = svyTaskTemplateService.selectSvyTaskTemplateBySvyid(Long.valueOf(taskTempid)).getSvyname();
+        serviceSubtask.setTemplateid(taskTempid.longValue());
+        serviceSubtask.setTemplatename(tempName);
+        serviceSubtask.setUpdateBy(serviceSubtaskTemplateVO.getUpdateBy());
+        serviceSubtask.setLibtemplateid(serviceSubtaskTemplateVO.getSvyTaskTemplateVO().getTemplateid());
+        return updateServiceSubtask(serviceSubtask);
+    }
+
     /**
      * 鎵归噺鍒犻櫎鍗曚竴浠诲姟锛堥殢璁匡級
      *
@@ -613,10 +638,19 @@
                     ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
                     serviceTaskdiag.setTaskId(serviceTask.getTaskid());
                     serviceTaskdiag.setTaskName(serviceTask.getTaskName());
+                    serviceTaskdiag.setServiceType(serviceTaskVO.getServiceType());
                     serviceTaskdiag.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                     if (serviceTaskVO.getLongTask() == 1) serviceTaskdiag.setLongtask(1L);
                     serviceTaskdiag.setIcd10code(serviceTaskVO.getIcd10code());
                     serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
+                    //鍗楀崕闄勪竴鐨刬cd10code鏄湁閲嶅鐨勶紝鎵�浠ヤ笉鑳界敤鍗楀崕闄勪竴鐨刬cd10code鍘绘煡璇�
+                    if (!active.equals("nhfy") && StringUtils.isEmpty(serviceTaskVO.getIcd10name())) {
+                        Icd10 icd10 = new Icd10();
+                        icd10.setIcdcode(serviceTaskVO.getIcd10code());
+                        List<Icd10> icd10s = icd10Mapper.selectIcd10List(icd10);
+                        if (CollectionUtils.isNotEmpty(icd10s))
+                            serviceTaskdiag.setIcd10name(icd10s.get(0).getIcdname());
+                    }
                     serviceTaskdiag.setGuid(serviceTask.getGuid());
                     serviceTaskdiag.setOrgid(serviceTask.getOrgid());
                     serviceTaskdiag.setCreateTime(new Date());
@@ -640,12 +674,6 @@
                     serviceTaskoper.setOrgid(serviceTask.getOrgid());
                     serviceTaskoper.setCreateTime(new Date());
                     if (StringUtils.isNotEmpty(serviceTaskVO.getOplevelcode())) {
-//                        String[] opcodes = serviceTaskVO.getOpcode().split(",");
-//                        for (String opcode : opcodes) {
-//                            serviceTaskoper.setOpcode(opcode);
-//                            log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
-//                            serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
-//                        }
                         log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
                         serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
                     }
@@ -852,13 +880,19 @@
                     serviceTaskdiag.setUpdateTime(new Date());
                     if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {
                         String[] icd10codes = serviceTaskVO.getIcd10code().split(",");
-                        for (String icdcode : icd10codes) {
+                        String[] icd10names = serviceTaskVO.getIcd10name().split(",");
+                        if (icd10codes.length != icd10names.length) {
+                            throw new BaseException("鐤剧梾缂栫爜鍜岀柧鐥呭悕绉版暟閲忎笉涓�鑷�");
+                        }
+                        for (int i = 0; i < icd10codes.length; i++) {
                             //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦�
                             ServiceTaskdiag serviceTaskdiag2 = new ServiceTaskdiag();
                             serviceTaskdiag2.setTaskId(serviceTaskVO.getTaskid());
-                            serviceTaskdiag2.setIcd10code(icdcode);
+                            serviceTaskdiag2.setIcd10code(icd10codes[i]);
+                            serviceTaskdiag2.setIcd10name(icd10names[i]);
                             List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagService.selectServiceTaskdiagList(serviceTaskdiag2);
-                            serviceTaskdiag.setIcd10code(icdcode);
+                            serviceTaskdiag.setIcd10code(icd10codes[i]);
+                            serviceTaskdiag.setIcd10name(icd10names[i]);
                             log.info("----serviceTaskdiag鏇存柊鐨勫�间负锛歿}", serviceTaskdiag);
                             if (CollectionUtils.isNotEmpty(serviceTaskdiags)) {
                                 serviceTaskdiag.setId(serviceTaskdiags.get(0).getId());
@@ -2373,7 +2407,7 @@
      * @return
      */
     @Override
-    @Cacheable(value = "sfStatistics", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
+//    @Cacheable(value = "sfStatistics", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
     public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {
         log.info("getSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
         String groupKey = "drcode";
@@ -2461,11 +2495,13 @@
         ssRate.setStarttime(serviceSubtaskCountReq.getStartTime());
         ssRate.setEndtime(serviceSubtaskCountReq.getEndTime());
         ssRate.setVisitCount(serviceSubtaskCountReq.getVisitCount());
+        ssRate.setServiceTypeList(serviceSubtaskCountReq.getServiceType());
         if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {
             ssRate.setEndtime(new Date());
         }
         ssRate.setGroupKey(groupKey);
         ssRate.setGroupKeyList(groupKeyList);
+        ssRate.setRateDay(serviceSubtaskCountReq.getRateDay());
         Map<String, Map<String, Object>> jsRates = new HashMap<>();
         if (!collect.isEmpty()) {
             jsRates = serviceSubtaskMapper.selectTimelyRateBatch(ssRate);
@@ -2473,7 +2509,7 @@
         return jsRates;
     }
 
-    @Override
+
     public List<ServiceSubtaskStatistic> getSfStatisticsExport(ServiceSubtaskCountReq serviceSubtaskCountReq) {
         List<ServiceSubtaskStatistic> sfStatistics = getSfStatistics(serviceSubtaskCountReq);
         // 娣诲姞鎬昏琛�
@@ -2485,6 +2521,12 @@
         }
 
         return sfStatistics;
+    }
+
+    @Override
+    public List<ServiceSubtaskIsAbnormalStatistic> getSfStatisticsIsAbnormalExport(ServiceSubtaskCountReq serviceSubtaskCountReq) {
+
+        return null;
     }
 
     /**
@@ -2685,6 +2727,8 @@
             serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());
             //鍑洪櫌浜烘
             serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
+            //鏃犻渶闅忚璇︽儏
+            List<ServiceSubtask> nonFollowUpInfo = new ArrayList<>();
             //璁板綍杩囨护鎮h�呰鎯�
             List<ServiceSubtask> filterServiceSubtasks = new ArrayList<>();
             //璁板綍棣栨搴旈殢璁胯鎯�
@@ -2697,6 +2741,8 @@
             List<ServiceSubtask> followUpFailInfo = new ArrayList<>();
             //璁板綍棣栨闅忚浜哄伐璇︽儏
             List<ServiceSubtask> manualInfo = new ArrayList<>();
+            //璁板綍棣栨闅忚璇煶璇︽儏
+            List<ServiceSubtask> voiceInfo = new ArrayList<>();
             //璁板綍棣栨闅忚鐭俊璇︽儏
             List<ServiceSubtask> smsInfo = new ArrayList<>();
             //璁板綍棣栨闅忚寰俊璇︽儏
@@ -2710,17 +2756,20 @@
             List<ServiceSubtask> followUpSuccessAgainInfo = new ArrayList<>();
             //璁板綍鍐嶆闅忚澶辫触璇︽儏
             List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>();
-            //璁板綍棣栨闅忚浜哄伐璇︽儏
+            //璁板綍鍐嶆闅忚浜哄伐璇︽儏
             List<ServiceSubtask> manualAgainInfo = new ArrayList<>();
-            //璁板綍棣栨闅忚鐭俊璇︽儏
+            //璁板綍鍐嶆闅忚璇煶璇︽儏
+            List<ServiceSubtask> voiceAgainInfo = new ArrayList<>();
+            //璁板綍鍐嶆闅忚鐭俊璇︽儏
             List<ServiceSubtask> smsAgainInfo = new ArrayList<>();
-            //璁板綍棣栨闅忚寰俊璇︽儏
+            //璁板綍鍐嶆闅忚寰俊璇︽儏
             List<ServiceSubtask> wechatAgainInfo = new ArrayList<>();
 
             for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
                 //鏃犻渶闅忚浜烘
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
                     serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);
+                    nonFollowUpInfo.add(serviceSubtask);
                     if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 6) {
                         serviceSubtaskStatistic.setFilterCount(serviceSubtaskStatistic.getFilterCount() + 1L);
                         filterServiceSubtasks.add(serviceSubtask);
@@ -2758,17 +2807,22 @@
                             followUpSuccessInfo.add(serviceSubtask);
                         }
                         //棣栨闅忚浜哄伐 (涓嶇粺璁′笉鎵ц)
-                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                             serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                             manualInfo.add(serviceSubtask);
                         }
+                        //棣栨闅忚璇煶 (涓嶇粺璁′笉鎵ц)
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                            serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
+                            voiceInfo.add(serviceSubtask);
+                        }
                         //棣栨闅忚鐭俊(涓嶇粺璁′笉鎵ц)
-                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                             serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                             smsInfo.add(serviceSubtask);
                         }
                         //棣栨闅忚寰俊(涓嶇粺璁′笉鎵ц)
-                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                             serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                             wechatInfo.add(serviceSubtask);
                         }
@@ -2779,17 +2833,22 @@
                             followUpSuccessInfo.add(serviceSubtask);
                         }
                         //棣栨闅忚浜哄伐 (缁熻涓嶆墽琛�)
-                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                             serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                             manualInfo.add(serviceSubtask);
                         }
+                        //棣栨闅忚璇煶 (缁熻涓嶆墽琛�)
+                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                            serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
+                            voiceInfo.add(serviceSubtask);
+                        }
                         //棣栨闅忚鐭俊(缁熻涓嶆墽琛�)
-                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                             serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                             smsInfo.add(serviceSubtask);
                         }
                         //棣栨闅忚寰俊(缁熻涓嶆墽琛�)
-                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                             serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                             wechatInfo.add(serviceSubtask);
                         }
@@ -2831,17 +2890,22 @@
                             followUpSuccessAgainInfo.add(serviceSubtask);
                         }
                         //鍐嶆闅忚浜哄伐(涓嶇粺璁′笉鎵ц)
-                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                             serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                             manualAgainInfo.add(serviceSubtask);
                         }
+                        //鍐嶆闅忚璇煶(涓嶇粺璁′笉鎵ц)
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                            serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
+                            voiceAgainInfo.add(serviceSubtask);
+                        }
                         //鍐嶆闅忚鐭俊(涓嶇粺璁′笉鎵ц)
-                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                             serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                             smsAgainInfo.add(serviceSubtask);
                         }
                         //鍐嶆闅忚寰俊(涓嶇粺璁′笉鎵ц)
-                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                             serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                             wechatAgainInfo.add(serviceSubtask);
                         }
@@ -2852,17 +2916,22 @@
                             followUpSuccessAgainInfo.add(serviceSubtask);
                         }
                         //鍐嶆闅忚浜哄伐(缁熻涓嶆墽琛�)
-                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                             serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                             manualAgainInfo.add(serviceSubtask);
                         }
+                        //鍐嶆闅忚璇煶(缁熻涓嶆墽琛�)
+                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                            serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
+                            voiceAgainInfo.add(serviceSubtask);
+                        }
                         //鍐嶆闅忚鐭俊(缁熻涓嶆墽琛�)
-                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                             serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                             smsAgainInfo.add(serviceSubtask);
                         }
                         //鍐嶆闅忚寰俊(缁熻涓嶆墽琛�)
-                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                        if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                             serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                             wechatAgainInfo.add(serviceSubtask);
                         }
@@ -2899,6 +2968,8 @@
                 }
             }
             serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks);
+            //璁板綍鏃犻渶闅忚璇︽儏
+            serviceSubtaskStatistic.setNonFollowUpInfo(nonFollowUpInfo);
             //璁板綍棣栨搴旈殢璁胯鎯�
             serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo);
             //璁板綍棣栨寰呴殢璁胯鎯�
@@ -2909,6 +2980,8 @@
             serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo);
             //璁板綍棣栨闅忚浜哄伐璇︽儏
             serviceSubtaskStatistic.setManualInfo(manualInfo);
+            //璁板綍棣栨闅忚璇煶璇︽儏
+            serviceSubtaskStatistic.setVoiceInfo(voiceInfo);
             //璁板綍棣栨闅忚鐭俊璇︽儏
             serviceSubtaskStatistic.setSmsInfo(smsInfo);
             //璁板綍棣栨闅忚寰俊璇︽儏
@@ -2923,6 +2996,8 @@
             serviceSubtaskStatistic.setFollowUpFailAgainInfo(followUpFailAgainInfo);
             //璁板綍鍐嶆闅忚浜哄伐璇︽儏
             serviceSubtaskStatistic.setManualAgainInfo(manualAgainInfo);
+            //璁板綍鍐嶆闅忚璇煶璇︽儏
+            serviceSubtaskStatistic.setVoiceAgainInfo(voiceAgainInfo);
             //璁板綍鍐嶆闅忚鐭俊璇︽儏
             serviceSubtaskStatistic.setSmsAgainInfo(smsAgainInfo);
             //璁板綍鍐嶆闅忚寰俊璇︽儏
@@ -2951,6 +3026,8 @@
         serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());
         //鍑洪櫌浜烘
         serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
+        //鏃犻渶闅忚璇︽儏
+        List<ServiceSubtask> nonFollowUpInfo = new ArrayList<>();
         //璁板綍杩囨护鎮h�呰鎯�
         List<ServiceSubtask> filterServiceSubtasks = new ArrayList<>();
         //璁板綍棣栨搴旈殢璁胯鎯�
@@ -2963,6 +3040,8 @@
         List<ServiceSubtask> followUpFailInfo = new ArrayList<>();
         //璁板綍棣栨闅忚浜哄伐璇︽儏
         List<ServiceSubtask> manualInfo = new ArrayList<>();
+        //璁板綍棣栨闅忚璇煶璇︽儏
+        List<ServiceSubtask> voiceInfo = new ArrayList<>();
         //璁板綍棣栨闅忚鐭俊璇︽儏
         List<ServiceSubtask> smsInfo = new ArrayList<>();
         //璁板綍棣栨闅忚寰俊璇︽儏
@@ -2972,6 +3051,7 @@
             //鏃犻渶闅忚浜烘
             if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
                 serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);
+                nonFollowUpInfo.add(serviceSubtask);
                 if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 6) {
                     serviceSubtaskStatistic.setFilterCount(serviceSubtaskStatistic.getFilterCount() + 1L);
                     filterServiceSubtasks.add(serviceSubtask);
@@ -3009,17 +3089,22 @@
                         followUpSuccessInfo.add(serviceSubtask);
                     }
                     //棣栨闅忚浜哄伐 (涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                         serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                         manualInfo.add(serviceSubtask);
                     }
+                    //棣栨闅忚璇煶 (涓嶇粺璁′笉鎵ц)
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                        serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
+                        voiceInfo.add(serviceSubtask);
+                    }
                     //棣栨闅忚鐭俊(涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                         serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                         smsInfo.add(serviceSubtask);
                     }
                     //棣栨闅忚寰俊(涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                         serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                         wechatInfo.add(serviceSubtask);
                     }
@@ -3030,17 +3115,22 @@
                         followUpSuccessInfo.add(serviceSubtask);
                     }
                     //棣栨闅忚浜哄伐 (缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                         serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                         manualInfo.add(serviceSubtask);
                     }
+                    //棣栨闅忚璇煶 (缁熻涓嶆墽琛�)
+                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                        serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
+                        voiceInfo.add(serviceSubtask);
+                    }
                     //棣栨闅忚鐭俊(缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                         serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                         smsInfo.add(serviceSubtask);
                     }
                     //棣栨闅忚寰俊(缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                         serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                         wechatInfo.add(serviceSubtask);
                     }
@@ -3077,6 +3167,8 @@
             }
         }
         serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks);
+        //璁板綍鏃犻渶闅忚璇︽儏
+        serviceSubtaskStatistic.setNonFollowUpInfo(nonFollowUpInfo);
         //璁板綍棣栨搴旈殢璁胯鎯�
         serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo);
         //璁板綍棣栨寰呴殢璁胯鎯�
@@ -3087,6 +3179,8 @@
         serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo);
         //璁板綍棣栨闅忚浜哄伐璇︽儏
         serviceSubtaskStatistic.setManualInfo(manualInfo);
+        //璁板綍棣栨闅忚璇煶璇︽儏
+        serviceSubtaskStatistic.setVoiceInfo(voiceInfo);
         //璁板綍棣栨闅忚鐭俊璇︽儏
         serviceSubtaskStatistic.setSmsInfo(smsInfo);
         //璁板綍棣栨闅忚寰俊璇︽儏
@@ -3113,6 +3207,8 @@
         serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());
         //鍑洪櫌浜烘
         serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
+        //鏃犻渶闅忚璇︽儏
+        List<ServiceSubtask> nonFollowUpInfo = new ArrayList<>();
         //璁板綍杩囨护鎮h�呰鎯�
         List<ServiceSubtask> filterServiceSubtasks = new ArrayList<>();
 
@@ -3126,6 +3222,8 @@
         List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>();
         //璁板綍鍐嶆闅忚浜哄伐璇︽儏
         List<ServiceSubtask> manualAgainInfo = new ArrayList<>();
+        //璁板綍鍐嶆闅忚璇煶璇︽儏
+        List<ServiceSubtask> voiceAgainInfo = new ArrayList<>();
         //璁板綍鍐嶆闅忚鐭俊璇︽儏
         List<ServiceSubtask> smsAgainInfo = new ArrayList<>();
         //璁板綍鍐嶆闅忚寰俊璇︽儏
@@ -3135,6 +3233,7 @@
             //鏃犻渶闅忚浜烘
             if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
                 serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);
+                nonFollowUpInfo.add(serviceSubtask);
                 if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 6) {
                     serviceSubtaskStatistic.setFilterCount(serviceSubtaskStatistic.getFilterCount() + 1L);
                     filterServiceSubtasks.add(serviceSubtask);
@@ -3172,17 +3271,22 @@
                         followUpSuccessAgainInfo.add(serviceSubtask);
                     }
                     //鍐嶆闅忚浜哄伐(涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                         serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                         manualAgainInfo.add(serviceSubtask);
                     }
+                    //鍐嶆闅忚璇煶(涓嶇粺璁′笉鎵ц)
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                        serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
+                        voiceAgainInfo.add(serviceSubtask);
+                    }
                     //鍐嶆闅忚鐭俊(涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                         serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                         smsAgainInfo.add(serviceSubtask);
                     }
                     //鍐嶆闅忚寰俊(涓嶇粺璁′笉鎵ц)
-                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                         serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                         wechatAgainInfo.add(serviceSubtask);
                     }
@@ -3193,17 +3297,22 @@
                         followUpSuccessAgainInfo.add(serviceSubtask);
                     }
                     //鍐嶆闅忚浜哄伐(缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                         serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                         manualAgainInfo.add(serviceSubtask);
                     }
+                    //鍐嶆闅忚璇煶(缁熻涓嶆墽琛�)
+                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                        serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
+                        voiceAgainInfo.add(serviceSubtask);
+                    }
                     //鍐嶆闅忚鐭俊(缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                         serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                         smsAgainInfo.add(serviceSubtask);
                     }
                     //鍐嶆闅忚寰俊(缁熻涓嶆墽琛�)
-                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                    if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                         serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                         wechatAgainInfo.add(serviceSubtask);
                     }
@@ -3240,6 +3349,8 @@
             }
         }
         serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks);
+        //璁板綍鏃犻渶闅忚璇︽儏
+        serviceSubtaskStatistic.setNonFollowUpInfo(nonFollowUpInfo);
         //璁板綍鍐嶆搴旈殢璁胯鎯�
         serviceSubtaskStatistic.setNeedFollowUpAgainInfo(needFollowUpAgainInfo);
         //璁板綍鍐嶆寰呴殢璁胯鎯�
@@ -3250,6 +3361,8 @@
         serviceSubtaskStatistic.setFollowUpFailAgainInfo(followUpFailAgainInfo);
         //璁板綍鍐嶆闅忚浜哄伐璇︽儏
         serviceSubtaskStatistic.setManualAgainInfo(manualAgainInfo);
+        //璁板綍鍐嶆闅忚璇煶璇︽儏
+        serviceSubtaskStatistic.setVoiceAgainInfo(voiceAgainInfo);
         //璁板綍鍐嶆闅忚鐭俊璇︽儏
         serviceSubtaskStatistic.setSmsAgainInfo(smsAgainInfo);
         //璁板綍鍐嶆闅忚寰俊璇︽儏
@@ -3310,13 +3423,13 @@
                 } else {
                     serviceSubtaskStatistic.setFollowUpRate("0.00%");
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                     serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                     serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                     serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                 }
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
@@ -3342,13 +3455,13 @@
                 } else {
                     serviceSubtaskStatistic.setFollowUpRateAgain("0.00%");
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                     serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                     serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                     serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                 }
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
@@ -3428,13 +3541,13 @@
                 } else {
                     serviceSubtaskStatistic.setFollowUpRate("0.00%");
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                     serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                     serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                     serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                 }
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
@@ -3460,13 +3573,13 @@
                 } else {
                     serviceSubtaskStatistic.setFollowUpRateAgain("0.00%");
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
                     serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
                     serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                     serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                 }
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
@@ -3572,7 +3685,8 @@
         map.put("content", sendMagParam.getContent());
         String result = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(map));
         redisCache.setCacheObject(subTaskId + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
-        if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) serviceSubtask.setRemark("鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔�");
+        if (StringUtils.isNotEmpty(serviceSubtask.getRemark()))
+            serviceSubtask.setRemark("鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔�");
         else serviceSubtask.setRemark("鐭俊琛ュ伩鍙戦�佹垚鍔�");
         serviceSubtask.setSendstate(3L);
         serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
@@ -3850,13 +3964,18 @@
             serviceSubtaskPreachform1.setRemark(remark);
             serviceSubtaskPreachformMapper.updateServiceSubtaskPreachform(serviceSubtaskPreachform1);
 
+
             //濡傛灉褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛岄偅鐩存帴灏唖erviceSubtask鐨剆endstate鐘舵�佹敼鎴�5灏辫浜�(鍏ㄥけ璐ヤ簡)
             if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
                 serviceSubtask.setCurrentPreachform(preachform);
                 serviceSubtask.setSendstate(5L);
-                serviceSubtask.setRemark("鎵�鏈夊彂閫佹柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
+                serviceSubtask.setRemark(remark + ";鎵�鏈夊彂閫佹柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
                 serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                 return true;
+            } else {
+                //鍔犲叆鐩墠琛ュ伩閲岀殑 remark
+                serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + "," + remark : remark);
+                serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
             }
         }
 
@@ -4155,6 +4274,38 @@
         }
     }
 
+    @Override
+    public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO) {
+        if (ObjectUtils.isEmpty(heLibraryCountVO)) {
+            return new HashMap<>();
+        }
+        // 1. 鏌ヨ鍒嗙粍缁熻锛堝彂閫佹�婚噺銆佸彂閫佹垚鍔熼噺銆佸凡璇婚噺锛�
+        List<Map<String, Object>> groupStats = serviceSubtaskMapper.getHeLibraryCount(heLibraryCountVO);
+
+        // 2. 璁$畻鍚勭粍鐨勫彂閫佹垚鍔熺巼鍜屽凡璇荤巼
+        List<Map<String, Object>> result = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(groupStats)) {
+            for (Map<String, Object> row : groupStats) {
+                long totalCount = row.get("totalCount") != null ? ((Number) row.get("totalCount")).longValue() : 0L;
+                long sendSuccessCount = row.get("sendSuccessCount") != null ? ((Number) row.get("sendSuccessCount")).longValue() : 0L;
+                long readCount = row.get("readCount") != null ? ((Number) row.get("readCount")).longValue() : 0L;
+                // 鍙戦�佹垚鍔熺巼
+                double sendSuccessRate = totalCount > 0 ? (double) sendSuccessCount / totalCount : 0.0;
+                // 宸茶鐜囷紙鍩轰簬鍙戦�佹垚鍔熺殑鏁伴噺璁$畻锛�
+                double readRate = sendSuccessCount > 0 ? (double) readCount / sendSuccessCount : 0.0;
+                row.put("sendSuccessRate", sendSuccessRate);
+                row.put("readRate", readRate);
+                result.add(row);
+            }
+        }
+
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("list", result);
+        resultMap.put("total", result.size());
+        return resultMap;
+    }
+
+
     private Boolean saveServiceSubtaskDetail(ServiceSubtask serviceSubtask) {
         Boolean result = true;
         //3.4 濡傛灉3.1鎴�3.2涓簍rue鐨勮瘽锛屾牴鎹畉ype鍒ゆ柇浠�涔堢被鍨�

--
Gitblit v1.9.3