コード例 #1
0
ファイル: Init.cs プロジェクト: ninis45/p3_mod_moddemon
        private static bool Estabilidad(VW_MOD_POZO mod_pozo, CONFIGURACION configuracion)
        {
            Console.WriteLine("Inicia Estabilidad: " + mod_pozo.POZO);

            bool Executed;

            try
            {
                ModeloProsper.Estabilidad ObjEstabilidad = new ModeloProsper.Estabilidad(configuracion);


                var deletes = db.RESULTADOS.Where(w => w.IDDATOSENTRADAEST == configuracion.IDDATOSENTRADAEST).ToList();

                // Models.ResultadoModel ResultadoModel = new Models.ResultadoModel();

                if (deletes.Count > 0)
                {
                    Task.Run(() => {
                        deletes.ForEach(e => db.RESULTADOS.Remove(e));
                        db.SaveChanges();
                    });
                }

                if (Executed = ObjEstabilidad.Execute())
                {
                    var Resultados = ObjEstabilidad.Mapa;
                    //Ejecucion de manera asyncrona y desplegado de errores independientes
                    Task.Run(() => SaveEstabilidad(configuracion, Resultados));
                }



                configuracion.QL              = ObjEstabilidad.Ql;
                configuracion.ESTATUS         = Executed?2:-1;
                configuracion.RECOMENDACIONES = ObjEstabilidad.Recomendacion;
                db.Entry(configuracion).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();


                WriteLineText("Termina Estabilidad: " + mod_pozo.POZO, "success");

                return(true);
            }
            catch (Exception ex)
            {
                configuracion.ESTATUS         = -1;
                configuracion.RECOMENDACIONES = ex.Message;
                db.Entry(configuracion).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
                throw new Exception(ex.Message);
            }
        }
コード例 #2
0
        /// <summary>
        /// Ejecuta los procesos de la cola en modo remoto
        /// </summary>
        /// <param name="db">Instancia de la Base de Datos</param>
        /// <param name="mod_pozo">Modelo del Pozo</param>
        /// <param name="server">Interface del servidor</param>
        /// <param name="MError">Tipo de mensaje al desplegar los errores</param>
        /// <returns></returns>
        private static bool ExecRemote(Entities_ModeloCI db, VW_MOD_POZO mod_pozo, Interfaces.IModelos server, Modo MError)
        {
            try
            {
                bool result = false;
                switch (mod_pozo.FUNCION)
                {
                case 1:
                    result = server.Sensibilidad_BN(mod_pozo.IDMODPOZO);



                    break;

                case 2:
                    result = server.Condicion(mod_pozo.IDMODPOZO, null);
                    break;

                default:
                    result = server.Execute(mod_pozo.IDMODPOZO, null);


                    break;
                }

                if (MError == Modo.console)
                {
                    WriteLineText(mod_pozo.POZO + ": Modelo ejecutado correctamente", "success");
                }
                return(true);
            }
            catch (Exception ex)
            {
                WriteEventLogEntry(System.Diagnostics.EventLogEntryType.Error, 22, mod_pozo.POZO + ": " + ex.Message, MError);

                return(false);
            }
        }
