diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index e77cba8f..ae18403f 100644 Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index 78c23a86..3b9ecbe1 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; } /// @@ -99,5 +102,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/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs index bd54a38c..d3c0512e 100644 --- a/src/WMS.Web.Domain/Entitys/Box.cs +++ b/src/WMS.Web.Domain/Entitys/Box.cs @@ -31,12 +31,11 @@ namespace WMS.Web.Domain.Entitys /// /// 创建时间(对应老OPS的创建时间) /// - public DateTime CreateTime { get; set; } + public DateTime CreateTime { get; set; } = DateTime.Now; /// /// 明细 /// - [NotMapped] public List Details = new List(); } } diff --git a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs new file mode 100644 index 00000000..70bcfc01 --- /dev/null +++ b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs @@ -0,0 +1,19 @@ +using System; +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 +{ + /// + /// 老ops箱信息 + /// + 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 new file mode 100644 index 00000000..51b195e0 --- /dev/null +++ b/src/WMS.Web.Repositories/BoxRepositories.cs @@ -0,0 +1,69 @@ +using AutoMapper; +using Microsoft.EntityFrameworkCore; +using System; +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; +using WMS.Web.Repositories.Configuration; + +namespace WMS.Web.Repositories +{ + /// + /// 老ops箱信息 + /// + public class BoxRepositories : IBoxRepositories + { + private readonly IMapper _mapper; + private readonly IServiceProvider _serviceProvider; + private readonly RepositoryDbContext _context; + private readonly ISingleDataService _singleDataService; + private readonly ILoginRepositories _loginRepositories; + private readonly IBasicsRepositories _basicsRepositories; + + public BoxRepositories(RepositoryDbContext context, IMapper mapper, IServiceProvider serviceProvider, + ISingleDataService singleDataService, ILoginRepositories loginRepositories, IBasicsRepositories basicsRepositories) + { + _context = context; + _mapper = mapper; + _serviceProvider = serviceProvider; + _singleDataService = singleDataService; + _loginRepositories = loginRepositories; + _basicsRepositories = basicsRepositories; + } + public async Task Get(string 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(); + } + } +} diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs index 3fc1d8ad..598a9565 100644 --- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs +++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilderExtensions.cs @@ -33,6 +33,7 @@ namespace Microsoft.Extensions.DependencyInjection services.AddHttpContextAccessor(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); services.AddTransient();