Ejemplo n.º 1
0
        public SortedList <DateTime, PumpDataRecord> ReadDataPump(PumpTypeEnum type, int powerStart, int powerStop)
        {
            SqlConnection con = ReportOutputFile.getConnection();

            string query = String.Format("Select * from pumpTable where dateStart>='{0}' and dateEnd<='{1}' and isUst=1 and pAvg>={2} and pAvg<={3} and PumpType='{4}' order by dateStart",
                                         StartDate.ToString(DateFormat), EndDate.ToString(DateFormat), powerStart, powerStop, type.ToString());

            SqlCommand com = con.CreateCommand();

            com.CommandText = query;

            SortedList <DateTime, PumpDataRecord> Data = new SortedList <DateTime, PumpDataRecord>();
            SqlDataReader reader = com.ExecuteReader();

            while (reader.Read())
            {
                PumpDataRecord rec = new PumpDataRecord();

                rec.DateStart  = reader.GetDateTime(reader.GetOrdinal("DateStart"));
                rec.DateEnd    = reader.GetDateTime(reader.GetOrdinal("DateEnd"));
                rec.IsUst      = reader.GetBoolean(reader.GetOrdinal("IsUst"));
                rec.PumpNum    = reader.GetInt32(reader.GetOrdinal("PumpNum"));
                rec.RunTime    = reader.GetDouble(reader.GetOrdinal("RunTime"));
                rec.LevelStart = reader.GetDouble(reader.GetOrdinal("LevelStart"));
                rec.LevelStop  = reader.GetDouble(reader.GetOrdinal("LevelStop"));
                rec.PAvg       = reader.GetDouble(reader.GetOrdinal("PAvg"));
                rec.PMin       = reader.GetDouble(reader.GetOrdinal("PMin"));
                rec.PMax       = reader.GetDouble(reader.GetOrdinal("PMax"));
                string tp = reader.GetString(reader.GetOrdinal("PumpType"));
                rec.PumpType = (PumpTypeEnum)Enum.Parse(typeof(PumpTypeEnum), tp);
                Data.Add(rec.DateStart, rec);
            }
            return(Data);
        }
Ejemplo n.º 2
0
        public void createPumpPuskChart(ChartZedControl chart, PumpTypeEnum type, SortedList <DateTime, SvodDataRecord> Data, SortedList <DateTime, double> DataRun, bool time)
        {
            int ind = 0;

            chart.init();
            List <int> powers = new List <int>();

            if (Data.Count > 0)
            {
                SortedList <DateTime, double> data  = new SortedList <DateTime, double>();
                System.Drawing.Color          color = ChartZedSerie.NextColor();
                foreach (KeyValuePair <DateTime, SvodDataRecord> de in Data)
                {
                    double val = 0;
                    switch (type)
                    {
                    case PumpTypeEnum.Drenage:
                        val = time ? de.Value.DN1Time + de.Value.DN2Time : de.Value.DN1Pusk + de.Value.DN2Pusk;
                        break;

                    case PumpTypeEnum.Leakage:
                        val = time ? de.Value.LN1Time + de.Value.LN2Time : de.Value.LN1Pusk + de.Value.LN2Pusk;
                        break;

                    case PumpTypeEnum.MNU:
                        val = time ? de.Value.MNU1Time + de.Value.MNU2Time + de.Value.MNU3Time : de.Value.MNU1Pusk + de.Value.MNU2Pusk + de.Value.MNU3Pusk;
                        break;
                    }
                    data.Add(de.Key, val);
                }
                chart.AddSerie(String.Format("{0}", time ? "Работа (ceк)" : "Пусков"), data, color, true, true, 0);
            }

            if (DataRun.Count > 0)
            {
                System.Drawing.Color color = ChartZedSerie.NextColor();
                chart.AddSerie(String.Format("Работа ГГ"), DataRun, color, true, true);
            }
        }
