/// <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); }
/// <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); }