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