WCFHelper

Posted by Jack Daliss | 20:04 Categories:
JOBS

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BbWcfHelper
{
    public class Jobs
    {
        #region declaraciones tramas por segundo

            static OperationsDB operacionesdb= new OperationsDB();
            Methods methods = new Methods();
            List<DataTable> lista = new List<DataTable>();
            DataTable dt_retorno = new DataTable();
            DataSet ds_retorno = new DataSet();
            static int Id_componente;
            static string Hora_inicio;
            static string Fecha;
            static string Hora_fin;
            static int Tipo_tramsaccion;
            static int Tramas;
            public static int Posicion_actual_lista = 0;
           
        #endregion

        #region metodos trama por segundo

            public Jobs(int id_componente, string fecha, string hora_inicio, string hora_fin, int tipo_tramsaccion, int tramas)
            {
                Id_componente = id_componente;
                Fecha = fecha;
                Hora_inicio = hora_inicio;
                Hora_fin = hora_fin;
                Tipo_tramsaccion = tipo_tramsaccion;
                Tramas = tramas;
            }

            public Jobs()
            { }

            public void procesa_cargas_tramas_por_segundo(int cantidad_tramas)
            {
                lock (this)
                {
                    operacionesdb.CopiarTramasATramasEnvioTemp(Id_componente, Fecha, Hora_inicio, Hora_fin, Tipo_tramsaccion, Tramas);
                    if (methods.contar_paquetes_disponibles(ref lista) <= 2)
                    {
                        methods.llena_lista_tramas_por_segundo(ref lista,cantidad_tramas);
                    }
                    else if (methods.contar_paquetes_null(ref lista) > 5)//6000)
                    {
                        methods.remueve_null_lista(ref lista);
                    }
                }
            }

            public DataSet retorna_paquete_Trams_Seg(int cantidad_tramas)
            {
                ds_retorno.Tables.Clear();  
                dt_retorno.Rows.Clear();
                dt_retorno = lista[Posicion_actual_lista].Copy();
                ds_retorno.Tables.Add(dt_retorno);
                lista[Posicion_actual_lista] = null;
                Posicion_actual_lista++;
                Task tarea = new Task(() => procesa_cargas_tramas_por_segundo(cantidad_tramas));
                tarea.Start();
                return ds_retorno;
            }

            public void procesa_cargas_simulacion_dia()
            {
                lock (this)
                {
                    operacionesdb.CopiarTramasATramasEnvioTemp(Id_componente, Fecha, Hora_inicio, Hora_fin, Tipo_tramsaccion, Tramas);

                    if (methods.contar_paquetes_disponibles(ref lista) <= 120)
                    {
                        methods.llena_lista_simulacion_dia(ref lista);
                    }
                    else if (methods.contar_paquetes_null(ref lista) > 1000)//6000)
                    {
                        methods.remueve_null_lista(ref lista);
                    }
                }
            }

            public DataSet retorna_paquete_Sim_Dia()
            {
                DataSet ds_temp = new DataSet();

                int limite = Posicion_actual_lista;

                for (int i = Posicion_actual_lista; i < limite + 60; i++)
                {
                    ds_temp.Tables.Add(lista[i]);

                    Posicion_actual_lista++;
                    lista[i] = null;
                }

                Task tarea = new Task(() => procesa_cargas_simulacion_dia());
                tarea.Start();
                return ds_temp;
            }

        #endregion


    }
}


XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

