From 07d8f0087dffaa79a45b8a7e6afb067278ab9167 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 06 七月 2026 16:45:06 +0800
Subject: [PATCH] fix(attendance): 修复考勤配置查询和排班逻辑问题
---
src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java | 2 +-
src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java | 14 +++++++++-----
src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java | 5 ++++-
src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml | 9 ++++++---
4 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java b/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java
index 2872a89..73c78b5 100644
--- a/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java
+++ b/src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java
@@ -1,5 +1,6 @@
package com.ruoyi.staff.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.R;
@@ -44,7 +45,9 @@
@GetMapping("/listPage")
public R listPage(Page page){
page.addOrder(OrderItem.desc("id"));
- return R.ok(personalAttendanceLocationConfigService.page(page));
+ return R.ok(personalAttendanceLocationConfigService.page(page,
+ new LambdaQueryWrapper<PersonalAttendanceLocationConfig>()
+ .ne(PersonalAttendanceLocationConfig::getId, 999)));
}
diff --git a/src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java b/src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java
index 2f1496b..a86dcb4 100644
--- a/src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java
+++ b/src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java
@@ -60,7 +60,7 @@
}
@Operation(summary = "鐝鐘舵�佷慨鏀�")
- @PostMapping("update")
+ @PostMapping("/update")
public R performanceShiftUpdate(@RequestBody PersonalShift personalShift) {
personalShiftService.performanceShiftUpdate(personalShift);
return R.ok();
diff --git a/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
index 48c6745..14d522c 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/PersonalAttendanceRecordsServiceImpl.java
@@ -72,7 +72,8 @@
List<PersonalShift> personalShifts = personalShiftMapper.selectList(Wrappers.<PersonalShift>lambdaQuery()
.eq(PersonalShift::getStaffOnJobId, staffOnJob.getId())
.eq(PersonalShift::getWorkTime, currentDate.atStartOfDay())
- .isNotNull(PersonalShift::getPersonalAttendanceLocationConfigId));
+ .isNotNull(PersonalShift::getPersonalAttendanceLocationConfigId)
+ .ne(PersonalShift::getPersonalAttendanceLocationConfigId, 999));
if (CollectionUtil.isEmpty(personalShifts)){
throw new BaseException("褰撳墠鐢ㄦ埛褰撳ぉ娌℃湁鎺掔彮鏁版嵁");
}
@@ -230,12 +231,15 @@
List<PersonalShift> personalShifts = personalShiftMapper.selectList(Wrappers.<PersonalShift>lambdaQuery()
.eq(PersonalShift::getStaffOnJobId, staffOnJob.getId())
.eq(PersonalShift::getWorkTime, currentDate.atStartOfDay())
- .isNotNull(PersonalShift::getPersonalAttendanceLocationConfigId));
+ .isNotNull(PersonalShift::getPersonalAttendanceLocationConfigId)
+ .ne(PersonalShift::getPersonalAttendanceLocationConfigId, 999));
if (CollectionUtil.isNotEmpty(personalShifts)){
PersonalAttendanceLocationConfig personalAttendanceLocationConfig = personalAttendanceLocationConfigMapper.selectById(personalShifts.get(0).getPersonalAttendanceLocationConfigId());
- resultDto.setStartAt(personalAttendanceLocationConfig.getStartAt());
- resultDto.setEndAt(personalAttendanceLocationConfig.getEndAt());
- resultDto.setShift(personalAttendanceLocationConfig.getShift());
+ if (personalAttendanceLocationConfig != null) {
+ resultDto.setStartAt(personalAttendanceLocationConfig.getStartAt());
+ resultDto.setEndAt(personalAttendanceLocationConfig.getEndAt());
+ resultDto.setShift(personalAttendanceLocationConfig.getShift());
+ }
}
return resultDto;
}
diff --git a/src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml b/src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml
index 9ae20d6..4a15bbf 100644
--- a/src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml
+++ b/src/main/resources/mapper/staff/PersonalAttendanceRecordsMapper.xml
@@ -42,7 +42,7 @@
order by personal_attendance_records.id desc
</select>
- <!-- 鏌ヨ鎸囧畾鏃ユ湡娌℃湁鑰冨嫟璁板綍鐨勫湪鑱屽憳宸ワ紙鍦ㄦ寚瀹氭椂闂翠箣鍓嶅叆鑱岀殑锛� -->
+ <!-- 鏌ヨ鎸囧畾鏃ユ湡鏈夋帓鐝紙闈炶鍋囷級浣嗘病鏈夎�冨嫟璁板綍鐨勫湪鑱屽憳宸ワ紝娌℃帓鐝涓轰紤鎭笉鏍囪缂哄嫟 -->
<select id="selectStaffWithoutAttendanceRecordBeforeTime" resultType="com.ruoyi.staff.pojo.StaffOnJob">
SELECT soj.*
FROM staff_on_job soj
@@ -50,8 +50,11 @@
AND soj.create_time < #{entryDeadline}
AND EXISTS (
SELECT 1
- FROM personal_attendance_location_config palc
- WHERE palc.sys_dept_id = soj.sys_dept_id
+ FROM personal_shift ps
+ WHERE ps.staff_on_job_id = soj.id
+ AND DATE(ps.work_time) = #{date}
+ AND ps.personal_attendance_location_config_id IS NOT NULL
+ AND ps.personal_attendance_location_config_id != 999
)
AND NOT EXISTS (
SELECT 1
--
Gitblit v1.9.3