Пример #1
0
		public void AddJournalItem(JournalItem journalItem)
		{
			GKDBHelper.Add(journalItem);
			var gkCallbackResult = new GKCallbackResult();
			gkCallbackResult.JournalItems.Add(journalItem);
			NotifyGKObjectStateChanged(gkCallbackResult);
		}
Пример #2
0
		public JournalItemViewModel(JournalItem journalItem)
		{
			ShowObjectOrPlanCommand = new RelayCommand(OnShowObjectOrPlan);
			ShowObjectCommand = new RelayCommand(OnShowObject, CanShowInTree);
			ShowOnPlanCommand = new RelayCommand(OnShowOnPlan, CanShowOnPlan);
			ShowPropertiesCommand = new RelayCommand(OnShowProperties, CanShowProperties);
			JournalItem = journalItem;
		}
Пример #3
0
		public bool FilterStateClass(JournalItem journalItem)
		{
			if (JournalFilter.StateClasses.Count > 0)
			{
				return JournalFilter.StateClasses.Contains(journalItem.StateClass);
			}
			return true;
		}
Пример #4
0
		public bool FilterEventName(JournalItem journalItem)
		{
			if (JournalFilter.EventNames.Count > 0)
			{
				return JournalFilter.EventNames.Any(x => x.Name == journalItem.Name);
			}
			return true;
		}
Пример #5
0
		public JournalItemViewModel(JournalItem journalItem)
		{
			ShowObjectCommand = new RelayCommand(OnShowObject, CanShowObject);
			JournalItem = journalItem;

			InitializeTypeAddressImageSource(journalItem);
			PresentationName = TypeName + " " + Address;
			InitializePresentationName();
		}
Пример #6
0
		public static void Add(JournalItem journalItem)
		{
			try
			{
				AddMany(new List<JournalItem>() { journalItem });
			}
			catch (Exception e)
			{
				Logger.Error(e, "GKDBHelper.Add");
			}
		}
Пример #7
0
		void InitializeTypeAddressImageSource(JournalItem journalItem)
		{
			if (journalItem.DescriptorType == 0)
			{
				TypeName = "ГК";
				Address = "";
				ImageSource = "/Controls;component/Images/Blank.png"; ;
				return;
			}

			Address = journalItem.DescriptorAddress.ToString();

			var driver = XManager.Drivers.FirstOrDefault(x => x.DriverTypeNo == journalItem.DescriptorType);
			if (driver != null)
			{
				TypeName = driver.ShortName;
				if (driver.IsDeviceOnShleif)
					Address = (journalItem.DescriptorAddress / 256 + 1).ToString() + "." + (journalItem.DescriptorAddress % 256).ToString();
				if (!driver.HasAddress)
					Address = "";
				ImageSource = driver.ImageSource;
			}
			else
			{
				switch (journalItem.DescriptorType)
				{
					case 0x100:
						TypeName = "Зона";
						ImageSource = "/Controls;component/Images/zone.png";
						break;

					case 0x101:
						TypeName = "Задержка";
						ImageSource = "/Controls;component/Images/Delay.png";
						break;

					case 0x106:
						TypeName = "Направление";
						ImageSource = "/Controls;component/Images/Blue_Direction.png";
						break;

					case 0x107:
						TypeName = "ПИМ";
						ImageSource = "/Controls;component/Images/Pim.png";
						break;
				}
			}
		}
Пример #8
0
		public static JournalItem AddMessage(EventName name, string userName)
		{
			var journalItem = new JournalItem()
			{
				SystemDateTime = DateTime.Now,
				DeviceDateTime = DateTime.Now,
				JournalItemType = JournalItemType.System,
				StateClass = XStateClass.Norm,
				Name = name.ToDescription(),
				ObjectStateClass = XStateClass.Norm,
				UserName = userName,
				SubsystemType = XSubsystemType.System
			};
			Add(journalItem);
			return journalItem;
		}
