diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/KittingIssueRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/KittingIssueRequestEventHandler.cs index cad40de0e..878b02ee0 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/KittingIssueRequestEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/KittingIssueRequestEventHandler.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Text.Json; using System.Threading.Tasks; -using AutoMapper.Internal; using Castle.Components.DictionaryAdapter; using Volo.Abp; using Volo.Abp.EventBus; @@ -36,7 +35,7 @@ public class KittingIssueRequestEventHandler ILocationAppService locationAppService, IBalanceAppService balanceAppService, IProductionLineItemAppService productionLineItemAppService //, IKittingIssueRequestManager kittingIssueRequestManager - ) + ) { _kittingIssueJobAppService = kittingIssueJobAppService; _productionLineAppService = productionLineAppService; @@ -223,11 +222,11 @@ public class KittingIssueRequestEventHandler detail.PositionCode = kittingIssueRequestDetail.PositionCode; detail.RecommendType = kittingIssueRequestDetail.RecommendType; detail.Uom = balance.Uom; - detail.ItemCode= balance.ItemCode; - detail.ItemDesc2= balance.ItemDesc2; - detail.ItemDesc1= balance.ItemDesc1; - detail.ItemName= balance.ItemName; - detail.ProdLine= kittingIssueRequestDetail.ProdLine; + detail.ItemCode = balance.ItemCode; + detail.ItemDesc2 = balance.ItemDesc2; + detail.ItemDesc1 = balance.ItemDesc1; + detail.ItemName = balance.ItemName; + detail.ProdLine = kittingIssueRequestDetail.ProdLine; detail.RequestQty = balance.Qty; detail.StdPackQty = kittingIssueRequestDetail.StdPackQty; detail.Status = balance.Status; @@ -247,8 +246,8 @@ public class KittingIssueRequestEventHandler detail.RecommendFromProduceDate = balance.ProduceDate; detail.RecommendFromArriveDate = balance.ArriveDate; detail.RecommendFromQty = balance.Qty; - detail.RecommendFromContainerCode= balance.ContainerCode; - detail.RecommendFromPackingCode= balance.PackingCode; + detail.RecommendFromContainerCode = balance.ContainerCode; + detail.RecommendFromPackingCode = balance.PackingCode; detail.RecommendToPackingCode = balance.PackingCode; detail.RecommendToContainerCode = balance.ContainerCode; @@ -283,7 +282,7 @@ public class KittingIssueRequestEventHandler detail.TransferLibFromProduceDate = balance.ProduceDate; detail.TransferLibFromArriveDate = balance.ArriveDate; detail.TransferLibFromQty = balance.Qty; - detail.TransferLibFromContainerCode= balance.ContainerCode; + detail.TransferLibFromContainerCode = balance.ContainerCode; detail.TransferLibFromPackingCode = balance.PackingCode; detail.TransferLibToPackingCode = balance.PackingCode; @@ -294,7 +293,7 @@ public class KittingIssueRequestEventHandler detail.TransferLibToLot = balance.Lot; detail.TransferLibToProduceDate = balance.ProduceDate; detail.TransferLibToArriveDate = balance.ArriveDate; - detail.TransferLibToQty = balance.Qty; + detail.TransferLibToQty = balance.Qty; detail.TransferLibToPackingCode = balance.PackingCode; detail.TransferLibFromLocationArea = balance.LocationArea; @@ -334,7 +333,7 @@ public class KittingIssueRequestEventHandler List useBalanceList) { var inputJobs = new List(); - + //已用的库存的集合 useBalanceList = useBalanceList; @@ -343,7 +342,7 @@ public class KittingIssueRequestEventHandler //当前零件的集合 var inputDetails = kittingIssueRequestDetailList; //获取请求下 这个零件和这个库位一个需要多少箱 - var sumBoxQty = inputDetails.Sum(p => p.BoxQty-p.IssuedQty); + var sumBoxQty = inputDetails.Sum(p => p.BoxQty - p.IssuedQty); //获取生产线 var productionLineDto = await _productionLineAppService .GetByLocationCodeAsync(inputDetails.First().ToLocationCode).ConfigureAwait(false); @@ -521,33 +520,32 @@ public class KittingIssueRequestEventHandler { var usableLocationCode = JsonSerializer.Deserialize>(productionLineItemDto.RawLocationCodeListJson); - if (!usableLocationCode.Any()) - { - continue; - } - - //获取可用库存 - var input = new RecommendBalanceRequestInput + if (usableLocationCode.Any()) { - ItemCode = kittingIssueRequestDetail.ItemCode, - Qty = decimal.MaxValue, - Statuses = new EditableList { EnumInventoryStatus.OK }, - Locations = - JsonSerializer.Deserialize>(productionLineItemDto.RawLocationCodeListJson), - IsPackingCode = true - }; - var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false); - - //因为是按箱叫料 先把值赋值给箱数量上 - kittingIssueRequestDetail.BoxQty = kittingIssueRequestDetail.Qty; - - if (usableList.Any()) - { - //因为是原料所以按箱叫料 - kittingIssueJobEditInputs.AddRange( - await CreateKittingIssueJobWithBoxQtyTypeAsync(kittingIssueRequest, - new EditableList { kittingIssueRequestDetail }, usableList, - useBalanceList).ConfigureAwait(false)); + //获取可用库存 + var input = new RecommendBalanceRequestInput + { + ItemCode = kittingIssueRequestDetail.ItemCode, + Qty = decimal.MaxValue, + Statuses = new EditableList { EnumInventoryStatus.OK }, + Locations = + JsonSerializer.Deserialize>(productionLineItemDto.RawLocationCodeListJson), + IsPackingCode = true + }; + var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false); + + //因为是按箱叫料 先把值赋值给箱数量上 + kittingIssueRequestDetail.BoxQty = kittingIssueRequestDetail.Qty; + + if (usableList.Any()) + { + //因为是原料所以按箱叫料 + kittingIssueJobEditInputs.AddRange( + await CreateKittingIssueJobWithBoxQtyTypeAsync(kittingIssueRequest, + new EditableList { kittingIssueRequestDetail }, + usableList, + useBalanceList).ConfigureAwait(false)); + } } } @@ -556,56 +554,57 @@ public class KittingIssueRequestEventHandler { var usableLocationCode = JsonSerializer.Deserialize>(productionLineItemDto.ProductLocationCodeListJson); - if (!usableLocationCode.Any()) + if (usableLocationCode.Any()) { - continue; - } - - //获取可用库存 - var input = new RecommendBalanceRequestInput - { - ItemCode = groupbyItemCodeAndProdLine.Key.ItemCode, - Qty = kittingIssueRequestDetail.Qty, - Statuses = new EditableList { EnumInventoryStatus.OK }, - Locations = - JsonSerializer.Deserialize>(productionLineItemDto.ProductLocationCodeListJson), - IsPackingCode = false - }; - var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false); - var temp = usableList.ToList(); - - foreach (var balanceDto in usableList) //计算已经用过的库存 - { - var useBalanceDto = useBalanceList.Where(p => - p.ItemCode == balanceDto.ItemCode && p.LocationCode == balanceDto.LocationCode && - p.Lot == balanceDto.Lot && p.Status == balanceDto.Status && - p.PackingCode == balanceDto.PackingCode); - if (useBalanceDto.Any()) //如果不为NULL,就是用过了的库存 需要减去使用量 + //获取可用库存 + var input = new RecommendBalanceRequestInput + { + ItemCode = groupbyItemCodeAndProdLine.Key.ItemCode, + Qty = kittingIssueRequestDetail.Qty, + Statuses = new EditableList { EnumInventoryStatus.OK }, + Locations = + JsonSerializer.Deserialize>(productionLineItemDto + .ProductLocationCodeListJson), + IsPackingCode = false + }; + var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false); + var temp = usableList.ToList(); + + foreach (var balanceDto in usableList) //计算已经用过的库存 { - balanceDto.Qty -= useBalanceDto.Sum(p => p.Qty); - if (balanceDto.Qty <= 0) + var useBalanceDto = useBalanceList.Where(p => + p.ItemCode == balanceDto.ItemCode && p.LocationCode == balanceDto.LocationCode && + p.Lot == balanceDto.Lot && p.Status == balanceDto.Status && + p.PackingCode == balanceDto.PackingCode); + if (useBalanceDto.Any()) //如果不为NULL,就是用过了的库存 需要减去使用量 { - temp.Remove(balanceDto); + balanceDto.Qty -= useBalanceDto.Sum(p => p.Qty); + if (balanceDto.Qty <= 0) + { + temp.Remove(balanceDto); + } } } - } - usableList = temp; + usableList = temp; - kittingIssueJobEditInputs.AddRange( - await CreateKittingIssueJobWithQtyTypeAsync(kittingIssueRequest, - new List { kittingIssueRequestDetail }, temp, - useBalanceList).ConfigureAwait(false)); + kittingIssueJobEditInputs.AddRange( + await CreateKittingIssueJobWithQtyTypeAsync(kittingIssueRequest, + new List { kittingIssueRequestDetail }, temp, + useBalanceList).ConfigureAwait(false)); + } } } } - if (kittingIssueJobEditInputs.Count > 0)//有库存 可以创建任务 + if (kittingIssueJobEditInputs.Count > 0) //有库存 可以创建任务 { //新增任务 - var addKittingIssueJobDtos= await _kittingIssueJobAppService.CreateManyAsync(kittingIssueJobEditInputs).ConfigureAwait(false); + var addKittingIssueJobDtos = await _kittingIssueJobAppService.CreateManyAsync(kittingIssueJobEditInputs) + .ConfigureAwait(false); - await UpdateKittingIssueRequestDetailQtyAsync(kittingIssueRequest, addKittingIssueJobDtos).ConfigureAwait(false); + await UpdateKittingIssueRequestDetailQtyAsync(kittingIssueRequest, addKittingIssueJobDtos) + .ConfigureAwait(false); return addKittingIssueJobDtos; } @@ -614,15 +613,17 @@ public class KittingIssueRequestEventHandler } /// - /// 修改请求的 已发 已收数量 + /// 修改请求的 已发 已收数量 /// /// /// /// - private async Task UpdateKittingIssueRequestDetailQtyAsync(KittingIssueRequest kittingIssueRequest, List addKittingIssueJobDtos) + private async Task UpdateKittingIssueRequestDetailQtyAsync(KittingIssueRequest kittingIssueRequest, + List addKittingIssueJobDtos) { //原有任务 - var existKittingIssueJobDtos = await _kittingIssueJobAppService.GetByRequestNumberAsync(kittingIssueRequest.Number) + var existKittingIssueJobDtos = await _kittingIssueJobAppService + .GetByRequestNumberAsync(kittingIssueRequest.Number) .ConfigureAwait(false); //新增的任务和已有的任务总和