From 8f370899e9b8fa5890a672d7112108278d0e785c Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 16 Jan 2025 14:44:51 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=A4=84=E7=90=86=E5=B7=B2=E7=9F=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DevicesConnectController.cs | 2 +- .../Device/Controllers/DevicesController.cs | 2 +- ...terRequest.cs => DeviceRegisterRequest.cs} | 2 +- .../Device/Services/IDeviceConnectService.cs | 2 +- .../Implements/DeviceConnectService.cs | 10 ++- .../DevicePermissionAnalyzeService.cs | 2 +- .../GainfoPermissionsController.cs | 2 - .../Implements/GainfoPermissionService.cs | 72 ++++++++++++++++++- 8 files changed, 85 insertions(+), 9 deletions(-) rename Src/Dlhis.Basic/Device/Request/{DeviceResigterRequest.cs => DeviceRegisterRequest.cs} (94%) diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs index 0b73672c..37bc6e5a 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs @@ -44,7 +44,7 @@ public class DevicesConnectController : ControllerBase /// [HttpPost("register")] [IgnoreTenant] - public async Task RegisterAsync(DeviceResigterRequest request) + public async Task RegisterAsync(DeviceRegisterRequest request) { return await _deviceConnectService.RegisterAsync(request); } diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs index 9be24cca..5f3d9cea 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs @@ -75,7 +75,7 @@ public class DevicesController : ControllerBase [Obsolete("迁移到DeviceConnect")] [HttpPost("resigter")] [IgnoreTenant] - public async Task RegisterAsync(DeviceResigterRequest request) + public async Task RegisterAsync(DeviceRegisterRequest request) { return await _deviceConnectService.RegisterAsync(request); } diff --git a/Src/Dlhis.Basic/Device/Request/DeviceResigterRequest.cs b/Src/Dlhis.Basic/Device/Request/DeviceRegisterRequest.cs similarity index 94% rename from Src/Dlhis.Basic/Device/Request/DeviceResigterRequest.cs rename to Src/Dlhis.Basic/Device/Request/DeviceRegisterRequest.cs index 2caa3331..3360d169 100644 --- a/Src/Dlhis.Basic/Device/Request/DeviceResigterRequest.cs +++ b/Src/Dlhis.Basic/Device/Request/DeviceRegisterRequest.cs @@ -2,7 +2,7 @@ namespace Dlhis.Basic.Device.Request; -public class DeviceResigterRequest +public class DeviceRegisterRequest { /// /// 唯一编码 diff --git a/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs b/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs index fed6c305..68395ede 100644 --- a/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs @@ -11,7 +11,7 @@ public interface IDeviceConnectService : IScopeDependency /// /// /// - Task RegisterAsync(DeviceResigterRequest request); + Task RegisterAsync(DeviceRegisterRequest request); /// diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs index 7cf1612e..f1560849 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs @@ -24,7 +24,7 @@ public class DeviceConnectService : IDeviceConnectService } - public async Task RegisterAsync(DeviceResigterRequest request) + public async Task RegisterAsync(DeviceRegisterRequest request) { var businessPlace = await _dbContext.Queryable().Where(x => x.CustomCode == request.BusinessCustomCode).SingleAsync(); businessPlace.ThrowIfNull("营业点不存在"); @@ -195,6 +195,14 @@ public class DeviceConnectService : IDeviceConnectService await _dbContext.InsertAsync(device); } + else + { + if (tenantId.IsPresent()) + { + device.TenantId = tenantId; + await _dbContext.UpdateAsync(device); + } + } } return device; diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionAnalyzeService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionAnalyzeService.cs index e448ce5e..24e1b8e6 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionAnalyzeService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DevicePermissionAnalyzeService.cs @@ -89,7 +89,7 @@ public class DevicePermissionAnalyzeService : IDevicePermissionAnalyzeService DeviceAssignmentTypeEnumType? ignoreUniqueType = null, string ignoreAssignValue = null, AssignTypeEnumType? ignoreAssignType = null) { - var gainfos = await _dbContext.Queryable().Where(x => userNos.Contains(x.No)).ToListAsync(); + var gainfos = await _dbContext.Queryable().WhereIF(userNos.IsPresent(), x => userNos.Contains(x.No)).ToListAsync(); if (!gainfos.Any()) return new Dictionary>(); var devices = await _dbContext.Queryable().ToListAsync(); diff --git a/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs b/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs index b8faad8b..d704bfff 100644 --- a/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs +++ b/Src/Dlhis.Basic/Organization/Controllers/GainfoPermissionsController.cs @@ -2,7 +2,6 @@ using Dlhis.Basic.Organization.Request; using Dlhis.Basic.Organization.Response; using Dlhis.Basic.Organization.Services; -using Dlhis.Basic.Places.Response; using Dlhis.Entity.Device.Enums; using Kurisu.AspNetCore.DataAccess.Dto; using Microsoft.AspNetCore.Authorization; @@ -17,7 +16,6 @@ public class GainfoPermissionsController : ControllerBase { private readonly IGainfoPermissionService _gainfoPermissions; - public GainfoPermissionsController(IGainfoPermissionService gainfoPermissions) { _gainfoPermissions = gainfoPermissions; diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs index 5d416a89..a5e9dad1 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/GainfoPermissionService.cs @@ -80,7 +80,10 @@ public class GainfoPermissionService : IGainfoPermissionService public async Task> GetAssignDeviceCodesAsync(DeviceAssRequest request) { var result = await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(new List { request.UserNo }); - var permissions = result[request.UserNo].ToList(); + if (!result.TryGetValue(request.UserNo, out var permissions)) + { + return new Pagination(); + } var codes = permissions.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).Distinct().ToList(); @@ -144,6 +147,73 @@ public class GainfoPermissionService : IGainfoPermissionService return page; } + // + // public async Task> GetAllUserAssignDeviceCodesAsync() + // { + // var result = await _devicePermissionAnalyzeService.GetUserAssignDeviceCodesWithTypeInTenantAsync(null); + // + // var codes = permissions.SelectMany(x => x.AssignTypes.SelectMany(p => p.Codes)).Distinct().ToList(); + // + // var page = await _dbContext.Queryable() + // .LeftJoin((d, dr) => d.UniqueNo == dr.DeviceUniqueNo) + // .WhereIF(request.DeviceType.HasValue, d => d.Type == request.DeviceType) + // .WhereIF(request.Search.IsPresent(), d => d.UniqueNo == request.Search) + // .Where(d => codes.Contains(d.Code)) + // .Select((d, dr) => new GainfoDevicePermissionResponse { Factory = d.TenantId }, true) + // .ToPageListAsync(request); + // + // var deviceGroups = await _dbContext.Queryable().Select(x => new { x.Code, x.Name }).ToListAsync(); + // var departments = permissions.Any(x => x.AssignTypes.Any(p => p.AssignType == AssignTypeEnumType.Department)) + // ? await _dbContext.Queryable().Select(x => new { x.No, x.Name }).ToListAsync() + // : new[] { new { No = string.Empty, Name = string.Empty } }.ToList(); + // + // var userGroups = permissions.Any(x => x.AssignTypes.Any(p => p.AssignType == AssignTypeEnumType.Group)) + // ? await _dbContext.Queryable().Select(x => new { x.Code, x.Name }).ToListAsync() + // : new[] { new { Code = Guid.Empty, Name = string.Empty } }.ToList(); + // + // page.Data.ForEach(item => + // { + // var permission = permissions.FirstOrDefault(x => x.Tenant == item.Factory); + // if (permission != null) + // { + // item.Source = new DevicePermissionSourceDto + // { + // Factory = item.Factory, + // Types = permission.AssignTypes.Where(x => x.Codes.Any(p => p == item.Code)).Select(x => + // { + // var codeDesc = x.UniqueType == DeviceAssignmentTypeEnumType.Device + // ? item.DeployPlace + // : deviceGroups.FirstOrDefault(p => p.Code == x.OriginalCodes.First())?.Name; + // + // var currentAssignValue = x.AssignValue; + // + // currentAssignValue = x.AssignType switch + // { + // AssignTypeEnumType.Department => departments.FirstOrDefault(p => p.No == x.AssignValue.Split(":")[1])?.Name, + // AssignTypeEnumType.Group => userGroups.FirstOrDefault(p => p.Code == Guid.Parse(currentAssignValue))?.Name, + // AssignTypeEnumType.User => "自己", + // _ => currentAssignValue + // }; + // + // var r = new DevicePermissionSourceTypeDto + // { + // AssignType = x.AssignType, + // AssignValue = currentAssignValue, + // UniqueType = x.UniqueType, + // Codes = x.UniqueType == DeviceAssignmentTypeEnumType.Device + // ? x.Codes.Where(p => p == item.Code) + // : x.Codes.Take(1), + // CodeDesc = codeDesc + // }; + // + // return r; + // }) + // }; + // } + // }); + // + // return page; + // } public async Task ResetPermissionsAsync(string userNo, DeviceTaskEnumType type, List deviceCodes, string source)