From e1b933c0c344494afe86bae9162dca9bdc34fd56 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 22 七月 2026 17:04:14 +0800
Subject: [PATCH] 【丽水】扫码生成外链

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  591 +++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 496 insertions(+), 95 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 998a56e..e7d2dc6 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -6,13 +6,18 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.dx.MessageSend;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.*;
 import com.ruoyi.common.core.service.IConfigService;
 import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.system.domain.SysConfig;
+import com.ruoyi.system.mapper.SysConfigMapper;
 import com.smartor.common.FtpService;
+import com.smartor.common.MtSubmitSmUtil;
 import com.smartor.config.PhoneUtils;
 import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
 import com.smartor.domain.*;
@@ -25,6 +30,7 @@
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.Cacheable;
@@ -127,6 +133,9 @@
     @Autowired
     private SvyLibScriptCategoryMapper svyLibScriptCategoryMapper;
 
+    @Autowired
+    private IPatMedInhospService patMedInhospService;
+
     @Value("${pri_key}")
     private String pri_key;
 
@@ -135,6 +144,12 @@
 
     @Value("${ASRCallBackPath}")
     private String ASRCallBackPath;
+
+    @Autowired
+    private MtSubmitSmUtil mtSubmitSmUtil;
+
+    @Autowired
+    private SysConfigMapper sysConfigMapper;
 
     @Autowired
     private RedisTemplate redisTemplate;
@@ -166,7 +181,9 @@
     private Integer phoneEndHour;
 
     @Autowired
-    private Icd10Mapper icd10Mapper;
+    private IPatMedOuthospService patMedOuthospService;
+    @Autowired
+    private SysDept2Mapper sysDept2Mapper;
 
     @Value("${spring.profiles.active}")
     private String active;
@@ -329,18 +346,40 @@
             }
 
             //鑾峰彇璇ユ偅鑰呮墍鏈夌殑鎵ц鐘舵��
-            List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream().filter((item -> item.getSubid().equals(serviceSubtask1.getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
-            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);
+//            List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream().filter((item -> item.getSubid().equals(serviceSubtask1.getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
+//            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);
+        }
+
+        if (StringUtils.isNotEmpty(serviceTaskVO.getPreachformDesc())) {
+            //鐩存帴閫氳繃PreachformDesc鐢熸垚List杩斿洖
+            try {
+                List<Map<String, Object>> mapList = objectMapper.readValue(serviceTaskVO.getPreachformDesc(), List.class);
+                serviceTaskVO.setPreachformList(mapList);
+            } catch (Exception e) {
+            }
+        } else {
+            if (CollectionUtils.isNotEmpty(list)) {
+                //鑾峰彇璇ユ偅鑰呮墍鏈夌殑鎵ц鐘舵��
+                List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformLists.stream().filter((item -> item.getSubid().equals(list.get(0).getId()) && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
+                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);
+            }
         }
         serviceTaskVO.setPatTaskRelevances(patTaskRelevances);
         return serviceTaskVO;
@@ -349,12 +388,13 @@
     @Override
     public List<ServiceSubtaskRes> patItem(ServiceSubtaskEntity serviceSubtaskEntity) {
         if (serviceSubtaskEntity.getSendstateView() != null) {
-            //            1锛氬緟闅忚锛�2 寰呭彂閫侊級锛�2锛氶殢璁夸腑锛�3 宸插彂閫併��1 琚鍙栵級銆�3锛氭湭瀹屾垚锛�5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級銆�4锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�5锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級
-            if (serviceSubtaskEntity.getSendstateView() == 1) serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(2L)));
-            if (serviceSubtaskEntity.getSendstateView() == 2) serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 3L)));
-            if (serviceSubtaskEntity.getSendstateView() == 3) serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(5L, 7L)));
-            if (serviceSubtaskEntity.getSendstateView() == 4) serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
-            if (serviceSubtaskEntity.getSendstateView() == 5) serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(4L)));
+            //            1锛氬緟闅忚锛�1 琚鍙栥��2 寰呭彂閫併��3 宸插彂閫併��5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級锛�2锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�3锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級
+            if (serviceSubtaskEntity.getSendstateView() == 1)
+                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 5L, 7L)));
+            if (serviceSubtaskEntity.getSendstateView() == 2)
+                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
+            if (serviceSubtaskEntity.getSendstateView() == 3)
+                serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(4L)));
         }
 
         List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskEntity);
@@ -366,13 +406,17 @@
                 serviceSubtaskRes.setContinueContent(serviceSubtask.getContinueContent());
             }
 //            1锛氬緟闅忚锛�2 寰呭彂閫侊級锛�2锛氶殢璁夸腑锛�3 宸插彂閫併��1 琚鍙栵級銆�3锛氭湭瀹屾垚锛�5 鍙戦�佸け璐ャ��7銆佽秴鏃讹級銆�4锛氬凡瀹屾垚锛� 6 宸插畬鎴愶級銆�5锛氭棤闇�闅忚锛�4 涓嶆墽琛岋級
