fix 分配分组人员数据权限
This commit is contained in:
@@ -17,7 +17,7 @@ public class AssignPermissionLimitAttribute : Attribute, IAsyncActionFilter
|
||||
|
||||
await using (var handler = await redisCache.LockAsync($"permission:generate:{currentTenantId}"))
|
||||
{
|
||||
handler.Acquired.ThrowIfFalse("请勿频繁分配设备权限");
|
||||
handler.Acquired.ThrowIfFalse("请勿频繁分配");
|
||||
await next();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Dlhis.Basic.Device.Dtos;
|
||||
using System.Collections.Concurrent;
|
||||
using Dlhis.Basic.Device.Dtos;
|
||||
using Dlhis.Basic.Device.Request;
|
||||
using Dlhis.Basic.Organization.Dto;
|
||||
using Dlhis.Entity.Basic.Entity;
|
||||
@@ -210,7 +211,7 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
_logger.LogInformation("任务后置人数{count}", userNos.Count);
|
||||
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Enable).ToListAsync();
|
||||
var waitTasks = new List<DeviceTaskEntity>();
|
||||
var waitTasks = new ConcurrentBag<DeviceTaskEntity>();
|
||||
|
||||
Parallel.ForEach(userNos, userNo =>
|
||||
{
|
||||
@@ -245,7 +246,7 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
addItems = addItems.Where(x => deviceCodes.Contains(x)).ToList();
|
||||
|
||||
//下发任务创建
|
||||
var toDeleted = deletedItems.Select(x => new DeviceTaskEntity
|
||||
deletedItems.ForEach(x => waitTasks.Add(new DeviceTaskEntity
|
||||
{
|
||||
DeviceUniqueNo = devices.First(item => item.Code == x).UniqueNo,
|
||||
Status = DeviceTaskStatusEnumType.Wait,
|
||||
@@ -255,9 +256,9 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
UserNo = userNo,
|
||||
Version = 0,
|
||||
TenantId = tenant,
|
||||
}).ToList();
|
||||
}));
|
||||
|
||||
var toAdd = addItems.Select(x => new DeviceTaskEntity
|
||||
addItems.ForEach(x => waitTasks.Add(new DeviceTaskEntity
|
||||
{
|
||||
DeviceUniqueNo = devices.First(item => item.Code == x).UniqueNo,
|
||||
Status = DeviceTaskStatusEnumType.Wait,
|
||||
@@ -266,16 +267,14 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
UserNo = userNo,
|
||||
Version = 0,
|
||||
TenantId = tenant,
|
||||
}).ToList();
|
||||
|
||||
waitTasks.AddRange(toDeleted.Concat(toAdd).ToList());
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
||||
_logger.LogInformation("任务产生数量{count}", waitTasks.Count);
|
||||
if (waitTasks.Any())
|
||||
{
|
||||
await _dbContext.InsertAsync(waitTasks);
|
||||
await _dbContext.InsertAsync(waitTasks.ToList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -582,7 +581,6 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
var deviceRelationships = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().ToListAsync();
|
||||
|
||||
var result = new Dictionary<string, List<UserTenantDeviceCodeDto>>(gainfos.Count, StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
Parallel.ForEach(gainfos, gainfo =>
|
||||
{
|
||||
var codes = GetAssignDeviceCodesInternal(gainfo, gainfoGroupRelationships, devicePermissions, deviceGroups, deviceRelationships, registries, devices);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Dlhis.Basic.Organization.Request;
|
||||
using Dlhis.Basic.Device.Filters;
|
||||
using Dlhis.Basic.Organization.Request;
|
||||
using Dlhis.Basic.Organization.Response;
|
||||
using Dlhis.Basic.Organization.Services;
|
||||
using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop;
|
||||
@@ -61,8 +62,9 @@ public class GainfoGroupsController : ControllerBase
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("assign")]
|
||||
[IgnoreTenant]
|
||||
[AssignPermissionLimit]
|
||||
[Transactional]
|
||||
[DataPermission]
|
||||
public async Task AssignGainfosAsync(GainfoAssignRequest request)
|
||||
{
|
||||
await _gainfoGroupService.AssignGainfosAsync(request);
|
||||
|
||||
Reference in New Issue
Block a user