From 2f52cf1ac1fca3fd60de3530fbd1bdba07ea85da Mon Sep 17 00:00:00 2001 From: liguoyang Date: Fri, 21 Mar 2025 14:34:04 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E7=BD=91=E6=A0=BC=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9C=80=E5=A4=A7=E7=94=A8=E6=88=B7=E6=95=B0=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WorkGrids/Request/WorkGridSaveRequest.cs | 7 +++++ .../Response/WorkGridPageResponse.cs | 5 ++++ .../Response/WorkGridUserPageResponse.cs | 5 ++++ .../WorkGrids/Services/IWorkGridService.cs | 6 ++-- .../Services/Implements/WorkGridService.cs | 29 +++++++++++++++---- .../Basic/Entity/WorkGridEntity.cs | 7 ++++- 6 files changed, 49 insertions(+), 10 deletions(-) diff --git a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridSaveRequest.cs b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridSaveRequest.cs index 8b5f8029..b0437053 100644 --- a/Src/Dlhis.Basic/WorkGrids/Request/WorkGridSaveRequest.cs +++ b/Src/Dlhis.Basic/WorkGrids/Request/WorkGridSaveRequest.cs @@ -19,4 +19,11 @@ public class WorkGridSaveRequest /// 备注 /// public string Remark { get; set; } + + + /// + /// 最大用户数 + /// + [Range(1, int.MaxValue, ErrorMessage = "请设置最大用户数")] + public int MaxUserCount { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridPageResponse.cs b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridPageResponse.cs index 2ae483ae..864277f9 100644 --- a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridPageResponse.cs +++ b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridPageResponse.cs @@ -33,4 +33,9 @@ public class WorkGridPageResponse /// 用户数量 /// public int UserCount { get; set; } + + /// + /// 最大用户数设置 + /// + public int MaxUserCount { 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 118b868b..62e73a27 100644 --- a/Src/Dlhis.Basic/WorkGrids/Response/WorkGridUserPageResponse.cs +++ b/Src/Dlhis.Basic/WorkGrids/Response/WorkGridUserPageResponse.cs @@ -24,6 +24,11 @@ public class WorkGridUserPageResponse /// public int UserCount { get; set; } + /// + /// 最大用户数设置 + /// + public int MaxUserCount { get; set; } + /// /// 员工明细 /// diff --git a/Src/Dlhis.Basic/WorkGrids/Services/IWorkGridService.cs b/Src/Dlhis.Basic/WorkGrids/Services/IWorkGridService.cs index 9916a093..9fdd8d35 100644 --- a/Src/Dlhis.Basic/WorkGrids/Services/IWorkGridService.cs +++ b/Src/Dlhis.Basic/WorkGrids/Services/IWorkGridService.cs @@ -15,13 +15,13 @@ public interface IWorkGridService : IScopeDependency /// /// Task> GetPageAsync(WorkGridGainfoPageRequest request); - + /// /// 保存 /// /// /// - Task SaveAsync(List requests); + Task SaveAsync(List requests); /// /// /网格分页 @@ -48,7 +48,7 @@ public interface IWorkGridService : IScopeDependency /// /// /// - Task AssignAsync(WorkGridUserAssignRequest request); + Task AssignAsync(WorkGridUserAssignRequest request); /// /// 移除人员 diff --git a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs index 66313001..48f005b2 100644 --- a/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs +++ b/Src/Dlhis.Basic/WorkGrids/Services/Implements/WorkGridService.cs @@ -74,10 +74,11 @@ public class WorkGridService : IWorkGridService } /// - public async Task SaveAsync(List requests) + public async Task SaveAsync(List requests) { var insertGrids = new List(); var updateGrids = new List(); + var tips = new List(); var leaderUserCodes = requests.Select(x => x.LeaderUserCode).Distinct().ToList(); var existsUserCodes = await _dbContext.Queryable().Where(x => leaderUserCodes.Contains(x.Code)).Select(x => x.Code).ToListAsync(); @@ -93,7 +94,6 @@ public class WorkGridService : IWorkGridService true.ThrowIfTrue($"网格区域名称[{request.Name}]重复"); } - if (!request.Id.HasValue) { var exists = await _dbContext.Queryable() @@ -107,14 +107,23 @@ public class WorkGridService : IWorkGridService entity.LeaderUserCode = request.LeaderUserCode; await _dbContext.InsertAsync(entity); - insertGrids.Add($"{entity.Name}({entity.LeaderUserCode})"); + insertGrids.Add($"{entity.Name}({entity.LeaderUserCode}),最大用户数:{entity.MaxUserCount}"); } else { var entity = await _dbContext.Queryable().Where(x => x.Id == request.Id).SingleAsync(); entity.ThrowIfNull("网格不存在"); - updateGrids.Add($"{entity.Name}->{request.Name}"); + updateGrids.Add($"{entity.Name}->{request.Name},{entity.MaxUserCount}->{request.MaxUserCount}"); + if (request.MaxUserCount < entity.MaxUserCount) + { + var userCount = await _dbContext.Queryable().Where(x => x.WorkGridCode == entity.Code).CountAsync(); + if (userCount > request.MaxUserCount) + { + tips.Add($"{request.Name}人员{userCount}超出最大人数设置{request.MaxUserCount}"); + } + } + request.Adapt(entity); await _dbContext.UpdateAsync(entity); @@ -123,6 +132,9 @@ public class WorkGridService : IWorkGridService await _operateLog.LogAsync(OperateLogType.WorkGrid, "创建网格:" + insertGrids.Join("\r\n")); await _operateLog.LogAsync(OperateLogType.WorkGrid, "修改网格:" + updateGrids.Join("\r\n")); + + + return tips.Any() ? tips.Join("\r\n") : null; } /// @@ -146,6 +158,7 @@ public class WorkGridService : IWorkGridService LeaderUserCode = x.LeaderUserCode, UserName = ga.Name, Remark = x.Remark, + MaxUserCount = x.MaxUserCount, UserCount = SqlFunc.Subqueryable().Where(p => p.WorkGridCode == x.Code && x.IsDeleted == false).Count() }) .ToPageListAsync(request); @@ -183,7 +196,8 @@ public class WorkGridService : IWorkGridService Id = x.Id, Code = x.Code, Name = x.Name, - Remark = x.Remark + Remark = x.Remark, + MaxUserCount = x.MaxUserCount }) .SingleAsync(); @@ -216,7 +230,7 @@ public class WorkGridService : IWorkGridService } /// - public async Task AssignAsync(WorkGridUserAssignRequest request) + public async Task AssignAsync(WorkGridUserAssignRequest request) { var currentFactory = _currentUser.GetStringTenantId(); var role = _currentUser.GetRole(); @@ -250,7 +264,10 @@ public class WorkGridService : IWorkGridService }).ToList(); await _dbContext.InsertAsync(dataToInserts); + var userCount = await _dbContext.Queryable().Where(x => x.WorkGridCode == myWorkGrid.Code).CountAsync(); await _operateLog.LogAsync(OperateLogType.WorkGrid, $"分配人员到网格({myWorkGrid.Name}),人员:{dataToInserts.Select(x => x.UserCode).Join(",")}"); + + return $"{myWorkGrid.Name}人员{userCount}超出最大人数设置{myWorkGrid.MaxUserCount}"; } /// diff --git a/Src/Dlhis.Entity/Basic/Entity/WorkGridEntity.cs b/Src/Dlhis.Entity/Basic/Entity/WorkGridEntity.cs index 6b018640..82dadd9c 100644 --- a/Src/Dlhis.Entity/Basic/Entity/WorkGridEntity.cs +++ b/Src/Dlhis.Entity/Basic/Entity/WorkGridEntity.cs @@ -36,7 +36,12 @@ public class WorkGridEntity : SugarBaseEntity, ISoftDeleted /// [SugarColumn(IsNullable = true, ColumnDescription = "备注")] public string Remark { get; set; } - + /// + /// 最大用户数 + /// + [SugarColumn(IsNullable = false, ColumnDescription = "最大用户数")] + public int MaxUserCount { get; set; } + public bool IsDeleted { get; set; } } \ No newline at end of file