-            if (serviceSubtaskRes.getSendstate() == 2) serviceSubtaskRes.setSendstateView(1L);
-            if (serviceSubtaskRes.getSendstate() == 1 || serviceSubtaskRes.getSendstate() == 3L)
-                serviceSubtaskRes.setSendstateView(2L);
-            if (serviceSubtaskRes.getSendstate() == 5 || serviceSubtaskRes.getSendstate() == 7L)
-                serviceSubtaskRes.setSendstateView(3L);
-            if (serviceSubtaskRes.getSendstate() == 6) serviceSubtaskRes.setSendstateView(4L);
-            if (serviceSubtaskRes.getSendstate() == 4) serviceSubtaskRes.setSendstateView(5L);
+            if (serviceSubtaskRes.getSendstate() == 1 || serviceSubtaskRes.getSendstate() == 2L || serviceSubtaskRes.getSendstate() == 3L || serviceSubtaskRes.getSendstate() == 5 || serviceSubtaskRes.getSendstate() == 7L)
+                serviceSubtaskRes.setSendstateView(1L);
+            if (serviceSubtaskRes.getSendstate() == 6) serviceSubtaskRes.setSendstateView(2L);
+            if (serviceSubtaskRes.getSendstate() == 4) serviceSubtaskRes.setSendstateView(3L);
+            // 濉厖褰撳墠琛ュ伩
+            if (StringUtils.isEmpty(serviceSubtask.getCurrentPreachform())) {
+                if (StringUtils.isNotEmpty(serviceSubtask.getPreachform())) {
+                    //榛樿鍙栫涓�涓�
+                    serviceSubtaskRes.setCurrentPreachform(serviceSubtask.getPreachform().split(",")[0]);
+                }
+            }
             serviceSubtaskResList.add(serviceSubtaskRes);
         }
         return serviceSubtaskResList;
@@ -447,13 +491,16 @@
             // MyBatis 鐨� SUM 鍦ㄦ病鏈夊尮閰嶈鏃朵細杩斿洖 null
             result.putIfAbsent("wzx", 0);
             result.putIfAbsent("ysf", 0);
-            result.putIfAbsent("yc", 0);
-            result.putIfAbsent("jg", 0);
             result.putIfAbsent("fssb", 0);
             result.putIfAbsent("yfs", 0);
             result.putIfAbsent("blq", 0);
-            result.putIfAbsent("dsf", 0);
             result.putIfAbsent("total", 0);
+            result.putIfAbsent("wxsf", 0);
+            result.putIfAbsent("xsf", 0);
+            result.putIfAbsent("dsf", 0);
+            result.putIfAbsent("ywc", 0);
+            result.putIfAbsent("yc", 0);
+            result.putIfAbsent("jg", 0);
         }
         return result;
     }
@@ -488,6 +535,7 @@
         if (patMedInhospList.size() > 0) {
             serviceSubtask1.setIsVisitAgain(2);
             serviceSubtask1.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";鎮h�呭啀鍏ラ櫌浜�" : "鎮h�呭啀鍏ラ櫌浜�");
+            serviceSubtask1.setSendstate(4L);
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
             return "鏃犻渶鍐嶆闅忚锛屾偅鑰呭啀鍏ラ櫌浜�";
         } else if (serviceSubtask1.getSendstate() == 4L) {
@@ -644,7 +692,10 @@
                 serviceTask.setTemplatename(tempName);
             }
             serviceTask.setLeaveldeptcodes(serviceTaskVO.getLeaveldeptcodes());
-            serviceTask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode());
+            if (StringUtils.isEmpty(serviceTask.getLeavehospitaldistrictname()) && StringUtils.isNotEmpty(serviceTask.getLeavehospitaldistrictcode())) {
+                SysDept sysDept = sysDept2Mapper.selectDeptByCode(serviceTask.getLeavehospitaldistrictcode(), null);
+                serviceTask.setLeavehospitaldistrictname(sysDept.getDeptName());
+            }
             if (serviceTaskVO.getLongTask() == 1) serviceTask.setSendState(2L);
             serviceTask.setCreateTime(new Date());
             serviceTask.setUpdateTime(new Date());
@@ -682,18 +733,28 @@
                     ServiceTaskoper serviceTaskoper = new ServiceTaskoper();
                     serviceTaskoper.setOpcode(serviceTaskVO.getOpcode());
                     serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
-                    serviceTaskoper.setOplevelcode(serviceTaskVO.getOplevelcode());
+//                    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());
+                    //閰嶇疆绉戝銆佺梾鍖�
+                    serviceTaskoper.setDeptCode(serviceTaskVO.getDeptcode());
+                    serviceTaskoper.setDeptName(serviceTaskVO.getDeptname());
+                    serviceTaskoper.setWardCode(serviceTaskVO.getLeavehospitaldistrictcode());
+                    serviceTaskoper.setWardName(serviceTaskVO.getLeavehospitaldistrictname());
+                    //澶氶�夋墜鏈瓑绾�
                     if (StringUtils.isNotEmpty(serviceTaskVO.getOplevelcode())) {
-                        log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
-                        serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
+                        String[] opLevelcodes = serviceTaskVO.getOplevelcode().split(",");
+                        for (String opLevelcode : opLevelcodes) {
+                            //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦�
+                            log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
+                            serviceTaskoper.setOplevelcode(opLevelcode);
+                            serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
+                        }
                     }
