wangxinhui
5 天以前 661370ec981cb639e1345b007ad7e908f1cd36db
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockViewService.cs
@@ -22,6 +22,7 @@
using WIDESEA_Common.StockEnum;
using WIDESEA_IBasicRepository;
using WIDESEA_Common.WareHouseEnum;
using WIDESEA_Core.Enums;
namespace WIDESEA_StockService
{
@@ -55,43 +56,70 @@
                    try
                    {
                        List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
                        if (searchParametersList.Count > 0)
                        if (searchParametersList?.Any() == true)
                        {
                            foreach (var param in searchParametersList)
                            {
                                SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_ProStockInfoDetail.ProductCode).FirstLetterToLower());
                                if (searchParameters != null)
                                switch (param.Name)
                                {
                                    sugarQueryable1 = sugarQueryable1.Where(x => x.proStockInfoDetails.Any(v => v.ProductCode.Contains(searchParameters.Value)));
                                }
                            }
                                    case var name when name == nameof(Dt_ProStockInfoDetail.ProductCode).FirstLetterToLower():
                                        if (!string.IsNullOrEmpty(param.Value?.ToString()))
                                        {
                                            sugarQueryable1 = sugarQueryable1
                                                .Where(x => x.proStockInfoDetails.Any(v => v.ProductCode.Contains(param.Value.ToString())));
                                        }
                                        break;
                                    case var name when name == nameof(Dt_ProStockInfoDetail.LotNumber).FirstLetterToLower():
                                        if (!string.IsNullOrEmpty(param.Value?.ToString()))
                                        {
                                            sugarQueryable1 = sugarQueryable1
                                                .Where(x => x.proStockInfoDetails.Any(v => v.LotNumber.Contains(param.Value.ToString())));
                                        }
                                        break;
                            {
                                SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_ProStockInfoDetail.ProductVersion).FirstLetterToLower());
                                if (searchParameters != null)
                                {
                                    sugarQueryable1 = sugarQueryable1.Where(x => x.proStockInfoDetails.Any(v => v.ProductVersion.Contains(searchParameters.Value)));
                                }
                            }
                            {
                                SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_ProStockInfoDetail.SpecifyVer).FirstLetterToLower());
                                if (searchParameters != null)
                                {
                                    sugarQueryable1 = sugarQueryable1.Where(x => x.proStockInfoDetails.Any(v => v.SpecifyVer.Contains(searchParameters.Value)));
                                }
                            }
                            {
                                SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_ProStockInfoDetail.LotNumber).FirstLetterToLower());
                                if (searchParameters != null)
                                {
                                    sugarQueryable1 = sugarQueryable1.Where(x => x.proStockInfoDetails.Any(v => v.LotNumber.Contains(searchParameters.Value)));
                                }
                            }
                                    case var name when name == nameof(Dt_ProStockInfo.LocationCode).FirstLetterToLower():
                                        if (!string.IsNullOrEmpty(param.Value?.ToString()))
                                        {
                                            sugarQueryable1 = sugarQueryable1
                                                .Where(x => x.LocationCode == param.Value.ToString());
                                        }
                                        break;
                                    case var name when name == nameof(Dt_ProStockInfoDetail.ProductVersion).FirstLetterToLower():
                                        if (!string.IsNullOrEmpty(param.Value?.ToString()))
                                        {
                                            sugarQueryable1 = sugarQueryable1
                                                .Where(x => x.proStockInfoDetails.Any(v => v.ProductVersion.Contains(param.Value.ToString())));
                                        }
                                        break;
                                    case var name when name == nameof(Dt_ProStockInfoDetail.SpecifyVer).FirstLetterToLower():
                                        if (!string.IsNullOrEmpty(param.Value?.ToString()))
                                        {
                                            sugarQueryable1 = sugarQueryable1
                                                .Where(x => x.proStockInfoDetails.Any(v => v.SpecifyVer.Contains(param.Value.ToString())));
                                        }
                                        break;
                                    case var name when name == nameof(Dt_ProStockInfo.CreateDate).FirstLetterToLower():
                                        if (DateTime.TryParse(param.Value?.ToString(), out DateTime minDate))
                                        {
                                            LinqExpressionType expressionType = param.DisplayType.GetLinqCondition();
                                            if (expressionType == LinqExpressionType.ThanOrEqual)
                                            {
                                                sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate >= minDate);
                                            }
                                            else if (expressionType == LinqExpressionType.LessThanOrEqual)
                                            {
                                                sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate <= minDate);
                                            }
                                        }
                                        break;
                                }
                            }
                        }
                    }
                    catch { }
                    catch (Exception ex)
                    {
                    }
                }
                string whereSto = GetDataRole(typeof(Dt_ProStockInfo));
                sugarQueryable1 = sugarQueryable1.Where(whereSto);
@@ -102,7 +130,7 @@
                EntityProperties.ValidatePageOptions(options, ref sugarQueryable);
                ISugarQueryable<ProStockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).Select((b, a)
                ISugarQueryable<ProStockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).OrderByDescending(b => b.CreateDate).Select((b, a)
                    => new ProStockViewDTO
                    {
                        ProStockAttribute=b.ProStockAttribute,
@@ -226,6 +254,14 @@
                            }
                            {
                                SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_ProStockInfoDetail.LotNumber).FirstLetterToLower());
                                if (searchParameters != null)
                                {
                                    sugarQueryable1 = sugarQueryable1.Where(x => x.proStockInfoDetails.Any(v => v.LotNumber.Contains(searchParameters.Value)));
                                }
                            }
                            {
                                SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_ProStockInfoDetail.ProductVersion).FirstLetterToLower());
                                if (searchParameters != null)
                                {
@@ -246,7 +282,6 @@
                ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>().Where(whereLo);
                EntityProperties.ValidatePageOptions(options, ref sugarQueryable);
                ISugarQueryable<ProStockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).Select((b, a)
                    => new ProStockViewDTO
                    {
@@ -299,7 +334,11 @@
                //stockViewDTOs.AddRange(pklist.ToList());
                stockViewDTOs.ForEach(x =>
                {
                    x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct());
                    x.ProductCode = string.Join(",",
                        x.Details
                            .GroupBy(d => d.ProductCode)
                            .Select(g => $"(型号{g.Key},数量{g.Sum(s=>s.StockPcsQty)})")
                    );
                    x.ProductVersion = string.Join(",", x.Details.Select(x => x.ProductVersion).Distinct());
                    x.SpecifyVer = string.Join(",", x.Details.Select(x => x.SpecifyVer).Distinct());
                    x.DateCode = x.Details.FirstOrDefault()?.DateCode ?? "";