fix 分配分组人员数据权限

This commit is contained in:
2024-06-20 13:07:11 +08:00
parent 813a6c8a14
commit 9ad98cdb17
3 changed files with 14 additions and 14 deletions

View File

@@ -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();
}
}

View File

@@ -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);

View File

@@ -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);