| using 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; | 
|   | 
| namespace WIDESEAWCS_SystemServices | 
| { | 
|     public class Sys_DictionaryService : ServiceBase<Sys_Dictionary, ISys_DictionaryRepository>, ISys_DictionaryService | 
|     { | 
|         private readonly IUnitOfWorkManage _unitOfWorkManage; | 
|         private readonly ICacheService _cacheService; | 
|   | 
|         public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(BaseDal) | 
|         { | 
|             _unitOfWorkManage = unitOfWorkManage; | 
|             _cacheService = cacheService; | 
|         } | 
|   | 
|         public List<VueDictionaryDTO> GetVueDictionary(string[] dicNos) | 
|         { | 
|             if (dicNos == null || dicNos.Count() == 0) return new List<VueDictionaryDTO>(); | 
|             List<VueDictionaryDTO> vueDictionaryDTOs = new List<VueDictionaryDTO>(); | 
|   | 
|             List<string> cacheDicNos = new List<string>(); | 
|             foreach (string n in dicNos) | 
|             { | 
|                 string str = _cacheService.Get(n); | 
|                 if (!string.IsNullOrEmpty(str)) | 
|                 { | 
|                     VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str); | 
|   | 
|                     if (vueDictionary != null) | 
|                     { | 
|                         vueDictionaryDTOs.Add(vueDictionary); | 
|                         cacheDicNos.Add(n); | 
|                     } | 
|                 } | 
|             } | 
|             if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0) | 
|             { | 
|                 List<VueDictionaryDTO> selectDics = BaseDal.GetDictionaries(dicNos.Where(x => !cacheDicNos.Contains(x))).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 item in selectDics) | 
|                 { | 
|                     if (!_cacheService.Exists(item.DicNo)) | 
|                     { | 
|                         _cacheService.Add(item.DicNo, item.Serialize()); | 
|                     } | 
|                 } | 
|                 vueDictionaryDTOs.AddRange(selectDics); | 
|             } | 
|   | 
|             //object GetSourceData(string dicNo, string dbSql, object data) | 
|             //{ | 
|             //    if (string.IsNullOrEmpty(dbSql)) | 
|             //    { | 
|             //        return data; | 
|             //    } | 
|             //    return BaseDal.QueryObjectDataBySql(dbSql, null); | 
|             //} | 
|             //List<VueDictionaryDTO> vueDictionaryDTOs = dicConfig.Select(item => new VueDictionaryDTO | 
|             //{ | 
|             //    DicNo = item.dicNo, | 
|             //    Config = item.config, | 
|             //    Data = GetSourceData(item.dicNo, item.dbSql, item.list) | 
|             //}).ToList(); | 
|   | 
|              | 
|             return vueDictionaryDTOs; | 
|         } | 
|   | 
|          | 
|     } | 
| } |