Пример #9
0
		public void ConnectionChanged(bool isConnected)
		{
			lock (connectionChangedLocker)
			{
				if (!isConnected)
				{
					ConnectionLostCount++;
					if (ConnectionLostCount < 3)
						return;
				}
				else
					ConnectionLostCount = 0;

				if (IsConnected != isConnected)
				{
					var journalItem = new JournalItem()
					{
						SystemDateTime = DateTime.Now,
						DeviceDateTime = DateTime.Now,
						GKIpAddress = XManager.GetIpAddress(GkDatabase.RootDevice),
						JournalItemType = JournalItemType.System,
						StateClass = XStateClass.Unknown,
						ObjectStateClass = XStateClass.Norm,
                        Name = isConnected ? EventName.Восстановление_связи_с_прибором.ToDescription() : EventName.Потеря_связи_с_прибором.ToDescription()
					};
					AddJournalItem(journalItem);

					IsConnected = isConnected;
					if (isConnected)
					{
						var hashBytes = GKFileInfo.CreateHash1(XManager.DeviceConfiguration, GkDatabase.RootDevice);
						var gkFileReaderWriter = new GKFileReaderWriter();
						var gkFileInfo = gkFileReaderWriter.ReadInfoBlock(GkDatabase.RootDevice);
						IsHashFailure = gkFileInfo == null || !GKFileInfo.CompareHashes(hashBytes, gkFileInfo.Hash1);
					}

					foreach (var descriptor in GkDatabase.Descriptors)
					{
						descriptor.XBase.BaseState.IsConnectionLost = !isConnected;
					}
					NotifyAllObjectsStateChanged();
				}
			}
		}
Пример #10
0
		static void OnNewJournalItem(JournalItem journalItem, bool isAdministrator)
		{
			if (NewJournalItem != null)
				NewJournalItem(journalItem, isAdministrator);
		}
Пример #11
0
        public static void AddGKMessage(EventName message, string description, XBase xBase, string userName, bool isAdministrator = false)
        {
            Guid uid = Guid.Empty;
            var journalItemType = JournalItemType.System;
            if (xBase != null)
            {
                if (xBase is XDevice)
                {
                    uid = (xBase as XDevice).UID;
                    journalItemType = JournalItemType.Device;
                }
                if (xBase is XZone)
                {
                    uid = (xBase as XZone).UID;
                    journalItemType = JournalItemType.Zone;
                }
                if (xBase is XDirection)
                {
                    uid = (xBase as XDirection).UID;
                    journalItemType = JournalItemType.Direction;
                }
                if (xBase is XDelay)
                {
                    uid = (xBase as XDelay).UID;
                    journalItemType = JournalItemType.Delay;
                }
                if (xBase is XPim)
                {
                    uid = (xBase as XPim).UID;
                    journalItemType = JournalItemType.Pim;
                }
            }

            var journalItem = new JournalItem()
            {
                SystemDateTime = DateTime.Now,
                DeviceDateTime = DateTime.Now,
                JournalItemType = journalItemType,
                StateClass = EventNamesHelper.GetStateClass(message),
                Name = message.ToDescription(),
                Description = description,
                ObjectUID = uid,
                ObjectStateClass = XStateClass.Norm,
                UserName = userName,
                SubsystemType = XSubsystemType.System
            };
            if (xBase != null)
            {
                journalItem.ObjectName = xBase.PresentationName;
                journalItem.GKObjectNo = (ushort)xBase.GKDescriptorNo;
            }

            GKDBHelper.Add(journalItem);
            OnNewJournalItem(journalItem, isAdministrator);
            var gkCallbackResult = new GKCallbackResult();
            gkCallbackResult.JournalItems.Add(journalItem);
            OnGKCallbackResult(gkCallbackResult);
        }
Пример #12
0
		public void AddJournalItem(JournalItem journalItem)
		{
			if (IsGKAsAService)
			{
				SafeOperationCall(() => { FiresecService.AddJournalItem(journalItem); }, "AddJournalItem");
			}
			else
			{
			}
		}
Пример #13
0
		void AddJournalItem(JournalItem journalItem)
		{
			GKDBHelper.Add(journalItem);
			GKCallbackResult.JournalItems.Add(journalItem);
		}
Пример #14
0
		void OnNewJournalItems(JournalItem journalItem, bool isAdministrator)
		{
			if (isAdministrator)
			{
				FiresecManager.FiresecService.AddJournalItem(journalItem);
			}
		}