コード例 #3
0
ファイル: Init.cs プロジェクト: ninis45/p3_mod_moddemon
        private static bool Execute(VW_MOD_POZO mod_pozo)
        {
            bool response = false;

            ModeloProsper.Logger Logger = new ModeloProsper.Logger(mod_pozo.IDMODPOZO);
            ModeloProsper.Modelo modelo = new ModeloProsper.Modelo(mod_pozo.IDMODPOZO);

            var factory = new ChannelFactory <Interfaces.IModelo>(new BasicHttpBinding()
            {
                SendTimeout = TimeSpan.Parse("0:15:00")
            }, EndPointModelo);

            Interfaces.IModelo server = factory.CreateChannel();

            WriteLineText("Inicia modelo: " + mod_pozo.POZO);

            Dictionary <int, int> CatSaps = db.CAT_SAP.ToDictionary(k => k.IDCATSAP, d => d.PROSPER.GetValueOrDefault());

            try
            {
                Logger.SetEstatus(2);

                switch (mod_pozo.FUNCION)
                {
                case 1:

                    response = modelo.Sensibilidad_BN();


                    var conds = db.PA_operacionPozosFecha(mod_pozo.IDPOZO).ToList();
                    PA_operacionPozosFecha_Result cond = conds[0];

                    var cabezera = db.CabeceraPozoGBN.Where(w => w.bajaLogica == null && w.idPozo == mod_pozo.IDPOZO).SingleOrDefault();

                    if (response && cabezera != null && cond.FEC_CONDICION == mod_pozo.FECHAMODELO)
                    {
                        var inyeccion = db.DatosInyeccion.Where(w => w.idCabeceraPozoGBN == cabezera.idCabeceraPozoGBN).ToList();


                        inyeccion.ForEach(e => db.DatosInyeccion.Remove(e));
                        db.SaveChanges();


                        var QGI = db.COMPORTAMIENTO_GAS.Where(w => w.IDMODPOZO == mod_pozo.IDMODPOZO).SingleOrDefault();

                        if (QGI != null)
                        {
                            var QGIDetalles = db.COMPORTAMIENTO_GAS_DETALLES.Where(w => w.IDCOMPORTAMIENTOGAS == QGI.IDCOMPORTAMIENTOGAS).OrderBy(o => o.XAUX).ToList();


                            if (QGIDetalles.Count > 0)
                            {
                                foreach (var dt in QGIDetalles)
                                {
                                    db.DatosInyeccion.Add(new DatosInyeccion()
                                    {
                                        idCabeceraPozoGBN = cabezera.idCabeceraPozoGBN, qLiq = dt.YAUX.GetValueOrDefault(), qGasBN = dt.XAUX.GetValueOrDefault()
                                    });                                                                                                                                                                           //Multiplicacion x 1000 fue removida de xaux
                                }
                                db.SaveChanges();
                            }
                        }

                        cabezera.porc_agua     = cond.gastoagua;
                        cabezera.presionCabeza = cond.PRESION_TP.GetValueOrDefault();
                        cabezera.qGasBN        = cond.VOLUMEN_BN.GetValueOrDefault();
                        cabezera.fecha         = cond.FEC_CONDICION.GetValueOrDefault();


                        db.Entry(cabezera).State = EntityState.Modified;
                        db.SaveChanges();
                    }



                    break;

                case 2:


                    response = modelo.Update();



                    break;

                default:
                    //ModeloProsper.Modelo modelo = new ModeloProsper.Modelo(mod_pozo.IDMODPOZO);


                    response = modelo.Create();



                    break;
                }



                if (response)
                {
                    if (mod_pozo.ESTABILIDAD > 0)
                    {
                        var Configuracion = (from config in db.CONFIGURACION where config.IDMODPOZO == mod_pozo.IDMODPOZO && config.Fecha == (db.CONFIGURACION.Where(w => w.IDMODPOZO == mod_pozo.IDMODPOZO && config.ESTATUS == 1).Max(m => m.Fecha)) select config).SingleOrDefault();

                        //if (Configuracion != null)
                        //{
                        //    Estabilidad(mod_pozo, Configuracion);

                        //}
                        ModeloProsper.Estabilidad estabilidad = new Estabilidad(Configuracion);
                        estabilidad.Execute();
                        estabilidad.Save();
                    }

                    Logger.SetEstatus(3, "Ejecución correcta");
                    WriteLineText("Termina modelo: " + mod_pozo.POZO, "success");
                }


                return(response);
            }
            catch (Exception ex)
            {
                Logger.SetLog(-1, ex.Message);

                if ((Logger.Intentos + 1) > Logger.Configuracion.MAXREINTENTOS) //revisar hay observaciones en este algoritmo
                {
                    Logger.SetEstatus(-1);
                }
                else
                {
                    modelo.Reset(mod_pozo.IDMODPOZO, 0);
                }
                WriteLineText(ex.Message, "danger");



                return(false);
            }
        }
