From b79d14af673a7adc8614b5cb1e49773b5a992f83 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 08 四月 2026 17:49:56 +0800
Subject: [PATCH] 【丽水】手术随访

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailTraceServiceImpl.java |   67 ++++++++++++++++-----------------
 1 files changed, 33 insertions(+), 34 deletions(-)

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