private void button1_Click(object sender, EventArgs e) { DateTime dt_ = dateTimePicker1.Value.Date.LocalHqToSystemEx(); SyncZone syncZone = (SyncZone)comboBox1.SelectedIndex; TreeContent content = (TreeContent)comboBox3.SelectedIndex; bool loadData_ = checkBox1.Checked; IModesTimeSlice ts = null; if (api_ != null) { ts = api_.GetModesTimeSlice(dt_, syncZone, content, loadData_); IList <IGenObject> list = null; list = ts.GetGenObjectFlatList(); outputBox.Items.Clear(); foreach (IGenObject obj in list) { outputBox.Items.Add(String.Format("Имя: {0}; Наименование: {1}; Тип: {2} \r\n", obj.Name, obj.Description, obj.GenObjType.Name)); } } dataGridView1.Visible = false; outputBox.Visible = true; }
static void Main(string[] args) { bool bNoWait, bCalculatedHalfHourValues; bNoWait = bCalculatedHalfHourValues = false; if (ProcArgs(args, out bNoWait, out g_bList, out bCalculatedHalfHourValues) == true) { return; } else { ; } int iTechsiteInitialized = 0; if (g_bList == false) { Console.WriteLine(Environment.NewLine + "DB PPBR Initializing - Please Wait..."); try { techsite = new MySQLtechsite(bCalculatedHalfHourValues); } catch (Exception e) { Logging.Logg().Exception(e, "MySQLtechsite::MySQLtechsite () - new MySqlConnection (...)", Logging.INDEX_MESSAGE.NOT_SET); itssAUX.PrintErrorMessage(e.Message + Environment.NewLine); iTechsiteInitialized = 1; } if (iTechsiteInitialized == 0) { iTechsiteInitialized = techsite.Initialized; } else { ; } } else { ; } if ((iTechsiteInitialized == 0) || (g_bList == true)) { Console.WriteLine("Modes-Centre API Initializing - Please Wait..." + Environment.NewLine); ModesApiFactory.Initialize(GetNameHostModesCentre()); if (ModesApiFactory.IsInitilized == true) { var bContinue = true; if (bNoWait == false) { ConsoleKeyInfo choice; Console.Write("Continue (Y/N)..."); choice = Console.ReadKey(); //Console.WriteLine(choice.ToString ()); Console.WriteLine(Environment.NewLine); if (!(choice.Key == ConsoleKey.Y)) { bContinue = false; } else { ; } } else { } if (bContinue == true) { IApiExternal api_ = ModesApiFactory.GetModesApi(); LPFI = api_.GetPlanFactors(); DateTime dt = DateTime.Now.Date.LocalHqToSystemEx(); //"Дата начала суток по московскому времени в формате UTC" (из документации) - так по московскому или в UTC? Правильнее - дата-время начала суток в Москве по Гринвичу. //dt = DateTime.Now.Date.ToUniversalTime(); //Вот это реально в UTC, но API выдаёт ошибку - не на начало суток указывает //dt = TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.Date.ToUniversalTime(), TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time")); //Вот это Московское, но API его не принимает - требует в UTC //dt = TimeZoneInfo.ConvertTime(DateTime.Now.Date, TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time")); TimeSpan dtSpan = TimeSpan.Zero; if (g_bList == true) { dtSpan = g_dtList.Date.LocalHqToSystemEx() - dt; } else { ; } Modes.BusinessLogic.IModesTimeSlice ts = api_.GetModesTimeSlice(dt.AddHours(dtSpan.TotalHours), SyncZone.First, TreeContent.PGObjects, true); foreach (Modes.BusinessLogic.IGenObject IGO in ts.GenTree) { Console.WriteLine(IGO.Description + " [" + IGO.GenObjType.Description + "]"); ProcessParams(IGO); ProcessChilds(IGO, 1, api_); } if (g_bList == false) { //А время апдейта (поле wr_date_time) Новосибирское Console.WriteLine(Environment.NewLine + "Время Московское, в т.ч. при записи в БД. В поле wr_date_time - Новосибирское." + Environment.NewLine); techsite.FlushDataToDatabase(); } else { Console.WriteLine(string.Empty); } } else { ; //Пользователь не захотел продолжать } } else { itssAUX.PrintErrorMessage("Ошибка инициализации API Modes-Centre при обращении к сервису."); } } else { //Не инициализировано соединение с БД Статистика if (iTechsiteInitialized > 0) { //Нет соединения с БД (конфигурации или назаначения) } else { switch (iTechsiteInitialized) { case -1: itssAUX.PrintErrorMessage("Ошибка! MySQLtechsite::MySQLtechsite () - список идентификаторов ГТП пуст..."); break; default: break; } } } messageToExit(bNoWait); }
/// <summary> /// Установить соединение с Модес-Центром и подготовить объект соединения к запросам /// </summary> /// <returns>Результат установления соединения и инициализации</returns> protected override bool Connect() { string msgLog = string.Empty; if (m_connectionSettings == null) { return(false); } else { ; } if (m_connectionSettings.GetType().Equals(typeof(string)) == false) { return(false); } else { ; } if (!(((string)m_connectionSettings).Length > 0)) { return(false); } else { ; } bool result = false, bRes = false; try { if (bRes == true) { return(bRes); } else { bRes = true; } } catch (Exception e) { Logging.Logg().Exception(e, "DbMCInterface::Connect ()", Logging.INDEX_MESSAGE.NOT_SET); } lock (lockConnectionSettings) { if (needReconnect == true) // если перед приходом в данную точку повторно были изменены настройки, то подключения со старыми настройками не делаем { return(false); } else { ; } } msgLog = string.Format("Соединение с Modes-Centre ({0})", (string)m_connectionSettings); try { ModesApiFactory.Initialize((string)m_connectionSettings); Logging.Logg().Debug(string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET); } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET); } bRes = result = ModesApiFactory.IsInitilized; if (bRes == true) { // на случай перезагрузки сервера Модес-центр try { m_MCApi = ModesApiFactory.GetModesApi(); m_MCTimeSlice = m_MCApi.GetModesTimeSlice(DateTime.Now.Date.LocalHqToSystemEx(), SyncZone.First, TreeContent.PGObjects, true); m_listPFI = m_MCApi.GetPlanFactors(); m_MCApi.OnData53500Modified += mcApi_OnEventHandler; m_MCApi.OnPlanDataChanged += mcApi_OnEventHandler; m_MCApi.OnMaket53500Changed += mcApi_OnEventHandler; Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"УСПЕХ"), Logging.INDEX_MESSAGE.NOT_SET); } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET); result = false; } } else { Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"ОШИБКА"), Logging.INDEX_MESSAGE.NOT_SET); } return(result); }
protected override bool Connect() { if (!(((string)m_connectionSettings).Length > 0)) { return(false); } else { ; } bool result = false, bRes = false; try { if (bRes == true) { return(bRes); } else { bRes = true; } } catch (Exception e) { Logging.Logg().Exception(e, Logging.INDEX_MESSAGE.NOT_SET, "DbMCInterface::Connect ()"); } lock (lockConnectionSettings) { if (needReconnect == true) // если перед приходом в данную точку повторно были изменены настройки, то подключения со старыми настройками не делаем { return(false); } else { ; } } try { ModesApiFactory.Initialize((string)m_connectionSettings); Logging.Logg().Debug("Соединение с Modes-Centre (" + (string)m_connectionSettings + ")", Logging.INDEX_MESSAGE.NOT_SET); } catch (Exception e) { Logging.Logg().Exception(e, Logging.INDEX_MESSAGE.NOT_SET, "Ошибка соединения с Modes-Centre (" + (string)m_connectionSettings + ")"); } bRes = result = ModesApiFactory.IsInitilized; if (bRes == true) { m_MCApi = ModesApiFactory.GetModesApi(); m_MCTimeSlice = m_MCApi.GetModesTimeSlice(DateTime.Now.Date.LocalHqToSystemEx(), SyncZone.First, TreeContent.PGObjects, true); m_listPFI = m_MCApi.GetPlanFactors(); } else { ; } Logging.Logg().Debug("Соединение с Modes-Centre(" + (string)m_connectionSettings + ") - УСПЕХ", Logging.INDEX_MESSAGE.NOT_SET); return(result); }
public MCServerReader(DateTime date, bool writeNPBR = true) { Logger.Info("Чтение ПБР за " + date.ToString()); Date = date; AutooperData = new List <string>(); Logger.Info("Connect MC"); ProcessedPBRS = new Dictionary <int, MCPBRData>(); try { modesConnect(); SyncZone zone = SyncZone.First; IModesTimeSlice ts = null; ts = api.GetModesTimeSlice(date.Date.LocalHqToSystemEx(), zone , TreeContent.PGObjects /*только оборудование, по которому СО публикует ПГ(включая родителей)*/ , false); bool ok = true; foreach (IGenObject obj in ts.GenTree) { ok = ok && getPlan(obj); } if (ok) { if (ProcessedPBRS.Count != 7) { Logger.Info("Количество ПБР !=7. Отправка в автооператор не производится"); } else { foreach (MCPBRData pbr in ProcessedPBRS.Values) { pbr.CreateData(); pbr.addAutooperData(AutooperData); } Logger.Info("АО кол.строк " + AutooperData.Count); if (AutooperData.Count == 100) { Logger.Info("Отправка в АО кол.строк "); try { sendAutooperData(); Logger.Info("Данный отправлены в АО"); } catch (Exception e) { Logger.Info("Ошибка при отправке данных в АО"); Logger.Info(e.ToString()); } } else { Logger.Info("Неверное количество данных в АО"); } } } //return; if (ok) { Logger.Info("Зaпись ПБР в Базу"); foreach (MCPBRData pbr in ProcessedPBRS.Values) { try { pbr.CreateData(); bool okWrite = false; int i = 0; while (!okWrite && i < 3) { Logger.Info(String.Format("Запись {0} ПБР. Попытка {1}", pbr.Item, i)); okWrite = pbr.ProcessData(); i++; } } catch { Logger.Info("Ошибка при записи ПБР в базу"); } } Logger.Info("Запись номера ПБР"); DateTime ds = DateTime.Now; DateTime de = this.Date.AddDays(1); List <ShadeSelector> sel = new List <ShadeSelector>(); sel.Add(new ShadeSelector() { period = new TimePeriod() { from = new Timestamp() { second = EDSClass.toTS(ds) }, till = new Timestamp() { second = EDSClass.toTS(de) } }, pointId = new PointId() { iess = "NPBR.EDS@CALC" } }); Logger.Info("Удаление номера ПБР"); uint id = EDSClass.Client.requestShadesClear(EDSClass.AuthStr, sel.ToArray()); ok = EDSClass.ProcessQuery(id); if (ok) { List <Shade> shades = new List <Shade>(); List <ShadeValue> vals = new List <ShadeValue>(); vals.Add(new ShadeValue() { period = new TimePeriod() { from = new Timestamp() { second = EDSClass.toTS(ds) }, till = new Timestamp() { second = EDSClass.toTS(de) } }, quality = Quality.QUALITYGOOD, value = new PointValue() { av = NPBR, avSpecified = true } }); shades.Add(new Shade() { pointId = new PointId() { iess = "NPBR.EDS@CALC" }, values = vals.ToArray() }); Logger.Info("Запись данных"); id = EDSClass.Client.requestShadesWrite(EDSClass.AuthStr, shades.ToArray()); ok = EDSClass.ProcessQuery(id); } } } catch (Exception e) { Logger.Info("Ошибка при получении ПБР с сервера MC " + e); } finally { ModesApiFactory.CloseConnection(); } }
/// <summary> /// Установить соединение с Модес-Центром и подготовить объект соединения к запросам /// </summary> /// <returns>Результат установления соединения и инициализации</returns> protected override bool Connect() { string msgLog = string.Empty; if (m_connectionSettings == null) { return(false); } else { ; } if (m_connectionSettings.GetType().Equals(typeof(string)) == false) { return(false); } else { ; } if (!(((string)m_connectionSettings).Length > 0)) { return(false); } else { ; } bool result = false, bRes = false; try { if (bRes == true) { return(bRes); } else { bRes = true; } } catch (Exception e) { Logging.Logg().Exception(e, "DbMCInterface::Connect ()", Logging.INDEX_MESSAGE.NOT_SET); } lock (lockConnectionSettings) { if (IsNeedReconnectNew == true) // если перед приходом в данную точку повторно были изменены настройки, то подключения со старыми настройками не делаем { return(false); } else { ; } } msgLog = string.Format("Соединение с Modes-Centre ({0})", (string)m_connectionSettings); try { ModesApiFactory.Initialize((string)m_connectionSettings); Logging.Logg().Debug(string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET); } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET); } bRes = result = ModesApiFactory.IsInitilized; bool bEventHandler = false; IEnumerable <Delegate /*MethodInfo*/> handlers; if (bRes == true) { // на случай перезагрузки сервера Модес-центр try { m_MCApi = ModesApiFactory.GetModesApi(); m_modesTimeSlice = m_MCApi.GetModesTimeSlice(DateTime.Now.Date.LocalHqToSystemEx(), SyncZone.First, TreeContent.PGObjects, true); m_listPFI = m_MCApi.GetPlanFactors(); #region добавить обработчики для проверки возможности их удаления //m_MCApi.OnClose += mcApi_OnClose; //m_MCApi.OnData53500Modified += new EventHandler<Modes.NetAccess.EventRefreshData53500> (mcApi_OnEventHandler); //m_MCApi.OnMaket53500Changed += mcApi_OnEventHandler; //m_MCApi.OnPlanDataChanged += mcApi_OnEventHandler; #endregion #region Отмена регистрация неуниверсальных обработчиков //List<ParameterInfo> handlerParameters; //handlers = getHandlerExists (m_MCApi); //foreach (Delegate handler in handlers.ToList ()) { // handlerParameters = handler.Method.GetParameters ().ToList(); // if (handlerParameters.Count () == 2) // if (typeof (Modes.NetAccess.EventRefreshData53500).IsAssignableFrom (handlerParameters [1].GetType ()) == true) // m_MCApi.OnData53500Modified -= (EventHandler<Modes.NetAccess.EventRefreshData53500>)handler; // else if (typeof (Modes.NetAccess.EventRefreshJournalMaket53500).IsAssignableFrom (handlerParameters [1].GetType ()) == true) // m_MCApi.OnMaket53500Changed -= (EventHandler<Modes.NetAccess.EventRefreshJournalMaket53500>)handler; // else if (typeof (Modes.NetAccess.EventPlanDataChanged).IsAssignableFrom (handlerParameters [1].GetType ()) == true) // m_MCApi.OnPlanDataChanged -= (EventHandler<Modes.NetAccess.EventPlanDataChanged>)handler; // else // ; // else if (handlerParameters.Count () == 0) // m_MCApi.OnClose -= (EventHandler)handler; // else // ; //} //// проверить //handlers = getHandlerExists (m_MCApi); #endregion #region Отмена регистрации универсального обработчика List <string> eventNames = new List <string> () { "OnClose" , "OnData53500Modified", "OnMaket53500Changed", "OnPlanDataChanged" }; foreach (string eventName in eventNames) { foreach (Delegate handler in getHandlerExists(m_MCApi, eventName)) { switch (eventNames.IndexOf(eventName)) { case 0: m_MCApi.OnClose -= (EventHandler)handler; break; case 1: m_MCApi.OnData53500Modified -= (EventHandler <Modes.NetAccess.EventRefreshData53500>)handler; break; case 2: m_MCApi.OnMaket53500Changed -= (EventHandler <Modes.NetAccess.EventRefreshJournalMaket53500>)handler; break; case 3: m_MCApi.OnPlanDataChanged -= (EventHandler <Modes.NetAccess.EventPlanDataChanged>)handler; break; default: break; } } } // проверить handlers = getHandlerExists(m_MCApi); #endregion m_MCApi.OnClose += mcApi_OnClose; // добавить обработчики в соответствии с конфигурацией if (_jsonEventListener.Count > 0) { foreach (DbMCInterface.EVENT nameEvent in Enum.GetValues(typeof(DbMCInterface.EVENT))) { if (nameEvent == DbMCInterface.EVENT.Unknown) { continue; } else { ; } bEventHandler = bool.Parse(_jsonEventListener.Value <string> (nameEvent.ToString())); delegateMCApiHandler(Tuple.Create <EVENT, bool> (nameEvent, bEventHandler)); if (bEventHandler == true) { switch (nameEvent) { case EVENT.OnData53500Modified: m_MCApi.OnData53500Modified += mcApi_OnEventHandler; break; case EVENT.OnMaket53500Changed: m_MCApi.OnMaket53500Changed += mcApi_OnEventHandler; break; case EVENT.OnPlanDataChanged: m_MCApi.OnPlanDataChanged += mcApi_OnEventHandler; break; case EVENT.OnModesEvent: m_MCApi.OnModesEvent += mcApi_OnModesEvent; break; default: break; } } else { ; } } } else { // нет ни одного правила для (отмены)регистрации события ; } //// проверить //handlers = getHandlerExists (m_MCApi); Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"УСПЕХ"), Logging.INDEX_MESSAGE.NOT_SET); } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET); result = false; } } else { Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"ОШИБКА"), Logging.INDEX_MESSAGE.NOT_SET); } lock (mcApiEventLocked) { delegateMCApiHandler?.Invoke(bRes); } return(result); }
/// <summary> /// Установить соединение с Модес-Центром и подготовить объект соединения к запросам /// </summary> /// <returns>Результат установления соединения и инициализации</returns> protected override bool Connect() { string msgLog = string.Empty; bool result = false , bRes = false; //Task<bool> taskInitialized; CancellationToken cancelTokenInitialized; if (m_connectionSettings == null) { return(false); } else { ; } if (m_connectionSettings.GetType().Equals(typeof(string)) == false) { return(false); } else { ; } if (!(((string)m_connectionSettings).Length > 0)) { return(false); } else { ; } result = bRes = false; //??? 'bRes' не м.б. 'True' try { if (bRes == true) { return(bRes); } else { bRes = true; } } catch (Exception e) { Logging.Logg().Exception(e, "DbMCInterface::Connect ()", Logging.INDEX_MESSAGE.NOT_SET); } lock (lockConnectionSettings) { if (IsNeedReconnectNew == true) // если перед приходом в данную точку повторно были изменены настройки, то подключения со старыми настройками не делаем { return(false); } else { ; } } msgLog = string.Format("Соединение с Modes-Centre ({0})", (string)m_connectionSettings); try { Logging.Logg().Debug(string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET); _cancelTokenSourceInitialized = new CancellationTokenSource(); cancelTokenInitialized = _cancelTokenSourceInitialized.Token; using (Task <bool> taskInitialized = Task <bool> .Factory.StartNew(delegate() { ModesApiFactory.Initialize((string)m_connectionSettings); return(ModesApiFactory.IsInitilized); }, cancelTokenInitialized)) { taskInitialized.Wait(cancelTokenInitialized); bRes = result = taskInitialized.Status == TaskStatus.RanToCompletion ? taskInitialized.Result : false; } _cancelTokenSourceInitialized.Dispose(); _cancelTokenSourceInitialized = null; } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET); } if (bRes == true) { // на случай перезагрузки сервера Модес-центр try { m_iConnectCounter++; m_MCApi = ModesApiFactory.GetModesApi(); m_modesTimeSlice = m_MCApi.GetModesTimeSlice(DateTime.Now.Date.LocalHqToSystemEx(), SyncZone.First, TreeContent.PGObjects, true); m_listPFI = m_MCApi.GetPlanFactors(); result = unregisterHandler(); if (result == true) { result = registerHandler(); } else { ; } if (result == true) { Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"УСПЕХ"), Logging.INDEX_MESSAGE.NOT_SET); } else { Logging.Logg().Error(string.Format(@"{0} - {1}; не выполнена регистрация/отмена регистрации подписчиков на события...", msgLog, @"ОШИБКА"), Logging.INDEX_MESSAGE.NOT_SET); } } catch (Exception e) { Logging.Logg().Exception(e, string.Format(@"{0} - ...", msgLog), Logging.INDEX_MESSAGE.NOT_SET); result = false; } } else { Logging.Logg().Debug(string.Format(@"{0} - {1}...", msgLog, @"ОШИБКА"), Logging.INDEX_MESSAGE.NOT_SET); } lock (mcApiEventLocked) { delegateMCApiHandler?.Invoke(bRes); } return(result); }