From 7d6be866a896e03fb311ba0d491a9382809c7111 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 22 一月 2026 09:43:57 +0800
Subject: [PATCH] 1.修改人员离职原因分析逻辑 2.新增离职设置原因和备注

---
 src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java |   34 ++++++++++++++++++++++++++--------
 1 files changed, 26 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java
index 13a440c..24abcfc 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/AnalyticsServiceImpl.java
@@ -16,7 +16,9 @@
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @AllArgsConstructor
 @Service
@@ -29,16 +31,32 @@
 
     @Override
     public List<StaffLeaveDto> staffLeaveReasonAnalytics() {
-        List<StaffLeaveDto> result = staffLeaveMapper.staffLeaveReasonAnalytics();
-        result.forEach(dto -> {
+        List<StaffLeaveDto> dbResult = staffLeaveMapper.staffLeaveReasonAnalytics();
+
+        // 鍒涘缓涓�涓狹ap鐢ㄤ簬瀛樺偍鎵�鏈夋灇涓惧師鍥犵殑鏁伴噺锛岄粯璁ゅ�间负0
+        Map<String, Integer> reasonCountMap = new HashMap<>();
+        for (StaffLeaveReason reasonEnum : StaffLeaveReason.values()) {
+            reasonCountMap.put(reasonEnum.getCode(), 0);
+        }
+
+        // 灏嗘暟鎹簱鏌ヨ缁撴灉鍚堝苟鍒癕ap涓�
+        for (StaffLeaveDto dto : dbResult) {
             String reasonCode = dto.getReason();
-            StaffLeaveReason reasonEnum = StaffLeaveReason.getByCode(reasonCode);
-            if (reasonEnum != null) {
-                dto.setReasonText(reasonEnum.getInfo());
-            } else {
-                dto.setReasonText("鏈煡鍘熷洜");
+            if (reasonCountMap.containsKey(reasonCode)) {
+                reasonCountMap.put(reasonCode, dto.getCount());
             }
-        });
+        }
+
+        // 灏哅ap杞崲涓篖ist<StaffLeaveDto>
+        List<StaffLeaveDto> result = new ArrayList<>();
+        for (StaffLeaveReason reasonEnum : StaffLeaveReason.values()) {
+            StaffLeaveDto dto = new StaffLeaveDto();
+            dto.setReason(reasonEnum.getCode());
+            dto.setCount(reasonCountMap.get(reasonEnum.getCode()));
+            dto.setReasonText(reasonEnum.getInfo());
+            result.add(dto);
+        }
+
         return result;
     }
 

--
Gitblit v1.9.3