helongyang
3 天以前 753361f589444455fe1b20476c658201ccd92c38
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/ProStockInfoService.cs
@@ -128,7 +128,7 @@
            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();
@@ -141,13 +141,13 @@
                    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;
                    }
@@ -158,7 +158,7 @@
                            //满足条件进行分配
                            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)
@@ -375,11 +375,14 @@
        {
            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)
            {
@@ -391,11 +394,14 @@
        {
            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)
            {
@@ -407,11 +413,14 @@
        {
            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)
            {