|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | //满足æ¡ä»¶è¿è¡åé
 | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | 
|---|
|  |  |  | 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)//åºåå¤ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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)) | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | { | 
|---|