-
                 } else {
                     ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
                     serviceTaskdept.setTaskId(serviceTask.getTaskid());
@@ -747,11 +808,10 @@
                     serviceSubtask.setPatid(patTaskRelevance.getPatid());
                     serviceSubtask.setCreateTime(DateUtils.getNowDate());
                     serviceSubtask.setInhospid(patTaskRelevance.getHospid());
-                    serviceSubtask.setSendstate(1L);
-                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
-                        serviceSubtask.setSendstate(2L);
-                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptcode());
-                    serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
+                    //鏂板缓瀹屾垚灏辨槸寰呭彂閫佺姸鎬�
+                    serviceSubtask.setSendstate(2L);
+                    serviceSubtask.setDeptcode(StringUtils.isNotEmpty(patTaskRelevance.getDeptcode()) ? patTaskRelevance.getDeptcode() : serviceTaskVO.getDeptcode());
+                    serviceSubtask.setDeptname(StringUtils.isNotEmpty(patTaskRelevance.getDeptName()) ? patTaskRelevance.getDeptName() : serviceTaskVO.getDeptname());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                     serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
                     serviceSubtask.setType(serviceTaskVO.getType());
@@ -772,9 +832,14 @@
                     serviceSubtask.setContinueTimeNow(patTaskRelevance.getContinueTimeNow());
                     serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                     serviceSubtask.setUpdateBy(serviceTask.getCreateBy());
-                    serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
-                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
+                    serviceSubtask.setVisitTime(DateUtils.parseDate(serviceTaskVO.getShowTimeMorn()));
+                    //濡傛灉绔嬪嵆鎵ц锛屾椂闂村氨鏄綋鍓嶆椂闂�
+                    if (serviceTaskVO.getSendType() != null && serviceTaskVO.getSendType() == 2)
+                        serviceSubtask.setVisitTime(new Date());
+                    if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1) {
                         serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
+                        serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
+                    }
                     serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
                     serviceSubtask.getId().intValue();
 
@@ -804,7 +869,6 @@
                 serviceTask.setSendTimeSlot(JSON.toJSONString(serviceTaskVO.getSendTimeslot()));
             //淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1
             ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
-            //鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
             ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
             serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
             serviceSubtaskVO.setSendstate(2L);
@@ -826,6 +890,30 @@
                     redisCache.removeElementFromList("cache-2", serviceSubtask.getId().toString());
                     redisCache.removeElementFromList("cache-3", serviceSubtask.getId().toString());
                     redisCache.removeElementFromList("cache-4", serviceSubtask.getId().toString());
+                    //灏嗗嚭鍏ラ櫌琛ㄧ殑鏁版嵁锛岃繕鍘熸垚杩樻湭澶勭悊鐨勭姸鎬�
+                    if (serviceSubtask.getServiceType().equals("2")) {
+                        ServiceTask st = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+                        //濡傛灉浠诲姟鏄暱鏈熶换鍔★紝闇�瑕佸皢璇ユ偅鑰呯殑鍑哄叆闄㈡暟鎹繕鍘熸垚杩樻湭澶勭悊鐨勭姸鎬�
+                        if (st != null && st.getLongTask() == 1) {
+                            PatMedInhosp patMedInhosp = new PatMedInhosp();
+                            patMedInhosp.setDeptcheckFlag("0");
+                            patMedInhosp.setWardcheckFlag("0");
+                            patMedInhosp.setDiagcheckFlag("0");
+                            patMedInhosp.setInhospid(serviceSubtask.getInhospid());
+                            patMedInhospMapper.updatePatMedInhosp(patMedInhosp);
+                        }
+                    } else if (serviceSubtask.getServiceType().equals("3")) {
+                        if (serviceSubtask.getInhospid() != null) {
+                            PatMedOuthospQueryReq req = new PatMedOuthospQueryReq();
+                            req.setOuthospno(serviceSubtask.getHospno());
+                            List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.callSpQueryOuthosp(req);
+                            if (CollectionUtils.isNotEmpty(patMedOuthosps)) {
+                                PatMedOuthosp patMedOuthosp = patMedOuthosps.get(0);
+                                patMedOuthosp.setServerState("0");
+                                patMedOuthospService.updatePatMedOuthosp(patMedOuthosp);
+                            }
+                        }
+                    }
                 }
             }
 
@@ -891,18 +979,21 @@
                     }
                     serviceTaskdiag.setLongtask(Long.valueOf(serviceTask.getLongTask()));
                     serviceTaskdiag.setIcd10name(serviceTaskVO.getIcd10name());
