public void Guardar(ResumenLecturaMedidor resumen, ResultadoLectura res, ParametrosLectura parametros) { MC_Lectura lectura = new MC_Lectura { EsNuevo = true, CodRPtoMedFto = resumen.PkCodFormato, NombreArchivo = resumen.ArchivoLectura, FkCodPtoMed = resumen.PkCodPuntoMedicion, FechaLectura = DateTime.Now }; if (this.Guardar(lectura)) { string sql = @"INSERT INTO F_MC_LECTURA_DETALLE (PK_FECHA, PK_COD_INTERVALO, VALOR, ESTADO, SEC_LOG, D_COD_ORIGEN, PK_COD_MAGNITUD_ELEC, PK_COD_LECTURA,fk_cod_punto_medicion) VALUES(:PK_FECHA, :PK_COD_INTERVALO, :VALOR, :ESTADO, :SEC_LOG, :D_COD_ORIGEN, :PK_COD_MAGNITUD_ELEC, :PK_COD_LECTURA,:fk_cod_punto_medicion)"; OracleCommand cmd = base.CrearCommand(); cmd.CommandText = sql; cmd.ArrayBindCount = res.Tabla.Rows.Count; cmd.Parameters.Add("PK_FECHA", OracleDbType.Date, GetArray(res.Tabla, "Fecha"), ParameterDirection.Input); cmd.Parameters.Add("PK_COD_INTERVALO", OracleDbType.Int64, GetArray(res.Tabla, "CodIntervalo"), ParameterDirection.Input); cmd.Parameters.Add("VALOR", OracleDbType.Decimal, GetArray(res.Tabla, "Valor"), ParameterDirection.Input); cmd.Parameters.Add("ESTADO", OracleDbType.Int64, GetArray(res.Tabla.Rows.Count, 1), ParameterDirection.Input); cmd.Parameters.Add("SEC_LOG", OracleDbType.Int64, GetArray(res.Tabla.Rows.Count, lectura.SecLog), ParameterDirection.Input); cmd.Parameters.Add("D_COD_ORIGEN", OracleDbType.Int64, GetArray(res.Tabla.Rows.Count, 1), ParameterDirection.Input); cmd.Parameters.Add("PK_COD_MAGNITUD_ELEC", OracleDbType.Int64, GetArray(res.Tabla, "CodInfCanal"), ParameterDirection.Input); cmd.Parameters.Add("PK_COD_LECTURA", OracleDbType.Int64, GetArray(res.Tabla.Rows.Count, lectura.PkCodLectura), ParameterDirection.Input); cmd.Parameters.Add("fk_cod_punto_medicion", OracleDbType.Int64, GetArray(res.Tabla.Rows.Count, resumen.PkCodPuntoMedicion), ParameterDirection.Input); cmd.BindByName = true; base.Actualizar(cmd); } }
public bool Guardar(MC_Lectura obj) { bool resultado = true; OracleCommand cmd = null; string sql = string.Empty; if (obj.EsNuevo) { Pista p = PistaMgr.Instance.Info("DALSisFalla", obj.GetEstadoString()); obj.SecLog = (long)p.PK_SecLog; obj.PkCodLectura = GetIdAutoNum("SEC_PK_COD_LECTURA"); sql = "INSERT INTO F_MC_LECTURA (PK_COD_LECTURA,FK_COD_PUNTO_MEDICION,COD_RPTO_MED_FTO,FECHA_LECTURA,NOMBRE_ARCHIVO,SEC_LOG)" + "VALUES(:PK_COD_LECTURA,:FK_COD_PUNTO_MEDICION,:COD_RPTO_MED_FTO,:FECHA_LECTURA,:NOMBRE_ARCHIVO,:SEC_LOG)"; } else { sql = "UPDATE F_MC_LECTURA SET " + "PK_COD_LECTURA=:PK_COD_LECTURA ," + "FK_COD_PUNTO_MEDICION=:FK_COD_PUNTO_MEDICION ," + "COD_RPTO_MED_FTO=:COD_RPTO_MED_FTO ," + "FECHA_LECTURA=:FECHA_LECTURA ," + "NOMBRE_ARCHIVO=:NOMBRE_ARCHIVO ," + "SEC_LOG=:SEC_LOG WHERE "; } cmd = CrearCommand(); cmd.CommandText = sql; cmd.BindByName = true; cmd.Parameters.Add(MC_Lectura.C_PK_COD_LECTURA, OracleDbType.Int64, obj.PkCodLectura, ParameterDirection.Input); cmd.Parameters.Add(MC_Lectura.C_FK_COD_PUNTO_MEDICION, OracleDbType.Int64, obj.FkCodPtoMed, ParameterDirection.Input); cmd.Parameters.Add(MC_Lectura.C_COD_RPTO_MED_FTO, OracleDbType.Int64, obj.CodRPtoMedFto, ParameterDirection.Input); cmd.Parameters.Add(MC_Lectura.C_FECHA_LECTURA, OracleDbType.Date, obj.FechaLectura, ParameterDirection.Input); cmd.Parameters.Add(MC_Lectura.C_NOMBRE_ARCHIVO, OracleDbType.Varchar2, obj.NombreArchivo, ParameterDirection.Input); cmd.Parameters.Add(MC_Lectura.C_SEC_LOG, OracleDbType.Int64, obj.SecLog, ParameterDirection.Input); try { cmd.ExecuteNonQuery(); obj.EsNuevo = false; } catch (Exception exception) { PistaMgr.Instance.Error("DALSisFalla", exception); resultado = false; } finally { DisposeCommand(cmd); } return(resultado); }
public string CalcularDatosLectura(long codPuntoMedicion, DateTime desde, DateTime hasta) { string resultado = "OK"; List <MC_FormulaPuntoMedicion> formulas = MC_FormulaPuntoMedicionMgr.Instancia.GetFormulasPorCodPuntoMed(codPuntoMedicion, desde, hasta); if (formulas.Count == 0) { resultado = "Fórmula no definida."; } else { List <MC_IntervaloDetalle> intervalos = MC_IntervaloDetalleMgr.Instancia.GetLista(desde, hasta); List <EvaluadorExpresion> evaluadores = new List <EvaluadorExpresion>(); MC_Lectura lectura = new MC_Lectura(); lectura.EsNuevo = true; lectura.FechaLectura = DateTime.Now.Date; lectura.FkCodPtoMed = codPuntoMedicion; MC_LecturaMgr.Instancia.Guardar(lectura); foreach (MC_FormulaPuntoMedicion f in formulas) { evaluadores.Add(new EvaluadorExpresion(f.Formula)); } ProveedorDatosLectura proveedorDatos = new ProveedorDatosLectura(desde, hasta); Dictionary <string, List <object> > detalle = new Dictionary <string, List <object> >(); detalle["FkCodPuntoMedicion"] = new List <object>(); detalle["PkCodIntervalo"] = new List <object>(); detalle["PkCodMagnitudElec"] = new List <object>(); detalle["Valor"] = new List <object>(); detalle["PkCodLectura"] = new List <object>(); detalle["PkFecha"] = new List <object>(); detalle["Estado"] = new List <object>(); detalle["SecLog"] = new List <object>(); detalle["DCodOrigen"] = new List <object>(); for (DateTime fecha = desde; fecha <= hasta; fecha = fecha.AddDays(1)) { proveedorDatos.SetFecha(fecha); foreach (var i in intervalos) { proveedorDatos.SetIntervalo(i.PkCodIntervalo); for (int idx = 0; idx < formulas.Count; idx++) { double r = evaluadores[idx].Evaluar(proveedorDatos); detalle["FkCodPuntoMedicion"].Add(codPuntoMedicion); detalle["PkCodIntervalo"].Add(i.PkCodIntervalo); detalle["PkCodMagnitudElec"].Add(formulas[idx].FkCodMagnitudElec); detalle["Valor"].Add(r); detalle["PkCodLectura"].Add(lectura.PkCodLectura); detalle["PkFecha"].Add(fecha); detalle["Estado"].Add(1); detalle["SecLog"].Add(lectura.SecLog); detalle["DCodOrigen"].Add(2); } } } string sql = @"INSERT INTO F_MC_LECTURA_DETALLE (PK_FECHA, PK_COD_INTERVALO, VALOR, ESTADO, SEC_LOG, D_COD_ORIGEN, PK_COD_MAGNITUD_ELEC, PK_COD_LECTURA,fk_cod_punto_medicion) VALUES(:PK_FECHA, :PK_COD_INTERVALO, :VALOR, :ESTADO, :SEC_LOG, :D_COD_ORIGEN, :PK_COD_MAGNITUD_ELEC, :PK_COD_LECTURA,:fk_cod_punto_medicion)"; OracleCommand cmd = base.CrearCommand(); cmd.CommandText = sql; cmd.ArrayBindCount = detalle["SecLog"].Count; cmd.Parameters.Add("PK_FECHA", OracleDbType.Date, detalle["PkFecha"].ToArray(), ParameterDirection.Input); cmd.Parameters.Add("PK_COD_INTERVALO", OracleDbType.Int64, detalle["PkCodIntervalo"].ToArray(), ParameterDirection.Input); cmd.Parameters.Add("VALOR", OracleDbType.Decimal, detalle["Valor"].ToArray(), ParameterDirection.Input); cmd.Parameters.Add("ESTADO", OracleDbType.Int64, detalle["Estado"].ToArray(), ParameterDirection.Input); cmd.Parameters.Add("SEC_LOG", OracleDbType.Int64, detalle["SecLog"].ToArray(), ParameterDirection.Input); cmd.Parameters.Add("D_COD_ORIGEN", OracleDbType.Int64, detalle["DCodOrigen"].ToArray(), ParameterDirection.Input); cmd.Parameters.Add("PK_COD_MAGNITUD_ELEC", OracleDbType.Int64, detalle["PkCodMagnitudElec"].ToArray(), ParameterDirection.Input); cmd.Parameters.Add("PK_COD_LECTURA", OracleDbType.Int64, detalle["PkCodLectura"].ToArray(), ParameterDirection.Input); cmd.Parameters.Add("fk_cod_punto_medicion", OracleDbType.Int64, detalle["FkCodPuntoMedicion"].ToArray(), ParameterDirection.Input); cmd.BindByName = true; base.Actualizar(cmd); } return(resultado); }