From 48a112a2718cefda8d9a80420dba780171b06d3e Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 14 四月 2026 17:32:40 +0800
Subject: [PATCH] 【景宁】再次随访的随访任务做完,首次的随访任务的完成时间也变成再次随访的完成时间

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |  206 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 167 insertions(+), 39 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 80727d1..61869a6 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -1,7 +1,7 @@
 package com.smartor.service.impl;
 
-import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -13,14 +13,12 @@
 import com.smartor.common.FtpService;
 import com.smartor.config.PhoneUtils;
 import com.smartor.domain.*;
+import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
 import com.smartor.service.*;
-import com.sun.org.apache.bcel.internal.generic.NEW;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -104,7 +102,7 @@
     private IServiceOutPathService iServiceOutPathService;
 
     @Autowired
-    private IPatMedOuthospService iPatMedOuthospService;
+    private IServiceSubtaskDetailTraceService traceService;
 
     @Autowired
     private FtpService ftpService;
@@ -117,6 +115,9 @@
 
     @Autowired
     private PatArchiveMapper patArchiveMapper;
+
+    @Autowired
+    private SvyLibScriptCategoryMapper svyLibScriptCategoryMapper;
 
     @Value("${pri_key}")
     private String pri_key;
@@ -205,12 +206,12 @@
             try {
                 List<Map<String, Object>> mapList = objectMapper.readValue(serviceTask.getPreachformDesc(), List.class);
                 serviceTaskVO.setPreachformList(mapList);
-                if(ObjectUtils.isNotEmpty(serviceTask.getTaskid())){
+                if (ObjectUtils.isNotEmpty(serviceTask.getTaskid())) {
                     ServiceTaskoper operVo = new ServiceTaskoper();
                     operVo.setTaskId(serviceTask.getTaskid());
                     operVo.setOrgid(serviceTask.getOrgid());
                     List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(operVo);
-                    if(ObjectUtils.isNotEmpty(serviceTaskopers)){
+                    if (ObjectUtils.isNotEmpty(serviceTaskopers)) {
                         serviceTaskVO.setOplevelcode(serviceTaskopers.get(0).getOplevelcode());
                     }
                 }
@@ -231,12 +232,12 @@
         serviceTaskVO.setShowTimeNoon(serviceTask.getShowTimeNoon());
         serviceTaskVO.setShowTimeNight(serviceTask.getShowTimeNight());
         serviceTaskVO.setPreachform(serviceTask.getPreachform());
-        if(ObjectUtils.isNotEmpty(serviceTask.getTaskid())){
+        if (ObjectUtils.isNotEmpty(serviceTask.getTaskid())) {
             ServiceTaskoper operVo = new ServiceTaskoper();
             operVo.setTaskId(serviceTask.getTaskid());
             operVo.setOrgid(serviceTask.getOrgid());
             List<ServiceTaskoper> serviceTaskopers = serviceTaskoperService.selectServiceTaskoperList(operVo);
-            if(ObjectUtils.isNotEmpty(serviceTaskopers)){
+            if (ObjectUtils.isNotEmpty(serviceTaskopers)) {
                 serviceTaskVO.setOplevelcode(serviceTaskopers.get(0).getOplevelcode());
             }
         }
@@ -273,7 +274,7 @@
                 patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());
                 patTaskRelevance.setPatid(serviceSubtask1.getPatid());
                 patTaskRelevance.setSendStatus(serviceSubtask1.getSendstate());
-                patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode());
+                patTaskRelevance.setDeptcode(serviceSubtask1.getDeptcode());
                 patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
                 patTaskRelevance.setLeavehospitaldistrictcode(serviceSubtask1.getLeavehospitaldistrictcode());
                 patTaskRelevance.setLeavehospitaldistrictname(serviceSubtask1.getLeavehospitaldistrictname());
@@ -295,7 +296,7 @@
                 patTaskRelevance.setFinishtime(serviceSubtask1.getFinishtime());
                 patTaskRelevance.setAddr(serviceSubtask1.getAddr());
                 patTaskRelevance.setDeptName(serviceSubtask1.getDeptname());
-                patTaskRelevance.setDeptCode(serviceSubtask1.getDeptcode());
+                patTaskRelevance.setDeptcode(serviceSubtask1.getDeptcode());
                 patTaskRelevance.setBedNo(serviceSubtask1.getBedNo());
                 patTaskRelevance.setDiagname(serviceSubtask1.getLeavediagname());
                 patTaskRelevance.setPatid(serviceSubtask1.getPatid());
@@ -411,18 +412,18 @@
         // 澶勭悊绌哄紓甯�
         if (MapUtils.isEmpty(result)) {
             result = new HashMap<>();
+            // 纭繚鎵�鏈� key 閮芥湁鍊硷紝閬垮厤绌烘寚閽堝紓甯�
+            // 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);
         }
-        // 纭繚鎵�鏈� key 閮芥湁鍊硷紝閬垮厤绌烘寚閽堝紓甯�
-        // 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);
-
         return result;
     }
 
@@ -577,6 +578,15 @@
             if (StringUtils.isNotEmpty(serviceTaskVO.getLibtemplateid())) {
                 serviceTask.setLibtemplateid(serviceTaskVO.getLibtemplateid());
                 serviceTask.setLibtemplatename(serviceTaskVO.getLibtemplatename());
+            } else {
+                if (ObjectUtils.isNotEmpty(serviceTaskVO.getSvyTaskTemplateVO())) {
+                    serviceTask.setLibtemplateid("" + serviceTaskVO.getSvyTaskTemplateVO().getTemplateid());
+                    serviceTask.setLibtemplatename("" + serviceTaskVO.getLibtemplatename());
+                }
+                if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
+                    serviceTask.setLibtemplateid("" + serviceTaskVO.getIvrTaskTemplateVO().getLibtemplateid());
+                    serviceTask.setLibtemplatename("" + serviceTaskVO.getIvrTaskTemplateVO().getLibtemplatename());
+                }
             }
             if (serviceTaskVO.getTemplateid() != null) {
                 serviceTask.setTemplateid(serviceTaskVO.getTemplateid());
@@ -672,8 +682,8 @@
             serviceSubtask.setTaskid(serviceTask.getTaskid().longValue());
             serviceSubtask.setTemplatename(tempName);
             serviceSubtask.setTemplateid(tempid);
-            serviceSubtask.setLibtemplateid(ObjectUtils.isEmpty(serviceTaskVO.getLibtemplateid()) ? null : Long.valueOf(serviceTaskVO.getLibtemplateid()));
-            serviceSubtask.setLibtemplatename(serviceTaskVO.getLibtemplatename());
+            serviceSubtask.setLibtemplateid(ObjectUtils.isEmpty(serviceTask.getLibtemplateid()) ? null : Long.valueOf(serviceTask.getLibtemplateid()));
+            serviceSubtask.setLibtemplatename(serviceTask.getLibtemplatename());
             //鏂板
             if (CollectionUtils.isNotEmpty(serviceTaskVO.getPatTaskRelevances())) {
                 for (PatTaskRelevance patTaskRelevance : serviceTaskVO.getPatTaskRelevances()) {
@@ -690,7 +700,7 @@
                     serviceSubtask.setSendstate(1L);
                     if (serviceTaskVO.getLongTask() != null && serviceTaskVO.getLongTask() == 1)
                         serviceSubtask.setSendstate(2L);
-                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode());
+                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptcode());
                     serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                     serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
@@ -930,7 +940,7 @@
                     serviceSubtask.setAddr(patTaskRelevance.getAddr());
                     serviceSubtask.setPatid(patTaskRelevance.getPatid());
                     serviceSubtask.setOpenid(patTaskRelevance.getOpenid());
-                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptCode());
+                    serviceSubtask.setDeptcode(patTaskRelevance.getDeptcode());
                     serviceSubtask.setLeavehospitaldistrictname(patTaskRelevance.getLeavehospitaldistrictname());
                     serviceSubtask.setLeavehospitaldistrictcode(patTaskRelevance.getLeavehospitaldistrictcode());
                     serviceSubtask.setDeptname(patTaskRelevance.getDeptName());
@@ -1332,7 +1342,7 @@
                     ServiceSubtask serviceSubtask = serviceSubtaskMapper.selectServiceSubtaskById(Long.valueOf(phoneCallReqYQVO.getTaskid()));
                     //璁板綍鐢佃瘽鍙戦�佺姸鎬�
                     setFailPreachForm(serviceSubtask, "3", "閫氳瘽姝e父缁撴潫", "9");
-                    //鍒犻櫎缁撴潫璇殑鎮e瓨
+                    //鍒犻櫎缁撴潫璇殑缂撳瓨
                     redisCache.deleteObject(phoneCallReqYQVO.getUuid() + "- jsy");
                 } else {
                     redisCache.setCacheObject(phoneCallReqYQVO.getUuid() + "PlayEventCallbackPlaystop", true, 120, TimeUnit.MINUTES);
@@ -1548,6 +1558,58 @@
                         serviceSubTaskDetailReq.setGuid(phoneCallReqYQVO.getGuid());
                         serviceSubTaskDetailReq.setOrgid(phoneCallReqYQVO.getOrgid());
                         saveQuestionAnswerPhone(serviceSubTaskDetailReq);
+
+                        //鍒ゆ柇涓�涓嬪綋鍓嶇殑闂鏄笉鏄弧鎰忓害闂锛屽苟涓攄utyDeptCode鏄惁鏈夊�硷紝骞朵笖閫夐」鏄笉鏄紓甯搁�夐」锛屽鏋滃叏绗﹀悎锛屽垯寰�婊℃剰搴﹂棶棰樺紓甯歌〃鏂板
+                        if (StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getDutyDeptCode()) && 1 == ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getIsabnormal()) {
+                            ServiceSubtaskDetailTrace subtaskDetailTrace = new ServiceSubtaskDetailTrace();
+                            //鐢╰askid銆乻ubid鍜宻criptid鍘昏幏鍙杁etailid
+                            ServiceSubtaskDetail ssd = new ServiceSubtaskDetail();
+                            ssd.setSubId(serviceSubtask.getId());
+                            ssd.setTaskid(serviceSubtask.getTaskid());
+                            ssd.setScriptid(StringUtils.isNotEmpty(scriptId) ? Long.valueOf(scriptId) : null);
+                            List<ServiceSubtaskDetail> serviceSubtaskDetails = serviceSubtaskDetailMapper.selectServiceSubtaskDetailList(ssd);
+                            subtaskDetailTrace.setDetailId(CollectionUtils.isNotEmpty(serviceSubtaskDetails) ? serviceSubtaskDetails.get(0).getId() : null);
+
+                            subtaskDetailTrace.setSubId(serviceSubtask.getId());
+                            subtaskDetailTrace.setTaskid(serviceSubtask.getTaskid());
+                            subtaskDetailTrace.setTemplateid(ivrTaskTemplateScriptVO.getId());
+                            subtaskDetailTrace.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
+                            subtaskDetailTrace.setSwitchid(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getId());
+                            subtaskDetailTrace.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());
+                            subtaskDetailTrace.setQuestionvoice(null);
+                            subtaskDetailTrace.setCategoryname(ivrTaskTemplateScriptVO.getScriptAssortname());
+                            subtaskDetailTrace.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid());
+                            //鑾峰彇鎵�鏈夐�夐」
+                            String optionDescStr = Optional.ofNullable(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()).filter(list -> !list.isEmpty()).map(list -> list.stream().map(IvrTaskTemplateTargetoption::getOptiondesc).filter(Objects::nonNull).collect(Collectors.joining("&"))).orElse("");
+                            subtaskDetailTrace.setTargetid(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getId());
+                            subtaskDetailTrace.setTargetvalue(optionDescStr);
+                            subtaskDetailTrace.setMatchedtext(ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getOptiondesc());
+                            subtaskDetailTrace.setValueType(serviceSubtaskDetails.get(0).getValueType());
+                            subtaskDetailTrace.setTemplateType(1);
+
+                            SvyLibScriptCategory svyLibScriptCategory = svyLibScriptCategoryMapper.selectSvyLibScriptCategoryById(ivrTaskTemplateScriptVO.getScriptAssortid());
+                            subtaskDetailTrace.setType(svyLibScriptCategory.getType());
+                            subtaskDetailTrace.setScriptid(ivrTaskTemplateScriptVO.getId());
+                            subtaskDetailTrace.setAsrtext(phoneCallReqYQVO.getAsrtext());
+                            subtaskDetailTrace.setRecordpath(phoneCallReqYQVO.getRecordpath());
+                            subtaskDetailTrace.setPatid(serviceSubtask.getPatid());
+                            JSONObject patdescJson = new JSONObject();
+                            patdescJson.put("sendname", serviceSubtask.getSendname());
+                            patdescJson.put("phone", serviceSubtask.getPhone());
+                            patdescJson.put("age", serviceSubtask.getAge());
+                            patdescJson.put("sex", serviceSubtask.getSex() != null ? serviceSubtask.getSex() == 1 ? "鐢�" : "濂�" : null);
+                            subtaskDetailTrace.setPatdesc(patdescJson.toJSONString());
+                            subtaskDetailTrace.setTodeptcode(ivrTaskTemplateScriptVO.getDutyDeptCode());
+                            subtaskDetailTrace.setTodeptname(ivrTaskTemplateScriptVO.getDutyDeptName());
+                            subtaskDetailTrace.setOrgid(serviceSubtask.getOrgid());
+                            subtaskDetailTrace.setHandleFlag("0");
+                            subtaskDetailTrace.setGuid(phoneCallReqYQVO.getGuid());
+                            subtaskDetailTrace.setCreateTime(new Date());
+                            subtaskDetailTrace.setUpdateTime(new Date());
+                            subtaskDetailTrace.setOrgid(phoneCallReqYQVO.getOrgid());
+                            traceService.insertServiceSubtaskDetailTtrace(subtaskDetailTrace);
+                        }
+
                         //鍒ゆ柇涓�涓嬶紝杩欎釜閫夐」缁撴灉鏄笉鏄繕鏈夌户缁棶涓嬪幓鐨勫繀瑕侊紝渚嬪閫夐」缁撴灉鏄埆浜轰笉鎯崇户缁洖绛旈棶棰橈紝灏辫缁撴潫鎺�
                         if (ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList().get(j).getIsEnd() == 1) {
                             redisCache.deleteObject(serviceSubtask.getId() + "-" + serviceSubtask.getPhone());
@@ -1921,7 +1983,7 @@
 //        if (existSize > 0) return pullTaskVOList;
         int count = 0;
         long size = listOps.size("cache-0");
-        log.error("---------鎵撶數璇濅箣鍓嶇紦瀛樹腑鐨勬暟鎹噺锛歿}", size);
+        log.info("---------鎵撶數璇濅箣鍓嶇紦瀛樹腑鐨勬暟鎹噺锛歿}", size);
         if (size > 0) {
             //phoneCount()  閫氳繃缁欏嚭鐨勬瘡涓皬鏃堕渶瑕佹墦鍑虹殑鐢佃瘽閲忥紝绠楀嚭鍒版櫄涓�8鐐逛竴鐐硅兘鎵撳嚭澶氬皯涓數璇濓紝鑾峰彇鍒版�婚噺
             //濡傛灉闇�瑕佺珛鍗虫墽琛岀殑鏁版嵁閲忓ぇ浜庝竴澶╄鎵ц鐨勪笂闄愶紝鍒欏彧鍙栦笂闄愮殑鏁伴噺锛屽叾瀹冪殑鍒欐斁鍥瀝edis涓�
@@ -1970,7 +2032,7 @@
             }
         }
 //        if (existList.size() != 0) redisCache.setCacheListRight("cache-exist", existList);
