using SHJX.Service.Control.Extends; using SHJX.Service.Control.LiquidHandler; namespace SHJX.Service.Control.Pipeline.Nodes.LiquidNode { /// /// 高锰酸钾 /// ` public class TitrationKMnO : INode { #region Fields private static TaskExtend _taskExtend; private static IDataManager _dataManager; private static TitrationValue _titrationValue; private static LiquidAmount _liquidAmount; #endregion public TitrationKMnO(TaskExtend taskExtend, IDataManager dataManager) { Name = nameof(TitrationKMnO); _taskExtend = taskExtend; _dataManager = dataManager; _titrationValue = dataManager.Query().First(); _liquidAmount = dataManager.Query().Where(it => it.LiquidName.Equals(EquipmentNames.Titration1PotassiumPermanganate)).First(); } private static bool flag = true; //重新计算空白值 public override INode Invoke() { ExecuteCommand.ShowStatusOpenClose(CurrentTask, "1号滴定位滴定(开始)"); LiquidContent.StartNew.Execute(EquipmentNames.Titration1PotassiumPermanganate, CurrentTask.RouteType, (object obj) => { CurrentTask.Amount += Convert.ToDouble(obj); if (CurrentTask.TaskType.Equals("样品", StringComparison.Ordinal)) { CurrentTask.Result = CalculationResult.CalculateSample(CurrentTask); } if (CurrentTask.TaskType.Equals("空白", StringComparison.Ordinal)) { CurrentTask.Result = CalculationResult.CalculateBlank(CurrentTask); } _dataManager.Update(CurrentTask); if (CurrentTask.TaskType.BeIn("样品", "空白")) { TaskResultArgs resultArgs = new() { Name = CurrentTask.Source, Amount = CurrentTask.Amount.ToString("F2"), Result = CurrentTask.Result.ToString("F2") }; if (CurrentTask.TaskType.Equals("样品") && CurrentTask.Amount > 6.3) { resultArgs.ResultColor = "#FF0000"; } Messager.Send("TaskResult", resultArgs); } if (CurrentTask.TaskType.Equals("标定")) { // 1) 标定:任务提前完成 CurrentTask.Status = TaskState.Finished; _dataManager.Update(CurrentTask); List blankTasks = _dataManager.Query().Where(it => it.WaveKey.Equals(CurrentTask.WaveKey) && it.TaskType.Equals(TaskTypeName.BLANK_ZH) && it.Status.In(TaskState.Execute,TaskState.Finished)).ToList(); foreach (var blankTask in blankTasks) { // 1)提前完成是为了这里遍历 var refreshResult = CalculationResult.CalculateCalibration(blankTask); TaskResultArgs resultArgs = new() { Name = blankTask.Source, Amount = blankTask.Amount.ToString("F2"), Result = refreshResult.ToString("F2") }; blankTask.Result = refreshResult; _dataManager.Update(blankTask); CurrentTask.Result = blankTask.Result; Messager.Send("TaskResult", resultArgs); } } }, CurrentTask.QuicklyTitration, CurrentTask.TaskType); ExecuteCommand.ShowStatusOpenClose(CurrentTask, "1号滴定位滴定(结束)"); return this; } } }