fix 增加任务详情返回

This commit is contained in:
2024-08-06 13:58:35 +08:00
parent 2abd983b4e
commit e4d0e327eb
5 changed files with 33 additions and 19 deletions

View File

@@ -32,9 +32,9 @@ public class DevicePermissionsController : ControllerBase
[AssignPermissionLimit] [AssignPermissionLimit]
[Transactional] [Transactional]
[CrossTenant] [CrossTenant]
public async Task AssignAsync(DevicePermissionSaveRequest request) public async Task<DevicePermissionAssignResponse> AssignAsync(DevicePermissionSaveRequest request)
{ {
await _devicePermissionService.AssignAsync(request); return await _devicePermissionService.AssignAsync(request);
} }
/// <summary> /// <summary>

View File

@@ -53,7 +53,8 @@ public class DevicePermissionSaveRequest : IValidatableObject
yield return new ValidationResult("请明确具体的厂区", new[] { nameof(TenantId) }); yield return new ValidationResult("请明确具体的厂区", new[] { nameof(TenantId) });
} }
} }
else if (AssignType == AssignTypeEnumType.Role)
if (AssignType == AssignTypeEnumType.Role)
{ {
yield return new ValidationResult("暂不支持角色分配", new[] { nameof(AssignType) }); yield return new ValidationResult("暂不支持角色分配", new[] { nameof(AssignType) });
} }

View File

@@ -0,0 +1,14 @@
namespace Dlhis.Basic.Device.Response;
public class DevicePermissionAssignResponse
{
/// <summary>
/// 添加数量
/// </summary>
public int AddCount { get; set; }
/// <summary>
/// 删除数量
/// </summary>
public int DeleteCount { get; set; }
}

View File

@@ -14,7 +14,7 @@ public interface IDevicePermissionService : IScopeDependency
/// </summary> /// </summary>
/// <param name="request"></param> /// <param name="request"></param>
/// <returns></returns> /// <returns></returns>
Task AssignAsync(DevicePermissionSaveRequest request); Task<DevicePermissionAssignResponse> AssignAsync(DevicePermissionSaveRequest request);
/// <summary> /// <summary>
/// 分配到设备 /// 分配到设备
@@ -38,7 +38,7 @@ public interface IDevicePermissionService : IScopeDependency
/// <param name="func"></param> /// <param name="func"></param>
/// <param name="userNos"></param> /// <param name="userNos"></param>
/// <returns></returns> /// <returns></returns>
Task GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos); Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos);
/// <summary> /// <summary>

View File

