diff --git a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs index c610b8d9..3a69da2d 100644 --- a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs +++ b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs @@ -163,9 +163,18 @@ public class WorkGridScheduleService : IWorkGridScheduleService var workGridSchedule = await _dbContext.Queryable() .Where(x => x.Date < currentDate) .SingleAsync(x => x.Id == id); + workGridSchedule.ThrowIfNull("排班信息不存在或不可操作"); workGridSchedule.IsCancel.ThrowIfTrue("排班信息已被取消,请勿重复操作"); + var start = workGridSchedule.Date.ToDateTime(TimeOnly.MinValue); + var end = workGridSchedule.Date.ToDateTime(TimeOnly.MaxValue); + + var exists = await _dbContext.Queryable().Where(x => x.UserUniqueNo == workGridSchedule.UserCode) + .Where(x => x.RaiseDateTime >= start && x.RaiseDateTime <= end).AnyAsync(); + + exists.ThrowIfTrue("排班信息已存在打卡记录,请勿取消"); + await _workGridScheduleRepository.CancelAsync(id, reason); }