From 87e27a669e67201525558704a3bb49b2eec31b35 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 28 Nov 2024 22:27:55 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BC=98=E5=8C=96=E6=8C=89=E4=BA=BA?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/DevicePermissionService.cs | 47 ++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 5c7a2867..bceb2495 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -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() - .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() + .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() + .Where(gainfo => factories.Contains(gainfo.Factory) || SqlFunc.Subqueryable() + .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() + var nos = await _dbContext.Client.Queryable() .Where(gainfo => factories.Contains(gainfo.Factory) || SqlFunc.Subqueryable() .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> GetAssignmentsAsync(DeviceGetAssignmentsRequest request)