diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index ddff6762..346fa8f7 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -2149,7 +2149,7 @@ - + 改箱-箱库存的变更 @@ -2157,9 +2157,9 @@ - + - 改箱-箱库存的变更 + 移箱-箱库存的变更 @@ -3246,6 +3246,14 @@ + + + 移箱-箱库存的变更 + + + + + 入库回退上下架-箱库存的变更 diff --git a/src/WMS.Web.Domain/IService/IBoxInventoryService.cs b/src/WMS.Web.Domain/IService/IBoxInventoryService.cs index 0e1f64c1..e19532c2 100644 --- a/src/WMS.Web.Domain/IService/IBoxInventoryService.cs +++ b/src/WMS.Web.Domain/IService/IBoxInventoryService.cs @@ -29,6 +29,14 @@ namespace WMS.Web.Domain.IService /// Task GenerateChangeBox(List dtoDatas, bool isTransaction); + /// + /// 移箱-箱库存的变更 + /// + /// + /// + /// + Task GenerateMoveBox(List dtoDatas, bool isTransaction); + /// /// 移箱-箱库存的变更 /// diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs index a42e7c9e..4f805c60 100644 --- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs +++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs @@ -137,7 +137,19 @@ namespace WMS.Web.Domain.Services newTagChangeDetail.SerialNumbers = item.SerialNumbers; tag_update_entity.Details.Add(newTagChangeDetail); } + + //2.2.2组装即时库存dto + var inventoryDet = new InventoryDetailsGenerateDto(); + inventoryDet.MaterialId = item.MaterialId; + inventoryDet.OrgCode = tag_update_entity.OrgCode; + inventoryDet.StockCode = tag_update_entity.StockCode; + inventoryDet.SubStockId = tag_update_entity.SubStockId; + inventoryDet.Qty = item.Qty; + inventoryDet.InventoryInOutType = (int)InventoryInOutType.In; + //2.2.2即时库存:修改箱库存的集合 + InventoryDetailsGenerateDto.Add(inventoryDet); } + //2.4箱库存:要修改的集合 update_entitys.Add(tag_update_entity); } @@ -156,6 +168,13 @@ namespace WMS.Web.Domain.Services isSuccess = await _boxInventoryRepositories.UpdateRange(update_entitys, isTransaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); } + //5.即时库存:变更 + if (InventoryDetailsGenerateDto.Count != 0) + { + var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto, isTransaction); + if (!InventoryDetailsGenerate_result.IsSuccess) + return InventoryDetailsGenerate_result; + } return Result.ReSuccess(); } @@ -172,10 +191,6 @@ namespace WMS.Web.Domain.Services if (dtoDatas == null || dtoDatas.Count == 0) return Result.ReFailure(ResultCodes.InventoryNoSourceError); - var update_entitys = new List(); - var add_entitys = new List(); - var InventoryDetailsGenerateDto = new List(); - //2.原来箱库存集合 var boxIds = dtoDatas.Where(x => x.SrcBoxId != 0).GroupBy(x => x.SrcBoxId).Select(x => x.Key).ToList(); var sourceBoxInventorys = await _boxInventoryRepositories.GetList(boxIds); @@ -230,6 +245,7 @@ namespace WMS.Web.Domain.Services var delete_entitys = new List(); var add_entitys = new List(); + var InventoryDetailsGenerateDto = new List(); //2.获取“箱库存集合”和“箱基本信息集合” var boxIds = dtoDatas.GroupBy(x => x.BoxId).Select(x => x.Key).ToList(); @@ -265,8 +281,25 @@ namespace WMS.Web.Domain.Services if (box_serialNub != null) item.SerialNumbers.Add(box_serialNub.SerialNumber); } + //3.4箱库存:要新增的集合 add_entitys.Add(addEntity); + //4.1即时库存:组装入库 + foreach (var item in box.Details) + { + //3.2.2组装即时库存dto + var inventoryDet = new InventoryDetailsGenerateDto(); + inventoryDet.MaterialId = item.MaterialId; + inventoryDet.OrgCode = dto.OrgCode; + inventoryDet.StockCode = dto.StockCode; + inventoryDet.SubStockId = dto.SubStockId; + inventoryDet.Qty = item.Qty; + inventoryDet.InventoryInOutType = (int)InventoryInOutType.In; + //3.2.2即时库存:修改箱库存的集合 + InventoryDetailsGenerateDto.Add(inventoryDet); + } + + }//下架 else { @@ -278,6 +311,21 @@ namespace WMS.Web.Domain.Services //3.2整箱移货下架-直接删除当前箱子所在的库存 var box_inventory = boxInventorys.Where(x => x.BoxId == dto.BoxId).FirstOrDefault(); delete_entitys.Add(box_inventory); + + //4.1即时库存:组装出库 + foreach (var item in box_inventory.Details) + { + //3.2.2组装即时库存dto + var inventoryDet = new InventoryDetailsGenerateDto(); + inventoryDet.MaterialId = item.MaterialId; + inventoryDet.OrgCode = dto.OrgCode; + inventoryDet.StockCode = dto.StockCode; + inventoryDet.SubStockId = dto.SubStockId; + inventoryDet.Qty = item.Qty; + inventoryDet.InventoryInOutType = (int)InventoryInOutType.Out; + //3.2.2即时库存:修改箱库存的集合 + InventoryDetailsGenerateDto.Add(inventoryDet); + } } } @@ -294,9 +342,52 @@ namespace WMS.Web.Domain.Services isSuccess = await _boxInventoryRepositories.DeleteRange(delete_ids, isTransaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); } + //5.即时库存:处理 + if (InventoryDetailsGenerateDto.Count != 0) + { + var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto, isTransaction); + if (!InventoryDetailsGenerate_result.IsSuccess) + return InventoryDetailsGenerate_result; + } return Result.ReSuccess(); } + /// + /// 移箱-箱库存的变更 + /// + /// + /// + /// + public async Task GenerateMoveBox(List dtoDatas, bool isTransaction) + { + //1.判断来源数据是否存在 + if (dtoDatas == null || dtoDatas.Count == 0) + return Result.ReFailure(ResultCodes.InventoryNoSourceError); + + //2.箱库存集合 + var boxIds = dtoDatas.Where(x => x.BoxId != 0 && x.Type== MoveBoxType.Down).GroupBy(x => x.BoxId).Select(x => x.Key).ToList(); + var boxInventorys = await _boxInventoryRepositories.GetList(boxIds); + + //2.1箱基本信息 + var boxs= await _boxRepositories.GetEntityList(boxIds); + + //2.2组合要生成的dto + var generateDtoList = new List(); + foreach (var item in dtoDatas) + { + var generateDto = new BoxInventoryMoveGenerateDto(); + generateDto.BoxId = item.BoxId; + generateDto.OrgCode = item.OrgCode; + generateDto.StockCode = item.StockCode; + generateDto.SubStockId = item.Type == MoveBoxType.Up ? item.DestSubStockId : item.SrcSubStockId; + generateDto.InventoryInOutType = item.Type== MoveBoxType.Down?(int)InventoryInOutType.Out: (int)InventoryInOutType.In; + generateDtoList.Add(generateDto); + + } + //4.开始处理 + return await this.GenerateMoveBox(generateDtoList, isTransaction); + } + /// /// 入库回退上下架-箱库存的变更 ///