Merge branch 'refs/heads/development'
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,9 +211,9 @@ 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>();
|
||||
|
||||
foreach (var userNo in userNos)
|
||||
Parallel.ForEach(userNos, userNo =>
|
||||
{
|
||||
before.TryGetValue(userNo, out var beforeTenantDeviceCodes);
|
||||
beforeTenantDeviceCodes ??= new();
|
||||
@@ -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,12 +581,11 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
var deviceRelationships = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().ToListAsync();
|
||||
|
||||
var result = new Dictionary<string, List<UserTenantDeviceCodeDto>>(gainfos.Count, StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
foreach (var gainfo in gainfos)
|
||||
Parallel.ForEach(gainfos, gainfo =>
|
||||
{
|
||||
var codes = GetAssignDeviceCodesInternal(gainfo, gainfoGroupRelationships, devicePermissions, deviceGroups, deviceRelationships, registries, devices);
|
||||
result.Add(gainfo.No, codes);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -74,7 +74,7 @@ public class JinkoSapService : IJinkoSapService
|
||||
|
||||
var body = new
|
||||
{
|
||||
I_ALLINFO = "X",
|
||||
//I_ALLINFO = "X",
|
||||
T_WERKS = new
|
||||
{
|
||||
item = new List<object>
|
||||
@@ -123,7 +123,7 @@ public class JinkoSapService : IJinkoSapService
|
||||
|
||||
var body = new
|
||||
{
|
||||
I_ALLINFO = "X",
|
||||
//I_ALLINFO = "X",
|
||||
T_WERKS = Array.Empty<string>(),
|
||||
T_PERSON = Array.Empty<string>(),
|
||||
T_PNO = new
|
||||
|
||||
Reference in New Issue
Block a user