using SHJX.Service.Control.Extends; namespace SHJX.Service.Control.Pipeline.Nodes.InterceptorNodes { public class TitrationInterceptor : INode { #region Fields private static TaskExtend _taskExtend; private static IDataManager _dataManager; #endregion public TitrationInterceptor(IDataManager dataManager, TaskExtend taskExtend) { Name = nameof(TitrationInterceptor); _taskExtend = taskExtend; _dataManager = dataManager; } public override INode Invoke() { return this; } public override void Next() { bool sodiumOxalateEnable = true; bool vitriolEnable = true; bool potassiumPermanganateEnable = true; LiquidVolume sodiumOxalateLiquid = _dataManager.Query().Where(it => it.LiquidName.Equals(EquipmentNames.Sodium1Oxalate)).First(); if (sodiumOxalateLiquid is not null) { sodiumOxalateEnable = sodiumOxalateLiquid.Enable; } LiquidVolume vitriolLiquid = _dataManager.Query().Where(it => it.LiquidName.Equals(EquipmentNames.Titration1Vitriol)).First(); if (vitriolLiquid is not null) { vitriolEnable = vitriolLiquid.Enable; } LiquidVolume potassiumPermanganateLiquid = _dataManager.Query().Where(it => it.LiquidName.Equals(EquipmentNames.Titration1PotassiumPermanganate)).First(); if (potassiumPermanganateLiquid is not null) { potassiumPermanganateEnable = potassiumPermanganateLiquid.Enable; } if (!(sodiumOxalateEnable || vitriolEnable || potassiumPermanganateEnable)) { _taskExtend.UpdateRoute(CurrentTask); return; } NextNode?.SetTask(CurrentTask)?.Invoke()?.Record()?.Next(); } } }