using System;
using System.Collections.Generic;
using System.Text;
using wms.dto.response.hj;
using wms.service.IService;
namespace wms.service.Service
{
public static class WorkStrategyFactory
{
///
/// 先进先出
///
///
///
///
private static IWorkStrategyService CreateFIFOStrategyService(int days, bool isContainer)
{
return new FIFOStrategyService(days, isContainer);
}
///
/// 先进后出
///
///
///
///
private static IWorkStrategyService CreateFILOStrategyService(int days, bool isContainer)
{
return new FILOStrategyService(days, isContainer);
}
///
/// 同种物料摆放一起
///
///
///
///
private static IWorkStrategyService CreateStockInSameMaterialStrategyService(string materialCode, bool isContainer)
{
return new StockInSameMaterialStrategyService(materialCode, isContainer);
}
///
/// 列递增层递增
///
///
///
///
private static IWorkStrategyService CreateColumnToLayerIncreaseService()
{
return new ColumnToLayerIncreaseService();
}
///
/// 混盘优先
///
///
///
///
private static IWorkStrategyService CreateMixFirstStrategyService(bool isContainer)
{
return new MixFOStrategyService(isContainer);
}
public static IWorkStrategyService CreateStrategyService(BaseStrategyDto baseStrategyDto, bool isContainer)
{
if (baseStrategyDto.Code == "FIFO")
{
return CreateFIFOStrategyService(baseStrategyDto.SameEffectDays, isContainer);
}
else if (baseStrategyDto.Code == "FILO")
{
return CreateFILOStrategyService(baseStrategyDto.SameEffectDays, isContainer);
}
else if (baseStrategyDto.Code == "StockInSameMaterialStrategy")
{
return CreateStockInSameMaterialStrategyService(baseStrategyDto.MaterialCode, isContainer);
}
else if (baseStrategyDto.Code == "ColumnToLayerIncrease")
{
return CreateColumnToLayerIncreaseService();
}
else if (baseStrategyDto.Code == "MixFirst")
{
return CreateMixFirstStrategyService(isContainer);
}
return null;
}
}
}