Exemple #1
0
 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);
        }