From bb70df78718928e84443bdb1d0fb819c17d120aa Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Wed, 8 Nov 2023 11:26:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=89=A9=E6=96=99=E5=A1=AB?= =?UTF-8?q?=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OutStockRepositories.cs | 26 ++++++++++++++----- .../OutStockTaskRepositories.cs | 25 +++++++++++++----- .../TakeStockRepositories.cs | 16 +++++++++--- 3 files changed, 51 insertions(+), 16 deletions(-) diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs index 80282631..8b1f83c3 100644 --- a/src/WMS.Web.Repositories/OutStockRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockRepositories.cs @@ -27,9 +27,11 @@ namespace WMS.Web.Repositories private readonly ISingleDataService _singleDataService; private readonly ILoginRepositories _loginRepositories; private readonly IBasicsRepositories _basicsRepositories; + private readonly IErpService _erpService; public OutStockRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider, - ISingleDataService singleDataService, ILoginRepositories loginRepositories, IBasicsRepositories basicsRepositories) + ISingleDataService singleDataService, ILoginRepositories loginRepositories, IBasicsRepositories basicsRepositories, + IErpService erpService) { _context = context; _mapper = mapper; @@ -37,6 +39,7 @@ namespace WMS.Web.Repositories _singleDataService = singleDataService; _loginRepositories = loginRepositories; _basicsRepositories = basicsRepositories; + _erpService = erpService; } /// /// 新增 @@ -86,6 +89,16 @@ namespace WMS.Web.Repositories ids = staffList.Where(w => EF.Functions.Like(w.Name, "%" + dto.Creator + "%")).Select(s => s.Id).ToList(); } + //1.获取物料集合 + var materials_result = await _erpService.BillQueryForMaterial(); + if (!materials_result.IsSuccess) + return (new List(), 0); + var materials = materials_result.Data.ToList(); + List mIds = new List(); + //物料集合;模糊查询后的物料集合 + if (!string.IsNullOrEmpty(dto.MaterialNumber)) + mIds = materials.Where(w => EF.Functions.Like(w.MaterialNumber, "%" + dto.MaterialNumber + "%")).Select(s => s.MaterialId).ToList(); + var query = _context.OutStockDetails .GroupJoin(_context.OutStock, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders }) .SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order }) @@ -93,7 +106,8 @@ namespace WMS.Web.Repositories .Where(adv => 1 == 1); //if (!string.IsNullOrEmpty(dto.ReceiptCustomer)) - //if (!string.IsNullOrEmpty(dto.MaterialNumber)) + if (mIds.Count() != 0) + query = query.Where(w => mIds.Contains(w.detail.MaterialId)); if (ids.Count() > 0) query = query.Where(w => ids.Contains(w.order.CreatorId)); if (!string.IsNullOrEmpty(dto.SourceBillNo)) @@ -126,10 +140,10 @@ namespace WMS.Web.Repositories SourceBillNo = s.order.SourceBillNo, SaleBillNo = s.detail.SaleBillNo, DeliveryOrg = "", - ReceiptCustomer = _singleDataService.GetSingleData(SingleAction.Customers, _loginRepositories.CompanyId, s.order.ReceiptCustomerId), - MaterialName = "", - MaterialNumber = "", - Specifications = "", + ReceiptCustomer = "", + MaterialName = materials.FirstOrDefault(f => f.MaterialId == s.detail.MaterialId).MaterialName ?? "", + MaterialNumber = materials.FirstOrDefault(f => f.MaterialId == s.detail.MaterialId).MaterialNumber ?? "", + Specifications = materials.FirstOrDefault(f => f.MaterialId == s.detail.MaterialId).Specifications ?? "", Qty = s.detail.Qty #endregion diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index 81062606..4c8c5acc 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -26,16 +26,18 @@ namespace WMS.Web.Repositories private readonly RepositoryDbContext _context; private readonly ISingleDataService _singleDataService; private readonly ILoginRepositories _loginRepositories; + private readonly IErpService _erpService; public OutStockTaskRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider, - ISingleDataService singleDataService, ILoginRepositories loginRepositories) + ISingleDataService singleDataService, ILoginRepositories loginRepositories, IErpService erpService) { _context = context; _mapper = mapper; _serviceProvider = serviceProvider; _singleDataService = singleDataService; _loginRepositories = loginRepositories; + _erpService = erpService; } /// /// 新增 @@ -212,6 +214,16 @@ namespace WMS.Web.Repositories /// public async Task<(List list, int total)> GetListAsync(OutStockTaskQueryRequest dto) { + //1.获取物料集合 + var materials_result = await _erpService.BillQueryForMaterial(); + if (!materials_result.IsSuccess) + return (new List(), 0); + var materials = materials_result.Data.ToList(); + List mIds = new List(); + //物料集合;模糊查询后的物料集合 + if (!string.IsNullOrEmpty(dto.MaterialNumber)) + mIds = materials.Where(w => EF.Functions.Like(w.MaterialNumber, "%" + dto.MaterialNumber + "%")).Select(s=>s.MaterialId).ToList(); + var query = _context.OutStockTaskDetails .GroupJoin(_context.OutStockTask, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders }) .SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order }) @@ -219,7 +231,8 @@ namespace WMS.Web.Repositories .Where(adv => 1 == 1); //if (!string.IsNullOrEmpty(dto.ReceiptCustomer)) - //if (!string.IsNullOrEmpty(dto.MaterialNumber)) + if (mIds.Count()!=0) + query = query.Where(w => mIds.Contains(w.detail.MaterialId)); if (dto.Ids.Count() > 0) query = query.Where(w => dto.Ids.Contains(w.detail.Id)); if (!string.IsNullOrEmpty(dto.SourceBillNo)) @@ -254,10 +267,10 @@ namespace WMS.Web.Repositories SaleBillNo = s.detail.SaleBillNo, DeliveryOrg = "", ReceiptCustomer = "", - MaterialName = "", - MaterialNumber = "", - Specifications = "", - Unit="", + MaterialName = materials.FirstOrDefault(f => f.MaterialId == s.detail.MaterialId).MaterialName ?? "", + MaterialNumber = materials.FirstOrDefault(f => f.MaterialId == s.detail.MaterialId).MaterialNumber ?? "", + Specifications = materials.FirstOrDefault(f => f.MaterialId == s.detail.MaterialId).Specifications ?? "", + Unit= materials.FirstOrDefault(f => f.MaterialId == s.detail.MaterialId).BaseUnitName ?? "", #endregion }).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync(); diff --git a/src/WMS.Web.Repositories/TakeStockRepositories.cs b/src/WMS.Web.Repositories/TakeStockRepositories.cs index 913d4c9c..fc48b930 100644 --- a/src/WMS.Web.Repositories/TakeStockRepositories.cs +++ b/src/WMS.Web.Repositories/TakeStockRepositories.cs @@ -25,16 +25,18 @@ namespace WMS.Web.Repositories private readonly RepositoryDbContext _context; private readonly ISingleDataService _singleDataService; private readonly ILoginRepositories _loginRepositories; + private readonly IErpService _erpService; public TakeStockRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider, - ISingleDataService singleDataService, ILoginRepositories loginRepositories) + ISingleDataService singleDataService, ILoginRepositories loginRepositories, IErpService erpService) { _context = context; _mapper = mapper; _serviceProvider = serviceProvider; _singleDataService = singleDataService; _loginRepositories = loginRepositories; + _erpService = erpService; } /// /// 新增 @@ -157,9 +159,15 @@ namespace WMS.Web.Repositories /// public async Task<(List list, int total)> GetListAsync(TakeStockQueryRequest dto) { + //1.获取物料集合 + var materials_result = await _erpService.BillQueryForMaterial(); + if (!materials_result.IsSuccess) + return (new List(), 0); + var materials = materials_result.Data.ToList(); + var query = _context.TakeStock - //.GroupJoin(_context.TakeStock, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders }) - //.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order }) + //.GroupJoin(_context.TakeStock, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders }) + //.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order }) .OrderByDescending(o => o.Id) .Where(adv => 1 == 1); @@ -180,7 +188,7 @@ namespace WMS.Web.Repositories #region dto组装 Id = s.Id, BillNo = s.BillNo, - Unit = "",//物料带出来 + Unit = materials.FirstOrDefault(f => f.MaterialId == s.MaterialId).BaseUnitName ?? "", Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.StockId), SubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, _loginRepositories.CompanyId, s.SubStockId), BeforeQty = s.BeforeQty,