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.
72 lines
2.5 KiB
72 lines
2.5 KiB
using Kean.Domain.Task.Events;
|
|
using Kean.Domain.Task.SharedServices.Proxies;
|
|
using System.Threading;
|
|
using Kean.Domain.Task.Repositories;
|
|
|
|
namespace Kean.Domain.Task.EventHandlers
|
|
{
|
|
/// <summary>
|
|
/// 创建上架命令成功时,下达控制任务
|
|
/// </summary>
|
|
public sealed class InfeedCheckSuccessEventHandler_Wcs : EventHandler<InfeedCheckSuccessEvent>
|
|
{
|
|
private readonly WcsProxy _wcsProxy; // 控制域
|
|
private readonly IWarehouseRepository _warehouseRepository;
|
|
|
|
/// <summary>
|
|
/// 依赖注入
|
|
/// </summary>
|
|
public InfeedCheckSuccessEventHandler_Wcs(
|
|
IWarehouseRepository warehouseRepository,
|
|
WcsProxy wcsProxy)
|
|
{
|
|
_warehouseRepository = warehouseRepository;
|
|
_wcsProxy = wcsProxy;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 处理程序
|
|
/// </summary>
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|