From b44db60114b159cd438a0fe0259b9ddc94a16ba3 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 06 一月 2026 16:45:07 +0800
Subject: [PATCH] 【市一】随访满意度明细调整

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskTemplateScriptController.java |   14 +++++++
 smartor/src/main/java/com/smartor/service/ISvyTaskTemplateScriptService.java                    |    9 ++++
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java                   |   31 ++++++++++-----
 smartor/src/main/java/com/smartor/service/impl/SvyTaskTemplateScriptServiceImpl.java            |   44 ++++++++++++++++++++++
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskScriptCount.java                         |    8 ++++
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                              |    5 ++
 6 files changed, 101 insertions(+), 10 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskTemplateScriptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskTemplateScriptController.java
index 49ddd34..061fc62 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskTemplateScriptController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/SvyTaskTemplateScriptController.java
@@ -8,7 +8,9 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.smartor.domain.SvyTaskTemplateScript;
+import com.smartor.domain.SvyTaskTemplateScriptVO;
 import com.smartor.service.ISvyTaskTemplateScriptService;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -91,4 +93,16 @@
     public AjaxResult remove(@PathVariable Long[] IDs) {
         return toAjax(svyTaskTemplateScriptService.deleteSvyTaskTemplateScriptByIDs(IDs));
     }
+
+    /**
+     * 鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢
+     *
+     * @param svyTaskTemplateScriptVO
+     * @return
+     */
+    @ApiOperation("鏌ヨ妯℃澘璇︽儏鏍规嵁鏉′欢")
+    @PostMapping("/selectInfoByCondition")
+    public AjaxResult selectInfoByCondition(@RequestBody SvyTaskTemplateScriptVO svyTaskTemplateScriptVO) {
+        return AjaxResult.success(svyTaskTemplateScriptService.selectInfoByCondition(svyTaskTemplateScriptVO));
+    }
 }
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskScriptCount.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskScriptCount.java
index 7bc96be..65cca88 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskScriptCount.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskScriptCount.java
@@ -1,5 +1,6 @@
 package com.smartor.domain;
 
+import com.ruoyi.common.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -43,6 +44,13 @@
     private String scriptType;
 
     /**
+     * 浠诲姟绫诲瀷(闂ㄨ瘖锛屼綇闄紝澶嶈瘖鈥�)
+     */
+    @Excel(name = "浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶锛堥殢璁匡級  2锛岄棶鍗凤紱3锛岄�氱煡锛堝鏁欙級")
+    @ApiModelProperty(value = "浠诲姟绫诲瀷锛�1锛屾満鍣ㄤ汉璇煶锛堥殢璁匡級  2锛岄棶鍗凤紱3锛屽鏁欙紱 4.閫氱煡)")
+    private String subtaskType;
+
+    /**
      * 宸插~鍐欐暟閲�
      */
     @ApiModelProperty(value = "宸插~鍐欐暟閲�")
diff --git a/smartor/src/main/java/com/smartor/service/ISvyTaskTemplateScriptService.java b/smartor/src/main/java/com/smartor/service/ISvyTaskTemplateScriptService.java
index 9e61da4..9edfe9e 100644
--- a/smartor/src/main/java/com/smartor/service/ISvyTaskTemplateScriptService.java
+++ b/smartor/src/main/java/com/smartor/service/ISvyTaskTemplateScriptService.java
@@ -1,6 +1,7 @@
 package com.smartor.service;
 
 import com.smartor.domain.SvyTaskTemplateScript;
+import com.smartor.domain.SvyTaskTemplateScriptVO;
 
 import java.util.List;
 
@@ -59,4 +60,12 @@
      * @return 缁撴灉
      */
     public int deleteSvyTaskTemplateScriptByID(Long ID);
