From 661370ec981cb639e1345b007ad7e908f1cd36db Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期四, 30 四月 2026 11:01:34 +0800
Subject: [PATCH] 导出及PP出库优化

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockViewService.cs |  105 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 72 insertions(+), 33 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockViewService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockViewService.cs"
index e3b0337..9cc3061 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockViewService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/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 ?? "";

--
Gitblit v1.9.3