fix 优化按人导入

This commit is contained in:
2024-11-28 22:27:55 +08:00
parent a405023f5d
commit 87e27a669e

View File

@@ -102,28 +102,42 @@ public class DevicePermissionService : IDevicePermissionService
public async Task AssignToUniqueAsync(DevicePermissionsAssignToDeviceRequest request)
{
await GenerateDeviceTasksAsync(async () =>
{
var currentTenantId = _currentUser.GetStringTenantId();
var currentTenantId = _currentUser.GetStringTenantId();
var today = DateTime.Today;
var factories = _currentUser.GetUserClaim("tenants").Split(",").ToList();
//删除当前匹配的基地权限
var p = await _dbContext.Queryable<DevicePermissionEntity>()
.Where(x => x.UniqueType == request.UniqueType)
.Where(x => x.UniqueValue == request.UniqueValue)
.Where(x => x.AssignType == request.AssignType)
.Where(x => x.Type == request.Type)
.Where(x => x.TenantId == currentTenantId)
//删除当前匹配的基地权限
var p = await _dbContext.Queryable<DevicePermissionEntity>()
.Where(x => x.UniqueType == request.UniqueType)
.Where(x => x.UniqueValue == request.UniqueValue)
.Where(x => x.AssignType == request.AssignType)
.Where(x => x.Type == request.Type)
.Where(x => x.TenantId == currentTenantId)
.ToListAsync();
var gainfoNos = p.Select(x => x.AssignValue).ToList();
if (request.Values.IsPresent())
{
var nos = await _dbContext.Client.Queryable<GainfoEntity>()
.Where(gainfo => factories.Contains(gainfo.Factory) || SqlFunc.Subqueryable<BusinessTripEntity>()
.Where(x => factories.Contains(x.Destination) && SqlFunc.DateIsSame(x.BeginDate, today))
.Any()
)
.Where(gainfo => request.Values.Contains(gainfo.Code) || request.Values.Contains(gainfo.No) || request.Values.Contains(gainfo.IdNo))
.Select(gainfo => gainfo.No)
.ToListAsync();
gainfoNos = gainfoNos.Concat(nos).Distinct().ToList();
}
await GenerateDeviceTasksAsync(async () =>
{
await _dbContext.DeleteAsync(p);
//保存配置的权限
if (request.Values.IsPresent())
{
var today = DateTime.Today;
var factories = _currentUser.GetUserClaim("tenants").Split(",").ToList();
var gainfoNos = await _dbContext.Client.Queryable<GainfoEntity>()
var nos = await _dbContext.Client.Queryable<GainfoEntity>()
.Where(gainfo => factories.Contains(gainfo.Factory) || SqlFunc.Subqueryable<BusinessTripEntity>()
.Where(x => factories.Contains(x.Destination) && SqlFunc.DateIsSame(x.BeginDate, today))
.Any()
@@ -135,7 +149,7 @@ public class DevicePermissionService : IDevicePermissionService
//todo 临时注释
//(gainfoNos.Count != request.Values.Count).ThrowIfTrue("存在非当前权限访问的人员,操作禁止!");
var devicePermissions = gainfoNos.Select(v => new DevicePermissionEntity
var devicePermissions = nos.Select(v => new DevicePermissionEntity
{
UniqueType = request.UniqueType,
UniqueValue = request.UniqueValue,
@@ -147,7 +161,8 @@ public class DevicePermissionService : IDevicePermissionService
await _dbContext.InsertAsync(devicePermissions);
}
}, null);
}, gainfoNos);
}
public async Task<List<Guid>> GetAssignmentsAsync(DeviceGetAssignmentsRequest request)