From bc478c8fad0988f7021fbc80c4a9375551c8ffa0 Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期五, 13 六月 2025 10:42:04 +0800
Subject: [PATCH] 1

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs |  114 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 66 insertions(+), 48 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 e4efd48..3db069b 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"
@@ -58,11 +58,16 @@
                     {
                         delProStockDetails.Add(proStockInfoDetail);
                         proStockInfo.proStockInfoDetails.Remove(proStockInfoDetail);
+                        item.OutDetailId = proStockInfoDetail.OutDetailId;
+                        item.OutDetailSaleNo = proStockInfoDetail.OutDetailSaleNo;
                     }
                     else
                     {
                         proStockInfoDetail.StockPcsQty -= item.StockPcsQty;
                         proStockInfoDetail.SETQty -= item.SETQty;
+                        proStockInfoDetail.OutboundQuantity = 0;
+                        item.OutDetailId = 0;
+                        item.OutDetailSaleNo = "";
                         upProStockDetails.Add(proStockInfoDetail);
                     }
 
@@ -83,7 +88,7 @@
                 {
                     _stockRepository.ProStockInfoDetailRepository.UpdateData(upProStockDetails);
                 }
-                content.OK();
+                content.OK("鎴愬姛", proStockInfoDetails);
             }
             catch (Exception ex)
             {
@@ -125,33 +130,40 @@
                 {
                     Dt_ProStockInfo stockInfo = stockInfos[index];
                     float useableStockQuantity = stockInfo.proStockInfoDetails
-                        .Where(x => x.SaleOrder == outOrderDetail.SaleOrder && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer
-                            && (isCanLot ? isCanLot : x.LotNumber == outOrderDetail.PLot)
+                        .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(x => x.StockPcsQty - x.OutboundQuantity);
-                    if (useableStockQuantity < needQuantity)
+                    if (useableStockQuantity < needQuantity && useableStockQuantity >0)
                     {
-                        stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty);
+                        stockInfo.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)).ToList().ForEach(x => x.OutboundQuantity = x.StockPcsQty);
                         needQuantity -= useableStockQuantity;
                     }
                     else
                     {
                         stockInfo.proStockInfoDetails.ForEach(x =>
                         {
-                            if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == outOrderDetail.SaleOrder 
-                                && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer 
-                                && (isCanLot ? isCanLot : x.LotNumber == outOrderDetail.PLot)
+                            //婊¤冻鏉′欢杩涜鍒嗛厤
+                            if ((x.StockPcsQty > x.OutboundQuantity)
+                                && x.ProductCode == outOrderDetail.PCode && x.ProductVersion.StartsWith(outOrderDetail.PVer.Substring(0, 1)) 
+                                && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot)
                                 && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
                             {
                                 if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
                                 {
                                     x.OutboundQuantity += needQuantity;
                                     needQuantity = 0;
+                                    x.OutDetailSaleNo = outOrderDetail.SaleOrder;
+                                    x.OutDetailId = outOrderDetail.Id;
                                 }
                                 else
                                 {
                                     needQuantity -= (x.StockPcsQty - x.OutboundQuantity);
                                     x.OutboundQuantity = x.StockPcsQty;
+                                    x.OutDetailSaleNo = outOrderDetail.SaleOrder;
+                                    x.OutDetailId = outOrderDetail.Id;
                                 }
                             }
                         });
@@ -160,46 +172,52 @@
                     index++;
                 }
             }
-            else
-            {
-                for (int i = 0; i < stockInfos.Count; i++)
-                {
-                    Dt_ProStockInfo stockInfo = stockInfos[i];
-                    float useableStockQuantity = stockInfo.proStockInfoDetails
-                        .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)
-                    {
-                        stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty);
-                        needQuantity -= useableStockQuantity;
-                    }
-                    else
-                    {
-                        stockInfo.proStockInfoDetails.ForEach(x =>
-                        {
-                            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)
-                                {
-                                    x.OutboundQuantity += needQuantity;
-                                    needQuantity = 0;
-                                }
-                                else
-                                {
-                                    needQuantity -= (x.StockPcsQty - x.OutboundQuantity);
-                                    x.OutboundQuantity = x.StockPcsQty;
-                                }
-                            }
-                        });
-                    }
-                    assignOutStocks.Add(stockInfo);
-                }
-            }
+            #region 鎴愬搧鍙敤搴撳瓨涓嶈冻涓嶈繘琛屽垎閰�
+            //else
+            //{
+            //    for (int i = 0; i < stockInfos.Count; i++)
+            //    {
+            //        Dt_ProStockInfo stockInfo = stockInfos[i];
+            //        float useableStockQuantity = stockInfo.proStockInfoDetails
+            //            .Where(x => x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer
+            //                && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot)
+            //                && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
+            //            .Sum(x => x.StockPcsQty - x.OutboundQuantity);
+            //        if (useableStockQuantity < needQuantity)
+            //        {
+            //            stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty);
+            //            needQuantity -= useableStockQuantity;
+            //        }
+            //        else
+            //        {
+            //            stockInfo.proStockInfoDetails.ForEach(x =>
+            //            {
+            //                if (x.StockPcsQty > x.OutboundQuantity && x.ProductCode == outOrderDetail.PCode && x.ProductVersion == outOrderDetail.PVer
+            //                    && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot)
+            //                    && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode))
+            //                {
+            //                    if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
+            //                    {
+            //                        x.OutboundQuantity += needQuantity;
+            //                        needQuantity = 0;
+            //                    }
+            //                    else
+            //                    {
+            //                        needQuantity -= (x.StockPcsQty - x.OutboundQuantity);
+            //                        x.OutboundQuantity = x.StockPcsQty;
+            //                    }
+            //                }
+            //            });
+            //        }
+            //        stockInfo.proStockInfoDetails.ForEach(x =>
+            //        {
+            //            x.OutDetailSaleNo = outOrderDetail.SaleOrder;
+            //            x.OutDetailId = outOrderDetail.Id;
+            //        });
+            //        assignOutStocks.Add(stockInfo);
+            //    }
+            //}
+            #endregion
             residueQuantity = needQuantity;
             return assignOutStocks;
         }

--
Gitblit v1.9.3