From e1dd1dc9ba7135e3d64a65587d6c1be2c3e18c5a Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期三, 25 六月 2025 11:01:22 +0800
Subject: [PATCH] 提交最新优化代码

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockViewService.cs |  170 ++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 109 insertions(+), 61 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 4a3bddb..a36a18b 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"
@@ -20,6 +20,8 @@
 using WIDESEA_IOutboundRepository;
 using WIDESEA_IStockRepository;
 using WIDESEA_Common.StockEnum;
+using WIDESEA_IBasicRepository;
+using WIDESEA_Common.WareHouseEnum;
 
 namespace WIDESEA_StockService
 {
@@ -29,13 +31,15 @@
         private readonly SqlSugarClient _dbBase;
         private readonly IOutboundRepository _outboundRepository;
         private readonly IStockRepository  _stockRepository;
+        private readonly IBasicRepository _basicRepository;
 
-        public ProStockViewService(IUnitOfWorkManage unitOfWorkManage, IOutboundRepository outboundRepository, IStockRepository stockRepository)
+        public ProStockViewService(IUnitOfWorkManage unitOfWorkManage, IOutboundRepository outboundRepository, IStockRepository stockRepository,IBasicRepository basicRepository)
         {
             _unitOfWorkManage = unitOfWorkManage;
             _dbBase = unitOfWorkManage.GetDbClient();
             _outboundRepository = outboundRepository;
             _stockRepository = stockRepository;
+            _basicRepository = basicRepository;
         }
 
         public virtual PageGridData<ProStockViewDTO> GetPageData(PageDataOptions options)
@@ -66,6 +70,13 @@
                                 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)));
                                 }
                             }
 
@@ -104,50 +115,46 @@
                         ProStockId = b.Id,
                         StockStatus = b.StockStatus,
                         Details = b.proStockInfoDetails,
+                        SumStocks=b.proStockInfoDetails.Sum(x=>x.StockPcsQty)
                     });
 
-                //var pklist = sugarQueryable1.Where(b => b.LocationCode == "骞冲簱浣�").Select(b => new StockViewDTO
-                //{
-                //    LocationCode = b.LocationCode,
-                //    Column = 0,
-                //    WarehouseId = b.WarehouseId,
-                //    CreateDate = b.CreateDate,
-                //    Creater = b.Creater,
-                //    Depth = 0,
-                //    EnalbeStatus = EnableStatusEnum.Normal.ObjToInt(),
-                //    Layer = 0,
-                //    LocationName = "骞冲簱浣�",
-                //    LocationStatus = LocationStatusEnum.InStock.ObjToInt(),
-                //    LocationType = LocationTypeEnum.Undefined.ObjToInt(),
-                //    Modifier = b.Modifier,
-                //    ModifyDate = b.ModifyDate,
-                //    PalletCode = b.PalletCode,
-                //    StockRemark = b.Remark,
-                //    RoadwayNo = "骞冲簱",
-                //    Row = 0,
-                //    StockId = b.Id,
-                //    StockStatus = b.StockStatus,
-                //    Details = b.Details,
-                //});
+                var pklist = sugarQueryable1.Where(b => b.LocationCode == "鎴愬搧寰呭彂璐у尯" || b.LocationCode == "鎴愬搧鍖呰鎷h揣鍖�").Select(b => new ProStockViewDTO
+                {
+                    ProStockAttribute = b.ProStockAttribute,
+                    LocationCode = b.LocationCode,
+                    WarehouseId = b.WarehouseId,
+                    CreateDate = b.CreateDate,
+                    Creater = b.Creater,
+                    LocationName = b.LocationCode,
+                    Modifier = b.Modifier,
+                    ModifyDate = b.ModifyDate,
+                    PalletCode = b.PalletCode,
+                    StockRemark = b.Remark,
+                    ProStockId = b.Id,
+                    StockStatus = b.StockStatus,
+                    Details = b.proStockInfoDetails,
+                    SumStocks = b.proStockInfoDetails.Sum(x => x.StockPcsQty)
+                });
 
                 int totalCount = 0;
                 int pktotalCount = 0;
 
                 stockViewDTOs = list.ToPageList(options.Page, options.Rows, ref totalCount);
