You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

96 lines
3.5 KiB

using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Job.Domain;
namespace Win_in.Sfs.Wms.Job.Event.Inventories;
public class IssueJobEventHandler :
JobExpectInOutEventHandlerBase
, ILocalEventHandler<SfsCreatedEntityEventData<IssueJob>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<IssueJob>>>
, ILocalEventHandler<SfsCompletedEntityEventData<IssueJob>>
, ILocalEventHandler<SfsCancelledEntityEventData<IssueJob>>
{
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<IssueJob> eventData)
{
var entity = eventData.Entity;
await AddExpectInsAsync(new List<IssueJob> { entity }).ConfigureAwait(false);
await AddExpectOutsAsync(new List<IssueJob> { entity }).ConfigureAwait(false);
}
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<IssueJob>> eventData)
{
var entities = eventData.Entity;
await AddExpectInsAsync(entities).ConfigureAwait(false);
await AddExpectOutsAsync(entities).ConfigureAwait(false);
}
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCompletedEntityEventData<IssueJob> eventData)
{
var entity = eventData.Entity;
await ExpectInAppService.RemoveAsync(entity.Number).ConfigureAwait(false);
await ExpectOutAppService.RemoveAsync(entity.Number).ConfigureAwait(false);
}
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCancelledEntityEventData<IssueJob> eventData)
{
var entity = eventData.Entity;
await ExpectInAppService.RemoveAsync(entity.Number).ConfigureAwait(false);
await ExpectOutAppService.RemoveAsync(entity.Number).ConfigureAwait(false);
}
private async Task AddExpectOutsAsync(List<IssueJob> entities)
{
var expectOuts = new List<ExpectOutEditInput>();
foreach (var entity in entities)
{
var entityExpectOuts = BuildExpectOutInventoryAsync(entity);
expectOuts.AddRange(entityExpectOuts);
}
await ExpectOutAppService.AddManyAsync(expectOuts).ConfigureAwait(false);
}
private async Task AddExpectInsAsync(List<IssueJob> entities)
{
var expectIns = new List<ExpectInEditInput>();
foreach (var entity in entities)
{
var entityExpectIns = BuildExpectInInventoryAsync(entity);
expectIns.AddRange(entityExpectIns);
}
await ExpectInAppService.AddManyAsync(expectIns).ConfigureAwait(false);
}
private List<ExpectInEditInput> BuildExpectInInventoryAsync(IssueJob issueJob)
{
var inputs = ObjectMapper.Map<List<IssueJobDetail>, List<ExpectInEditInput>>(issueJob.Details);
foreach (var input in inputs)
{
input.WarehouseCode = issueJob.WarehouseCode;
input.Worker = issueJob.Worker;
input.JobNumber = issueJob.Number;
}
return inputs;
}
private List<ExpectOutEditInput> BuildExpectOutInventoryAsync(IssueJob issueJob)
{
var inputs = ObjectMapper.Map<List<IssueJobDetail>, List<ExpectOutEditInput>>(issueJob.Details);
foreach (var input in inputs)
{
input.WarehouseCode = issueJob.WarehouseCode;
input.Worker = issueJob.Worker;
input.JobNumber = issueJob.Number;
}
return inputs;
}
}