|  |  |  | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | && (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(); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  | //    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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|