From e6456d2196b3e57bd06be0fbc74dd3e0fc28fdeb Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 22 七月 2025 19:17:55 +0800
Subject: [PATCH] 代码提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  230 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 164 insertions(+), 66 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 1db1344..de6eb96 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -24,6 +24,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.time.LocalDate;
@@ -156,6 +157,10 @@
         return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
     }
 
+    public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO) {
+        return serviceSubtaskMapper.selectServiceSubtaskListAgain(serviceSubtaskVO);
+    }
+
     @Override
     public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {
         //瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚�
@@ -284,11 +289,13 @@
         Integer fssb = 0;
         Integer yfs = 0;
         Integer blq = 0;
+        Integer dsf = 0;
         for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
             if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;
-            else if (serviceSubtask.getSendstate() != 4L) ysf = ysf + 1;
+            else if (serviceSubtask.getSendstate() != 4L && serviceSubtask.getSendstate() != 2L) ysf = ysf + 1;
             if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;
             if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;
+            if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;
             if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
             if (serviceSubtask.getExcep().equals("1")) yc = yc + 1;
         }
@@ -298,6 +305,7 @@
         map.put("fssb", fssb);
         map.put("yfs", yfs);
         map.put("blq", blq);
+        map.put("dsf", dsf);
 
         return map;
     }
@@ -337,7 +345,7 @@
             serviceSubtask1.setIsVisitAgain(2);
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
             return "鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц";
-        } else if (patArchive.getNotrequiredFlag().equals("1")) {
+        } else if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
             serviceSubtask1.setIsVisitAgain(2);
             serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
             return "鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟";
@@ -347,11 +355,14 @@
         //鏂板鍐嶆闅忚浠诲姟
         ServiceSubtask serviceSubtask2 = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtask.class);
         serviceSubtask2.setId(null);
-        serviceSubtask2.setUpid(serviceSubtask1.getUpid());
+        serviceSubtask2.setUpid(serviceSubtask1.getId().intValue());
         serviceSubtask2.setVisitCount(serviceSubtask1.getVisitCount() + 1);
         serviceSubtask2.setSendstate(2L);
         serviceSubtask2.setCreateTime(new Date());
         serviceSubtask2.setUpdateTime(new Date());