-                //stockViewDTOs.AddRange(pklist.ToPageList(options.Page, options.Rows, ref pktotalCount));
+                stockViewDTOs.AddRange(pklist.ToPageList(options.Page, options.Rows, ref pktotalCount));
 
                 stockViewDTOs.ForEach(x =>
-                {
-                    x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct());
-                    x.ProductVersion = string.Join(",", x.Details.Select(x => x.ProductVersion).Distinct());
-                    x.DateCode = x.Details.FirstOrDefault()?.DateCode ?? "";
-                    x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? "";
-                    x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? "";
-                    x.SaleOrder=  x.Details.FirstOrDefault()?.SaleOrder ?? "";
-                    x.MoNumber = x.Details.FirstOrDefault()?.MoNumber ?? "";
-                }
+                    {
+                        x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct());
+                        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 ?? "";
+                        x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? "";
+                        x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? "";
+                        x.SaleOrder=  x.Details.FirstOrDefault()?.SaleOrder ?? "";
+                        x.MoNumber = x.Details.FirstOrDefault()?.MoNumber ?? "";
+                    }
                 );
-                return new PageGridData<ProStockViewDTO>(totalCount + pktotalCount, stockViewDTOs);
+                return new PageGridData<ProStockViewDTO>(totalCount + pktotalCount, stockViewDTOs.OrderByDescending(x=>x.CreateDate).ToList());
             }
             catch (Exception ex)
             {
@@ -192,7 +199,7 @@
                 options.Order = "desc";
                 options.Sort = "proStockId";
                 List<ProStockViewDTO> stockViewDTOs = new List<ProStockViewDTO>();
-
+                List<Dt_Warehouse> warehouses = _basicRepository.WarehouseRepository.QueryData(x => x.WarehouseType == WarehouseTypEnum.鎴愬搧.ToString());
                 string where = string.Empty;
                 ISugarQueryable<Dt_ProStockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_ProStockInfo>().Includes(x => x.proStockInfoDetails);
                 if (!string.IsNullOrEmpty(options.Wheres))
@@ -253,6 +260,8 @@
                         ProStockId = b.Id,
                         StockStatus = b.StockStatus,
                         Details = b.proStockInfoDetails,
+                        SumStocks = b.proStockInfoDetails.Sum(x => x.StockPcsQty),
+                        
                     });
 
                 //var pklist = sugarQueryable1.Where(b => b.LocationCode == "骞冲簱浣�").Select(b => new StockViewDTO
@@ -284,17 +293,19 @@
                 {
                     x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct());
                     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 ?? "";
                     x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? "";
                     x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? "";
                     x.SaleOrder = x.Details.FirstOrDefault()?.SaleOrder ?? "";
                     x.MoNumber = x.Details.FirstOrDefault()?.MoNumber ?? "";
+                    x.StockRemark = warehouses.FirstOrDefault(v => v.WarehouseId == x.WarehouseId).WarehouseName;
                 }
                 );
 
                 byte[] data = exporter.ExportAsByteArray(stockViewDTOs).Result;
 
-                string fileName = "搴撳瓨瑙嗗浘.xlsx";
+                string fileName = "鎴愬搧搴撳瓨瑙嗗浘.xlsx";
 
                 FileHelper.WriteFile(savePath, fileName, data);
 
