TitrationInterceptor.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using SHJX.Service.Control.Extends;
  2. namespace SHJX.Service.Control.Pipeline.Nodes.InterceptorNodes
  3. {
  4. public class TitrationInterceptor : INode
  5. {
  6. #region Fields
  7. private static TaskExtend _taskExtend;
  8. private static IDataManager _dataManager;
  9. #endregion
  10. public TitrationInterceptor(IDataManager dataManager, TaskExtend taskExtend)
  11. {
  12. Name = nameof(TitrationInterceptor);
  13. _taskExtend = taskExtend;
  14. _dataManager = dataManager;
  15. }
  16. public override INode Invoke()
  17. {
  18. return this;
  19. }
  20. public override void Next()
  21. {
  22. bool sodiumOxalateEnable = true;
  23. bool vitriolEnable = true;
  24. bool potassiumPermanganateEnable = true;
  25. LiquidVolume sodiumOxalateLiquid = _dataManager.Query<LiquidVolume>().Where(it => it.LiquidName.Equals(EquipmentNames.Sodium1Oxalate)).First();
  26. if (sodiumOxalateLiquid is not null)
  27. {
  28. sodiumOxalateEnable = sodiumOxalateLiquid.Enable;
  29. }
  30. LiquidVolume vitriolLiquid = _dataManager.Query<LiquidVolume>().Where(it => it.LiquidName.Equals(EquipmentNames.Titration1Vitriol)).First();
  31. if (vitriolLiquid is not null)
  32. {
  33. vitriolEnable = vitriolLiquid.Enable;
  34. }
  35. LiquidVolume potassiumPermanganateLiquid = _dataManager.Query<LiquidVolume>().Where(it => it.LiquidName.Equals(EquipmentNames.Titration1PotassiumPermanganate)).First();
  36. if (potassiumPermanganateLiquid is not null)
  37. {
  38. potassiumPermanganateEnable = potassiumPermanganateLiquid.Enable;
  39. }
  40. if (!(sodiumOxalateEnable || vitriolEnable || potassiumPermanganateEnable))
  41. {
  42. _taskExtend.UpdateRoute(CurrentTask);
  43. return;
  44. }
  45. NextNode?.SetTask(CurrentTask)?.Invoke()?.Record()?.Next();
  46. }
  47. }
  48. }