diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 084d92b1..eaf189f0 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -435,11 +435,26 @@ 目标箱子ID + + + 目标箱的仓库(可为空:当目标箱不需要上架时候) + + 仓位 + + + 原箱组织编码 + + + + + 目标箱组织编码 + + 明细 @@ -1215,6 +1230,11 @@ 单据ID(等同-入库任务单ID) + + + 仓库编码 + + 箱号集合 diff --git a/src/WMS.Web.Core/Dto/InStockTask/ContrastMaterialsRequest.cs b/src/WMS.Web.Core/Dto/InStockTask/ContrastMaterialsRequest.cs index 5f44f125..54a5ddbf 100644 --- a/src/WMS.Web.Core/Dto/InStockTask/ContrastMaterialsRequest.cs +++ b/src/WMS.Web.Core/Dto/InStockTask/ContrastMaterialsRequest.cs @@ -17,6 +17,12 @@ namespace WMS.Web.Core.Dto.InStockTask [Required(ErrorMessage = "单据不能为空")] public int TaskId { get; set; } + /// + /// 仓库编码 + /// + [Required(ErrorMessage = "仓库不能为空")] + public string StockCode { get; set; } + /// /// 箱号集合 /// diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 6c6d3c20..b4528007 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -434,10 +434,10 @@ namespace WMS.Web.Domain.Services var task = await _inStockTaskRepositories.Get(dto.TaskId); if (task == null) return Result.ReFailure(ResultCodes.OrderNoData); - ////2.找到箱对应的物料信息--弃用(这个是单个箱) - //var box = await _boxRepositories.GetByNo(dto.BoxBillNo); - //if (box == null) - // return Result.ReFailure(ResultCodes.BoxNoData); + + + //1.1筛选出对应仓库的明细 + var task_details = task.Details.Where(x => x.StockCode == dto.StockCode).ToList(); //2.找到箱对应的物料信息:多个箱 var boxs = await _boxRepositories.GetEntityListByNos(dto.BoxBillNos); @@ -448,7 +448,7 @@ namespace WMS.Web.Domain.Services var boxDetails = boxs.SelectMany(x => x.Details).GroupBy(x => x.MaterialId).Select(x => new { MaterialId = x.Key, Qty = x.Sum(t => t.Qty) }).ToList(); //3.比对:false为比对失败; - bool isRight = boxDetails.All(x => task.Details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty >= x.Qty)) && boxDetails.Count <= task.Details.Count; + bool isRight = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty >= x.Qty)) && boxDetails.Count <= task_details.Count; if (!isRight) return Result.ReFailure(ResultCodes.ContrastError);