From 753361f589444455fe1b20476c658201ccd92c38 Mon Sep 17 00:00:00 2001 From: helongyang <647556386@qq.com> Date: 星期三, 30 七月 2025 09:53:19 +0800 Subject: [PATCH] 更新优化 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs | 130 +++++++++++++++++++++++++----------------- 1 files changed, 77 insertions(+), 53 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 00a3ae1..9321114 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" @@ -109,7 +109,7 @@ public List<Dt_ProStockInfo> GetUseableStocks(Dt_MesRworkOutboundOrder mesRworkOutboundOrder) { //杞崲鎴� 鎴愬搧浠撲粨搴撲俊鎭幏鍙栧熬鏁板睘鎬х殑璐т綅 - Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==WarehouseEnum.HA71.ToString()); + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseId== mesRworkOutboundOrder.WarehouseId); List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehouse.WarehouseId); return BaseDal.GetProStocks(mesRworkOutboundOrder, locationCodes); } @@ -125,10 +125,14 @@ public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_ProOutOrderDetail 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(); 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.ProductCode == outOrderDetail.PLot) + && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)) + .Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x); + //stockInfos = stockInfos.OrderBy(x => x.Id).ToList(); + if (stockTotalQuantity >= needQuantity)//搴撳瓨澶� { int index = 0; @@ -137,13 +141,13 @@ 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) + && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot) && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)) .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) + && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot) && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)).ToList().ForEach(x => x.OutboundQuantity = x.StockPcsQty); needQuantity -= useableStockQuantity; } @@ -154,7 +158,7 @@ //婊¤冻鏉′欢杩涜鍒嗛厤 if ((x.StockPcsQty > x.OutboundQuantity) && x.ProductCode == outOrderDetail.PCode && x.ProductVersion.StartsWith(outOrderDetail.PVer.Substring(0, 1)) - && (isCanLot ? isCanLot : x.BagNo == outOrderDetail.PLot) + && (isCanLot ? isCanLot : x.ProductCode == outOrderDetail.PLot) && (isCanDate ? isCanDate : x.DateCode == outOrderDetail.DateCode)) { if (x.StockPcsQty - x.OutboundQuantity >= needQuantity) @@ -233,7 +237,10 @@ 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); + float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Where(x => + x.ProductCode == outOrderDetail.ScrapProCode + && x.ProductVersion == outOrderDetail.ScrapProVersion + && x.LotNumber == outOrderDetail.ScrapProLotNo).Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x); //stockInfos = stockInfos.OrderBy(x => x.Id).ToList(); if (stockTotalQuantity >= needQuantity)//搴撳瓨澶� { @@ -293,9 +300,12 @@ public List<Dt_ProStockInfo> GetOutboundStocks(List<Dt_ProStockInfo> stockInfos, Dt_MesRworkOutboundOrder mesRworkOutboundOrder, 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(); bool isCanDate = string.IsNullOrEmpty(mesRworkOutboundOrder.DateCode); + float stockTotalQuantity = stockInfos.Select(x => x.proStockInfoDetails.Where(x => x.ProductCode == mesRworkOutboundOrder.ProductCode + && x.ProductVersion == mesRworkOutboundOrder.ProductVersion + && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode)) + .Sum(v => v.StockPcsQty - v.OutboundQuantity)).Sum(x => x); + //stockInfos = stockInfos.OrderBy(x => x.Id).ToList(); if (stockTotalQuantity >= needQuantity)//搴撳瓨澶� { int index = 0; @@ -303,8 +313,7 @@ { Dt_ProStockInfo stockInfo = stockInfos[index]; float useableStockQuantity = stockInfo.proStockInfoDetails - .Where(x => x.SaleOrder == mesRworkOutboundOrder.SaleOrder - && x.ProductCode == mesRworkOutboundOrder.ProductCode + .Where(x => x.ProductCode == mesRworkOutboundOrder.ProductCode && x.ProductVersion == mesRworkOutboundOrder.ProductVersion && (isCanDate? isCanDate: x.DateCode == mesRworkOutboundOrder.DateCode)) .Sum(x => x.StockPcsQty - x.OutboundQuantity); @@ -317,7 +326,7 @@ { stockInfo.proStockInfoDetails.ForEach(x => { - if ((x.StockPcsQty > x.OutboundQuantity) && x.SaleOrder == mesRworkOutboundOrder.SaleOrder + if ((x.StockPcsQty > x.OutboundQuantity) && x.ProductCode == mesRworkOutboundOrder.ProductCode && x.ProductVersion == mesRworkOutboundOrder.ProductVersion && (isCanDate ? isCanDate : x.DateCode == mesRworkOutboundOrder.DateCode)) @@ -337,47 +346,6 @@ } assignOutStocks.Add(stockInfo); index++; - } - } - else - { - for (int i = 0; i < stockInfos.Count; i++) - { - Dt_ProStockInfo stockInfo = stockInfos[i]; - float useableStockQuantity = stockInfo.proStockInfoDetails - .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) - { - stockInfo.proStockInfoDetails.ForEach(x => x.OutboundQuantity = x.StockPcsQty); - needQuantity -= useableStockQuantity; - } - else - { - stockInfo.proStockInfoDetails.ForEach(x => - { - 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) - { - x.OutboundQuantity += needQuantity; - needQuantity = 0; - } - else - { - needQuantity -= (x.StockPcsQty - x.OutboundQuantity); - x.OutboundQuantity = x.StockPcsQty; - } - } - }); - } - assignOutStocks.Add(stockInfo); } } residueQuantity = needQuantity; @@ -403,5 +371,61 @@ // } // return (deleteStockDetails, updateStockDetails); //} + public WebResponseContent GetProCodeByWarehouse(int warehouseId) + { + try + { + //鑾峰彇鎵�鏈夊簱瀛樺瀷鍙� + 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) + { + return WebResponseContent.Instance.Error(ex.Message); + } + } + + public WebResponseContent GetProVersionByCode(string scrapProCode, int warehouseId) + { + try + { + //鑾峰彇鎸囧畾浜у搧搴撳瓨鐗堟湰 + 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) + { + return WebResponseContent.Instance.Error(ex.Message); + } + } + + public WebResponseContent GetProLotNoByCode(string scrapProCode, int warehouseId) + { + try + { + //鑾峰彇鎸囧畾浜у搧搴撳瓨鎵规 + 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) + { + return WebResponseContent.Instance.Error(ex.Message); + } + } } } -- Gitblit v1.9.3