+        serviceSubtask2.setVisitType(serviceSubtask.getVisitType());
+        serviceSubtask2.setVisitDeptCode(serviceSubtask.getVisitDeptCode());
+        serviceSubtask2.setVisitDeptName(serviceSubtask.getVisitDeptName());
         int i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask2);
         if (i == 1) {
             //鏂板鎴愬姛鍚庯紝闇�瑕佸皢涔嬪墠鐨勪换鍔¤缃负涓嶈鍐嶉殢璁匡紙闃叉閲嶅鐐癸紝鐒跺悗閲嶅鐢熸垚锛�
@@ -443,7 +454,7 @@
             serviceTask.setCreateTime(new Date());
             serviceTask.setUpdateTime(new Date());
             serviceTaskService.insertServiceTask(serviceTask);
-            log.error("----serviceTaskVO.getAppltype()鐨勫�间负锛歿}", serviceTaskVO.getAppltype());
+            log.info("----serviceTaskVO.getAppltype()鐨勫�间负锛歿}", serviceTaskVO.getAppltype());
             if (StringUtils.isNotEmpty(serviceTaskVO.getAppltype())) {
                 if (serviceTaskVO.getAppltype().equals("3")) {
                     ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
@@ -456,7 +467,7 @@
                     serviceTaskdiag.setGuid(serviceTask.getGuid());
                     serviceTaskdiag.setOrgid(serviceTask.getOrgid());
                     serviceTaskdiag.setCreateTime(new Date());
-                    log.error("----serviceTaskdiag鐨勫�间负锛歿}", serviceTaskdiag);
+                    log.info("----serviceTaskdiag鐨勫�间负锛歿}", serviceTaskdiag);
                     if (StringUtils.isNotEmpty(serviceTaskVO.getIcd10code())) {
                         String[] Icd10codes = serviceTaskVO.getIcd10code().split(",");
                         for (String icd10code : Icd10codes) {
@@ -479,7 +490,7 @@
                         String[] opcodes = serviceTaskVO.getOpcode().split(",");
                         for (String opcode : opcodes) {
                             serviceTaskoper.setOpcode(opcode);
-                            log.error("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
+                            log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
                             serviceTaskoperService.insertServiceTaskoper(serviceTaskoper);
                         }
                     }
@@ -488,6 +499,7 @@
                     ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
                     serviceTaskdept.setTaskId(serviceTask.getTaskid());
                     serviceTaskdept.setTaskName(serviceTask.getTaskName());
+                    serviceTaskdept.setOrgid(serviceTask.getOrgid());
                     serviceTaskdept.setLongtask(0L);
                     if (serviceTaskVO.getLongTask() == 1) serviceTaskdept.setLongtask(1L);
                     if (StringUtils.isNotEmpty(serviceTaskVO.getDeptcode())) {
@@ -540,7 +552,7 @@
                     serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                     serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
-                    serviceSubtask.setType(serviceTaskVO.getHospType());
+                    serviceSubtask.setType(serviceTaskVO.getType());
                     serviceSubtask.setHospType(patTaskRelevance.getHospType());
                     serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
                     serviceSubtask.setDrname(patTaskRelevance.getDrname());
@@ -553,6 +565,7 @@
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
                     serviceSubtask.setCreateBy(serviceTask.getCreateBy());
                     serviceSubtask.setUpdateBy(serviceTask.getCreateBy());
+                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
                     if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
                         serviceSubtask.setLongSendTime(patTaskRelevance.getLongSendTime());
                     serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
@@ -582,7 +595,7 @@
             }
             if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
                 for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-                    log.error("insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
+                    log.info("insertOrUpdateTask闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
                     serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());
                     redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
                     redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
@@ -672,7 +685,7 @@
                         serviceTaskdiag2.setIcd10code(icdcode);
                         List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagService.selectServiceTaskdiagList(serviceTaskdiag2);
                         serviceTaskdiag.setIcd10code(icdcode);
-                        log.error("----serviceTaskdiag鏇存柊鐨勫�间负锛歿}", serviceTaskdiag);
+                        log.info("----serviceTaskdiag鏇存柊鐨勫�间负锛歿}", serviceTaskdiag);
                         if (CollectionUtils.isNotEmpty(serviceTaskdiags)) {
                             serviceTaskdiag.setId(serviceTaskdiags.get(0).getId());
                             serviceTaskdiagService.updateServiceTaskdiag(serviceTaskdiag);
@@ -706,7 +719,7 @@
                         List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(serviceTaskoper2);
 
                         serviceTaskoper.setOpcode(opcode);
-                        log.error("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
+                        log.info("----serviceTaskoper鐨勫�间负锛歿}", serviceTaskoper);
                         if (CollectionUtils.isNotEmpty(serviceTaskopers)) {
                             serviceTaskoper.setId(serviceTaskopers.get(0).getId());
                             serviceTaskoperService.updateServiceTaskoper(serviceTaskoper);
@@ -749,7 +762,7 @@
                     serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                     serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
-                    serviceSubtask.setType(serviceTaskVO.getHospType());
+                    serviceSubtask.setType(serviceTaskVO.getType());
                     serviceSubtask.setCreateTime(DateUtils.getNowDate());
                     serviceSubtask.setDrname(patTaskRelevance.getDrname());
                     serviceSubtask.setDrcode(patTaskRelevance.getDrcode());
@@ -758,6 +771,7 @@
                     serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
                     serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
                     serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
+                    serviceSubtask.setVisitTime(patTaskRelevance.getVisitTime());
                     serviceSubtask.setTextParam(new Gson().toJson(serviceTaskVO.getTextParam()));
                     if (patTaskRelevance.getIsoperation() != null) {
                         if (patTaskRelevance.getIsoperation() == 2)
@@ -1229,6 +1243,7 @@
                     }
                     break;
                 }
+                log.info("鏄惁闇�瑕佹寕鏈猴細{}", les);
                 if (ObjectUtils.isNotEmpty(les)) {
                     //瀵瑰尮閰嶇殑缁撴灉澶勭悊涓�涓�(鐪嬬湅鏄笉鏄渶瑕佹寕鏈�)
                     if (les.getIsEnd() != null && les.getIsEnd() == 1) {
@@ -1287,6 +1302,7 @@
                     if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches() || StringUtils.isEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && matcher2.matches() || StringUtils.isEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex2()) && StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getTargetregex()) && matcher.matches()) {
                         //璇存槑鍖归厤姝g‘浜�
                         //杩欓噷搴旇鍏堝垽鏂被鍨嬶紝鍘诲啀淇敼锛岃缃甀sUserOperation鏄崟閫夐鐨勬敼娉�
+                        log.info("鍖归厤姝g‘浜嗗悧--------------");
                         ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).setIsUserOperation(1);
                         serviceTaskScriptTargetoptionMapper.updateIvrTaskTemplateTargetoption(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j));
 
@@ -1375,8 +1391,9 @@
                                 if (script.getSort() == nextQuestion.intValue()) {
                                     phoneCallBackYQVO.setType("text");
                                     phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                                    String scriptContent = script.getIvrtext();
+                                    String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();
                                     log.error("涓嬩竴棰橀棶棰橈細{}", scriptContent);
+                                    log.error("涓嬩竴棰樼殑瀛愪换鍔℃槸锛歿}", serviceSubtask);
                                     phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
                                     //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀�
                                     redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);
@@ -1415,6 +1432,7 @@
 
                         }
                     } else {
+                        log.info("娌℃湁鍖归厤涓�----------------------------");
                         //flag=0,璇存槑娌� 鍖归厤涓婏紝涔熻鎶婃偅鑰呰鐨勮瘽璁板綍涓嬫潵
                         if (j == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().size() - 1 && flag == 0) {
                             ServiceSubTaskDetailReq serviceSubTaskDetailReq = new ServiceSubTaskDetailReq();
@@ -1442,6 +1460,7 @@
                 }
                 //閮芥病鏈夊尮閰嶅埌
                 if (StringUtils.isEmpty(phoneCallBackYQVO.getValue())) {
+                    log.info("閮芥病鏈夊尮閰嶅埌-------------------------");
                     Integer count = null;
                     Object countObj = redisCache.getCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
                     if (ObjectUtils.isNotEmpty(countObj)) count = (Integer) countObj;
@@ -1472,9 +1491,11 @@
                             //鍘籸edis涓紝鎶婅瀛愪换鍔D鍒犻櫎
                             Long id = serviceSubtask.getId();
                             Map<String, String> map = delRedisValue(null, id.toString());
-                            redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
-                            redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
-                            redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
+                            if (ObjectUtils.isNotEmpty(map)) {
+                                redisCache.setCacheObject(map.get("cacheName"), map.get("val"));
+                                redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
+                                redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "SCORE");
+                            }
 //                            return phoneCallBackYQVO;
                         } else {
                             //鏍规嵁ivrTaskTemplateScriptVO.getNextScriptno()鑾峰彇涓嬩竴棰樿繘琛屾彁闂�
@@ -1482,7 +1503,7 @@
                                 if (script.getSort() == ivrTaskTemplateScriptVO.getNextScriptno().intValue()) {
                                     phoneCallBackYQVO.setType("text");
                                     phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                                    String scriptContent = script.getIvrtext();
+                                    String scriptContent = StringUtils.isNotEmpty(script.getIvrtext()) ? script.getIvrtext() : script.getScriptContent();
                                     phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
                                     //灏嗚鎮h�呯殑Redis涓殑棰樼洰ID锛岃繘琛屼慨鏀�
                                     redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "-" + phoneCallReqYQVO.getPhone().trim(), script.getId().toString(), 120, TimeUnit.MINUTES);
@@ -1536,7 +1557,8 @@
                         if (ivrTaskTemplateScriptVO.getNextScriptno().intValue() == ivrTaskTemplateScript1.getSort()) {
                             phoneCallBackYQVO.setType("text");
                             phoneCallBackYQVO.setSilent_interval(ivrTaskTemplate.getSilencetime().intValue());
-                            String scriptContent = ivrTaskTemplateScript1.getIvrtext();
+                            String scriptContent = StringUtils.isNotEmpty(ivrTaskTemplateScript1.getIvrtext()) ? ivrTaskTemplateScript1.getIvrtext() : ivrTaskTemplateScript1.getScriptContent();
+
                             phoneCallBackYQVO.setValue(phoneCallBackYQVO.getCommonValue() + getObject(serviceSubtask, scriptContent));
                             redisCache.deleteObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid());
                             redisCache.setCacheObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone(), ivrTaskTemplateScript1.getId().toString());
@@ -1589,6 +1611,9 @@
             for (String key : map.keySet()) {
                 scriptContent = scriptContent.replace(key, StringUtils.isNotEmpty(map.get(key)) ? map.get(key) : "");
             }
+        }
+        if (StringUtils.isEmpty(scriptContent)) {
+            return scriptContent;
         }
         scriptContent = scriptContent.replace("${name}", StringUtils.isNotEmpty(serviceSubtask.getSendname()) ? serviceSubtask.getSendname() : "");
         scriptContent = scriptContent.replace("${dzz}", StringUtils.isNotEmpty(serviceSubtask.getAddr()) ? serviceSubtask.getAddr() : "");
@@ -1662,10 +1687,9 @@
         //蹇呴』绛塧che-exist鍏ㄩ儴鎵撳畬鎵嶈兘鎷夊彇涓嬩竴鎵癸紙涓昏鏄�曟墍鏈夌殑鏁版嵁閮藉爢鍦ㄧ數璇濈殑缂撳瓨閲岋紝鍦ㄨ瀹氱殑鏃堕棿鎵撲笉瀹岋級
         long existSize = listOps.size("cache-exist");
         if (existSize > 0) return pullTaskVOList;
-
+        int count = 0;
         long size = listOps.size("cache-0");
         log.error("---------鎵撶數璇濅箣鍓嶇紦瀛樹腑鐨勬暟鎹噺锛歿}", size);
-        int count = 0;
         if (size > 0) {
             //phoneCount()  閫氳繃缁欏嚭鐨勬瘡涓皬鏃堕渶瑕佹墦鍑虹殑鐢佃瘽閲忥紝绠楀嚭鍒版櫄涓�8鐐逛竴鐐硅兘鎵撳嚭澶氬皯涓數璇濓紝鑾峰彇鍒版�婚噺
             //濡傛灉闇�瑕佺珛鍗虫墽琛岀殑鏁版嵁閲忓ぇ浜庝竴澶╄鎵ц鐨勪笂闄愶紝鍒欏彧鍙栦笂闄愮殑鏁伴噺锛屽叾瀹冪殑鍒欐斁鍥瀝edis涓�
@@ -1674,6 +1698,7 @@
                 cacheList = listOps.range("cache-0", 0, count - 1);
             }
         }
+
 
         log.error("浠诲姟鎷夊彇cache-0鐨勫�兼槸澶氬皯锛歿}", cacheList);
         //  cache-0涓虹珛鍗冲彂璧风殑,鍏跺畠鐨勫厛鎺ㄨ繜
@@ -1685,17 +1710,21 @@
         } else {
             for (int i = 1; i < 6; i++) {
                 //鍙栧嚭浠巆ache-1 鍒� cache-5鐨勭涓�涓瓙浠诲姟淇℃伅
-                Long size1 = listOps.size("cache-" + i);
-                if (size1 == null || size1 == 0) continue;
-                int count1 = Math.min(phoneCount(), size1.intValue());
-                List<String> value = listOps.range("cache-0" + i, 0, count1 - 1);
+                try {
+                    Long size1 = listOps.size("cache-" + i);
+                    if (size1 == null || size1 == 0) continue;
+                    int count1 = Math.min(phoneCount(), size1.intValue());
+                    List<String> value = listOps.range("cache-0" + i, 0, count1 - 1);
 
-                List<PullTaskVO> pullTaskVOList2 = getPullTaskList(value, "cache-" + i);
-                if (CollectionUtils.isNotEmpty(pullTaskVOList2) && pullTaskVOList2.size() > 0) {
-                    pullTaskVOList.addAll(pullTaskVOList2);
+                    List<PullTaskVO> pullTaskVOList2 = getPullTaskList(value, "cache-" + i);
+                    if (CollectionUtils.isNotEmpty(pullTaskVOList2) && pullTaskVOList2.size() > 0) {
+                        pullTaskVOList.addAll(pullTaskVOList2);
+                    }
+                    //灏嗗鐞嗚繃鐨勬暟鎹垹闄�
+                    listOps.trim("cache-0" + i, count1, -1);
+                } catch (Exception e) {
+//                    log.error("鐪嬬潃鐑�");
                 }
-                //灏嗗鐞嗚繃鐨勬暟鎹垹闄�
-                listOps.trim("cache-0" + i, count1, -1);
             }
         }
         //existList鐢ㄦ潵璁板綍鎺ヤ笅鏉ラ渶瑕佹墽琛岀殑瀛愪换鍔D
@@ -1735,7 +1764,7 @@
                     serviceSubtask.setRemark("鎵嬫満鍙蜂负绌�");
                     serviceSubtask.setSendstate(4L);
                     serviceSubtask.setResult("error");
-                    serviceSubtask.setFinishtime(new Date());
+//                    serviceSubtask.setFinishtime(new Date());
                     serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                     continue;
                 }
@@ -2054,7 +2083,7 @@
                     ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();
                     ssd.setSubId(serviceSubtaskDetail.getSubId());
                     ssd.setTaskid(serviceSubtaskDetail.getTaskid());
-                    ssd.setTemplatequestionnum(serviceSubtaskDetail.getTemplatequestionnum());
+                    ssd.setScriptid(serviceSubtaskDetail.getScriptid());
                     if (serviceSubtaskDetail.getSubId() != null) {
                         ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(serviceSubtaskDetail.getSubId());
                         ssd.setGuid(serviceSubtask.getGuid());
@@ -2167,12 +2196,36 @@
     public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {
         log.error("getSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
         List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
-        Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown")));
+        //Map<String, List<ServiceSubtask>> collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown")));
+        Map<String, List<ServiceSubtask>> collect = new HashMap<>();
+        if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) {
+            collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown")));
+
+        } else if (serviceSubtaskCountReq.getDeptcodes() != null && serviceSubtaskCountReq.getDeptcodes().size() > 0) {
+            collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
+        }
         for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
             if (CollectionUtils.isEmpty(serviceSubtaskList)) {
                 continue;
             }
             ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList);
+
+            //鍙婃椂鐜�
+            ServiceSubtask ss = new ServiceSubtask();
+            ss.setOrgid(serviceSubtaskList.get(0).getOrgid());
+            if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {
+                ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
+            } else {
+                ss.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+            }
+            ss.setStarttime(serviceSubtaskCountReq.getStartTime());
+            ss.setEndtime(serviceSubtaskCountReq.getEndTime());
+            if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {
+                ss.setEndtime(new Date());
+            }
+            Double jsRate = serviceSubtaskMapper.selectTimelyRate(ss);
+            statistic.setRate(jsRate);
+
             if (ObjectUtils.isNotEmpty(statistic)) {
                 serviceSubtaskStatistics.add(statistic);
             }
@@ -2182,50 +2235,93 @@
 
     private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) {
         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.setServiceCount(serviceSubtaskList.size());
+        //鍑洪櫌浜烘
+        serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
         for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
-            //涓嶉殢璁挎暟閲�
+            //鏃犻渶闅忚浜烘
             if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
-                serviceSubtaskStatistic.setBzxCount(serviceSubtaskStatistic.getBzxCount() + 1L);
+                serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);
             }
