using Kean.Domain.Task.Events; using Kean.Domain.Task.SharedServices.Proxies; using System.Threading; using Kean.Domain.Task.Repositories; namespace Kean.Domain.Task.EventHandlers { /// /// 创建上架命令成功时,下达控制任务 /// public sealed class InfeedCheckSuccessEventHandler_Wcs : EventHandler { private readonly WcsProxy _wcsProxy; // 控制域 private readonly IWarehouseRepository _warehouseRepository; /// /// 依赖注入 /// public InfeedCheckSuccessEventHandler_Wcs( IWarehouseRepository warehouseRepository, WcsProxy wcsProxy) { _warehouseRepository = warehouseRepository; _wcsProxy = wcsProxy; } /// /// 处理程序 /// public override async System.Threading.Tasks.Task Handle(InfeedCheckSuccessEvent @event, CancellationToken cancellationToken) { switch (@event.Original.Device) { case "12201": case "12226": case "22201": case "22226": await _wcsProxy.SendOutput( @event.Id, @event.Original.Warehouse.ToString(), 1, @event.Priority ?? 0, @event.Barcode, @event.Original.Device, @event.Destination.Device, @event.Destination.Warehouse.ToString(), @event.Timestamp, @event.Operator); break; default: var endDevice = await _warehouseRepository.GetPassMoveEndDevice(@event.Original.Device); if (!string.IsNullOrEmpty(endDevice)) { await _wcsProxy.SendOutput( 0, @event.Original.Warehouse.ToString(), 4, @event.Priority ?? 0, @event.Barcode, @event.Original.Device, endDevice, int.Parse(endDevice.Substring(0, 1)) % 2 == 0 ? "2" : "1", @event.Timestamp, @event.Operator); } break; } } } }