| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using SHJX.Service.Control.Extends;
- using SHJX.Service.Control.LiquidHandler;
- namespace SHJX.Service.Control.Pipeline.Nodes.LiquidNode
- {
- /// <summary>
- /// 高锰酸钾
- /// </summary>`
- public class Titration2KMnO : INode
- {
- #region Fields
- private static TaskExtend _taskExtend;
- private static IDataManager _dataManager;
- private static Titration2Value _titrationValue;
- private static LiquidAmount _liquidAmount;
- #endregion
- public Titration2KMnO(TaskExtend taskExtend, IDataManager dataManager)
- {
- Name = nameof(Titration2KMnO);
- _taskExtend = taskExtend;
- _dataManager = dataManager;
- _titrationValue = dataManager.Query<Titration2Value>().First();
- _liquidAmount = dataManager.Query<LiquidAmount>().Where(it => it.LiquidName.Equals(EquipmentNames.Titration2PotassiumPermanganate)).First();
- }
- private static bool flag = true; //重新计算空白值
- public override INode Invoke()
- {
- ExecuteCommand.ShowStatusOpenClose(CurrentTask, "2号滴定位滴定(开始)");
- LiquidContent.StartNew.Execute(EquipmentNames.Titration2PotassiumPermanganate, 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<TaskResultArgs>.Send("TaskResult", resultArgs);
- }
- if (CurrentTask.TaskType.Equals("标定"))
- {
- // 1) 标定:任务提前完成
- CurrentTask.Status = TaskState.Finished;
- _dataManager.Update(CurrentTask);
- List<EquipmentTask> blankTasks = _dataManager.Query<EquipmentTask>().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<TaskResultArgs>.Send("TaskResult", resultArgs);
- }
- }
- }, CurrentTask.QuicklyTitration, CurrentTask.TaskType);
- ExecuteCommand.ShowStatusOpenClose(CurrentTask, "2号滴定位滴定(结束)");
- return this;
- }
- }
- }
|