Пример #15
0
		static JournalItem ReadOneJournalItem(SqlCeDataReader reader)
		{
			var journalItem = new JournalItem();
			if (!reader.IsDBNull(reader.GetOrdinal("JournalItemType")))
				journalItem.JournalItemType = (JournalItemType)reader.GetByte(reader.GetOrdinal("JournalItemType"));
			
			if (!reader.IsDBNull(reader.GetOrdinal("SystemDateTime")))
				journalItem.SystemDateTime = reader.GetDateTime(reader.GetOrdinal("SystemDateTime"));

			if (!reader.IsDBNull(reader.GetOrdinal("DeviceDateTime")))
				journalItem.DeviceDateTime = reader.GetDateTime(reader.GetOrdinal("DeviceDateTime"));

			if (!reader.IsDBNull(reader.GetOrdinal("ObjectUID")))
				journalItem.ObjectUID = reader.GetGuid(reader.GetOrdinal("ObjectUID"));

			if (!reader.IsDBNull(reader.GetOrdinal("Name")))
				journalItem.Name = reader.GetString(reader.GetOrdinal("Name"));

			if (!reader.IsDBNull(reader.GetOrdinal("Description")))
				journalItem.Description = reader.GetString(reader.GetOrdinal("Description"));

			if (!reader.IsDBNull(reader.GetOrdinal("ObjectState")))
				journalItem.ObjectState = reader.GetInt32(reader.GetOrdinal("ObjectState"));

			if (!reader.IsDBNull(reader.GetOrdinal("GKObjectNo")))
				journalItem.GKObjectNo = (ushort)reader.GetInt16(reader.GetOrdinal("GKObjectNo"));

			if (!reader.IsDBNull(reader.GetOrdinal("GKIpAddress")))
				journalItem.GKIpAddress = reader.GetString(reader.GetOrdinal("GKIpAddress"));

			if (!reader.IsDBNull(reader.GetOrdinal("GKJournalRecordNo")))
				journalItem.GKJournalRecordNo = reader.GetInt32(reader.GetOrdinal("GKJournalRecordNo"));

			if (!reader.IsDBNull(reader.GetOrdinal("KAUNo")))
				journalItem.ControllerAddress = (ushort)reader.GetInt32(reader.GetOrdinal("KAUNo"));

			if (!reader.IsDBNull(reader.GetOrdinal("StateClass")))
				journalItem.StateClass = (XStateClass)reader.GetByte(reader.GetOrdinal("StateClass"));

			if (!reader.IsDBNull(reader.GetOrdinal("UserName")))
				journalItem.UserName = reader.GetString(reader.GetOrdinal("UserName"));

			if (!reader.IsDBNull(reader.GetOrdinal("ObjectStateClass")))
				journalItem.ObjectStateClass = (XStateClass)reader.GetByte(reader.GetOrdinal("ObjectStateClass"));

			if (!reader.IsDBNull(reader.GetOrdinal("ObjectName")))
				journalItem.ObjectName = reader.GetString(reader.GetOrdinal("ObjectName"));

			if (!reader.IsDBNull(reader.GetOrdinal("AdditionalDescription")))
				journalItem.AdditionalDescription = reader.GetString(reader.GetOrdinal("AdditionalDescription"));

			if (!reader.IsDBNull(reader.GetOrdinal("Subsystem")))
				journalItem.SubsystemType = (XSubsystemType)reader.GetByte(reader.GetOrdinal("Subsystem"));
			return journalItem;
		}
Пример #16
0
		public ConfirmationViewModel(JournalItem journalItem)
		{
			Title = "Подтверждение критических событий";
			ConfirmCommand = new RelayCommand(OnConfirm);
			JournalItemViewModel = new JournalItemViewModel(journalItem);
		}
Пример #17
0
		public JournalItemViewModel(JournalItem journalItem)
		{
			ShowObjectOrPlanCommand = new RelayCommand(OnShowObjectOrPlan);
			ShowObjectCommand = new RelayCommand(OnShowObject, CanShowInTree);
			ShowOnPlanCommand = new RelayCommand(OnShowOnPlan, CanShowOnPlan);
			ShowPropertiesCommand = new RelayCommand(OnShowProperties, CanShowProperties);
			JournalItem = journalItem;
			IsExistsInConfig = true;
			
			try
			{
				switch (JournalItem.JournalItemType)
				{
					case JournalItemType.Device:
						Device = XManager.Devices.FirstOrDefault(x => x.UID == JournalItem.ObjectUID);
						if (Device != null)
						{
							PresentationName = Device.PresentationName;
						}
						break;

					case JournalItemType.Zone:
						Zone = XManager.Zones.FirstOrDefault(x => x.UID == JournalItem.ObjectUID);
						if (Zone != null)
						{
							PresentationName = Zone.PresentationName;
						}
						break;

					case JournalItemType.Direction:
						Direction = XManager.Directions.FirstOrDefault(x => x.UID == JournalItem.ObjectUID);
						if (Direction != null)
						{
							PresentationName = Direction.PresentationName;
						}
						break;

					case JournalItemType.PumpStation:
						PumpStation = XManager.PumpStations.FirstOrDefault(x => x.UID == JournalItem.ObjectUID);
						if (PumpStation != null)
						{
							PresentationName = PumpStation.PresentationName;
						}
						break;

					case JournalItemType.Delay:
						Delay = XManager.Delays.FirstOrDefault(x => x.UID == JournalItem.ObjectUID);
						if (Delay != null)
						{
							PresentationName = Delay.PresentationName;
						}
						break;

					case JournalItemType.Pim:
						Pim = XManager.Pims.FirstOrDefault(x => x.UID == JournalItem.ObjectUID);
						if (Pim != null)
						{
							PresentationName = Pim.PresentationName;
						}
						break;

					case JournalItemType.GkUser:
						PresentationName = JournalItem.UserName;
						break;

					case JournalItemType.GK:
					case JournalItemType.System:
						PresentationName = "";
						break;
				}

				if (PresentationName == null)
				{
					PresentationName = JournalItem.ObjectName;
					IsExistsInConfig = false;
				}

				if(PresentationName == null)
					PresentationName = "<Нет в конфигурации>";
			}
			catch (Exception e)
			{
				Logger.Error(e, "JournalItemViewModel ctr");
			}
		}
