TaskExtension.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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).DistinctBy(v => v.SRMSTATION).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. SRMSTATION = task.SRMSTATION;
  50. ID = task.ID;
  51. Line = addrFrom[0].ToShort();
  52. Col = addrFrom[1].ToShort();
  53. Layer = addrFrom[2].ToShort();
  54. }
  55. }
  56. }