From 569e8be78cc357147a403daa1af8dfe6dd7d5308 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 18 八月 2026 18:22:10 +0800
Subject: [PATCH] 1.处理药品宣教的问题 2.处理南华满意度的功能 3.处理随访导出的问题 4.处理南华短信的问题

---
 smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java |   74 ++++++++++++++++++++++++++-----------
 1 files changed, 52 insertions(+), 22 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 f1802b9..8fd54d1 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatSatisfactionServiceImpl.java
@@ -220,9 +220,9 @@
                 patSatisfactionDetailEntity.setScriptContent(ivrLibaTemplateScript.getScriptContent());
                 patSatisfactionDetailEntity.setAnswerPerson(CollectionUtils.isEmpty(fillCount) ? 0 : fillCount.size());
                 patSatisfactionDetailEntity.setNoAnswerPerson(CollectionUtils.isNotEmpty(fillCount) && CollectionUtils.isNotEmpty(subids) ? (subids.size() - fillCount.size()) : CollectionUtils.isNotEmpty(subids) ? subids.size() : 0);
-                patSatisfactionDetailEntity.setAverageScore(averageScore(fillCount));
-                patSatisfactionDetailEntity.setMaxScore(maxScore(ivrLibaTemplateTargetoptions));
-                patSatisfactionDetailEntity.setMinScore(minScore(ivrLibaTemplateTargetoptions));
+                patSatisfactionDetailEntity.setAverageScore(String.valueOf(averageScore(fillCount)));
+                patSatisfactionDetailEntity.setMaxScore(String.valueOf(maxScore(ivrLibaTemplateTargetoptions)));
+                patSatisfactionDetailEntity.setMinScore(String.valueOf(minScore(ivrLibaTemplateTargetoptions)));
                 patSatisfactionDetailEntity.setAnswerRate(CollectionUtils.isEmpty(subids) ? 0 : CollectionUtils.isEmpty(fillCount) ? 0 : fillCount.size() * 1.0 / subids.size());
                 patSatisfactionDetailEntity.setMatchedtextStats(matchedtextStats);
                 patSatisfactionDetailEntities.add(patSatisfactionDetailEntity);
@@ -292,13 +292,23 @@
                 patSatisfactionDetailEntity.setScriptContent(svyLibTemplateScript.getScriptContent());
                 patSatisfactionDetailEntity.setAnswerPerson(CollectionUtils.isEmpty(fillCount) ? 0 : fillCount.size());
                 patSatisfactionDetailEntity.setNoAnswerPerson(CollectionUtils.isNotEmpty(fillCount) && CollectionUtils.isNotEmpty(subids) ? (subids.size() - fillCount.size()) : CollectionUtils.isNotEmpty(subids) ? subids.size() : 0);
-                patSatisfactionDetailEntity.setAverageScore(averageScore(fillCount));
+                patSatisfactionDetailEntity.setAverageScore(String.valueOf(averageScore(fillCount)));
 
-                OptionalDouble maxOpt = svyLibTemplateTargetoptions.stream().filter(dto -> dto.getScore() != null).mapToDouble(dto -> dto.getScore().doubleValue()).max();
-                patSatisfactionDetailEntity.setMaxScore(maxOpt.isPresent() ? new BigDecimal(maxOpt.getAsDouble()).setScale(1, RoundingMode.HALF_UP).doubleValue() : 0.0);
+                Double maxScore = svyLibTemplateTargetoptions.stream()
+                        .map(dto -> dto.getScore())
+                        .filter(scoreStr -> scoreStr != null && !scoreStr.isEmpty())
+                        .mapToDouble(Double::parseDouble)
+                        .max()
+                        .orElse(0.0);
+                patSatisfactionDetailEntity.setMaxScore(String.valueOf(maxScore));
 
-                OptionalDouble minOpt = svyLibTemplateTargetoptions.stream().filter(dto -> dto.getScore() != null).mapToDouble(dto -> dto.getScore().doubleValue()).min();
-                patSatisfactionDetailEntity.setMinScore(minOpt.isPresent() ? new BigDecimal(minOpt.getAsDouble()).setScale(1, RoundingMode.HALF_UP).doubleValue() : 0.0);
+                Double minScore = svyLibTemplateTargetoptions.stream()
+                        .map(dto -> dto.getScore())
+                        .filter(scoreStr -> scoreStr != null && !scoreStr.isEmpty())
+                        .mapToDouble(Double::parseDouble)
+                        .min()
+                        .orElse(0.0);
+                patSatisfactionDetailEntity.setMinScore(String.valueOf(minScore));
 
                 patSatisfactionDetailEntity.setAnswerRate(CollectionUtils.isEmpty(subids) ? 0 : CollectionUtils.isEmpty(fillCount) ? 0 : fillCount.size() * 1.0 / subids.size());
                 patSatisfactionDetailEntity.setMatchedtextStats(matchedtextStats);
@@ -397,9 +407,9 @@
                     patSatisfactionDetailEntity.setScriptContent(ivrLibaTemplateScript.getScriptContent());
                     patSatisfactionDetailEntity.setAnswerPerson(CollectionUtils.isEmpty(fillCount) ? 0 : fillCount.size());
                     patSatisfactionDetailEntity.setNoAnswerPerson(CollectionUtils.isNotEmpty(fillCount) && CollectionUtils.isNotEmpty(subids) ? (subids.size() - fillCount.size()) : CollectionUtils.isNotEmpty(subids) ? subids.size() : 0);
