From 0d2f7d905975c1f5d39f70689760b070cef31349 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期三, 20 十一月 2024 22:06:23 +0800
Subject: [PATCH] 优化前端界面

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs |   53 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 35 insertions(+), 18 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs"
index cbf757b..21986c9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs"
@@ -1,54 +1,71 @@
 锘縰sing 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;
-        public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        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>();
 
-            var dicConfig = BaseDal.GetDictionaries(dicNos, false).Select(s => new
+            List<string> cacheDicNos = new List<string>();
+            if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
             {
-                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();
+                var selectDics = BaseDal.GetDictionaries(dicNos.Where(x => !cacheDicNos.Contains(x)), _sys_RoleService.GetAllChildren(App.User.RoleId));
 
-            object GetSourceData(string dicNo, string dbSql, object data)
-            {
-                if (string.IsNullOrEmpty(dbSql))
+                foreach (var item in selectDics)
                 {
-                    return data;
+                    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 BaseDal.QueryObjectDataBySql(dbSql, null);
             }
-            return dicConfig.Select(item => new VueDictionaryDTO
-            {
-                DicNo = item.dicNo,
-                Config = item.config,
-                Data = GetSourceData(item.dicNo, item.dbSql, item.list)
-            }).ToList();
+            return vueDictionaryDTOs;
         }
     }
 }

--
Gitblit v1.9.3