fix 处理离职人员
This commit is contained in:
@@ -23,12 +23,12 @@ public interface IDevicePermissionAnalyzeService : IScopeDependency
|
||||
Task<List<Guid>> GetAssignDeviceCodesAsync(string userCode);
|
||||
|
||||
|
||||
Task<Dictionary<string, IEnumerable<UserTenantDeviceCodeDto>>> GetUserAssignDeviceCodesInTenantAsync(
|
||||
Task<Dictionary<string, List<UserTenantDeviceCodeDto>>> GetUserAssignDeviceCodesInTenantAsync(
|
||||
List<string> userNos,
|
||||
DeviceAssignmentTypeEnumType? ignoreUniqueType = null,
|
||||
string ignoreAssignValue = null, AssignTypeEnumType? ignoreAssignType = null);
|
||||
|
||||
Task<Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>> GetUserAssignDeviceCodesWithTypeInTenantAsync(
|
||||
Task<Dictionary<string, List<TenantAssignTypeDeviceCode>>> GetUserAssignDeviceCodesWithTypeInTenantAsync(
|
||||
List<string> userNos,
|
||||
DeviceAssignmentTypeEnumType? ignoreUniqueType = null,
|
||||
string ignoreAssignValue = null, AssignTypeEnumType? ignoreAssignType = null
|
||||
|
||||
@@ -58,7 +58,7 @@ public abstract class BasePermissionAnalyzeService : IPermissionAnalyzeService
|
||||
|
||||
var userTenantDeviceCodes = devicesToDelete.IsPresent() && request.AssignType != AssignTypeEnumType.Tenant
|
||||
? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(gainfoNos, request.UniqueType, request.GetActualAssignValue(), request.AssignType)
|
||||
: new Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>();
|
||||
: new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
||||
|
||||
|
||||
foreach (var gainfoNo in gainfoNos)
|
||||
|
||||
@@ -170,7 +170,7 @@ public class DeviceGroupService : IDeviceGroupService
|
||||
|
||||
var userTenantDeviceCodes = codesToDelete.IsPresent() && dps.Exists(x => x.AssignType != AssignTypeEnumType.Tenant)
|
||||
? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(gainfoNos)
|
||||
: new Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>();
|
||||
: new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
||||
|
||||
|
||||
var devicesToAdd = await _dbContext.Queryable<DeviceEntity>().Where(x => codesToAdd.Contains(x.Code)).ToListAsync();
|
||||
@@ -198,7 +198,8 @@ public class DeviceGroupService : IDeviceGroupService
|
||||
|
||||
if (userTenantDeviceCodes.Any())
|
||||
{
|
||||
var permissions = userTenantDeviceCodes[gainfoNo].ToList();
|
||||
if (userTenantDeviceCodes.TryGetValue(gainfoNo, out var permissions))
|
||||
{
|
||||
foreach (var permission in permissions)
|
||||
{
|
||||
permission.AssignTypes = permission.AssignTypes.Where(p =>
|
||||
@@ -232,6 +233,7 @@ public class DeviceGroupService : IDeviceGroupService
|
||||
}).ToList());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await _dbContext.InsertAsync(tasksToAdd);
|
||||
await _dbContext.InsertAsync(tasksToDelete);
|
||||
|
||||
@@ -147,13 +147,13 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
||||
}
|
||||
|
||||
|
||||
public async Task<Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>> GetUserAssignDeviceCodesWithTypeInTenantAsync(
|
||||
public async Task<Dictionary<string, List<TenantAssignTypeDeviceCode>>> GetUserAssignDeviceCodesWithTypeInTenantAsync(
|
||||
List<string> userNos,
|
||||
DeviceAssignmentTypeEnumType? ignoreUniqueType = null,
|
||||
string ignoreAssignValue = null, AssignTypeEnumType? ignoreAssignType = null)
|
||||
{
|
||||
var gainfos = await _dbContext.Queryable<GainfoEntity>().Where(x => userNos.Contains(x.No)).ToListAsync();
|
||||
if (!gainfos.Any()) return new Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>();
|
||||
if (!gainfos.Any()) return new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
||||
|
||||
var devices = await _dbContext.Queryable<DeviceEntity>().Where(x => x.Enable).ToListAsync();
|
||||
|
||||
@@ -170,7 +170,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
||||
var deviceRelationships = await _dbContext.Queryable<DeviceGroupRelationshipEntity>().ToListAsync();
|
||||
var departments = await _dbContext.Queryable<DepartmentEntity>().ToListAsync();
|
||||
|
||||
var result = new ConcurrentDictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>();
|
||||
var result = new ConcurrentDictionary<string, List<TenantAssignTypeDeviceCode>>();
|
||||
|
||||
gainfos.ParallelForEach(gainfo =>
|
||||
{
|
||||
@@ -210,7 +210,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
||||
}
|
||||
|
||||
|
||||
private static IEnumerable<TenantAssignTypeDeviceCode> GetAssignDeviceCodesPermissions(
|
||||
private static List<TenantAssignTypeDeviceCode> GetAssignDeviceCodesPermissions(
|
||||
AnalyzePackDto analyzePack,
|
||||
List<GainfoGroupEntity> gainfoGroups,
|
||||
List<DevicePermissionDto> devicePermissions,
|
||||
@@ -286,7 +286,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
||||
};
|
||||
|
||||
return dto;
|
||||
});
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
private static List<TenantAssignTypeDeviceCode> SearchActualAssignPermissions(
|
||||
@@ -346,7 +346,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
||||
}
|
||||
|
||||
|
||||
public async Task<Dictionary<string, IEnumerable<UserTenantDeviceCodeDto>>> GetUserAssignDeviceCodesInTenantAsync(
|
||||
public async Task<Dictionary<string, List<UserTenantDeviceCodeDto>>> GetUserAssignDeviceCodesInTenantAsync(
|
||||
List<string> userNos,
|
||||
DeviceAssignmentTypeEnumType? ignoreUniqueType = null,
|
||||
string ignoreAssignValue = null, AssignTypeEnumType? ignoreAssignType = null)
|
||||
@@ -360,7 +360,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService
|
||||
Tenant = item.Key,
|
||||
Codes = item.SelectMany(p => p.AssignTypes).SelectMany(p => p.Codes).Distinct().ToList(),
|
||||
};
|
||||
}));
|
||||
}).ToList());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
|
||||
var userTenantDeviceCodes = usersToDelete.IsPresent()
|
||||
? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(beforeUserNos.Union(presentUserNos).ToList())
|
||||
: new Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>();
|
||||
: new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
||||
|
||||
tasksToAdd.AddRange(usersToAdd.Select(userNo => new DeviceTaskEntity
|
||||
{
|
||||
@@ -109,7 +109,8 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
|
||||
foreach (var item in usersToDelete)
|
||||
{
|
||||
var permissions = userTenantDeviceCodes[item].ToList();
|
||||
if (userTenantDeviceCodes.TryGetValue(item, out var permissions))
|
||||
{
|
||||
foreach (var permission in permissions)
|
||||
{
|
||||
permission.AssignTypes = permission.AssignTypes.Where(x => x.UniqueType != DeviceAssignmentTypeEnumType.Device).ToList();
|
||||
@@ -136,6 +137,7 @@ public class DevicePermissionService : IDevicePermissionService
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
await _dbContext.InsertAsync(tasksToAdd);
|
||||
|
||||
@@ -158,7 +158,7 @@ public class GainfoGroupService : IGainfoGroupService
|
||||
|
||||
var userTenantDeviceCodes = usersToDelete.IsPresent() && dps.Exists(x => x.AssignType != AssignTypeEnumType.Tenant)
|
||||
? await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(beforeUserNos.Union(presentUserNos).ToList())
|
||||
: new Dictionary<string, IEnumerable<TenantAssignTypeDeviceCode>>();
|
||||
: new Dictionary<string, List<TenantAssignTypeDeviceCode>>();
|
||||
|
||||
var addTasks = new List<DeviceTaskEntity>();
|
||||
var deleteTasks = new List<DeviceTaskEntity>();
|
||||
@@ -166,7 +166,8 @@ public class GainfoGroupService : IGainfoGroupService
|
||||
{
|
||||
foreach (var item in usersToDelete)
|
||||
{
|
||||
var permissions = userTenantDeviceCodes[item].ToList();
|
||||
if (userTenantDeviceCodes.TryGetValue(item, out var permissions))
|
||||
{
|
||||
foreach (var permission in permissions)
|
||||
{
|
||||
permission.AssignTypes = permission.AssignTypes.Where(p => !gainfoGroupCodes.Contains(p.AssignValue)).ToList();
|
||||
@@ -194,6 +195,7 @@ public class GainfoGroupService : IGainfoGroupService
|
||||
TenantId = device.TenantId
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var item in usersToAdd)
|
||||
{
|
||||
|
||||
@@ -5,6 +5,8 @@ using Dlhis.Entity.Basic.Entity;
|
||||
using Dlhis.Entity.Basic.Enums;
|
||||
using Dlhis.Entity.Device.Entities;
|
||||
using Dlhis.Entity.Device.Enums;
|
||||
using Dlhis.Entity.Sys.Entities;
|
||||
using Dlhis.Entity.Sys.Enums;
|
||||
using Dlhis.Entity.Visitor.Entity;
|
||||
using Dlhis.Sys.Api;
|
||||
using Kurisu.AspNetCore.Authentication.Abstractions;
|
||||
@@ -252,6 +254,8 @@ public class GainfoService : IGainfoService
|
||||
(outsource == null).ThrowIfTrue("非外包人员不可手动离职");
|
||||
}
|
||||
|
||||
await _dbContext.Deleteable<GainfoGroupRelationshipEntity>().Where(x => x.UserNo != gainfo.No).ExecuteCommandAsync();
|
||||
await _dbContext.Deleteable<DevicePermissionEntity>().Where(x => x.AssignType == AssignTypeEnumType.User && x.AssignValue == gainfo.No).ExecuteCommandAsync();
|
||||
|
||||
//先写入离职表
|
||||
gainfo.IdentityUserId = (int)gainfo.Id; //记录原始id
|
||||
|
||||
Reference in New Issue
Block a user