Ejemplo n.º 1
0
        /// <summary>
        /// Calcular Resultados Precipitacion
        /// </summary>
        /// <param name="SigpiDao"></param>
        /// <param name="sTablaConsolidados"></param>
        /// <param name="sTablaLecturas"></param>
        /// <param name="FechaCalculos"></param>
        /// <returns></returns>
        public bool CalcularResultadosPrecipitacion(SIGPIDao SigpiDao, string sTablaConsolidados,
                                                    string sTablaLecturas, DateTime FechaCalculos,
                                                    int numDias)
        {
            string sSQL = "DELETE FROM " + sTablaConsolidados;

            try
            {
                SigpiDao.EjecutarSentenciaSinQuery(sSQL);
            }
            catch (Exception e)
            {
                // throw new Exception(e.Message + sSQL);
            }
            DateTime FechaCalculosInicial = FechaCalculos.AddDays(-1 * (numDias - 1));

            //sSQL = "SELECT CODIGO,LECTURA,FECHA From " + sTablaLecturas +
            //        " WHERE FECHA <=#" + FechaCalculos.ToString("MM/dd/yyyy") + "#" +
            //        " AND FECHA >=#" + FechaCalculosInicial.ToString("MM/dd/yyyy") + "#" +
            //        " ORDER BY CODIGO,FECHA";

            sSQL = "SELECT CODIGO,LECTURA,FECHA From " + sTablaLecturas +
                   " WHERE FECHA <= ? AND FECHA >= ? ORDER BY CODIGO,FECHA";

            OleDbCommand command = SigpiDao.LocalDBConnection.CreateCommand();

            command.CommandText = sSQL;
            OleDbParameter paramFechaCalculos        = command.CreateParameter();
            OleDbParameter paramFechaCalculosInicial = command.CreateParameter();

            command.Parameters.Add(paramFechaCalculos);
            command.Parameters.Add(paramFechaCalculosInicial);
            paramFechaCalculos.Value        = FechaCalculos;
            paramFechaCalculosInicial.Value = FechaCalculosInicial;
            OleDbDataReader dataReader = null;

            try
            {
                dataReader = command.ExecuteReader();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message + " :: " + sSQL);
            }

            Lectura                lectura;
            List <Lectura>         lecturas = new List <Lectura>();
            int                    dCodigo;
            int                    i = 0;
            PrecipitacionProcesada precipitacionProcesada = new PrecipitacionProcesada();
            double                 dAcumuladoPrecipitacion;
            int                    iNumeroDiasSinLluvia, iNumeroLecturasConsecutivas, iAmenazaXDiaSinLluvia;

            dAcumuladoPrecipitacion = 0;
            iNumeroDiasSinLluvia    = 0;
            dCodigo = -1;

            OleDbCommand command2 = SigpiDao.LocalDBConnection.CreateCommand();

            sSQL = "INSERT INTO " + sTablaConsolidados + " VALUES (?,?,?,?,?,?,?)";
            command2.CommandText = sSQL;
            OleDbParameter paramCodigo      = command2.CreateParameter();
            OleDbParameter paramP5          = command2.CreateParameter();
            OleDbParameter paramDSLL5       = command2.CreateParameter();
            OleDbParameter paramDSLLC5      = command2.CreateParameter();
            OleDbParameter paramFecha       = command2.CreateParameter();
            OleDbParameter paramNoDias      = command2.CreateParameter();
            OleDbParameter paramAmenazaXDSL = command2.CreateParameter();

            command2.Parameters.Add(paramCodigo);
            command2.Parameters.Add(paramP5);
            command2.Parameters.Add(paramDSLL5);
            command2.Parameters.Add(paramDSLLC5);
            command2.Parameters.Add(paramFecha);
            command2.Parameters.Add(paramNoDias);
            command2.Parameters.Add(paramAmenazaXDSL);

            paramFecha.Value = FechaCalculos;


            while (dataReader.Read())
            {
                lectura = new Lectura();
                if (i == 0)
                {
                    dCodigo = dataReader.GetInt32(0);
                }
                else
                {
                    if (dCodigo != dataReader.GetInt32(0))
                    {
                        foreach (Lectura lect in lecturas)
                        {
                            if (lect.Valor <= 0.5)
                            {
                                iNumeroDiasSinLluvia++;
                            }
                            //if (lect.Valor < 2)
                            //{
                            //  iAmenazaXDiaSinLluvia = 5;
                            //}
                        }
                        iNumeroLecturasConsecutivas         = LecturasConsecutivas(lecturas);
                        iAmenazaXDiaSinLluvia               = AmenazasXLluvia(lecturas);
                        precipitacionProcesada.Codigo       = System.Convert.ToInt32(dCodigo);
                        precipitacionProcesada.P5           = dAcumuladoPrecipitacion;
                        precipitacionProcesada.DSLL5        = iNumeroDiasSinLluvia;
                        precipitacionProcesada.DSLLC5       = iNumeroLecturasConsecutivas;
                        precipitacionProcesada.FEC_UL_LECTU = lecturas[0].Fecha;

                        paramCodigo.Value      = precipitacionProcesada.Codigo;
                        paramP5.Value          = dAcumuladoPrecipitacion;
                        paramDSLL5.Value       = precipitacionProcesada.DSLL5;
                        paramDSLLC5.Value      = precipitacionProcesada.DSLLC5;
                        paramNoDias.Value      = numDias;
                        paramAmenazaXDSL.Value = iAmenazaXDiaSinLluvia;
                        try
                        {
                            command2.ExecuteNonQuery();
                        }
                        catch (Exception e)
                        {
                            throw new Exception(e.Message + " :: " + command2.CommandText);
                        }
                        dCodigo = dataReader.GetInt32(0);
                        dAcumuladoPrecipitacion     = 0;
                        iNumeroLecturasConsecutivas = 0;
                        iNumeroDiasSinLluvia        = 0;
                        lecturas = new List <Lectura>();
                        i        = 0;
                    }
                }
                lectura                  = new Lectura();
                lectura.Codigo           = System.Convert.ToInt32(dataReader.GetInt32(0));
                lectura.Valor            = dataReader.GetDouble(1);
                dAcumuladoPrecipitacion += lectura.Valor;
                lectura.Fecha            = dataReader.GetDateTime(2);
                lecturas.Add(lectura);
                i++;
            }
            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="sigpiDao"></param>
        /// <param name="ColumnaCodigo"></param>
        /// <param name="ColumnaLectura"></param>
        /// <param name="min"></param>
        /// <param name="max"></param>
        /// <returns></returns>
        public List <Lectura> ObtenerLecturas(Worksheet sheet, SIGPIDao sigpiDao,
                                              string ColumnaCodigo, string ColumnaLectura,
                                              double min, double max)
        {
            int iLimite, i;

            iLimite = 0;
            List <Lectura> lista = new List <Lectura>();

            Lectura lectura; // = new Lectura();
            object  objCodigo, objLectura;

            i = 1;
            OleDbConnection conn = sigpiDao.LocalDBConnection;
            //OleDbCommand command = new OleDbCommand();
            //command.Connection = conn;
            int    iNumRegistros;
            double dLectura;
            double dX, dY;

            OleDbDataReader reader = sigpiDao.EjecutarSentenciaLectura("SELECT codigo, longitud, latitud FROM ESTACIONES");
            Dictionary <Int32, EstacionIdeam> dictEstaciones = new Dictionary <Int32, EstacionIdeam>();

            while (reader.Read())
            {
                EstacionIdeam estacion = new EstacionIdeam(reader.GetInt32(0), reader.GetDouble(1), reader.GetDouble(2));
                if (!dictEstaciones.ContainsKey(estacion.Codigo))
                {
                    dictEstaciones.Add(estacion.Codigo, estacion);
                }
            }

            while (iLimite < 100)
            {
                objCodigo = sheet.get_Range(ColumnaCodigo + i.ToString(), ColumnaCodigo + i.ToString()).Value2;
                if (isNumeric(objCodigo))
                {
                    //command.CommandText = "select count(*) from estaciones where codigo = " + objCodigo.ToString();
                    //iNumRegistros = (Int32)command.ExecuteScalar();
                    //if (iNumRegistros != 0)
                    //{
                    objLectura = sheet.get_Range(ColumnaLectura + i.ToString(), ColumnaLectura + i.ToString()).Value2;
                    if (isNumeric(objLectura))
                    {
                        dLectura = System.Double.Parse(objLectura.ToString(), System.Globalization.NumberStyles.Any);
                        if (dLectura >= min && dLectura <= max)
                        {
                            lectura        = new Lectura();
                            lectura.Codigo = System.Convert.ToInt32(objCodigo);
                            lectura.Valor  = dLectura;
                            if (!ColumnaCodigo.Equals("A"))
                            {
                                try
                                {
                                    lectura.X = Convert.ToDouble(sheet.get_Range("A" + i.ToString(), "A" + i.ToString()).Value2);
                                    lectura.Y = Convert.ToDouble(sheet.get_Range("B" + i.ToString(), "B" + i.ToString()).Value2);
                                }
                                catch (Exception)
                                {
                                }
                            }
                            else
                            {
                                if (dictEstaciones.ContainsKey(lectura.Codigo))
                                {
                                    lectura.X = dictEstaciones[lectura.Codigo].Longitud;
                                    lectura.Y = dictEstaciones[lectura.Codigo].Latitud;
                                }
                            }
                            if (lectura.X != 0)
                            {
                                lista.Add(lectura);
                            }
                        }
                    }
                    //}
                    iLimite = 0;
                }
                else
                {
                    iLimite += 1;
                }
                i += 1;
            }
            return(lista);
        }