From a44fd7aa13448bf9a6f2a35f01c3b5de670a1e22 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 21 九月 2026 16:27:50 +0800
Subject: [PATCH] 1.省立同德门诊满意度综合得分统计

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java |   95 +++++++++++++++++++++++++++++++++++------------
 1 files changed, 71 insertions(+), 24 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java
index 6204bdb..85ceebe 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java
@@ -1,5 +1,6 @@
 package com.ruoyi.web.controller.smartor;
 
+import com.ruoyi.common.annotation.AddOrgId;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -9,11 +10,12 @@
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.service.ISysConfigService;
-import com.smartor.domain.*;
 import com.smartor.domain.DTO.QuestionResultDTO;
-import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
+import com.smartor.domain.*;
+import com.smartor.domain.VO.MydTrendReqVO;
+import com.smartor.domain.VO.MzMydScoreRankVO;
 import com.smartor.domain.VO.QuestionCountKsOrBqVO;
-import com.smartor.domain.VO.QuestionResultVO;
+import com.smartor.domain.VO.SltdMydTotalVO;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.service.IServiceSubtaskDetailService;
 import com.smartor.service.IServiceSubtaskService;
@@ -23,6 +25,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -204,32 +207,56 @@
      * 鏌ヨ鎮h�呴殢璁夸俊鎭�
      */
     @ApiOperation("鐪佺珛鍚屽痉婊℃剰搴︽暟鎹粺璁�")