Ejemplo n.º 3
0
        public bool ReadData()
        {
            Data = new SortedList <DateTime, SvodDataRecord>();
            PumpTypeEnum     type    = PumpTypeEnum.Drenage;
            ReportOutputFile outFile = new ReportOutputFile(FileName);

            try {
                outFile.ReadData();
            } catch (Exception e) {
                Logger.Info("Ошибка инициализации файла " + FileName);
                Logger.Info(e.ToString());
                return(false);
            }



            for (int i = 2; i < outFile.Data.Count; i++)
            {
                try {
                    Dictionary <int, string> fileRec = outFile.Data[i];
                    SvodDataRecord           rec     = new SvodDataRecord();
                    rec.DateStart = ReportOutputFile.getDate(fileRec[0]);
                    rec.DateEnd   = ReportOutputFile.getDate(fileRec[1]);
                    rec.PMin      = ReportOutputFile.getDouble(fileRec[2]);
                    rec.PMax      = ReportOutputFile.getDouble(fileRec[3]);
                    rec.PAvg      = ReportOutputFile.getDouble(fileRec[4]);

                    rec.LN1Time  = ReportOutputFile.getDouble(fileRec[5]);
                    rec.LN2Time  = ReportOutputFile.getDouble(fileRec[6]);
                    rec.DN1Time  = ReportOutputFile.getDouble(fileRec[7]);
                    rec.DN2Time  = ReportOutputFile.getDouble(fileRec[8]);
                    rec.MNU1Time = ReportOutputFile.getDouble(fileRec[9]);
                    rec.MNU2Time = ReportOutputFile.getDouble(fileRec[10]);
                    rec.MNU3Time = ReportOutputFile.getDouble(fileRec[11]);

                    rec.LN1Pusk  = (int)ReportOutputFile.getDouble(fileRec[12]);
                    rec.LN2Pusk  = (int)ReportOutputFile.getDouble(fileRec[13]);
                    rec.DN1Pusk  = (int)ReportOutputFile.getDouble(fileRec[14]);
                    rec.DN2Pusk  = (int)ReportOutputFile.getDouble(fileRec[15]);
                    rec.MNU1Pusk = (int)ReportOutputFile.getDouble(fileRec[16]);
                    rec.MNU2Pusk = (int)ReportOutputFile.getDouble(fileRec[17]);
                    rec.MNU3Pusk = (int)ReportOutputFile.getDouble(fileRec[18]);

                    rec.GPHot   = ReportOutputFile.getDouble(fileRec[19]);
                    rec.GPCold  = ReportOutputFile.getDouble(fileRec[20]);
                    rec.GPLevel = ReportOutputFile.getDouble(fileRec[21]);


                    rec.PPHot   = ReportOutputFile.getDouble(fileRec[22]);
                    rec.PPCold  = ReportOutputFile.getDouble(fileRec[23]);
                    rec.PPLevel = ReportOutputFile.getDouble(fileRec[24]);

                    double GPLevelMin = ReportOutputFile.getDouble(fileRec[25]);
                    double PPLevelMin = ReportOutputFile.getDouble(fileRec[26]);
                    double GPLevelMax = ReportOutputFile.getDouble(fileRec[27]);
                    double PPLevelMax = ReportOutputFile.getDouble(fileRec[28]);

                    double gpHotMin  = ReportOutputFile.getDouble(fileRec[29]);
                    double gpColdMin = ReportOutputFile.getDouble(fileRec[30]);
                    double gpHotMax  = ReportOutputFile.getDouble(fileRec[31]);
                    double gpColdMax = ReportOutputFile.getDouble(fileRec[32]);

                    double ppHotMin  = ReportOutputFile.getDouble(fileRec[33]);
                    double ppColdMin = ReportOutputFile.getDouble(fileRec[34]);
                    double ppHotMax  = ReportOutputFile.getDouble(fileRec[35]);
                    double ppColdMax = ReportOutputFile.getDouble(fileRec[36]);

                    double gpOhlAvg = ReportOutputFile.getDouble(fileRec[37]);
                    double gpOhlMin = ReportOutputFile.getDouble(fileRec[38]);
                    double gpOhlMax = ReportOutputFile.getDouble(fileRec[39]);

                    double ppOhlAvg1 = ReportOutputFile.getDouble(fileRec[40]);
                    double ppOhlMin1 = ReportOutputFile.getDouble(fileRec[41]);
                    double ppOhlMax1 = ReportOutputFile.getDouble(fileRec[42]);

                    double ppOhlAvg2 = ReportOutputFile.getDouble(fileRec[43]);
                    double ppOhlMin2 = ReportOutputFile.getDouble(fileRec[44]);
                    double ppOhlMax2 = ReportOutputFile.getDouble(fileRec[45]);


                    rec.GPOhlRashod = gpOhlAvg;
                    rec.PPOhlRashod = ppOhlAvg1 + ppOhlAvg2;


                    rec.IsUst = IsUst(rec.PMin, rec.PMax, rec.PAvg, 2);

                    rec.IsUstGP = IsUst(GPLevelMin, GPLevelMax, rec.GPLevel, 3);
                    rec.IsUstGP = rec.IsUstGP && IsUst(gpHotMin, gpHotMax, rec.GPHot, 3);
                    rec.IsUstGP = rec.IsUstGP && IsUst(gpColdMin, gpColdMax, rec.GPCold, 3);

                    rec.IsUstPP = IsUst(PPLevelMin, PPLevelMax, rec.PPLevel, 3);
                    rec.IsUstPP = rec.IsUstPP && IsUst(ppHotMin, ppHotMax, rec.PPHot, 3);
                    rec.IsUstPP = rec.IsUstPP && IsUst(ppColdMin, ppColdMax, rec.PPCold, 3);

                    rec.IsUstGPOhl = IsUst(gpOhlMin, gpOhlMax, gpOhlAvg, 5);
                    rec.IsUstPPOhl = IsUst(ppOhlMin1, ppOhlMax1, ppOhlAvg1, 5) && IsUst(ppOhlMin2, ppOhlMax2, ppOhlAvg2, 5);


                    while (Data.ContainsKey(rec.DateStart))
                    {
                        rec.DateStart = rec.DateStart.AddMilliseconds(1);
                    }
                    Data.Add(rec.DateStart, rec);
                } catch (Exception e) {
                    Logger.Info("ошибка при разборе строки");
                    Logger.Info(e.ToString());
                    return(false);
                }
            }
            return(true);
        }
