diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs index 4a67b9616..9c2c3045b 100644 --- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs @@ -32,9 +32,10 @@ public class InjectionIssueRequestController : AbpController /// /// [HttpPost("")] - public virtual async Task CreateAsync(InjectionIssueRequestEditInput input) + public virtual async Task> CreateAsync(InjectionIssueRequestEditInput input) { - _ = await _injectionRequestAppService.CreateAsync(input).ConfigureAwait(false); + var result = await _injectionRequestAppService.CreateAsync(input).ConfigureAwait(false); + return Ok(result); } /// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs index 188bfb5f4..3bb63cb76 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Caching; +using Volo.Abp.Domain.Repositories; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain.Shared; @@ -48,7 +49,7 @@ public class ProductionLineAppService [HttpPost("get-by-location")] public virtual async Task GetByLocationCodeAsync(string locationCode) { - var entity = await _repository.FindAsync(p => p.LocationCode == locationCode).ConfigureAwait(false); + var entity = await _repository.FirstOrDefaultAsync(p => p.LocationCode == locationCode).ConfigureAwait(false); if (entity == null) { throw new UserFriendlyException($"【{locationCode}】库位不存在"); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs index 8a87550c5..b998f6bbc 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs @@ -42,6 +42,7 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase0) + { + detailInput.Uom = itemContainerDto[0].BasicUom; + detailInput.Qty = itemContainerDto[0].Qty; + detailInput.StdPackQty = itemBasicDto.StdPackQty; + } + else + { + detailInput.Uom = itemBasicDto.BasicUom; + detailInput.StdPackQty = itemBasicDto.StdPackQty; + detailInput.Qty = itemBasicDto.StdPackQty; + } + detailInput.Status = EnumStatus.Open; //因为是刚创建的 所以发料数一定是0 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs index deb859cb5..29927219a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs @@ -249,6 +249,11 @@ public class InjectionIssueRequestEventHandler var productionLineItemDto = productionLineItemDtos.FirstOrDefault(p => p.ItemCode == injectionRequestDetail.ItemCode); + if (productionLineItemDto == null) + { + throw new UserFriendlyException( + $"物品代码【{injectionRequestDetail.ItemCode}】在生产线【{productionLineDto.Code}】中没有对应的【生产线物品关系】"); + } var input = new RecommendBalanceRequestInput { ItemCode = injectionRequestDetail.ItemCode, @@ -268,20 +273,10 @@ public class InjectionIssueRequestEventHandler var detail = await BuildInjectionIssueJobDetailWithQtyTypeAsync(injectionRequestDetail, recommend, toLocationGroupCode) - .ConfigureAwait(false); - if (injectionRequest.UseOnTheWayLocation) - { - //获取在途库 - var locationDto = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT) - .ConfigureAwait(false); - - detail.OnTheWayLocationCode = locationDto.Code; - } + .ConfigureAwait(false); jobDetails.Add(detail); - injectionRequestDetail.IssuedQty += recommend.Qty; - - //await _injectionRequestManager.UpdateDetailsAsync(injectionRequest).ConfigureAwait(false); + } } @@ -298,36 +293,63 @@ public class InjectionIssueRequestEventHandler private async Task BuildInjectionIssueJobDetailWithQtyTypeAsync( InjectionIssueRequestDetail injectionRequestDetail, BalanceDTO balance, string toLocationGroupCode) { - //ProductionLineDTO prodLine = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationGroupCode).ConfigureAwait(false); - - var detail = ObjectMapper.Map(balance); + var detail = new InjectionIssueJobDetailInput(); detail.RequestLocationCode = injectionRequestDetail.ToLocationCode; + detail.RequestLocationGroup=injectionRequestDetail.ToLocationGroup; + detail.RequestLocationArea = injectionRequestDetail.ToLocationArea; + detail.RequestLocationErpCode = injectionRequestDetail.ToLocationErpCode; + detail.RequestWarehouseCode=injectionRequestDetail.ToWarehouseCode; + detail.PositionCode = injectionRequestDetail.PositionCode; detail.RecommendType = injectionRequestDetail.RecommendType; + detail.ProdLine = injectionRequestDetail.ToLocationCode; + + detail.ItemCode = injectionRequestDetail.ItemCode; + detail.ItemName=injectionRequestDetail.ItemName; + detail.ItemDesc1=injectionRequestDetail.ItemDesc1; + detail.ItemDesc2 = injectionRequestDetail.ItemDesc2; + detail.StdPackQty = injectionRequestDetail.StdPackQty; + detail.RequestQty= injectionRequestDetail.Qty; + + detail.Status = EnumInventoryStatus.OK; + detail.Uom = balance.Uom; detail.RecommendFromPackingCode = balance.PackingCode; detail.RecommendFromContainerCode = balance.ContainerCode; + detail.RecommendFromLot = balance.Lot; + + detail.RecommendFromQty = balance.Qty; + detail.RecommendFromSupplierBatch = balance.SupplierBatch; detail.RecommendFromProduceDate = balance.ProduceDate; detail.RecommendFromExpireDate = balance.ExpireDate; - detail.RecommendFromLot = balance.Lot; detail.RecommendFromProduceDate = balance.ProduceDate; detail.RecommendFromArriveDate = balance.ArriveDate; + detail.RecommendFromLocationArea = balance.LocationArea; detail.RecommendFromLocationCode = balance.LocationCode; detail.RecommendFromLocationErpCode = balance.LocationErpCode; detail.RecommendFromLocationGroup = balance.LocationGroup; detail.RecommendFromWarehouseCode = balance.WarehouseCode; - detail.RecommendFromQty = balance.Qty; - detail.Uom = balance.Uom; + + detail.RecommendToPackingCode = balance.PackingCode; + detail.RecommendToContainerCode = balance.ContainerCode; + detail.RecommendToLot = balance.Lot; + + detail.RecommendToQty = balance.Qty; + + detail.RecommendToSupplierBatch = balance.SupplierBatch; + detail.RecommendToProduceDate = balance.ProduceDate; + detail.RecommendToExpireDate = balance.ExpireDate; + detail.RecommendToProduceDate = balance.ProduceDate; + detail.RecommendToArriveDate = balance.ArriveDate; detail.RecommendToLocationCode = injectionRequestDetail.ToLocationCode; detail.RecommendToLocationErpCode = injectionRequestDetail.ToLocationErpCode; detail.RecommendToLocationArea = injectionRequestDetail.ToLocationArea; detail.RecommendToWarehouseCode = injectionRequestDetail.ToWarehouseCode; + detail.RecommendToLocationGroup = injectionRequestDetail.ToLocationGroup; - //detail.ProdLine = prodLine == null ? toLocationGroupCode : prodLine.Code; - detail.ProdLine = toLocationGroupCode; await Task.CompletedTask.ConfigureAwait(false); return detail; }