Пример #18
0
		public JournalParser(XDevice gkDevice, List<byte> bytes)
		{
			JournalItem = new JournalItem();
			JournalItem.SubsystemType = XSubsystemType.GK;
			JournalItem.JournalItemType = JournalItemType.GK;

			JournalItem.GKIpAddress = XManager.GetIpAddress(gkDevice);
			JournalItem.GKJournalRecordNo = BytesHelper.SubstructInt(bytes, 0);
			JournalItem.GKObjectNo = BytesHelper.SubstructShort(bytes, 4);
			var UNUSED_KAUNo = BytesHelper.SubstructInt(bytes, 32);

			InitializeFromObjectUID();
			InitializeDateTime(bytes);

			JournalItem.ControllerAddress = BytesHelper.SubstructShort(bytes, 32 + 10);
			var source = (JournalSourceType)(int)(bytes[32 + 12]);
			var code = bytes[32 + 13];

			JournalItem.StateClass = XStateClass.No;
			switch (source)
			{
				case JournalSourceType.Controller:
					switch (code)
					{
						case 0:
							JournalItem.Name = "Перевод в технологический режим";
							break;

						case 2:
							JournalItem.Name = "Синхронизация времени прибора с временем ПК";
							break;

						case 4:
							JournalItem.Name = "Смена ПО";
							break;

						case 5:
							JournalItem.Name = "Смена БД";
							break;

						case 6:
							JournalItem.Name = "Перевод в рабочий режим";
							break;

						case 7:
							JournalItem.Name = "Вход пользователя в прибор";
							JournalItem.Description = JournalStringsHelper.ToUser(bytes[32 + 15]);
							var bytes1 = bytes.GetRange(6, 31 - 6 + 1);
							var bytes2 = bytes.GetRange(16, 21 - 16 + 1);
							bytes1.AddRange(bytes2);
							JournalItem.UserName = Encoding.Default.GetString(bytes1.ToArray(), 0, bytes1.Count);
							JournalItem.JournalItemType = JournalItemType.GkUser;
							break;

						case 8:
							JournalItem.Name = "Выход пользователя из прибора";
							JournalItem.Description = JournalStringsHelper.ToUser(bytes[32 + 15]);
							bytes1 = bytes.GetRange(6, 31 - 6 + 1);
							bytes2 = bytes.GetRange(48, 53 - 48 + 1);
							bytes1.AddRange(bytes2);
							JournalItem.UserName = Encoding.Default.GetString(bytes1.ToArray(), 0, bytes1.Count);
							JournalItem.JournalItemType = JournalItemType.GkUser;
							break;

						case 9:
							JournalItem.Name = "Ошибка управления";
							JournalItem.GKObjectNo = BytesHelper.SubstructShort(bytes, 18);
							break;

						case 10:
							JournalItem.Name = "Введен новый пользователь";
							JournalItem.JournalItemType = JournalItemType.GkUser;
							break;

						case 11:
							JournalItem.Name = "Изменена учетная информация пользователя";
							JournalItem.JournalItemType = JournalItemType.GkUser;
							break;

						case 12:
							JournalItem.Name = "Произведена настройка сети";
							break;

						default:
							JournalItem.Name = "Неизвестный код события контроллекра";
							JournalItem.Description = code.ToString();
							break;
					}
					break;

				case JournalSourceType.Device:
					var unknownType = BytesHelper.SubstructShort(bytes, 32 + 14);
					var unknownAddress = BytesHelper.SubstructShort(bytes, 32 + 16);
					var presentationAddress = (unknownAddress / 256 + 1).ToString() + "." + (unknownAddress % 256).ToString();
					var driverName = unknownType.ToString();
					var driver = XManager.Drivers.FirstOrDefault(x => x.DriverTypeNo == unknownType);
					if (driver != null)
					{
						driverName = driver.ShortName;
					};
					var unknownDescription = "Тип: " + driverName + " Адрес: " + presentationAddress;
					switch (code)
					{
						case 0:
							JournalItem.Name = "Неизвестный тип";
							JournalItem.Description = unknownDescription;
							break;

						case 1:
							JournalItem.Name = "Устройство с таким адресом не описано при конфигурации";
							JournalItem.Description = unknownDescription;
							break;

						default:
							JournalItem.Name = "Неизвестный код события устройства";
							JournalItem.Description = code.ToString();
							break;
					}
					break;

				case JournalSourceType.Object:
					var UNUSED_ObjectNo = BytesHelper.SubstructShort(bytes, 32 + 18);
					JournalItem.DescriptorType = BytesHelper.SubstructShort(bytes, 32 + 20);
					JournalItem.DescriptorAddress = BytesHelper.SubstructShort(bytes, 32 + 22);
					var UNUSED_ObjectFactoryNo = BytesHelper.SubstructInt(bytes, 32 + 24);
					JournalItem.ObjectState = BytesHelper.SubstructInt(bytes, 32 + 28);
					switch (code)
					{
						case 0:
							JournalItem.Name = "При конфигурации описан другой тип";
							var realType = BytesHelper.SubstructShort(bytes, 32 + 14);
							var realDriverString = "Неизвестный тип " + realType.ToString();
							var realDriver = XManager.Drivers.FirstOrDefault(x => x.DriverTypeNo == realType);
							if (realDriver != null)
							{
								realDriverString = realDriver.ShortName;
							}
							JournalItem.Description = "Действительный тип: " + realDriverString;
							break;
						case 1:
							JournalItem.Name = "Изменился заводской номер";
							JournalItem.Description = "Старый заводсткой номер: " + BytesHelper.SubstructInt(bytes, 32 + 14).ToString();
							break;
						case 2:
							JournalItem.Name = "Пожар-1";
							if (JournalItem.JournalItemType == JournalItemType.Device)
								JournalItem.Name = "Сработка-1";
							JournalItem.Description = JournalStringsHelper.ToFire(bytes[32 + 15]);
							break;

						case 3:
							JournalItem.Name = "Пожар-2";
							if (JournalItem.JournalItemType == JournalItemType.Device)
								JournalItem.Name = "Сработка-2";
							JournalItem.Description = JournalStringsHelper.ToFire(bytes[32 + 15]);
							break;

						case 4:
							JournalItem.Name = "Внимание";
							break;

						case 5:
							JournalItem.Name = "Неисправность";
							if (bytes[32 + 14] == 0)
								JournalItem.Name = "Неисправность устранена";

							switch (JournalItem.DescriptorType)
							{
								case 0xD6:
									JournalItem.Description = JournalStringsHelper.ToBatteryFailure(bytes[32 + 15]);
									break;

								default:
									JournalItem.Description = JournalStringsHelper.ToFailure(bytes[32 + 15]);
									if (bytes[32 + 15] >= 241 && bytes[32 + 15] <= 254)
									{
										var firstAdditionalDescription = bytes[32 + 16];
										var secondAdditionalDescription = bytes[32 + 17];
										if (firstAdditionalDescription != 0 || secondAdditionalDescription != 0)
										{
											JournalItem.AdditionalDescription = firstAdditionalDescription.ToString() + " " + secondAdditionalDescription.ToString();
										}
									}
									break;
							}
							break;

						case 6:
							JournalItem.Name = "Тест";
							if (bytes[32 + 14] == 0)
								JournalItem.Name = "Тест устранен";

							switch (bytes[32 + 15])
							{
								case 1:
									JournalItem.Description = "Кнопка";
									break;

								case 2:
									JournalItem.Description = "Указка";
									break;
							}
							break;

						case 7:
							JournalItem.Name = "Запыленность";
							if (bytes[32 + 14] == 0)
								JournalItem.Name = "Запыленность устранена";

							switch (bytes[32 + 15])
							{
								case 1:
									JournalItem.Description = "Предварительная";
									break;

								case 2:
									JournalItem.Description = "Критическая";
									break;
							}
							break;

						case 8:
							JournalItem.Name = "Информация";
                            JournalItem.Description = JournalStringsHelper.ToInformation(bytes[32 + 15]);
							break;

						case 9:
							JournalItem.Name = JournalStringsHelper.ToState(bytes[32 + 15]);
							break;

						case 10:
							JournalItem.Name = "Режим работы";
							switch (bytes[32 + 15])
							{
								case 0:
									JournalItem.Name = "Перевод в автоматический режим";
									break;

								case 1:
									JournalItem.Name = "Перевод в ручной режим";
									break;

								case 2:
									JournalItem.Name = "Перевод в отключенный режим";
									break;

								case 3:
									JournalItem.Name = "Перевод в неопределенный режим";
									break;
							}
							break;

						case 13:
							JournalItem.Name = "Запись параметра";
							break;

						case 14:
							JournalItem.Name = "Норма";
							break;

						default:
							JournalItem.Name = "Неизвестный код события объекта:";
							JournalItem.Description = code.ToString();
							break;
					}
					break;
			}

			//if (Device != null && Device.DriverType == XDriverType.Pump && JournalItem.Name == "Неисправность")
			//{
			//    var pumpTypeProperty = Device.Properties.FirstOrDefault(x => x.Name == "PumpType");
			//    if (pumpTypeProperty != null)
			//    {
			//        JournalItem.Description = JournalStringsHelper.GetPumpFailureMessage(JournalItem.Description, pumpTypeProperty.Value);
			//    }
			//}

			if (JournalItem.StateClass == XStateClass.No)
			{
				JournalItem.StateClass = JournalDescriptionStateHelper.GetStateClassByName(JournalItem.Name);
			}

			if (source == JournalSourceType.Object)
			{
				var stateBits = XStatesHelper.StatesFromInt(JournalItem.ObjectState);
				var stateClasses = XStatesHelper.StateBitsToStateClasses(stateBits);
				JournalItem.ObjectStateClass = XStatesHelper.GetMinStateClass(stateClasses);
			}
			else
			{
				JournalItem.ObjectStateClass = XStateClass.Norm;
			}
		}
        void ParseAdditionalStates(JournalItem journalItem)
        {
            var descriptor = GkDatabase.Descriptors.FirstOrDefault(x => x.GetDescriptorNo() == journalItem.GKObjectNo);

            if (descriptor != null && descriptor.Device != null)
            {
                var deviceState = descriptor.Device.BaseState;
                if (journalItem.Name == "Неисправность")
                {
                    if (!string.IsNullOrEmpty(journalItem.Description))
                    {
                        AddAdditionalState(deviceState, journalItem.Description, XStateClass.Failure);
                        if (descriptor.Device.DriverType == XDriverType.Battery)
                        {
                            var batteryNamesGroup = BatteryJournalHelper.BatteryNamesGroups.FirstOrDefault(x => x.Names.Contains(journalItem.Description));
                            if (batteryNamesGroup != null)
                            {
                                foreach (var name in batteryNamesGroup.Names)
                                {
                                    if (name != journalItem.Description)
                                    {
                                        deviceState.AdditionalStates.RemoveAll(x => x.Name == name);
                                    }
                                }
                            }
                        }
                    }
                }
                if (journalItem.Name == "Неисправность устранена")
                {
                    if (string.IsNullOrEmpty(journalItem.Description))
                    {
                        deviceState.AdditionalStates.RemoveAll(x => x.StateClass == XStateClass.Failure);
                    }
                    else
                    {
                        deviceState.AdditionalStates.RemoveAll(x => x.Name == journalItem.Description);
                        if (descriptor.Device.DriverType == XDriverType.Battery)
                        {
                            var batteryNamesGroup = BatteryJournalHelper.BatteryNamesGroups.FirstOrDefault(x => x.ResetName == journalItem.Description);
                            if (batteryNamesGroup != null)
                            {
                                foreach (var name in batteryNamesGroup.Names)
                                {
                                    deviceState.AdditionalStates.RemoveAll(x => x.Name == name);
                                }
                            }
                        }
                    }
                }
                if (journalItem.Name == "Информация")
                {
                    switch (journalItem.Description)
                    {
                        case "Низкий уровень":
                            deviceState.AdditionalStates.RemoveAll(x => x.Name == "Высокий уровень");
                            deviceState.AdditionalStates.RemoveAll(x => x.Name == "Аварийный уровень");
                            AddAdditionalState(deviceState, "Низкий уровень", XStateClass.Info);
                            break;
                        case "Высокий уровень":
                            deviceState.AdditionalStates.RemoveAll(x => x.Name == "Аварийный уровень");
                            AddAdditionalState(deviceState, "Низкий уровень", XStateClass.Info);
                            AddAdditionalState(deviceState, "Высокий уровень", XStateClass.Info);
                            break;
                        case "Аварийный уровень":
                            AddAdditionalState(deviceState, "Низкий уровень", XStateClass.Info);
                            AddAdditionalState(deviceState, "Высокий уровень", XStateClass.Info);
                            AddAdditionalState(deviceState, "Аварийный уровень", XStateClass.Failure);
                            break;
                        case "Уровень норма":
                            deviceState.AdditionalStates.RemoveAll(x => x.Name == "Низкий уровень");
                            deviceState.AdditionalStates.RemoveAll(x => x.Name == "Высокий уровень");
                            deviceState.AdditionalStates.RemoveAll(x => x.Name == "Аварийный уровень");
                            break;
                    }
                }
            }
        }
