public ReportHelper(Logger logger) { Logger = logger; Service = new ReportsService(); BatchersReader = new BatchersReader(); DosingSourcesReader = new DosingSourcesReader(); _reportAttributesDict = GetAttributes(); _opc = NewOpcServer.GetInstance().GetOpc(NewOpcServer.OpcList.Rbu); #region Timers _timer = new DispatcherTimer { Interval = new TimeSpan(0, 0, 1, 0, 0) }; #endregion }
private List <DosingSourceMaterial> GetDosingSourceMaterials(string batcher) { var dosingSourceMaterials = new List <DosingSourceMaterial>(); var dosingSourceNames = DosingSourcesReader.GetDosingSourceNames(); if (_reportAttributesDict.ContainsKey(ReportAttributes.SetVolume)) { foreach (var dosingSourceName in dosingSourceNames) { var setVolumeTag = batcher + $"{dosingSourceName}." + _reportAttributesDict[ReportAttributes.SetVolume]; var setVolumeString = _opc.ReadNode(setVolumeTag.ToNode(), OpcAttribute.Value)?.ToString(); decimal.TryParse(setVolumeString, out var setVolume); if (setVolume != 0) { var dosingSourceMaterial = new DosingSourceMaterial { SetVolume = setVolume }; if (_reportAttributesDict.ContainsKey(ReportAttributes.StartDosageDate) && _reportAttributesDict.ContainsKey(ReportAttributes.StartDosageTime)) { var startDosageDateTag = batcher + $"{dosingSourceName}." + _reportAttributesDict[ReportAttributes.StartDosageDate]; var startDosageTimeTag = batcher + $"{dosingSourceName}." + _reportAttributesDict[ReportAttributes.StartDosageTime]; var startDosageDate = _opc.ReadNode(startDosageDateTag.ToNode(), OpcAttribute.Value)?.ToString(); var startDosageTime = _opc.ReadNode(startDosageTimeTag.ToNode(), OpcAttribute.Value)?.ToString(); dosingSourceMaterial.StartDosage = OpcHelper.StringDateParsing(startDosageDate, startDosageTime); } if (_reportAttributesDict.ContainsKey(ReportAttributes.FinishDosageDate) && _reportAttributesDict.ContainsKey(ReportAttributes.FinishDosageTime)) { var finishDosageDateTag = batcher + $"{dosingSourceName}." + _reportAttributesDict[ReportAttributes.FinishDosageDate]; var finishDosageTimeTag = batcher + $"{dosingSourceName}." + _reportAttributesDict[ReportAttributes.FinishDosageTime]; var finishDosageDate = _opc.ReadNode(finishDosageDateTag.ToNode(), OpcAttribute.Value)?.ToString(); var finishDosageTime = _opc.ReadNode(finishDosageTimeTag.ToNode(), OpcAttribute.Value)?.ToString(); dosingSourceMaterial.FinishDosage = OpcHelper.StringDateParsing(finishDosageDate, finishDosageTime); } if (_reportAttributesDict.ContainsKey(ReportAttributes.StartWeightDosage)) { var startWeightTag = batcher + $"{dosingSourceName}." + _reportAttributesDict[ReportAttributes.StartWeightDosage]; var startWeightString = _opc.ReadNode(startWeightTag.ToNode(), OpcAttribute.Value)?.ToString(); decimal.TryParse(startWeightString, out var startWeight); dosingSourceMaterial.StartWeightDosage = startWeight; } if (_reportAttributesDict.ContainsKey(ReportAttributes.FinishWeightDosage)) { var finishWeightTag = batcher + $"{dosingSourceName}." + _reportAttributesDict[ReportAttributes.FinishWeightDosage]; var finishWeightString = _opc.ReadNode(finishWeightTag.ToNode(), OpcAttribute.Value)?.ToString(); decimal.TryParse(finishWeightString, out var finishWeight); dosingSourceMaterial.FinishWeightDosage = finishWeight; } if (_reportAttributesDict.ContainsKey(ReportAttributes.MaterialId)) { var materialIdTag = batcher + $"{dosingSourceName}." + _reportAttributesDict[ReportAttributes.MaterialId]; var materialIdString = _opc.ReadNode(materialIdTag.ToNode(), OpcAttribute.Value)?.ToString(); long.TryParse(materialIdString, out var materialId); dosingSourceMaterial.MaterialId = materialId; } if (_reportAttributesDict.ContainsKey(ReportAttributes.ContainerId)) { var containerIdTag = batcher + $"{dosingSourceName}." + _reportAttributesDict[ReportAttributes.ContainerId]; var containerIdString = _opc.ReadNode(containerIdTag.ToNode(), OpcAttribute.Value)?.ToString(); long.TryParse(containerIdString, out var containerId); dosingSourceMaterial.ContainerId = containerId; } dosingSourceMaterials.Add(dosingSourceMaterial); } } } return(dosingSourceMaterials); }