diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs index 54ae16af..71f6b454 100644 --- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs +++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs @@ -904,16 +904,38 @@ namespace WMS.Web.Domain.Services //上架 if (dto.InventoryInOutType == (int)InventoryInOutType.In) { - //3.1上架的时候:箱一定是不存在于箱库存当中的,有则返回提示“已有箱库存,不需要再扫上架” - var ishave = boxInventorys.Where(x => x.BoxId == dto.BoxId).Any(); - if (ishave) - return Result.ReFailure(ResultCodes.BoxInventoryHaveInventoryError); + //3.1上架的时候:箱库存可能存在,也可能不存在的两种情况 + var boxInventory = boxInventorys.Where(x => x.BoxId == dto.BoxId).FirstOrDefault(); - //3.2组装要新增的箱库存信息:箱和明细和序列号 - var addEntity = _mapper.Map(dto); - addEntity.Details = _mapper.Map>(dto.Details); - - add_entitys.Add(addEntity); + if (boxInventory == null) + { + //3.2组装要新增的箱库存信息:箱和明细和序列号 + var addEntity = _mapper.Map(dto); + addEntity.Details = _mapper.Map>(dto.Details); + add_entitys.Add(addEntity); + } + else + { + var update_entity = boxInventory; + update_entity.Details = boxInventory.Details; + //3.3遍历dto明细 + foreach (var dtoItem in dto.Details) + { + //找到原来的箱库存对应要改变的物料:这个一定是存在的,不存在就有问题 + var updateDetail = update_entity.Details.Where(x => x.MaterialId == dtoItem.MaterialId).FirstOrDefault(); + if (updateDetail == null) + { + var det =_mapper.Map(dtoItem); + update_entity.Details.Add(det); + } + else + { + updateDetail.Qty = updateDetail.Qty + dtoItem.Qty; + updateDetail.SerialNumbers.AddRange(dtoItem.SerialNumbers); + } + } + update_entitys.Add(update_entity); + } //4.1即时库存:组装入库 foreach (var item in dto.Details)