From cb3907de90eef531df10a078149b29c55ff86401 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期四, 17 七月 2025 16:20:06 +0800
Subject: [PATCH] 1

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs |   27 ++++++++++++++++++---------
 1 files changed, 18 insertions(+), 9 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs"
index 07c8b06..72285eb 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs"
@@ -109,7 +109,7 @@
         public List<Dt_ProStockInfo> GetUseableStocks(Dt_MesRworkOutboundOrder mesRworkOutboundOrder)
         {
             //杞崲鎴� 鎴愬搧浠撲粨搴撲俊鎭幏鍙栧熬鏁板睘鎬х殑璐т綅
-            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==WarehouseEnum.HA71.ToString());
+            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseId== mesRworkOutboundOrder.WarehouseId);
             List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehouse.WarehouseId);
             return BaseDal.GetProStocks(mesRworkOutboundOrder, locationCodes);
         }
@@ -125,10 +125,14 @@
         public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_ProOutOrderDetail outOrderDetail, float needQuantity, out float residueQuantity)
         {
             List<Dt_ProStockInfo> assignOutStocks =new List<Dt_ProStockInfo>();
-            float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x);
-            //stockInfos = stockInfos.OrderBy(x => x.Id).ToList();
             bool isCanLot = string.IsNullOrEmpty(outOrderDetail.PLot);
             bool isCanDate = string.IsNullOrEmpty(outOrderDetail.DateCode);
+            float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion.StartsWith(outOrderDetail.PVer.Substring(0, 1))
+                            && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot)
+                            && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
+                        .Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x);
+            //stockInfos = stockInfos.OrderBy(x => x.Id).ToList();
+            
             if (stockTotalQuantity >= needQuantity)//搴撳瓨澶�
             {
                 int index = 0;
@@ -233,7 +237,10 @@
         public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_ErpProScrapSheetDetail outOrderDetail, float needQuantity, out float residueQuantity)
         {
             List<Dt_ProStockInfo> assignOutStocks = new List<Dt_ProStockInfo>();
-            float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x);
+            float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Where(x =>
+                            x.ProductCode == outOrderDetail.ScrapProCode
+                            && x.ProductVersion == outOrderDetail.ScrapProVersion
+                            && x.LotNumber == outOrderDetail.ScrapProLotNo).Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x);
             //stockInfos = stockInfos.OrderBy(x => x.Id).ToList();
             if (stockTotalQuantity >= needQuantity)//搴撳瓨澶�
             {
@@ -293,9 +300,12 @@
         public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_MesRworkOutboundOrder mesRworkOutboundOrder, float needQuantity, out float residueQuantity)
         {
             List<Dt_ProStockInfo> assignOutStocks = new List<Dt_ProStockInfo>();
-            float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x);
-            //stockInfos = stockInfos.OrderBy(x => x.Id).ToList();
             bool isCanDate = string.IsNullOrEmpty(mesRworkOutboundOrder.DateCode);
+            float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Where(x => x.ProductCode == mesRworkOutboundOrder.ProductCode
+                            && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
+                            && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode))
+                        .Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x);
+            //stockInfos = stockInfos.OrderBy(x => x.Id).ToList();
             if (stockTotalQuantity >= needQuantity)//搴撳瓨澶�
             {
                 int index = 0;
@@ -303,8 +313,7 @@
                 {
                     Dt_ProStockInfo stockInfo = stockInfos[index];
                     float useableStockQuantity = stockInfo.proStockInfoDetails
-                        .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder 
-                            && x.ProductCode == mesRworkOutboundOrder.ProductCode 
+                        .Where(x => x.ProductCode == mesRworkOutboundOrder.ProductCode 
                             && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
                             && (isCanDate? isCanDate: x.DateCode == mesRworkOutboundOrder.DateCode))
                         .Sum(x => x.StockPcsQty - x.OutboundQuantity);
@@ -317,7 +326,7 @@
                     {
                         stockInfo.proStockInfoDetails.ForEach(x =>
                         {
-                            if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == mesRworkOutboundOrder.SaleOrder 
+                            if ((x.StockPcsQty > x.OutboundQuantity) 
                                 && x.ProductCode == mesRworkOutboundOrder.ProductCode 
                                 && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
                                 && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode))

--
Gitblit v1.9.3