From d1a2afa67032339c2eb1019a02c6b6d036c0bdb1 Mon Sep 17 00:00:00 2001 From: hutongqing <hutongqing@hnkhzn.com> Date: 星期一, 23 九月 2024 09:09:40 +0800 Subject: [PATCH] 1 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs | 112 +++---------------------------------------------------- 1 files changed, 7 insertions(+), 105 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" index 610c767..6de637e 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" @@ -34,7 +34,7 @@ public ISqlSugarClient Db => BaseDal.Db; private PropertyInfo[] _propertyInfo { get; set; } = null; - private PropertyInfo[] TProperties + public PropertyInfo[] TProperties { get { @@ -49,112 +49,14 @@ public virtual PageGridData<TEntity> GetPageData(PageDataOptions options) { - string wheres = ValidatePageOptions(options); + string wheres = options.ValidatePageOptions(TProperties); //鑾峰彇鎺掑簭瀛楁 - Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties); + Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(TProperties); PageGridData<TEntity> pageGridData = new PageGridData<TEntity>(); pageGridData = BaseDal.QueryPage(wheres, options.Page, options.Rows, orderbyDic); return pageGridData; - } - - protected string ValidatePageOptions(PageDataOptions options) - { - options = options ?? new PageDataOptions(); - string where = ""; - List<SearchParameters> searchParametersList = new List<SearchParameters>(); - if (options.Filter != null && options.Filter.Count > 0) - { - searchParametersList.AddRange(options.Filter); - } - else if (!string.IsNullOrEmpty(options.Wheres)) - { - try - { - searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>(); - options.Filter = searchParametersList; - } - catch { } - } - QueryRelativeList?.Invoke(searchParametersList); - - for (int i = 0; i < searchParametersList.Count; i++) - { - if (string.IsNullOrEmpty(searchParametersList[i].Value)) - { - continue; - } - - PropertyInfo property = TProperties.Where(c => c.Name.ToUpper() == searchParametersList[i].Name.ToUpper()).FirstOrDefault(); - - if (property == null) continue; - - List<(bool, string, object)> results = property.ValidationValueForDbType(searchParametersList[i].Value.Split(',')).ToList(); - if (results == null || results.Count() > 0) - { - continue; - } - for (int j = 0; j < results.Count(); j++) - { - if (j == 0) - { - where += "("; - } - LinqExpressionType expressionType = searchParametersList[i].DisplayType.GetLinqCondition(); - if (expressionType == LinqExpressionType.Equal) - { - where += $"{searchParametersList[i].Name} = '{results[j].Item3}'"; - } - else - { - where += $"{searchParametersList[i].Name} {searchParametersList[i].DisplayType} '{results[j].Item3}'"; - } - - if (j == results.Count() - 1) - { - where += ")"; - } - else - { - where += " or "; - } - } - if (i < searchParametersList.Count - 1) - where += " and "; - } - return where; - } - - /// <summary> - /// 鑾峰彇鎺掑簭瀛楁 - /// </summary> - /// <param name="pageData"></param> - /// <param name="propertyInfo"></param> - /// <returns></returns> - private Dictionary<string, OrderByType> GetPageDataSort(PageDataOptions pageData, PropertyInfo[] propertyInfo) - { - if (!string.IsNullOrEmpty(pageData.Sort)) - { - if (pageData.Sort.Contains(",")) - { - List<string> sortArr = pageData.Sort.Split(",").Where(x => propertyInfo.Any(p => p.Name == x)).ToList(); - Dictionary<string, OrderByType> sortDic = new Dictionary<string, OrderByType>(); - foreach (var item in sortArr) - { - sortDic[item] = pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc; - } - return sortDic; - } - else if (propertyInfo.Any(x => x.Name == pageData.Sort.FirstLetterToLower() || x.Name == pageData.Sort.FirstLetterToUpper())) - { - return new Dictionary<string, OrderByType> { - { - pageData.Sort,pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc - } }; - } - } - return new Dictionary<string, OrderByType> { { "CreateDate", pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc } }; } public virtual object GetDetailPage(PageDataOptions pageData) @@ -242,8 +144,8 @@ } else if (keyPro.PropertyType == typeof(int) || keyPro.PropertyType == typeof(long)) { - SugarColumn sugarColumn = keyPro.GetCustomAttribute<SugarColumn>(); - if (sugarColumn.IsIdentity) + SugarColumn? sugarColumn = keyPro.GetCustomAttribute<SugarColumn>(); + if (sugarColumn?.IsIdentity ?? true) { saveModel.MainData.Remove(keyPro.Name.FirstLetterToUpper()); saveModel.MainData.Remove(keyPro.Name.FirstLetterToLower()); @@ -603,9 +505,9 @@ string savePath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelExport"; IExporter exporter = new ExcelExporter(); - string wheres = ValidatePageOptions(options); + string wheres = options.ValidatePageOptions(TProperties); //鑾峰彇鎺掑簭瀛楁 - Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties); + Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(TProperties); List<TEntity> entities = BaseDal.QueryData(wheres, orderbyDic); -- Gitblit v1.9.3