43 lines
1.8 KiB
C#
43 lines
1.8 KiB
C#
using JSMachine.WMS.App.Dto;
|
|||
|
|
using JSMachine.WMS.App.Dto.Enum;
|
||
|
|
using JSMachine.WMS.Business.RcsCallBack.IService.StaePattern;
|
||
|
|
using JSMachine.WMS.Business.RcsCallBack.ServiceImpl.StatePattern.PutdownCompleted;
|
||
|
|
using JSMachine.WMS.Infrastructure;
|
||
|
|
using Microsoft.Extensions.DependencyInjection;
|
||
|
|
using System;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
using System.Linq;
|
||
|
|
using System.Text;
|
||
|
|
using System.Threading.Tasks;
|
||
|
|
|
||
|
|
namespace JSMachine.WMS.Business.RcsCallBack.ServiceImpl.StatePattern
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// rcs回调处理器工厂类
|
||
|
|
/// </summary>
|
||
|
|
public class RcsCallbackHandlerFactory
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// 根据 RCS 返回状态和目标库位运输区域选择状态处理器。
|
||
|
|
/// </summary>
|
||
|
|
/// <param name="status">RCS 任务状态码。</param>
|
||
|
|
/// <param name="destWarehouse">任务目标库位。</param>
|
||
|
|
/// <returns>负责当前状态后续处理的处理器。</returns>
|
||
|
|
public IAgvTaskStateHandler CreateHandler(int status, StorageRackDto destWarehouse)
|
||
|
|
{
|
||
|
|
return status switch
|
||
|
|
{
|
||
|
|
21 => GlobalServericeProvidor.GetService<PickupCompletedStateHandler>(),
|
||
|
|
23 => destWarehouse.Transport switch
|
||
|
|
{
|
||
|
|
TransportEnum.NorthArea or TransportEnum.SouthArea or TransportEnum.MiddleOutArea or TransportEnum.ReturnStockArea
|
||
|
|
=> GlobalServericeProvidor.GetService<StockOutWharfHandler>(),
|
||
|
|
TransportEnum.NormalArea => GlobalServericeProvidor.GetService<StockAreaHandler>(),
|
||
|
|
TransportEnum.TransitArea => GlobalServericeProvidor.GetService<TransitAreaHandler>(),
|
||
|
|
TransportEnum.Elevator => GlobalServericeProvidor.GetService<ElevatorDeliveryHandler>(),
|
||
|
|
}
|
||
|
|
};
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|