-        log.error("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null);
+        log.info("-----------瀹為檯鎷夊彇鐨勭數璇濇暟鎹噺锛歿}", CollectionUtils.isNotEmpty(pullTaskVOList) ? pullTaskVOList.size() : null);
         return pullTaskVOList;
     }
 
@@ -2070,7 +2132,7 @@
                     //璁剧疆涓�涓嬮棶棰樺垎绫�
                     IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskDetail.getScriptid());
                     if (ivrTaskTemplateScript != null)
-                        serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getAssortid());
+                        serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getScriptAssortid());
                 }
 
                 serviceSubtaskDetail.setSubId(selectServiceSubtaskList.get(0).getId());
@@ -2088,7 +2150,7 @@
                         //璁剧疆涓�涓嬮棶棰樺垎绫�
                         IvrTaskTemplateScript ivrTaskTemplateScript = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptByID(serviceSubtaskDetail.getScriptid());
                         if (ivrTaskTemplateScript != null)
-                            serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getAssortid());
+                            serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScript.getScriptAssortid());
                     }
                     serviceSubtaskDetail.setCreateTime(new Date());
                     serviceSubtaskDetail.setGuid(serviceSubTaskDetailReq.getGuid());
@@ -2539,7 +2601,7 @@
                     ivrTaskTemplateScript.setTemplateID(templateid);
                     ivrTaskTemplateScript.setOrgid(serviceTask.getOrgid());
                     //鍏堥粯璁や负1鍚э紝assortid=1  浠h〃鏄弧鎰忓害
