wangxinhui
2025-09-06 1f121db427cc068eee97b699c410d1b5f320e867
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs
@@ -90,7 +90,7 @@
                    PalletType = 1,
                    WarehouseId=warehouseId,
                    StockAttribute= materielInfo.MaterielSourceType,
                    StockStatus=StockStatusEmun.手动组盘暂存.ObjToInt(),
                    StockStatus= StockStatusEmun.手动组盘暂存.ObjToInt(),
                    MaterielSpec=materielInfo.MaterielSpec,
                    Unit=materielInfo.MaterielUnit,
                    MaterielThickness=thickness,
@@ -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;
        }
    }
}