using Newtonsoft.Json; 
 | 
using OfficeOpenXml.FormulaParsing.Excel.Functions.Information; 
 | 
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 WIDESEA_Common.CommonEnum; 
 | 
using WIDESEA_Common.LocationEnum; 
 | 
using WIDESEA_Common.OrderEnum; 
 | 
using WIDESEA_Common.StockEnum; 
 | 
using WIDESEA_Common.TaskEnum; 
 | 
using WIDESEA_Core; 
 | 
using WIDESEA_Core.BaseRepository; 
 | 
using WIDESEA_Core.BaseServices; 
 | 
using WIDESEA_Core.Caches; 
 | 
using WIDESEA_Core.DB; 
 | 
using WIDESEA_Core.Enums; 
 | 
using WIDESEA_Core.Helper; 
 | 
using WIDESEA_Core.Utilities; 
 | 
using WIDESEA_DTO.System; 
 | 
using WIDESEA_IBasicRepository; 
 | 
using WIDESEA_ISystemRepository; 
 | 
using WIDESEA_ISystemService; 
 | 
using WIDESEA_Model.Models; 
 | 
  
 | 
namespace WIDESEA_SystemService 
 | 
{ 
 | 
    public class Sys_DictionaryService : ServiceBase<Sys_Dictionary, ISys_DictionaryRepository>, ISys_DictionaryService 
 | 
    { 
 | 
        private readonly IUnitOfWorkManage _unitOfWorkManage; 
 | 
        private readonly ICacheService _cacheService; 
 | 
        private readonly IBasicRepository _basicRepository; 
 | 
        private readonly ISupplierInfoRepository _supplierInfoRepository; 
 | 
        private readonly ISys_RoleDataPermissionRepository _roleDataPermissionRepository; 
 | 
  
 | 
        public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, IBasicRepository basicRepository, ISys_RoleDataPermissionRepository roleDataPermissionRepository, ISupplierInfoRepository supplierInfoRepository) : base(BaseDal) 
 | 
        { 
 | 
            _unitOfWorkManage = unitOfWorkManage; 
 | 
            _cacheService = cacheService; 
 | 
            _basicRepository = basicRepository; 
 | 
            _roleDataPermissionRepository = roleDataPermissionRepository; 
 | 
            _supplierInfoRepository = supplierInfoRepository; 
 | 
        } 
 | 
  
 | 
        public ISys_DictionaryRepository Repository => BaseDal; 
 | 
  
 | 
        public override WebResponseContent AddData(SaveModel saveModel) 
 | 
        { 
 | 
            string validResult = typeof(Sys_Dictionary).ValidateDicInEntity(saveModel.MainData, true, TProperties); 
 | 
  
 | 
            if (!string.IsNullOrEmpty(validResult)) 
 | 
            { 
 | 
                return WebResponseContent.Instance.Error(validResult); 
 | 
            } 
 | 
  
 | 
            Sys_Dictionary dictionary = saveModel.MainData.DicToModel<Sys_Dictionary>(); 
 | 
            if (!string.IsNullOrEmpty(_cacheService.Get(dictionary.DicNo))) 
 | 
                _cacheService.Remove(dictionary.DicNo); 
 | 
            return base.AddData(saveModel); 
 | 
        } 
 | 
  
 | 
        public override WebResponseContent UpdateData(SaveModel saveModel) 
 | 
        { 
 | 
            Sys_Dictionary dictionary = saveModel.MainData.DicToModel<Sys_Dictionary>(); 
 | 
            _cacheService.Remove(dictionary.DicNo); 
 | 
            return base.UpdateData(saveModel); 
 | 
        } 
 | 
  
 | 
        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>(); 
 | 
            foreach (string n in dicNos) 
 | 
            { 
 | 
                string str = _cacheService.Get(n); 
 | 
                if (!string.IsNullOrEmpty(str)) 
 | 
                { 
 | 
                    VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str); 
 | 
  
 | 
                    if (vueDictionary != null) 
 | 
                    { 
 | 
                        vueDictionaryDTOs.Add(vueDictionary); 
 | 
                        cacheDicNos.Add(n); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
            if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0) 
 | 
            { 
 | 
                List<VueDictionaryDTO> selectDics = BaseDal.GetDictionaries(dicNos.Where(x => !cacheDicNos.Contains(x))).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 }), 
 | 
                    SaveCache = false 
 | 
                }).ToList(); 
 | 
  
 | 
                foreach (var item in selectDics) 
 | 
                { 
 | 
                    if (!_cacheService.Exists(item.DicNo) && item.SaveCache) 
 | 
                    { 
 | 
                        _cacheService.Add(item.DicNo, item.Serialize()); 
 | 
                    } 
 | 
                } 
 | 
                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)) 
 | 
                    { 
 | 
                        List<string> cusDics = new List<string>(); 
 | 
  
 | 
                        List<string> dics = str.Split(",").ToList(); 
 | 
  
 | 
                        foreach (var item in dics) 
 | 
                        { 
 | 
                            if (dicNos.Contains(item) && !cacheDicNos.Contains(item)) 
 | 
                            { 
 | 
                                dicList.Remove(item); 
 | 
                                cusDics.Add(item); 
 | 
                            } 
 | 
                        } 
 | 
  
 | 
                        foreach (var item in cusDics) 
 | 
                        { 
 | 
                            VueDictionaryDTO vueDictionaryDTO = GetVueDictionary(item.Trim()); 
 | 
                            if (vueDictionaryDTO != null) 
 | 
                            { 
 | 
                                vueDictionaryDTOs.Add(vueDictionaryDTO); 
 | 
                                if (!_cacheService.Exists(item) && vueDictionaryDTO.SaveCache) 
 | 
                                { 
 | 
                                    _cacheService.Add(item, vueDictionaryDTO.Serialize()); 
 | 
                                } 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
            catch 
 | 
            { 
 | 
  
 | 
            } 
 | 
            return vueDictionaryDTOs; 
 | 
        } 
 | 
  
 | 
        private VueDictionaryDTO GetVueDictionary(string key) 
 | 
        { 
 | 
            VueDictionaryDTO result = null; 
 | 
            try 
 | 
            { 
 | 
                switch (key) 
 | 
                { 
 | 
                    case "warehouses": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in warehouses) 
 | 
                                { 
 | 
                                    data.Add(new { key = item.WarehouseId, value = item.WarehouseName }); 
 | 
                                    index++; 
 | 
                                } 
 | 
                            } 
 | 
  
 | 
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "suppliers": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                List<Dt_SupplierInfo> supplierInfos = _supplierInfoRepository.QueryData(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in supplierInfos) 
 | 
                                { 
 | 
                                    data.Add(new { key = item.SupplierCode, value = item.SupplierCode }); 
 | 
                                    index++; 
 | 
                                } 
 | 
                            } 
 | 
  
 | 
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "materials": 
 | 
                        { 
 | 
                            { 
 | 
                                List<object> data = new List<object>(); 
 | 
  
 | 
                                { 
 | 
                                    List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(); 
 | 
                                    int index = 0; 
 | 
                                    foreach (var item in materielInfos) 
 | 
                                    { 
 | 
                                        data.Add(new { key = item.MaterielCode, value = item.MaterielCode }); 
 | 
                                        index++; 
 | 
                                    } 
 | 
                                } 
 | 
  
 | 
                                result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; 
 | 
                            } 
 | 
                        } 
 | 
                        break; 
 | 
                    case "taskType": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            #region TaskTypeEnum 
 | 
                            { 
 | 
                                Type type = typeof(TaskTypeEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(TaskTypeEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(TaskTypeEnum).GetField(((TaskTypeEnum)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++; 
 | 
                                } 
 | 
                            } 
 | 
                            #endregion 
 | 
  
 | 
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "inboundState": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
                            Type type = typeof(InOrderStatusEnum); 
 | 
                            List<int> enums = Enum.GetValues(typeof(InOrderStatusEnum)).Cast<int>().ToList(); 
 | 
                            int index = 0; 
 | 
                            foreach (var item in enums) 
 | 
                            { 
 | 
                                FieldInfo? fieldInfo = typeof(InOrderStatusEnum).GetField(((InOrderStatusEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "outboundStatusEnum": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
                            Type type = typeof(OutOrderStatusEnum); 
 | 
                            List<int> enums = Enum.GetValues(typeof(OutOrderStatusEnum)).Cast<int>().ToList(); 
 | 
                            int index = 0; 
 | 
                            foreach (var item in enums) 
 | 
                            { 
 | 
                                FieldInfo? fieldInfo = typeof(OutOrderStatusEnum).GetField(((OutOrderStatusEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "inOrderType": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(InOrderTypeEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(InOrderTypeEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(InOrderTypeEnum).GetField(((InOrderTypeEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "outOrderType": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(OutOrderTypeEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(OutOrderTypeEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(OutOrderTypeEnum).GetField(((OutOrderTypeEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "orderDetailStatusEnum": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(OrderDetailStatusEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(OrderDetailStatusEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(OrderDetailStatusEnum).GetField(((OrderDetailStatusEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "createType": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(OrderCreateTypeEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(OrderCreateTypeEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(OrderCreateTypeEnum).GetField(((OrderCreateTypeEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "enableEnum": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(EnableEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(EnableEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(EnableEnum).GetField(((EnableEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "enableStatusEnum": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(EnableStatusEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(EnableStatusEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(EnableStatusEnum).GetField(((EnableStatusEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "locationStatusEnum": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(LocationStatusEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(LocationStatusEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(LocationStatusEnum).GetField(((LocationStatusEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "locationTypeEnum": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(LocationTypeEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(LocationTypeEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(LocationTypeEnum).GetField(((LocationTypeEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "taskTypeEnum": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            //{ 
 | 
                            //    Type type = typeof(TaskTypeEnum); 
 | 
                            //    List<int> enums = Enum.GetValues(typeof(TaskTypeEnum)).Cast<int>().ToList(); 
 | 
                            //    int index = 0; 
 | 
                            //    foreach (var item in enums) 
 | 
                            //    { 
 | 
                            //        FieldInfo? fieldInfo = typeof(TaskTypeEnum).GetField(((TaskTypeEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "taskStatusEnum": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(TaskStatusEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(TaskStatusEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(TaskStatusEnum).GetField(((TaskStatusEnum)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(TaskStatusEnum); 
 | 
                            //    List<int> enums = Enum.GetValues(typeof(TaskStatusEnum)).Cast<int>().ToList(); 
 | 
                            //    int index = 0; 
 | 
                            //    foreach (var item in enums) 
 | 
                            //    { 
 | 
                            //        FieldInfo? fieldInfo = typeof(TaskStatusEnum).GetField(((TaskStatusEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "stockStatusEmun": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
                            Type type = typeof(StockStatusEmun); 
 | 
                            List<int> enums = Enum.GetValues(typeof(StockStatusEmun)).Cast<int>().ToList(); 
 | 
                            int index = 0; 
 | 
                            foreach (var item in enums) 
 | 
                            { 
 | 
                                FieldInfo? fieldInfo = typeof(StockStatusEmun).GetField(((StockStatusEmun)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "stockChangeType": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
                            Type type = typeof(StockChangeTypeEnum); 
 | 
                            List<int> enums = Enum.GetValues(typeof(StockChangeTypeEnum)).Cast<int>().ToList(); 
 | 
                            int index = 0; 
 | 
                            foreach (var item in enums) 
 | 
                            { 
 | 
                                FieldInfo? fieldInfo = typeof(StockChangeTypeEnum).GetField(((StockChangeTypeEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "outStockStatus": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
                            Type type = typeof(OutLockStockStatusEnum); 
 | 
                            List<int> enums = Enum.GetValues(typeof(OutLockStockStatusEnum)).Cast<int>().ToList(); 
 | 
                            int index = 0; 
 | 
                            foreach (var item in enums) 
 | 
                            { 
 | 
                                FieldInfo? fieldInfo = typeof(OutLockStockStatusEnum).GetField(((OutLockStockStatusEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "receiveOrderTypeEnum": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(ReceiveOrderTypeEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(ReceiveOrderTypeEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(ReceiveOrderTypeEnum).GetField(((ReceiveOrderTypeEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "authorityScope": 
 | 
                        { 
 | 
                            if (App.User.IsSuperAdmin) 
 | 
                            { 
 | 
                                List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData(x => true); 
 | 
                                var data = warehouses.Select(x => new { key = x.WarehouseId, value = x.WarehouseName }); 
 | 
                                result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; 
 | 
                            } 
 | 
                            else 
 | 
                            { 
 | 
                                List<Sys_RoleDataPermission> roleDataPermissions = _roleDataPermissionRepository.QueryData(x => x.RoleId == App.User.RoleId); 
 | 
                                var data = roleDataPermissions.Select(x => new { key = x.WarehouseId, value = x.WarehouseName }); 
 | 
                                result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; 
 | 
                            } 
 | 
                        } 
 | 
                        break; 
 | 
                    case "authorityScopes": 
 | 
                        { 
 | 
                            List<Sys_Role> roles = Repository.Db.Queryable<Sys_Role>().ToList(); 
 | 
                            List<object> data = new List<object>(); 
 | 
                            foreach (var item in roles) 
 | 
                            { 
 | 
                                List<Sys_RoleDataPermission> roleDataPermissions = _roleDataPermissionRepository.QueryData(x => x.RoleId == item.RoleId); 
 | 
                                string value = ""; 
 | 
                                foreach (var roleDataPermission in roleDataPermissions) 
 | 
                                { 
 | 
                                    value += (roleDataPermission.WarehouseName + ","); 
 | 
                                } 
 | 
                                if (roleDataPermissions.Count > 0) 
 | 
                                    data.Add(new { key = item.RoleId, value = value.Substring(0, value.Length - 1) }); 
 | 
                                else 
 | 
                                    data.Add(new { key = item.RoleId, value = "无权限" }); 
 | 
                            } 
 | 
                            data.Add(new { key = -1, value = "无权限" }); 
 | 
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data, SaveCache = false }; 
 | 
                        } 
 | 
  
 | 
                        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.ToString(), value = description.Description }); 
 | 
                                    } 
 | 
                                    else 
 | 
                                    { 
 | 
                                        data.Add(new { key = item.ToString(), value = item.ToString() }); 
 | 
                                    } 
 | 
                                    index++; 
 | 
                                } 
 | 
                            } 
 | 
  
 | 
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "receiveStatus": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(ReceiveOrderStatusEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(ReceiveOrderStatusEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(ReceiveOrderStatusEnum).GetField(((ReceiveOrderStatusEnum)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 }; 
 | 
                        } 
 | 
                        break;  
 | 
                    case "purchaseType": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(PurchaseOrderTypeEnum); 
 | 
                                List<string> enums = Enum.GetValues(typeof(PurchaseOrderTypeEnum)).Cast<string>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    //FieldInfo? fieldInfo = typeof(PurchaseOrderTypeEnum).GetField(((PurchaseOrderTypeEnum)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 }; 
 | 
                        } 
 | 
                        break;  
 | 
                    case "purchaseOrderStatus": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(PurchaseOrderStatusEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(PurchaseOrderStatusEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(PurchaseOrderStatusEnum).GetField(((PurchaseOrderStatusEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                    case "printStatus": 
 | 
                        { 
 | 
                            List<object> data = new List<object>(); 
 | 
  
 | 
                            { 
 | 
                                Type type = typeof(PrintStatusEnum); 
 | 
                                List<int> enums = Enum.GetValues(typeof(PrintStatusEnum)).Cast<int>().ToList(); 
 | 
                                int index = 0; 
 | 
                                foreach (var item in enums) 
 | 
                                { 
 | 
                                    FieldInfo? fieldInfo = typeof(PrintStatusEnum).GetField(((PrintStatusEnum)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 }; 
 | 
                        } 
 | 
                        break; 
 | 
                } 
 | 
                return result; 
 | 
            } 
 | 
            catch (Exception ex) 
 | 
            { 
 | 
                return null; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |