From 6a41d197da658985458784029070971bd02ce8df Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 03 四月 2026 14:23:41 +0800
Subject: [PATCH] 【丽水】随访统计 首次再次分开

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  558 ++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 483 insertions(+), 75 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 b7a5d61..80727d1 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -104,10 +104,16 @@
     private IServiceOutPathService iServiceOutPathService;
 
     @Autowired
+    private IPatMedOuthospService iPatMedOuthospService;
+
+    @Autowired
     private FtpService ftpService;
 
     @Autowired
     private PatMedInhospMapper patMedInhospMapper;
+
+    @Autowired
+    private PatMedOuthospMapper patMedOuthospMapper;
 
     @Autowired
     private PatArchiveMapper patArchiveMapper;
@@ -199,6 +205,15 @@
             try {
                 List<Map<String, Object>> mapList = objectMapper.readValue(serviceTask.getPreachformDesc(), List.class);
                 serviceTaskVO.setPreachformList(mapList);
+                if(ObjectUtils.isNotEmpty(serviceTask.getTaskid())){
+                    ServiceTaskoper operVo = new ServiceTaskoper();
+                    operVo.setTaskId(serviceTask.getTaskid());
+                    operVo.setOrgid(serviceTask.getOrgid());
+                    List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(operVo);
+                    if(ObjectUtils.isNotEmpty(serviceTaskopers)){
+                        serviceTaskVO.setOplevelcode(serviceTaskopers.get(0).getOplevelcode());
+                    }
+                }
 //
 //                String result = mapList.stream().map(mapList1 -> mapList1.get("preachform")).map(String::valueOf).collect(Collectors.joining(","));
 //                serviceTaskVO.setPreachform(result);
@@ -216,6 +231,15 @@
         serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon());
         serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight());
         serviceTaskVO.setPreachform(serviceTask.getPreachform());
+        if(ObjectUtils.isNotEmpty(serviceTask.getTaskid())){
+            ServiceTaskoper operVo = new ServiceTaskoper();
+            operVo.setTaskId(serviceTask.getTaskid());
+            operVo.setOrgid(serviceTask.getOrgid());
+            List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(operVo);
+            if(ObjectUtils.isNotEmpty(serviceTaskopers)){
+                serviceTaskVO.setOplevelcode(serviceTaskopers.get(0).getOplevelcode());
+            }
+        }
         String sendTimeSlot = serviceTask.getSendTimeSlot();
         ObjectMapper objectMapper = new ObjectMapper();
         try {
@@ -303,7 +327,6 @@
 //            String result = resultList.stream().map(mapList1 -> mapList1.get("preachform")).map(String::valueOf).collect(Collectors.joining(","));
 //            serviceTaskVO.setPreachform(result);
         }
-
         serviceTaskVO.setPatTaskRelevances(patTaskRelevances);
         return serviceTaskVO;
     }
@@ -315,7 +338,7 @@
         List<ServiceSubtaskRes> serviceSubtaskResList = new ArrayList<>();
         for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
             ServiceSubtaskRes serviceSubtaskRes = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskRes.class);
-            if(ObjectUtils.isNotEmpty(serviceSubtask.getContinueContent())){
+            if (ObjectUtils.isNotEmpty(serviceSubtask.getContinueContent())) {
                 serviceSubtaskRes.setContinueContent(serviceSubtask.getContinueContent());
             }
             serviceSubtaskResList.add(serviceSubtaskRes);
@@ -593,19 +616,22 @@
                     ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
                     serviceTaskoper.setOpcode(serviceTaskVO.getOpcode());
                     serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
+                    serviceTaskoper.setOplevelcode(serviceTaskVO.getOplevelcode());
                     serviceTaskoper.setTaskId(serviceTask.getTaskid());
                     serviceTaskoper.setTaskName(serviceTask.getTaskName());
                     serviceTaskoper.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                     serviceTaskoper.setGuid(serviceTask.getGuid());
                     serviceTaskoper.setOrgid(serviceTask.getOrgid());
                     serviceTaskoper.setCreateTime(new Date());
-                    if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {
-                        String[] opcodes = serviceTaskVO.getOpcode().split(",");
-                        for (String opcode : opcodes) {
-                            serviceTaskoper.setOpcode(opcode);
-                            log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
-                            serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
-                        }
+                    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);
                     }
 
                 } else {
@@ -620,8 +646,7 @@
                             serviceTaskdept.setDeptCode(deptCode);
                             serviceTaskdept.setDeptType("1");
                             serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
-                            //鍏堥�氳繃浠诲姟ID銆侀儴闂╟ode,鍒ゆ柇ServiceTaskdept鏄惁瀛樺湪锛屼笉瀛樺湪鍒欐柊澧烇紝瀛樺湪鍒欎慨鏀�
-                            serviceTaskdeptService.insertOrUpdateServiceTaskdept(serviceTaskdept);
+                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
                         }
                     }
                     if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) {
@@ -630,8 +655,7 @@
                             serviceTaskdept.setDeptCode(districtcode);
                             serviceTaskdept.setDeptType("2");
                             serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
-                            //鍏堥�氳繃浠诲姟ID銆侀儴闂╟ode,鍒ゆ柇ServiceTaskdept鏄惁瀛樺湪锛屼笉瀛樺湪鍒欐柊澧烇紝瀛樺湪鍒欎慨鏀�
-                            serviceTaskdeptService.insertOrUpdateServiceTaskdept(serviceTaskdept);
+                            serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
                         }
                     }
                 }