@@ -358,35 +369,72 @@
             try
             {
                 Dt_ProOutOrderDetail outOrderDetail = _outboundRepository.ProOutOrderDetailRepository.QueryFirst(x => x.Id == orderId);
-                Dt_ProOutOrder outOrder = _outboundRepository.ProOutOrderRepository.QueryFirst(x => x.Id == outOrderDetail.Id);
                 if (outOrderDetail == null)
                 {
                     throw new Exception($"鏈壘鍒板嚭搴撳崟鏄庣粏");
                 }
-                return _stockRepository.ProStockInfoRepository.QueryTabs<Dt_ProStockInfo, Dt_ProStockInfoDetail, ProStockViewDTO>((a, b) => a.Id == b.ProStockId, (a, b) => new ProStockViewDTO
+                List<ProStockViewDTO> stockViewDTOs = new List<ProStockViewDTO>();
+                ISugarQueryable<Dt_ProStockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_ProStockInfo>().Includes(x => x.proStockInfoDetails);
+                var pklist = sugarQueryable1.Where(b => b.LocationCode == "鎴愬搧寰呭彂璐у尯" && b.StockStatus==StockStatusEmun.骞冲簱鍏ュ簱瀹屾垚.ObjToInt() && (b.ShipmentOrder==null|| b.ShipmentOrder =="")).Where(x=>x.proStockInfoDetails.Any(v=>v.ProductCode== outOrderDetail.PCode)).Select(b => new ProStockViewDTO
                 {
-                    LocationCode = a.LocationCode,
-                    ProductCode = b.ProductCode,
-                    ProStockAttribute = a.ProStockAttribute,
-                    ProductVersion=b.ProductVersion,
-                    DateCode=b.DateCode,
-                    ProStockId=a.Id,
-                    SumStocks=b.StockPcsQty,
-                    SaleOrder=b.SaleOrder,
-                    PalletCode = a.PalletCode
-                }, a => a.LocationCode == "鎴愬搧寰呭彂璐у尯", b => b.ProductCode == outOrderDetail.PCode, x => true).GroupBy(x => x.PalletCode).Select(x => new ProStockViewDTO
-                {
-                    LocationCode = x.FirstOrDefault()?.LocationCode ?? "",
-                    ProductCode = x.FirstOrDefault()?.ProductCode ?? "",
-                    ProductVersion = x.FirstOrDefault()?.ProductVersion ?? "",
-                    DateCode = x.FirstOrDefault()?.DateCode ?? "",
-                    ProStockId = x.FirstOrDefault().ProStockId,
-                    SumStocks=x.FirstOrDefault().SumStocks,
-                    SaleOrder = x.FirstOrDefault()?.SaleOrder ?? "",
-                    ProStockAttribute=x.FirstOrDefault()?.ProStockAttribute ?? 0,
-                    PalletCode = x.Key,
-
-                }).ToList();
+                    ProStockAttribute = b.ProStockAttribute,
+                    LocationCode = b.LocationCode,
+                    WarehouseId = b.WarehouseId,
+                    CreateDate = b.CreateDate,
+                    Creater = b.Creater,
+                    LocationName = b.LocationCode,
+                    Modifier = b.Modifier,
+                    ModifyDate = b.ModifyDate,
+                    PalletCode = b.PalletCode,
+                    StockRemark = b.Remark,
+                    ProStockId = b.Id,
+                    StockStatus = b.StockStatus,
+                    Details = b.proStockInfoDetails,
+                });
+                stockViewDTOs.AddRange(pklist.ToList());
+                stockViewDTOs.ForEach(x =>
+                    {
+                        x.ProductCode = string.Join(",", x.Details.Select(x => x.ProductCode).Distinct());
+                        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 ?? "";
+                        x.LotNumber = x.Details.FirstOrDefault()?.LotNumber ?? "";
+                        x.ERPOrder = x.Details.FirstOrDefault()?.ERPOrder ?? "";
+                        x.SaleOrder = x.Details.FirstOrDefault()?.SaleOrder ?? "";
+                        x.MoNumber = x.Details.FirstOrDefault()?.MoNumber ?? "";
+                        x.SumStocks = x.Details.Sum(x => x.StockPcsQty);
+                    }
+                );
+                return stockViewDTOs.OrderBy(x => x.DateCode).ThenBy(x => x.CreateDate).ToList();
+                //return _stockRepository.ProStockInfoRepository.QueryTabs<Dt_ProStockInfo, Dt_ProStockInfoDetail, ProStockViewDTO>((a, b) => a.Id == b.ProStockId, (a, b) => new ProStockViewDTO
+                //{
+                //    LocationCode = a.LocationCode,
+                //    ProductCode = b.ProductCode,
+                //    ProStockAttribute = a.ProStockAttribute,
+                //    ProductVersion=b.ProductVersion,
+                //    DateCode=b.DateCode,
+                //    ProStockId=a.Id,
+                //    SumStocks=b.StockPcsQty,
+                //    SaleOrder=b.SaleOrder,
+                //    PalletCode = a.PalletCode,
+                //    CreateDate=a.CreateDate,
+                //    ERPOrder=b.ERPOrder,
+                //    MoNumber=b.MoNumber
+                //}, a => a.LocationCode == "鎴愬搧寰呭彂璐у尯", b => b.ProductCode == outOrderDetail.PCode, x => true).GroupBy(x => x.PalletCode).Select(x => new ProStockViewDTO
+                //{
+                //    LocationCode = x.FirstOrDefault()?.LocationCode ?? "",
+                //    ProductCode = x.FirstOrDefault()?.ProductCode ?? "",
+                //    ProductVersion = x.FirstOrDefault()?.ProductVersion ?? "",
+                //    DateCode = x.FirstOrDefault()?.DateCode ?? "",
+                //    ProStockId = x.FirstOrDefault().ProStockId,
+                //    SumStocks=x.FirstOrDefault().SumStocks,
+                //    SaleOrder = x.FirstOrDefault()?.SaleOrder ?? "",
+                //    ProStockAttribute=x.FirstOrDefault()?.ProStockAttribute ?? 0,
+                //    PalletCode = x.Key,
+                //    ERPOrder=x.FirstOrDefault()?.ERPOrder ?? "",
+                //    MoNumber=x.FirstOrDefault()?.MoNumber ?? "",
+                //    CreateDate=x.FirstOrDefault()?.CreateDate ?? new DateTime()
+                //}).ToList();
             }
             catch (Exception ex)
             {

--
Gitblit v1.9.3