From ba6eba202110af165366377168d0561d5d222d7c Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期五, 20 三月 2026 11:24:10 +0800
Subject: [PATCH] fix(staff): 解决导出数据列数不一致问题

---
 src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java
index 420bb71..dc0f443 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java
@@ -228,6 +228,9 @@
             for (String shiftTime : shiftTimes) {
                 Map<String, Object> hashMap = new HashMap<>();
                 String[] shiftTimeAndShift = shiftTime.split("锛�");
+                if(shiftTimeAndShift.length != 3){
+                    continue;
+                }
                 for (PersonalAttendanceLocationConfig personalAttendanceLocationConfig : personalAttendanceLocationConfigs) {
                     if (!i.getMonthlyAttendance().containsKey(personalAttendanceLocationConfig.getShift())) {
                         i.getMonthlyAttendance().put(personalAttendanceLocationConfig.getShift(), 0);
@@ -258,6 +261,16 @@
         LocalDateTime localDateTime = LocalDateTime.parse(time, formatters);
         map.put("header", getMonthHeader(localDateTime));
         List<List<Object>> lists = dataRequiredForProcessingIntoExcelMonth(mapIPage, personalAttendanceLocationConfigs);
+        int maxSize = lists.stream()
+                .mapToInt(List::size)
+                .max()
+                .orElse(0);
+
+        for (List<Object> row : lists) {
+            while (row.size() < maxSize) {
+                row.add("-");
+            }
+        }
         map.put("data", lists);
         return map;
     }

--
Gitblit v1.9.3