EquRouteHelper.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. /// <summary>
  10. /// 筛选路由信息
  11. /// </summary>
  12. /// <param name="startPos"></param>
  13. /// <param name="toPos"></param>
  14. /// <returns></returns>
  15. public static List<WCS_EQUIPMENTROUTE> QueryRoute(string startPos, string toPos)
  16. {
  17. var list = new List<WCS_EQUIPMENTROUTE>();
  18. var equRouteS = Current.EquRouteSet.Where(v => v.ROUTE_STARTPOS == startPos).OrderByDescending(v => v.ISEND).ToList();//查询下一个路由地址
  19. var endroute = equRouteS.Where(v => v.ROUTE_SONPOS == toPos || v.ROUTE_NEXTPOS == toPos);
  20. if (endroute.Count() > 0)
  21. {
  22. //查询到最后的目标地址
  23. foreach (var item in endroute)
  24. {
  25. if (list.Any(v => v.ROUTE_ID == item.ROUTE_ID) == false)
  26. {
  27. list.Add(item);
  28. }
  29. }
  30. }
  31. else
  32. {
  33. foreach (var equRoute in equRouteS)
  34. {
  35. //if (!string.IsNullOrWhiteSpace(outInType))
  36. //{
  37. // if (outInType == "in")
  38. // {
  39. // if (equRoute.ROUTE_INOUTTYPE == "out") continue;
  40. // }
  41. // else if (outInType == "out")
  42. // {
  43. // if (equRoute.ROUTE_INOUTTYPE == "in") continue;
  44. // }
  45. //}
  46. if (equRoute.ISEND && equRoute.ROUTE_NEXTPOS != toPos && equRoute.ROUTE_NEXTPOS != toPos && equRoute.ROUTE_NOTES != "1")
  47. {
  48. //该路由地址为终点出口,并且不是任务的终点位置,则忽略该路由轨迹
  49. continue;
  50. }
  51. var equRoutes = QueryRoute(equRoute.ROUTE_NEXTPOS, toPos);
  52. foreach (var item in equRoutes)
  53. {
  54. if (list.Any(v => v.ROUTE_ID == item.ROUTE_ID) == false)
  55. {
  56. list.Add(item);
  57. }
  58. if (list.Any(v => v.ROUTE_ID == equRoute.ROUTE_ID) == false)
  59. {
  60. list.Add(equRoute);
  61. }
  62. }
  63. }
  64. }
  65. return list;
  66. }
  67. }
  68. }