-                    serviceTaskdiag.setGuid(serviceTask.getGuid());
-                    serviceTaskdiag.setOrgid(serviceTask.getOrgid());
-                    serviceTaskdiag.setDeptCode(serviceTaskVO.getDeptcode());
-                    serviceTaskdiag.setDeptName(serviceTaskVO.getDeptname());
-                    serviceTaskdiag.setWardCode(serviceTaskVO.getLeavehospitaldistrictcode());
-                    serviceTaskdiag.setWardName(serviceTaskVO.getLeavehospitaldistrictname());
+                    serviceTaskdiag.setGuid(serviceTask1.getGuid());
+                    serviceTaskdiag.setServiceType(serviceTask1.getServiceType());
+                    serviceTaskdiag.setOrgid(serviceTask1.getOrgid());
+                    serviceTaskdiag.setDeptCode(serviceTask1.getDeptcode());
+                    serviceTaskdiag.setDeptName(serviceTask1.getDeptname());
+                    serviceTaskdiag.setWardCode(serviceTask1.getLeavehospitaldistrictcode());
+                    serviceTaskdiag.setWardName(serviceTask1.getLeavehospitaldistrictname());
                     serviceTaskdiag.setUpdateTime(new Date());
                     if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {
                         String[] icd10codes = serviceTaskVO.getIcd10code().split(",");
                         String[] icd10names = serviceTaskVO.getIcd10name().split(",");
-                        if (icd10codes.length != icd10names.length) {
-                            throw new BaseException("鐤剧梾缂栫爜鍜岀柧鐥呭悕绉版暟閲忎笉涓�鑷�");
+                        if (!active.equals("nhfy") && !active.equals("druid")) {
+                            if (icd10codes.length != icd10names.length) {
+                                throw new BaseException("鐤剧梾缂栫爜鍜岀柧鐥呭悕绉版暟閲忎笉涓�鑷�");
+                            }
                         }
                         for (int i = 0; i < icd10codes.length; i++) {
                             //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦�
@@ -930,43 +1021,38 @@
 //                    }
 //                serviceTaskoper.setOpcode(serviceTaskVO.getOpcode());
                     serviceTaskoper.setOpdesc(serviceTaskVO.getOpdesc());
-                    serviceTaskoper.setOplevelcode(serviceTaskVO.getOplevelcode());
+//                    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);
-//
-//                            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);
 
-                    if (CollectionUtils.isNotEmpty(serviceTaskopers)) {
-                        serviceTaskoper.setId(serviceTaskopers.get(0).getId());
-                        serviceTaskoperService.updateServiceTaskoper(serviceTaskoper);
-                    } else {
-                        serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
+                    serviceTaskoper.setDeptCode(serviceTask1.getDeptcode());
+                    serviceTaskoper.setDeptName(serviceTask1.getDeptname());
+                    serviceTaskoper.setWardCode(serviceTask1.getLeavehospitaldistrictcode());
+                    serviceTaskoper.setWardName(serviceTask1.getLeavehospitaldistrictname());
+
+                    serviceTaskoper.setCreateTime(new Date());
+                    if (StringUtils.isNotEmpty(serviceTaskVO.getOplevelcode())) {
+                        String[] opLevelcodes = serviceTaskVO.getOplevelcode().split(",");
+                        for (String opLevelcode : opLevelcodes) {
+                            //鍏堟煡璇竴涓嬫槸鍚﹀瓨鍦�
+                            log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
+                            ServiceTaskoper serviceTaskoper2 = new ServiceTaskoper();
+                            serviceTaskoper2.setTaskId(serviceTaskVO.getTaskid());
+                            serviceTaskoper2.setOrgid(serviceTask.getOrgid());
+                            serviceTaskoper2.setOplevelcode(opLevelcode);
+                            List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(serviceTaskoper2);
+
+                            serviceTaskoper.setOplevelcode(opLevelcode);
+                            if (CollectionUtils.isNotEmpty(serviceTaskopers)) {
+                                serviceTaskoper.setId(serviceTaskopers.get(0).getId());
+                                serviceTaskoperService.updateServiceTaskoper(serviceTaskoper);
+                            } else {
+                                serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
+                            }
+                        }
                     }
                 }
             }
@@ -2193,6 +2279,8 @@
                     IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskDetail.getScriptid());
                     if (ivrTaskTemplateScript != null)
                         serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getScriptAssortid());
+                    serviceSubtaskDetail.setIsMydException(ivrTaskTemplateScript.getIsMydException());
+                    serviceSubtaskDetail.setDimension(ivrTaskTemplateScript.getDimension());
                 }
 
                 serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());
@@ -2282,7 +2370,6 @@
             serviceSubtask.setRemark("鐢佃瘽鎺ラ�氭垚鍔燂紝鎮h�呮嫆缁濋殢璁�");
             serviceSubtask.setId(Long.valueOf(phoneCallRecordVO.getTaskid()));
             serviceSubtask.setSendstate(6L);
-            serviceSubtask.setFinishtime(new Date());
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
 //            int startIndex = phoneCallRecordVO.getRecord_path().indexOf("voice") + "voice".length() + 1;  // 鍔�1鏄烦杩�/绗﹀彿
 //            int endIndex = phoneCallRecordVO.getRecord_path().lastIndexOf("/");
@@ -2487,6 +2574,29 @@
                 serviceSubtaskStatistics.add(statistic);
             }
         }
+        return serviceSubtaskStatistics;
+    }
+
+    /**
+     * 鑾峰彇涓撶梾闅忚缁熻姣斾緥
+     *
+     * @param serviceSubtaskCountReq
+     * @return
+     */
+    @Override
+//    @Cacheable(value = "specialSfStatistics", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
+    public List<ServiceSubtaskStatistic> getSpecialSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        log.info("getSpecialSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
+        String groupKey = "drcode";
+        if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
+            groupKey = "drcode";
+        } else {
+            groupKey = "task_name";
+        }
+        List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
+        serviceSubtaskCountReq.setGroupKey(groupKey);
+        serviceSubtaskStatistics = serviceSubtaskMapper.getSpecialSfStatistics(serviceSubtaskCountReq);
+
         return serviceSubtaskStatistics;
     }
 