Ejemplo n.º 4
0
 public PumpState(PumpTypeEnum type, int no, PumpStateEnum state)
 {
     this.PumpTypeEnum  = type;
     this.PumpNO        = no;
     this.PumpStateEnum = state;
 }
Ejemplo n.º 5
0
        public bool ReadData()
        {
            Data = new SortedList <DateTime, PumpDataRecord>();
            PumpTypeEnum     type       = PumpTypeEnum.Drenage;
            int              pumpNumber = 0;
            ReportOutputFile outFile    = new ReportOutputFile(FileName);

            try {
                outFile.ReadData();
                FileInfo fi = new FileInfo(FileName);
                if (fi.Name.Contains("DN_"))
                {
                    type = PumpTypeEnum.Drenage;
                }
                else if (fi.Name.Contains("MNU_"))
                {
                    type = PumpTypeEnum.MNU;
                }
                else if (fi.Name.Contains("LN_"))
                {
                    type = PumpTypeEnum.Leakage;
                }
                else
                {
                    Logger.Info("Не определен тип насоса в файле " + FileName);
                    return(false);
                }
                switch (type)
                {
                case PumpTypeEnum.Drenage:
                    pumpNumber = (int)ReportOutputFile.getDouble(outFile.Data[0][3]);
                    break;

                case PumpTypeEnum.Leakage:
                    pumpNumber = (int)ReportOutputFile.getDouble(outFile.Data[0][3]);
                    break;

                case PumpTypeEnum.MNU:
                    pumpNumber = (int)ReportOutputFile.getDouble(outFile.Data[0][4]);
                    break;
                }
                if (pumpNumber < 0)
                {
                    Logger.Info("pumpNumber=" + pumpNumber);
                }
            }catch (Exception e) {
                Logger.Info("Ошибка инициализации файла " + FileName);
                Logger.Info(e.ToString());
                return(false);
            }

            for (int i = 2; i < outFile.Data.Count; i++)
            {
                try {
                    Dictionary <int, string> fileRec = outFile.Data[i];
                    PumpDataRecord           rec     = new PumpDataRecord();
                    rec.DateStart  = ReportOutputFile.getDate(fileRec[0]);
                    rec.DateEnd    = ReportOutputFile.getDate(fileRec[1]);
                    rec.PAvg       = ReportOutputFile.getDouble(fileRec[2]);
                    rec.PMin       = ReportOutputFile.getDouble(fileRec[3]);
                    rec.PMax       = ReportOutputFile.getDouble(fileRec[4]);
                    rec.RunTime    = ReportOutputFile.getDouble(fileRec[5]);
                    rec.LevelStart = ReportOutputFile.getDouble(fileRec[6]);
                    rec.LevelStop  = ReportOutputFile.getDouble(fileRec[7]);
                    rec.PumpType   = type;
                    rec.PumpNum    = pumpNumber;
                    double diff = rec.PAvg / 100 * 2;
                    rec.IsUst = Math.Abs(rec.PAvg - rec.PMax) <= diff;
                    rec.IsUst = rec.IsUst && Math.Abs(rec.PAvg - rec.PMin) <= diff;
                    while (Data.ContainsKey(rec.DateStart))
                    {
                        rec.DateStart = rec.DateStart.AddMilliseconds(1);
                    }
                    Data.Add(rec.DateStart, rec);
                }catch (Exception e) {
                    Logger.Info("ошибка при разборе строки");
                    Logger.Info(e.ToString());
                    return(false);
                }
            }
            return(true);
        }
