From 0705cb6170a9ba77ba48bbb6dcebb9cf3d73cbea Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 14 十月 2025 02:12:25 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn

---
 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs |  102 +++++++++++++++------------------------------------
 1 files changed, 30 insertions(+), 72 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 ab0e7bb..30b840b 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"
@@ -97,10 +97,10 @@
             return content;
         }
         //鏌ユ壘鍙敤搴撳瓨
-        public List<Dt_ProStockInfo> GetUseableStocks(int warehoseId,Dt_ProOutOrderDetail proOutOrderDetail)
+        public List<Dt_ProStockInfo> GetUseableStocks(int warehoseId,Dt_ProOutOrderDetail proOutOrderDetail, bool isFineWorks = false)
         {
             List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId);
-            return BaseDal.GetProStocks(proOutOrderDetail,locationCodes);
+            return BaseDal.GetProStocks(proOutOrderDetail,locationCodes, isFineWorks);
         }
         /// <summary>
         /// MES鎻愬簱鍙敤搴撳瓨
@@ -126,10 +126,8 @@
         {
             List<Dt_ProStockInfo> assignOutStocks =new List<Dt_ProStockInfo>();
             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))
+                            && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot))
                         .Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x);
             //stockInfos = stockInfos.OrderBy(x => x.Id).ToList();
             
@@ -141,14 +139,12 @@
                     Dt_ProStockInfo stockInfo = stockInfos[index];
                     float useableStockQuantity = 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))
+                            && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot))
                         .Sum(x => x.StockPcsQty - x.OutboundQuantity);
                     if (useableStockQuantity < needQuantity && useableStockQuantity >0)
                     {
                         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);
+                            && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot)).ToList().ForEach(x => x.OutboundQuantity = x.StockPcsQty);
                         needQuantity -= useableStockQuantity;
                     }
                     else
@@ -158,8 +154,7 @@
                             //婊¤冻鏉′欢杩涜鍒嗛厤
                             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))
+                                && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot))
                             {
                                 if (x.StockPcsQty - x.OutboundQuantity >= needQuantity)
                                 {
@@ -182,52 +177,6 @@
                     index++;
                 }
             }
-            #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;
         }
@@ -375,11 +324,14 @@
         {
             try
             {
-                List<Dt_ProStockInfo> proStockInfo = BaseDal.QueryData(x => x.WarehouseId == warehouseId);
-                List<int> proStockId = proStockInfo.Select(x => x.Id).ToList();
-                List<Dt_ProStockInfoDetail> proStockInfoDetails = BaseDal.Db.Queryable<Dt_ProStockInfoDetail>().Where(x => proStockId.Contains(x.OutDetailId)).ToList();
-                List<string> proCode = proStockInfoDetails.Select(x => x.ProductCode).ToList();
-                return WebResponseContent.Instance.OK(data: proCode);
+                //鑾峰彇鎵�鏈夊簱瀛樺瀷鍙�
+                List<Dt_ProStockInfoDetail> proStockInfoDetails = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo, Dt_ProStockInfoDetail>((master, detail) => master.Id == detail.ProStockId)
+                .Where((master, detail) => master.WarehouseId == warehouseId)
+                .Select((master, detail) => detail)
+                .ToList();
+                //杩囨护閲嶅
+                List<string> proCode = proStockInfoDetails.Select(x => x.ProductCode).Distinct().ToList();
+                return WebResponseContent.Instance.OK("鎴愬姛",data: proCode);
             }
             catch (Exception ex)
             {
@@ -391,11 +343,14 @@
         {
             try
             {
-                List<Dt_ProStockInfo> proStockInfo = BaseDal.QueryData(x => x.WarehouseId == warehouseId);
-                List<int> proStockId = proStockInfo.Select(x => x.Id).ToList();
-                List<Dt_ProStockInfoDetail> proStockInfoDetails = BaseDal.Db.Queryable<Dt_ProStockInfoDetail>().Where(x => scrapProCode.Contains(x.ProductCode) && proStockId.Contains(x.OutDetailId)).ToList();
-                List<string> productVersion = proStockInfoDetails.Select(x => x.ProductVersion).ToList();
-                return WebResponseContent.Instance.OK(data: productVersion);
+                //鑾峰彇鎸囧畾浜у搧搴撳瓨鐗堟湰
+                List<Dt_ProStockInfoDetail> proStockInfoDetails = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo, Dt_ProStockInfoDetail>((master, detail) => master.Id == detail.ProStockId)
+                .Where((master, detail) => master.WarehouseId == warehouseId && detail.ProductCode== scrapProCode)
+                .Select((master, detail) => detail)
+                .ToList();
+                //杩囨护閲嶅
+                List<string> productVersion = proStockInfoDetails.Select(x => x.ProductVersion).Distinct().ToList();
+                return WebResponseContent.Instance.OK("鎴愬姛",data: productVersion);
             }
             catch (Exception ex)
             {
@@ -407,11 +362,14 @@
         {
             try
             {
-                List<Dt_ProStockInfo> proStockInfo = BaseDal.QueryData(x => x.WarehouseId == warehouseId);
-                List<int> proStockId = proStockInfo.Select(x => x.Id).ToList();
-                List<Dt_ProStockInfoDetail> proStockInfoDetails = BaseDal.Db.Queryable<Dt_ProStockInfoDetail>().Where(x => scrapProCode.Contains(x.ProductCode) && proStockId.Contains(x.OutDetailId)).ToList();
-                List<string> lotNumber = proStockInfoDetails.Select(x => x.LotNumber).ToList();
-                return WebResponseContent.Instance.OK(data: lotNumber);
+                //鑾峰彇鎸囧畾浜у搧搴撳瓨鎵规
+                List<Dt_ProStockInfoDetail> proStockInfoDetails = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo, Dt_ProStockInfoDetail>((master, detail) => master.Id == detail.ProStockId)
+                .Where((master, detail) => master.WarehouseId == warehouseId && detail.ProductCode == scrapProCode)
+                .Select((master, detail) => detail)
+                .ToList();
+                //杩囨护閲嶅
+                List<string> lotNumber = proStockInfoDetails.Select(x => x.LotNumber).Distinct().ToList();
+                return WebResponseContent.Instance.OK("鎴愬姛", data: lotNumber);
             }
             catch (Exception ex)
             {

--
Gitblit v1.9.3