@@ -2762,15 +2872,15 @@
                 //棣栨鍑洪櫌闅忚
                 if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) {
                     //棣栨搴旈殢璁�
-                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+                    if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L)) {
                         serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L);
                     }
-                    //棣栨寰呴殢璁�
-                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
-                        serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
+                    //棣栨鏃犻渶闅忚
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(4L)) {
+                        serviceSubtaskStatistic.setNonFollowUpFirst(serviceSubtaskStatistic.getNonFollowUpFirst() + 1L);
                     }
                     //棣栨闅忚澶辫触(鍖呮嫭闅忚澶辫触+浜哄伐瓒呮椂)
-                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) {
+                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(5L) || serviceSubtask.getSendstate().equals(7L))) {
                         serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
                     }
                     /**
@@ -2778,8 +2888,12 @@
                      */
                     if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
                         //棣栨闅忚鎴愬姛
-                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6L)) {
+                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L))) {
                             serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+                        }
+                        //棣栨鏃犻渶闅忚
+                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(4L))) {
+                            serviceSubtaskStatistic.setNonFollowUpFirst(serviceSubtaskStatistic.getNonFollowUpFirst() + 1L);
                         }
                         //棣栨闅忚浜哄伐 (涓嶇粺璁′笉鎵ц)
                         if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
@@ -2797,10 +2911,39 @@
                         if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                             serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                         }
+                    } else if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("3")) {
+                        //棣栨闅忚鎴愬姛
+                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L))) {
+                            serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+                        }
+                        //棣栨鏃犻渶闅忚
+                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(4L))) {
+                            serviceSubtaskStatistic.setNonFollowUpFirst(serviceSubtaskStatistic.getNonFollowUpFirst() + 1L);
+                        }
+                        //棣栨闅忚浜哄伐 (鍙粺璁″凡瀹屾垚)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
+                            serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
+                        }
+                        //棣栨闅忚璇煶 (鍙粺璁″凡瀹屾垚)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                            serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
+                        }
+                        //棣栨闅忚鐭俊(鍙粺璁″凡瀹屾垚)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
+                            serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
+                        }
+                        //棣栨闅忚寰俊(鍙粺璁″凡瀹屾垚)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
+                            serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
+                        }
                     } else {
                         //棣栨闅忚鎴愬姛 - 缁熻鏃跺�欏姞涓婁笉鎵ц鐨勶紝宸插彂閫佺殑
                         if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L) || serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
                             serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+                        }
+                        //棣栨鏃犻渶闅忚
+                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(4L))) {
+                            serviceSubtaskStatistic.setNonFollowUpFirst(serviceSubtaskStatistic.getNonFollowUpFirst() + 1L);
                         }
                         //棣栨闅忚浜哄伐 (缁熻涓嶆墽琛�)
                         if (serviceSubtask.getSendstate() != null && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
@@ -2835,6 +2978,10 @@
                     if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
                         serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L);
                     }
+                    //鍐嶆鏃犻渶闅忚
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
+                        serviceSubtaskStatistic.setNonFollowUpAgain(serviceSubtaskStatistic.getNonFollowUpAgain() + 1L);
+                    }
                     //鍐嶆寰呴殢璁�
                     if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
                         serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L);
@@ -2848,7 +2995,7 @@
                      */
                     if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
                         //鍐嶆闅忚鎴愬姛
-                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L)) {
                             serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
                         }
                         //鍐嶆闅忚浜哄伐(涓嶇粺璁′笉鎵ц)
@@ -2865,6 +3012,27 @@
                         }
                         //鍐嶆闅忚寰俊(涓嶇粺璁′笉鎵ц)
                         if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
+                            serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
+                        }
+                    } else if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("3")) {
+                        //鍐嶆闅忚鎴愬姛
+                        if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L))) {
+                            serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
+                        }
+                        //鍐嶆闅忚浜哄伐 (鍙粺璁″凡瀹屾垚)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
+                            serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
+                        }
+                        //鍐嶆闅忚璇煶 (鍙粺璁″凡瀹屾垚)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                            serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
+                        }
+                        //鍐嶆闅忚鐭俊(鍙粺璁″凡瀹屾垚)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
+                            serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
+                        }
+                        //鍐嶆闅忚寰俊(鍙粺璁″凡瀹屾垚)
+                        if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                             serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                         }
                     } else {
@@ -2964,6 +3132,10 @@
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
                     serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L);
                 }
+                //棣栨鏃犻渶闅忚
+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(4L))) {
+                    serviceSubtaskStatistic.setNonFollowUpFirst(serviceSubtaskStatistic.getNonFollowUpFirst() + 1L);
+                }
                 //棣栨寰呴殢璁�
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
                     serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
@@ -2977,7 +3149,7 @@
                  */
                 if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
                     //棣栨闅忚鎴愬姛
-                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6L)) {
+                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L))) {
                         serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                     }
                     //棣栨闅忚浜哄伐 (涓嶇粺璁′笉鎵ц)
