EquRouteHelper.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace WCS.PLC
  6. {
  7. public class EquRouteHelper
  8. {
  9. public static List<WCS_EQUIPMENTROUTE> QueryRoute(string startPos, string toPos)
  10. {
  11. var list = new List<WCS_EQUIPMENTROUTE>();
  12. var equRouteS = Current.EquRouteSet.Where(v => v.ROUTE_STARTPOS == startPos).OrderByDescending(v => v.ISEND).ToList();//查询下一个路由地址
  13. var endroute = equRouteS.Where(v => v.ROUTE_SONPOS == toPos || v.ROUTE_NEXTPOS == toPos);
  14. if (endroute.Count() > 0)
  15. {
  16. //查询到最后的目标地址
  17. foreach (var item in endroute)
  18. {
  19. if (list.Any(v => v.ROUTE_ID == item.ROUTE_ID) == false)
  20. {
  21. list.Add(item);
  22. }
  23. }
  24. }
  25. else
  26. {
  27. foreach (var equRoute in equRouteS)
  28. {
  29. //if (!string.IsNullOrWhiteSpace(outInType))
  30. //{
  31. // if (outInType == "in")
  32. // {
  33. // if (equRoute.ROUTE_INOUTTYPE == "out") continue;
  34. // }
  35. // else if (outInType == "out")
  36. // {
  37. // if (equRoute.ROUTE_INOUTTYPE == "in") continue;
  38. // }
  39. //}
  40. if (equRoute.ISEND && equRoute.ROUTE_NEXTPOS != toPos && equRoute.ROUTE_NEXTPOS != toPos && equRoute.ROUTE_NOTES != "1")
  41. {
  42. //该路由地址为终点出口,并且不是任务的终点位置,则忽略该路由轨迹
  43. continue;
  44. }
  45. var equRoutes = QueryRoute(equRoute.ROUTE_NEXTPOS, toPos);
  46. foreach (var item in equRoutes)
  47. {
  48. if (list.Any(v => v.ROUTE_ID == item.ROUTE_ID) == false)
  49. {
  50. list.Add(item);
  51. }
  52. if (list.Any(v => v.ROUTE_ID == equRoute.ROUTE_ID) == false)
  53. {
  54. list.Add(equRoute);
  55. }
  56. }
  57. }
  58. }
  59. return list;
  60. }
  61. }
  62. }