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