@@ -2994,6 +3166,27 @@
                     }
                     //棣栨闅忚寰俊(涓嶇粺璁′笉鎵ц)
                     if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
+                        serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
+                    }
+                } else if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("3")) {
+                    //棣栨闅忚鎴愬姛
+                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L))) {
+                        serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+                    }
+                    //棣栨闅忚浜哄伐 (鍙粺璁″凡瀹屾垚)
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
+                        serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
+                    }
+                    //棣栨闅忚璇煶 (鍙粺璁″凡瀹屾垚)
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                        serviceSubtaskStatistic.setVoice(serviceSubtaskStatistic.getVoice() + 1L);
+                    }
+                    //棣栨闅忚鐭俊(鍙粺璁″凡瀹屾垚)
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
+                        serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
+                    }
+                    //棣栨闅忚寰俊(鍙粺璁″凡瀹屾垚)
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                         serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
                     }
                 } else {
@@ -3090,6 +3283,10 @@
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
                     serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L);
                 }
+                //鍐嶆鏃犻渶闅忚
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
+                    serviceSubtaskStatistic.setNonFollowUpAgain(serviceSubtaskStatistic.getNonFollowUpAgain() + 1L);
+                }
                 //鍐嶆寰呴殢璁�
                 if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
                     serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L);
@@ -3103,7 +3300,7 @@
                  */
                 if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
                     //鍐嶆闅忚鎴愬姛
-                    if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L)) {
                         serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
                     }
                     //鍐嶆闅忚浜哄伐(涓嶇粺璁′笉鎵ц)
@@ -3120,6 +3317,27 @@
                     }
                     //鍐嶆闅忚寰俊(涓嶇粺璁′笉鎵ц)
                     if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
