From fe97e3191aaa5f5db104541946f6ac7937e46e15 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 30 四月 2026 16:10:17 +0800
Subject: [PATCH] 人员考勤统计调整&原材料下单导出检验项详情

---
 performance-server/src/main/java/com/ruoyi/performance/service/impl/StaffAttendanceTrackingRecordServiceImpl.java |   15 ++++++---------
 1 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/performance-server/src/main/java/com/ruoyi/performance/service/impl/StaffAttendanceTrackingRecordServiceImpl.java b/performance-server/src/main/java/com/ruoyi/performance/service/impl/StaffAttendanceTrackingRecordServiceImpl.java
index f09e090..92d39a8 100644
--- a/performance-server/src/main/java/com/ruoyi/performance/service/impl/StaffAttendanceTrackingRecordServiceImpl.java
+++ b/performance-server/src/main/java/com/ruoyi/performance/service/impl/StaffAttendanceTrackingRecordServiceImpl.java
@@ -13,10 +13,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.util.concurrent.AtomicDouble;
 import com.ruoyi.common.core.domain.entity.User;
-import com.ruoyi.common.enums.ClockInState;
-import com.ruoyi.common.enums.EnterOrExitType;
-import com.ruoyi.common.enums.CalendarType;
-import com.ruoyi.common.enums.SyncStatus;
+import com.ruoyi.common.enums.*;
 import com.ruoyi.common.utils.api.icc.IccApiUtil;
 import com.ruoyi.common.utils.api.icc.model.GetResultPageRequest;
 import com.ruoyi.common.utils.api.icc.model.GetResultPageResponse;
@@ -240,13 +237,13 @@
                 if (!enterRecords.isEmpty()) {
                     // 涓婄彮鏃堕棿鍜岀姸鎬�
                     StaffAttendanceTrackingRecord enterRecord = enterRecords.stream()
-                            .filter(s -> !s.getSwingTime().isAfter(currentShiftStartDateTime) && !s.getSwingTime().isBefore(boundaryTime))
+                            .filter(s -> (!s.getSwingTime().isAfter(currentShiftStartDateTime) && !s.getSwingTime().isBefore(boundaryTime)) || StringUtils.equals(s.getWorkStateFlag(), StaffWorkStateFlag.WORK.getValue()))
                             .max(Comparator.comparing(StaffAttendanceTrackingRecord::getSwingTime))
                             .orElse(new StaffAttendanceTrackingRecord());
                     if (BeanUtil.isEmpty(enterRecord)) {
                         enterRecord = enterRecords.stream()
                                 .filter(s -> (s.getSwingTime().isAfter(currentShiftStartDateTime)
-                                        && s.getSwingTime().isBefore(currentShiftEndDateTime)))
+                                        && s.getSwingTime().isBefore(currentShiftEndDateTime)) || StringUtils.equals(s.getWorkStateFlag(), StaffWorkStateFlag.WORK.getValue()))
                                 .min(Comparator.comparing(StaffAttendanceTrackingRecord::getSwingTime))
                                 .orElse(new StaffAttendanceTrackingRecord());
                         workDateTime = enterRecord.getSwingTime();
@@ -263,14 +260,14 @@
                 if (!exitRecords.isEmpty()) {
                     // 涓嬬彮鏃堕棿鍜岀姸鎬�
                     StaffAttendanceTrackingRecord exitRecord = exitRecords.stream()
-                            .filter(s -> !s.getSwingTime().isBefore(currentShiftEndDateTime)
-                                    && s.getSwingTime().isBefore(nextShiftStartDateTime))
+                            .filter(s -> (!s.getSwingTime().isBefore(currentShiftEndDateTime)
+                                    && s.getSwingTime().isBefore(nextShiftStartDateTime)) || StringUtils.equals(s.getWorkStateFlag(), StaffWorkStateFlag.OFF_WORK.getValue()))
                             .min(Comparator.comparing(StaffAttendanceTrackingRecord::getSwingTime))
                             .orElse(new StaffAttendanceTrackingRecord());
                     if (BeanUtil.isEmpty(exitRecord) && !now.isBefore(currentShiftEndDateTime)) {
                         exitRecord = exitRecords.stream()
                                 .filter(s -> (s.getSwingTime().isAfter(currentShiftStartDateTime)
-                                        && s.getSwingTime().isBefore(currentShiftEndDateTime)))
+                                        && s.getSwingTime().isBefore(currentShiftEndDateTime)) || StringUtils.equals(s.getWorkStateFlag(), StaffWorkStateFlag.OFF_WORK.getValue()))
                                 .max(Comparator.comparing(StaffAttendanceTrackingRecord::getSwingTime))
                                 .orElse(new StaffAttendanceTrackingRecord());
                         offWorkDateTime = exitRecord.getSwingTime();

--
Gitblit v1.9.3