TaskExtension.cs 1.7 KB

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