@@ -764,8 +788,15 @@
                             serviceTaskdept.setDeptCode(deptCode);
                             serviceTaskdept.setDeptType("1");
                             serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
-                            //鍏堥�氳繃浠诲姟ID銆侀儴闂╟ode,鍒ゆ柇ServiceTaskdept鏄惁瀛樺湪锛屼笉瀛樺湪鍒欐柊澧烇紝瀛樺湪鍒欎慨鏀�
-                            serviceTaskdeptService.insertOrUpdateServiceTaskdept(serviceTaskdept);
+                            ServiceTaskdept st = new ServiceTaskdept();
+                            st.setDeptCode(deptCode);
+                            st.setTaskId(serviceTask.getTaskid());
+                            List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st);
+                            if (CollectionUtils.isEmpty(serviceTaskdepts)) {
+                                serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
+                            } else {
+                                serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept);
+                            }
                         }
                     }
                     if (StringUtils.isNotEmpty(serviceTaskVO.getLeavehospitaldistrictcode())) {
@@ -780,7 +811,15 @@
                             serviceTaskdept.setDeptType("2");
                             serviceTaskdept.setServiceType(serviceTaskVO.getServiceType());
                             //鍏堥�氳繃浠诲姟ID銆侀儴闂╟ode,鍒ゆ柇ServiceTaskdept鏄惁瀛樺湪锛屼笉瀛樺湪鍒欐柊澧烇紝瀛樺湪鍒欎慨鏀�
-                            serviceTaskdeptService.insertOrUpdateServiceTaskdept(serviceTaskdept);
+                            ServiceTaskdept st = new ServiceTaskdept();
+                            st.setDeptCode(districtcode);
+                            st.setTaskId(serviceTask.getTaskid());
+                            List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(st);
+                            if (CollectionUtils.isEmpty(serviceTaskdepts)) {
+                                serviceTaskdeptService.insertServiceTaskdept(serviceTaskdept);
+                            } else {
+                                serviceTaskdeptService.updateServiceTaskdept(serviceTaskdept);
+                            }
                         }
                     }
                 } else if (serviceTaskVO.getAppltype().equals("3")) {
@@ -816,35 +855,48 @@
 
                 } else if (serviceTaskVO.getAppltype().equals("4")) {
                     ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
-                    if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) {
-                        throw new BaseException("鎵嬫湳缂栫爜涓虹┖");
-                    }
+//                    if (StringUtils.isEmpty(serviceTaskVO.getOpcode())) {
+//                        throw new BaseException("鎵嬫湳缂栫爜涓虹┖");
+//                    }
 //                serviceTaskoper.setOpcode(serviceTaskVO.getOpcode());
                     serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
+                    serviceTaskoper.setOplevelcode(serviceTaskVO.getOplevelcode());
                     serviceTaskoper.setTaskId(serviceTask.getTaskid());
                     serviceTaskoper.setTaskName(serviceTask.getTaskName());
                     serviceTaskoper.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                     serviceTaskoper.setGuid(serviceTask.getGuid());
                     serviceTaskoper.setOrgid(serviceTask.getOrgid());
                     serviceTaskoper.setCreateTime(new Date());
