using System; using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Entities.Events.Distributed; using Volo.Abp.EventBus.Distributed; using Volo.Abp.ObjectMapping; using Volo.Abp.Timing; using Volo.Abp.Uow; using Volo.Abp.Users; using Win_in.Sfs.Shared.Event; using Win_in.Sfs.Wms.Inventory.Domain; namespace Win_in.Sfs.Wms.Inventory { /// /// 采购收货记录触发的库存相关订阅事件 /// public class PurchaseReceiptCreatedNoteEventHandler : //IDistributedEventHandler>, ITransientDependency { private readonly IObjectMapper _objectMapper; private readonly IInventoryBalanceManager _inventoryBalanceManager; private readonly IInventoryTransactionManager _inventoryTransactionManager; public PurchaseReceiptCreatedNoteEventHandler( IObjectMapper objectMapper, IInventoryBalanceManager inventoryBalanceManager, IInventoryTransactionManager inventoryTransactionManager ) { _objectMapper = objectMapper; _inventoryBalanceManager = inventoryBalanceManager; _inventoryTransactionManager = inventoryTransactionManager; } #region ------ 屏蔽此处订阅事件,调整在检验记录中入库 ------ /// /// 采购收货记录创建时,入库(收货记录创建的时候,商品状态均为待检)(采购收货记录的状态来源为库位的默认库存状态) /// /// /// [UnitOfWork] public virtual async Task HandleEventAsync(EntityCreatedEto eventData) { //判断 Check.NotNull(eventData, nameof(eventData)); //订阅:收货记录创建时,入库 var entity = eventData.Entity; //采购收货记录详细信息 var details = eventData.Entity.Details; try { //变更库存余额 var inventoryWithLocations = _objectMapper.Map, List>(details); var balance = await _inventoryBalanceManager.InboundAsync(inventoryWithLocations); ////添加库存事务 //var inventoryTransactions = _objectMapper.Map, List>(details); //await _inventoryTransactionManager.AddFromPurchaseReceiptNoteAsync(eventData.Entity); } catch (Exception ex) { throw new UserFriendlyException($"收货记录创建时,库存余额和库存事务更新失败!{Environment.NewLine}{ex.Message}"); } } #endregion } }