예제 #1
0
        private void ProcesarArchivo(string archivo)
        {
            MC_RPuntoMedicionFormato formato = null;
            ResumenLecturaMedidor    resumen = null;

            GetFormatoLectura(archivo, out resumen, out formato);

            if (formato != null)
            {
                resumen.PkCodFormato   = formato.FkCodFormato;
                resumen.ArchivoLectura = Path.GetFileName(archivo);
                if (_lectores.ContainsKey(resumen.PkCodFormato))
                {
                    ParametrosLectura parametros = new ParametrosLectura();
                    parametros.DetalleMagElec = OraDalMC_RPuntoMedicionFormatoDetalleMgr.Instancia.GetListaDefMagElec(formato.PkCodRptoMedFto);

                    try
                    {
                        ResultadoLectura res = _lectores[resumen.PkCodFormato].Leer(archivo, parametros);
                        AplicarMultiplicadores(res, parametros);
                        ValidadorLecturaMgr.Instancia.AplicarValidaciones(resumen, res, parametros, TipoValidador.Consistencia);
                        if (ValidadorLecturaMgr.Instancia.AplicarValidaciones(resumen, res, parametros, TipoValidador.Cargado))
                        {
                            Guardar(resumen, res, parametros);
                        }
                        resumen.RegistrosArchivo = res.Registros.Count;
                        if (res.Registros.Count > 0)
                        {
                            resumen.FechaHoraPrimerRegistro = res.Registros[0].Fecha.ToString("dd/MMM/yyyy") + " " + res.Registros[0].Hora;
                            resumen.FechaHoraUltimoRegistro = res.Registros[res.Registros.Count - 1].Fecha.ToString("dd/MMM/yyyy") + " " + res.Registros[res.Registros.Count - 1].Hora;
                        }
                        OnArchivoProcesado(resumen);
                    }
                    catch (Exception ex)
                    {
                        PistaMgr.Instance.Error("MC", ex);
                    }

                    _cantidadProcesados++;
                }
            }
        }
예제 #2
0
        private void GetFormatoLectura(string archivo, out ResumenLecturaMedidor resumenLectura, out MC_RPuntoMedicionFormato formato)
        {
            resumenLectura = null;
            formato        = null;
            AsegurarTablaPuntosMedicion();
            foreach (DataRow row in _tablaPuntosMedicion.Rows)
            {
                if (formato == null)
                {
                    resumenLectura = (ResumenLecturaMedidor)_tablaResumenes.NewRow();
                    resumenLectura.LeerDatosMedidor(row);
                    DataTable formatosAsociados = OraDalMC_RPtoMedFtoMgr.Instancia.GetFormatos(resumenLectura.PkCodPuntoMedicion);
                    foreach (DataRow rf in formatosAsociados.Rows)
                    {
                        string nombreArchivoPrototipo = ObjetoDeNegocio.GetValor <string>(rf["NOMBRE_ARCHIVO"]);
                        nombreArchivoPrototipo = nombreArchivoPrototipo.ToLower();
                        string a = Path.GetFileName(archivo.ToLower());

                        if (a == nombreArchivoPrototipo)
                        {
                            formato = new MC_RPuntoMedicionFormato(rf);
                            break;
                        }
                        else if (nombreArchivoPrototipo.IndexOf('[') >= 0)
                        {
                            if (TienenMismoPatron(nombreArchivoPrototipo, a))
                            {
                                formato = new MC_RPuntoMedicionFormato(rf);
                                break;
                            }
                        }
                    }
                }
                else
                {
                    break;
                }
            }
        }
 public DataTable GetMagnitudesElectricas(MC_RPuntoMedicionFormato rMedFto)
 {
     return(GetMagnitudesElectricas(rMedFto.PkCodRptoMedFto));
 }
