From 2aec0a99e559fb11b7046b148e5f357b3208cb66 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期五, 12 九月 2025 10:06:22 +0800
Subject: [PATCH] 推送最新代码

---
 项目代码/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs |   49 ++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 38 insertions(+), 11 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs"
index 029c981..b4cc9c5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs"
@@ -71,7 +71,7 @@
                 var weight = saveModel.MainData["weight"].ObjToInt();
                 //骞呭
                 var wide = saveModel.MainData["wide"].ObjToInt();
-                Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x=>x.MaterielCode== materSn);
+                Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materSn);
                 if (materielInfo==null)
                 {
                     return content.Error("鏈壘鍒扮墿鏂欎俊鎭�");
@@ -90,7 +90,7 @@
                     PalletType = 1,
                     WarehouseId=warehouseId,
                     StockAttribute= materielInfo.MaterielSourceType,
-                    StockStatus=StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt(),
+                    StockStatus= StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt(),
                     MaterielSpec=materielInfo.MaterielSpec,
                     Unit=materielInfo.MaterielUnit,
                     MaterielThickness=thickness,
@@ -114,21 +114,48 @@
             return content;
         }
 
-        public List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, int warehoseId)
+        public List<Dt_StockInfo> GetUseableStocks(int materielId,decimal width, int warehoseId)
         {
             List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId);
 
-            return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes);
+            return BaseDal.GetStockInfos(materielId,width, locationCodes);
         }
 
-        public List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, string palletcode, int warehoseId)
+        /// <summary>
+        /// 鍒嗛厤瀹為檯搴撳瓨
+        /// </summary>
+        /// <returns></returns>
+        public List<Dt_StockInfo> GetOutboundStocks(List<Dt_StockInfo> stockInfos, decimal needQuantity)
         {
-            Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletcode && x.WarehouseId == warehoseId).First();
-
-            List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(stockInfo.LocationCode);
-
-            return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes);
+            List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>();
+            //鑾峰彇搴撳瓨鍙敤鏁伴噺
+            decimal stockTotalQuantity = stockInfos.Sum(x => x.StockLength-x.StockOutLength);
+            if (stockTotalQuantity >= needQuantity)//搴撳瓨澶�
+            {
+                int index = 0;
+                while (needQuantity > 0)
+                {
+                    Dt_StockInfo stockInfo = stockInfos[index];
+                    decimal useableStockQuantity = stockInfo.StockLength-stockInfo.StockOutLength;
+                    if (useableStockQuantity < needQuantity && useableStockQuantity > 0)
+                    {
+                        stockInfo.StockOutLength=stockInfo.StockLength;
+                        needQuantity -= useableStockQuantity;
+                    }
+                    else
+                    {
+                        stockInfo.StockOutLength += needQuantity;
+                        needQuantity = 0;
+                    }
+                    outStocks.Add(stockInfo);
+                    index++;
+                }
+            }
+            else
+            {
+                throw new Exception("搴撳瓨涓嶈冻");
+            }
+            return outStocks;
         }
-
     }
 }

--
Gitblit v1.9.3