25 changed files with 403 additions and 144 deletions
@ -0,0 +1,107 @@ |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.EventBus; |
|||
using Volo.Abp.Uow; |
|||
using Win_in.Sfs.Shared.Domain; |
|||
using Win_in.Sfs.Shared.Event; |
|||
using Win_in.Sfs.Wms.Store.Application.Contracts; |
|||
using Win_in.Sfs.Wms.Store.Domain; |
|||
|
|||
namespace Win_in.Sfs.Wms.Store.Event.DataExchanges; |
|||
|
|||
/// <summary>
|
|||
/// 备品发料记录传给TYRP(线边仓领料单)
|
|||
/// </summary>
|
|||
public class SparePartIssueNoteEventHandler |
|||
: StoreDataExchangeEventHandlerBase<SparePartIssueNote> |
|||
, ILocalEventHandler<SfsCreatedEntityEventData<SparePartIssueNote>> |
|||
, ILocalEventHandler<SfsCreatedEntityEventData<List<SparePartIssueNote>>> |
|||
{ |
|||
//线边仓领料单
|
|||
private const EnumExchangeDataType ExchangeDataType = EnumExchangeDataType.Issue; |
|||
|
|||
[UnitOfWork] |
|||
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<SparePartIssueNote> eventData) |
|||
{ |
|||
var entity = eventData.Entity; |
|||
await AddExchangeDataAsync(entity).ConfigureAwait(false); |
|||
} |
|||
|
|||
[UnitOfWork] |
|||
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<SparePartIssueNote>> eventData) |
|||
{ |
|||
var entities = eventData.Entity; |
|||
await AddExchangeDataAsync(entities).ConfigureAwait(false); |
|||
} |
|||
|
|||
protected override async Task AddExchangeDataAsync(List<SparePartIssueNote> entities) |
|||
{ |
|||
var dtos = ObjectMapper.Map<List<SparePartIssueNote>, List<IssueNoteDTO>>(entities); |
|||
foreach (var detail in dtos.SelectMany(dto => dto.Details)) |
|||
{ |
|||
await detail.TrySetLocationAsync(LocationAclService).ConfigureAwait(false); |
|||
//if(string.IsNullOrEmpty(detail.HandledFromLocationErpCode))
|
|||
//{
|
|||
// var location = await LocationAclService.GetByCodeAsync(detail.HandledFromLocationCode).ConfigureAwait(false);
|
|||
// if (location != null)
|
|||
// {
|
|||
// detail.HandledFromLocationErpCode = location.ErpLocationCode;
|
|||
// detail.HandledFromLocationGroup = location.LocationGroupCode;
|
|||
// detail.HandledFromLocationArea = location.AreaCode;
|
|||
|
|||
// if (string.IsNullOrEmpty(detail.HandledFromWarehouseCode))
|
|||
// {
|
|||
// detail.HandledFromWarehouseCode = location.WarehouseCode;
|
|||
// }
|
|||
// }
|
|||
//}
|
|||
|
|||
//if(string.IsNullOrEmpty(detail.HandledToLocationErpCode))
|
|||
//{
|
|||
// var location = await LocationAclService.GetByCodeAsync(detail.HandledToLocationCode).ConfigureAwait(false);
|
|||
// if (location != null)
|
|||
// {
|
|||
// detail.HandledToLocationErpCode = location.ErpLocationCode;
|
|||
// detail.HandledToLocationGroup = location.LocationGroupCode;
|
|||
// detail.HandledToLocationArea = location.AreaCode;
|
|||
|
|||
// if (string.IsNullOrEmpty(detail.HandledToWarehouseCode))
|
|||
// {
|
|||
// detail.HandledToWarehouseCode = location.WarehouseCode;
|
|||
// }
|
|||
// }
|
|||
//}
|
|||
|
|||
} |
|||
|
|||
var toErpDto = new List<IssueNoteDTO>(); |
|||
foreach (var item in dtos) |
|||
{ |
|||
if (item.Details != null && item.Details.Count != 0) |
|||
{ |
|||
toErpDto.Add(item); |
|||
} |
|||
} |
|||
|
|||
//2023-12-6要求同储位不传入接口 按历史规则
|
|||
var result = new List<IssueNoteDTO>(); |
|||
foreach (var sparePartIssueNoteDto in toErpDto) |
|||
{ |
|||
sparePartIssueNoteDto.Details.RemoveAll(p => p.HandledFromLocationErpCode == p.ToLocationErpCode); |
|||
if (sparePartIssueNoteDto.Details.Count > 0) |
|||
{ |
|||
result.Add(sparePartIssueNoteDto); |
|||
} |
|||
} |
|||
|
|||
if (result.Count > 0) |
|||
{ |
|||
var exchangeDataerp = |
|||
await BuildExchangeDataAsync(StoreEventConsts.WMS, StoreEventConsts.ERP, ExchangeDataType, result) |
|||
.ConfigureAwait(false); |
|||
await AddManyAsync(exchangeDataerp).ConfigureAwait(false); |
|||
} |
|||
} |
|||
|
|||
} |
Loading…
Reference in new issue