dengjunjie
2025-01-13 aeaa71fbd60e8f824ce56f82ad91c9480fd75af7
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs
@@ -37,6 +37,12 @@
            _outboundRepository = outboundRepository;
        }
        /// <summary>
        /// æŸ¥è¯¢è®¢å•立库库存视图
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="materielCode"></param>
        /// <returns></returns>
        public List<StockSelectViewDTO> GetStockSelectViews(int orderId, string materielCode)
        {
            try
@@ -71,48 +77,36 @@
            }
        }
        public StockOutboundOrderDTO GetStockOutboundOrder(SaveModel saveModel)
        /// <summary>
        /// æŸ¥è¯¢è®¢å•平库库存视图
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="materielCode"></param>
        /// <returns></returns>
        public List<StockSelectViewDTO> GetPKStockSelectViews(int orderId, string materielCode)
        {
            try
            {
                var palletCode = saveModel.MainData["barcode"].ToString();
                Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
                if (stockInfo == null)
                Dt_OutboundOrder outboundOrder = _outboundRepository.OutboundOrderRepository.QueryFirst(x => x.Id == orderId);
                if (outboundOrder == null)
                {
                    throw new Exception($"未找到库存信息");
                    throw new Exception($"未找到出库单信息");
                }
                Dt_StockInfoDetail stockInfoDetail = stockInfo.Details.FirstOrDefault();
                if (stockInfoDetail == null)
                return BaseDal.QueryTabs<Dt_StockInfo, Dt_StockInfoDetail, StockSelectViewDTO>((a, b) => a.Id == b.StockId && a.WarehouseId == outboundOrder.WarehouseId, (a, b) => new StockSelectViewDTO
                {
                    throw new Exception($"未找到库存详情");
                }
                BaseDal.QueryTabs<Dt_OutboundOrder, Dt_OutboundOrderDetail, StockOutboundOrderDTO>((a, b) => a.Id == b.OrderId, (a, b) => new StockOutboundOrderDTO
                {
                    OrderNo = a.OrderNo,
                    LocationCode = a.LocationCode,
                    MaterielCode = b.MaterielCode,
                    MaterielName = b.MaterielName,
                    PalletCode = stockInfo.PalletCode,
                    BatchNo = b.BatchNo,
                    OrderQuantity = b.OrderQuantity,
                    OverOutQuantity = b.OverOutQuantity,
                    OutboundQuantity = stockInfoDetail.OutboundQuantity,
                    SerialNumber = stockInfoDetail.SerialNumber,
                    StockQuantity = stockInfoDetail.StockQuantity,
                }, a => true, b => b.BatchNo == stockInfoDetail.BatchNo && b.MaterielCode == stockInfoDetail.MaterielCode, x => true).Select(x => new StockOutboundOrderDTO
                    PalletCode = a.PalletCode,
                    UseableQuantity = b.StockQuantity - b.OutboundQuantity
                }, a => a.LocationCode == "平库位", b => b.StockQuantity > b.OutboundQuantity && b.MaterielCode == materielCode, x => true).GroupBy(x => x.PalletCode).Select(x => new StockSelectViewDTO
                {
                    OrderNo = x.OrderNo,
                    MaterielCode = x.MaterielCode,
                    MaterielName = x.MaterielName,
                    PalletCode = x.PalletCode,
                    BatchNo = x.BatchNo,
                    OrderQuantity = x.OrderQuantity,
                    OverOutQuantity = x.OverOutQuantity,
                    OutboundQuantity = x.OutboundQuantity,
                    SerialNumber = x.SerialNumber,
                    StockQuantity = x.StockQuantity,
                    LocationCode = x.FirstOrDefault()?.LocationCode ?? "",
                    MaterielCode = x.FirstOrDefault()?.MaterielCode ?? "",
                    MaterielName = x.FirstOrDefault()?.MaterielName ?? "",
                    PalletCode = x.Key,
                    UseableQuantity = x.Sum(x => x.UseableQuantity)
                }).ToList();
                return new StockOutboundOrderDTO();
            }
            catch (Exception ex)
            {
@@ -120,6 +114,21 @@
            }
        }
        public WebResponseContent StockQueryData(SaveModel saveModel)
        {
            try
            {
                var barcode = saveModel.MainData["barcode"].ToString();
                var warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
                Dt_StockInfo stockInfo = BaseDal.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == barcode && x.WarehouseId == warehouseId).Includes(x => x.Details).First();
                if (stockInfo == null) throw new Exception("未找到托盘信息");
                return WebResponseContent.Instance.OK(data: stockInfo);
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// 
        /// </summary>