From 7e474a002a52d5d73a7f622e5d986e66aef046ad Mon Sep 17 00:00:00 2001 From: wyw <571921741@qq.com> Date: Thu, 23 Oct 2025 11:03:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=9F=90=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=9A=84conn=20FullGet=20=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IServices/OP/IOPTenantDBConnService.cs | 7 ++ .../Services/OP/OPTenantDBConnService.cs | 68 ++++++++++++++++++- .../Controllers/Api/ApproveController.cs | 16 ++++- 3 files changed, 88 insertions(+), 3 deletions(-) diff --git a/APT.BaseData.Domain/IServices/OP/IOPTenantDBConnService.cs b/APT.BaseData.Domain/IServices/OP/IOPTenantDBConnService.cs index e9151ba..d493f25 100644 --- a/APT.BaseData.Domain/IServices/OP/IOPTenantDBConnService.cs +++ b/APT.BaseData.Domain/IServices/OP/IOPTenantDBConnService.cs @@ -15,5 +15,12 @@ namespace APT.BaseData.Domain.IServices.OP /// /// Dictionary GetConnDictionary(Guid? ORG_IDBeside); + + /// + /// 获取 ORG_ID的数据库链接 + /// + /// 过滤值 + /// + string GetConnByORGID(Guid ORG_ID); } } diff --git a/APT.BaseData.Services/Services/OP/OPTenantDBConnService.cs b/APT.BaseData.Services/Services/OP/OPTenantDBConnService.cs index f9995b3..f4a9c4a 100644 --- a/APT.BaseData.Services/Services/OP/OPTenantDBConnService.cs +++ b/APT.BaseData.Services/Services/OP/OPTenantDBConnService.cs @@ -78,7 +78,7 @@ namespace APT.BaseData.Services.Services.OP } } } - } + } #endregion if (dicORGCONN != null && dicORGCONN.Count > 0) @@ -98,5 +98,71 @@ namespace APT.BaseData.Services.Services.OP } return dicORGCONN; } + + /// + /// 获取 ORG_ID的数据库链接 + /// + /// 过滤值 + /// + public string GetConnByORGID(Guid ORG_ID) + { + Dictionary dicORGCONN = new Dictionary(); + //从Redis中获取所有数据库链接值 + + bool isRedisConfig = true; + var redisConfig = APT.Infrastructure.Api.ConfigurationManager.AppSettings["RedisFormConfig"]; + if (!string.IsNullOrEmpty(redisConfig)) + isRedisConfig = bool.Parse(redisConfig); + if (isRedisConfig) + { + if (CsRedisManager.KeyExists(RedisCacheKey.ConnAll)) + dicORGCONN = CsRedisManager.StringGet>(RedisCacheKey.ConnAll); + } + #region Redis没找到 去数据库查找 + + if (dicORGCONN == null || dicORGCONN.Count < 1) + { + string conn = string.Empty; + IEnumerable listTent = null; + using (var context = new MigrationContext()) + { + Expression> expression = e => e.DB_CONN_ID.HasValue; + listTent = context.GetEntities(expression, null, null); + List listConnID = listTent.Select(e => e.DB_CONN_ID.Value).ToList(); + var listDbConn = context.GetEntities(e => listConnID.Contains(e.ID), null, null); + if (listDbConn != null && listDbConn.Count() > 0) + { + var env = ConfigurationManager.AppSettings["Env"]; + foreach (var item in listDbConn) + { + conn = item.DB_CONN; + if (env == ((int)EnvType.外网).ToString()) + { + conn = item.DB_CONN_WAN; + } + if (!dicORGCONN.ContainsKey(item.ID)) + { + dicORGCONN.Add(listTent.First(e => e.DB_CONN_ID == item.ID).ID, conn); + } + } + if (isRedisConfig && dicORGCONN.Count > 0) + { + try + { + CsRedisManager.StringSet>(RedisCacheKey.ConnAll, dicORGCONN);//所有数据库链接 存入 Redis + } + catch { } + } + } + } + } + #endregion + + if (dicORGCONN != null && dicORGCONN.Count > 0 && dicORGCONN.ContainsKey(ORG_ID)) + { + return dicORGCONN[ORG_ID]; + } + return ""; + } } } diff --git a/APT.MicroApi/APT.PF.WebApi/Controllers/Api/ApproveController.cs b/APT.MicroApi/APT.PF.WebApi/Controllers/Api/ApproveController.cs index 4b9d122..3f77f8d 100644 --- a/APT.MicroApi/APT.PF.WebApi/Controllers/Api/ApproveController.cs +++ b/APT.MicroApi/APT.PF.WebApi/Controllers/Api/ApproveController.cs @@ -31,6 +31,7 @@ using APT.BaseData.Services.Services.FM; using APT.BaseData.Services.Sys; using APT.MS.Domain.Entities.FO; + using APT.BaseData.Domain.IServices.OP; [Route("api/PF/PFApprove")] public partial class ApproveController : AuthorizeApiController @@ -43,8 +44,9 @@ IFMDepartmentService DepartmentService { get; set; } IFMUserService UserService { get; set; } + IOPTenantDBConnService OPTenantDBConnService { get; set; } - public ApproveController(IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IRepository repository, IPFCodeRuleService codeRuleService, IFMDepartmentService departmentService, IFMUserService userService) + public ApproveController(IFMNotificationTaskService notificationTaskService, IPFSysLogService sysLogService, IRepository repository, IPFCodeRuleService codeRuleService, IFMDepartmentService departmentService, IFMUserService userService, IOPTenantDBConnService oPTenantDBConnService) { NotificationTaskService = notificationTaskService; SysLogService = sysLogService; @@ -52,6 +54,7 @@ CodeRuleService = codeRuleService; DepartmentService = departmentService; UserService = userService; + OPTenantDBConnService = oPTenantDBConnService; } /// /// 更新或新增数据 @@ -653,8 +656,17 @@ //集团人员 通过 首页点击 获取对应的数据库链接 返回结果 //这边怎么调用 原生的 GetEntity 方法 - //ICommonService service = _serviceLocator.GetService(); + string conn = OPTenantDBConnService.GetConnByORGID(new Guid(filter.Parameter1)); + //var service = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); + filter.IgnoreOrgRule = true; + //filter.OrgId = null; + filter.SpecifyDbConn = conn; + filter.SpecifyTenant = "0005"; + //var ccc = service.GetEntities(e => !e.IS_DELETED, filter, null); + + + var aaa = GetEntities(e => !e.IS_DELETED, filter, null); } else {