diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs index 6a400e20..a4d9238f 100644 --- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs +++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs @@ -38,7 +38,7 @@ namespace WMS.Web.Domain.Services _inventoryInOutDetailsService = inventoryInOutDetailsService; } - + /// /// 改箱-箱库存的变更 @@ -89,7 +89,7 @@ namespace WMS.Web.Domain.Services } }); //4.开始处理 - var result= await this.ExeChangeBox(generateDtos, sourceBoxInventorys, targetBoxInventorys, isTransaction); + var result = await this.ExeChangeBox(generateDtos, sourceBoxInventorys, targetBoxInventorys, isTransaction); if (!result.IsSuccess) return result; @@ -112,9 +112,9 @@ namespace WMS.Web.Domain.Services } //5.3组装:目标箱物料收发明细;有箱库存就需要创建物料收发明细; var tagBox = targetBoxInventorys.Where(x => x.BoxId == item.DestBoxId).FirstOrDefault(); - if (tagBox != null) + if (tagBox != null) { - var inventoryInOutDet=_inventoryInOutDetailsService.GenerateDto( + var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto( item.DestBoxId, item.MaterialId, item.DestBoxOrgCode, item.DestStockCode, item.DestSubStockId, OrderType.ChangeBox, @@ -122,17 +122,17 @@ namespace WMS.Web.Domain.Services InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet); } } - + //5.提交物料收发明细:新增 if (InventoryInOutDetailsGenerateDtoList.Count != 0) { - var inout_result = await _inventoryInOutDetailsService.GenerateInOrOutDetails(InventoryInOutDetailsGenerateDtoList,isTransaction); + var inout_result = await _inventoryInOutDetailsService.GenerateInOrOutDetails(InventoryInOutDetailsGenerateDtoList, isTransaction); if (!inout_result.IsSuccess) return inout_result; } return Result.ReSuccess(); - } + } /// /// 移箱-箱库存的变更 @@ -187,13 +187,13 @@ namespace WMS.Web.Domain.Services item.OrgCode, item.StockCode, SubStockId, OrderType.MoveBox, item.BillNo, item.Qty, InOutType); - InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet); + InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet); } } } //4.开始处理 - var result= await this.ExeMoveBox(generateDtoList, boxInventorys, boxs, isTransaction); + var result = await this.ExeMoveBox(generateDtoList, boxInventorys, boxs, isTransaction); if (!result.IsSuccess) return result; @@ -206,7 +206,7 @@ namespace WMS.Web.Domain.Services } return Result.ReSuccess(); - } + } /// /// 入库回退上下架-箱库存的变更 @@ -296,12 +296,12 @@ namespace WMS.Web.Domain.Services generateDtoList.AddRange(generateDtoList_in); generateDtoList.AddRange(generateDtoList_out); //4.提交处理 - var result= await this.ExeBackBox(generateDtoList, isTransaction); + var result = await this.ExeBackBox(generateDtoList, isTransaction); if (!result.IsSuccess) return result; //5.组装物料收发明细dto - foreach (var item in dtoDatas.SelectMany(x=>x.Details).ToList()) + foreach (var item in dtoDatas.SelectMany(x => x.Details).ToList()) { var entity = dtoDatas.Where(x => x.Id == item.Fid).FirstOrDefault(); if (entity != null) @@ -310,7 +310,7 @@ namespace WMS.Web.Domain.Services item.BoxId, item.MaterialId, item.OrgCode, item.StockCode, item.SubStockId, OrderType.Back, - entity.BillNo, item.Qty, (entity.Type== BackRecordType.InstockOff?InventoryInOutType.Out:InventoryInOutType.In)); + entity.BillNo, item.Qty, (entity.Type == BackRecordType.InstockOff ? InventoryInOutType.Out : InventoryInOutType.In)); InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet); } } @@ -401,7 +401,7 @@ namespace WMS.Web.Domain.Services generateDtoList.AddRange(generateDtoList_in); generateDtoList.AddRange(generateDtoList_out); //提交处理 - var result= await this.ExeTakeBox(generateDtoList, isTransaction); + var result = await this.ExeTakeBox(generateDtoList, isTransaction); if (!result.IsSuccess) return result; @@ -423,7 +423,7 @@ namespace WMS.Web.Domain.Services return inout_result; } return Result.ReSuccess(); - } + } /// /// 入库单-箱库存的变更 @@ -511,7 +511,7 @@ namespace WMS.Web.Domain.Services generateDtoList.AddRange(generateDtoList_Metod_Box); generateDtoList.AddRange(generateDtoList_Metod_Product); //提交处理 - var result= await this.ExeInStockBox(generateDtoList, isTransaction); + var result = await this.ExeInStockBox(generateDtoList, isTransaction); if (!result.IsSuccess) return result; @@ -538,7 +538,7 @@ namespace WMS.Web.Domain.Services } return Result.ReSuccess(); - } + } /// /// 出库单-箱库存变更 @@ -552,6 +552,9 @@ namespace WMS.Web.Domain.Services if (dtoData == null) return Result.ReFailure(ResultCodes.InventoryNoSourceError); + //物料收发明细dtos + var InventoryInOutDetailsGenerateDtoList = new List(); + //2.组装 var generateDtoList = dtoData.Details.SelectMany(x => x.BoxsDetails).GroupBy(x => new { x.BoxId, x.SubStockId }) .Select(x => new BoxInventoryGenerateDto() @@ -587,7 +590,37 @@ namespace WMS.Web.Domain.Services }); //提交处理 - return await this.ExeOutStockBox(generateDtoList, isTransaction); + var result = await this.ExeOutStockBox(generateDtoList, isTransaction); + if (!result.IsSuccess) + return result; + + //5.组装物料收发明细dto + //3.1明细的IDS + var current_materialDetails_ids = dtoData.Details.SelectMany(t => t.BoxsDetails).GroupBy(t => t.DetailId).Select(t => t.Key).ToList(); + //3.2再通过找到的IDS获取中间层的明细 + var current_materialDetails = dtoData.Details.Where(t => current_materialDetails_ids.Contains(t.Id)).ToList(); + foreach (var item in dtoData.Details.SelectMany(x => x.BoxsDetails).ToList()) + { + //找到当前box对应的物料明细 + var currentDet= current_materialDetails.Where(x => x.Id == item.DetailId).FirstOrDefault(); + + var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto( + item.BoxId, currentDet.MaterialId, + dtoData.OrgCode, dtoData.StockCode, + item.SubStockId, OutStockTypeConvert(dtoData.Type), + dtoData.BillNo, item.Qty, InventoryInOutType.Out); + InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet); + + } + //5.提交物料收发明细:新增 + if (InventoryInOutDetailsGenerateDtoList.Count != 0) + { + var inout_result = await _inventoryInOutDetailsService.GenerateInOrOutDetails(InventoryInOutDetailsGenerateDtoList, isTransaction); + if (!inout_result.IsSuccess) + return inout_result; + } + + return Result.ReSuccess(); } /// @@ -598,7 +631,7 @@ namespace WMS.Web.Domain.Services /// /// /// - private async Task ExeChangeBox(List dtoDatas,List sourceBoxInventorys, List targetBoxInventorys, bool isTransaction) + private async Task ExeChangeBox(List dtoDatas, List sourceBoxInventorys, List targetBoxInventorys, bool isTransaction) { //1.判断来源数据是否存在 if (dtoDatas == null || dtoDatas.Count == 0) @@ -733,7 +766,7 @@ namespace WMS.Web.Domain.Services /// /// /// - private async Task ExeMoveBox(List dtoDatas, List boxInventorys,List boxs, bool isTransaction) + private async Task ExeMoveBox(List dtoDatas, List boxInventorys, List boxs, bool isTransaction) { //1.判断来源数据是否存在 if (dtoDatas == null || dtoDatas.Count == 0)