Ejemplo n.º 6
0
        public void createPumpRunChart(ChartZedControl chart, PumpTypeEnum type, bool split, int splitPower)
        {
            int             ind    = 0;
            PumpDiagnostics report = new PumpDiagnostics(clndFrom.SelectedDate.Value, clndTo.SelectedDate.Value);
            SortedList <DateTime, PumpDataRecord> Data = new SortedList <DateTime, PumpDataRecord>();

            chart.init();

            List <int> powers = new List <int>();

            if (split)
            {
                powers.Add(-1);
                int power = 35;
                while (power <= 115)
                {
                    powers.Add(power);
                    power += splitPower;
                }
            }
            else
            {
                splitPower = 200;
                powers.Add(-1);
            }
            SortedList <DateTime, double> dataLStart = new SortedList <DateTime, double>();
            SortedList <DateTime, double> dataLStop  = new SortedList <DateTime, double>();

            foreach (int p in powers)
            {
                string header = "";
                if (!split)
                {
                    Data   = report.ReadDataPump(type, -1, 200);
                    header = "Время работы насосов";
                }
                else
                {
                    if (p == -1)
                    {
                        Data   = report.ReadDataPump(type, -1, 0);
                        header = "Простой";
                    }
                    else
                    {
                        Data   = report.ReadDataPump(type, p, p + splitPower);
                        header = String.Format("Работа при P {0}-{1}", p, p + splitPower);
                    }
                }


                if (Data.Count > 1)
                {
                    System.Drawing.Color color = ChartZedSerie.NextColor();

                    SortedList <DateTime, double> data = new SortedList <DateTime, double>();

                    foreach (KeyValuePair <DateTime, PumpDataRecord> de in Data)
                    {
                        data.Add(de.Key, de.Value.RunTime);
                        dataLStart.Add(de.Key, de.Value.LevelStart);
                        dataLStop.Add(de.Key, de.Value.LevelStop);
                    }

                    chart.AddSerie(header, data, color, false, true);

                    SortedList <DateTime, double> appr = report.Approx(data);

                    ChartZedSerie ser = chart.AddSerie(header, appr, color, true, false, -1, false);
                }
            }
            chart.AddSerie("LStart", dataLStart, ChartZedSerie.NextColor(), true, false, 0);
            chart.AddSerie("LStop", dataLStop, ChartZedSerie.NextColor(), true, false, 0);
        }