@@ -25,21 +25,19 @@ public class DevicePermissionService : IDevicePermissionService
private readonly IMyDataPermissionService _myDataPermissionService; private readonly IMyDataPermissionService _myDataPermissionService;
private readonly ITenantApi _tenantApi; private readonly ITenantApi _tenantApi;
private readonly ICurrentUser _currentUser; private readonly ICurrentUser _currentUser;
private readonly ILogger<DevicePermissionService> _logger;
public DevicePermissionService(IDbContext dbContext, IMyDataPermissionService myDataPermissionService, ITenantApi tenantApi, public DevicePermissionService(IDbContext dbContext, IMyDataPermissionService myDataPermissionService, ITenantApi tenantApi,
ICurrentUser currentUser, ILogger<DevicePermissionService> logger) ICurrentUser currentUser)
{ {
_dbContext = dbContext; _dbContext = dbContext;
_myDataPermissionService = myDataPermissionService; _myDataPermissionService = myDataPermissionService;
_tenantApi = tenantApi; _tenantApi = tenantApi;
_currentUser = currentUser; _currentUser = currentUser;
_logger = logger;
} }
public async Task AssignAsync(DevicePermissionSaveRequest request) public async Task<DevicePermissionAssignResponse> AssignAsync(DevicePermissionSaveRequest request)
{ {
await GenerateDeviceTasksAsync(async () => return await GenerateDeviceTasksAsync(async () =>
{ {
request.AssignValue = request.AssignType == AssignTypeEnumType.Department ? request.TenantId + ":" + request.AssignValue : request.AssignValue; request.AssignValue = request.AssignType == AssignTypeEnumType.Department ? request.TenantId + ":" + request.AssignValue : request.AssignValue;
var currentTenantId = _currentUser.GetStringTenantId(); var currentTenantId = _currentUser.GetStringTenantId();
@@ -160,16 +158,13 @@ public class DevicePermissionService : IDevicePermissionService
}).ToListAsync(); }).ToListAsync();
} }
public async Task GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos) public async Task<DevicePermissionAssignResponse> GenerateDeviceTasksAsync(Func<Task> func, List<string> userNos)
{ {
var tenantId = _currentUser.GetStringTenantId();
//获取所有人的权限 //获取所有人的权限
if (userNos.IsEmpty()) if (userNos.IsEmpty())
userNos = await GetPermissionUserNosAsync(); userNos = await GetPermissionUserNosAsync();
var before = await GetAssignDeviceCodesInternalAsync(userNos); var before = await GetAssignDeviceCodesInternalAsync(userNos);
_logger.LogInformation("{tenant}任务前置人数{count}", tenantId, userNos.Count);
//业务处理 //业务处理
_dbContext.Client.QueryFilter.Restore(); _dbContext.Client.QueryFilter.Restore();
@@ -182,7 +177,6 @@ public class DevicePermissionService : IDevicePermissionService
userNos = userNos.Concat(nextUserNos).Distinct().ToList(); userNos = userNos.Concat(nextUserNos).Distinct().ToList();
var current = await GetAssignDeviceCodesInternalAsync(userNos); var current = await GetAssignDeviceCodesInternalAsync(userNos);
_logger.LogInformation("{tenant}任务后置人数{count}", tenantId, userNos.Count);
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Enable).ToListAsync(); var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Enable).ToListAsync();
var waitAddTasks = new List<DeviceTaskEntity>(); var waitAddTasks = new List<DeviceTaskEntity>();
@@ -191,9 +185,9 @@ public class DevicePermissionService : IDevicePermissionService
foreach (var userNo in userNos) foreach (var userNo in userNos)
{ {
before.TryGetValue(userNo, out var beforeTenantDeviceCodes); before.TryGetValue(userNo, out var beforeTenantDeviceCodes);
beforeTenantDeviceCodes ??= new(); beforeTenantDeviceCodes ??= new List<UserTenantDeviceCodeDto>();
current.TryGetValue(userNo, out var currentTenantDeviceCodes); current.TryGetValue(userNo, out var currentTenantDeviceCodes);
currentTenantDeviceCodes ??= new(); currentTenantDeviceCodes ??= new List<UserTenantDeviceCodeDto>();
var tenants = new HashSet<string>(); var tenants = new HashSet<string>();
foreach (var item in beforeTenantDeviceCodes) foreach (var item in beforeTenantDeviceCodes)
@@ -248,7 +242,6 @@ public class DevicePermissionService : IDevicePermissionService
} }
} }
_logger.LogInformation("{tenant}任务产生新增数量{addCount},删除数量:{delteCount}", tenantId, waitAddTasks.Count, waitDeleteTasks.Count);
if (waitAddTasks.Any()) if (waitAddTasks.Any())
{ {
await _dbContext.InsertAsync(waitAddTasks); await _dbContext.InsertAsync(waitAddTasks);
@@ -258,6 +251,12 @@ public class DevicePermissionService : IDevicePermissionService
{ {
await _dbContext.InsertAsync(waitDeleteTasks); await _dbContext.InsertAsync(waitDeleteTasks);
} }
return new DevicePermissionAssignResponse
{
AddCount = waitAddTasks.Count,
DeleteCount = waitDeleteTasks.Count
};
} }
public async Task<PermissionUsersInfoDto> GetPermissionUsersInfoAsync(List<string> userNos) public async Task<PermissionUsersInfoDto> GetPermissionUsersInfoAsync(List<string> userNos)