private void Guardar(ResumenLecturaMedidor resumen, ResultadoLectura res, ParametrosLectura parametros) { MC_LecturaDetalle.EliminarMarcadosParaBorrar(resumen, res, parametros); MC_LecturaDetalle.EliminarDuplicados(resumen, res, parametros); MC_LecturaDetalle.EliminarFueraDeIntervalo(resumen, res, parametros); MC_LecturaMgr.Instancia.Guardar(resumen, res, parametros); }
public void Guardar(MC_LecturaDetalle obj) { OracleCommand cmd = null; string sql = string.Empty; if (obj.EsNuevo) { Pista p = PistaMgr.Instance.Info("DALSisFalla", obj.GetEstadoString()); obj.SecLog = (long)p.PK_SecLog; sql = "INSERT INTO F_MC_LECTURA_DETALLE (PK_COD_LECTURA,PK_FECHA,PK_COD_INTERVALO,PK_COD_MAGNITUD_ELEC,VALOR,ESTADO,SEC_LOG,D_COD_ORIGEN,FK_COD_PUNTO_MEDICION)" + "VALUES(:PK_COD_LECTURA,:PK_FECHA,:PK_COD_INTERVALO,:PK_COD_MAGNITUD_ELEC,:VALOR,:ESTADO,:SEC_LOG,:D_COD_ORIGEN,:FK_COD_PUNTO_MEDICION)"; } else { sql = @"UPDATE F_MC_LECTURA_DETALLE SET VALOR=:VALOR , ESTADO=:ESTADO , SEC_LOG=:SEC_LOG , D_COD_ORIGEN=:D_COD_ORIGEN WHERE PK_COD_LECTURA=:PK_COD_LECTURA AND PK_FECHA=:PK_FECHA AND PK_COD_INTERVALO=:PK_COD_INTERVALO AND PK_COD_MAGNITUD_ELEC=:PK_COD_MAGNITUD_ELEC"; } cmd = CrearCommand(); cmd.CommandText = sql; cmd.BindByName = true; cmd.Parameters.Add(MC_LecturaDetalle.C_PK_COD_LECTURA, OracleDbType.Int64, obj.PkCodLectura, ParameterDirection.Input); cmd.Parameters.Add(MC_LecturaDetalle.C_PK_FECHA, OracleDbType.Date, obj.PkFecha, ParameterDirection.Input); cmd.Parameters.Add(MC_LecturaDetalle.C_PK_COD_INTERVALO, OracleDbType.Int64, obj.PkCodIntervalo, ParameterDirection.Input); cmd.Parameters.Add(MC_LecturaDetalle.C_PK_COD_MAGNITUD_ELEC, OracleDbType.Int64, obj.PkCodMagnitudElec, ParameterDirection.Input); cmd.Parameters.Add(MC_LecturaDetalle.C_VALOR, OracleDbType.Double, obj.Valor, ParameterDirection.Input); cmd.Parameters.Add(MC_LecturaDetalle.C_ESTADO, OracleDbType.Int32, obj.Estado, ParameterDirection.Input); cmd.Parameters.Add(MC_LecturaDetalle.C_SEC_LOG, OracleDbType.Int64, obj.SecLog, ParameterDirection.Input); cmd.Parameters.Add(MC_LecturaDetalle.C_D_COD_ORIGEN, OracleDbType.Int64, obj.DCodOrigen, ParameterDirection.Input); cmd.Parameters.Add(MC_LecturaDetalle.C_FK_COD_PUNTO_MEDICION, OracleDbType.Int64, obj.FkCodPuntoMedicion, ParameterDirection.Input); try { cmd.ExecuteNonQuery(); obj.EsNuevo = false; } catch (Exception exception) { PistaMgr.Instance.Error("DALSisFalla", exception); } finally { DisposeCommand(cmd); } }
public bool Validar(ResumenLecturaMedidor resumen, ResultadoLectura res, ParametrosLectura parametros) { bool resultado = true; RegistroLectura ultimoEnBD = MC_LecturaMgr.Instancia.GetUltimoRegistroBD(resumen.PkCodPuntoMedicion); MC_IntervaloMaestro defIntervaloActual = MC_IntervaloMaestroMgr.Instancia.GetIntervaloPorFecha(DateTime.Now.Date); if (ultimoEnBD == null || ultimoEnBD.Fecha.AddMinutes(defIntervaloActual.PeriodoTiempo) == res.Registros[0].Fecha) { resumen[Nombre] = "OK"; } else if (ultimoEnBD.Fecha.AddMinutes(defIntervaloActual.PeriodoTiempo) < res.Registros[0].Fecha) {//hay hueco resumen[Nombre] = "Faltan Registros"; resultado = false; } else { List <RegistroLectura> registrosAnteriores = MC_LecturaMgr.Instancia.GetRegistrosDesdeFecha(resumen.PkCodPuntoMedicion, res.Registros[0].Fecha.Date); MC_LecturaDetalle.EliminarDuplicados(resumen, res, parametros); MC_LecturaDetalle.EliminarFueraDeIntervalo(resumen, res, parametros); int i = 0, j = 0; for (; i < registrosAnteriores.Count && j < res.Registros.Count; i++) { if (registrosAnteriores[i].Igual(res.Registros[j])) { res.Registros[j].MarcadoParaBorrar = true; } else { resumen[Nombre] = "Datos Inconsistentes"; resultado = false; } j++; } if (resultado) { resumen[Nombre] = "OK"; } } return(resultado); }