fix 无差异数据持久化
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user