From 446d4aa8d8beeeb0a9607f07a38008a2cd5e4747 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期四, 12 三月 2026 10:08:39 +0800
Subject: [PATCH] refactor(staff): 只优化了由于split分割导致问题

---
 src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 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 dd4cf4b..420bb71 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java
@@ -1,6 +1,8 @@
 package com.ruoyi.staff.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -119,19 +121,25 @@
         IPage<PerformanceShiftMapDto> mapIPage = baseMapper.performanceShiftPage(page, time, userName, sysDeptId);
         //鏌ヨ鎵�鏈夌彮娆�(鎵撳崱瑙勫垯)
         List<PersonalAttendanceLocationConfig> personalAttendanceLocationConfigs = personalAttendanceLocationConfigMapper.selectList(null);
-        mapIPage.getRecords().forEach(i -> {
-            String[] shiftTimes = i.getShiftTime().split(";");
+        for (PerformanceShiftMapDto i : mapIPage.getRecords()) {
+            List<String> shiftTimes = StrUtil.split(i.getShiftTime(), ";");
+            if(CollUtil.isEmpty(shiftTimes)){
+                continue;
+            }
             double totalAttendance = 0;//鎬诲嚭鍕ゅぉ鏁�
             List<Map<String, Object>> map = new ArrayList<>();
             // 鍒嗗壊鏃ユ湡
             for (String shiftTime : shiftTimes) {
                 i.setShiftTime(null);
                 Map<String, Object> hashMap = new HashMap<>();
-                String[] shiftTimeAndShift = shiftTime.split("锛�");
+                List<String> shiftTimeAndShift = StrUtil.split(shiftTime, "锛�");
+                if(CollUtil.isEmpty(shiftTimeAndShift) || shiftTimeAndShift.size() != 3){
+                    continue;
+                }
                 //鎺掔彮璇︾粏鏁版嵁
-                hashMap.put("id", shiftTimeAndShift[2]);
-                hashMap.put("shift", shiftTimeAndShift[1]);
-                hashMap.put("time", shiftTimeAndShift[0]);
+                hashMap.put("id", shiftTimeAndShift.get(2));
+                hashMap.put("shift", shiftTimeAndShift.get(1));
+                hashMap.put("time", shiftTimeAndShift.get(0));
                 map.add(hashMap);
                 i.setList(map);
                 //姹囨�荤殑鍚勭彮娆$粺璁℃暟鎹�
@@ -139,20 +147,20 @@
                     if (!i.getMonthlyAttendance().containsKey(personalAttendanceLocationConfig.getShift())){
                         i.getMonthlyAttendance().put(personalAttendanceLocationConfig.getShift(), 0);
                     }
-                    if (personalAttendanceLocationConfig.getShift().equals(shiftTimeAndShift[1])) {
+                    if (personalAttendanceLocationConfig.getShift().equals(shiftTimeAndShift.get(1))) {
                         BigDecimal bigDecimal = new BigDecimal(i.getMonthlyAttendance().get(personalAttendanceLocationConfig.getShift()).toString());
                         i.getMonthlyAttendance().put(personalAttendanceLocationConfig.getShift(), bigDecimal.add(new BigDecimal("1")));
                     }
                 }
                 //缁熻鎬诲嚭鍕ゅぉ鏁�(鏃�/涓�/鏅�/澶�)閮界畻鍑哄嫟,鍏朵綑閮芥槸浼戞伅
-                if (shiftTimeAndShift[1].contains("鏃�") ||
-                        shiftTimeAndShift[1].contains("涓�") ||
-                        shiftTimeAndShift[1].contains("鏅�") ||
-                        shiftTimeAndShift[1].contains("澶�")) {
+                if (shiftTimeAndShift.get(1).contains("鏃�") ||
+                        shiftTimeAndShift.get(1).contains("涓�") ||
+                        shiftTimeAndShift.get(1).contains("鏅�") ||
+                        shiftTimeAndShift.get(1).contains("澶�")) {
                     i.getMonthlyAttendance().put("totalAttendance", totalAttendance += 1);
                 }
             }
-        });
+        }
         // 鑾峰彇header鏃堕棿
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter formatters = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

--
Gitblit v1.9.3