diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedIssueJobController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedIssueJobController.cs index df7f70b1e..f886d53df 100644 --- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedIssueJobController.cs +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedIssueJobController.cs @@ -68,7 +68,7 @@ public class UnplannedIssueJobController : AbpController { Filters = new List { - new(nameof(UnplannedIssueJobDTO.WorkGroupCode),jsonWlgCodes,"In"), + // new(nameof(UnplannedIssueJobDTO.WorkGroupCode),jsonWlgCodes,"In"), new(nameof(UnplannedIssueJobDTO.JobStatus),jsonStatus,"In") } } diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs index d78220798..601cde5f7 100644 --- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs @@ -67,7 +67,7 @@ public class UnplannedReceiptJobController : AbpController { Filters = new List { - new(nameof(UnplannedReceiptJobDTO.WorkGroupCode),jsonWlgCodes,"In"), + // new(nameof(UnplannedReceiptJobDTO.WorkGroupCode),jsonWlgCodes,"In"), new(nameof(UnplannedReceiptJobDTO.JobStatus),jsonStatus,"In") } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAutoMapperProfile.cs index 1d6956511..856a68af1 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAutoMapperProfile.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAutoMapperProfile.cs @@ -63,5 +63,11 @@ public partial class StoreApplicationAutoMapperProfile : Profile .Ignore(x => x.TenantId) .Ignore(x => x.Id) .Ignore(x => x.ExtraProperties); + + CreateMap(); + + + CreateMap(); + } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs index 52c82a38c..0ed3c65d4 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs @@ -54,21 +54,20 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA var entity = ObjectMapper.Map(input); foreach (var item in entity.Details) { - await SetDetailPropertiesAsync(item).ConfigureAwait(false); + await SetDetailPropertiesAsync(item, input.UnplannedIssueType).ConfigureAwait(false); } - entity.AutoCompleteJob = true; + entity.AutoCompleteJob = false; entity.AutoSubmit = true; entity.AutoAgree = true; entity.AutoHandle = true; if (entity.UnplannedIssueType == EnumUnplannedIssueType.Wip) { - entity.DirectCreateNote = false; + entity.DirectCreateNote = true; } else { - entity.DirectCreateNote = true; + entity.DirectCreateNote = false; } - entity.DirectCreateNote = true; await _unplannedIssueRequestManager.CreateAsync(entity).ConfigureAwait(false); var dto = ObjectMapper.Map(entity); @@ -85,41 +84,31 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA foreach (var unplannedIssueRequest in addList) { + if(unplannedIssueRequest.UnplannedIssueType != EnumUnplannedIssueType.Wip|| unplannedIssueRequest.UnplannedIssueType != EnumUnplannedIssueType.Raw) + { + throw new UserFriendlyException($"【{unplannedIssueRequest.UnplannedIssueType}】领料类型," + + $"不是{EnumUnplannedIssueType.Wip.GetDisplayName()}" + + $"或{EnumUnplannedIssueType.Raw.GetDisplayName()}】"); + } unplannedIssueRequest.Worker = CurrentUser.GetUserName(); unplannedIssueRequest.CreatorId = CurrentUser.Id; await SetRequestAutoPropertiesAsync(unplannedIssueRequest).ConfigureAwait(false); await SetEntityPropertiesAsync(unplannedIssueRequest).ConfigureAwait(false); - + List newDetails = new List(); foreach (var detail in unplannedIssueRequest.Details) { if (unplannedIssueRequest.UnplannedIssueType == EnumUnplannedIssueType.Raw) { var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false); - if (locationDto.Type != EnumLocationType.RAW || locationDto.Type != EnumLocationType.SEMI) + if (locationDto.Type != EnumLocationType.RAW && locationDto.Type != EnumLocationType.SEMI) { throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," + $"不是{EnumLocationType.RAW.GetDisplayName()}" + $"或{EnumLocationType.SEMI.GetDisplayName()}】"); } - - //需要复制一个这个方法 去掉区域参数 换成库位参数 - RecommendBalanceRequestInput input = new RecommendBalanceRequestInput(); - input.ItemCode = detail.ItemCode; - input.Locations = new List() { detail.LocationCode }; - input.Qty = detail.Qty; - input.Statuses = new List { EnumInventoryStatus.OK }; - var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false); - if (balanceLst.Count == 0) - { - throw new UserFriendlyException($"GetRecommendBalancesByLocationsAsync返回0条记录"); - } - if (detail.Qty > balanceLst[0].Qty) - { - throw new UserFriendlyException($"库存数量不足:GetRecommendBalancesByLocationsAsync"); - } + unplannedIssueRequest.DirectCreateNote = false; } - if (unplannedIssueRequest.UnplannedIssueType == EnumUnplannedIssueType.Wip) { var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false); @@ -127,32 +116,61 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA { throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," + $"不是{EnumLocationType.WIP.GetDisplayName()}】"); - } - - //需要复制一个这个方法 去掉区域参数 换成库位参数 - RecommendBalanceRequestInput input = new RecommendBalanceRequestInput(); - input.ItemCode = detail.ItemCode; - input.Locations = new List() { detail.LocationCode }; - input.Qty = detail.Qty; - input.Statuses=new List { EnumInventoryStatus.OK }; - var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false); - if (balanceLst.Count == 0) - { - throw new UserFriendlyException($"GetRecommendBalancesByLocationsAsync返回0条记录"); - } - var sumQty = balanceLst.Sum(itm => itm.Qty); - if (detail.Qty > sumQty) - { - throw new UserFriendlyException($"库存数量不足:GetRecommendBalancesByLocationsAsync"); - } - + } + } + //需要复制一个这个方法 去掉区域参数 换成库位参数 + RecommendBalanceRequestInput input = new RecommendBalanceRequestInput(); + input.ItemCode = detail.ItemCode; + input.Locations = new List() { detail.LocationCode }; + input.Qty = detail.Qty; + input.Statuses = new List { EnumInventoryStatus.OK }; + var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(input).ConfigureAwait(false); + if (balanceLst.Count == 0) + { + throw new UserFriendlyException($"GetRecommendBalancesByLocationsAsync返回0条记录"); + } + var sumQty = balanceLst.Sum(itm => itm.Qty); + if (detail.Qty > sumQty) + { + throw new UserFriendlyException($"库存数量不足:GetRecommendBalancesByLocationsAsync"); + } + foreach (var balance in balanceLst) + { + var newDetail = CreateNewDetail(detail, balance); + await SetDetailPropertiesAsync(newDetail, unplannedIssueRequest.UnplannedIssueType).ConfigureAwait(false); + newDetails.Add(newDetail); } - await SetDetailPropertiesAsync(detail).ConfigureAwait(false); } + unplannedIssueRequest.Details.Clear();//删除所有明细} + unplannedIssueRequest.Details.AddRange(newDetails);//按推荐添加 } return dictionary; } + /// + /// 创建明细 + /// + /// + /// + /// + protected UnplannedIssueRequestDetail CreateNewDetail(UnplannedIssueRequestDetail detail,BalanceDTO balance) + { + UnplannedIssueRequestDetail newDetail = new UnplannedIssueRequestDetail(); + newDetail.ArriveDate = detail.ArriveDate; + newDetail.CaseCode = detail.CaseCode; + newDetail.ContainerCode = detail.ContainerCode; + newDetail.Explain = detail.Explain; + newDetail.ItemCode = detail.ItemCode; + newDetail.LocationCode = detail.LocationCode; + newDetail.Number = detail.Number; + newDetail.OnceBusiCode = detail.OnceBusiCode; + newDetail.ProjCapacityCode = detail.ProjCapacityCode; + newDetail.ProduceDate = detail.ProduceDate; + newDetail.PackingCode = balance.PackingCode; + newDetail.Qty = balance.Qty; + newDetail.SetIdAndNumber(GuidGenerator, detail.MasterID, detail.Number); + return newDetail; + } protected override UnplannedIssueRequest ModifyEntityBeforeAgree(UnplannedIssueRequest obj) { @@ -170,7 +188,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA /// /// /// - private async Task SetDetailPropertiesAsync(UnplannedIssueRequestDetail detail) + private async Task SetDetailPropertiesAsync(UnplannedIssueRequestDetail detail, EnumUnplannedIssueType type) { var itemBasic = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); CheckItemBasic(itemBasic, detail.ItemCode); @@ -196,9 +214,13 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA detail.LocationArea = location.AreaCode; detail.LocationCode = location.Code; } - + string packingcode = string.Empty; + if(type!= EnumUnplannedIssueType.Wip) + { + packingcode = detail.PackingCode; + } var balance = await _balanceAppService.GetByItemLocationAndPackingAsync( - string.Empty, + packingcode, detail.ItemCode, detail.LocationCode).ConfigureAwait(false); @@ -387,7 +409,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA await CheckOnceBusiCodeAsync(model, validationRresult).ConfigureAwait(false);//次交易码 await CheckCaseCodeAsync(model, validationRresult).ConfigureAwait(false);//专案代码 await CheckProjCapacityCodeAsync(model, validationRresult).ConfigureAwait(false);//项目分类 - _ = await CheckBalanceAsync(model, validationRresult).ConfigureAwait(false); + // _ = await CheckBalanceAsync(model, validationRresult).ConfigureAwait(false); } protected async Task CheckItemBasicAsync(UnplannedIssueRequestImportInput importInput, List validationRresult) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs index f4436577b..db4db881a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs @@ -86,6 +86,12 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ foreach (var unplannedReceiptRequest in addList) { + if (unplannedReceiptRequest.UnplannedReceiptType != EnumUnplannedReceiptType.Wip || unplannedReceiptRequest.UnplannedReceiptType != EnumUnplannedReceiptType.Raw) + { + throw new UserFriendlyException($"【{unplannedReceiptRequest.UnplannedReceiptType}】退料料类型," + + $"不是{EnumUnplannedReceiptType.Wip.GetDisplayName()}" + + $"或{EnumUnplannedReceiptType.Raw.GetDisplayName()}】"); + } unplannedReceiptRequest.Worker = CurrentUser.GetUserName(); unplannedReceiptRequest.CreatorId = CurrentUser.Id; @@ -97,13 +103,13 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ if (unplannedReceiptRequest.UnplannedReceiptType == EnumUnplannedReceiptType.Raw) { var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false); - if (locationDto.Type != EnumLocationType.RAW || locationDto.Type != EnumLocationType.SEMI) + if (locationDto.Type != EnumLocationType.RAW && locationDto.Type != EnumLocationType.SEMI) { throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," + $"不是{EnumLocationType.RAW.GetDisplayName()}" + $"或{EnumLocationType.SEMI.GetDisplayName()}】"); } - + unplannedReceiptRequest.DirectCreateNote = false; //需要复制一个这个方法 去掉区域参数 换成库位参数 //RecommendBalanceRequestInput input = new RecommendBalanceRequestInput(); //input.ItemCode = detail.ItemCode; diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs index 550dcb16c..c02cff434 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJob.cs @@ -64,10 +64,12 @@ public class UnplannedIssueJob : SfsJobAggregateRootBase /// /// - public virtual async Task BuildDetail(Guid id, string handledLocationCode, string handledLocationErpCode, string handledWarehouseCode, decimal handledQty, string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate + public virtual async Task BuildDetail(Guid id,string handledLocationGroup,string handledLocationArea, string handledLocationCode, string handledLocationErpCode, string handledWarehouseCode, decimal handledQty, string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate , string handledContainerCode, string handledLot, string handledPackingCode, ExtraPropertyDictionary extraProperty) { var detail = GetDetail(id); + detail.HandledFromLocationGroup= handledLocationGroup; + detail.HandledFromLocationArea = handledLocationArea; detail.HandledFromLocationCode = handledLocationCode; detail.HandledFromLocationErpCode = handledLocationErpCode; detail.HandledFromWarehouseCode = handledWarehouseCode; diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs index 07faa17f1..1f01d454f 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedIssueJobs/UnplannedIssueJobManager.cs @@ -33,11 +33,12 @@ public class UnplannedIssueJobManager : SfsJobManagerBase /// /// - public virtual async Task BuildDetail(Guid id, string handledLocationCode, string handledLocationErpCode, string handledWarehouseCode, decimal handledQty, string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate, string handledContainerCode, string handledLot, string handledPackingCode, ExtraPropertyDictionary extraProperty) + public virtual async Task BuildDetail(Guid id,string handledLocationGroup ,string handledLocationArea, string handledLocationCode, string handledLocationErpCode, string handledWarehouseCode, decimal handledQty, string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate, string handledContainerCode, string handledLot, string handledPackingCode, ExtraPropertyDictionary extraProperty) { var detail = GetDetail(id); + detail.HandledToLocationGroup = handledLocationGroup; + detail.HandledToLocationArea = handledLocationArea; detail.HandledToLocationCode = handledLocationCode; detail.HandledToLocationErpCode = handledLocationErpCode; detail.HandledToWarehouseCode = handledWarehouseCode; diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobManager.cs index 7734d307f..5e272fffc 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobManager.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobManager.cs @@ -33,7 +33,7 @@ public class UnplannedReceiptJobManager : SfsJobManagerBase x.HandledQty) .Ignore(x => x.HandledUom) .Ignore(x => x.ReasonCode) - .IgnoreIHasRecommendAndHandledFrom(); + ; CreateMap() .ForMember(x => x.UnplannedIssueRequestNumber, y => y.MapFrom(d => d.Number)).Ignore(x => x.JobNumber) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs index acfe68f31..f31dce719 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedIssueRequestEventHandler.cs @@ -35,10 +35,10 @@ public class UnplannedIssueRequestEventHandler public async Task HandleEventAsync(SfsCreatedEntityEventData eventData) { var entity = eventData.Entity; - if (entity.AutoSubmit) - { - await _unplannedIssueRequestManager.SubmitAsync(entity).ConfigureAwait(false); - } + //if (entity.AutoSubmit) + //{ + // await _unplannedIssueRequestManager.SubmitAsync(entity).ConfigureAwait(false); + //} } /// @@ -112,7 +112,7 @@ public class UnplannedIssueRequestEventHandler createInput.Details.Add(detail); } - + createInput.WarehouseCode = createInput.Details[0].RecommendFromWarehouseCode; return createInput; } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedReceiptRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedReceiptRequestEventHandler.cs index dcec7d221..c028587dd 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedReceiptRequestEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/UnplannedReceiptRequestEventHandler.cs @@ -113,7 +113,7 @@ public class UnplannedReceiptRequestEventHandler createInput.Details.Add(detail); } - + createInput.WarehouseCode = createInput.Details[0].RecommendToWarehouseCode; return createInput; }