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; } } }