using Newtonsoft.Json;
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
|
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<Sys_Dictionary, ISys_DictionaryRepository>, 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<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>();
|
if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
|
{
|
var selectDics = BaseDal.GetDictionaries(dicNos.Where(x => !cacheDicNos.Contains(x)), _sys_RoleService.GetAllChildren(App.User.RoleId));
|
|
foreach (var item in selectDics)
|
{
|
if (!_cacheService.Exists(item.DicNo))
|
{
|
vueDictionaryDTOs.Add(item);
|
_cacheService.Add(item.DicNo, item.Serialize());
|
}
|
else
|
{
|
VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(_cacheService.Get(item.DicNo));
|
if (vueDictionary != null && vueDictionary.Data.ToJson() != item.Data.ToJson())
|
{
|
vueDictionaryDTOs.Add(item);
|
_cacheService.AddOrUpdate(item.DicNo, item.Serialize());
|
}
|
}
|
}
|
}
|
return vueDictionaryDTOs;
|
}
|
}
|
}
|