WorkStrategyFactory.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using wms.dto.response.hj;
  5. using wms.service.IService;
  6. namespace wms.service.Service
  7. {
  8. public static class WorkStrategyFactory
  9. {
  10. /// <summary>
  11. /// 先进先出
  12. /// </summary>
  13. /// <param name="days"></param>
  14. /// <param name="isContainer"></param>
  15. /// <returns></returns>
  16. private static IWorkStrategyService CreateFIFOStrategyService(int days, bool isContainer)
  17. {
  18. return new FIFOStrategyService(days, isContainer);
  19. }
  20. /// <summary>
  21. /// 先进后出
  22. /// </summary>
  23. /// <param name="days"></param>
  24. /// <param name="isContainer"></param>
  25. /// <returns></returns>
  26. private static IWorkStrategyService CreateFILOStrategyService(int days, bool isContainer)
  27. {
  28. return new FILOStrategyService(days, isContainer);
  29. }
  30. /// <summary>
  31. /// 同种物料摆放一起
  32. /// </summary>
  33. /// <param name="days"></param>
  34. /// <param name="isContainer"></param>
  35. /// <returns></returns>
  36. private static IWorkStrategyService CreateStockInSameMaterialStrategyService(string materialCode, bool isContainer)
  37. {
  38. return new StockInSameMaterialStrategyService(materialCode, isContainer);
  39. }
  40. /// <summary>
  41. /// 列递增层递增
  42. /// </summary>
  43. /// <param name="days"></param>
  44. /// <param name="isContainer"></param>
  45. /// <returns></returns>
  46. private static IWorkStrategyService CreateColumnToLayerIncreaseService()
  47. {
  48. return new ColumnToLayerIncreaseService();
  49. }
  50. /// <summary>
  51. /// 混盘优先
  52. /// </summary>
  53. /// <param name="days"></param>
  54. /// <param name="isContainer"></param>
  55. /// <returns></returns>
  56. private static IWorkStrategyService CreateMixFirstStrategyService(bool isContainer)
  57. {
  58. return new MixFOStrategyService(isContainer);
  59. }
  60. public static IWorkStrategyService CreateStrategyService(BaseStrategyDto baseStrategyDto, bool isContainer)
  61. {
  62. if (baseStrategyDto.Code == "FIFO")
  63. {
  64. return CreateFIFOStrategyService(baseStrategyDto.SameEffectDays, isContainer);
  65. }
  66. else if (baseStrategyDto.Code == "FILO")
  67. {
  68. return CreateFILOStrategyService(baseStrategyDto.SameEffectDays, isContainer);
  69. }
  70. else if (baseStrategyDto.Code == "StockInSameMaterialStrategy")
  71. {
  72. return CreateStockInSameMaterialStrategyService(baseStrategyDto.MaterialCode, isContainer);
  73. }
  74. else if (baseStrategyDto.Code == "ColumnToLayerIncrease")
  75. {
  76. return CreateColumnToLayerIncreaseService();
  77. }
  78. else if (baseStrategyDto.Code == "MixFirst")
  79. {
  80. return CreateMixFirstStrategyService(isContainer);
  81. }
  82. return null;
  83. }
  84. }
  85. }