From 33e1839c6214ad72cc5a76ae254ce0bb542e9263 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期六, 10 十月 2026 09:31:11 +0800
Subject: [PATCH] 提交
---
smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java | 152 ++++++++++++++++++++++++++++++++------------------
1 files changed, 96 insertions(+), 56 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java
index d952ca2..9e07d77 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java
@@ -326,31 +326,40 @@
//2 鍐嶈幏鍙栬闂婊℃剰搴﹀垎绫讳笅鐨処vrLibaTemplateScript鐨勯泦鍚�
List<IvrLibaTemplateScript> ivrLibaTemplateScripts = ivrLibaTemplateScriptMapper.queryLibTemplateIds(mydIdList);
- //2.1 涓�娆℃�ф妸鏈璇锋眰鍏ㄩ儴妯℃澘鐨勫彂閫侀噺銆佸~鎶ラ噺鏌ュ洖鏉ワ紙鍘熸潵鏄瘡涓ā鏉块棶棰樺悇鏌ヤ袱娆★級
+ //2.1 涓�娆℃�ф妸鏈璇锋眰鍏ㄩ儴妯℃澘鐨勫彂閫侀噺銆佸洖鏀朵汉鏁版煡鍥炴潵锛堝師鏉ユ槸姣忎釜妯℃澘闂鍚勬煡涓ゆ锛�
SatisfactionStatQuery statQuery = buildSatisfactionStatQuery(patSatisfactionReqVO, "1",
ivrLibaTemplateScripts.stream().map(IvrLibaTemplateScript::getTemplateid).collect(Collectors.toList()));
Map<Long, Long> sendCountMap = mapSatisfactionSendCount(statQuery);
SatisfactionFillStat fillStat = querySatisfactionFillStat(statQuery);
+ Map<Long, Long> fillPersonCountMap = mapSatisfactionFillPersonCount(statQuery);
//3 鎸塻criptAssortname鍒嗙粍,骞惰幏鍙栨瘡涓泦鍚堣繘琛岄亶鍘嗭紝璁$畻姣忎釜鍒嗙被鐨勬�讳汉鏁板拰濉姤浜烘暟
Map<String, List<IvrLibaTemplateScript>> scriptGroupByAssortName = ivrLibaTemplateScripts.stream().filter(item -> item.getScriptAssortname() != null).collect(Collectors.groupingBy(IvrLibaTemplateScript::getScriptAssortname));
if (scriptGroupByAssortName != null && !scriptGroupByAssortName.isEmpty()) {
for (String assortNameKey : scriptGroupByAssortName.keySet()) {
- //璁板綍鎬讳汉鏁�
- Double subidAll = 0.0;
- //璁板綍鎬荤殑濉姤浜烘暟
- Double fillCountAll = 0.0;
- //鑾峰彇璇ュ垎绫荤殑濉姤鎬绘暟閲�
+ // 璇ュ垎绫绘秹鍙婄殑鍘婚噸妯℃澘锛氬彂閫佷汉鏁�/鍥炴敹浜烘暟閮芥寜妯℃澘缁熻锛�
+ // 鎸夐鐩惊鐜疮鍔犱細鎶婂悓涓�涓ā鏉跨殑閲忛噸澶嶈鎴愩�岄閲忋��
+ Set<Long> categoryTemplateIds = new LinkedHashSet<>();
+ //鑾峰彇璇ュ垎绫荤殑濉姤鎬绘暟閲忥紙鍙敤浜庣畻骞冲潎鍒嗭紝鎸夐鐩仛鍚堢殑琛屾暟锛�
List<ScoreCount> allFillCountList = new ArrayList<>();
List<IvrLibaTemplateScript> ivrLibaTemplateScriptList = scriptGroupByAssortName.get(assortNameKey);
for (IvrLibaTemplateScript ivrLibaTemplateScript : ivrLibaTemplateScriptList) {
- //閫氳繃妯℃澘id鍙栭棶棰樺彂閫佹�婚噺锛堝師鏉ユ槸鎶婂叏閮� sub_id 鏌ュ洖 Java 鍐嶅彇 size锛�
- subidAll += sendCountMap.getOrDefault(ivrLibaTemplateScript.getTemplateid(), 0L);
- //鑾峰彇濉姤鏁伴噺锛堝師鏉ユ槸鎶婃槑缁嗚鍏ㄩ儴鏌ュ洖 Java 鍐嶅彇 size锛�
- List<ScoreCount> fillCount = fillStat.get(ivrLibaTemplateScript.getTemplateid(), ivrLibaTemplateScript.getScriptContent());
+ Long templateId = ivrLibaTemplateScript.getTemplateid();
+ if (templateId != null) {
+ categoryTemplateIds.add(templateId);
+ }
+ //鑾峰彇濉姤鍒嗗�煎垎甯冿紙鍙敤浜庡钩鍧囧垎锛�
+ List<ScoreCount> fillCount = fillStat.get(templateId, ivrLibaTemplateScript.getScriptContent());
if (CollectionUtils.isNotEmpty(fillCount)) allFillCountList.addAll(fillCount);
- fillCountAll += countFillRows(fillCount);
+ }
+
+ //璁板綍鍙戦�佹�讳汉鏁般�佸洖鏀舵�讳汉鏁�
+ Double subidAll = 0.0;
+ Double fillCountAll = 0.0;
+ for (Long templateId : categoryTemplateIds) {
+ subidAll += sendCountMap.getOrDefault(templateId, 0L);
+ fillCountAll += fillPersonCountMap.getOrDefault(templateId, 0L);
}
// 杩欓噷鍏堣褰曚竴涓嬫瘡涓垎绫荤殑鎬讳汉鏁板拰濉姤浜烘暟
@@ -375,31 +384,40 @@
//2 鍐嶈幏鍙栬闂婊℃剰搴﹀垎绫讳笅鐨処vrLibaTemplateScript鐨勯泦鍚�
List<SvyLibTemplateScript> svyLibTemplateScripts = svyLibTemplateScriptMapper.querySvyLibTemplateIds(mydIdList);
- //2.1 涓�娆℃�ф妸鏈璇锋眰鍏ㄩ儴妯℃澘鐨勫彂閫侀噺銆佸~鎶ラ噺鏌ュ洖鏉ワ紙鍘熸潵鏄瘡涓ā鏉块棶棰樺悇鏌ヤ袱娆★級
+ //2.1 涓�娆℃�ф妸鏈璇锋眰鍏ㄩ儴妯℃澘鐨勫彂閫侀噺銆佸洖鏀朵汉鏁版煡鍥炴潵锛堝師鏉ユ槸姣忎釜妯℃澘闂鍚勬煡涓ゆ锛�
SatisfactionStatQuery statQuery = buildSatisfactionStatQuery(patSatisfactionReqVO, "2",
svyLibTemplateScripts.stream().map(SvyLibTemplateScript::getSvyid).collect(Collectors.toList()));
Map<Long, Long> sendCountMap = mapSatisfactionSendCount(statQuery);
SatisfactionFillStat fillStat = querySatisfactionFillStat(statQuery);
+ Map<Long, Long> fillPersonCountMap = mapSatisfactionFillPersonCount(statQuery);
//3 鎸塻criptAssortname鍒嗙粍,骞惰幏鍙栨瘡涓泦鍚堣繘琛岄亶鍘嗭紝璁$畻姣忎釜鍒嗙被鐨勬�讳汉鏁板拰濉姤浜烘暟
Map<String, List<SvyLibTemplateScript>> scriptGroupByatCegoryName = svyLibTemplateScripts.stream().filter(item -> item.getCategoryName() != null).collect(Collectors.groupingBy(SvyLibTemplateScript::getCategoryName));
if (scriptGroupByatCegoryName != null && !scriptGroupByatCegoryName.isEmpty()) {
for (String categoryNameKey : scriptGroupByatCegoryName.keySet()) {
- //璁板綍鎬讳汉鏁�
- Double subidAll = 0.0;
- //璁板綍鎬荤殑濉姤浜烘暟
- Double fillCountAll = 0.0;
- //鑾峰彇璇ュ垎绫荤殑濉姤鎬绘暟閲�
+ // 璇ュ垎绫绘秹鍙婄殑鍘婚噸妯℃澘锛氬彂閫佷汉鏁�/鍥炴敹浜烘暟閮芥寜妯℃澘缁熻锛�
+ // 鎸夐鐩惊鐜疮鍔犱細鎶婂悓涓�涓ā鏉跨殑閲忛噸澶嶈鎴愩�岄閲忋��
+ Set<Long> categoryTemplateIds = new LinkedHashSet<>();
+ //鑾峰彇璇ュ垎绫荤殑濉姤鎬绘暟閲忥紙鍙敤浜庣畻骞冲潎鍒嗭紝鎸夐鐩仛鍚堢殑琛屾暟锛�
List<ScoreCount> allFillCountList = new ArrayList<>();
List<SvyLibTemplateScript> svyLibTemplateScriptList = scriptGroupByatCegoryName.get(categoryNameKey);
for (SvyLibTemplateScript svyLibTemplateScript : svyLibTemplateScriptList) {
- //閫氳繃妯℃澘id鍙栭棶棰樺彂閫佹�婚噺锛堝師鏉ユ槸鎶婂叏閮� sub_id 鏌ュ洖 Java 鍐嶅彇 size锛�
- subidAll += sendCountMap.getOrDefault(svyLibTemplateScript.getSvyid(), 0L);
- //鑾峰彇濉姤鏁伴噺锛堝師鏉ユ槸鎶婃槑缁嗚鍏ㄩ儴鏌ュ洖 Java 鍐嶅彇 size锛�
- List<ScoreCount> fillCount = fillStat.get(svyLibTemplateScript.getSvyid(), svyLibTemplateScript.getScriptContent());
+ Long templateId = svyLibTemplateScript.getSvyid();
+ if (templateId != null) {
+ categoryTemplateIds.add(templateId);
+ }
+ //鑾峰彇濉姤鍒嗗�煎垎甯冿紙鍙敤浜庡钩鍧囧垎锛�
+ List<ScoreCount> fillCount = fillStat.get(templateId, svyLibTemplateScript.getScriptContent());
if (CollectionUtils.isNotEmpty(fillCount)) allFillCountList.addAll(fillCount);
- fillCountAll += countFillRows(fillCount);
+ }
+
+ //璁板綍鍙戦�佹�讳汉鏁般�佸洖鏀舵�讳汉鏁�
+ Double subidAll = 0.0;
+ Double fillCountAll = 0.0;
+ for (Long templateId : categoryTemplateIds) {
+ subidAll += sendCountMap.getOrDefault(templateId, 0L);
+ fillCountAll += fillPersonCountMap.getOrDefault(templateId, 0L);
}
@@ -453,28 +471,36 @@
Map<String, List<IvrLibaTemplateScript>> groupByDimension = dimensionScripts.stream().collect(Collectors.groupingBy(IvrLibaTemplateScript::getDimension));
if (groupByDimension != null && !groupByDimension.isEmpty()) {
- //3.1 涓�娆℃�ф妸鏈璇锋眰鍏ㄩ儴妯℃澘鐨勫彂閫侀噺銆佸~鎶ラ噺鏌ュ洖鏉ワ紙鍘熸潵鏄瘡涓ā鏉块棶棰樺悇鏌ヤ袱娆★級
+ //3.1 涓�娆℃�ф妸鏈璇锋眰鍏ㄩ儴妯℃澘鐨勫彂閫侀噺銆佸洖鏀朵汉鏁版煡鍥炴潵锛堝師鏉ユ槸姣忎釜妯℃澘闂鍚勬煡涓ゆ锛�
SatisfactionStatQuery statQuery = buildSatisfactionStatQuery(patSatisfactionReqVO, "1",
dimensionScripts.stream().map(IvrLibaTemplateScript::getTemplateid).collect(Collectors.toList()));
Map<Long, Long> sendCountMap = mapSatisfactionSendCount(statQuery);
SatisfactionFillStat fillStat = querySatisfactionFillStat(statQuery);
+ Map<Long, Long> fillPersonCountMap = mapSatisfactionFillPersonCount(statQuery);
for (String dimension : groupByDimension.keySet()) {
- //璁板綍鎬讳汉鏁�
- Double subidAll = 0.0;
- //璁板綍鎬荤殑濉姤浜烘暟
- Double fillCountAll = 0.0;
- //鑾峰彇璇ョ淮搴︾殑濉姤鎬绘暟閲�
+ // 璇ョ淮搴︽秹鍙婄殑鍘婚噸妯℃澘锛氬彂閫佷汉鏁�/鍥炴敹浜烘暟閮芥寜妯℃澘缁熻锛屾寜棰樼洰绱姞浼氬彉鎴愰閲�
+ Set<Long> dimensionTemplateIds = new LinkedHashSet<>();
+ //鑾峰彇璇ョ淮搴︾殑濉姤鍒嗗�煎垎甯冿紙鍙敤浜庣畻骞冲潎鍒嗭級
List<ScoreCount> allFillCountList = new ArrayList<>();
List<IvrLibaTemplateScript> ivrLibaTemplateScriptList = groupByDimension.get(dimension);
for (IvrLibaTemplateScript ivrLibaTemplateScript : ivrLibaTemplateScriptList) {
- //閫氳繃妯℃澘id鍙栭棶棰樺彂閫佹�婚噺锛堝師鏉ユ槸鎶婂叏閮� sub_id 鏌ュ洖 Java 鍐嶅彇 size锛�
- subidAll += sendCountMap.getOrDefault(ivrLibaTemplateScript.getTemplateid(), 0L);
- //鑾峰彇濉姤鏁伴噺锛堝師鏉ユ槸鎶婃槑缁嗚鍏ㄩ儴鏌ュ洖 Java 鍐嶅彇 size锛�
- List<ScoreCount> fillCount = fillStat.get(ivrLibaTemplateScript.getTemplateid(), ivrLibaTemplateScript.getScriptContent());
+ Long templateId = ivrLibaTemplateScript.getTemplateid();
+ if (templateId != null) {
+ dimensionTemplateIds.add(templateId);
+ }
+ //鑾峰彇濉姤鍒嗗�煎垎甯冿紙鍙敤浜庡钩鍧囧垎锛�
+ List<ScoreCount> fillCount = fillStat.get(templateId, ivrLibaTemplateScript.getScriptContent());
if (CollectionUtils.isNotEmpty(fillCount)) allFillCountList.addAll(fillCount);
- fillCountAll += countFillRows(fillCount);
+ }
+
+ //璁板綍鍙戦�佹�讳汉鏁般�佸洖鏀舵�讳汉鏁�
+ Double subidAll = 0.0;
+ Double fillCountAll = 0.0;
+ for (Long templateId : dimensionTemplateIds) {
+ subidAll += sendCountMap.getOrDefault(templateId, 0L);
+ fillCountAll += fillPersonCountMap.getOrDefault(templateId, 0L);
}
// 杩欓噷鍏堣褰曚竴涓嬫瘡涓垎绫荤殑鎬讳汉鏁板拰濉姤浜烘暟
@@ -502,28 +528,36 @@
List<SvyLibTemplateScript> dimensionScripts = svyLibTemplateScripts.stream().filter(item -> item.getDimension() != null).collect(Collectors.toList());
Map<String, List<SvyLibTemplateScript>> groupByDimension = dimensionScripts.stream().collect(Collectors.groupingBy(SvyLibTemplateScript::getDimension));
if (groupByDimension != null && !groupByDimension.isEmpty()) {
- //3.1 涓�娆℃�ф妸鏈璇锋眰鍏ㄩ儴妯℃澘鐨勫彂閫侀噺銆佸~鎶ラ噺鏌ュ洖鏉ワ紙鍘熸潵鏄瘡涓ā鏉块棶棰樺悇鏌ヤ袱娆★級
+ //3.1 涓�娆℃�ф妸鏈璇锋眰鍏ㄩ儴妯℃澘鐨勫彂閫侀噺銆佸洖鏀朵汉鏁版煡鍥炴潵锛堝師鏉ユ槸姣忎釜妯℃澘闂鍚勬煡涓ゆ锛�
SatisfactionStatQuery statQuery = buildSatisfactionStatQuery(patSatisfactionReqVO, "2",
dimensionScripts.stream().map(SvyLibTemplateScript::getSvyid).collect(Collectors.toList()));
Map<Long, Long> sendCountMap = mapSatisfactionSendCount(statQuery);
SatisfactionFillStat fillStat = querySatisfactionFillStat(statQuery);
+ Map<Long, Long> fillPersonCountMap = mapSatisfactionFillPersonCount(statQuery);
for (String dimension : groupByDimension.keySet()) {
- //璁板綍鎬讳汉鏁�
- Double subidAll = 0.0;
- //璁板綍鎬荤殑濉姤浜烘暟
- Double fillCountAll = 0.0;
- //鑾峰彇璇ュ垎绫荤殑濉姤鎬绘暟閲�
+ // 璇ョ淮搴︽秹鍙婄殑鍘婚噸妯℃澘锛氬彂閫佷汉鏁�/鍥炴敹浜烘暟閮芥寜妯℃澘缁熻锛屾寜棰樼洰绱姞浼氬彉鎴愰閲�
+ Set<Long> dimensionTemplateIds = new LinkedHashSet<>();
+ //鑾峰彇璇ュ垎绫荤殑濉姤鍒嗗�煎垎甯冿紙鍙敤浜庣畻骞冲潎鍒嗭級
List<ScoreCount> allFillCountList = new ArrayList<>();
List<SvyLibTemplateScript> svyLibTemplateScriptList = groupByDimension.get(dimension);
for (SvyLibTemplateScript svyLibTemplateScript : svyLibTemplateScriptList) {
- //閫氳繃妯℃澘id鍙栭棶棰樺彂閫佹�婚噺锛堝師鏉ユ槸鎶婂叏閮� sub_id 鏌ュ洖 Java 鍐嶅彇 size锛�
- subidAll += sendCountMap.getOrDefault(svyLibTemplateScript.getSvyid(), 0L);
- //鑾峰彇濉姤鏁伴噺锛堝師鏉ユ槸鎶婃槑缁嗚鍏ㄩ儴鏌ュ洖 Java 鍐嶅彇 size锛�
- List<ScoreCount> fillCount = fillStat.get(svyLibTemplateScript.getSvyid(), svyLibTemplateScript.getScriptContent());
+ Long templateId = svyLibTemplateScript.getSvyid();
+ if (templateId != null) {
+ dimensionTemplateIds.add(templateId);
+ }
+ //鑾峰彇濉姤鍒嗗�煎垎甯冿紙鍙敤浜庡钩鍧囧垎锛�
+ List<ScoreCount> fillCount = fillStat.get(templateId, svyLibTemplateScript.getScriptContent());
if (CollectionUtils.isNotEmpty(fillCount)) allFillCountList.addAll(fillCount);
- fillCountAll += countFillRows(fillCount);
+ }
+
+ //璁板綍鍙戦�佹�讳汉鏁般�佸洖鏀舵�讳汉鏁�
+ Double subidAll = 0.0;
+ Double fillCountAll = 0.0;
+ for (Long templateId : dimensionTemplateIds) {
+ subidAll += sendCountMap.getOrDefault(templateId, 0L);
+ fillCountAll += fillPersonCountMap.getOrDefault(templateId, 0L);
}
@@ -644,6 +678,24 @@
}
/**
+ * 涓�娆℃煡鍑哄叏閮ㄦā鏉跨殑銆屽洖鏀朵汉鏁般�嶏紙鎸夋ā鏉垮幓閲嶏紝鍚屼竴涓汉绛斿閬撻鍙畻涓�浜猴級
+ *
+ * @return key=妯℃澘id锛寁alue=鍥炴敹浜烘暟
+ */
+ private Map<Long, Long> mapSatisfactionFillPersonCount(SatisfactionStatQuery statQuery) {
+ Map<Long, Long> fillPersonCountMap = new HashMap<>();
+ if (statQuery == null || CollectionUtils.isEmpty(statQuery.getLibTemplateIds())) return fillPersonCountMap;
+ List<Map<String, Object>> rows = serviceSubtaskDetailMapper.selectSatisfactionFillPersonCount(statQuery);
+ if (CollectionUtils.isEmpty(rows)) return fillPersonCountMap;
+ for (Map<String, Object> row : rows) {
+ Long templateId = toLong(row.get("libtemplateid"));
+ if (templateId == null) continue;
+ fillPersonCountMap.put(templateId, toLong(row.get("cnt"), 0L));
+ }
+ return fillPersonCountMap;
+ }
+
+ /**
* 涓�娆℃煡鍑哄叏閮ㄦā鏉跨殑濉姤閲忥紙鎸� 妯℃澘+闂+鍒嗗�� 鍒嗙粍锛�
*/
private SatisfactionFillStat querySatisfactionFillStat(SatisfactionStatQuery statQuery) {
@@ -662,18 +714,6 @@
fillStat.add(templateId, questiontextValue == null ? null : String.valueOf(questiontextValue), scoreCount);
}
return fillStat;
- }
-
- /**
- * 鍙栧~鎶ユ槑缁嗚鏁帮紙鍘� fillCount.size()锛�
- */
- private long countFillRows(List<ScoreCount> fillCount) {
- if (CollectionUtils.isEmpty(fillCount)) return 0L;
- long rows = 0L;
- for (ScoreCount scoreCount : fillCount) {
- rows += scoreCount.getCount();
- }
- return rows;
}
/**
--
Gitblit v1.9.3