From c7673b8c8f1d20c58c7265fa00c6fbf69caf994d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 04 十一月 2026 13:55:39 +0800
Subject: [PATCH] fix(shift): 修复排班与考勤的时间范围查询条件
---
src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java | 19 ++++++++++++-------
1 files changed, 12 insertions(+), 7 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 24d0511..9880ed5 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java
@@ -53,19 +53,21 @@
LocalDateTime endWeek = performanceShiftAddDto.getEndWeek();//缁撴潫鏃ユ湡
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
- String formattedDateTime = performanceShiftAddDto.getStartWeek().format(formatter);
String[] splitUserId = performanceShiftAddDto.getStaffOnJobId().split(",");
for (String userId : splitUserId) {
//鍒ゆ柇鏄惁璺ㄦ湀
boolean isMonth = startWeek.getMonthValue() != endWeek.getMonthValue();
if (isMonth){
//濡傛灉璺ㄦ湀,鍒欎袱涓湀閮藉垽鏂竴涓嬬湅鏁版嵁搴撴槸鍝釜鏈堜唤鐨勬暟鎹病鏈�
+ LocalDateTime startMonthBegin = startWeek.toLocalDate().withDayOfMonth(1).atStartOfDay();
+ LocalDateTime endMonthBegin = endWeek.toLocalDate().withDayOfMonth(1).atStartOfDay();
boolean exists1 = baseMapper.exists(Wrappers.<PersonalShift>lambdaQuery()
- .eq(PersonalShift::getWorkTime, startWeek)
+ .ge(PersonalShift::getWorkTime, startMonthBegin)
+ .lt(PersonalShift::getWorkTime, startMonthBegin.plusMonths(1))
.eq(PersonalShift::getStaffOnJobId, userId));
boolean exists2 = baseMapper.exists(Wrappers.<PersonalShift>lambdaQuery()
- .eq(PersonalShift::getWorkTime, endWeek)
+ .ge(PersonalShift::getWorkTime, endMonthBegin)
+ .lt(PersonalShift::getWorkTime, endMonthBegin.plusMonths(1))
.eq(PersonalShift::getStaffOnJobId, userId));
if (!exists1 && !exists2){
//涓や釜鏈堥兘涓嶅瓨鍦ㄦ暟鎹�
@@ -80,8 +82,10 @@
}
}else {
//涓嶈法鏈�
+ LocalDateTime monthBegin = startWeek.toLocalDate().withDayOfMonth(1).atStartOfDay();
boolean exists = baseMapper.exists(Wrappers.<PersonalShift>lambdaQuery()
- .in(PersonalShift::getWorkTime, formattedDateTime)
+ .ge(PersonalShift::getWorkTime, monthBegin)
+ .lt(PersonalShift::getWorkTime, monthBegin.plusMonths(1))
.eq(PersonalShift::getStaffOnJobId, userId));
// 濡傛灉涓嶅瓨鍦ㄦ坊鍔犳暟鎹�
if (!exists) {
@@ -96,16 +100,17 @@
// 鍐嶆鏇存柊
List<LocalDateTime> datesBetween = getLocalDateTimesBetween(performanceShiftAddDto.getStartWeek(), performanceShiftAddDto.getEndWeek());
for (LocalDateTime date : datesBetween) {
+ LocalDateTime dayBegin = date.toLocalDate().atStartOfDay();
for (String s : splitUserId) {
PersonalShift personalShift = new PersonalShift();
personalShift.setPersonalAttendanceLocationConfigId(performanceShiftAddDto.getPersonalAttendanceLocationConfigId());
personalShift.setStaffOnJobId(Long.valueOf(s));
personalShift.setWorkTime(date);
- String formatterDateTime = date.format(formatter);
baseMapper.update(new PersonalShift(), Wrappers.<PersonalShift>lambdaUpdate()
.set(PersonalShift::getPersonalAttendanceLocationConfigId, performanceShiftAddDto.getPersonalAttendanceLocationConfigId())
.eq(PersonalShift::getStaffOnJobId, s)
- .eq(PersonalShift::getWorkTime, formatterDateTime));
+ .ge(PersonalShift::getWorkTime, dayBegin)
+ .lt(PersonalShift::getWorkTime, dayBegin.plusDays(1)));
}
}
return 0;
--
Gitblit v1.9.3