コード例 #4
0
        private static bool ExecLocal(Entities_ModeloCI db, VW_MOD_POZO mod_pozo, Modo MError)
        {
            bool response = false;

            ModeloProsper.Logger Logger = new ModeloProsper.Logger(mod_pozo.IDMODPOZO);
            ModeloProsper.Modelo modelo = new ModeloProsper.Modelo(mod_pozo.IDMODPOZO);



            try
            {
                Logger.SetEstatus(2);

                switch (mod_pozo.FUNCION)
                {
                case 1:

                    response = modelo.Sensibilidad_BN();


                    var conds = db.PA_operacionPozosFecha(mod_pozo.IDPOZO).ToList();
                    PA_operacionPozosFecha_Result cond = conds[0];

                    var cabezera = db.CabeceraPozoGBN.Where(w => w.bajaLogica == null && w.idPozo == mod_pozo.IDPOZO).SingleOrDefault();

                    if (response && cabezera != null && cond.FEC_CONDICION == mod_pozo.FECHAMODELO)
                    {
                        var inyeccion = db.DatosInyeccion.Where(w => w.idCabeceraPozoGBN == cabezera.idCabeceraPozoGBN).ToList();


                        inyeccion.ForEach(e => db.DatosInyeccion.Remove(e));
                        db.SaveChanges();


                        var QGI = db.COMPORTAMIENTO_GAS.Where(w => w.IDMODPOZO == mod_pozo.IDMODPOZO).SingleOrDefault();

                        if (QGI != null)
                        {
                            var QGIDetalles = db.COMPORTAMIENTO_GAS_DETALLES.Where(w => w.IDCOMPORTAMIENTOGAS == QGI.IDCOMPORTAMIENTOGAS).OrderBy(o => o.XAUX).ToList();


                            if (QGIDetalles.Count > 0)
                            {
                                foreach (var dt in QGIDetalles)
                                {
                                    db.DatosInyeccion.Add(new DatosInyeccion()
                                    {
                                        idCabeceraPozoGBN = cabezera.idCabeceraPozoGBN, qLiq = dt.YAUX.GetValueOrDefault(), qGasBN = dt.XAUX.GetValueOrDefault()
                                    });                                                                                                                                                                           //Multiplicacion x 1000 fue removida de xaux
                                }
                                db.SaveChanges();
                            }
                        }

                        cabezera.porc_agua     = cond.gastoagua;
                        cabezera.presionCabeza = cond.PRESION_TP.GetValueOrDefault();
                        cabezera.qGasBN        = cond.VOLUMEN_BN.GetValueOrDefault();
                        cabezera.fecha         = cond.FEC_CONDICION.GetValueOrDefault();


                        db.Entry(cabezera).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                    break;

                case 2:
                    response = modelo.Update();
                    break;

                default:

                    response = modelo.Create();


                    break;
                }


                Logger.SetEstatus(3, "Ejecución correcta");

                if (MError == Modo.console)
                {
                    WriteLineText(mod_pozo.POZO + ": Modelo ejecutado correctamente", "success");
                }

                return(response);
            }
            catch (Exception ex)
            {
                if (Logger.Configuracion.ESTATUS == 2)
                {
                    Logger.SetEstatus(-1, ex.Message);
                }

                if ((Logger.Intentos + 1) < Logger.Configuracion.MAXREINTENTOS)
                {
                    modelo.Reset(mod_pozo.IDMODPOZO, 0);
                }

                WriteEventLogEntry(System.Diagnostics.EventLogEntryType.Error, 21, mod_pozo.POZO + ": " + ex.Message, MError);
                return(false);
            }
        }