From c15bffb8522417ef4d9885d8a5e4a2aeb79831ea Mon Sep 17 00:00:00 2001 From: hutongqing <hutongqing@hnkhzn.com> Date: 星期四, 28 十一月 2024 15:46:21 +0800 Subject: [PATCH] 更新 --- WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs | 90 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 69 insertions(+), 21 deletions(-) diff --git a/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs b/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs index 17a1fc2..8814ec7 100644 --- a/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs +++ b/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs @@ -1,10 +1,20 @@ -锘縰sing System; +锘縰sing Newtonsoft.Json; +using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; +using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; +using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; +using WIDESEAWCS_Core.Caches; +using WIDESEAWCS_Core.DB; +using WIDESEAWCS_Core.Enums; +using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_DTO.System; using WIDESEAWCS_ISystemRepository; using WIDESEAWCS_ISystemServices; using WIDESEAWCS_Model.Models; @@ -14,37 +24,75 @@ public class Sys_DictionaryService : ServiceBase<Sys_Dictionary, ISys_DictionaryRepository>, ISys_DictionaryService { private readonly IUnitOfWorkManage _unitOfWorkManage; - public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) + private readonly ICacheService _cacheService; + + public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; + _cacheService = cacheService; } - public object GetVueDictionary(string[] dicNos) + public List<VueDictionaryDTO> GetVueDictionary(string[] dicNos) { - if (dicNos == null || dicNos.Count() == 0) return new string[] { }; + if (dicNos == null || dicNos.Count() == 0) return new List<VueDictionaryDTO>(); + List<VueDictionaryDTO> vueDictionaryDTOs = new List<VueDictionaryDTO>(); - var dicConfig = BaseDal.GetDictionaries(dicNos, false).Select(s => new + List<string> cacheDicNos = new List<string>(); + foreach (string n in dicNos) { - dicNo = s.DicNo, - config = s.Config, - dbSql = s.DBSql, - list = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName }) - }).ToList(); - - object GetSourceData(string dicNo, string dbSql, object data) - { - if (string.IsNullOrEmpty(dbSql)) + string? str = _cacheService.Get(n); + if (!string.IsNullOrEmpty(str)) { - return data as object; + VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str); + + if (vueDictionary != null) + { + vueDictionaryDTOs.Add(vueDictionary); + cacheDicNos.Add(n); + } } - return BaseDal.QueryObjectDataBySql(dbSql, null); } - return dicConfig.Select(item => new + if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0) { - item.dicNo, - item.config, - data = GetSourceData(item.dicNo, item.dbSql, item.list) - }).ToList(); + List<string> list = dicNos.Where(x => !cacheDicNos.Contains(x)).ToList(); + List<Sys_Dictionary> dictionaries = BaseDal.GetDictionaries(list).ToList(); + + List<VueDictionaryDTO> selectDics = dictionaries.Select(s => new VueDictionaryDTO + { + DicNo = s.DicNo, + Config = s.Config, + //dbSql = s.Sql, + Data = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName }) + }).ToList(); + + foreach (var v in dictionaries) + { + if (!string.IsNullOrEmpty(v.DBSql)) + { + VueDictionaryDTO? temp = selectDics.FirstOrDefault(x => x.DicNo == v.DicNo); + if (temp != null) + selectDics.Remove(temp); + selectDics.Add(new VueDictionaryDTO + { + Config = v.Config, + DicNo = v.DicNo, + Data = BaseDal.QueryDynamicDataBySql(v.DBSql), + SaveCache = false, + }); + } + } + + foreach (var item in selectDics) + { + if (!_cacheService.Exists(item.DicNo) && item.SaveCache) + { + _cacheService.Add(item.DicNo, item.Serialize()); + } + } + vueDictionaryDTOs.AddRange(selectDics); + } + + return vueDictionaryDTOs; } } } -- Gitblit v1.9.3