-                    if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {
-                        String[] opcodes = serviceTaskVO.getOpcode().split(",");
-                        for (String opcode : opcodes) {
-                            //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦�
-                            ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper();
-                            serviceTaskoper2.setTaskId(serviceTaskVO.getTaskid());
-                            serviceTaskoper2.setOpcode(serviceTaskVO.getOpcode());
-                            List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(serviceTaskoper2);
+//                    if (StringUtils.isNotEmpty(serviceTaskVO.getOpcode())) {
+//                        String[] opcodes = serviceTaskVO.getOpcode().split(",");
+//                        for (String opcode : opcodes) {
+//                            //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦�
+//                            ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper();
+//                            serviceTaskoper2.setTaskId(serviceTaskVO.getTaskid());
+//                            serviceTaskoper2.setOpcode(serviceTaskVO.getOpcode());
+//                            List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(serviceTaskoper2);
+//
+//                            serviceTaskoper.setOpcode(opcode);
+//                            log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
+//                            if (CollectionUtils.isNotEmpty(serviceTaskopers)) {
+//                                serviceTaskoper.setId(serviceTaskopers.get(0).getId());
+//                                serviceTaskoperService.updateServiceTaskoper(serviceTaskoper);
+//                            } else {
+//                                serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
+//                            }
+//                        }
+//                    }
+                    ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper();
+                    serviceTaskoper2.setTaskId(serviceTaskVO.getTaskid());
+                    serviceTaskoper2.setOrgid(serviceTask.getOrgid());
+//                    serviceTaskoper2.setOplevelcode(serviceTaskVO.getOplevelcode());
+                    List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(serviceTaskoper2);
 
-                            serviceTaskoper.setOpcode(opcode);
-                            log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
-                            if (CollectionUtils.isNotEmpty(serviceTaskopers)) {
-                                serviceTaskoper.setId(serviceTaskopers.get(0).getId());
-                                serviceTaskoperService.updateServiceTaskoper(serviceTaskoper);
-                            } else {
-                                serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
-                            }
-                        }
+                    if (CollectionUtils.isNotEmpty(serviceTaskopers)) {
+                        serviceTaskoper.setId(serviceTaskopers.get(0).getId());
+                        serviceTaskoperService.updateServiceTaskoper(serviceTaskoper);
+                    } else {
+                        serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
                     }
                 }
             }
@@ -2181,6 +2233,26 @@
 
         List<ServiceStatisticsResponse> result = serviceSubtaskMapper.getServiceStatistics(request);
 
+        //鑾峰彇闂ㄦ�ヨ瘖鏁版嵁
+
+        //濉厖闂ㄨ瘖鏁版嵁
+        for (ServiceStatisticsResponse serviceStatisticsResponse : result) {
+            PatMedOuthospQueryReq req = new PatMedOuthospQueryReq();
+            String deptcodes = CollectionUtils.isEmpty(request.getDeptcodes()) ? null : String.join(",", request.getDeptcodes());
+            if (!request.getTimeType().equals("month")) {
+                req.setBeginAdmitdate(DateUtils.parseDate(serviceStatisticsResponse.getTimePeriod()));
+                req.setEndAdmitdate(DateUtils.parseDate(serviceStatisticsResponse.getTimePeriod()));
+            } else {
+                // year 绫诲瀷锛歵imePeriod 鏍煎紡涓� "yyyy-MM"锛屽彇褰撴湀绗竴澶╁拰鏈�鍚庝竴澶�
+                java.time.YearMonth ym = java.time.YearMonth.parse(serviceStatisticsResponse.getTimePeriod());
+                req.setBeginAdmitdate(DateUtils.toDate(ym.atDay(1)));
+                req.setEndAdmitdate(DateUtils.toDate(ym.atEndOfMonth()));
+            }
+            req.setDeptcode(deptcodes);
+            req.setOrgid(request.getOrgid());
+            Long count = patMedOuthospMapper.callSpQueryOuthospCount(req);
+            serviceStatisticsResponse.setPmoCount(count);
+        }
 
         log.info("getServiceStatistics杩斿洖缁撴灉鏁伴噺锛歿}", result.size());
         return result;
@@ -2278,7 +2350,7 @@
             if (CollectionUtils.isEmpty(serviceSubtaskList)) {
                 continue;
             }