-            //搴旈殢璁挎暟閲�
+            //搴旈殢璁夸汉娆�
             if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
-                serviceSubtaskStatistic.setYsfCount(serviceSubtaskStatistic.getYsfCount() + 1L);
-            }
-            //鍙戦�佸け璐ユ暟閲�
-            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
-                serviceSubtaskStatistic.setFssbCount(serviceSubtaskStatistic.getFssbCount() + 1L);
-            }
-            //寰呭彂閫佹暟閲�
-            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
-                serviceSubtaskStatistic.setDfsCount(serviceSubtaskStatistic.getDfsCount() + 1L);
-            }
-            //宸插彂閫佹暟閲�
-            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 3) {
-                serviceSubtaskStatistic.setYfsCount(serviceSubtaskStatistic.getYfsCount() + 1L);
-            }
-            //宸插畬鎴愭暟閲�
-            if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 6) {
-                //宸插彂閫侊紝鍖呭惈宸插畬鎴�
-                serviceSubtaskStatistic.setYfsCount(serviceSubtaskStatistic.getYfsCount() + 1L);
-                serviceSubtaskStatistic.setYwcCount(serviceSubtaskStatistic.getYwcCount() + 1L);
+                serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L);
             }
 
-            if (StringUtils.isNotEmpty(serviceSubtask.getExcep()) && serviceSubtask.getExcep().equals("1")) {
-                //寮傚父鏍囪瘑
-                serviceSubtaskStatistic.setYczs(serviceSubtaskStatistic.getYczs() + 1L);
+            //棣栨鍑洪櫌闅忚
+            if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) {
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+                    serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
+                    serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
+                    serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+                    serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
+                }
+                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.getPreachform().equals("1")) {
+                    serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                    serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                    serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
+                }
+                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);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
+                    serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
+                    serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+                    serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L);
+                }
+                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.getPreachform().equals("1")) {
+                    serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+                    serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+                    serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
+                }
+                if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
+                    serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L);
+                }
             }
+
+
         }
-        //闅忚瀹屾垚鐜�=宸插畬鎴�/搴旈殢璁块噺
-        if (serviceSubtaskStatistic.getYwcCount() == 0 || CollectionUtils.isEmpty(serviceSubtaskList)) {
-            serviceSubtaskStatistic.setSfwcl("0");
-        } else {
-//            BigDecimal multiply = BigDecimal.valueOf(serviceSubtaskStatistic.getYfsCount()).divide(BigDecimal.valueOf(serviceSubtaskList.size()), 2, BigDecimal.ROUND_HALF_UP);
-            BigDecimal multiply = new BigDecimal(serviceSubtaskStatistic.getYwcCount().toString()).divide(new BigDecimal(serviceSubtaskStatistic.getYsfCount().toString()), 2, BigDecimal.ROUND_HALF_UP);
-            serviceSubtaskStatistic.setSfwcl(multiply.toString());
-        }
+
 
         return serviceSubtaskStatistic;
     }
@@ -2242,6 +2338,8 @@
     }
 
     private ServiceSubtaskDetail getServiceSubtaskDetail(PhoneCallReqYQVO phoneCallReqYQVO, IvrTaskTemplateScriptVO ivrTaskTemplateScriptVO, ServiceSubtask serviceSubtask, IvrTaskTemplate ivrTaskTemplate) {
+        log.info("-----------------phoneCallReqYQVO鐨勫�间负锛歿}", phoneCallReqYQVO);
+
         ServiceSubtaskDetail serviceSubtaskDetail = new ServiceSubtaskDetail();
         serviceSubtaskDetail.setSubId(Long.valueOf(phoneCallReqYQVO.getTaskid()));
         ServiceSubtask serviceSubtask1 = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
@@ -2265,7 +2363,7 @@
         serviceSubtaskDetail.setSentEnd(1L);
         serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString());
         serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
-        serviceSubtaskDetail.setQuestiontext(ivrTaskTemplateScriptVO.getIvrtext());
+        serviceSubtaskDetail.setQuestiontext(StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent());
         serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath());
         serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType());
         serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());

--
Gitblit v1.9.3