Files
ww-jst/wmsjst/JSMachine.WMS.Business/RcsCallBack/ServiceImpl/StatePattern/RcsCallbackHandlerFactory.cs
T
2026-09-02 16:31:50 +08:00

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>(),
}
};
}
}
}