-            ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList, serviceSubtaskCountReq.getFollowUpCountStyle());
+            ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList, serviceSubtaskCountReq.getFollowUpCountStyle(), serviceSubtaskCountReq.getVisitCount());
             if (ObjectUtils.isNotEmpty(jsRates)) {
                 Map<String, Object> jsRateMap = jsRates.get(collectKey);
                 BigDecimal jsRate = new BigDecimal("0");
@@ -2320,6 +2392,7 @@
         ssRate.setOrgid(serviceSubtaskCountReq.getOrgid());
         ssRate.setStarttime(serviceSubtaskCountReq.getStartTime());
         ssRate.setEndtime(serviceSubtaskCountReq.getEndTime());
+        ssRate.setVisitCount(serviceSubtaskCountReq.getVisitCount());
         if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {
             ssRate.setEndtime(new Date());
         }
@@ -2526,7 +2599,278 @@
     }
 
 
-    private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList, String followUpCountStyle) {
+    private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList, String followUpCountStyle, Integer visitCount) {
+        ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
+
+        if (visitCount != null && visitCount > 1) {
+            serviceSubtaskStatistic = getStatisticAgain(serviceSubtaskList, followUpCountStyle);
+        }else if(visitCount != null && visitCount == 1){
+            serviceSubtaskStatistic = getStatisticFirst(serviceSubtaskList, followUpCountStyle);
+        }else {
+            //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
+            DecimalFormat percentFormat = new DecimalFormat("##.##%");
+            serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
+            serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+            serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
+            serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
+            serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());
+            serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());
+            //鍑洪櫌浜烘
+            serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
+            //璁板綍杩囨护鎮h�呰鎯�
+            List<ServiceSubtask> filterServiceSubtasks = new ArrayList<>();
+            //璁板綍棣栨搴旈殢璁胯鎯�
+            List<ServiceSubtask> needFollowUpInfo = new ArrayList<>();
+            //璁板綍棣栨寰呴殢璁胯鎯�
+            List<ServiceSubtask> pendingFollowUpInfo = new ArrayList<>();
+            //璁板綍棣栨闅忚鎴愬姛璇︽儏
+            List<ServiceSubtask> followUpSuccessInfo = new ArrayList<>();
+            //璁板綍棣栨闅忚澶辫触璇︽儏
+            List<ServiceSubtask> followUpFailInfo = new ArrayList<>();
+            //璁板綍棣栨闅忚浜哄伐璇︽儏
+            List<ServiceSubtask> manualInfo = new ArrayList<>();
+            //璁板綍棣栨闅忚鐭俊璇︽儏
+            List<ServiceSubtask> smsInfo = new ArrayList<>();
+            //璁板綍棣栨闅忚寰俊璇︽儏
+            List<ServiceSubtask> wechatInfo = new ArrayList<>();
+
+            //璁板綍鍐嶆搴旈殢璁胯鎯�
+            List<ServiceSubtask> needFollowUpAgainInfo = new ArrayList<>();
+            //璁板綍鍐嶆寰呴殢璁胯鎯�
+            List<ServiceSubtask> pendingFollowUpAgainInfo = new ArrayList<>();
+            //璁板綍鍐嶆闅忚鎴愬姛璇︽儏
+            List<ServiceSubtask> followUpSuccessAgainInfo = new ArrayList<>();
+            //璁板綍鍐嶆闅忚澶辫触璇︽儏
+            List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>();
+            //璁板綍棣栨闅忚浜哄伐璇︽儏
+            List<ServiceSubtask> manualAgainInfo = 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);
+                    if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 6) {
+                        serviceSubtaskStatistic.setFilterCount(serviceSubtaskStatistic.getFilterCount() + 1L);
+                        filterServiceSubtasks.add(serviceSubtask);
+                    }
+                }
+                //搴旈殢璁夸汉娆�
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+                    serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L);
+                }
+
+                //棣栨鍑洪櫌闅忚
+                if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) {
+                    //棣栨搴旈殢璁�
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+                        serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L);
+                        needFollowUpInfo.add(serviceSubtask);
+                    }
+                    //棣栨寰呴殢璁�
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
+                        serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
+                        pendingFollowUpInfo.add(serviceSubtask);
+                    }
+                    //棣栨闅忚澶辫触(鍖呮嫭闅忚澶辫触+浜哄伐瓒呮椂)
+                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) {
+                        serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
+                        followUpFailInfo.add(serviceSubtask);
+                    }
+                    /**
+                     * 涓嶅悓缁熻鏂瑰紡涓嬩笉鍚岀殑闅忚鎴愬姛鏁� 鍙傛暟 followUpCountStyle 鎺у埗
+                     */
+                    if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
+                        //棣栨闅忚鎴愬姛
+                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6L)) {
+                            serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+                            followUpSuccessInfo.add(serviceSubtask);
+                        }
+                        //棣栨闅忚浜哄伐 (涓嶇粺璁′笉鎵ц)
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
+                            serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
+                            manualInfo.add(serviceSubtask);
+                        }
+                        //棣栨闅忚鐭俊(涓嶇粺璁′笉鎵ц)
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
+                            serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
+                            smsInfo.add(serviceSubtask);
+                        }
+                        //棣栨闅忚寰俊(涓嶇粺璁′笉鎵ц)
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
+                            serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
+                            wechatInfo.add(serviceSubtask);
+                        }
+                    } else {
+                        //棣栨闅忚鎴愬姛 - 缁熻鏃跺�欏姞涓婁笉鎵ц鐨勶紝宸插彂閫佺殑
+                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L) || serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
+                            serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+                            followUpSuccessInfo.add(serviceSubtask);
+                        }
+                        //棣栨闅忚浜哄伐 (缁熻涓嶆墽琛�)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                            serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
+                            manualInfo.add(serviceSubtask);
+                        }
+                        //棣栨闅忚鐭俊(缁熻涓嶆墽琛�)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                            serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
+                            smsInfo.add(serviceSubtask);
+                        }
+                        //棣栨闅忚寰俊(缁熻涓嶆墽琛�)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                            serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
+                            wechatInfo.add(serviceSubtask);
+                        }
+                    }
+                    if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
+                        double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp();
+                        serviceSubtaskStatistic.setFollowUpRate(percentFormat.format(rate));
+                    } else {
+                        serviceSubtaskStatistic.setFollowUpRate("0.00%");
+                    }
+                    //缁撴灉寮傚父
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
+                        serviceSubtaskStatistic.setAbnormal(serviceSubtaskStatistic.getAbnormal() + 1L);
+                    }
+                }//浜屾鍑洪櫌闅忚
+                else if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) {
+                    //鍐嶆搴旈殢璁�
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+                        serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L);
+                        needFollowUpAgainInfo.add(serviceSubtask);
+                    }
+                    //鍐嶆寰呴殢璁�
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
+                        serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L);
+                        pendingFollowUpAgainInfo.add(serviceSubtask);
+                    }
+                    //鍐嶆闅忚澶辫触
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+                        serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L);
+                        followUpFailAgainInfo.add(serviceSubtask);
+                    }
+                    /**
+                     * 涓嶅悓缁熻鏂瑰紡涓嬩笉鍚岀殑闅忚鎴愬姛鏁� 鍙傛暟 followUpCountStyle 鎺у埗
+                     */
+                    if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
+                        //鍐嶆闅忚鎴愬姛
+                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
+                            serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
+                            followUpSuccessAgainInfo.add(serviceSubtask);
+                        }
+                        //鍐嶆闅忚浜哄伐(涓嶇粺璁′笉鎵ц)
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("1")) {
+                            serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
+                            manualAgainInfo.add(serviceSubtask);
+                        }
+                        //鍐嶆闅忚鐭俊(涓嶇粺璁′笉鎵ц)
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
+                            serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
+                            smsAgainInfo.add(serviceSubtask);
+                        }
+                        //鍐嶆闅忚寰俊(涓嶇粺璁′笉鎵ц)
+                        if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
+                            serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
+                            wechatAgainInfo.add(serviceSubtask);
+                        }
+                    } else {
+                        //鍐嶆闅忚鎴愬姛
+                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(1L) || serviceSubtask.getSendstate().equals(6L) || serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
+                            serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
+                            followUpSuccessAgainInfo.add(serviceSubtask);
+                        }
+                        //鍐嶆闅忚浜哄伐(缁熻涓嶆墽琛�)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+                            serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
+                            manualAgainInfo.add(serviceSubtask);
+                        }
+                        //鍐嶆闅忚鐭俊(缁熻涓嶆墽琛�)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                            serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
+                            smsAgainInfo.add(serviceSubtask);
+                        }
+                        //鍐嶆闅忚寰俊(缁熻涓嶆墽琛�)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                            serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
+                            wechatAgainInfo.add(serviceSubtask);
+                        }
+                    }
+                    if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
+                        double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain();
+                        serviceSubtaskStatistic.setFollowUpRateAgain(percentFormat.format(rate));
+                    } else {
+                        serviceSubtaskStatistic.setFollowUpRateAgain("0.00%");
+                    }
+                    //鍐嶆寮傚父
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
+                        serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L);
+                    }
+                }
+                //闅忚鎯呭喌
+                if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 1) {
+                    serviceSubtaskStatistic.setTaskSituation1(serviceSubtaskStatistic.getTaskSituation1() + 1);
+                }
+                if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 2) {
+                    serviceSubtaskStatistic.setTaskSituation2(serviceSubtaskStatistic.getTaskSituation2() + 1);
+                }
+                if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 3) {
+                    serviceSubtaskStatistic.setTaskSituation3(serviceSubtaskStatistic.getTaskSituation3() + 1);
+                }
+                if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 4) {
+                    serviceSubtaskStatistic.setTaskSituation4(serviceSubtaskStatistic.getTaskSituation4() + 1);
+                }
+                if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 5) {
+                    serviceSubtaskStatistic.setTaskSituation5(serviceSubtaskStatistic.getTaskSituation5() + 1);
+                }
+                if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 7) {
+                    serviceSubtaskStatistic.setTaskSituation6(serviceSubtaskStatistic.getTaskSituation6() + 1);
+                }
+            }
+            serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks);
+            //璁板綍棣栨搴旈殢璁胯鎯�
+            serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo);
+            //璁板綍棣栨寰呴殢璁胯鎯�
+            serviceSubtaskStatistic.setPendingFollowUpInfo(pendingFollowUpInfo);
+            //璁板綍棣栨闅忚鎴愬姛璇︽儏
+            serviceSubtaskStatistic.setFollowUpSuccessInfo(followUpSuccessInfo);
+            //璁板綍棣栨闅忚澶辫触璇︽儏
+            serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo);
+            //璁板綍棣栨闅忚浜哄伐璇︽儏
+            serviceSubtaskStatistic.setManualInfo(manualInfo);
+            //璁板綍棣栨闅忚鐭俊璇︽儏
+            serviceSubtaskStatistic.setSmsInfo(smsInfo);
+            //璁板綍棣栨闅忚寰俊璇︽儏
+            serviceSubtaskStatistic.setWechatInfo(wechatInfo);
+            //璁板綍鍐嶆搴旈殢璁胯鎯�
+            serviceSubtaskStatistic.setNeedFollowUpAgainInfo(needFollowUpAgainInfo);
+            //璁板綍鍐嶆寰呴殢璁胯鎯�
+            serviceSubtaskStatistic.setPendingFollowUpAgainInfo(pendingFollowUpAgainInfo);
+            //璁板綍鍐嶆闅忚鎴愬姛璇︽儏
+            serviceSubtaskStatistic.setFollowUpSuccessAgainInfo(followUpSuccessAgainInfo);
+            //璁板綍鍐嶆闅忚澶辫触璇︽儏
+            serviceSubtaskStatistic.setFollowUpFailAgainInfo(followUpFailAgainInfo);
+            //璁板綍鍐嶆闅忚浜哄伐璇︽儏
+            serviceSubtaskStatistic.setManualAgainInfo(manualAgainInfo);
+            //璁板綍鍐嶆闅忚鐭俊璇︽儏
+            serviceSubtaskStatistic.setSmsAgainInfo(smsAgainInfo);
+            //璁板綍鍐嶆闅忚寰俊璇︽儏
+            serviceSubtaskStatistic.setWechatAgainInfo(wechatAgainInfo);
+            return serviceSubtaskStatistic;
+        }
+        return serviceSubtaskStatistic;
+    }
+
+    /**
+     * 棣栨闅忚缁熻
+     * @param serviceSubtaskList
+     * @param followUpCountStyle
+     * @return
+     */
+    private ServiceSubtaskStatistic getStatisticFirst(List<ServiceSubtask> serviceSubtaskList, String followUpCountStyle) {
         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
         //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
         DecimalFormat percentFormat = new DecimalFormat("##.##%");
@@ -2555,21 +2899,6 @@
         //璁板綍棣栨闅忚寰俊璇︽儏
         List<ServiceSubtask> wechatInfo = new ArrayList<>();
 
-        //璁板綍鍐嶆搴旈殢璁胯鎯�
-        List<ServiceSubtask> needFollowUpAgainInfo = new ArrayList<>();
-        //璁板綍鍐嶆寰呴殢璁胯鎯�
-        List<ServiceSubtask> pendingFollowUpAgainInfo = new ArrayList<>();
-        //璁板綍鍐嶆闅忚鎴愬姛璇︽儏
-        List<ServiceSubtask> followUpSuccessAgainInfo = new ArrayList<>();
-        //璁板綍鍐嶆闅忚澶辫触璇︽儏
-        List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>();
-        //璁板綍棣栨闅忚浜哄伐璇︽儏
-        List<ServiceSubtask> manualAgainInfo = new ArrayList<>();
-        //璁板綍棣栨闅忚鐭俊璇︽儏
-        List<ServiceSubtask> smsAgainInfo = new ArrayList<>();
-        //璁板綍棣栨闅忚寰俊璇︽儏
-        List<ServiceSubtask> wechatAgainInfo = new ArrayList<>();
-
         for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
             //鏃犻渶闅忚浜烘
             if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
@@ -2596,8 +2925,8 @@
                     serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
                     pendingFollowUpInfo.add(serviceSubtask);
                 }
