From 52feee3e55403d2858da59605173ec055f601bfa Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期六, 24 十月 2026 19:47:25 +0800
Subject: [PATCH] feat(hrm): 同步新疆中亿装配的人力资源模块到北方科技

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceHolidayServiceImpl.java |   41 ++++++++++++++++-------------------------
 1 files changed, 16 insertions(+), 25 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceHolidayServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceHolidayServiceImpl.java
index d894d4c..0981a6a 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceHolidayServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmAttendanceHolidayServiceImpl.java
@@ -32,10 +32,9 @@
 
     @Override
     public Long createAttendanceHoliday(HrmAttendanceHolidaySaveReqVO createReqVO) {
-        validateDateRange(createReqVO);
-        validateDateRangeNoOverlap(createReqVO.getStartDate(), createReqVO.getEndDate(), null);
+        // 鏍¢獙鏃ユ湡鏄惁宸插瓨鍦ㄩ厤缃�
+        validateAttendanceHolidayDateExists(createReqVO.getDate());
         HrmAttendanceHolidayDO attendanceHoliday = BeanUtils.toBean(createReqVO, HrmAttendanceHolidayDO.class);
-        attendanceHoliday.setDate(createReqVO.getStartDate());
         if (attendanceHoliday.getIsLegal() == null) {
             attendanceHoliday.setIsLegal(0);
         }
@@ -46,10 +45,12 @@
     @Override
     public void updateAttendanceHoliday(HrmAttendanceHolidaySaveReqVO updateReqVO) {
         validateAttendanceHolidayExists(updateReqVO.getId());
-        validateDateRange(updateReqVO);
-        validateDateRangeNoOverlap(updateReqVO.getStartDate(), updateReqVO.getEndDate(), updateReqVO.getId());
+        // 濡傛灉鏃ユ湡鍙樻洿锛屾牎楠屾柊鏃ユ湡鏄惁宸插瓨鍦ㄩ厤缃�
+        HrmAttendanceHolidayDO oldHoliday = attendanceHolidayMapper.selectById(updateReqVO.getId());
+        if (!oldHoliday.getDate().equals(updateReqVO.getDate())) {
+            validateAttendanceHolidayDateExists(updateReqVO.getDate());
+        }
         HrmAttendanceHolidayDO updateObj = BeanUtils.toBean(updateReqVO, HrmAttendanceHolidayDO.class);
-        updateObj.setDate(updateReqVO.getStartDate());
         attendanceHolidayMapper.updateById(updateObj);
     }
 
@@ -61,23 +62,13 @@
 
     private void validateAttendanceHolidayExists(Long id) {
         if (attendanceHolidayMapper.selectById(id) == null) {
-            throw exception(ATTENDANCE_HOLIDAY_NOT_EXISTS, id);
+            throw exception(ATTENDANCE_HOLIDAY_NOT_EXISTS);
         }
     }
 
-    private void validateDateRange(HrmAttendanceHolidaySaveReqVO reqVO) {
-        if (reqVO.getEndDate().isBefore(reqVO.getStartDate())) {
-            throw exception(ATTENDANCE_HOLIDAY_DATE_RANGE_INVALID, reqVO.getEndDate(), reqVO.getStartDate());
-        }
-    }
-
-    private void validateDateRangeNoOverlap(LocalDate startDate, LocalDate endDate, Long excludeId) {
-        for (HrmAttendanceHolidayDO exist : attendanceHolidayMapper.selectListByDateRange(startDate, endDate)) {
-            if (excludeId != null && excludeId.equals(exist.getId())) {
-                continue;
-            }
-            throw exception(ATTENDANCE_HOLIDAY_RANGE_OVERLAP, startDate, endDate,
-                    exist.getName(), exist.getStartDate(), exist.getEndDate());
+    private void validateAttendanceHolidayDateExists(LocalDate date) {
+        if (attendanceHolidayMapper.selectByDate(date) != null) {
+            throw exception(ATTENDANCE_HOLIDAY_DATE_EXISTS);
         }
     }
 
@@ -93,16 +84,16 @@
 
     @Override
     public List<HrmAttendanceHolidayDO> getAttendanceHolidayListByDateRange(LocalDate startDate, LocalDate endDate) {
-        return attendanceHolidayMapper.selectListByDateRange(startDate, endDate);
+        return attendanceHolidayMapper.selectListByDateBetween(startDate, endDate);
     }
 
     @Override
     public boolean isWorkDay(LocalDate date) {
-        // 1. 鏌ヨ瑕嗙洊璇ユ棩鏈熺殑鑺傚亣鏃ラ厤缃紙閰嶇疆鏃堕棿娈典笉鍏佽閲嶅彔锛岃嚦澶氬懡涓竴鏉★級
-        List<HrmAttendanceHolidayDO> holidays = attendanceHolidayMapper.selectListByDateRange(date, date);
-        if (!holidays.isEmpty()) {
+        // 1. 鏌ヨ鑺傚亣鏃ラ厤缃�
+        HrmAttendanceHolidayDO holiday = attendanceHolidayMapper.selectByDate(date);
+        if (holiday != null) {
             // 鏈夐厤缃椂锛屾寜閰嶇疆鍒ゆ柇
-            return HrmAttendanceHolidayTypeEnum.WORK_DAY.getType().equals(holidays.get(0).getType());
+            return HrmAttendanceHolidayTypeEnum.WORK_DAY.getType().equals(holiday.getType());
         }
         // 2. 鏃犻厤缃椂锛屾寜鍛ㄦ湯鍒ゆ柇
         DayOfWeek dayOfWeek = date.getDayOfWeek();

--
Gitblit v1.9.3