From 532dbf07603492ef86d1c7f96b0f3bf51cc226a1 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 6 Mar 2025 17:02:20 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WorkGrids/Request/WorkGridPageRequest.cs | 5 ++++ .../Response/WorkGridScheduleResponse.cs | 6 ----- .../Response/WorkGridUserPageResponse.cs | 23 ++++--------------- .../Implements/WorkGridScheduleService.cs | 23 +++++++------------ .../Services/Implements/WorkGridService.cs | 11 +++++++++ 5 files changed, 29 insertions(+), 39 deletions(-) diff --git a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridPageRequest.cs b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridPageRequest.cs index e5a2a3d2..eb7bd538 100644 --- a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridPageRequest.cs +++ b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridPageRequest.cs @@ -8,4 +8,9 @@ public class WorkGridPageRequest : PageDto /// 网格code,不传则取我的网格 /// public Guid? WorkGridCode { get; set; } + + /// + /// 排班日期 + /// + public DateTime Date { get; set; } = DateTime.Today; } \ No newline at end of file diff --git a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleResponse.cs b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleResponse.cs index f95fa2a3..34a61f34 100644 --- a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleResponse.cs +++ b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridScheduleResponse.cs @@ -11,10 +11,4 @@ public class WorkGridScheduleResponse public string UserCode { get; set; } public string UserName { get; set; } - - - /// - /// 最大连续排班信息 - /// - public WorkGridScheduleMaximumConsecutiveDto MaximumConsecutiveSchedules { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridUserPageResponse.cs b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridUserPageResponse.cs index bd601ea0..ddc14d4b 100644 --- a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridUserPageResponse.cs +++ b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridUserPageResponse.cs @@ -36,22 +36,9 @@ public class WorkGridUserPageDetailResponse /// 人员姓名 /// public string Name { get; set; } - - // /// - // /// 排班值 - // /// - // public WorkGridTimePeriodEnumType? ScheduleType { get; set; } - // - // /// - // /// 排班描述 - // /// - // public string ScheduleTypeDesc - // { - // get - // { - // return !ScheduleType.HasValue - // ? "未排班" - // : ScheduleType.Value.GetDescription(); - // } - // } + + /// + /// 最大连续排班信息 + /// + public WorkGridScheduleMaximumConsecutiveDto MaximumConsecutiveSchedules { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs index a939b30b..fb44e1ab 100644 --- a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs +++ b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridScheduleService.cs @@ -38,11 +38,17 @@ public class WorkGridScheduleService : IWorkGridScheduleService public async Task SaveAsync(WorkGridScheduleSaveRequest request) { - //await _factorySettingService.CheckWorkGridSetLimitAsync(request.Date); - var workGrid = await _dbContext.Queryable().SingleAsync(x => x.Code == request.WorkGridCode); workGrid.ThrowIfNull("工作网格不存在"); + var workGridUserCodes = await _dbContext.Queryable() + .Where(x => x.WorkGridCode == workGrid.Code && request.UserCodes.Contains(x.UserCode)) + .Select(x => x.UserCode) + .ToListAsync(); + + var others = request.UserCodes.Except(workGridUserCodes).ToList(); + others.ThrowIfExists($"{others.Join(",")}非当前网格人员"); + var exists = await _dbContext.Queryable() .Where(x => x.WorkGridCode == request.WorkGridCode && x.Date == request.Date @@ -71,8 +77,6 @@ public class WorkGridScheduleService : IWorkGridScheduleService /// public async Task RemoveAsync(WorkGridScheduleSaveRequest request) { - //await _factorySettingService.CheckWorkGridSetLimitAsync(request.Date); - var workGrid = await _dbContext.Queryable().SingleAsync(x => x.Code == request.WorkGridCode); workGrid.ThrowIfNull("工作网格不存在"); @@ -103,17 +107,6 @@ public class WorkGridScheduleService : IWorkGridScheduleService }) .ToListAsync(); - var userCodes = data.Select(x => x.UserCode).ToList(); - if (userCodes.Any()) - { - var maximumConsecutiveUserCodes = await MaximumConsecutiveUserCodesAsync(userCodes, 1, date); - - foreach (var item in data) - { - item.MaximumConsecutiveSchedules = maximumConsecutiveUserCodes.FirstOrDefault(x => x.UserCode == item.UserCode); - } - } - return data; } diff --git a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs index e581a8fa..c1f724c3 100644 --- a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs +++ b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs @@ -193,6 +193,17 @@ public class WorkGridService : IWorkGridService }) .SingleAsync(); + var userCodes = myWorkGrid.UserInfos.Select(x => x.Code).ToList(); + if (userCodes.Any()) + { + var maximumConsecutiveUserCodes = await _workGridScheduleService.MaximumConsecutiveUserCodesAsync(userCodes, 1, DateOnly.FromDateTime(request.Date)); + + foreach (var item in myWorkGrid.UserInfos) + { + item.MaximumConsecutiveSchedules = maximumConsecutiveUserCodes.FirstOrDefault(x => x.UserCode == item.Code); + } + } + return myWorkGrid; }