Пример #20
0
		void CheckServiceRequired(XBase xBase, JournalItem journalItem)
		{
			if (journalItem.Name == "Запыленность" || journalItem.Name == "Запыленность устранена")
			{
				if (xBase is XDevice)
				{
					var device = xBase as XDevice;
					if (journalItem.Name == "Запыленность")
						device.BaseState.IsService = true;
					if (journalItem.Name == "Запыленность устранена")
						device.BaseState.IsService = false;
				}
			}
		}
Пример #21
0
		void ChangeJournalOnDevice(BaseDescriptor descriptor, JournalItem journalItem)
		{
			if (descriptor.Device != null)
			{
				var device = descriptor.Device;
				if (device.DriverType == XDriverType.AM1_T)
				{
					if (journalItem.Name == "Сработка-2")
					{
						var property = device.Properties.FirstOrDefault(x => x.Name == "OnMessage");
						if (property != null)
						{
							journalItem.Description = property.StringValue;
						}
					}
					if (journalItem.Name == "Норма")
					{
						var property = device.Properties.FirstOrDefault(x => x.Name == "NormMessage");
						if (property != null)
						{
							journalItem.Description = property.StringValue;
						}
					}
				}
				if (device.DriverType == XDriverType.Valve)
				{
					switch (journalItem.Name)
					{
						case "Включено":
							journalItem.Name = "Открыто";
							break;

						case "Выключено":
							journalItem.Name = "Закрыто";
							break;

						case "Включается":
							journalItem.Name = "Открывается";
							break;

						case "Выключается":
							journalItem.Name = "Закрывается";
							break;
					}
				}
			}
		}
Пример #22
0
        void AddFailureJournalItem(EventName name, EventDescription description)
		{
			var journalItem = new JournalItem()
			{
				Name = name.ToDescription(),
				Description = description.ToDescription(),
				StateClass = XStateClass.Unknown,
				ObjectStateClass = XStateClass.Norm,
				GKIpAddress = GkDatabase.RootDevice.GetGKIpAddress()
			};
			GKDBHelper.Add(journalItem);
			GKCallbackResult.JournalItems.Add(journalItem);
		}