diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index 4488185a..def8569c 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -118,17 +118,17 @@ namespace WMS.Web.Api.Controllers /// 必填 /// [HttpGet] - [Route("GetBoxDetails")] - public async Task> GetBoxDetails([FromQuery] string billNo) + [Route("GetBox")] + public async Task> GetBox([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()); + return Result.ReFailure(ResultCodes.Token_Invalid_Error); + if (string.IsNullOrEmpty(billNo)) + return Result.ReSuccess(null); - var r = await _boxRepositories.GetDetails(billNo); - return ResultList.ReSuccess(r); + var r = await _boxRepositories.GetBox(billNo); + return Result.ReSuccess(r); } } } diff --git a/src/WMS.Web.Core/Dto/BoxDetailResponse.cs b/src/WMS.Web.Core/Dto/BoxDetailResponse.cs index 0e50d697..ea6103f0 100644 --- a/src/WMS.Web.Core/Dto/BoxDetailResponse.cs +++ b/src/WMS.Web.Core/Dto/BoxDetailResponse.cs @@ -9,14 +9,6 @@ namespace WMS.Web.Core.Dto /// public class BoxDetailResponse { - /// - /// 单据头ID - /// - public int Fid { get; set; } - /// - /// 箱Id - /// - public int BoxId { get; set; } /// /// 物料ID /// @@ -44,6 +36,6 @@ namespace WMS.Web.Core.Dto /// /// 序列号集 /// - public string SerialNumbers { get; set; } + public List SerialNumbers { get; set; } = new List(); } } diff --git a/src/WMS.Web.Core/Dto/BoxResponse.cs b/src/WMS.Web.Core/Dto/BoxResponse.cs new file mode 100644 index 00000000..2a43290b --- /dev/null +++ b/src/WMS.Web.Core/Dto/BoxResponse.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto +{ + /// + /// 箱信息(头部) + /// + public class BoxResponse + { + /// + /// 单据头ID + /// + public int Id { get; set; } + /// + /// 箱Id + /// + public int BoxId { get; set; } + /// + /// 明细信息 + /// + public List Details = new List(); + } +} diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs index 3aa186f7..e443118b 100644 --- a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs +++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs @@ -16,11 +16,6 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord [Required(ErrorMessage = "物料不能为空")] public int MaterialId { get; set; } /// - /// 仓库Id - /// - [Required(ErrorMessage = "仓库不能为空")] - public int StockId { get; set; } - /// /// 原箱子ID /// [Required(ErrorMessage = "原箱子不能为空")] @@ -31,14 +26,10 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord [Required(ErrorMessage = "目标箱子不能为空")] public int DestBoxId { get; set; } /// - /// 原仓位ID - /// - [Required(ErrorMessage = "原仓位不能为空")] - public int SrcSubStockId { get; set; } - /// - /// 目标仓位ID - /// - [Required(ErrorMessage = "目标仓位不能为空")] - public int DestSubStockId { get; set; } + /// 数量 + /// + [Required(ErrorMessage = "数量不能为空")] + public decimal Qty { get; set; } + } } diff --git a/src/WMS.Web.Domain/Entitys/BoxDetails.cs b/src/WMS.Web.Domain/Entitys/BoxDetails.cs index fa75df3f..1b066b16 100644 --- a/src/WMS.Web.Domain/Entitys/BoxDetails.cs +++ b/src/WMS.Web.Domain/Entitys/BoxDetails.cs @@ -37,6 +37,6 @@ namespace WMS.Web.Domain.Entitys /// /// 序列号集 /// - public string SerialNumbers { get; set; } + public List SerialNumbers { get; set; } = new List(); } } diff --git a/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs b/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs index c7ce8ee6..6382327e 100644 --- a/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs +++ b/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs @@ -33,13 +33,18 @@ namespace WMS.Web.Domain.Entitys /// 序列号 /// [Column("SerialNumbers")] - public string SerialNumbers { get; set; } + public List SerialNumbers { get; set; } = new List(); /// /// 原箱子ID /// [Column("SrcBoxId")] public int SrcBoxId { get; set; } /// + /// 数量 + /// + [Column("Qty")] + public decimal Qty { get; set; } + /// /// 目标箱子ID /// [Column("DestBoxId")] diff --git a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs index 70bcfc01..0fa4ce3a 100644 --- a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs @@ -13,7 +13,7 @@ namespace WMS.Web.Domain.Infrastructure public interface IBoxRepositories { Task Get(string BoxBillNo); - //根据箱号查询物料信息 - Task> GetDetails(string BoxBillNo); + //根据箱号查询明细信息 + Task GetBox(string BoxBillNo); } } diff --git a/src/WMS.Web.Repositories/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs index 51b195e0..54e66981 100644 --- a/src/WMS.Web.Repositories/BoxRepositories.cs +++ b/src/WMS.Web.Repositories/BoxRepositories.cs @@ -45,25 +45,31 @@ namespace WMS.Web.Repositories /// /// /// - public async Task> GetDetails(string BoxBillNo) + public async Task GetBox(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(); + var entity = await _context.Box.FirstOrDefaultAsync(f => f.BoxBillNo.Equals(BoxBillNo)); + if (entity == null) return null; + BoxResponse result = new BoxResponse() + { + Id = entity.Id, + BoxId = entity.OpsBoxId + }; + result.Details = 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() + { + MaterialId = s.detail.MaterialId, + MaterialName = "", + MaterialNumber = "", + Specifications = "", + SerialNumbers = s.detail.SerialNumbers, + SupplierId = s.detail.SupplierId, + Qty = s.detail.Qty + }) + .ToListAsync(); + return result; } } } diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs index 80f4c4d1..23bdb3fe 100644 --- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs +++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs @@ -1,9 +1,11 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Debug; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Text; +using System.Text.Json; using WMS.Web.Domain.Entitys; using WMS.Web.Repositories.Configuration.Log; @@ -35,6 +37,10 @@ namespace WMS.Web.Repositories.Configuration { ent.ToTable("t_wms_changebox_record"); ent.HasKey(x => x.Id); + + ent.Property(f => f.SerialNumbers).HasConversion( + v => JsonConvert.SerializeObject(v), + v => JsonConvert.DeserializeObject>(v)); }); //移箱 builder.Entity(ent => @@ -197,6 +203,10 @@ namespace WMS.Web.Repositories.Configuration { ent.ToTable("t_ops_box_details"); ent.HasKey(x => x.Id); + + ent.Property(f => f.SerialNumbers).HasConversion( + v => JsonConvert.SerializeObject(v), + v => JsonConvert.DeserializeObject>(v)); }); #endregion