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; 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; using WIDESEAWCS_Model.Models.System; namespace WIDESEAWCS_SystemServices { public class Sys_DictionaryService : ServiceBase, ISys_DictionaryService { private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly ICacheService _cacheService; private readonly ISys_RoleService _sys_RoleService; public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_RoleService sys_RoleService) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; _cacheService = cacheService; _sys_RoleService = sys_RoleService; } public List GetVueDictionary(string[] dicNos) { if (dicNos == null || dicNos.Count() == 0) return new List(); List vueDictionaryDTOs = new List(); List cacheDicNos = new List(); //var content = _sys_RoleService.GetCurrentTreePermission(); //foreach (string n in dicNos) //{ // string str = _cacheService.Get(n); // if (!string.IsNullOrEmpty(str)) // { // VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject(str); // if (vueDictionary != null) // { // vueDictionaryDTOs.Add(vueDictionary); // cacheDicNos.Add(n); // } // } //} if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0) { //List selectDics = BaseDal.GetDictionaries(dicNos.Where(x => !cacheDicNos.Contains(x)), _sys_RoleService.GetAllChildren(App.User.RoleId)).Select(s => new VueDictionaryDTO //{ // DicNo = s.DicNo, // Config = s.Config, // //dbSql = s.Sql, // Data = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { id = 1, parentId = 0, key = list.DicValue, value = list.DicName }) //}).ToList(); var selectDics = BaseDal.GetDictionaries(dicNos.Where(x => !cacheDicNos.Contains(x)), _sys_RoleService.GetAllChildren(App.User.RoleId)); foreach (var item in selectDics) { var a = item.Data; if (!_cacheService.Exists(item.DicNo)) { vueDictionaryDTOs.Add(item); _cacheService.Add(item.DicNo, item.Serialize()); } } } //object GetSourceData(string dicNo, string dbSql, object data) //{ // if (string.IsNullOrEmpty(dbSql)) // { // return data; // } // return BaseDal.QueryObjectDataBySql(dbSql, null); //} //List vueDictionaryDTOs = dicConfig.Select(item => new VueDictionaryDTO //{ // DicNo = item.dicNo, // Config = item.config, // Data = GetSourceData(item.dicNo, item.dbSql, item.list) //}).ToList(); return vueDictionaryDTOs; } } }