hutongqing
2024-12-10 8d341db9d2d5699d527c88c935f0c4ce255a57a4
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs
@@ -1,5 +1,6 @@
using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -19,7 +20,9 @@
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;
@@ -30,19 +33,31 @@
    {
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly ICacheService _cacheService;
        private readonly IBasicRepository _basicRepository;
        private readonly ISys_RoleDataPermissionRepository _roleDataPermissionRepository;
        public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(BaseDal)
        public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, IBasicRepository basicRepository, ISys_RoleDataPermissionRepository roleDataPermissionRepository) : base(BaseDal)
        {
            _unitOfWorkManage = unitOfWorkManage;
            _cacheService = cacheService;
            _basicRepository = basicRepository;
            _roleDataPermissionRepository = roleDataPermissionRepository;
        }
        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>();
            _cacheService.Remove(dictionary.DicNo);
            if (!string.IsNullOrEmpty(_cacheService.Get(dictionary.DicNo)))
                _cacheService.Remove(dictionary.DicNo);
            return base.AddData(saveModel);
        }
@@ -80,12 +95,13 @@
                    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 })
                    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))
                    if (!_cacheService.Exists(item.DicNo) && item.SaveCache)
                    {
                        _cacheService.Add(item.DicNo, item.Serialize());
                    }
@@ -122,8 +138,11 @@
                        foreach (var item in dics)
                        {
                            dicList.Remove(item);
                            cusDics.Add(item);
                            if (dicNos.Contains(item) && !cacheDicNos.Contains(item))
                            {
                                dicList.Remove(item);
                                cusDics.Add(item);
                            }
                        }
                        foreach (var item in cusDics)
@@ -132,7 +151,7 @@
                            if (vueDictionaryDTO != null)
                            {
                                vueDictionaryDTOs.Add(vueDictionaryDTO);
                                if (!_cacheService.Exists(item))
                                if (!_cacheService.Exists(item) && vueDictionaryDTO.SaveCache)
                                {
                                    _cacheService.Add(item, vueDictionaryDTO.Serialize());
                                }
@@ -564,6 +583,71 @@
                            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;
                }
                return result;
            }