-                    ivrTaskTemplateScript.setAssortid(ivrCategoryid);
+                    ivrTaskTemplateScript.setScriptAssortid(ivrCategoryid);
                     List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
                     if (CollectionUtils.isNotEmpty(ivrTaskTemplateScripts)) {
                         //闇�瑕佸厛璁$畻鍑哄彂閫侀噺锛屽啀涔樹互鍗曚釜闂埜婊℃剰搴﹂鐩暟閲忥紝寰楀埌婊℃剰搴﹂鐩�婚噺锛堝寘鍚簡鏈仛鐨勶級
@@ -2604,9 +2666,9 @@
 
         if (visitCount != null && visitCount > 1) {
             serviceSubtaskStatistic = getStatisticAgain(serviceSubtaskList, followUpCountStyle);
-        }else if(visitCount != null && visitCount == 1){
+        } else if (visitCount != null && visitCount == 1) {
             serviceSubtaskStatistic = getStatisticFirst(serviceSubtaskList, followUpCountStyle);
-        }else {
+        } else {
             //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
             DecimalFormat percentFormat = new DecimalFormat("##.##%");
             serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
@@ -2866,6 +2928,7 @@
 
     /**
      * 棣栨闅忚缁熻
+     *
      * @param serviceSubtaskList
      * @param followUpCountStyle
      * @return
@@ -3027,6 +3090,7 @@
 
     /**
      * 鍐嶆闅忚缁熻
+     *
      * @param serviceSubtaskList
      * @param followUpCountStyle
      * @return
@@ -3231,7 +3295,7 @@
                 if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
                     serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null &&  (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) {
+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) {
                     serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
                 }
                 if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
@@ -3349,7 +3413,7 @@
                 if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
                     serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
                 }
-                if (serviceSubtask.getSendstate() != null &&  (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) {
+                if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 5 || serviceSubtask.getSendstate() == 7)) {
                     serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
                 }
                 if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
@@ -3438,7 +3502,7 @@
         serviceSubtaskDetail.setAssigntime(System.currentTimeMillis());
         serviceSubtaskDetail.setStarttime(System.currentTimeMillis());
         serviceSubtaskDetail.setAnswertime(System.currentTimeMillis());
-        serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScriptVO.getAssortid());
+        serviceSubtaskDetail.setCategoryid(ivrTaskTemplateScriptVO.getScriptAssortid());
         serviceSubtaskDetail.setAsrtext("鏃犲簲绛�");
         if (StringUtils.isNotEmpty(phoneCallReqYQVO.getAsrtext()))
             serviceSubtaskDetail.setAsrtext(phoneCallReqYQVO.getAsrtext());
@@ -3453,11 +3517,13 @@
         serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());
         serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText());
         serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId());
+        serviceSubtaskDetail.setLibTemplateid(serviceSubtask.getLibtemplateid() != null ? serviceSubtask.getLibtemplateid().intValue() : null);
 
         int i = 1;
         for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {
             if (ivrTaskTemplateTargetoption.getIsUserOperation() == 1) {
                 serviceSubtaskDetail.setMatchedtext(ivrTaskTemplateTargetoption.getTargetvalue());
+                serviceSubtaskDetail.setScore(ivrTaskTemplateTargetoption.getScore() != null ? ivrTaskTemplateTargetoption.getScore().toString() : "0");
             }
             serviceSubtaskDetail.setTargetvalue(StringUtils.isEmpty(serviceSubtaskDetail.getTargetvalue()) ? ivrTaskTemplateTargetoption.getTargetvalue() : serviceSubtaskDetail.getTargetvalue() + "&" + ivrTaskTemplateTargetoption.getTargetvalue());
         }
@@ -3782,12 +3848,13 @@
             if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
                 serviceSubtask.setCurrentPreachform(preachform);
                 serviceSubtask.setSendstate(5L);
-                serviceSubtask.setRemark("setFailPreachForm鏂规硶 褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛屽叏澶辫触浜�");
+                serviceSubtask.setRemark("鎵�鏈夊彂閫佹柟寮忓潎鏈幏鍙栫粨鏋滐紝浠诲姟澶辫触");
                 serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
                 return true;
             }
         }
 
+        //灏界澶辫触锛岃繖閲屼篃灏嗗綋鍓嶅彂閫佹柟寮忕户缁缃垚鈥滅數璇濃�濓紝sendstate璁剧疆鎴�3锛涘洜涓簉yTask閲岀殑琛ュ伩鐨勫畾鏃朵换鍔¤繍琛屾椂锛屼細鎵惧埌杩欐潯subtask锛屽苟杩涜澶勭悊
         serviceSubtask.setCurrentPreachform(preachform);
         serviceSubtask.setSendstate(3L);
         //濡傛灉绛変簬9锛屽垯璇存槑鐢佃瘽姝e父缁撴潫浜�
@@ -3948,7 +4015,68 @@
         }).collect(Collectors.toList());
     }
 
-    public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity){
+    public Map<String, Object> getCurrentUserServiceSubtaskCount(ServiceSubtaskEntity entity) {
         return serviceSubtaskMapper.getCurrentUserServiceSubtaskCount(entity);
     }
+
+    @Override
+    public Map<String, Object> getContinueNurseCount(ServiceSubtaskCotinueCountVO vo) {
+        boolean hasDistrict = !CollectionUtils.isEmpty(vo.getLeavehospitaldistrictcodes());
+        boolean hasDept = !CollectionUtils.isEmpty(vo.getDeptcodes());
+
+        List<Map<String, Object>> districtRows;
+        List<Map<String, Object>> deptRows;
+
+        if (hasDistrict) {
+            // 鍙紶浜嗙梾鍖猴細浠呮寜鐥呭尯缁村害缁熻
+            districtRows = serviceSubtaskMapper.getContinueNurseCount(vo);
+            deptRows = Collections.emptyList();
+        } else if (hasDept) {
+            // 鍙紶浜嗙瀹わ細浠呮寜绉戝缁村害缁熻
+            districtRows = Collections.emptyList();
+            deptRows = serviceSubtaskMapper.getContinueNurseCountByDept(vo);
+        } else {
+            // 閮芥湭浼狅細鐥呭尯鍜岀瀹ゅ悇缁熻涓�閬�
+            districtRows = serviceSubtaskMapper.getContinueNurseCount(vo);
+            deptRows = serviceSubtaskMapper.getContinueNurseCountByDept(vo);
+        }
+
+        long totalNoContinue = 0L;
+        long totalContinue = 0L;
+        List<Map<String, Object>> detail = new ArrayList<>();
+
+        for (Map<String, Object> row : districtRows) {
+            String groupName = row.get("groupName") == null
+                    ? (row.get("groupCode") == null ? "" : row.get("groupCode").toString())
+                    : row.get("groupName").toString();
+            long noCnt = row.get("noContinueCnt") == null ? 0L : Long.parseLong(row.get("noContinueCnt").toString());
+            long yesCnt = row.get("continueCnt") == null ? 0L : Long.parseLong(row.get("continueCnt").toString());
+            totalNoContinue += noCnt;
+            totalContinue += yesCnt;
+            Map<String, Object> item = new LinkedHashMap<>();
+            item.put("鏈欢缁璤" + groupName, noCnt);
+            item.put("宸插欢缁璤"+groupName, yesCnt);
+            detail.add(item);
+        }
+
+        for (Map<String, Object> row : deptRows) {
+            String groupName = row.get("groupName") == null
+                    ? (row.get("groupCode") == null ? "" : row.get("groupCode").toString())
+                    : row.get("groupName").toString();
+            long noCnt = row.get("noContinueCnt") == null ? 0L : Long.parseLong(row.get("noContinueCnt").toString());
+            long yesCnt = row.get("continueCnt") == null ? 0L : Long.parseLong(row.get("continueCnt").toString());
+            totalNoContinue += noCnt;
+            totalContinue += yesCnt;
+            Map<String, Object> item = new LinkedHashMap<>();
+            item.put("鏈欢缁璤" + groupName, noCnt);
+            item.put("宸插欢缁璤" + groupName, yesCnt);
+            detail.add(item);
+        }
+
+        Map<String, Object> result = new LinkedHashMap<>();
+        result.put("鏈欢缁�绘暟閲�", totalNoContinue);
+        result.put("宸插欢缁�绘暟閲�", totalContinue);
+        result.put("璇︽儏", detail);
+        return result;
+    }
 }

--
Gitblit v1.9.3