+
+    /**
+     * 鏌ヨ闂嵎浠诲姟妯$増闂璇濇湳搴撳垪琛�
+     *
+     * @param svyTaskTemplateScriptVO
+     * @return 闂嵎浠诲姟妯$増闂璇濇湳搴撻泦鍚�
+     */
+    public SvyTaskTemplateScriptVO selectInfoByCondition(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO);
 }
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 cf53baf..28e168c 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -3051,23 +3051,31 @@
 
         for(ServiceSubtaskScriptCount count : allCounts){
             Map<String, ServiceSubtaskScriptCount> itemCountMap = new HashMap<>();
-            if(ObjectUtils.isNotEmpty(count.getTemplateid())){
-                SvyTaskTemplateVO svyTaskTemplateVO = new SvyTaskTemplateVO();
-                svyTaskTemplateVO.setId(count.getTemplateid());
-                SvyTaskTemplateVO svyTaskTemplateResultVo = svyTaskTemplateService.selectInfoByCondition(svyTaskTemplateVO);
-                if(ObjectUtils.isNotEmpty(svyTaskTemplateResultVo)){
-                    List<SvyTaskTemplateScriptVO> templateScriptVOS = svyTaskTemplateResultVo.getSvyTaskTemplateScriptVOS();
-                    if(ObjectUtils.isNotEmpty(templateScriptVOS)){
+            //闂嵎鍔犱笂绌虹櫧閫夐」
+            if(ObjectUtils.isNotEmpty(count.getTemplateid())
+                    && ObjectUtils.isNotEmpty(count.getSubtaskType())
+                    && count.getSubtaskType().equals("2")){
+                SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = new SvyTaskTemplateScriptVO();
+                svyTaskTemplateScriptVO.setId(count.getScriptid());
+                SvyTaskTemplateScriptVO svyTaskTemplateScriptResultVo = svyTaskTemplateScriptService.selectInfoByCondition(svyTaskTemplateScriptVO);
+                if(ObjectUtils.isNotEmpty(svyTaskTemplateScriptResultVo)){
+                    List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptResultVo.getSvyTaskTemplateTargetoptions();
+                    if(ObjectUtils.isNotEmpty(svyTaskTemplateTargetoptions)){
                         //濉叆绌虹櫧淇℃伅
-                        templateScriptVOS.forEach(templateScriptVO ->{
+                        svyTaskTemplateTargetoptions.forEach(targetoption ->{
                             ServiceSubtaskScriptCount emptyCount = new ServiceSubtaskScriptCount();
+                            emptyCount.setScriptid(count.getScriptid());
                             emptyCount.setScriptContent(count.getScriptContent());
                             emptyCount.setScriptType(count.getScriptType());
+                            emptyCount.setSubtaskType(count.getSubtaskType());
                             emptyCount.setCompletedQuantity(count.getCompletedQuantity());
                             emptyCount.setAllQuantity(count.getAllQuantity());
+                            emptyCount.setCompletedPercentage(count.getCompletedPercentage());
+                            emptyCount.setTemplateid(count.getTemplateid());
                             emptyCount.setChosenQuantity(0);
                             emptyCount.setChosenPercentage("0.0");
-                            itemCountMap.put(templateScriptVO.getScriptResult(),emptyCount);
+                            emptyCount.setOptionText(targetoption.getOptioncontent());
+                            itemCountMap.put(targetoption.getOptioncontent(),emptyCount);
                         });
                     }
                 }
@@ -3078,8 +3086,11 @@
                         //鏀惧叆缁熻淇℃伅
                         itemCount.setScriptContent(count.getScriptContent());
                         itemCount.setScriptType(count.getScriptType());
+                        itemCount.setSubtaskType(count.getSubtaskType());
                         itemCount.setCompletedQuantity(count.getCompletedQuantity());
                         itemCount.setAllQuantity(count.getAllQuantity());
+                        itemCount.setCompletedPercentage(count.getCompletedPercentage());
+                        itemCount.setTemplateid(count.getTemplateid());
                         //璁$畻閫夋嫨姣斾緥
                         int chosenQuantity = ObjectUtils.isNotEmpty(itemCount.getChosenQuantity())?itemCount.getChosenQuantity():0;
                         int completedQuantity = itemCount.getCompletedQuantity();
@@ -3087,7 +3098,7 @@
                             BigDecimal chosenPercentage = (new BigDecimal(chosenQuantity)).divide(new BigDecimal(completedQuantity), 2, RoundingMode.HALF_UP);
                             itemCount.setChosenPercentage(chosenPercentage.toString());
                         }
-                        itemCountMap.put(count.getOptionText(), itemCount);
+                        itemCountMap.put(itemCount.getOptionText(), itemCount);
                     }
                 }
             });
diff --git a/smartor/src/main/java/com/smartor/service/impl/SvyTaskTemplateScriptServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/SvyTaskTemplateScriptServiceImpl.java
index 1e2ef5d..b9f27b1 100644
--- a/smartor/src/main/java/com/smartor/service/impl/SvyTaskTemplateScriptServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/SvyTaskTemplateScriptServiceImpl.java
@@ -1,12 +1,22 @@
 package com.smartor.service.impl;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DtoConversionUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.smartor.domain.IvrLibaTemplateScriptVO;
 import com.smartor.domain.SvyTaskTemplateScript;
+import com.smartor.domain.SvyTaskTemplateScriptVO;
+import com.smartor.domain.SvyTaskTemplateTargetoption;
 import com.smartor.mapper.SvyTaskTemplateScriptMapper;
+import com.smartor.mapper.SvyTaskTemplateTargetoptionMapper;
 import com.smartor.service.ISvyTaskTemplateScriptService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 
 /**
@@ -20,6 +30,9 @@
 {
     @Autowired
     private SvyTaskTemplateScriptMapper svyTaskTemplateScriptMapper;
+
+    @Autowired
+    private SvyTaskTemplateTargetoptionMapper svyTaskTemplateTargetoptionMapper;
 
     /**
      * 鏌ヨ闂嵎浠诲姟妯$増闂璇濇湳搴�
@@ -94,4 +107,35 @@
     {
         return svyTaskTemplateScriptMapper.deleteSvyTaskTemplateScriptByID(ID);
     }
+
+    @Override
+    public SvyTaskTemplateScriptVO selectInfoByCondition(SvyTaskTemplateScriptVO svyTaskTemplateScriptVO){
+
+        SvyTaskTemplateTargetoption svyTaskTemplateTargetoption = new SvyTaskTemplateTargetoption();
+        svyTaskTemplateTargetoption.setScriptid(svyTaskTemplateScriptVO.getId());
+        svyTaskTemplateTargetoption.setOrgid(svyTaskTemplateScriptVO.getOrgid());
+        List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateTargetoptionMapper.selectSvyTaskTemplateTargetoptionList(svyTaskTemplateTargetoption);
+        for (SvyTaskTemplateTargetoption svyTaskTemplateTargetoption1 : svyTaskTemplateTargetoptions) {
+            ObjectMapper mapper = new ObjectMapper();
+            if (!StringUtils.isEmpty(svyTaskTemplateTargetoption1.getDynamiccruxs())) {
+                try {
+                    svyTaskTemplateTargetoption1.setDynamiccruxs(mapper.readValue(svyTaskTemplateTargetoption1.getDynamiccruxsJson(), List.class));
+                } catch (JsonProcessingException e) {
+                    e.printStackTrace();
+                }
+            }
+            if (!StringUtils.isEmpty(svyTaskTemplateTargetoption1.getNodynamiccruxs())) {
+                try {
+                    svyTaskTemplateTargetoption1.setNodynamiccruxs(mapper.readValue(svyTaskTemplateTargetoption1.getNodynamiccruxsJson(), List.class));
+                } catch (JsonProcessingException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        //鏍规嵁搴忓彿杩涜鎺掑簭
+//        Collections.sort(svyTaskTemplateTargetoptions, Comparator.comparing(SvyTaskTemplateTargetoption::getId));
+
+        svyTaskTemplateScriptVO.setSvyTaskTemplateTargetoptions(svyTaskTemplateTargetoptions);
+        return svyTaskTemplateScriptVO;
+    }
 }
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 111eee5..7915cd4 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -103,7 +103,9 @@
     <resultMap type="com.smartor.domain.ServiceSubtaskScriptCount" id="ServiceSubtaskScriptCountResult">
         <result property="scriptid" column="scriptid"/>
         <result property="templateid" column="templateid"/>
+        <result property="scriptType" column="script_type"/>
         <result property="scriptContent" column="script_content"/>
+        <result property="subtaskType" column="subtask_type"/>
         <result property="completedQuantity" column="completed_quantity"/>
         <result property="allQuantity" column="all_quantity"/>
         <result property="completedPercentage" column="completed_percentage"/>
@@ -1358,7 +1360,9 @@
         SELECT
         a.id as scriptid,
         a.templateid as templateid,
+        a.script_type,
         a.script_content,
+        b.subtask_type,
         b.completed_quantity,
         b.all_quantity,
         ROUND(b.completed_quantity/b.all_quantity,2) as completed_percentage
@@ -1372,6 +1376,7 @@
         INNER JOIN(
         SELECT
         ssd.scriptid AS scriptid,
+        ss.type as subtask_type,
         SUM(CASE WHEN IFNULL(ssd.matchedtext,ssd.asrtext) IS NOT NULL
         AND IFNULL(ssd.matchedtext,ssd.asrtext) != '' THEN 1
         ELSE 0 END) AS completed_quantity,

--
Gitblit v1.9.3