TaskExtension.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using WCS.Entity;
  5. namespace WCS.Service.Extensions
  6. {
  7. /// <summary>
  8. /// 任务扩展
  9. /// </summary>
  10. public static class TaskExtension
  11. {
  12. public static T Create<T>(WCS_TASK source)
  13. {
  14. return (T)Activator.CreateInstance(typeof(T), source);
  15. }
  16. /// <summary>
  17. /// 获取可用的出库任务
  18. /// </summary>
  19. /// <param name="tasks"></param>
  20. /// <returns></returns>
  21. public static Task[] GetOutTask(this List<WCS_TASK> tasks)
  22. {
  23. return tasks.Select(v => Create<Task>(v))
  24. .OrderBy(v => v.Line)
  25. .ThenBy(v => v.Layer)
  26. .ThenBy(v => v.Col)
  27. .Take(2)
  28. .DistinctBy(v => v.Col).ToArray();
  29. }
  30. }
  31. public class Task : WCS_TASK
  32. {
  33. /// <summary>
  34. /// 行
  35. /// </summary>
  36. public short Line { get; set; }
  37. /// <summary>
  38. /// 列
  39. /// </summary>
  40. public short Col { get; set; }
  41. /// <summary>
  42. /// 层
  43. /// </summary>
  44. public short Layer { get; set; }
  45. public Task(WCS_TASK task)
  46. {
  47. var addrFrom = task.ADDRFROM.Split("-");
  48. ADDRTO = task.ADDRTO;
  49. ID = task.ID;
  50. Line = addrFrom[0].ToShort();
  51. Col = addrFrom[1].ToShort();
  52. Layer = addrFrom[2].ToShort();
  53. }
  54. }
  55. }