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/BaseModels/PageDataOptions.cs | 97 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 96 insertions(+), 1 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs" index bffe798..5ce5196 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs" @@ -1,8 +1,13 @@ -锘縰sing System; +锘縰sing SqlSugar; +using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; +using WIDESEA_Core.Enums; +using WIDESEA_Core.Helper; +using WIDESEA_Core.Utilities; namespace WIDESEA_Core { @@ -24,6 +29,96 @@ /// 鏌ヨ鏉′欢 /// </summary> public List<SearchParameters> Filter { get; set; } + + public string ValidatePageOptions(PropertyInfo[] entityProperties) + { + string where = string.Empty; + List<SearchParameters> searchParametersList = new List<SearchParameters>(); + if (this.Filter != null && this.Filter.Count > 0) + { + searchParametersList.AddRange(Filter); + } + else if (!string.IsNullOrEmpty(Wheres)) + { + try + { + searchParametersList = Wheres.DeserializeObject<List<SearchParameters>>(); + Filter = searchParametersList; + } + catch { } + } + for (int i = 0; i < searchParametersList.Count; i++) + { + if (string.IsNullOrEmpty(searchParametersList[i].Value)) + { + continue; + } + + PropertyInfo? property = entityProperties.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; + } + + + public Dictionary<string, OrderByType> GetPageDataSort(PropertyInfo[] propertyInfo) + { + if (!string.IsNullOrEmpty(Sort)) + { + if (Sort.Contains(",")) + { + List<string> sortArr = 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] = Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc; + } + return sortDic; + } + else if (propertyInfo.Any(x => x.Name == Sort.FirstLetterToLower() || x.Name == Sort.FirstLetterToUpper())) + { + return new Dictionary<string, OrderByType> { + { + Sort,Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc + } }; + } + } + return new Dictionary<string, OrderByType> { { "CreateDate", Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc } }; + } } public class SearchParameters { -- Gitblit v1.9.3