Beispiel #1
0
        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
        }
Beispiel #2
0
        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);
        }