TaskExtension.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 List<WCS_TASK> GetOutTask(this List<WCS_TASK> tasks)
  22. {
  23. var taskids = tasks.Select(v => Create<Task>(v)).OrderBy(v => v.Line).ThenBy(v => v.Col).ThenBy(v => v.Layer).Take(2).DistinctBy(v => v.SRMSTATION).Select(v => v.ID);
  24. return tasks.Where(v => taskids.Contains(v.ID)).ToList();
  25. }
  26. }
  27. public class Task : WCS_TASK
  28. {
  29. /// <summary>
  30. /// 行
  31. /// </summary>
  32. public short Line { get; set; }
  33. /// <summary>
  34. /// 列
  35. /// </summary>
  36. public short Col { get; set; }
  37. /// <summary>
  38. /// 层
  39. /// </summary>
  40. public short Layer { get; set; }
  41. public Task()
  42. {
  43. var addrFrom = ADDRFROM.Split("-");
  44. Line = addrFrom[0].ToShort();
  45. Col = addrFrom[1].ToShort();
  46. Layer = addrFrom[2].ToShort();
  47. }
  48. }
  49. }