From f9d83ae75f8c911c1c05304f8131fc222579768a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期日, 08 十一月 2026 10:09:34 +0800
Subject: [PATCH] fix(hrm): 已清除的排班日期重新排班时报唯一键冲突

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmEmployeeScheduleServiceImpl.java |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmEmployeeScheduleServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmEmployeeScheduleServiceImpl.java
index 15f64c2..a29e80b 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmEmployeeScheduleServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/attendance/HrmEmployeeScheduleServiceImpl.java
@@ -153,7 +153,11 @@
                 }
             } else {
                 if (existing == null) {
-                    employeeScheduleMapper.insert(BeanUtils.toBean(reqVO, HrmEmployeeScheduleDO.class));
+                    // 璇ュ憳宸ヨ鏃ユ湡鍙兘鏄箣鍓嶈娓呴櫎锛堥�昏緫鍒犻櫎锛夌殑鎺掔彮锛屽敮涓�绱㈠紩涓嶅惈 deleted锛岀洿鎺� insert 浼氭挒鍞竴閿�
+                    if (employeeScheduleMapper.reviveDeletedSchedule(reqVO.getEmployeeId(), reqVO.getDate(),
+                            reqVO.getShiftId(), reqVO.getRemark()) == 0) {
+                        employeeScheduleMapper.insert(BeanUtils.toBean(reqVO, HrmEmployeeScheduleDO.class));
+                    }
                 } else {
                     existing.setShiftId(reqVO.getShiftId());
                     existing.setRemark(reqVO.getRemark());
@@ -222,6 +226,12 @@
                     continue;
                 }
                 if (existing == null) {
+                    // 宸茶娓呴櫎锛堥�昏緫鍒犻櫎锛夌殑鏃ユ湡鐩存帴 insert 浼氭挒鍞竴绱㈠紩锛屼紭鍏堝娲绘棫琛�
+                    if (employeeScheduleMapper.reviveDeletedSchedule(employee.getId(), date,
+                            reqVO.getShiftId(), null) > 0) {
+                        itemCount++;
+                        continue;
+                    }
                     HrmEmployeeScheduleDO schedule = new HrmEmployeeScheduleDO();
                     schedule.setEmployeeId(employee.getId());
                     schedule.setDate(date);

--
Gitblit v1.9.3