From a6e0ea9ce13e791f3edae4edffeb3be3ccb760be Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 31 三月 2025 02:14:59 +0800
Subject: [PATCH] 版本更新

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs |   47 ++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 38 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 23494f2..e4efd48 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"
@@ -4,6 +4,7 @@
 using System.Text;
 using System.Threading.Tasks;
 using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.Enums;
@@ -51,6 +52,7 @@
                     {
                        return content.Error($"鏈壘鍒皗item?.BagNo}搴撳瓨");
                     }
+                    
                     //鍒ゆ柇鏄庣粏鏄惁鍏ㄩ儴鎵嚭
                     if (proStockInfoDetail.StockPcsQty==item.StockPcsQty)
                     {
@@ -101,7 +103,9 @@
         /// <returns></returns>
         public List<Dt_ProStockInfo> GetUseableStocks(Dt_MesRworkOutboundOrder mesRworkOutboundOrder)
         {
-            List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(mesRworkOutboundOrder.WarehouseId);
+            //杞崲鎴� 鎴愬搧浠撲粨搴撲俊鎭幏鍙栧熬鏁板睘鎬х殑璐т綅
+            Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==WarehouseEnum.HA71.ToString());
+            List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehouse.WarehouseId);
             return BaseDal.GetProStocks(mesRworkOutboundOrder, locationCodes);
         }
         /// <summary>
@@ -112,6 +116,8 @@
             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);
             if (stockTotalQuantity >= needQuantity)//搴撳瓨澶�
             {
                 int index = 0;
@@ -119,7 +125,9 @@
                 {
                     Dt_ProStockInfo stockInfo = stockInfos[index];
                     float useableStockQuantity = stockInfo.proStockInfoDetails
-                        .Where(x => x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode==outOrderDetail.PCode && x.ProductVersion==outOrderDetail.PVer)
+                        .Where(x => x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer
+                            && (isCanLot ? isCanLot : x.LotNumber == outOrderDetail.PLot)
+                            && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
                         .Sum(x => x.StockPcsQty - x.OutboundQuantity);
                     if (useableStockQuantity < needQuantity)
                     {
@@ -130,7 +138,10 @@
                     {
                         stockInfo.proStockInfoDetails.ForEach(x =>
                         {
-                            if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer)
+                            if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == outOrderDetail.SaleOrder 
+                                && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer 
+                                && (isCanLot ? isCanLot : x.LotNumber == outOrderDetail.PLot)
+                                && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
                             {
                                 if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
                                 {
@@ -155,7 +166,9 @@
                 {
                     Dt_ProStockInfo stockInfo = stockInfos[i];
                     float useableStockQuantity = stockInfo.proStockInfoDetails
-                        .Where(x => x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer)
+                        .Where(x => x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer
+                            && (isCanLot ? isCanLot : x.LotNumber == outOrderDetail.PLot)
+                            && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
                         .Sum(x => x.StockPcsQty - x.OutboundQuantity);
                     if (useableStockQuantity < needQuantity)
                     {
@@ -166,7 +179,10 @@
                     {
                         stockInfo.proStockInfoDetails.ForEach(x =>
                         {
-                            if (x.StockPcsQty > x.OutboundQuantity && x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer)
+                            if (x.StockPcsQty > x.OutboundQuantity && x.SaleOrder == outOrderDetail.SaleOrder 
+                                && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer
+                                && (isCanLot ? isCanLot : x.LotNumber == outOrderDetail.PLot)
+                                && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
                             {
                                 if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
                                 {
@@ -195,6 +211,7 @@
             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);
             if (stockTotalQuantity >= needQuantity)//搴撳瓨澶�
             {
                 int index = 0;
@@ -202,7 +219,10 @@
                 {
                     Dt_ProStockInfo stockInfo = stockInfos[index];
                     float useableStockQuantity = stockInfo.proStockInfoDetails
-                        .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder && x.ProductCode == mesRworkOutboundOrder.ProductCode && x.ProductVersion == mesRworkOutboundOrder.ProductVersion)
+                        .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder 
+                            && x.ProductCode == mesRworkOutboundOrder.ProductCode 
+                            && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
+                            && (isCanDate? isCanDate: x.DateCode == mesRworkOutboundOrder.DateCode))
                         .Sum(x => x.StockPcsQty - x.OutboundQuantity);
                     if (useableStockQuantity < needQuantity)
                     {
@@ -213,7 +233,10 @@
                     {
                         stockInfo.proStockInfoDetails.ForEach(x =>
                         {
-                            if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == mesRworkOutboundOrder.SaleOrder && x.ProductCode == mesRworkOutboundOrder.ProductCode && x.ProductVersion == mesRworkOutboundOrder.ProductVersion)
+                            if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == mesRworkOutboundOrder.SaleOrder 
+                                && x.ProductCode == mesRworkOutboundOrder.ProductCode 
+                                && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
+                                && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode))
                             {
                                 if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
                                 {
@@ -238,7 +261,10 @@
                 {
                     Dt_ProStockInfo stockInfo = stockInfos[i];
                     float useableStockQuantity = stockInfo.proStockInfoDetails
-                        .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder && x.ProductCode == mesRworkOutboundOrder.ProductCode && x.ProductVersion == mesRworkOutboundOrder.ProductVersion)
+                        .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder
+                            && x.ProductCode == mesRworkOutboundOrder.ProductCode
+                            && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
+                            && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode))
                         .Sum(x => x.StockPcsQty - x.OutboundQuantity);
                     if (useableStockQuantity < needQuantity)
                     {
@@ -249,7 +275,10 @@
                     {
                         stockInfo.proStockInfoDetails.ForEach(x =>
                         {
-                            if (x.StockPcsQty > x.OutboundQuantity && x.SaleOrder == mesRworkOutboundOrder.SaleOrder && x.ProductCode == mesRworkOutboundOrder.ProductCode && x.ProductVersion == mesRworkOutboundOrder.ProductVersion)
+                            if (x.StockPcsQty > x.OutboundQuantity && x.SaleOrder == mesRworkOutboundOrder.SaleOrder 
+                                && x.ProductCode == mesRworkOutboundOrder.ProductCode 
+                                && x.ProductVersion == mesRworkOutboundOrder.ProductVersion
+                                && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode))
                             {
                                 if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
                                 {

--
Gitblit v1.9.3