| | |
| | | 锘縰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; |
| | |
| | | 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 List<VueDictionaryDTO> GetVueDictionary(string[] dicNos) |
| | | { |
| | | 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; |
| | | 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 VueDictionaryDTO |
| | | if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0) |
| | | { |
| | | DicNo = item.dicNo, |
| | | Config = 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; |
| | | } |
| | | } |
| | | } |