+                        serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
+                    }
+                } else if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("3")) {
+                    //鍐嶆闅忚鎴愬姛
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L)) {
+                        serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
+                    }
+                    //鍐嶆闅忚浜哄伐 (鍙粺璁″凡瀹屾垚)
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("1")) {
+                        serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
+                    }
+                    //鍐嶆闅忚璇煶 (鍙粺璁″凡瀹屾垚)
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("3")) {
+                        serviceSubtaskStatistic.setVoiceAgain(serviceSubtaskStatistic.getVoiceAgain() + 1L);
+                    }
+                    //鍐嶆闅忚鐭俊(鍙粺璁″凡瀹屾垚)
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("4")) {
+                        serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
+                    }
+                    //棣栨闅忚寰俊(鍙粺璁″凡瀹屾垚)
+                    if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate().equals(6L) && ObjectUtils.isNotEmpty(serviceSubtask.getCurrentPreachform()) && serviceSubtask.getCurrentPreachform().equals("5")) {
                         serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
                     }
                 } else {
@@ -3477,6 +3695,7 @@
         serviceOutPath.setParam2(patid);
         serviceOutPath.setCreateTime(new Date());
         serviceOutPath.setParam6(subId);
+        serviceOutPath.setOrgid(serviceSubtask.getOrgid());
         iServiceOutPathService.insertServiceOutPath(serviceOutPath);
         //杞垚16杩涘埗
         String format = String.format("%03X", serviceOutPath.getId());
@@ -3489,7 +3708,7 @@
         Map<String, String> map = new HashMap<>();
         map.put("phone", serviceSubtask.getPhone());
         map.put("content", sendMagParam.getContent());
-        String result = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(map));
+        HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(map));
         redisCache.setCacheObject(subTaskId + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
         if (StringUtils.isNotEmpty(serviceSubtask.getRemark()))
             serviceSubtask.setRemark("鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔�");
@@ -3602,8 +3821,8 @@
          */
         if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("2")) {
             List<Long> sendstates = serviceSubtaskCountReq.getSendstates();
-            if(CollectionUtils.isNotEmpty(sendstates) && sendstates.get(0).equals(6L)){
-                List<Long> sendstates1 =new ArrayList<>();
+            if (CollectionUtils.isNotEmpty(sendstates) && sendstates.get(0).equals(6L)) {
+                List<Long> sendstates1 = new ArrayList<>();
                 sendstates1.add(3L);
                 sendstates1.add(4L);
                 sendstates1.add(6L);
@@ -3779,10 +3998,7 @@
         //鑾峰彇鍙婃椂鐜囩粺璁″悎闆�
         Map<String, Map<String, Object>> jsRates = getSsRateForSfStatistics(serviceSubtaskCountReq, collect);
         //涓�娆℃�ф煡璇㈡墍鏈夊垎缁勭殑棰樼洰缁熻锛岄伩鍏嶆瘡涓垎缁勪竴娆QL锛圢+1锛�
-        List<Long> allSubTaskIds = rawData.stream().map(ServiceSubtask::getId)
-                .filter(Objects::nonNull)
-                .distinct()
-                .collect(Collectors.toList());
+        List<Long> allSubTaskIds = rawData.stream().map(ServiceSubtask::getId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
         List<ServiceSubtaskCount> subCounts = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(allSubTaskIds)) {
             serviceSubtaskCountReq.setSubTaskIds(allSubTaskIds);
@@ -4327,6 +4543,88 @@
         return resultMap;
     }
 
+    @Override
+    public List<ServiceSubtask> gethelibraryCountHyperlink(HeLibraryCountVO heLibraryCountVO){
+        String hyperLinkInfoType = heLibraryCountVO.getHyperLinkInfoType();
+        if(StringUtils.isNotEmpty(hyperLinkInfoType)){
+            heLibraryCountVO.setSendstate(null);
+            heLibraryCountVO.setIsFinished(null);
+            switch (hyperLinkInfoType) {
+                case "totalCountInfo":
+                    break;
+                case "sendSuccessCountInfo":
+                    heLibraryCountVO.setSendstate(6L);
+                    break;
+                case "readCountInfo":
+                    heLibraryCountVO.setIsFinished("1");
+                    break;
+                default:
+                    break;
+            }
+        }
+        List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.gethelibraryCountHyperlink(heLibraryCountVO);
+        return serviceSubtasks;
+    }
+
+    @Override
+    public Map<String, Object> smsSubTask(Long subid) {
+        log.info("smsSubTask鐨勫叆鍙備负锛歿}", subid);
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("code", "500");
+        resultMap.put("msg", "鍙戦�佸け璐�");
+
+        //鑾峰彇鎮h�呯殑鍩烘湰淇℃伅
+        ServiceSubtask serviceSubtask = selectServiceSubtaskById(subid);
+        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
+        String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
+        String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);
+
+        //鍙戦�佹暟鎹殑灏佽
+        ServiceOutPath serviceOutPath = new ServiceOutPath();
+        serviceOutPath.setParam1(taskId);
+        serviceOutPath.setParam2(patid);
+        serviceOutPath.setParam3(serviceSubtask.getTaskName());
+        serviceOutPath.setParam6(subId);
+        serviceOutPath.setCreateTime(new Date());
+        serviceOutPath.setOrgid(serviceSubtask.getOrgid());
+        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+        String format = String.format("%03X", serviceOutPath.getId());
+        serviceOutPath.setRadix(format);
+        serviceOutPath.setUpdateTime(new Date());
+        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+
+        SendMagParam sendMagParam = new SendMagParam();
+        sendMagParam.setType("4");
+        sendMagParam.setPhone(serviceSubtask.getPhone());
+        sendMagParam.setUrl(StringUtils.isNotEmpty(req_path) ? localIP + ":" + req_path + "/wt?p=" + format : localIP + "/wt?p=" + format);
+
+        SysConfig sysConfig = new SysConfig();
+
+        sysConfig = sysConfigMapper.checkConfigKeyUnique("wj.sms.template");
+
+        if (!Objects.isNull(sysConfig)) {
+            String smsContemt = sysConfig.getConfigValue();
+            sendMagParam.setContent(smsContemt.replace("${wjurl}", sendMagParam.getUrl()));
+        }
+
+        if (active.equals("nhfy")) {
+            Map<String, Object> smsResult = mtSubmitSmUtil.submitSm(sendMagParam.getPhone(), sendMagParam.getContent());
+            if (smsResult != null && smsResult.get("result") != null && smsResult.get("result").toString().equals("0")) {
+                resultMap.put("code", "200");
+                resultMap.put("msg", "鍙戦�佹垚鍔�");
+                serviceSubtask.setRemark(StringUtils.isNotEmpty(serviceSubtask.getRemark()) ? serviceSubtask.getRemark() + ";鐭俊鍙戦�佹垚鍔�" : "鐭俊鍙戦�佹垚鍔�");
+                log.info("鏄惁鍙戦�佹垚鍔燂細{}", serviceSubtask.getRemark());
+                updateServiceSubtask(serviceSubtask);
+            }
+        }
+        return resultMap;
+    }
+
+    @Override
+    public List<ServiceSubtaskDetailRatioExport> statQuestionOption(List<Long> taskIds, Date startOutHospTime, Date endOutHospTime) {
+        return serviceSubtaskMapper.statQuestionOption(taskIds, startOutHospTime, endOutHospTime);
+    }
 
     private Boolean saveServiceSubtaskDetail(ServiceSubtask serviceSubtask) {
         Boolean result = true;
@@ -4471,4 +4769,107 @@
         }
     }
 
+    public String scanGenerateSubtask(ServiceTask serviceTaskVo){
+        String content = "";
+        String ip = localIP;
+        ServiceTask serviceTask = new ServiceTask();
+        serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceTaskVo.getTaskid());
+        if(ObjectUtils.isNotEmpty(serviceTask)){
+            try {
+                ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
+                if(ObjectUtils.isNotEmpty(serviceTaskVo.getDeptcode())){
+                    serviceTaskdept.setDeptType("1");
+                    serviceTaskdept.setDeptCode(serviceTask.getDeptcode());
+                }
+                if(ObjectUtils.isNotEmpty(serviceTaskVo.getLeavehospitaldistrictcode())){
+                    serviceTaskdept.setDeptType("2");
+                    serviceTaskdept.setDeptCode(serviceTaskVo.getLeavehospitaldistrictcode());
+                }
+                serviceTaskdept.setServiceType(serviceTask.getServiceType());
+                serviceTaskdept.setOrgid(serviceTask.getOrgid());
+                serviceTaskdept.setTaskId(serviceTaskVo.getTaskid());
+                List<ServiceTaskdept> serviceTaskdepts = serviceTaskdeptService.selectServiceTaskdeptList(serviceTaskdept);
+
+                if (!CollectionUtils.isEmpty(serviceTaskdepts)) {
+                    PatArchive patArchive = new PatArchive();
+                    patArchive.setId(-1L);
+                    patArchive.setName("铏氭嫙鎮h��");
+                    //灏佽serviceSubtask
+                    ServiceSubtask serviceSubtask = boxedServiceSubtask(serviceTask, patArchive);
+                    int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+                    //鏍规嵁鐢熸垚澶栭摼
+                    if (ObjectUtils.isNotEmpty(serviceSubtask.getTaskid()) &&
+                            ObjectUtils.isNotEmpty(serviceSubtask.getPatid())
+                            && ObjectUtils.isNotEmpty(serviceSubtask.getId())) {
+                        RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
+                        String taskId = rsaPublicKeyExample.encryptedData(serviceSubtask.getTaskid().toString(), pub_key);
+                        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
+                        String subId = rsaPublicKeyExample.encryptedData(serviceSubtask.getId().toString(), pub_key);
+                        ServiceOutPath serviceOutPath = new ServiceOutPath();
+                        serviceOutPath.setParam1(taskId);
+                        serviceOutPath.setParam2(patid);
+                        serviceOutPath.setParam3(serviceTask.getTaskName());
+                        serviceOutPath.setParam6(subId);
+                        serviceOutPath.setCreateTime(new Date());
+                        serviceOutPath.setOrgid(serviceTask.getOrgid());
+                        iServiceOutPathService.insertServiceOutPath(serviceOutPath);
+                        String format = String.format("%03X", serviceOutPath.getId());
+                        serviceOutPath.setRadix(format);
+                        serviceOutPath.setUpdateTime(new Date());
+                        String url = ip + ":" + req_path + "/wt?p=" + format;
+                        content = url;
+                        serviceOutPath.setUrl(url);
+                        iServiceOutPathService.updateServiceOutPath(serviceOutPath);
+
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error("銆愭壂鐮佺敓鎴愪换鍔°�戝鐞嗗紓甯革細{}", e.getMessage());
+            }
+        }
+        return content;
+    }
+
+    public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatArchive patArchive) {
+        ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
+        serviceSubtask.setTaskid(serviceTask.getTaskid());
+        if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
+            serviceSubtask.setLibtemplateid(Long.valueOf(serviceTask.getLibtemplateid()));
+//        serviceSubtask.setNurseId(patMedInhosp1.getNurseId());
+//        serviceSubtask.setNurseName(patMedInhosp1.getNurseName());
+//        serviceSubtask.setDrcode(patMedInhosp1.getDrcode());
+//        serviceSubtask.setDrname(patMedInhosp1.getDrname());
+        serviceSubtask.setDeptcode(serviceTask.getDeptcode());
+        serviceSubtask.setDeptname(serviceTask.getDeptname());
+        serviceSubtask.setLeavehospitaldistrictcode(serviceTask.getLeavehospitaldistrictcode());
+        serviceSubtask.setLeavehospitaldistrictname(serviceTask.getLeavehospitaldistrictname());
+        serviceSubtask.setTemplateid(serviceTask.getTemplateid());
+        serviceSubtask.setTemplatename(serviceTask.getTemplatename());
+        serviceSubtask.setPatid(patArchive.getId());
+        serviceSubtask.setSendname(patArchive.getName());
+        serviceSubtask.setSfzh(patArchive.getIdcardno());
+        serviceSubtask.setPhone(patArchive.getTelcode());
+        if (StringUtils.isBlank(patArchive.getTelcode())) serviceSubtask.setPhone(patArchive.getRelativetelcode());
+        serviceSubtask.setSex(patArchive.getSex());
+        serviceSubtask.setAge(patArchive.getAge());
+        serviceSubtask.setSendstate(3L);
+//        serviceSubtask.setManagementDoctor(patMedInhosp1.getManagementDoctor());
+//        serviceSubtask.setManagementDoctorCode(patMedInhosp1.getManagementDoctorCode());
+        serviceSubtask.setServiceType(serviceTask.getServiceType());
+        serviceSubtask.setPreachform(serviceTask.getPreachform());
+        serviceSubtask.setHospType("8");
+        serviceSubtask.setCreateTime(new Date());
+        serviceSubtask.setUpdateTime(new Date());
+//        serviceSubtask.setCreateBy(patMedInhosp1.getNurseName());
+//        serviceSubtask.setLeavehospitaldistrictcode(patMedInhosp1.getLeavehospitaldistrictcode());
+//        serviceSubtask.setLeavehospitaldistrictname(patMedInhosp1.getLeavehospitaldistrictname());
+        serviceSubtask.setUpdateBy(serviceTask.getUpdateBy());
+        serviceSubtask.setUpdateTime(new Date());
+        serviceTask.setSendDay(1L);
+        Date newDate = new Date();
+        serviceSubtask.setLongSendTime(newDate);
+        serviceSubtask.setVisitTime(newDate);
+        return serviceSubtask;
+    }
 }

--
Gitblit v1.9.3