This commit is contained in:
2024-06-14 20:02:51 +08:00
parent 2567790799
commit 2061484ee1
4 changed files with 11 additions and 121 deletions

View File

@@ -119,18 +119,4 @@ public class DevicePermissionsController : ControllerBase
{
return await _devicePermissionService.GetGainfoPageByDeviceAsync(request);
}
[DataPermission]
[HttpGet("test")]
public async Task GetTextData()
{
await _devicePermissionService.GetTestData();
}
[DataPermission]
[HttpGet("test/user")]
public async Task GetTestUserNoData()
{
await _devicePermissionService.GetTestUserNoData();
}
}

View File

@@ -1,5 +1,6 @@
using Dlhis.Entity.Sys.Enums;
using System.ComponentModel.DataAnnotations;
using Dlhis.Entity.Device.Enums;
namespace Dlhis.Basic.Device.Request;
@@ -21,4 +22,9 @@ public class DeviceGetAssignmentsRequest
/// 分配值
/// </summary>
public string AssignValue { get; set; }
}
/// <summary>
/// 设备类型
/// </summary>
public DeviceTypeEnumType Type { get; set; }
}

View File

@@ -9,10 +9,6 @@ namespace Dlhis.Basic.Device.Services;
public interface IDevicePermissionService : IScopeDependency
{
Task<object> GetTestData();
Task<object> GetTestUserNoData();
/// <summary>
/// 保存设备权限
/// </summary>

View File

@@ -154,104 +154,6 @@ public class DevicePermissionService : IDevicePermissionService
return result.FirstOrDefault(x => x.Tenant == _currentUser.GetStringTenantId())?.Codes;
}
public async Task<object> GetTestData()
{
var userNos = new List<string>();
//获取所有人的权限
if (userNos.IsEmpty())
userNos = await GetPermissionUserNosAsync();
var before = await GetAssignDeviceCodesInternalAsync(userNos);
return before;
}
public async Task<object> GetTestUserNoData()
{
var userNos = new List<string>();
_dbContext.Client.QueryFilter.ClearAndBackup<ITenantId>();
try
{
//获取所有人的权限
if (userNos.IsEmpty())
userNos = await GetPermissionUserNosAsync();
var before = await GetAssignDeviceCodesInternalAsync(userNos);
//获取业务处理后所有人的权限
var nextUserNos = await GetPermissionUserNosAsync();
if (nextUserNos.Any())
userNos = userNos.Concat(nextUserNos).Distinct().ToList();
var current = await GetAssignDeviceCodesInternalAsync(userNos);
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Enable).ToListAsync();
foreach (var userNo in userNos)
{
before.TryGetValue(userNo, out var beforeTenantDeviceCodes);
beforeTenantDeviceCodes ??= new();
current.TryGetValue(userNo, out var currentTenantDeviceCodes);
currentTenantDeviceCodes ??= new();
var tenants = beforeTenantDeviceCodes.Select(x => x.Tenant).Concat(currentTenantDeviceCodes.Select(x => x.Tenant)).Distinct().ToList();
foreach (var tenant in tenants)
{
var currentCodes = currentTenantDeviceCodes.FirstOrDefault(x => x.Tenant == tenant)?.Codes ?? new();
var beforeCodes = beforeTenantDeviceCodes.FirstOrDefault(x => x.Tenant == tenant)?.Codes ?? new();
//被删除
var deletedItems = beforeCodes.Where(x => !currentCodes.Contains(x)).ToList();
//新增
var addItems = currentCodes.Where(x => !beforeCodes.Contains(x)).ToList();
if (!deletedItems.Any() && !addItems.Any())
{
continue;
}
var deviceCodes = devices.Where(x => deletedItems.Contains(x.Code) || addItems.Contains(x.Code)).Select(x => x.Code).ToList();
deletedItems = deletedItems.Where(x => deviceCodes.Contains(x)).ToList();
addItems = addItems.Where(x => deviceCodes.Contains(x)).ToList();
//下发任务创建
var toDeleted = deletedItems.Select(x => new DeviceTaskEntity
{
DeviceUniqueNo = devices.First(item => item.Code == x).UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,
Type = DeviceTaskEnumType.Delete,
CancellationId = 0,
DeviceType = devices.First(item => item.Code == x).Type,
UserNo = userNo,
Version = 0,
TenantId = tenant,
}).ToList();
var toAdd = addItems.Select(x => new DeviceTaskEntity
{
DeviceUniqueNo = devices.First(item => item.Code == x).UniqueNo,
Status = DeviceTaskStatusEnumType.Wait,
Type = DeviceTaskEnumType.Add,
DeviceType = devices.First(item => item.Code == x).Type,
UserNo = userNo,
Version = 0,
TenantId = tenant,
}).ToList();
}
}
}
finally
{
_dbContext.Client.QueryFilter.Restore();
}
return null;
}
public async Task GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos)
{
//获取所有人的权限
@@ -338,10 +240,10 @@ public class DevicePermissionService : IDevicePermissionService
}
_logger.LogInformation("任务产生数量{count}", waitTasks.Count);
if (waitTasks.Any())
{
await _dbContext.InsertAsync(waitTasks);
}
// if (waitTasks.Any())
// {
// await _dbContext.InsertAsync(waitTasks);
// }
}
public async Task<PermissionUsersInfoDto> GetPermissionUsersInfoAsync(List<string> userNos)