From b3ba85a04a61d342f21b457bc2caad3e844bbf68 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期一, 05 一月 2026 14:08:11 +0800
Subject: [PATCH] 【市一】随访满意度明细调整

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |   67 +++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 1 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 7b2298d..50fdda2 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -520,7 +520,15 @@
             }
             if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
                 tempid = Long.valueOf(ivrTaskTemplateService.saveOrUpdateTempScript(serviceTaskVO.getIvrTaskTemplateVO()));
-                tempName = ivrTaskTemplateService.selectIvrTaskTemplateByID(tempid).getTemplateName();
+                log.info("IVR妯℃澘鎻掑叆鎴愬姛锛岃繑鍥炵殑tempid={}", tempid);
+
+                IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(tempid);
+                if (ivrTaskTemplate == null) {
+                    log.error("鏍规嵁tempid={}鏌ヨIVR妯℃澘澶辫触锛岃繑鍥瀗ull锛佽妫�鏌el_flag瀛楁鏄惁姝g‘璁剧疆", tempid);
+                    throw new BaseException("IVR妯℃澘淇濆瓨鎴愬姛浣嗘煡璇㈠け璐ワ紝璇疯仈绯荤鐞嗗憳妫�鏌ユ暟鎹�");
+                }
+                tempName = ivrTaskTemplate.getTemplateName();
+                log.info("IVR妯℃澘鏌ヨ鎴愬姛锛宼empName={}", tempName);
             }
 
             //寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔�
@@ -2920,6 +2928,58 @@
         return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);
     }
 
+    @Override
+    public Map<String, ServiceSubtaskScriptCount> getSfStatisticsScriptDetails(ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        Map<String, ServiceSubtaskScriptCount> result = new HashMap<>();
+        List<ServiceSubtaskScriptCount> allCounts = new ArrayList<>();
+        List<ServiceSubtaskScriptCount> allItemCounts = new ArrayList<>();
+        if(ObjectUtils.isEmpty(serviceSubtaskCountReq.getType())){
+            //鏌ヨ璇煶缁熻鏄庣粏
+            serviceSubtaskCountReq.setType("1");
+            List<ServiceSubtaskScriptCount> ivyCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq);
+            List<ServiceSubtaskScriptCount> ivyItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq);
+
+            //鏌ヨ鐭俊缁熻鏄庣粏
+            serviceSubtaskCountReq.setType("2");
+            List<ServiceSubtaskScriptCount> svyCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq);
+            List<ServiceSubtaskScriptCount> svyItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq);
+
+            allCounts.addAll(ivyCounts);
+            allCounts.addAll(svyCounts);
+            allItemCounts.addAll(ivyItemCounts);
+            allItemCounts.addAll(svyItemCounts);
+        }else {
+            allCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq);
+            allItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq);
+        }
+
+
+        for(ServiceSubtaskScriptCount count : allCounts){
+            List<ServiceSubtaskScriptCount> itemCounts = new ArrayList<>();
+            allItemCounts.forEach(itemCount ->{
+                if(ObjectUtils.isNotEmpty(count.getScriptid()) && ObjectUtils.isNotEmpty(itemCount.getScriptid())){
+                    if(count.getScriptid().equals(itemCount.getScriptid())){
+                        //鏀惧叆缁熻淇℃伅
+                        itemCount.setScriptContent(count.getScriptContent());
+                        itemCount.setCompletedQuantity(count.getCompletedQuantity());
+                        itemCount.setAllQuantity(count.getAllQuantity());
+                        //璁$畻閫夋嫨姣斾緥
+                        int chosenQuantity = ObjectUtils.isNotEmpty(itemCount.getChosenQuantity())?itemCount.getChosenQuantity():0;
+                        int completedQuantity = itemCount.getCompletedQuantity();
+                        if(ObjectUtils.isNotEmpty(completedQuantity) && completedQuantity != 0){
+                            BigDecimal chosenPercentage = (new BigDecimal(chosenQuantity)).divide(new BigDecimal(completedQuantity), 2, RoundingMode.HALF_UP);
+                            itemCount.setChosenPercentage(chosenPercentage.toString());
+                        }
+                        itemCounts.add(itemCount);
+                    }
+                }
+            });
+            count.setDetails(itemCounts);
+            result.put(count.getScriptid().toString(),count);
+        }
+        return result;
+    }
+
 
     /**
      * @param serviceSubtask
@@ -2975,6 +3035,11 @@
         serviceSubtaskPreachform.setTaskid(taskid);
         List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
         if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
+            //娌℃湁闅忚鏃堕棿鍒欐寜褰撳ぉ鏉ョ畻--涓存椂
+            if (ObjectUtils.isEmpty(visitTime)) {
+                visitTime = new Date();
+            }
+
             String compensateTime = serviceSubtaskPreachforms.get(0).getCompensateTime();
             int hoursToAdd = Integer.valueOf(compensateTime) * 24;
             Calendar calendar = Calendar.getInstance();

--
Gitblit v1.9.3