From f43b7df8400f4fcffc9f19dca0888d61e2b33d5f Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期三, 12 三月 2025 18:41:52 +0800 Subject: [PATCH] WMS系统添加PDA权限,PDA程序 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs | 165 +++++++++++++++++++++---------------------------------- 1 files changed, 63 insertions(+), 102 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" index 29c88cd..2db7ace 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs" @@ -2,7 +2,9 @@ using Magicodes.ExporterAndImporter.Core.Models; using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Options; +using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using SqlSugar; using System.Drawing.Drawing2D; @@ -13,6 +15,7 @@ using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; using WIDESEA_Core.Utilities; +using static OfficeOpenXml.ExcelErrorValue; namespace WIDESEA_Core.BaseServices { @@ -31,7 +34,7 @@ public ISqlSugarClient Db => BaseDal.Db; private PropertyInfo[] _propertyInfo { get; set; } = null; - private PropertyInfo[] TProperties + public PropertyInfo[] TProperties { get { @@ -46,52 +49,19 @@ 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>(); - //if (QueryRelativeExpression != null) - //{ - // queryable = QueryRelativeExpression.Invoke(queryable); - //} - //if (options.Export) - //{ - // queryable = queryable.GetIQueryableOrderBy(orderbyDic); - // if (Limit > 0) - // { - // queryable = queryable.Take(Limit); - // } - // pageGridData.rows = queryable.ToList(); - //} - //else - //{ - // pageGridData.rows = repository.IQueryablePage(queryable, - // options.Page, - // options.Rows, - // out int rowCount, - // orderbyDic).ToList(); - // pageGridData.total = rowCount; - // //鏌ヨ鐣岄潰缁熻姹傜瓑瀛楁 - // if (SummaryExpress != null) - // { - // pageGridData.summary = SummaryExpress.Invoke(queryable); - // //Func<T, T> groupExpress = x =>x; - // //pageGridData.summary = queryable.GroupBy(groupExpress).Select(SummaryExpress).FirstOrDefault(); - // } - //} - //GetPageDataOnExecuted?.Invoke(pageGridData); - pageGridData = BaseDal.QueryPage(wheres, options.Page, options.Rows, orderbyDic); return pageGridData; } - - - protected string ValidatePageOptions(PageDataOptions options) + public string ValidatePageOptions(PageDataOptions options) { options = options ?? new PageDataOptions(); - string where = ""; + string text = ""; List<SearchParameters> searchParametersList = new List<SearchParameters>(); if (options.Filter != null && options.Filter.Count > 0) { @@ -104,75 +74,51 @@ searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>(); options.Filter = searchParametersList; } - catch { } + catch + { + } } - QueryRelativeList?.Invoke(searchParametersList); - for (int i = 0; i < searchParametersList.Count; i++) + base.QueryRelativeList?.Invoke(searchParametersList); + int i; + for (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; - - (bool, string, object) result = property.ValidationVal(searchParametersList[i].Value.Split(',')); - if (!result.Item1) + PropertyInfo propertyInfo = TProperties.Where((PropertyInfo c) => c.Name.ToUpper() == searchParametersList[i].Name.ToUpper()).FirstOrDefault(); + if (propertyInfo == null) { continue; } - LinqExpressionType expressionType = searchParametersList[i].DisplayType.GetLinqCondition(); - if (expressionType == LinqExpressionType.Equal) + object[] values = searchParametersList[i].Value.Split(','); + List<(bool, string, object)> list = propertyInfo.ValidationValueForDbType(values).ToList(); + if (list == null || list.Count() == 0) { - if (string.IsNullOrEmpty(where)) - where += $"{searchParametersList[i].Name} = '{searchParametersList[i].Value}'"; - else - where += $" and {searchParametersList[i].Name} = '{searchParametersList[i].Value}'"; + continue; } - else - { - if (string.IsNullOrEmpty(where)) - where += $"{searchParametersList[i].Name} {searchParametersList[i].DisplayType} '{searchParametersList[i].Value}'"; - else - where += $" and {searchParametersList[i].Name} {searchParametersList[i].DisplayType} '{searchParametersList[i].Value}'"; - } - } - 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(",")) + for (int j = 0; j < list.Count(); j++) { - 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) + if (j == 0) { - sortDic[item] = pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc; + text += "("; } - return sortDic; + + text = ((searchParametersList[i].DisplayType.GetLinqCondition() != 0) ? (text + $"{searchParametersList[i].Name} {searchParametersList[i].DisplayType} '{list[j].Item3}'") : (text + $"{searchParametersList[i].Name} = '{list[j].Item3}'")); + text = ((j != list.Count() - 1) ? (text + " or ") : (text + ")")); } - else if (propertyInfo.Any(x => x.Name == pageData.Sort)) + + if (i < searchParametersList.Count - 1) { - return new Dictionary<string, OrderByType> { - { - pageData.Sort,pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc - } }; + text += " and "; } } - return new Dictionary<string, OrderByType> { { "CreateDate", pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc } }; + + return text; } public virtual object GetDetailPage(PageDataOptions pageData) @@ -260,16 +206,15 @@ } 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()); } } TEntity entity = saveModel.MainData.DicToModel<TEntity>(); - //if (saveModel.DetailData == null && saveModel.DetailData.Count == 0) - if (saveModel.DetailData == null ) + if (saveModel.DetailData == null || saveModel.DetailData.Count == 0) { BaseDal.AddData(entity); return WebResponseContent.Instance.OK(); @@ -328,7 +273,6 @@ return content; } - /// <summary> /// 淇敼鏁版嵁 /// </summary> @@ -377,7 +321,7 @@ { return WebResponseContent.Instance.Error("浼犲弬閿欒,鍙傛暟涓嶈兘涓虹┖"); } - string validResult = typeof(TEntity).ValidateDicInEntity(saveModel.MainData, false, TProperties, list?.ToArray()); + string validResult = typeof(TEntity).ValidateDicInEntity(saveModel.MainData, false, TProperties, list?.ToArray() ?? null); if (!string.IsNullOrEmpty(validResult)) { @@ -395,7 +339,7 @@ List<string> listCol = new List<string>(); foreach (var item in saveModel.MainData) { - PropertyInfo propertyInfo = typeof(TEntity).GetProperty(item.Key); + PropertyInfo? propertyInfo = typeof(TEntity).GetProperty(item.Key); if (propertyInfo == null) { propertyInfo = typeof(TEntity).GetProperty(item.Key.FirstLetterToLower()); @@ -408,12 +352,11 @@ listCol.Add(propertyInfo?.Name); } - //if (saveModel.DetailData == null && saveModel.DetailData.Count == 0) - if (saveModel.DetailData == null) + if (saveModel.DetailData == null || saveModel.DetailData.Count == 0) { - if (list != null) - listCol = listCol.Where(x => !list.Contains(x)).ToList(); - bool result = BaseDal.UpdateData(entity, listCol, list); + //if (list != null) + // listCol = listCol.Where(x => !list.Contains(x)).ToList(); + bool result = BaseDal.UpdateData(entity/*, listCol, list*/); return WebResponseContent.Instance.OK(); } @@ -512,7 +455,6 @@ return content; } - /// <summary> /// 鍒犻櫎鏁版嵁 /// </summary> @@ -540,7 +482,7 @@ try { if (typeof(TEntity).GetNavigatePro() == null) - return BaseDal.DeleteDataByIds(keys) ? WebResponseContent.Instance.OK("鍒犻櫎鎴愬姛") : WebResponseContent.Instance.Error(); + return BaseDal.DeleteDataByIds(keys) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error(); else { if (keys != null) @@ -562,7 +504,7 @@ ((SqlSugarClient)BaseDal.Db).CommitTran(); - return WebResponseContent.Instance.OK("鍒犻櫎鎴愬姛"); + return WebResponseContent.Instance.OK(); } else { @@ -625,9 +567,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); @@ -726,5 +668,24 @@ content = WebResponseContent.Instance.OK(data: savePath + "\\" + fileName); return content; } + + public WebResponseContent ExportSeedData() + { + WebResponseContent content = new WebResponseContent(); + try + { + string seedDataFolder = $"WIDESEA_DB.DBSeed.Json/{typeof(TEntity).Name}.tsv"; + List<TEntity> deviceInfos = BaseDal.QueryData(); + string str = JsonConvert.SerializeObject(deviceInfos, Formatting.Indented); + List<Dictionary<string, object>> keyValuePairs = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(str); + FileHelper.WriteFileAndDelOldFile($"{AppDomain.CurrentDomain.BaseDirectory}wwwroot/{seedDataFolder}", str); + content = WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + content = WebResponseContent.Instance.Error(ex.Message); + } + return content; + } } } -- Gitblit v1.9.3