| | |
| | | return GetStockInfos(materielCode, batchNo, supplyCode, locationCodes); |
| | | } |
| | | |
| | | |
| | | public List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, string supplyCode, string wearhouseCode, string factoryCode) |
| | | { |
| | | List<string> locationCodes = _locationInfoService.GetCanOutLocationCodes(); |
| | | |
| | | return GetStockInfos(materielCode, batchNo, supplyCode, locationCodes,wearhouseCode,factoryCode); |
| | | } |
| | | |
| | | public List<Dt_StockInfo> GetStockInfos(string materielCode, string lotNo, string supplyCode, List<string> locationCodes, string wearhouseCode, string factoryCode) |
| | | { |
| | | if (string.IsNullOrWhiteSpace(wearhouseCode)) |
| | | { |
| | | throw new ArgumentNullException("ä»åºä¸è½ä¸ºç©º"); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(factoryCode)) |
| | | { |
| | | throw new ArgumentNullException("ååºä¸è½ä¸ºç©º"); |
| | | } |
| | | var query = Db.Queryable<Dt_StockInfo>() |
| | | .Where(x => locationCodes.Contains(x.LocationCode) && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt() |
| | | // && x.StockStatus == (int)StockStatusEmun.æ£å¸¸) |
| | | ).Includes(x => x.Details); |
| | | query = query.Where(x => x.Details.Any(d => d.WarehouseCode == wearhouseCode)); |
| | | query = query.Where(x => x.Details.Any(d => d.FactoryArea == factoryCode)); |
| | | if (!string.IsNullOrEmpty(materielCode)) |
| | | { |
| | | query = query.Where(x => x.Details.Any(d => d.MaterielCode == materielCode)); |
| | | } |
| | | |
| | | if (!string.IsNullOrEmpty(lotNo)) |
| | | { |
| | | query = query.Where(x => x.Details.Any(d => d.BatchNo == lotNo)); |
| | | } |
| | | |
| | | if (!string.IsNullOrEmpty(supplyCode)) |
| | | { |
| | | query = query.Where(x => x.Details.Any(d => d.SupplyCode == supplyCode)); |
| | | } |
| | | |
| | | return query.OrderBy(x => x.CreateDate).ToList(); |
| | | //ISugarQueryable<Dt_LocationInfo> sugarQueryable = Db.Queryable<Dt_LocationInfo>().Where(x => locationCodes.Contains(x.LocationCode)); |
| | | //ISugarQueryable<Dt_StockInfo> sugarQueryable1 = Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.Details.Any(v => v.MaterielCode == materielCode)); |
| | | //return sugarQueryable.InnerJoin(sugarQueryable1, (a, b) => a.LocationCode == b.LocationCode).Select((a, b) => b).OrderBy(a => a.CreateDate).Includes(a => a.Details).ToList(); |
| | | } |
| | | |
| | | public Dt_StockInfo GetPalletStockInfo(int locationType) |
| | | { |
| | | |
| | |
| | | |
| | | //} |
| | | |
| | | public List<StockSelectViewDTO> GetAllocateSelectViewDTOs(int orderId, string materielCode) |
| | | public List<StockSelectViewDTO> GetAllocateSelectViewDTOs(int orderId, int orderdetailid, string materielCode) |
| | | { |
| | | var dballocate = _allocateRepository.Db.Queryable<Dt_AllocateOrder>().First(x => x.Id == orderId); |
| | | if (dballocate == null) |
| | | { |
| | | throw new Exception($"æªæ¾å°åæ®ç¼å·ä¸º{dballocate.OrderNo}çåä¿¡æ¯"); |
| | | //var dballocate = _allocateRepository.Db.Queryable<Dt_AllocateOrder>().Includes(x=>x.Details).Where(x=>x.Details.Any(o=>o.OrderId==orderId)) .First(); |
| | | //if (dballocate == null) |
| | | //{ |
| | | // throw new Exception($"æªæ¾å°åæ®ç¼å·ä¸º{dballocate.OrderNo}çåä¿¡æ¯"); |
| | | |
| | | } |
| | | //} |
| | | |
| | | var outboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_OutboundOrder>().Where(x => x.OrderNo == dballocate.OrderNo).First(); |
| | | var outboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_OutboundOrder>().Includes(x => x.Details).Where(x => x.Details.Any(o => o.OrderId == orderId)).First(); |
| | | if (outboundOrder == null) |
| | | { |
| | | throw new Exception($"æªæ¾å°åæ®ç¼å·ä¸º{dballocate.OrderNo}çåºåºåä¿¡æ¯"); |
| | | throw new Exception($"æªæ¾å°åæ®ç¼å·ä¸º{outboundOrder.UpperOrderNo}çåºåºåä¿¡æ¯"); |
| | | } |
| | | return GetStockSelectViews(outboundOrder.Id, materielCode); |
| | | return GetStockSelectViews(outboundOrder.Id, orderdetailid, materielCode); |
| | | } |
| | | |
| | | public List<StockSelectViewDTO> GetStockSelectViews(int orderId, int orderdetailid, string materielCode) |
| | | { |
| | | Dt_OutboundOrder outboundOrder = _outboundOrderService.Repository.QueryFirst(x => x.Id == orderId); |
| | | if (outboundOrder == null) |
| | | { |
| | | throw new Exception($"æªæ¾å°ID为{orderId}çåºåºåä¿¡æ¯"); |
| | | } |
| | | |
| | | // è·ååºåºåæç»ï¼ç¨äºç¡®å®éè¦çæ¹æ¬¡åä¾åºå |
| | | var orderDetails = SqlSugarHelper.DbWMS.Queryable<Dt_OutboundOrderDetail>().Where(x => x.Id == orderdetailid && x.OrderId == orderId && x.MaterielCode == materielCode).ToList(); |
| | | |
| | | if (!orderDetails.Any()) |
| | | { |
| | | throw new Exception($"åºåºå{orderId}䏿ªæ¾å°ç©æ{materielCode}çæç»ä¿¡æ¯"); |
| | | } |
| | | |
| | | List<string> locationCodes = _locationInfoService.GetCanOutLocationCodes(); |
| | | var result = new List<StockSelectViewDTO>(); |
| | | |
| | | // 为æ¯ä¸ªåºåºåæç»æ¥è¯¢å¯¹åºçåºå |
| | | foreach (var orderDetail in orderDetails) |
| | | { |
| | | // æå»ºæ¥è¯¢æ¡ä»¶ |
| | | var stockQuery = Db.Queryable<Dt_StockInfo>() |
| | | .Where(x => locationCodes.Contains(x.LocationCode)) |
| | | .Where(x => x.StockStatus == (int)StockStatusEmun.å
¥åºå®æ || x.StockStatus == (int)StockStatusEmun.è¿æ) |
| | | .Includes(x => x.Details); |
| | | |
| | | // æ§è¡æ¥è¯¢å¹¶æå
è¿å
åºæåº |
| | | var Qstocks = stockQuery.Where(x => x.Details.Any(d => d.MaterielCode == materielCode && d.StockQuantity > d.OutboundQuantity)); |
| | | Qstocks = stockQuery.Where(x => x.Details.Any(d => d.FactoryArea == outboundOrder.FactoryArea)); |
| | | Qstocks = stockQuery.Where(x => x.Details.Any(d => d.WarehouseCode == orderDetail.WarehouseCode)); |
| | | |
| | | if (!string.IsNullOrEmpty(orderDetail.BatchNo)) |
| | | { |
| | | Qstocks = stockQuery.Where(x => x.Details.Any(d => d.BatchNo == orderDetail.BatchNo)); |
| | | } |
| | | if (!string.IsNullOrEmpty(orderDetail.SupplyCode)) |
| | | { |
| | | Qstocks = stockQuery.Where(x => x.Details.Any(d => d.SupplyCode == orderDetail.SupplyCode)); |
| | | } |
| | | |
| | | var stocks = Qstocks.OrderBy(x => x.CreateDate).ToList(); |
| | | |
| | | foreach (var stock in stocks) |
| | | { |
| | | var relevantDetails = stock.Details |
| | | .Where(d => d.MaterielCode == materielCode && |
| | | string.IsNullOrEmpty(orderDetail.BatchNo) ? true : d.BatchNo == orderDetail.BatchNo && |
| | | string.IsNullOrEmpty(orderDetail.SupplyCode) ? true : d.SupplyCode == orderDetail.SupplyCode && |
| | | d.StockQuantity > d.OutboundQuantity) |
| | | .ToList(); |
| | | |
| | | if (relevantDetails.Any()) |
| | | { |
| | | var firstDetail = relevantDetails.First(); |
| | | var useableQuantity = relevantDetails.Sum(d => d.StockQuantity - d.OutboundQuantity); |
| | | |
| | | result.Add(new StockSelectViewDTO |
| | | { |
| | | LocationCode = stock.LocationCode, |
| | | MaterielCode = firstDetail.MaterielCode, |
| | | MaterielName = firstDetail.MaterielName, |
| | | BatchNo = orderDetail.BatchNo, |
| | | SupplyCode = orderDetail.SupplyCode, |
| | | Barcode = firstDetail.Barcode, |
| | | PalletCode = stock.PalletCode, |
| | | UseableQuantity = useableQuantity, |
| | | StockCreateDate = stock.CreateDate, |
| | | StockId = stock.Id, |
| | | OrderDetailId = orderDetail.Id // å
³èå°å
·ä½çåºåºåæç» |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | public List<StockSelectViewDTO> GetSelectViewDTOs(string orderNo, string materielCode) |
| | |
| | | // æ§è¡æ¥è¯¢å¹¶æå
è¿å
åºæåº |
| | | var Qstocks = stockQuery.Where(x => x.Details.Any(d => d.MaterielCode == materielCode && d.StockQuantity > d.OutboundQuantity)); |
| | | |
| | | Qstocks = stockQuery.Where(x => x.Details.Any(d => d.FactoryArea == outboundOrder.FactoryArea)); |
| | | Qstocks = stockQuery.Where(x => x.Details.Any(d => d.WarehouseCode == orderDetail.WarehouseCode)); |
| | | |
| | | if (!string.IsNullOrEmpty(orderDetail.BatchNo)) |
| | | { |
| | | |
| | | Qstocks = stockQuery.Where(x => x.Details.Any(d => d.BatchNo == orderDetail.BatchNo)); |
| | | |
| | | } |
| | | if (!string.IsNullOrEmpty(orderDetail.SupplyCode)) |
| | | { |
| | | |
| | | Qstocks = stockQuery.Where(x => x.Details.Any(d => d.SupplyCode == orderDetail.SupplyCode)); |
| | | |
| | | } |
| | | |
| | | var stocks = Qstocks.OrderBy(x => x.CreateDate).ToList(); |