From 6afe09baa8075cb41a6ab3ccdca46feb6f3d8eb4 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 14 Oct 2024 11:16:57 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E9=80=9A=E8=BF=87=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BA=BA=E5=91=98=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevicePermissionsController.cs | 1 + .../Implements/DevicePermissionService.cs | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs index 65682aa1..f19e51fb 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicePermissionsController.cs @@ -78,6 +78,7 @@ public class DevicePermissionsController : ControllerBase /// /// [HttpGet("gainfos/page")] + [CrossTenant] public async Task> GetGainfoPageByDeviceAsync([FromQuery] DeviceWithGainfoRequest request) { return await _devicePermissionService.GetGainfoPageByDeviceAsync(request); diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs index 63fbf923..6b1cae24 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionService.cs @@ -364,6 +364,7 @@ public class DevicePermissionService : IDevicePermissionService public async Task> GetGainfoPageByDeviceAsync(DeviceWithGainfoRequest request) { var device = await _dbContext.Queryable().Where(x => x.UniqueNo == request.DeviceUniqueNo).SingleAsync(); + var departments = await _dbContext.Queryable().ToListAsync(); //当前设备的分组 var groups = await _dbContext.Queryable() @@ -394,7 +395,14 @@ public class DevicePermissionService : IDevicePermissionService break; case AssignTypeEnumType.Department: { - ids.AddRange(await _dbContext.Queryable().Where(x => x.DepartmentNo == permission.AssignValue).Select(x => x.Id).ToListAsync()); + //递归向上获取 assignValue = department.No + var arr = permission.AssignValue.Split(":"); + var tenantId = arr.First(); + var currentDepartmentNo = arr.Last(); + var departmentNos = new List { currentDepartmentNo }; + DepartmentRecursionGetPNo(currentDepartmentNo, departments, departmentNos); + + ids.AddRange(await _dbContext.Queryable().Where(x => x.Factory == tenantId && departmentNos.Contains(x.DepartmentNo)).Select(x => x.Id).ToListAsync()); } break; case AssignTypeEnumType.Tenant: @@ -450,6 +458,16 @@ public class DevicePermissionService : IDevicePermissionService }); return page; + + void DepartmentRecursionGetPNo(string current, List data, List result) + { + var p = data.FirstOrDefault(x => x.No == current)?.PNo; + if (p.IsPresent()) + { + result.Add(p); + DepartmentRecursionGetPNo(p, data, result); + } + } } public async Task GenerateDeviceTasksAsync(string userNo, DeviceTaskEnumType taskType, DeviceTaskSourceEnumType source)