1
dengjunjie
2025-01-09 be0856c1bf533ed6001ff786908ae98e4b853eb5
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs
@@ -8,12 +8,14 @@
using System.Drawing.Printing;
using System.Dynamic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Const;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_Core.Utilities;
@@ -37,26 +39,46 @@
        public virtual PageGridData<StockViewDTO> GetPageData(PageDataOptions options)
        {
            List<StockViewDTO> stockViewDTOs = new List<StockViewDTO>();
            //string where = options.ValidatePageOptions(typeof(StockViewDTO).GetProperties());
            //鑾峰彇鎺掑簭瀛楁
            //Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(typeof(StockViewDTO).GetProperties());
            //List<OrderByModel> orderByModels = new List<OrderByModel>();
            //foreach (var item in orderbyDic)
            //{
            //    OrderByModel orderByModel = new OrderByModel()
            //    {
            //        FieldName = item.Key,
            //        OrderByType = item.Value
            //    };
            //    orderByModels.Add(orderByModel);
            //}
            int totalCount = 0;
            string where = string.Empty;
            ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Includes(x=>x.Details);
            if (!string.IsNullOrEmpty(options.Wheres))
            {
                try
                {
                    List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
                    if (searchParametersList.Count > 0)
                    {
                        {
                            SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower());
                            if (searchParameters != null)
                            {
                                sugarQueryable1 = sugarQueryable1.Where(x => x.Details.Any(v => v.MaterielCode.Contains(searchParameters.Value)));
                            }
                        }
                        {
                            SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.BatchNo).FirstLetterToLower());
                            if (searchParameters != null)
                            {
                                sugarQueryable1 = sugarQueryable1.Where(x => x.Details.Any(v => v.BatchNo.Contains(searchParameters.Value)));
                            }
                        }
                    }
                }
                catch { }
            }
            EntityProperties.ValidatePageOptions(options, ref sugarQueryable1);
            ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
            
            List<StockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).Select((b, a)
            EntityProperties.ValidatePageOptions(options, ref sugarQueryable);
            ISugarQueryable<StockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).Select((b, a)
                => new StockViewDTO
            {
                LocationCode = b.LocationCode,
@@ -78,43 +100,21 @@
                StockId = b.Id,
                StockStatus = b.StockStatus,
                Details = b.Details,
            }).ToPageList(options.Page, options.Rows, ref totalCount);
            list.ForEach(x =>
                });
            int totalCount = 0;
            stockViewDTOs = list.ToPageList(options.Page, options.Rows, ref totalCount);
            stockViewDTOs.ForEach(x =>
                {
                    x.MaterielCode = string.Join(",", x.Details.Select(x => x.MaterielCode).Distinct());
                    x.BatchNo = string.Join(",", x.Details.Select(x => x.BatchNo).Distinct());
                }   
            );
            if (options.Wheres.IsNotEmptyOrNull())
            {
                List<SearchParameters> searchParameters = options.Wheres.DeserializeObject<List<SearchParameters>>();
                foreach (var item in searchParameters)
                {
                    switch (item.Name)
                    {
                        case "palletCode":
                            list = list.Where(x => x.PalletCode.Contains(item.Value)).ToList();
                            break;
                        case "locationStatus":
                            List<int> locationStatus = item.Value.Split(",").Select(int.Parse).ToList();
                            list = list.Where(x => locationStatus.Contains(x.LocationStatus)).ToList();
                            break;
                        case "stockStatus":
                            List<int> stockStatus = item.Value.Split(",").Select(int.Parse).ToList();
                            list = list.Where(x => stockStatus.Contains(x.StockStatus)).ToList();
                            break;
                        case "materielCode":
                            list = list.Where(x => x.MaterielCode.Contains(item.Value)).ToList();
                            break;
                        case "batchNo":
                            list=list.Where(x => x.BatchNo.Contains(item.Value)).ToList();
                            break;
                        default:
                            break;
                    }
                }
            }
            return new PageGridData<StockViewDTO>(totalCount, list);
            return new PageGridData<StockViewDTO>(totalCount, stockViewDTOs);
        }