diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index def21d15..4ea68d47 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -23,10 +23,13 @@ namespace WMS.Web.Api.Controllers { private readonly ILoginService _loginService; private readonly IBasicsRepositories _basicsRepositories; - public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories) + private readonly IBoxRepositories _boxRepositories; + public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories, + IBoxRepositories boxRepositories) { _loginService = loginService; _basicsRepositories = basicsRepositories; + _boxRepositories = boxRepositories; } /// @@ -95,5 +98,24 @@ namespace WMS.Web.Api.Controllers var r = await _basicsRepositories.GetSubUcStockAsync(id, name); return Result>.ReSuccess(r); } + + /// + /// 根据箱号获取箱信息 + /// + /// 必填 + /// + [HttpGet] + [Route("GetBoxDetails")] + public async Task> GetBoxDetails([FromQuery] string billNo) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); + if(string.IsNullOrEmpty(billNo)) + return ResultList.ReSuccess(new List()); + + var r = await _boxRepositories.GetDetails(billNo); + return ResultList.ReSuccess(r); + } } } diff --git a/src/WMS.Web.Core/Dto/BoxDetailResponse.cs b/src/WMS.Web.Core/Dto/BoxDetailResponse.cs new file mode 100644 index 00000000..0e50d697 --- /dev/null +++ b/src/WMS.Web.Core/Dto/BoxDetailResponse.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto +{ + /// + /// 根据箱号获取物料信息 + /// + public class BoxDetailResponse + { + /// + /// 单据头ID + /// + public int Fid { get; set; } + /// + /// 箱Id + /// + public int BoxId { get; set; } + /// + /// 物料ID + /// + public int MaterialId { get; set; } + /// + /// 物料名称 + /// + public string MaterialName { get; set; } + /// + /// 物料编码 + /// + public string MaterialNumber { get; set; } + /// + /// 物料规格型号 + /// + public string Specifications { get; set; } + /// + /// 供应商ID + /// + public int SupplierId { get; set; } + /// + /// 数量(装箱数量) + /// + public decimal Qty { get; set; } + /// + /// 序列号集 + /// + public string SerialNumbers { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs index 7e040c84..70bcfc01 100644 --- a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using System.Threading.Tasks; +using WMS.Web.Core.Dto; using WMS.Web.Domain.Entitys; namespace WMS.Web.Domain.Infrastructure @@ -12,5 +13,7 @@ namespace WMS.Web.Domain.Infrastructure public interface IBoxRepositories { Task Get(string BoxBillNo); + //根据箱号查询物料信息 + Task> GetDetails(string BoxBillNo); } } diff --git a/src/WMS.Web.Repositories/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs index 42234617..51b195e0 100644 --- a/src/WMS.Web.Repositories/BoxRepositories.cs +++ b/src/WMS.Web.Repositories/BoxRepositories.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using WMS.Web.Core.Dto; using WMS.Web.Domain.Entitys; using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.IService.Public; @@ -36,8 +37,33 @@ namespace WMS.Web.Repositories } public async Task Get(string BoxBillNo) { - return await _context.Box.Include(x=>x.Details) - .FirstOrDefaultAsync(f => f.BoxBillNo.Equals(BoxBillNo)); + return await _context.Box.Include(x => x.Details) + .FirstOrDefaultAsync(f => f.BoxBillNo.Equals(BoxBillNo)); + } + /// + /// 根据箱号查询物料信息 + /// + /// + /// + public async Task> GetDetails(string BoxBillNo) + { + return await _context.BoxDetails + .GroupJoin(_context.Box, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders }) + .SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order }) + .Where(w => w.order.BoxBillNo.Equals(BoxBillNo)) + .Select(s => new BoxDetailResponse() + { + Fid = s.detail.Fid, + BoxId = s.order.OpsBoxId, + MaterialId = s.detail.MaterialId, + MaterialName = "", + MaterialNumber = "", + Specifications = "", + SerialNumbers = s.detail.SerialNumbers, + SupplierId = s.detail.SupplierId, + Qty = s.detail.Qty + }) + .ToListAsync(); } } }