public void WriteFileToGK(XDevice gkDevice) { var bytesList = new List<byte>(); var gkFileInfo = new GKFileInfo(); gkFileInfo.Initialize(XManager.DeviceConfiguration, gkDevice); bytesList.AddRange(gkFileInfo.InfoBlock); var sendResult = SendManager.Send(gkDevice, 0, 21, 0); if (sendResult.HasError) { Error = "Невозможно начать процедуру записи "; return; } bytesList.AddRange(gkFileInfo.FileBytes); var progressCallback = GKProcessorManager.StartProgress("Запись файла в " + gkDevice.PresentationName, null, bytesList.Count / 256, true, GKProgressClientType.Administrator); for (var i = 0; i < bytesList.Count; i += 256) { if (progressCallback.IsCanceled) { Error = "Операция отменена"; return; } GKProcessorManager.DoProgress("Запись блока данных " + i + 1, progressCallback); var bytesBlock = BitConverter.GetBytes((uint)(i / 256 + 1)).ToList(); bytesBlock.AddRange(bytesList.GetRange(i, Math.Min(256, bytesList.Count - i))); sendResult = SendManager.Send(gkDevice, (ushort)bytesBlock.Count(), 22, 0, bytesBlock); if (sendResult.HasError) { Error = "Невозможно записать блок данных " + i; break; } } var endBlock = BitConverter.GetBytes((uint) (bytesList.Count()/256 + 1)).ToList(); sendResult = SendManager.Send(gkDevice, 0, 22, 0, endBlock); if (sendResult.HasError) { Error = "Невозможно завершить запись файла "; } }
private List<BsonDocument> SortMail(List<BsonDocument> MailList, BsonDocument Search) { List<BsonDocument> MailNikeName = nnm.GetAllData(); List<BsonDocument> MailIp = im.GetAllData(); List<BsonDocument> MailAddress = mam.GetAllData(); List<BsonDocument> MailPhone = pm.GetAllData(); List<BsonDocument> MailContainer = cm.GetAllData(); foreach (BsonDocument Mail in MailList) { int Weights = 0; if (Mail.Contains("MailFrom")) { foreach (BsonValue MailFrom in Mail.GetValue("MailFrom").AsBsonArray) { if (!MailFrom.AsBsonArray[0].IsBsonNull) { Weights += MailNikeName.Find((x) => x.GetValue("_id").AsObjectId == MailFrom.AsBsonArray[0].AsObjectId).GetValue("RepeatTimes").AsInt32; } if (!MailFrom.AsBsonArray[1].IsBsonNull) { Weights += MailAddress.Find((x) => x.GetValue("_id").AsObjectId == MailFrom.AsBsonArray[1].AsObjectId).GetValue("RepeatTimes").AsInt32; } } } if (Mail.Contains("MailTO")) { foreach (BsonValue MailTO in Mail.GetValue("MailTO").AsBsonArray) { if (!MailTO.AsBsonArray[0].IsBsonNull) { Weights += MailNikeName.Find((x) => x.GetValue("_id").AsObjectId == MailTO.AsBsonArray[0].AsObjectId).GetValue("RepeatTimes").AsInt32; } if (!MailTO.AsBsonArray[1].IsBsonNull) { Weights += MailAddress.Find((x) => x.GetValue("_id").AsObjectId == MailTO.AsBsonArray[1].AsObjectId).GetValue("RepeatTimes").AsInt32; } } } if (Mail.Contains("MailCC")) { foreach (BsonValue MailCC in Mail.GetValue("MailCC").AsBsonArray) { if (!MailCC.AsBsonArray[0].IsBsonNull) { Weights += MailNikeName.Find((x) => x.GetValue("_id").AsObjectId == MailCC.AsBsonArray[0].AsObjectId).GetValue("RepeatTimes").AsInt32; } if (!MailCC.AsBsonArray[1].IsBsonNull) { Weights += MailAddress.Find((x) => x.GetValue("_id").AsObjectId == MailCC.AsBsonArray[1].AsObjectId).GetValue("RepeatTimes").AsInt32; } } } if (Mail.Contains("MailBCC")) { foreach (BsonValue MailBCC in Mail.GetValue("MailBCC").AsBsonArray) { if (!MailBCC.AsBsonArray[0].IsBsonNull) { Weights += MailAddress.Find((x) => x.GetValue("_id").AsObjectId == MailBCC.AsBsonArray[0].AsObjectId).GetValue("RepeatTimes").AsInt32; } if (!MailBCC.AsBsonArray[1].IsBsonNull) { Weights += MailAddress.Find((x) => x.GetValue("_id").AsObjectId == MailBCC.AsBsonArray[1].AsObjectId).GetValue("RepeatTimes").AsInt32; } } } for (int i = 0; i < Mail.GetValue("HTMLBodyIps").AsBsonArray.Count; i += 2) { Weights += MailIp.Find((x) => x.GetValue("Ip") == Mail.GetValue("HTMLBodyIps").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("HTMLBodyIps").AsBsonArray[i + 1].AsInt32; } for (int i = 0; i < Mail.GetValue("HTMLBodyMailAddress").AsBsonArray.Count; i += 2) { Weights += MailAddress.Find((x) => x.GetValue("Address").AsString == Mail.GetValue("HTMLBodyMailAddress").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("HTMLBodyMailAddress").AsBsonArray[i + 1].AsInt32; } for (int i = 0; i < Mail.GetValue("HTMLBodyPhone").AsBsonArray.Count; i += 2) { Weights += MailPhone.Find((x) => x.GetValue("Phone") == Mail.GetValue("HTMLBodyPhone").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("HTMLBodyPhone").AsBsonArray[i + 1].AsInt32; } for (int i = 0; i < Mail.GetValue("HTMLBodyContainer").AsBsonArray.Count; i += 2) { Weights += MailContainer.Find((x) => x.GetValue("Container") == Mail.GetValue("HTMLBodyContainer").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("HTMLBodyContainer").AsBsonArray[i + 1].AsInt32; } for (int i = 0; i < Mail.GetValue("TextBodyIps").AsBsonArray.Count; i += 2) { Weights += MailIp.Find((x) => x.GetValue("Ip") == Mail.GetValue("TextBodyIps").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("TextBodyIps").AsBsonArray[i + 1].AsInt32; } for (int i = 0; i < Mail.GetValue("TextBodyMailAddress").AsBsonArray.Count; i += 2) { Weights += MailAddress.Find((x) => x.GetValue("Address").AsString == Mail.GetValue("TextBodyMailAddress").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("TextBodyMailAddress").AsBsonArray[i + 1].AsInt32; } for (int i = 0; i < Mail.GetValue("TextBodyPhone").AsBsonArray.Count; i += 2) { Weights += MailPhone.Find((x) => x.GetValue("Phone") == Mail.GetValue("TextBodyPhone").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("TextBodyPhone").AsBsonArray[i + 1].AsInt32; } for (int i = 0; i < Mail.GetValue("TextBodyContainer").AsBsonArray.Count; i += 2) { Weights += MailContainer.Find((x) => x.GetValue("Container") == Mail.GetValue("TextBodyContainer").AsBsonArray[i].AsString).GetValue("RepeatTimes").AsInt32 * Mail.GetValue("TextBodyContainer").AsBsonArray[i + 1].AsInt32; } Mail.Add("Weights", Weights); } MailList.Sort((X, Y) => -X.GetValue("Weights").AsInt32.CompareTo(Y.GetValue("Weights").AsInt32)); if (MailList.Count > 1000) { return MailList.GetRange(0, 1000); } else { return MailList; } }
public void WriteFileToGK(GKDevice gkControllerDevice, Guid clientUID) { using (var gkLifecycleManager = new GKLifecycleManager(gkControllerDevice, "Запись файла в ГК")) { gkLifecycleManager.AddItem("Формирование хэша"); var gkFileInfo = new GKFileInfo(); gkFileInfo.Initialize(gkControllerDevice); var bytesList = new List<byte>(); bytesList.AddRange(gkFileInfo.InfoBlock); bytesList.AddRange(gkFileInfo.FileBytes); gkLifecycleManager.AddItem("Перевод в режим записи файла"); var sendResult = SendManager.Send(gkControllerDevice, 0, 21, 0); if (sendResult.HasError) { Error = "Невозможно начать процедуру записи "; gkLifecycleManager.AddItem("Ошибка"); return; } var progressCallback = GKProcessorManager.StartProgress("Запись файла в " + gkControllerDevice.PresentationName, null, bytesList.Count / 256, false, GKProgressClientType.Administrator, clientUID); for (var i = 0; i < bytesList.Count; i += 256) { gkLifecycleManager.Progress(i + 1, bytesList.Count); GKProcessorManager.DoProgress("Запись блока данных " + i + 1, progressCallback, clientUID); var bytesBlock = BitConverter.GetBytes((uint)(i / 256 + 1)).ToList(); bytesBlock.AddRange(bytesList.GetRange(i, Math.Min(256, bytesList.Count - i))); for (int j = 0; j < 10; j++) { sendResult = SendManager.Send(gkControllerDevice, (ushort)bytesBlock.Count(), 22, 0, bytesBlock); var result = sendResult.Bytes.Count > 0 && sendResult.Bytes[0] == 1; if (!sendResult.HasError && result) break; if (j == 9) { Error = "Невозможно записать блок данных " + i; gkLifecycleManager.AddItem("Ошибка"); return; } } } gkLifecycleManager.AddItem("Запись последнего блока данных"); var endBlock = BitConverter.GetBytes((uint)(bytesList.Count() / 256 + 1)).ToList(); sendResult = SendManager.Send(gkControllerDevice, 0, 22, 0, endBlock); var endResult = sendResult.Bytes.Count > 0 && sendResult.Bytes[0] == 0; if (sendResult.HasError || !endResult) { Error = "Невозможно завершить запись файла "; gkLifecycleManager.AddItem("Ошибка"); } var sendResultRead = SendManager.Send(gkControllerDevice, 4, 23, 256, new List<byte>(BitConverter.GetBytes(1))); if (!gkFileInfo.InfoBlock.SequenceEqual(sendResultRead.Bytes)) { Error = "Не удалось корректно записать информационный блок "; gkLifecycleManager.AddItem("Ошибка"); } } }
public FS2JournalItem Parce(DeviceConfiguration deviceConfiguration, Device panelDevice, List<byte> bytes, int journalType) { if (bytes.Count != 32) return null; Bytes = bytes; DeviceConfiguration = deviceConfiguration; FSInternalJournal = new FSInternalJournal() { ShleifNo = bytes[17] + 1, EventCode = bytes[0], AdditionalEventCode = bytes[5], DeviceType = bytes[7], AddressOnShleif = bytes[8], State = bytes[9], UnusedDescriptorNo = BytesHelper.ExtractTriple(bytes, 12), ZoneNo = BytesHelper.ExtractShort(bytes, 10) }; FS2JournalItem = new FS2JournalItem() { BytesString = BytesHelper.BytesToString(bytes), PanelDevice = panelDevice, PanelUID = panelDevice.UID, PanelName = panelDevice.DottedPresentationNameAndAddress, DeviceTime = TimeParceHelper.ParceDateTime(bytes.GetRange(1, 4)), SystemTime = DateTime.Now, EventCode = FSInternalJournal.EventCode, AdditionalEventCode = FSInternalJournal.AdditionalEventCode }; switch (journalType) { case 0x00: FS2JournalItem.SubsystemType = SubsystemType.Fire; break; case 0x02: FS2JournalItem.SubsystemType = SubsystemType.Guard; break; } MetadataEvent = MetadataHelper.Metadata.events.FirstOrDefault(x => x.rawEventCode == "$" + FSInternalJournal.EventCode.ToString("X2")); if (MetadataHelper.HasDevise(FSInternalJournal.EventCode)) { var intAddress = FSInternalJournal.AddressOnShleif + 256 * FSInternalJournal.ShleifNo; FS2JournalItem.Device = ConfigurationManager.Devices.FirstOrDefault(x => x.IntAddress == intAddress && x.ParentPanel == FS2JournalItem.PanelDevice && !x.Driver.IsGroupDevice); if (FS2JournalItem.Device != null) { FS2JournalItem.DeviceUID = FS2JournalItem.Device.UID; FS2JournalItem.DeviceName = FS2JournalItem.Device.PresentationName + " " + FS2JournalItem.Device.PresentationAddress; if (FSInternalJournal.DeviceType == 1) FS2JournalItem.DeviceName = "АСПТ " + (FSInternalJournal.ShleifNo - 1) + "."; } else { if (FSInternalJournal.DeviceType > 0) { var driverUID = MetadataHelper.GetUidById(FSInternalJournal.DeviceType); if (driverUID != Guid.Empty) { var driver = ConfigurationManager.Drivers.FirstOrDefault(x => x.UID == driverUID); FS2JournalItem.DeviceName = driver.ShortName + " " + FSInternalJournal.ShleifNo + "." + FSInternalJournal.AddressOnShleif; } } } } FS2JournalItem.HasZone = MetadataHelper.HasZone(FSInternalJournal.AdditionalEventCode); InitializeZone(); FS2JournalItem.StateType = GetEventStateType(); FS2JournalItem.Description = GetEventName(); FS2JournalItem.Detalization = GetDetalization(); FS2JournalItem.UserName = GetUserName(); //Initialize_0x80_Event(); if (FS2JournalItem.Description.Contains("Пожарная тревога")) { ; } return FS2JournalItem; }