From f40ba2a9fb9d3c2ece08e9a7cd987d4744dccab2 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期二, 17 六月 2025 15:22:05 +0800 Subject: [PATCH] 优化库内移库,堆垛机和穿梭车交互逻辑 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs | 188 +++++++++++++++++++++++++---------------------- 1 files changed, 100 insertions(+), 88 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs" index cc0c192..38ac7a9 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs" @@ -7,6 +7,7 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; +using WIDESEA_Common.TaskEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; @@ -25,11 +26,13 @@ { private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly ICacheService _cacheService; + private readonly ISys_RoleService _sys_RoleService; - public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(BaseDal) + 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 ISys_DictionaryRepository Repository => BaseDal; @@ -50,10 +53,37 @@ public List<VueDictionaryDTO> GetVueDictionary(string[] dicNos) { - if (dicNos == null || dicNos.Count() == 0) return new List<VueDictionaryDTO>(); + //if (dicNos == null || dicNos.Count() == 0) return new List<VueDictionaryDTO>(); List<VueDictionaryDTO> vueDictionaryDTOs = new List<VueDictionaryDTO>(); List<string> cacheDicNos = new List<string>(); + #region 鏌ヨ鏁版嵁搴撲笅鎷夋鏁版嵁 + 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()); + } + } + } + } + #endregion + + + foreach (string n in dicNos) { string str = _cacheService.Get(n); @@ -61,85 +91,43 @@ { VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str); - if (vueDictionary != null) + if (vueDictionary != null && vueDictionaryDTOs.Where(x => x.DicNo == vueDictionary.DicNo).FirstOrDefault() == null) { vueDictionaryDTOs.Add(vueDictionary); cacheDicNos.Add(n); } } } + List<string> dicList = dicNos.ToList(); if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0) { - List<VueDictionaryDTO> selectDics = BaseDal.GetDictionaries(dicNos.Where(x => !cacheDicNos.Contains(x))).Select(s => new VueDictionaryDTO + string str = AppSettings.Configuration["dics"]; + if (!string.IsNullOrEmpty(str)) { - 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(); + List<string> cusDics = new List<string>(); - foreach (var item in selectDics) - { - if (!_cacheService.Exists(item.DicNo)) + List<string> dics = str.Split(",").ToList(); + + foreach (var item in dics) { - _cacheService.Add(item.DicNo, item.Serialize()); + if (dicList.Contains(item)) + cusDics.Add(item); + dicList.Remove(item); } - } - 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(); - - try - { - List<string> dicList = dicNos.ToList(); - if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0) - { - string str = AppSettings.Configuration["dics"]; - if (!string.IsNullOrEmpty(str)) + foreach (var item in cusDics) { - List<string> cusDics = new List<string>(); - - List<string> dics = str.Split(",").ToList(); - - foreach (var item in dics) + VueDictionaryDTO vueDictionaryDTO = GetVueDictionary(item.Trim()); + if (vueDictionaryDTO != null) { - if (dicList.Contains(item)) - cusDics.Add(item); - dicList.Remove(item); - } - - foreach (var item in cusDics) - { - VueDictionaryDTO vueDictionaryDTO = GetVueDictionary(item.Trim()); - if (vueDictionaryDTO != null) + vueDictionaryDTOs.Add(vueDictionaryDTO); + if (!_cacheService.Exists(item)) { - if (!_cacheService.Exists(item)) - { - vueDictionaryDTOs.Add(vueDictionaryDTO); - _cacheService.Add(item, vueDictionaryDTO.Serialize()); - } + _cacheService.Add(item, vueDictionaryDTO.Serialize()); } } } } - } - catch - { - } return vueDictionaryDTOs; } @@ -447,12 +435,12 @@ List<object> data = new List<object>(); { - Type type = typeof(InTaskStatusEnum); - List<int> enums = Enum.GetValues(typeof(InTaskStatusEnum)).Cast<int>().ToList(); + Type type = typeof(TaskInStatusEnum); + List<int> enums = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().ToList(); int index = 0; foreach (var item in enums) { - FieldInfo? fieldInfo = typeof(InTaskStatusEnum).GetField(((InTaskStatusEnum)item).ToString()); + FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); if (description != null) { @@ -467,12 +455,12 @@ } { - Type type = typeof(OutTaskStatusEnum); - List<int> enums = Enum.GetValues(typeof(OutTaskStatusEnum)).Cast<int>().ToList(); + Type type = typeof(TaskOutStatusEnum); + List<int> enums = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().ToList(); int index = 0; foreach (var item in enums) { - FieldInfo? fieldInfo = typeof(OutTaskStatusEnum).GetField(((OutTaskStatusEnum)item).ToString()); + FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString()); DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); if (description != null) { @@ -486,25 +474,25 @@ } } - //{ - // Type type = typeof(AGVTaskStatusEnum); - // List<int> enums = Enum.GetValues(typeof(AGVTaskStatusEnum)).Cast<int>().ToList(); - // int index = 0; - // foreach (var item in enums) - // { - // FieldInfo? fieldInfo = typeof(AGVTaskStatusEnum).GetField(((AGVTaskStatusEnum)item).ToString()); - // DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); - // if (description != null) - // { - // data.Add(new { key = item.ToString(), value = description.Description }); - // } - // else - // { - // data.Add(new { key = item.ToString(), value = item.ToString() }); - // } - // index++; - // } - //} + { + Type type = typeof(WIDESEA_Common.TaskEnum.TaskRelocationStatusEnum); + List<int> enums = Enum.GetValues(typeof(WIDESEA_Common.TaskEnum.TaskRelocationStatusEnum)).Cast<int>().ToList(); + int index = 0; + foreach (var item in enums) + { + FieldInfo? fieldInfo = typeof(WIDESEA_Common.TaskEnum.TaskRelocationStatusEnum).GetField(((WIDESEA_Common.TaskEnum.TaskRelocationStatusEnum)item).ToString()); + DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); + if (description != null) + { + data.Add(new { key = item.ToString(), value = description.Description }); + } + else + { + data.Add(new { key = item.ToString(), value = item.ToString() }); + } + index++; + } + } result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; } @@ -521,11 +509,35 @@ DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); if (description != null) { - data.Add(new { key = item.ToString(), value = description.Description }); + data.Add(new { key = item, value = description.Description }); } else { - data.Add(new { key = item.ToString(), value = item.ToString() }); + data.Add(new { key = item, value = item.ToString() }); + } + index++; + } + + result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; + } + break; + case "locationChangeType": + { + List<object> data = new List<object>(); + Type type = typeof(LocationChangeType); + List<int> enums = Enum.GetValues(typeof(LocationChangeType)).Cast<int>().ToList(); + int index = 0; + foreach (var item in enums) + { + FieldInfo? fieldInfo = typeof(LocationChangeType).GetField(((LocationChangeType)item).ToString()); + DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>(); + if (description != null) + { + data.Add(new { key = item, value = description.Description }); + } + else + { + data.Add(new { key = item, value = item.ToString() }); } index++; } -- Gitblit v1.9.3