-                //棣栨闅忚澶辫触
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+                //棣栨闅忚澶辫触(鍖呮嫭闅忚澶辫触+浜哄伐瓒呮椂)
+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) {
                     serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
                     followUpFailInfo.add(serviceSubtask);
                 }
@@ -2657,8 +2986,97 @@
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
                     serviceSubtaskStatistic.setAbnormal(serviceSubtaskStatistic.getAbnormal() + 1L);
                 }
-            }//浜屾鍑洪櫌闅忚
-            else if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) {
+            }
+            //闅忚鎯呭喌
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 1) {
+                serviceSubtaskStatistic.setTaskSituation1(serviceSubtaskStatistic.getTaskSituation1() + 1);
+            }
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 2) {
+                serviceSubtaskStatistic.setTaskSituation2(serviceSubtaskStatistic.getTaskSituation2() + 1);
+            }
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 3) {
+                serviceSubtaskStatistic.setTaskSituation3(serviceSubtaskStatistic.getTaskSituation3() + 1);
+            }
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 4) {
+                serviceSubtaskStatistic.setTaskSituation4(serviceSubtaskStatistic.getTaskSituation4() + 1);
+            }
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 5) {
+                serviceSubtaskStatistic.setTaskSituation5(serviceSubtaskStatistic.getTaskSituation5() + 1);
+            }
+            if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 7) {
+                serviceSubtaskStatistic.setTaskSituation6(serviceSubtaskStatistic.getTaskSituation6() + 1);
+            }
+        }
+        serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks);
+        //璁板綍棣栨搴旈殢璁胯鎯�
+        serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo);
+        //璁板綍棣栨寰呴殢璁胯鎯�
+        serviceSubtaskStatistic.setPendingFollowUpInfo(pendingFollowUpInfo);
+        //璁板綍棣栨闅忚鎴愬姛璇︽儏
+        serviceSubtaskStatistic.setFollowUpSuccessInfo(followUpSuccessInfo);
+        //璁板綍棣栨闅忚澶辫触璇︽儏
+        serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo);
+        //璁板綍棣栨闅忚浜哄伐璇︽儏
+        serviceSubtaskStatistic.setManualInfo(manualInfo);
+        //璁板綍棣栨闅忚鐭俊璇︽儏
+        serviceSubtaskStatistic.setSmsInfo(smsInfo);
+        //璁板綍棣栨闅忚寰俊璇︽儏
+        serviceSubtaskStatistic.setWechatInfo(wechatInfo);
+        return serviceSubtaskStatistic;
+    }
+
+    /**
+     * 鍐嶆闅忚缁熻
+     * @param serviceSubtaskList
+     * @param followUpCountStyle
+     * @return
+     */
+    private ServiceSubtaskStatistic getStatisticAgain(List<ServiceSubtask> serviceSubtaskList, String followUpCountStyle) {
+        ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
+        //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
+        DecimalFormat percentFormat = new DecimalFormat("##.##%");
+        serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
+        serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+        serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
+        serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
+        serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());
+        serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());
+        //鍑洪櫌浜烘
+        serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
+        //璁板綍杩囨护鎮h�呰鎯�
+        List<ServiceSubtask> filterServiceSubtasks = new ArrayList<>();
+
+        //璁板綍鍐嶆搴旈殢璁胯鎯�
+        List<ServiceSubtask> needFollowUpAgainInfo = new ArrayList<>();
+        //璁板綍鍐嶆寰呴殢璁胯鎯�
+        List<ServiceSubtask> pendingFollowUpAgainInfo = new ArrayList<>();
+        //璁板綍鍐嶆闅忚鎴愬姛璇︽儏
+        List<ServiceSubtask> followUpSuccessAgainInfo = new ArrayList<>();
+        //璁板綍鍐嶆闅忚澶辫触璇︽儏
+        List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>();
+        //璁板綍鍐嶆闅忚浜哄伐璇︽儏
+        List<ServiceSubtask> manualAgainInfo = 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);
+                if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 6) {
+                    serviceSubtaskStatistic.setFilterCount(serviceSubtaskStatistic.getFilterCount() + 1L);
+                    filterServiceSubtasks.add(serviceSubtask);
+                }
+            }
+            //搴旈殢璁夸汉娆�
+            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+                serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L);
+            }
+
+            //鍐嶆鍑洪櫌闅忚
+            if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) {
                 //鍐嶆搴旈殢璁�
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
                     serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L);