-    @PostMapping("/sltaMydTotalByScore")
-    public Map<String, Object> sltaMydTotal(@RequestBody QuestionResultVO questionResultVO) {
+    @PostMapping("/sltdMydTotalByScore")
+    public Map<String, Object> sltdMydTotalByScore(@RequestBody SltdMydTotalVO sltdMydTotalVO) {
         List<ServiceSubtaskRes> serviceSubtaskResList = null;
-        ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
-        serviceSubtaskEntity.setServiceType(questionResultVO.getServiceType());
-        serviceSubtaskEntity.setEndOutHospTime(questionResultVO.getEndOutHospTime());
-        serviceSubtaskEntity.setStartOutHospTime(questionResultVO.getStartOutHospTime());
-        serviceSubtaskEntity.setDeptOrDistrict(questionResultVO.getDeptOrDistrict());
-        serviceSubtaskEntity.setLeavehospitaldistrictcodes(questionResultVO.getLeavehospitaldistrictcodes());
-        if (serviceSubtaskEntity != null) {
-            List<ServiceSubtask> serviceSubtasks = serviceSubtaskService.getServiceSubtasks(serviceSubtaskEntity);
-            serviceSubtaskResList = DtoConversionUtils.sourceToTarget(serviceSubtasks, ServiceSubtaskRes.class);
+        if (CollectionUtils.isNotEmpty(sltdMydTotalVO.getServiceTypeList())) {
+            //serviceType鍙兘浼氬嚭鐜板涓紝涓嶆兂澶氬啓鏂规硶浜嗭紝涓�涓竴涓煡璇㈠惂
+            for (String st : sltdMydTotalVO.getServiceTypeList()) {
+                ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
+                serviceSubtaskEntity.setServiceType(st);
+                serviceSubtaskEntity.setEndOutHospTime(sltdMydTotalVO.getEndOutHospTime());
+                serviceSubtaskEntity.setStartOutHospTime(sltdMydTotalVO.getStartOutHospTime());
+                serviceSubtaskEntity.setDeptOrDistrict(sltdMydTotalVO.getDeptOrDistrict());
+                serviceSubtaskEntity.setLeavehospitaldistrictcodes(sltdMydTotalVO.getLeavehospitaldistrictcodes());
+                serviceSubtaskEntity.setLeaveldeptcodes(sltdMydTotalVO.getLeaveldeptcodes());
+                if (serviceSubtaskEntity != null) {
+                    List<ServiceSubtask> serviceSubtasks = serviceSubtaskService.getServiceSubtasks(serviceSubtaskEntity);
+                    List<ServiceSubtaskRes> serviceSubtaskRes = DtoConversionUtils.sourceToTarget(serviceSubtasks, ServiceSubtaskRes.class);
+                    if (CollectionUtils.isNotEmpty(serviceSubtaskResList)) {
+                        serviceSubtaskResList.addAll(serviceSubtaskRes);
+                    } else {
+                        if (CollectionUtils.isEmpty(serviceSubtaskResList)) serviceSubtaskResList = serviceSubtaskRes;
+                    }
+                }
+            }
         }
-        List<ServiceSubtaskDetailRatioExport> detailList = serviceSubtaskService.getDetailRatio(questionResultVO, serviceSubtaskResList);
-
         // 鎸� questiontext 鍒嗙粍鍚庤浆鎹负 QuestionResultVO
         List<QuestionResultDTO> result = new ArrayList<>();
-        if (!detailList.isEmpty()) {
-            Map<String, List<ServiceSubtaskDetailRatioExport>> groupedMap = detailList.stream().collect(Collectors.groupingBy(ServiceSubtaskDetailRatioExport::getQuestiontext));
+        if (CollectionUtils.isNotEmpty(serviceSubtaskResList)) {
+            List<ServiceSubtaskDetailRatioExport> detailList = serviceSubtaskService.getDetailRatio(sltdMydTotalVO, serviceSubtaskResList);
 
-            groupedMap.forEach((questionText, exportList) -> {
-                QuestionResultDTO questionResultDTO = new QuestionResultDTO();
-                questionResultDTO.setQeustionText(questionText);
-                questionResultDTO.setSubtaskDetailRatioExportList(exportList);
-                result.add(questionResultDTO);
-            });
+            if (CollectionUtils.isNotEmpty(detailList)) {
+                Map<String, List<ServiceSubtaskDetailRatioExport>> groupedMap = detailList.stream().collect(Collectors.groupingBy(ServiceSubtaskDetailRatioExport::getQuestiontext));
+
+                groupedMap.forEach((questionText, exportList) -> {
+                    QuestionResultDTO questionResultDTO = new QuestionResultDTO();
+                    questionResultDTO.setQeustionText(questionText);
+                    questionResultDTO.setSubtaskDetailRatioExportList(exportList);
+                    BigDecimal allCount = new BigDecimal("0");
+                    BigDecimal allScore = new BigDecimal("0.00");
+
+                    for (ServiceSubtaskDetailRatioExport ssdre : exportList) {
+                        if (StringUtils.isNotEmpty(ssdre.getCount()))
+                            allCount.add(BigDecimal.valueOf(Long.valueOf(ssdre.getCount())));
+                        allScore.add(BigDecimal.valueOf(Double.valueOf(ssdre.getScore())));
+                    }
+
+                    if (allCount.compareTo(BigDecimal.ZERO) > 0)
+                        questionResultDTO.setAvgScore(allScore.divide(allCount, 2).toString());
+                    result.add(questionResultDTO);
+                });
+            }
         }
 
         return success(result);
@@ -240,4 +267,24 @@
     public Map<String, Object> statQuestionOptionByKsOrBq(@RequestBody QuestionCountKsOrBqVO questionResultVO) {
         return success(serviceSubtaskService.statQuestionOptionByKsOrBq(questionResultVO));
     }
+
+    @ApiOperation("鐪佺珛鍚屽痉鎮h�呮弧鎰忓害瓒嬪娍")
+    @PostMapping("/mydTrend")
+    public Map<String, Object> mydTrend(@RequestBody MydTrendReqVO mydTrendReqVO) {
+        return success(serviceSubtaskService.mydTrend(mydTrendReqVO));
+    }
+
+    @ApiOperation("鐪佺珛鍚屽痉鎮h�呮弧鎰忓害缁存姢")
+    @PostMapping("/sltdMydTotalByDimension")
+    public Map<String, Object> sltdMydTotalByDimension(@RequestBody MydTrendReqVO mydTrendReqVO) {
+        return success(serviceSubtaskService.sltdMydTotalByDimension(mydTrendReqVO));
+    }
+
+    @ApiOperation("闂ㄨ瘖婊℃剰搴︾患鍚堝緱鍒嗘帓鍚嶏紙鎸夌瀹ゆ垨鐥呭尯锛�")
+    @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+    @PostMapping("/mzMydScoreRank")
+    public Map<String, Object> mzMydScoreRank(@RequestBody MzMydScoreRankVO mzMydScoreRankVO) {
+        return success(serviceSubtaskService.mzMydScoreRank(mzMydScoreRankVO));
+    }
+
 }

--
Gitblit v1.9.3