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
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;
|
|
}
|
|
}
|
|
|