public static void runReports(DateTime date) { Logger.Info("статистика за " + date); uint cnt; uint total; if (!EDSClass.Connected) { EDSClass.Connect(); } ReportConfig[] reports = EDSClass.Client.getReportsConfigs(EDSClass.AuthStr, null, 0, 1000, out cnt, out total); Console.WriteLine(reports.Count().ToString()); List <int> idsForRun = new List <int>(); foreach (ReportConfig report in reports) { /*Console.WriteLine(report.id); * Console.WriteLine(report.reportDefinitionFile); * Console.WriteLine(report.inputValues);*/ string file = report.reportDefinitionFile.ToLower(); if (file.Contains("ou17")) { idsForRun.Add((int)report.id); } } foreach (int id in idsForRun) { Logger.Info(String.Format("Выполнение {0}", id)); GlobalReportRequest req = new GlobalReportRequest(); req.reportConfigId = (uint)id; req.dtRef = new Timestamp() { second = EDSClass.toTS(date) }; uint reqId = EDSClass.Client.requestGlobalReport(EDSClass.AuthStr, req); bool ok = EDSClass.ProcessQuery(reqId); Logger.Info(ok.ToString()); } }
public async static void run() { uint cnt; uint total; if (!EDSClass.Connected) { EDSClass.Connect(); } /*TimeDuration zone; * TimeDuration offset = new TimeDuration(); * Timestamp s= EDSClass.Client.getServerTime(EDSClass.AuthStr, out zone, out offset); * * Console.WriteLine(EDSClass.fromTS(zone.seconds)); * Console.WriteLine(EDSClass.fromTS(offset.seconds)); * Console.Write(EDSClass.fromTS(s.second)); * return;*/ Dictionary <DateTime, int> data = new Dictionary <DateTime, int>(); DateTime dateStart = DateTime.Parse("01.06.2018 00:00:00"); DateTime dateEnd = DateTime.Parse("01.09.2018 00:00:00"); DateTime date = dateStart.AddHours(0); DateTime dateSet = DateTime.MinValue; bool prevVal = false; while (date <= dateEnd) { EDSClass.Connect(); TabularRequest req = new TabularRequest(); List <TabularRequestItem> items = new List <TabularRequestItem>(); items.Add(new TabularRequestItem() { function = "VALUE", pointId = new PointId() { iess = "04VT_AM01P-47.MCR@GRARM" } }); req.items = items.ToArray(); req.period = new TimePeriod() { from = new Timestamp() { second = EDSClass.toTS(date) }, till = new Timestamp() { second = EDSClass.toTS(date.AddHours(24)) } }; req.step = new TimeDuration() { seconds = 1 }; uint id = EDSClass.Client.requestTabular(EDSClass.AuthStr, req); EDSClass.ProcessQuery(id); TabularRow[] rows; getTabularRequest request = new getTabularRequest() { authString = EDSClass.AuthStr, requestId = id }; getTabularResponse resp = await EDSClass.Client.getTabularAsync(request); foreach (TabularRow row in resp.rows) { DateTime dt = EDSClass.fromTS(row.ts.second); TabularValue tv = row.values[0]; if (tv.quality != Quality.QUALITYGOOD) { continue; } int val = 0; if (tv.value.ipvSpecified) { val = (int)tv.value.ipv.Value; } if (tv.value.pvSpecified) { val = (int)tv.value.pv.Value; } string bin = Convert.ToString(val, 2); bool on = false; if (bin.Length >= 3 && bin[bin.Length - 3] == '1') { on = true; } if (!prevVal && on) { dateSet = dt.AddHours(0); data.Add(dt, 0); } if (on) { data[dateSet]++; } prevVal = on; /*string str = string.Format("{0}: {1} {2}", date, bin, on); * Console.WriteLine(str);*/ } date = date.AddHours(24); Console.WriteLine(date); EDSClass.Disconnect(); } foreach (KeyValuePair <DateTime, int> de in data) { Console.WriteLine(string.Format("{0}:\t{1}:{2}", de.Key, de.Value / 60, de.Value % 60)); } }
public void readDataFromDB(DateTime dateStart, DateTime dateEnd) { List <ShadeSelector> sel = new List <ShadeSelector>(); List <Shade> shades = new List <Shade>(); List <ShadeValue> vals = new List <ShadeValue>(); List <DateTime> dates = new List <DateTime>(); DateTime dt = dateStart.AddMinutes(30); while (dt <= dateEnd) { dates.Add(dt); dt = dt.AddMinutes(30); } try { foreach (AISPointInfo point in AISPoints) { SqlConnection con = getConnection(point.DBName); con.Open(); string comSTR = ""; comSTR = String.Format("SELECT DATA_DATE,VALUE0 FROM DATA WHERE OBJECT={0} AND OBJTYPE={1} AND ITEM={2} AND PARNUMBER=12 AND DATA_DATE>'{3}' AND DATA_DATE<='{4}'", point.Obj, point.ObjType, point.Item, dateStart.ToString(DateFormat), dateEnd.ToString(DateFormat)); SqlCommand command = new SqlCommand(comSTR, con); SqlDataReader reader = command.ExecuteReader(); List <DateTime> fillDates = new List <DateTime>(); while (reader.Read()) { DateTime date = reader.GetDateTime(0); double val = reader.GetDouble(1); try { vals.Add(new ShadeValue() { period = new TimePeriod() { from = new Timestamp() { second = EDSClass.toTS(date.AddHours(2).AddMinutes(-30)) }, till = new Timestamp() { second = EDSClass.toTS(date.AddHours(2)) } }, quality = Quality.QUALITYGOOD, value = new PointValue() { av = (float)val, avSpecified = true } }); fillDates.Add(date); } catch { } } foreach (DateTime emptyDT in dates) { if (!fillDates.Contains(emptyDT)) { try { vals.Add(new ShadeValue() { period = new TimePeriod() { from = new Timestamp() { second = EDSClass.toTS(emptyDT.AddHours(2).AddMinutes(-30)) }, till = new Timestamp() { second = EDSClass.toTS(emptyDT.AddHours(2)) } }, quality = Quality.QUALITYBAD, value = new PointValue() { av = (float)0, avSpecified = true } }); } catch { } } } reader.Close(); con.Close(); if (vals.Count == 0) { continue; } sel.Add(new ShadeSelector() { period = new TimePeriod() { from = new Timestamp() { second = EDSClass.toTS(dateStart.AddHours(2).AddMinutes(30)) }, till = new Timestamp() { second = EDSClass.toTS(dateEnd.AddHours(2).AddMinutes(-30)) } }, pointId = new PointId() { iess = point.EDSPoint } }); shades.Add(new Shade() { pointId = new PointId() { iess = point.EDSPoint }, values = vals.ToArray() }); } if (!EDSClass.Connected) { EDSClass.Connect(); } Logger.Info(String.Format("Удаление записей по точке {0} - {1} ", dateStart.ToString("dd.MM.yyyy HH:mm"), dateEnd.ToString("dd.MM.yyyy HH:mm"))); uint id = EDSClass.Client.requestShadesClear(EDSClass.AuthStr, sel.ToArray()); bool ok = EDSClass.ProcessQuery(id); Logger.Info(String.Format("Записьданных по точке {0} - {1} ", dateStart.ToString("dd.MM.yyyy HH:mm"), dateEnd.ToString("dd.MM.yyyy HH:mm"))); id = EDSClass.Client.requestShadesWrite(EDSClass.AuthStr, shades.ToArray()); ok = EDSClass.ProcessQuery(id); }catch (Exception e) { Logger.Info("ошибка обработки: " + e.ToString()); } }
public bool writeToEDS(string pointName, SortedList <DateTime, double> data, bool data15, bool datamin) { bool ok = false; try { //SortedList<DateTime, double> data15 = createHH15Data(); if (!EDSClass.Connected) { EDSClass.Connect(); } List <ShadeSelector> sel = new List <ShadeSelector>(); sel.Add(new ShadeSelector() { period = new TimePeriod() { from = new Timestamp() { second = EDSClass.toTS(data.Keys.First().AddHours(2)) }, till = new Timestamp() { second = EDSClass.toTS(data.Keys.Last().AddHours(2)) } }, pointId = new PointId() { iess = pointName } }); 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>(); if (data15) { foreach (KeyValuePair <DateTime, double> de in data) { DateTime d = de.Key.AddMinutes(0); DateTime dEnd = de.Key.AddMinutes(30); //dEnd = dEnd > data.Last().Key ? data.Last().Key : dEnd; while (d < dEnd) { vals.Add(new ShadeValue() { period = new TimePeriod() { from = new Timestamp() { second = EDSClass.toTS(d.AddHours(2)) }, till = new Timestamp() { second = EDSClass.toTS(d.AddHours(2).AddMinutes(1)) } }, quality = Quality.QUALITYGOOD, value = new PointValue() { av = (float)de.Value, avSpecified = true } }); d = d.AddMinutes(1); } } ; } else if (datamin) { foreach (KeyValuePair <DateTime, double> de in data) { vals.Add(new ShadeValue() { period = new TimePeriod() { from = new Timestamp() { second = EDSClass.toTS(de.Key.AddHours(2)) }, till = new Timestamp() { second = EDSClass.toTS(de.Key.AddHours(2).AddMinutes(1)) } }, quality = Quality.QUALITYGOOD, value = new PointValue() { av = (float)de.Value, avSpecified = true } }); } ; } else { double sum = 0; foreach (KeyValuePair <DateTime, double> de in data) { DateTime d = de.Key.AddMinutes(0); sum += de.Value / 60; vals.Add(new ShadeValue() { period = new TimePeriod() { from = new Timestamp() { second = EDSClass.toTS(d.AddHours(2)) }, till = new Timestamp() { second = EDSClass.toTS(d.AddHours(2).AddMinutes(1)) - 1 } }, quality = Quality.QUALITYGOOD, value = new PointValue() { av = (float)sum, avSpecified = true } }); d = d.AddMinutes(1); } ; } shades.Add(new Shade() { pointId = new PointId() { iess = pointName }, values = vals.ToArray() }); Logger.Info("Запись данных"); id = EDSClass.Client.requestShadesWrite(EDSClass.AuthStr, shades.ToArray()); ok = EDSClass.ProcessQuery(id); } } catch (Exception e) { Logger.Info("Ошибка при записи ПБР в EDS " + e.ToString()); ok = false; } return(ok); }
public static async Task <bool> PBRExport() { Settings.init("Data/Settings.xml"); Logger.InitFileLogger(Settings.Single.LogPath, "pbrExport"); string folderName = @"C:\EDSPBRReports"; DirectoryInfo di = new DirectoryInfo(folderName); FileInfo[] filesArr = di.GetFiles(); SortedList <DateTime, FileInfo> files = new SortedList <DateTime, FileInfo>(); foreach (FileInfo fi in filesArr) { files.Add(fi.CreationTime, fi); } foreach (FileInfo fi in files.Values) { GRARMPBRData PBR_gtp1 = new GRARMPBRData("PBR_GTP1.EDS@CALC", "GRARM_PBR_GTP1_SMOOTH.EDS@CALC", false); GRARMPBRData PBR_gtp2 = new GRARMPBRData("PBR_GTP2.EDS@CALC", "GRARM_PBR_GTP2_SMOOTH.EDS@CALC", false); GRARMPBRData PBR_ges = new GRARMPBRData("PBR_GES.EDS@CALC", "GRARM_PBR_GES_SMOOTH.EDS@CALC", true); PBR_ges.IntegratedEDSPoint = "GRARM_PBR_GES_VYR_PLAN.EDS@CALC"; StreamReader sr = new StreamReader(fi.FullName); String text = sr.ReadToEnd(); string[] lines = text.Split(new char[] { '\n' }); foreach (string line in lines) { try { string[] vals = line.Split(';'); DateTime dt = DateTime.Parse(vals[0]); double valGTP1 = double.Parse(vals[2]); double valGTP2 = double.Parse(vals[4]); double valGES = double.Parse(vals[6]); PBR_ges.AddValue(dt, valGES); PBR_gtp1.AddValue(dt, valGTP1); PBR_gtp2.AddValue(dt, valGTP2); Console.WriteLine(String.Format("{0} {1} {2} {3}", dt, valGTP1, valGTP2, valGES)); } catch { Logger.Info("Ошибка в формате"); } } bool ok = true; PBR_ges.CreateData(); ok = ok && PBR_ges.ProcessData(); PBR_gtp1.CreateData(); ok = ok && PBR_gtp1.ProcessData(); PBR_gtp2.CreateData(); ok = ok && PBR_gtp2.ProcessData(); if (ok) { Logger.Info("Запись номера ПБР"); DateTime ds = DateTime.Now; DateTime de = ds.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 = "GRARM_PBR_IND.EDS@CALC" } }); Logger.Info("Удаление номера ПБР"); uint id = EDSClass.Client.requestShadesClear(EDSClass.AuthStr, sel.ToArray()); ok = EDSClass.ProcessQuery(id); string dt = ds.ToString("HHmm"); long NPBR = long.Parse(dt); 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 = "GRARM_PBR_IND.EDS@CALC" }, values = vals.ToArray() }); Logger.Info("Запись данных"); id = EDSClass.Client.requestShadesWrite(EDSClass.AuthStr, shades.ToArray()); ok = EDSClass.ProcessQuery(id); } } try { sr.Close(); fi.Delete(); } catch { } } return(true); }
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(); } }