@@ -2752,20 +3170,6 @@
             }
         }
         serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks);
-        //璁板綍棣栨搴旈殢璁胯鎯�
-        serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo);
-        //璁板綍棣栨寰呴殢璁胯鎯�
-        serviceSubtaskStatistic.setPendingFollowUpInfo(pendingFollowUpInfo);
-        //璁板綍棣栨闅忚鎴愬姛璇︽儏
-        serviceSubtaskStatistic.setFollowUpSuccessInfo(followUpSuccessInfo);
-        //璁板綍棣栨闅忚澶辫触璇︽儏
-        serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo);
-        //璁板綍棣栨闅忚浜哄伐璇︽儏
-        serviceSubtaskStatistic.setManualInfo(manualInfo);
-        //璁板綍棣栨闅忚鐭俊璇︽儏
-        serviceSubtaskStatistic.setSmsInfo(smsInfo);
-        //璁板綍棣栨闅忚寰俊璇︽儏
-        serviceSubtaskStatistic.setWechatInfo(wechatInfo);
         //璁板綍鍐嶆搴旈殢璁胯鎯�
         serviceSubtaskStatistic.setNeedFollowUpAgainInfo(needFollowUpAgainInfo);
         //璁板綍鍐嶆寰呴殢璁胯鎯�
@@ -2782,6 +3186,7 @@
         serviceSubtaskStatistic.setWechatAgainInfo(wechatAgainInfo);
         return serviceSubtaskStatistic;
     }
+
 
     private ServiceSubtaskStatistic getStatisticJoy(List<ServiceSubtask> serviceSubtaskList, List<ServiceSubtaskCount> joySubCount) {
         ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
@@ -2826,7 +3231,7 @@
                 if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
                     serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+                if (serviceSubtask.getSendstate() != null &&  (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) {
                     serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
                 }
                 if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
@@ -2944,7 +3349,7 @@
                 if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
                     serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+                if (serviceSubtask.getSendstate() != null &&  (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) {
                     serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
                 }
                 if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
@@ -3167,7 +3572,7 @@
      * @return
      */
     @Override
-    @Cacheable(value = "getSfStatisticsScript", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
+//    @Cacheable(value = "getSfStatisticsScript", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
     public List<ServiceSubtaskStatistic> getSfStatisticsScript(ServiceSubtaskCountReq serviceSubtaskCountReq) {
         log.info("getSfStatisticsScript鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
         List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
@@ -3522,7 +3927,7 @@
             diagname.setSuggest(subtask.getSuggest());
             diagname.setOperator(subtask.getOperator());
             diagname.setFinishtime(subtask.getFinishtime());
-            diagname.setLongSendTime(subtask.getLongSendTime());
+            diagname.setVisitTime(subtask.getVisitTime());
             diagname.setEndtime(subtask.getEndtime());
             //璁$畻鍑洪櫌澶╂暟
             if (!Objects.isNull(diagname.getEndtime())) {
@@ -3543,4 +3948,7 @@
         }).collect(Collectors.toList());
     }
 
+    public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity){
+        return serviceSubtaskMapper.getCurrentUserServiceSubtaskCount(entity);
+    }
 }

--
Gitblit v1.9.3