-                    patSatisfactionDetailEntity.setAverageScore(averageScore(fillCount));
-                    patSatisfactionDetailEntity.setMaxScore(maxScore(ivrLibaTemplateTargetoptions));
-                    patSatisfactionDetailEntity.setMinScore(minScore(ivrLibaTemplateTargetoptions));
+                    patSatisfactionDetailEntity.setAverageScore(String.valueOf(averageScore(fillCount)));
+                    patSatisfactionDetailEntity.setMaxScore(String.valueOf(maxScore(ivrLibaTemplateTargetoptions)));
+                    patSatisfactionDetailEntity.setMinScore(String.valueOf(minScore(ivrLibaTemplateTargetoptions)));
                     patSatisfactionDetailEntity.setAnswerRate(CollectionUtils.isEmpty(subids) ? 0 : CollectionUtils.isEmpty(fillCount) ? 0 : fillCount.size() * 1.0 / subids.size());
                     patSatisfactionDetailEntity.setMatchedtextStats(matchedtextStats);
                     patSatisfactionDetailEntities.add(patSatisfactionDetailEntity);
@@ -467,13 +477,23 @@
                     patSatisfactionDetailEntity.setScriptContent(svyLibTemplateScript.getScriptContent());
                     patSatisfactionDetailEntity.setAnswerPerson(CollectionUtils.isEmpty(fillCount) ? 0 : fillCount.size());
                     patSatisfactionDetailEntity.setNoAnswerPerson(CollectionUtils.isNotEmpty(fillCount) && CollectionUtils.isNotEmpty(subids) ? (subids.size() - fillCount.size()) : CollectionUtils.isNotEmpty(subids) ? subids.size() : 0);
-                    patSatisfactionDetailEntity.setAverageScore(averageScore(fillCount));
-
-                    OptionalDouble maxOpt = svyLibTemplateTargetoptions.stream().filter(dto -> dto.getScore() != null).mapToDouble(dto -> dto.getScore().doubleValue()).max();
-                    patSatisfactionDetailEntity.setMaxScore(maxOpt.isPresent() ? new BigDecimal(maxOpt.getAsDouble()).setScale(1, RoundingMode.HALF_UP).doubleValue() : 0.0);
-
-                    OptionalDouble minOpt = svyLibTemplateTargetoptions.stream().filter(dto -> dto.getScore() != null).mapToDouble(dto -> dto.getScore().doubleValue()).min();
-                    patSatisfactionDetailEntity.setMinScore(minOpt.isPresent() ? new BigDecimal(minOpt.getAsDouble()).setScale(1, RoundingMode.HALF_UP).doubleValue() : 0.0);
+                    patSatisfactionDetailEntity.setAverageScore(String.valueOf(averageScore(fillCount)));
+                    
+                    Double maxScore = svyLibTemplateTargetoptions.stream()
+                            .map(dto -> dto.getScore())
+                            .filter(scoreStr -> scoreStr != null && !scoreStr.isEmpty())
+                            .mapToDouble(Double::parseDouble)
+                            .max()
+                            .orElse(0.0);
+                    patSatisfactionDetailEntity.setMaxScore(String.valueOf(maxScore));
+                    
+                    Double minScore = svyLibTemplateTargetoptions.stream()
+                            .map(dto -> dto.getScore())
+                            .filter(scoreStr -> scoreStr != null && !scoreStr.isEmpty())
+                            .mapToDouble(Double::parseDouble)
+                            .min()
+                            .orElse(0.0);
+                    patSatisfactionDetailEntity.setMinScore(String.valueOf(minScore));
 
                     patSatisfactionDetailEntity.setAnswerRate(CollectionUtils.isEmpty(subids) ? 0 : CollectionUtils.isEmpty(fillCount) ? 0 : fillCount.size() * 1.0 / subids.size());
                     patSatisfactionDetailEntity.setMatchedtextStats(matchedtextStats);
@@ -766,8 +786,13 @@
      */
     private Double maxScore(List<IvrLibaTemplateTargetoption> options) {
         if (CollectionUtils.isEmpty(options)) return 0.0;
-        OptionalDouble maxOpt = options.stream().filter(dto -> dto.getScore() != null).mapToDouble(dto -> dto.getScore().doubleValue()).max();
-        return maxOpt.isPresent() ? new BigDecimal(maxOpt.getAsDouble()).setScale(1, RoundingMode.HALF_UP).doubleValue() : 0.0;
+        Double maxScore = options.stream()
+                .map(IvrLibaTemplateTargetoption::getScore)
+                .filter(scoreStr -> scoreStr != null && !scoreStr.isEmpty())
+                .mapToDouble(Double::parseDouble)
+                .max()
+                .orElse(0.0);
+        return maxScore;
     }
 
     /**
@@ -778,8 +803,13 @@
      */
     private Double minScore(List<IvrLibaTemplateTargetoption> options) {
         if (CollectionUtils.isEmpty(options)) return 0.0;
-        OptionalDouble minOpt = options.stream().filter(dto -> dto.getScore() != null).mapToDouble(dto -> dto.getScore().doubleValue()).min();
-        return minOpt.isPresent() ? new BigDecimal(minOpt.getAsDouble()).setScale(1, RoundingMode.HALF_UP).doubleValue() : 0.0;
+        Double minScore = options.stream()
+                .map(IvrLibaTemplateTargetoption::getScore)
+                .filter(scoreStr -> scoreStr != null && !scoreStr.isEmpty())
+                .mapToDouble(Double::parseDouble)
+                .min()
+                .orElse(0.0);
+        return minScore;
     }
 
     /**

--
Gitblit v1.9.3