METHODS

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BbWcfHelper
{
    class Methods
    {
        OperationsDB operationsdb = new OperationsDB();
        DataTable dt_segundos;

        //Metodo que llena la lista de tabla de tramas cada cierto tiempo
        public void llena_lista_tramas_por_segundo(ref List<DataTable> lista,int cantidad_tramas )
        {
            DataTable dt_consulta = new DataTable();
            DataTable dt_nueva = new DataTable();

            for (int c = 0; c < 4; c++)
            {
                dt_consulta = operationsdb.ConsultaTramasEnvioTemp(cantidad_tramas);
                dt_nueva = dt_consulta.Clone();
                dt_nueva = dt_consulta;
                if (dt_consulta.Rows.Count > 0)
                {
                    lista.Add(dt_nueva);
                    dt_nueva.Dispose();
                    dt_nueva = new DataTable();
                    dt_nueva = dt_consulta.Clone();
                }
            }
            dt_consulta.Dispose();
            dt_nueva.Dispose();
        }

        public int contar_paquetes_disponibles(ref List<DataTable> lista)
        {
            int cont = 0;
            for (int i = 0; i < lista.Count; i++)
            {
                cont = (lista[i] != null) ? cont += 1 : cont;
            }
            return cont;
        }

        public int contar_paquetes_null(ref List<DataTable> lista)
        {
            int cont = 0;
            for (int i = 0; i < lista.Count; i++)
            {
                cont = (lista[i] == null) ? cont += 1 : cont;
            }
            return cont;
        }

        public void llena_lista_simulacion_dia(ref List<DataTable> lista)
        {
            DataTable dt_consulta = new DataTable();
            DataRow row;

            dt_consulta = operationsdb.ConsultaTramasEnvioTemp(2000);

            dt_segundos = dt_consulta.Clone();

            //verifica que la consulta contenga datos
            if (dt_consulta.Rows.Count > 0)
            {
                string segundos = dt_consulta.Rows[0]["hora_envio_log"].ToString();

                //recorre la tabla minuto, que se consulto
                for (int i = 0; i <= dt_consulta.Rows.Count; i++)
                {
                    if (i < dt_consulta.Rows.Count)
                        if (segundos == dt_consulta.Rows[i]["hora_envio_log"].ToString())
                        {
                            row = dt_segundos.NewRow();
                            row[0] = dt_consulta.Rows[i]["id"].ToString();
                            row[1] = dt_consulta.Rows[i]["trama"].ToString();
                            row[2] = dt_consulta.Rows[i]["hora_envio_log"].ToString();
                            row[3] = dt_consulta.Rows[i]["id_componente"].ToString();
                            dt_segundos.Rows.Add(row);
                        }
                        else
                        {
                            segundos = dt_consulta.Rows[i]["hora_envio_log"].ToString();
                            lista.Add(dt_segundos);
                            dt_segundos.Dispose();
                            crea_estructura_tabla();
                            i--;
                        }
                    else
                    {
                        lista.Add(dt_segundos);
                        dt_segundos.Dispose();
                        crea_estructura_tabla();
                    }
                }
                dt_consulta.Rows.Clear();
            }
            else
            {
                //no se encontro datos
            }
            dt_consulta.Dispose();
        }

        public void crea_estructura_tabla()
        {
            dt_segundos = new DataTable();
            dt_segundos.Columns.Add("id");
            dt_segundos.Columns.Add("trama");
            dt_segundos.Columns.Add("hora");
            dt_segundos.Columns.Add("id_componente");
        }

        public void remueve_null_lista(ref List<DataTable> lista)
        {
            for (int i = 0; i < lista.Count;i++ )
            {
                if (lista[i] == null)
                {
                    lista.RemoveAt(i);
                    i--;
                }
            }

                Jobs.Posicion_actual_lista = 0;
        }

    }




}






    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

OPERATIONDB

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BbWcfHelper
{
    public class OperationsDB
    {
        //copia las tablas a la tramas envío temporal
        public void CopiarTramasATramasEnvioTemp(int id_componente, string fecha, string hora_inicio, string hora_fin, int tipo_tramsaccion, int tramas)
        {
            //GeneralConnection.Conexion conexion = new GeneralConnection.Conexion(ConfigurationManager.AppSettings["conexiondb"]);

            //try
            //{
            //    SqlCommand com = new SqlCommand("SPBGCopiaTramasATramasEnvioTempOrg", conexion.iniciar());
            //    com.Parameters.AddWithValue("@componente", id_componente);
            //    com.Parameters.AddWithValue("@fecha_simular", fecha);
            //    com.Parameters.AddWithValue("@hora_inicio", hora_inicio);
            //    com.Parameters.AddWithValue("@hora_fin", hora_fin);
            //    com.Parameters.AddWithValue("@tipo_transaccion", tipo_tramsaccion);
            //    com.Parameters.AddWithValue("@tramas", tramas);
            //    com.CommandType = CommandType.StoredProcedure;
            //    com.ExecuteNonQuery();

            //}
            //catch (Exception ex)
            //{

            //}
            //finally
            //{
            //    conexion.cerrar_conexion();
            //}



            GeneralConnection.Conexion conexion = new GeneralConnection.Conexion(ConfigurationManager.AppSettings["conexiondb"]);

            try
            {
                SqlCommand com = new SqlCommand("copia", conexion.iniciar());
                com.Parameters.AddWithValue("@cant", 9000);
                com.CommandType = CommandType.StoredProcedure;
                com.ExecuteNonQuery();
            }
            catch (Exception ex)
            {

            }
            finally
            {
                conexion.cerrar_conexion();
            }
        }

        //Método que realiza la consulta de ciertas tramas, para procesarlas por segundos además las tramas que trae las marca como enviadas='E'
        public DataTable ConsultaTramasEnvioTemp(int Tramas)
        {
            //GeneralConnection.Conexion conexion = new GeneralConnection.Conexion(ConfigurationManager.AppSettings["conexiondb"]);
            //DataSet ds = new DataSet();

            //try
            //{
            //    SqlCommand com = new SqlCommand("SPBGConsultaTramasEnvioTempOrg", conexion.iniciar());
            //    com.Parameters.AddWithValue("@Tramas", Tramas);
            //    com.CommandType = CommandType.StoredProcedure;
            //    SqlDataAdapter adaptador = new SqlDataAdapter(com);
            //    adaptador.Fill(ds);
            //}
            //catch (Exception ex)
            //{

            //}
            //finally
            //{
            //    conexion.cerrar_conexion();
            //}
            //return ds.Tables[0];


            GeneralConnection.Conexion conexion = new GeneralConnection.Conexion(ConfigurationManager.AppSettings["conexiondb"]);
            DataSet ds = new DataSet();

            try
            {
                SqlCommand com = new SqlCommand("consulta", conexion.iniciar());
                com.Parameters.AddWithValue("@cant", Tramas);
                com.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter adaptador = new SqlDataAdapter(com);
                adaptador.Fill(ds);
            }
            catch (Exception ex)
            {

            }
            finally
            {
                conexion.cerrar_conexion();
            }
            return ds.Tables[0];


            //DataTable dt = new DataTable();
            //dt.Columns.Add("columna1");
            //for (int i = 0; i < 200; i++)
            //{
            //    DataRow dr = dt.NewRow();
            //    dr[0] = "holatttt:" + i.ToString();
            //    dt.Rows.Add(dr);
            //}



            //DataTable dt = new DataTable();
            //dt.Columns.Add("id");
            //dt.Columns.Add("trama");
            //dt.Columns.Add("hora_envio_log");
            //dt.Columns.Add("id_componente");

            //for (int i = 0; i < 3000; i++)
            //{



            //    DataRow dr = dt.NewRow();
            //    dr[0] = "holatttt:" + i.ToString();
            //    dr[1] = "fffffff:" + i.ToString();
            //    if (i < 1500)
            //    {
            //        dr[2] = "00:00:01" + i.ToString();
            //    }
            //    else
            //    {
            //        dr[2] = "00:00:02" + i.ToString();
            //    }
            //    dr[3] = "hhhh:" + i.ToString();
            //    dt.Rows.Add(dr);
            //}

            //return dt;
        }

    }
}



XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


HELPER SERVICE


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using BbWcfHelper;
using System.Data;

namespace WCFHelper
{
    
    public class HelperService : IHelperService
    {
        static Jobs jobs; 

        public bool Iniciar_Proceso_Consulta_Trams_Seg(int id_componente, string fecha, string hora_inicio, string hora_fin, int tipo_tramsaccion, int tramas)
        {
            jobs = new Jobs(id_componente, fecha, hora_inicio, hora_fin, tipo_tramsaccion, tramas);
            OperationsDB operacionesdb = new OperationsDB();
            operacionesdb.CopiarTramasATramasEnvioTemp(id_componente, fecha, hora_inicio, hora_fin, tipo_tramsaccion, tramas);
            jobs.procesa_cargas_tramas_por_segundo(200);
            return true;
        }

        public DataSet Obtener_Paquete_Trams_Seg(int cantidad_tramas)
        {
            return jobs.retorna_paquete_Trams_Seg(cantidad_tramas);
        }

        public bool Iniciar_Proceso_Consulta_Sim_Dia(int id_componente, string fecha, string hora_inicio, string hora_fin, int tipo_tramsaccion, int tramas)
        {
            jobs = new Jobs(id_componente, fecha, hora_inicio, hora_fin, tipo_tramsaccion, tramas);
            OperationsDB operacionesdb = new OperationsDB();
            operacionesdb.CopiarTramasATramasEnvioTemp(id_componente, fecha, hora_inicio, hora_fin, tipo_tramsaccion, tramas);
            jobs.procesa_cargas_simulacion_dia();
            return true;


        }

        public DataSet Obtener_Paquete_Sim_Dia()
        {
            return jobs.retorna_paquete_Sim_Dia();
        }



    }
}



XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

IHELPER SERVICE

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WCFHelper
{
    
    [ServiceContract]
    public interface IHelperService
    {
        [OperationContract]
        bool Iniciar_Proceso_Consulta_Trams_Seg(int id_componente, string fecha, string hora_inicio, string hora_fin, int tipo_tramsaccion, int tramas);

        [OperationContract]
        DataSet Obtener_Paquete_Trams_Seg(int cantidad_tramas);

        [OperationContract]
        bool Iniciar_Proceso_Consulta_Sim_Dia(int id_componente, string fecha, string hora_inicio, string hora_fin, int tipo_tramsaccion, int tramas);

        [OperationContract]
        DataSet Obtener_Paquete_Sim_Dia();

    }
}



Posted by Jack Daliss | 8:36 Categories:
PAGINA

Blogger news

HTML Comment Box is loading comments...
  • RSS
  • Delicious
  • Digg
  • Facebook
  • Twitter
  • Linkedin
  • Youtube