From 174347adf4b780fb6969c3d96bca3257a66409d1 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 08 四月 2026 16:51:47 +0800
Subject: [PATCH] 省立同德满意度功能提交

---
 ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java                                           |   19 +++---
 smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java                                |    6 ++
 smartor/src/main/java/com/smartor/domain/DTO/DetailTraceDealDTO.java                                |   16 +++++
 smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailTraceService.java                    |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailTraceController.java |   13 +++-
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailTraceServiceImpl.java            |   67 +++++++++++-----------
 6 files changed, 76 insertions(+), 49 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
index 95c30e0..b39c527 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
@@ -21,16 +21,15 @@
     public static void main(String[] args) {
         // System.setProperty("spring.devtools.restart.enabled", "false");
         SpringApplication.run(RuoYiApplication.class, args);
-        System.out.println("(鈾モ棤鈥库棤)锞夛緸  鏅烘収鏈嶅姟鍚姩鎴愬姛   醿�(麓凇`醿�)锞�  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
+        System.out.println(" 鏅烘収鏈嶅姟鍚姩鎴愬姛 \n" +
+
+              " 鈻堚枅鈺�  鈻堚枅鈺�   鈻堚枅鈻堚枅鈻堚枅鈺�    鈻堚枅鈻堚枅鈻堚枅鈺梊n" +
+              " 鈻堚枅鈺�  鈻堚枅鈺�   鈻堚枅鈺斺晲鈺愨枅鈻堚晽   鈻堚枅鈺斺晲鈺愨晲鈺愨暆\n" +
+              " 鈻堚枅鈻堚枅鈻堚枅鈻堚晳   鈻堚枅鈻堚枅鈻堚枅鈺斺暆   鈻堚枅鈻堚枅鈻堚晽\n" +
+              " 鈻堚枅鈺斺晲鈺愨枅鈻堚晳   鈻堚枅鈺斺晲鈺愨枅鈻堚晽   鈺氣晲鈺愨晲鈺愨枅鈻堚晽\n" +
+              " 鈻堚枅鈺�  鈻堚枅鈺�   鈻堚枅鈺�  鈻堚枅鈺�   鈻堚枅鈻堚枅鈻堚枅鈺斺暆\n" +
+              " 鈺氣晲鈺�  鈺氣晲鈺�   鈺氣晲鈺�  鈺氣晲鈺�   鈺氣晲鈺愨晲鈺愨晲鈺漒n" +
+              "    浜�          灏�          鏃禱n");
 //        //寮�鍚疭OCKET
 //        new SocketCommunication().socketCommunication();
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailTraceController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailTraceController.java
index c8b026b..0b9d204 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailTraceController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailTraceController.java
@@ -65,13 +65,20 @@
     public Map<String, Object> tracedeallist(@RequestBody DetailTraceDealVO detailTraceDealVO) {
         Integer offset = PageUtils.getOffset(detailTraceDealVO.getPageNum(), detailTraceDealVO.getPageSize());
         detailTraceDealVO.setPageNum(offset);
-        List<DetailTraceDealDTO> list = serviceSubtaskDetailTraceService.tracedeallist(detailTraceDealVO);
+        Map<String, Object> result = serviceSubtaskDetailTraceService.tracedeallist(detailTraceDealVO);
 
+        // 鏌ヨ鎬绘暟锛堜笉鍒嗛〉锛�
         detailTraceDealVO.setPageNum(null);
         detailTraceDealVO.setPageSize(null);
-        List<DetailTraceDealDTO> total = serviceSubtaskDetailTraceService.tracedeallist(detailTraceDealVO);
+        Map<String, Object> totalResult = serviceSubtaskDetailTraceService.tracedeallist(detailTraceDealVO);
+        List<?> totalRows = (List<?>) totalResult.get("rows");
 
-        return getDataTable3(CollectionUtils.isNotEmpty(total) ? total.size() : 0, list);
+        //灏嗘�绘暟淇℃伅娣诲姞鍒扮粨鏋滀腑
+        result.put("totalException", totalResult.get("totalException"));
+        result.put("noDealException", totalResult.get("noDealException"));
+        result.put("yesDealException", totalResult.get("yesDealException"));
+
+        return getDataTable3(CollectionUtils.isNotEmpty(totalRows) ? totalRows.size() : 0, result);
     }
 
     /**
diff --git a/smartor/src/main/java/com/smartor/domain/DTO/DetailTraceDealDTO.java b/smartor/src/main/java/com/smartor/domain/DTO/DetailTraceDealDTO.java
index 160e1b9..29a12de 100644
--- a/smartor/src/main/java/com/smartor/domain/DTO/DetailTraceDealDTO.java
+++ b/smartor/src/main/java/com/smartor/domain/DTO/DetailTraceDealDTO.java
@@ -29,6 +29,22 @@
     @Excel(name = "闂鍐呭")
     private String questiontext;
 
+
+    /**
+     * 闂ID
+     */
+    @ApiModelProperty("闂ID")
+    @Excel(name = "闂ID")
+    private Long scriptid;
+
+
+
+    /**
+     * 妯℃澘绫诲瀷锛�1.璇煶 2.闂嵎
+     */
+    @ApiModelProperty("妯℃澘绫诲瀷锛�1.璇煶 2.闂嵎")
+    @Excel(name = "妯℃澘绫诲瀷锛�1.璇煶 2.闂嵎")
+    private Integer templateType;
     /**
      * [{
      *        "deptName": "绉戝鍚嶇О",
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java b/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java
index fd3f5b3..aa0724d 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSLTDInhospReqVO.java
@@ -16,6 +16,12 @@
     @ApiModelProperty(value = "闄㈠尯ID")
     private Long campusId;
 
+    @ApiModelProperty(value = "褰撳墠椤�")
+    private Long current;
+
+    @ApiModelProperty(value = "姣忛〉鏁伴噺")
+    private Long size;
+
     @ApiModelProperty(value = "鎮h�呭鍚�   蹇呭~涓�涓�")
     private String patientName;
 
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailTraceService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailTraceService.java
index 9e76f15..27e4e0d 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailTraceService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailTraceService.java
@@ -36,9 +36,9 @@
     /**
      * 寮傚父闂澶勭悊鎯呭喌鏌ヨ
      * @param detailTraceDealVO
-     * @return
+     * @return 鍖呭惈鍒嗛〉鍒楄〃鍙婃眹鎬荤粺璁★紙totalException/noDealException/yesDealException锛夌殑Map
      */
-    public List<DetailTraceDealDTO> tracedeallist(DetailTraceDealVO detailTraceDealVO);
+    public Map<String, Object> tracedeallist(DetailTraceDealVO detailTraceDealVO);
 
     /**
      * 鏂板闅忚浠诲姟寮傚父璁板綍璺熻釜
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailTraceServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailTraceServiceImpl.java
index 6c0f49a..d49690e 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailTraceServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailTraceServiceImpl.java
@@ -71,47 +71,39 @@
     }
 
     @Override
-    public List<DetailTraceDealDTO> tracedeallist(DetailTraceDealVO detailTraceDealVO) {
-        // 鑾峰彇鎵�鏈夐渶瑕佸鐞嗙殑璁板綍
+    public Map<String, Object> tracedeallist(DetailTraceDealVO detailTraceDealVO) {
+        // 鍒嗛〉鏌ヨ
         List<ServiceSubtaskDetailTrace> tracedeallist = serviceSubtaskDetailTraceMapper.tracedeallist(detailTraceDealVO);
 
         // 鎸� questiontext 鍒嗙粍
-        Map<String, List<ServiceSubtaskDetailTrace>> groupByQuestion = tracedeallist.stream()
-                .filter(t -> t.getQuestiontext() != null)
-                .collect(Collectors.groupingBy(ServiceSubtaskDetailTrace::getQuestiontext));
+        Map<String, List<ServiceSubtaskDetailTrace>> groupByQuestion = tracedeallist.stream().filter(t -> t.getQuestiontext() != null).collect(Collectors.groupingBy(ServiceSubtaskDetailTrace::getQuestiontext));
 
         List<DetailTraceDealDTO> detailTraceDealDTOList = new ArrayList<>();
+        long totalException = 0L;
+        long noDealException = 0L;
+        long yesDealException = 0L;
+
         for (Map.Entry<String, List<ServiceSubtaskDetailTrace>> entry : groupByQuestion.entrySet()) {
             List<ServiceSubtaskDetailTrace> group = entry.getValue();
             DetailTraceDealDTO dto = new DetailTraceDealDTO();
 
             // 闂鍐呭
             dto.setQuestiontext(entry.getKey());
-
+            if (CollectionUtils.isNotEmpty(group)) {
+                dto.setScriptid(group.get(0).getScriptid());
+                dto.setTemplateType(group.get(0).getTemplateType());
+            }
             // 璐熻矗绉戝锛堝幓閲嶏級
-            List<Map<String, Object>> responsibleDept = group.stream()
-                    .filter(t -> t.getTodeptcode() != null)
-                    .collect(Collectors.collectingAndThen(
-                            Collectors.toMap(
-                                    ServiceSubtaskDetailTrace::getTodeptcode,
-                                    t -> {
-                                        Map<String, Object> deptMap = new HashMap<>();
-                                        deptMap.put("deptName", t.getTodeptname());
-                                        deptMap.put("deptCode", t.getTodeptcode());
-                                        return deptMap;
-                                    },
-                                    (existing, replacement) -> existing
-                            ),
-                            map -> new ArrayList<>(map.values())
-                    ));
+            List<Map<String, Object>> responsibleDept = group.stream().filter(t -> t.getTodeptcode() != null).collect(Collectors.collectingAndThen(Collectors.toMap(ServiceSubtaskDetailTrace::getTodeptcode, t -> {
+                Map<String, Object> deptMap = new HashMap<>();
+                deptMap.put("deptName", t.getTodeptname());
+                deptMap.put("deptCode", t.getTodeptcode());
+                return deptMap;
+            }, (existing, replacement) -> existing), map -> new ArrayList<>(map.values())));
             dto.setResponsibleDept(responsibleDept);
 
             // 鏈夋晥濉啓鏁帮細閫氳繃缁勫唴鐨� scriptid 鍘� service_subtask_detail 琛ㄦ煡璇�
-            List<Long> scriptIds = group.stream()
-                    .map(ServiceSubtaskDetailTrace::getScriptid)
-                    .filter(Objects::nonNull)
-                    .distinct()
-                    .collect(Collectors.toList());
+            List<Long> scriptIds = group.stream().map(ServiceSubtaskDetailTrace::getScriptid).filter(Objects::nonNull).distinct().collect(Collectors.toList());
             long effectiveFillNum = 0L;
             if (CollectionUtils.isNotEmpty(scriptIds)) {
                 ServiceSubtaskDetail query = new ServiceSubtaskDetail();
@@ -140,19 +132,26 @@
             exceptionQuesNum.put("all", exceptionFillNum);
             dto.setExceptionQuesNum(exceptionQuesNum);
 
+            // 姹囨�荤粺璁$疮鍔�
+            totalException += exceptionFillNum;
+            noDealException += noDeal;
+            yesDealException += yesDeal;
+
             // 鏈�鏂板鐞嗕汉鍜屽鐞嗘椂闂达紙鍙� handleTime 鏈�鏂扮殑涓�鏉★級
-            group.stream()
-                    .filter(t -> t.getHandleTime() != null)
-                    .max(Comparator.comparing(ServiceSubtaskDetailTrace::getHandleTime))
-                    .ifPresent(latest -> {
-                        dto.setHandleBy(latest.getHandleBy());
-                        dto.setHandleTime(latest.getHandleTime());
-                    });
+            group.stream().filter(t -> t.getHandleTime() != null).max(Comparator.comparing(ServiceSubtaskDetailTrace::getHandleTime)).ifPresent(latest -> {
+                dto.setHandleBy(latest.getHandleBy());
+                dto.setHandleTime(latest.getHandleTime());
+            });
 
             detailTraceDealDTOList.add(dto);
         }
 
-        return detailTraceDealDTOList;
+        Map<String, Object> result = new HashMap<>();
+        result.put("detailTraceDealDTOList", detailTraceDealDTOList);
+        result.put("totalException", totalException);
+        result.put("noDealException", noDealException);
+        result.put("yesDealException", yesDealException);
+        return result;
     }
 
     /**

--
Gitblit v1.9.3