wangxinhui
2025-09-11 fb745c842df36edc5101291a7f239c11c97bcc2f
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs
@@ -71,7 +71,7 @@
                var weight = saveModel.MainData["weight"].ObjToInt();
                //幅宽
                var wide = saveModel.MainData["wide"].ObjToInt();
                Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x=>x.MaterielCode== materSn);
                Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materSn);
                if (materielInfo==null)
                {
                    return content.Error("未找到物料信息");
@@ -114,21 +114,48 @@
            return content;
        }
        public List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, int warehoseId)
        public List<Dt_StockInfo> GetUseableStocks(int materielId,decimal width, int warehoseId)
        {
            List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId);
            return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes);
            return BaseDal.GetStockInfos(materielId,width, locationCodes);
        }
        public List<Dt_StockInfo> GetUseableStocks(string materielCode, string batchNo, string palletcode, int warehoseId)
        /// <summary>
        /// åˆ†é…å®žé™…库存
        /// </summary>
        /// <returns></returns>
        public List<Dt_StockInfo> GetOutboundStocks(List<Dt_StockInfo> stockInfos, decimal needQuantity)
        {
            Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletcode && x.WarehouseId == warehoseId).First();
            List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(stockInfo.LocationCode);
            return BaseDal.GetStockInfos(materielCode, batchNo, locationCodes);
            List<Dt_StockInfo> outStocks = new List<Dt_StockInfo>();
            //获取库存可用数量
            decimal stockTotalQuantity = stockInfos.Sum(x => x.StockLength-x.StockOutLength);
            if (stockTotalQuantity >= needQuantity)//库存够
            {
                int index = 0;
                while (needQuantity > 0)
                {
                    Dt_StockInfo stockInfo = stockInfos[index];
                    decimal useableStockQuantity = stockInfo.StockLength-stockInfo.StockOutLength;
                    if (useableStockQuantity < needQuantity && useableStockQuantity > 0)
                    {
                        stockInfo.StockOutLength=stockInfo.StockLength;
                        needQuantity -= useableStockQuantity;
                    }
                    else
                    {
                        stockInfo.StockOutLength += needQuantity;
                        needQuantity = 0;
                    }
                    outStocks.Add(stockInfo);
                    index++;
                }
            }
            else
            {
                throw new Exception("库存不足");
            }
            return outStocks;
        }
    }
}