Beispiel #1
0
        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());
            }
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
        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());
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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();
            }
        }