ReleaseAxis.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using SHJX.Service.Control.Extends;
  2. namespace SHJX.Service.Control.Pipeline.Nodes
  3. {
  4. public class ReleaseAxis : INode
  5. {
  6. #region Fields
  7. private static TaskExtend _taskExtend;
  8. private static IDataManager _dataManager;
  9. #endregion
  10. public ReleaseAxis(IDataManager dataManager, TaskExtend taskExtend)
  11. {
  12. Name = nameof(ReleaseAxis);
  13. _taskExtend = taskExtend;
  14. _dataManager = dataManager;
  15. }
  16. public override INode Invoke()
  17. {
  18. List<RouteCache> caches = _dataManager.Query<RouteCache>().Where(it => it.Source.Equals(CurrentTask.Source)).ToList();
  19. if (caches.Any())
  20. {
  21. if (caches.Count == 1)
  22. {
  23. _dataManager.Delete(caches.FirstOrDefault());
  24. }
  25. else
  26. {
  27. foreach (RouteCache cache in caches)
  28. {
  29. if (cache.RouteStep != CurrentTask.RouteStep)
  30. {
  31. _dataManager.Delete(cache);
  32. }
  33. }
  34. }
  35. }
  36. _dataManager.Update<StateMachine>().Invoke(it => it.Status.Set(0))(it => it.Name.Equals(StateMachineName.MOTOR_LOCK));
  37. return this;
  38. }
  39. }
  40. }