gaoluyang
13 小时以前 f9d83ae75f8c911c1c05304f8131fc222579768a
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);