From 2fbbc3ccaa4123a2d550fa64d91fa8ac25323a58 Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期五, 11 七月 2025 15:32:03 +0800 Subject: [PATCH] 上传最新 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs | 66 +++++++++++++++++++++++++++++++++ 1 files changed, 66 insertions(+), 0 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 3db069b..00a3ae1 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" @@ -113,6 +113,12 @@ List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehouse.WarehouseId); return BaseDal.GetProStocks(mesRworkOutboundOrder, locationCodes); } + //鏌ユ壘鍙敤鎶ュ簾搴撳瓨 + public List<Dt_ProStockInfo> GetUseableStocks(int warehoseId, Dt_ErpProScrapSheetDetail erpProScrapSheetDetail) + { + List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId); + return BaseDal.GetProStocks(erpProScrapSheetDetail, locationCodes); + } /// <summary> /// 鑾峰彇鍑哄簱搴撳瓨 /// </summary> @@ -222,6 +228,66 @@ return assignOutStocks; } /// <summary> + /// 鑾峰彇鎶ュ簾搴撳瓨 + /// </summary> + 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); + //stockInfos = stockInfos.OrderBy(x => x.Id).ToList(); + if (stockTotalQuantity >= needQuantity)//搴撳瓨澶� + { + int index = 0; + while (needQuantity > 0) + { + Dt_ProStockInfo stockInfo = stockInfos[index]; + float useableStockQuantity = stockInfo.proStockInfoDetails + .Where(x => + x.ProductCode == outOrderDetail.ScrapProCode + && x.ProductVersion==outOrderDetail.ScrapProVersion + && x.LotNumber == outOrderDetail.ScrapProLotNo) + .Sum(x => x.StockPcsQty - x.OutboundQuantity); + if (useableStockQuantity < needQuantity && useableStockQuantity > 0) + { + stockInfo.proStockInfoDetails.Where(x => + x.ProductCode == outOrderDetail.ScrapProCode + && x.ProductVersion == outOrderDetail.ScrapProVersion + && x.LotNumber == outOrderDetail.ScrapProLotNo).ToList().ForEach(x => x.OutboundQuantity = x.StockPcsQty); + needQuantity -= useableStockQuantity; + } + else + { + stockInfo.proStockInfoDetails.ForEach(x => + { + //婊¤冻鏉′欢杩涜鍒嗛厤 + if ((x.StockPcsQty > x.OutboundQuantity) + && x.ProductCode == outOrderDetail.ScrapProCode + && x.ProductVersion == outOrderDetail.ScrapProVersion + && x.LotNumber == outOrderDetail.ScrapProLotNo) + { + if (x.StockPcsQty - x.OutboundQuantity >= needQuantity) + { + x.OutboundQuantity += needQuantity; + needQuantity = 0; + x.OutDetailId = outOrderDetail.Id; + } + else + { + needQuantity -= (x.StockPcsQty - x.OutboundQuantity); + x.OutboundQuantity = x.StockPcsQty; + x.OutDetailId = outOrderDetail.Id; + } + } + }); + } + assignOutStocks.Add(stockInfo); + index++; + } + } + residueQuantity = needQuantity; + return assignOutStocks; + } + /// <summary> /// 鑾峰彇MES鎻愬簱搴撳瓨 /// </summary> public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_MesRworkOutboundOrder mesRworkOutboundOrder, float needQuantity, out float residueQuantity) -- Gitblit v1.9.3