예제 #4
0
        public void Guardar(MC_RPuntoMedicionFormato 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_RPTO_MED_FTO
                  (
                    PK_COD_RPTO_MED_FTO,
                    FK_COD_PUNTO_MEDICION,
                    FK_COD_MEDIDOR,
                    FK_COD_FORMATO,
                    NOMBRE_ARCHIVO,
                    PRIORIDAD_LECTURA,
                    CONTIENE_FIN_INTERVALO,
                    FECHA_INICIO,
                    FECHA_FIN,
                    D_COD_ESTADO,
                    SEC_LOG
                  )
                  VALUES
                  (
                    :PK_COD_RPTO_MED_FTO,
                    :FK_COD_PUNTO_MEDICION,
                    :FK_COD_MEDIDOR,
                    :FK_COD_FORMATO,
                    :NOMBRE_ARCHIVO,
                    :PRIORIDAD_LECTURA,
                    :CONTIENE_FIN_INTERVALO,
                    :FECHA_INICIO,
                    :FECHA_FIN,
                    :D_COD_ESTADO,
                    :SEC_LOG
                  )";
            }
            else
            {
                sql = "UPDATE F_MC_RPTO_MED_FTO SET " +
                      "PK_COD_RPTO_MED_FTO=:PK_COD_RPTO_MED_FTO ," +
                      "FK_COD_PUNTO_MEDICION=:FK_COD_PUNTO_MEDICION ," +
                      "FK_COD_MEDIDOR=:FK_COD_MEDIDOR ," +
                      "FK_COD_FORMATO=:FK_COD_FORMATO ," +
                      "NOMBRE_ARCHIVO=:NOMBRE_ARCHIVO ," +
                      "PRIORIDAD_LECTURA=:PRIORIDAD_LECTURA ," +
                      "CONTIENE_FIN_INTERVALO=:CONTIENE_FIN_INTERVALO ," +
                      "FECHA_INICIO=:FECHA_INICIO ," +
                      "FECHA_FIN=:FECHA_FIN ," +
                      "D_COD_ESTADO=:D_COD_ESTADO ," +
                      "SEC_LOG=:SEC_LOG  WHERE ";
            }

            cmd             = CrearCommand();
            cmd.CommandText = sql;
            cmd.BindByName  = true;
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_PK_COD_RPTO_MED_FTO, OracleDbType.Int64, obj.PkCodRptoMedFto, ParameterDirection.Input);
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_FK_COD_PUNTO_MEDICION, OracleDbType.Int64, obj.FkCodPuntoMedicion, ParameterDirection.Input);
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_FK_COD_MEDIDOR, OracleDbType.Int64, obj.FkCodMedidor, ParameterDirection.Input);
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_FK_COD_FORMATO, OracleDbType.Int64, obj.FkCodFormato, ParameterDirection.Input);
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_NOMBRE_ARCHIVO, OracleDbType.Varchar2, obj.NombreArchivo, ParameterDirection.Input);
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_PRIORIDAD_LECTURA, OracleDbType.Int16, obj.PrioridadLectura, ParameterDirection.Input);
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_CONTIENE_FIN_INTERVALO, OracleDbType.Int16, obj.ContieneFinIntervalo, ParameterDirection.Input);
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_FECHA_INICIO, OracleDbType.Date, obj.FechaInicio, ParameterDirection.Input);
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_FECHA_FIN, OracleDbType.Date, obj.FechaFin, ParameterDirection.Input);
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_D_COD_ESTADO, OracleDbType.Varchar2, obj.DCodEstado, ParameterDirection.Input);
            cmd.Parameters.Add(MC_RPuntoMedicionFormato.C_SEC_LOG, OracleDbType.Int64, obj.SecLog, ParameterDirection.Input);

            try
            {
                cmd.ExecuteNonQuery();
                obj.EsNuevo = false;
            }
            catch (Exception exception)
            {
                PistaMgr.Instance.Error("DALSisFalla", exception);
            }
            finally
            {
                DisposeCommand(cmd);
            }
        }