fix 无差异数据持久化

This commit is contained in:
2024-12-11 16:12:33 +08:00
parent 0aa476bcf3
commit 41be03fb12

View File

@@ -35,11 +35,16 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
public async Task<DevicePermissionAssignResponse> AnalyzeAsync(DevicePermissionSaveRequest request) public async Task<DevicePermissionAssignResponse> AnalyzeAsync(DevicePermissionSaveRequest request)
{ {
var tasksToAdd = new List<DeviceTaskEntity>();
var tasksToDelete = new List<DeviceTaskEntity>();
await CheckWhetherAssignToTopDeviceGroupAsync(request); await CheckWhetherAssignToTopDeviceGroupAsync(request);
await CheckAssignedToTenantAsync(request); await CheckAssignedToTenantAsync(request);
var dps = await _devicePermissionAnalyzeService.GetDevicePermissions(request); var dps = await _devicePermissionAnalyzeService.GetDevicePermissions(request);
try
{
(List<Guid> codesToAdd, List<Guid> codesToDelete) = await GetDiffAsync(request.UniqueType, dps, request.Codes); (List<Guid> codesToAdd, List<Guid> codesToDelete) = await GetDiffAsync(request.UniqueType, dps, request.Codes);
if (codesToAdd.IsEmpty() && codesToDelete.IsEmpty()) if (codesToAdd.IsEmpty() && codesToDelete.IsEmpty())
{ {
@@ -55,8 +60,7 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(gainfoNos, request.UniqueType, request.GetActualAssignValue(), request.AssignType) ? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(gainfoNos, request.UniqueType, request.GetActualAssignValue(), request.AssignType)
: new Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>(); : new Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>();
var tasksToAdd = new List<DeviceTaskEntity>();
var tasksToDelete = new List<DeviceTaskEntity>();
foreach (var gainfoNo in gainfoNos) foreach (var gainfoNo in gainfoNos)
{ {
IEnumerable<DeviceEntity> currentDevicesToDelete = devicesToDelete; IEnumerable<DeviceEntity> currentDevicesToDelete = devicesToDelete;
@@ -102,7 +106,11 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
await ChunkInsertAsync(tasksToAdd); await ChunkInsertAsync(tasksToAdd);
await ChunkInsertAsync(tasksToDelete); await ChunkInsertAsync(tasksToDelete);
}
finally
{
await PersistDataAsync(dps, request); await PersistDataAsync(dps, request);
}
return new DevicePermissionAssignResponse(tasksToAdd.Count, tasksToDelete.Count); return new DevicePermissionAssignResponse(tasksToAdd.Count, tasksToDelete.Count);
} }