TaskExtension.cs 1.5 KB

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