Jump to content
rtavix

[Resolvido] Log de Importação para Usuário (Mensagem)

Recommended Posts

Pessoal não estou conseguindo fazer com que o log é mostrado para o usuário, o log seria esse:

 

if (listaprocinter.Exists(o => o.Interessado == interessado))
                            //loglbl.Text = loglbl.Text + "O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>";
                            log.Append("O interessado informado na linha " + linha + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

E também não esta salvando os dados do usuário que está importando o arquivo, que seria nessa linha:

 

aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                                                + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                                                + processo.Tribunal.NomeTribunal + ".", DateTime.Now);

 

Meu código que obtêm o Usuário autenticado:

#region Assembly Sefaz.Portal.Integracao.dll, v4.0.30319
// D:\Repositório SVN\SDP\SDPJ\branches\SDPJ-V3.1.0\SDPJ-102\packages\Sefaz.Portal.Integracao.dll
#endregion

using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Xml.Serialization;

namespace Sefaz.Portal.Integracao.WSAutorizacao
{
    [Serializable]
    [DebuggerStepThrough]
    [GeneratedCode("System.Xml", "4.0.30319.34234")]
    [XmlType(Namespace = "http://serviceintranet.sefaz.es.gov.br/")]
    [DesignerCategory("code")]
    public class Usuario
    {
        public Usuario();

        [XmlAttribute]
        public string CPF { get; set; }
        [XmlAttribute]
        public string Email { get; set; }
        [XmlAttribute]
        public string Login { get; set; }
        [XmlAttribute]
        public string Nome { get; set; }
        [XmlAttribute]
        public string NumFuncional { get; set; }
        public Sistema[] Sistemas { get; set; }
    }
}

Código completo:

 private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam, int indiceLinha)
        {
            Action<object> processamento = (dados) =>
            {
                /*if (NHibernate.Context.ThreadStaticSessionContext.HasBind(NhibernateHelper.SessionFactory.))*/

                NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.HelpThreading().OpenSession());

                /*try
                {
                    loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + NhibernateHelper.SessaoCorrente.IsConnected;
                }
                catch (Exception ex)
                {
                    loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + ex.Message;
                }*/
                /*var lista = ((IEnumerable<DataRow>)dados).FirstOrDefault();

                var processo = aplProcesso.consultar---ProcessoER(lista.ItemArray[1].ToString());*/

                foreach (var linha in (IEnumerable<DataRow>)dados)
                {
                    int i = 0;
                    i = i + 1;
                    List<Processo> listaProcessoExistente = new List<Processo>();
                    Processo processo = null;
                    Interessado interessado = new Interessado();

                    //busca o processo pelo nº judicial anterior ou atual
                    if (!linha.ItemArray[1].ToString().Equals(""))
                        processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[1].ToString());
                    if (processo == null)
                    {
                        if (!linha.ItemArray[2].ToString().Equals(""))
                            processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[2].ToString());
                    }
                    //busca o interessado por cpf/cnpj
                    if (linha.ItemArray[7].ToString().Length == 14)
                        interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString()));

                    if (linha.ItemArray[7].ToString().Length == 18)
                        interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString()));

                    if (processo != null)
                    {
                        //se o processo não for nulo busco todos procinter relacionados a ele
                        List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
                        if (listaprocinter.Exists(o => o.Interessado == interessado))
                            //loglbl.Text = loglbl.Text + "O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>";
                            log.Append("O interessado informado na linha " + linha + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

                        setProcInter(processo, interessado, linha);
                    }
                    else
                    {
                        //Novo Processo - 6.3
                        processo = new Processo();
                        processo.Interessado = interessado;
                        processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim();
                        processo.RenunciaCredito = "N";
                        processo.Situacao = new AplSituacao().ConsultarPorId(1);
                        processo.HonorarioDativo = "S";
                        processo.Reclamado = new AplReclamado().buscaItem(2);
                        processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
                        processo.TipoProcesso = "O";
                        if (linha.ItemArray[5].ToString().Contains("juizado"))
                            processo.Tribunal = new AplTribunal().buscaItem(71);
                        else
                            processo.Tribunal = new AplTribunal().buscaItem(3);
                        processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);

                        VaraExecucao vara = new VaraExecucao();
                        if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals(""))
                        {
                            List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim());
                            if (listaVaraComarca.Count != 0)
                            {
                                if (linha.ItemArray[4].ToString().Equals(""))
                                {
                                    vara = listaVaraComarca.Find(o => o.NumeroVara == null);
                                }
                                else
                                {
                                    vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim()));
                                }
                            }
                        }
                        if (vara != null && vara.Codigo != 0)
                        {
                            processo.VaraExecucao = vara;
                        }

                        //obter lista sem registros duplicados. (Robson)
                        var ListaSemDuplicados = listaGravarProcesso.Distinct().ToList();
                        aplProcesso.gravar(processo);
                        aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                                                + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                                                + processo.Tribunal.NomeTribunal + ".", DateTime.Now);
                        //log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>");

                        setProcInter(processo, interessado, linha);
                    }

                }//Fim For
                //ClientScript.RegisterStartupScript(typeof(string), "Carregando...", "<script>$('#progressbar').progressbar({value: 70});</script>");
                ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");

                if (listaGravarProcInter.Count != 0)
                {
                    foreach (ProcessoInteressado item in listaGravarProcInter)
                    {
                        //obter lista sem registros duplicados. (Robson)
                        var ListaSemDuplicados = listaGravarProcInter.Distinct().ToList();
                        aplProcessoInteressado.salvar(item);
                    }
                }


                if (listaLogsAuditoria.Count != 0)
                {
                    foreach (var item in listaLogsAuditoria)
                    {
                        aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                    }
                }
                logimportacao.Visible = true;
                loglbl.Text = log.ToString();
                //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
                ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
            };


            //else
            //{
            //    logimportacao.Visible = true;
            //    loglbl.Text = log.ToString();
            //    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");



            ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.HelpThreading());
            if (sessao != null)
            {
                if (sessao.Transaction != null && sessao.Transaction.IsActive)
                {
                    sessao.Transaction.Rollback();
                }
                else
                {
                    sessao.Flush();
                }
                sessao.Close();

            }
            else
            {
                logimportacao.Visible = true;
                loglbl.Text = log.ToString();
                ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
            }


            //Tarefas baseadas de forma assíncrona
            System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam);

            return tarefa_executar;
            logimportacao.Visible = true;
            loglbl.Text = log.ToString();
            //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
            ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
        }

Me ajudem por gentileza :/ 

Share this post


Link to post
Share on other sites

É dificil ajudar somente com essas informações.

Esta dando algum erro ? Já debugou pra ver se esta passando nas linhas de código que exibe o log e que salva no banco ? De repente tem algum if que esta evitando que passe por essas lihas.

Share this post


Link to post
Share on other sites
4 horas atrás, quintelab disse:

É dificil ajudar somente com essas informações.

Esta dando algum erro ? Já debugou pra ver se esta passando nas linhas de código que exibe o log e que salva no banco ? De repente tem algum if que esta evitando que passe por essas lihas.

Amigo, devido a lentidão que o sistema está apresentando no momento que eu vou tentar importar esse arquivo, fui obrigado a aprender na marra de trabalhar com as threading pois sabia que resolveria o meu problema, realmente resolveu, o problema que eu tive que adaptar os códigos existentes nesse novo modelo que coloquei logo acima, só que agora não faz o que fazia antes, que era salvar os logs do usuário e enviar os logs das mensagens.

 

Esse era o meu código anterior que causava a lentidão:

 

protected void importar_Click(object sender, EventArgs e)
        {

            Stopwatch relogio = new Stopwatch();
            relogio.Start();
            //Verifica se um arquivo foi selecionado
            if (selecionarArquivo.HasFile)
            {
                //Valida a extensão do arquivo:
                if (Path.GetExtension(selecionarArquivo.FileName) != ".xlsx" && Path.GetExtension(selecionarArquivo.FileName) != ".xls")
                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Somente arquivos em excel')</script>");

                else
                {
                    if (selecionarArquivo.FileContent != null)
                    {
                        string Excel = AppDomain.CurrentDomain.BaseDirectory + selecionarArquivo.FileName;
                        selecionarArquivo.SaveAs(Excel);

                        DataTable Dados = DadosExcel(Excel);
                        DataSet ds = new DataSet();

                        ds.Tables.Add(Dados);

                        if (ds.Tables.Count > 0)
                        {
                            bool layoutValido = VerificaLayout(ds);
                            if (!layoutValido)
                                ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>");
                            else
                            {
                                //Inicio da validação dos dados inseridos na planilha
                                int numLinhas = ds.Tables[0].Rows.Count;
                                //Validação básica necessária para importação. PS: NumLinhas-1 porque o arquivo tem a última linha com total, que é inútil à importação.
                                VerificacaoPreliminar((numLinhas - 1), ds);



                                //Inicio da rotina de repetição para leitura de todas as linhas, iniciando na célula B6
                                if (!arquivoInvalidado)
                                {

                                    //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '30%';</script>");
                                    //Verifica se existe mais de 1 interessado com mesmo CPF cadastrado, salva os interessados inexistentes e altera os cadastros q tem interessados duplicados.
                                    this.ValidaDuplicidadeInteressado();

                                    for (int i = 5; i < (numLinhas - 1); i++)
                                    {
                                        List<Processo> listaProcessoExistente = new List<Processo>();
                                        Processo processo = null;
                                        Interessado interessado = new Interessado();

                                        //busca o processo pelo nº judicial anterior ou atual
                                        if (!ds.Tables[0].Rows[i].ItemArray[1].ToString().Equals(""))
                                            processo = aplProcesso.consultar---ProcessoER(ds.Tables[0].Rows[i].ItemArray[1].ToString());
                                        if (processo == null)
                                        {
                                            if (!ds.Tables[0].Rows[i].ItemArray[2].ToString().Equals(""))
                                                processo = aplProcesso.consultar---ProcessoER(ds.Tables[0].Rows[i].ItemArray[2].ToString());
                                        }
                                        //busca o interessado por cpf/cnpj
                                        if (ds.Tables[0].Rows[i].ItemArray[7].ToString().Length == 14)
                                            interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(ds.Tables[0].Rows[i].ItemArray[7].ToString()));
                                        if (ds.Tables[0].Rows[i].ItemArray[7].ToString().Length == 18)
                                            interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(ds.Tables[0].Rows[i].ItemArray[7].ToString()));
                                        if (processo != null)
                                        {
                                            //se o processo não for nulo busco todos procinter relacionados a ele
                                            List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
                                            if (listaprocinter.Exists(o => o.Interessado == interessado))
                                                log.Append("O interessado informado na linha " + (i + 1) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");
                                            //foreach(var item in listaprocinter)
                                            //{
                                            //    if (item.Interessado == interessado)
                                            //        log.Append("O interessado informado na linha " + (i + 1) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");                                                 
                                            //}
                                            setProcInter(processo, interessado, ds, i);
                                        }
                                        else
                                        {
                                            //Novo Processo - 6.3
                                            processo = new Processo();

                                            processo.Interessado = interessado;

                                            processo.NumProcessoJudicial = ds.Tables[0].Rows[i].ItemArray[2].ToString().Trim();
                                            processo.RenunciaCredito = "N";
                                            processo.Situacao = new AplSituacao().ConsultarPorId(1);
                                            processo.HonorarioDativo = "S";
                                            processo.Reclamado = new AplReclamado().buscaItem(2);
                                            processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
                                            processo.TipoProcesso = "O";
                                            if (ds.Tables[0].Rows[i].ItemArray[5].ToString().Contains("juizado"))
                                                processo.Tribunal = new AplTribunal().buscaItem(71);
                                            else
                                                processo.Tribunal = new AplTribunal().buscaItem(3);
                                            processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);

                                            VaraExecucao vara = new VaraExecucao();
                                            if (!ds.Tables[0].Rows[i].ItemArray[3].ToString().Equals("") && !ds.Tables[0].Rows[i].ItemArray[5].ToString().Equals(""))
                                            {
                                                List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(ds.Tables[0].Rows[i].ItemArray[5].ToString().Trim(), ds.Tables[0].Rows[i].ItemArray[3].ToString().Trim());
                                                if (listaVaraComarca.Count != 0)
                                                {

                                                    if (ds.Tables[0].Rows[i].ItemArray[4].ToString().Equals(""))
                                                    {
                                                        vara = listaVaraComarca.Find(o => o.NumeroVara == null);
                                                    }
                                                    else
                                                    {
                                                        vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(ds.Tables[0].Rows[i].ItemArray[4].ToString().Trim()));
                                                    }
                                                }
                                            }
                                            if (vara != null && vara.Codigo != 0)
                                            {
                                                processo.VaraExecucao = vara;
                                            }

                                            //obter lista sem registros duplicados. (Robson)
                                            var ListaSemDuplicados = listaGravarProcesso.Distinct().ToList();
                                            aplProcesso.gravar(processo);
                                            aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                                                                    + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                                                                    + processo.Tribunal.NomeTribunal + ".", DateTime.Now);
                                            //log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>");

                                            setProcInter(processo, interessado, ds, i);
                                        }
                                    }//Fim For
                                    //ClientScript.RegisterStartupScript(typeof(string), "Carregando...", "<script>$('#progressbar').progressbar({value: 70});</script>");
                                    ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");

                                    if (listaGravarProcInter.Count != 0)
                                    {
                                        foreach (ProcessoInteressado item in listaGravarProcInter)
                                        {
                                            //obter lista sem registros duplicados. (Robson)
                                            var ListaSemDuplicados = listaGravarProcInter.Distinct().ToList();
                                            aplProcessoInteressado.salvar(item);
                                        }
                                    }
                                    if (listaLogsAuditoria.Count != 0)
                                    {
                                        foreach (var item in listaLogsAuditoria)
                                        {
                                            aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                                        }
                                    }
                                    logimportacao.Visible = true;
                                    loglbl.Text = log.ToString();
                                    //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
                                    ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
                                }
                                else
                                {
                                    logimportacao.Visible = true;
                                    loglbl.Text = log.ToString();
                                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                                }

                            }
                        }
                    }
                }
            }
            relogio.Stop();
Debug.WriteLine("#############"+relogio.Elapsed.ToString());
        }

 

 

 

Share this post


Link to post
Share on other sites
4 horas atrás, quintelab disse:

É dificil ajudar somente com essas informações.

Esta dando algum erro ? Já debugou pra ver se esta passando nas linhas de código que exibe o log e que salva no banco ? De repente tem algum if que esta evitando que passe por essas lihas.

Quintelab esse é o meu código usandos as threadings e adaptação do código:

 

/*Stopwatch relogio = new Stopwatch();
            relogio.Start();*/
            
            DataTable Dados = new DataTable();
            //Verifica se um arquivo foi selecionado
            if (selecionarArquivo.HasFile)
            {
                //Valida a extensão do arquivo:
                if (Path.GetExtension(selecionarArquivo.FileName) != ".xlsx" && Path.GetExtension(selecionarArquivo.FileName) != ".xls")
                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Somente arquivos em excel')</script>");
                else
                {

                    if (selecionarArquivo.FileContent != null)
                    {
                        string Excel = AppDomain.CurrentDomain.BaseDirectory + selecionarArquivo.FileName;
                        selecionarArquivo.SaveAs(Excel);
                        Dados = DadosExcel(Excel);

                        var registrosValidos = ((DataTable)Dados).Rows.OfType<DataRow>().Skip(5);
                        //Elimina a última linha
                        registrosValidos = registrosValidos.Take(registrosValidos.Count() - 1);

                        //ler de 100 em 100 regisros
                        int quantidade_por_pagina = 100;
                        int total_de_paginas;
                        //Conta os registros válidos
                        int qtd_total_registros = registrosValidos.Count();
                        //Realiza o calculo matemáticos para total de paginas.
                        total_de_paginas = (int)Math.Ceiling((double)qtd_total_registros / quantidade_por_pagina);

                        VerificacaoPreliminar(registrosValidos);
                        bool layoutValido = VerificaLayout(Dados);
                        
                        if (!layoutValido)
                            ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>");

                        else
                        {

                            //Criando as tarefas paralelas
                            List<System.Threading.Tasks.Task> TarefasParalelas = new List<System.Threading.Tasks.Task>();

                            if (!arquivoInvalidado)
                            {
                                //Verifica se existe mais de 1 interessado com mesmo CPF cadastrado, salva os interessados inexistentes e altera os cadastros que tem interessados duplicados.
                                this.ValidaDuplicidadeInteressado();

                                for (int j = 0; j < total_de_paginas; j++)
                                {

                                    var pagina = j;
                                    //leio as 100 linhas
                                    var linhasPorPagina = registrosValidos.Skip(pagina * quantidade_por_pagina).Take(quantidade_por_pagina);

                                    //Quebrando em 10 threads, vou quebrar a lista com a extenção criada abaixo
                                    var data_rows_divididos = linhasPorPagina.SplitList(10);

                                    foreach (var linhasDivididas in data_rows_divididos)
                                    {
                                        //ADICIONO A MINHA LISTA DE TAREFAS PARALELAS
                                        TarefasParalelas.Add(ProcessamentoTabela(linhasDivididas, j));
                                    }
                                }

                                //INICIOS AS TAREFAS PARALELAS
                                foreach (var tarefa in TarefasParalelas)
                                    tarefa.Start();

                                // AGORA ESPERO TODAS TAREFAS CONCLUIREM
                                System.Threading.Tasks.Task.WaitAll(TarefasParalelas.ToArray());

                                // ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");

                                if (listaGravarProcInter.Count != 0)
                                {
                                    foreach (ProcessoInteressado item in listaGravarProcInter)
                                    {
                                        aplProcessoInteressado.salvar(item);
                                    }
                                }

                                if (listaLogsAuditoria.Count != 0)
                                {
                                    foreach (var item in listaLogsAuditoria)
                                    {
                                        aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                                    }
                                }
                                  
                            }

                            else
                            {
                                logimportacao.Visible = true;
                                
                                ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                            }
                        }

                        
                        //}
                    }

                }
            }
            
            loglbl.Text = log.ToString();


            //Tempo de importação.
            /*relogio.Stop();
            Debug.WriteLine("#############" + relogio.Elapsed.ToString());*/
        }

        private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam, int indiceLinha)
        {
            Action<object> processamento = (dados) =>
            {
                /*if (NHibernate.Context.ThreadStaticSessionContext.HasBind(NhibernateHelper.SessionFactory.))*/

                NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.HelpThreading().OpenSession());

                /*try
                {
                    loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + NhibernateHelper.SessaoCorrente.IsConnected;
                }
                catch (Exception ex)
                {
                    loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + ex.Message;
                }*/
                /*var lista = ((IEnumerable<DataRow>)dados).FirstOrDefault();

                var processo = aplProcesso.consultar---ProcessoER(lista.ItemArray[1].ToString());*/

                foreach (var linha in (IEnumerable<DataRow>)dados)
                {

                    List<Processo> listaProcessoExistente = new List<Processo>();
                    Processo processo = null;
                    Interessado interessado = new Interessado();

                    //busca o processo pelo nº judicial anterior ou atual
                    if (!linha.ItemArray[1].ToString().Equals(""))
                        processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[1].ToString());
                    if (processo == null)
                    {
                        if (!linha.ItemArray[2].ToString().Equals(""))
                            processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[2].ToString());
                    }
                    //busca o interessado por cpf/cnpj
                    if (linha.ItemArray[7].ToString().Length == 14)
                        interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString()));

                    if (linha.ItemArray[7].ToString().Length == 18)
                        interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString()));

                    if (processo != null)
                    {
                        //se o processo não for nulo busco todos procinter relacionados a ele
                        List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
                        if (listaprocinter.Exists(o => o.Interessado == interessado))
                            //loglbl.Text = loglbl.Text + "O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>";
                            log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

                        setProcInter(processo, interessado, linha);
                    }
                    else
                    {
                        //Novo Processo - 6.3
                        processo = new Processo();
                        processo.Interessado = interessado;
                        processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim();
                        processo.RenunciaCredito = "N";
                        processo.Situacao = new AplSituacao().ConsultarPorId(1);
                        processo.HonorarioDativo = "S";
                        processo.Reclamado = new AplReclamado().buscaItem(2);
                        processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
                        processo.TipoProcesso = "O";
                        if (linha.ItemArray[5].ToString().Contains("juizado"))
                            processo.Tribunal = new AplTribunal().buscaItem(71);
                        else
                            processo.Tribunal = new AplTribunal().buscaItem(3);
                        processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);

                        VaraExecucao vara = new VaraExecucao();
                        if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals(""))
                        {
                            List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim());
                            if (listaVaraComarca.Count != 0)
                            {
                                if (linha.ItemArray[4].ToString().Equals(""))
                                {
                                    vara = listaVaraComarca.Find(o => o.NumeroVara == null);
                                }
                                else
                                {
                                    vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim()));
                                }
                            }
                        }
                        if (vara != null && vara.Codigo != 0)
                        {
                            processo.VaraExecucao = vara;
                        }
                        aplProcesso.gravar(processo);
                        
                        aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                        + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                        + processo.Tribunal.NomeTribunal + ".", DateTime.Now);

                        log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + indiceLinha.ToString() + " foi cadastrado com sucesso. <br>");
                        
                        //ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");

                        setProcInter(processo, interessado, linha);
                    }

                    log.Append("Importado com sucesso! - " + indiceLinha.ToString());
                }

                ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.HelpThreading());
                if (sessao != null)
                {
                    if (sessao.Transaction != null && sessao.Transaction.IsActive)
                    {
                        sessao.Transaction.Rollback();
                    }
                    else
                    {
                        sessao.Flush();
                    }
                    sessao.Close();
                }

            };
            //Tarefas baseadas de forma assíncrona
            System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam);

            return tarefa_executar;
        }

E ao compilar o mesmo passa nessas linhas. Antes eu utilizava um for ao invés de forache:

for (int i = 5; i < (numLinhas - 1); i++)
                                    {

mas não funciona com foreach :/

 

4 horas atrás, quintelab disse:

É dificil ajudar somente com essas informações.

Esta dando algum erro ? Já debugou pra ver se esta passando nas linhas de código que exibe o log e que salva no banco ? De repente tem algum if que esta evitando que passe por essas lihas.

E o log que é mostrado ao importar, apresenta a seguinte mensagem para o usuário:

 

Log de Importação:
 

O interessado informado na linha System.Data.DataRow foi adicionado novamente ao processo 0000168-05.2017.8.08.0035 
O interessado informado na linha System.Data.DataRow foi adicionado novamente ao processo 0002951-04.2016.8.08.0035 
O interessado informado na linha System.Data.DataRow foi adicionado novamente ao processo 0000141-41.2017.8.08.0061 

Share this post


Link to post
Share on other sites
10 horas atrás, quintelab disse:

É dificil ajudar somente com essas informações.

Esta dando algum erro ? Já debugou pra ver se esta passando nas linhas de código que exibe o log e que salva no banco ? De repente tem algum if que esta evitando que passe por essas lihas.

Quintelab, brother, eu dei uma ajeitada aqui no código e o mesmo está funcionando entre aspas, acontece que eu não consigo percorrer essa linha no meu código para mostrar o log para o usuário:

log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

até aqui nessa linha onde coloco o brackpoint ele passa:

if (listaprocinter.Exists(o => o.Interessado == interessado))

Porém quando passa aí, ele caí direto nessa linha:

setProcInter(processo, interessado, linha);

Se puder me ajudar por gentileza, agradeço, só acho estranho porque quando eu utilizava o for no lugar do foreach, passava numa boa, agora por ter mudado toda estrutura não esta passando nessa linha que te disse amigo, tá foids :/

 

Alterei o código, acho que ficou melhor para entender.

 

Segue:

private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam, int indiceLinha)
        {
            Action<object> processamento = (dados) =>
            {
                if (!arquivoInvalidado)
                {
                    this.ValidaDuplicidadeInteressado();
                    /*if (NHibernate.Context.ThreadStaticSessionContext.HasBind(NhibernateHelper.SessionFactory.))*/

                    NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.HelpThreading().OpenSession());

                    /*try
                    {
                        loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + NhibernateHelper.SessaoCorrente.IsConnected;
                    }
                    catch (Exception ex)
                    {
                        loglbl.Text += DateTime.Now.ToString("dd/MM/yyyy ss:fff ") + " ## " + ex.Message;
                    }*/
                    /*var lista = ((IEnumerable<DataRow>)dados).FirstOrDefault();

                    var processo = aplProcesso.consultar---ProcessoER(lista.ItemArray[1].ToString());*/

                    foreach (var linha in (IEnumerable<DataRow>)dados)
                    {
                        int i = 0;
                        i = i + 1;
                        List<Processo> listaProcessoExistente = new List<Processo>();
                        Processo processo = null;
                        Interessado interessado = new Interessado();

                        //busca o processo pelo nº judicial anterior ou atual
                        if (!linha.ItemArray[1].ToString().Equals(""))
                            processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[1].ToString());
                        if (processo == null)
                        {
                            if (!linha.ItemArray[2].ToString().Equals(""))
                                processo = aplProcesso.consultar---ProcessoER(linha.ItemArray[2].ToString());
                        }

                        //busca o interessado por cpf/cnpj
                        if (linha.ItemArray[7].ToString().Length == 14)
                            interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString()));

                        if (linha.ItemArray[7].ToString().Length == 18)
                            interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString()));
                        if (processo != null)
                        {
                            //se o processo não for nulo busco todos procinter relacionados a ele
                            List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
                            if (listaprocinter.Exists(o => o.Interessado == interessado))
                            
                                //loglbl.Text = loglbl.Text + "O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>";
                                log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

                            
                            setProcInter(processo, interessado, linha);
                        }

                        else
                        {
                            //Novo Processo - 6.3
                            processo = new Processo();
                            processo.Interessado = interessado;
                            processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim();
                            processo.RenunciaCredito = "N";
                            processo.Situacao = new AplSituacao().ConsultarPorId(1);
                            processo.HonorarioDativo = "S";
                            processo.Reclamado = new AplReclamado().buscaItem(2);
                            processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
                            processo.TipoProcesso = "O";
                            if (linha.ItemArray[5].ToString().Contains("juizado"))
                                processo.Tribunal = new AplTribunal().buscaItem(71);
                            else
                                processo.Tribunal = new AplTribunal().buscaItem(3);
                            processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);

                            VaraExecucao vara = new VaraExecucao();
                            if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals(""))
                            {
                                List<VaraExecucao> listaVaraComarca = aplVaraExecucao.Consultar---omeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim());
                                if (listaVaraComarca.Count != 0)
                                {
                                    if (linha.ItemArray[4].ToString().Equals(""))
                                    {
                                        vara = listaVaraComarca.Find(o => o.NumeroVara == null);
                                    }
                                    else
                                    {
                                        vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim()));
                                    }
                                }
                            }
                            if (vara != null && vara.Codigo != 0)
                            {
                                processo.VaraExecucao = vara;
                            }
                            aplProcesso.gravar(processo);
                            aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
                                                    + ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
                                                    + processo.Tribunal.NomeTribunal + ".", DateTime.Now);
                            //log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>");

                            setProcInter(processo, interessado, linha);
                        }


                    }//Fim Foreach
                    //ClientScript.RegisterStartupScript(typeof(string), "Carregando...", "<script>$('#progressbar').progressbar({value: 70});</script>");
                    ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");

                    if (listaGravarProcInter.Count != 0)
                    {
                        foreach (ProcessoInteressado item in listaGravarProcInter)
                        {
                            aplProcessoInteressado.salvar(item);
                        }
                    }

                    if (listaLogsAuditoria.Count != 0)
                    {
                        foreach (var item in listaLogsAuditoria)
                        {
                            aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
                        }
                    }
                    logimportacao.Visible = true;
                    loglbl.Text = log.ToString();
                    //ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
                    ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");

                }
                else
                {
                    logimportacao.Visible = true;
                    loglbl.Text = log.ToString();
                    ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
                }
            };
            
            ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.HelpThreading());
            if (sessao != null)
            {
                if (sessao.Transaction != null && sessao.Transaction.IsActive)
                {
                    sessao.Transaction.Rollback();
                }
                else
                {
                    sessao.Flush();
                }
                sessao.Close();

            }
             //Tarefas baseadas de forma assíncrona
            System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam);

            return tarefa_executar;

           
        }

 

Share this post


Link to post
Share on other sites

Nesse caso você tem que ver se sua lógica esta certa.

 

Só pode adicionar log se o interessado estiver na listaprocinter? Precisa desse if antes do log ?

 

if (listaprocinter.Exists(o => o.Interessado == interessado)) 
log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

 

  • +1 1

Share this post


Link to post
Share on other sites
44 minutos atrás, quintelab disse:

Nesse caso você tem que ver se sua lógica esta certa.

 

Só pode adicionar log se o interessado estiver na listaprocinter? Precisa desse if antes do log ?

 


if (listaprocinter.Exists(o => o.Interessado == interessado)) 
log.Append("O interessado informado na linha " + indiceLinha.ToString() + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");

 

Se o processo não for nulo eu relaciono todos os procinter relacionado a ele, e verifico se o interessado existe.

Share this post


Link to post
Share on other sites
12 horas atrás, quintelab disse:

Parece que não esta passando pela linha do log por que o interessado não existe.

Quando você debuga o valor da variável interessado existe na sua lista ?

Amigão resolvi o problema em partes, era o if que acabei implementando no lugar errado. Mas estou precisando muita da sua ajuda nesse outro tópico que criei, tipo eu tenho na minha planilha cabeçalho que ocupa as 5 primeiras linhas. Então eu preciso pegar o índice da 6ª linha a diante e passar o log, não sei como resolver isso. Porque o que já existe hoje em dia não funciona, quando compilei mostrou a seguinte mensagem: A célula G por exemplo da linha 1 deve ser preenchida, o correto seria mostrar que a Célula G da linha 6 deve ser preenchida, pois nos meus logs existem campos obrigatórios que a planilha deverá ter. Te peço por gentileza, me ajude por favor, o link está abaixo.

 

https://forum.imasters.com.br/topic/565789-pegar-o-indice-de-uma-linha/

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Joseph Amupolo
      Eu estou começando aprender a linguagem C, alguem  pode me ajudar com esse excercício?
      Desenvolver um sistema para catálogo de produtos em um supermercado
       
      Os itens devem conter:
      • Código do produto
      • Descrição
      • Quantidade em estoque
      • Valor (Em Reais)
       
      O sistema deve oferecer um menu ao usuário, permitindo as seguintes operações:
      1. Cadastrar produto
      2. Remover produto
      3. Consultar produto
      4. Resumo do estoque
      5. Sair
    • By luiz-om
      Estou começando a aprender c#, e estou com a seguinte duvida. Tenho as tabelas lote, leitura e consumo. A tabela leitura herda de lote o ID. um lote tem muitas leituras. E uma leitura tem um consumo.
      A real duvida e a seguinte: quando faço a inserção de uma leitura o consumo já é salvo automático, porém quero buscar a última leitura inserida com aquele ID fazer a subtração do número dela pra poder gerar o valor certo na tabela consumo. e não estou conseguindo fazer isso.
      [Table("Lote")] public class Lote { [Key] public int Id { get; set; } [Required] [MinLength(2, ErrorMessage ="O nome deve ter no minimo 2 caracters")] [MaxLength(140, ErrorMessage ="O nome pode ter no maximo 140 caracteres")] public string Proprietario { get; set; } public string CPF { get; set; } //Gera um checkbox public Boolean Socio { get; set; } public string Cavalete { get; set; } public virtual ICollection<Leitura> Leituras { get; set; } } [Table("Leitura")] public class Leitura { [Key] public int Id { get; set; } [ForeignKey("Lote")] public int LoteId { get; set; } public DateTime DataLeitura { get; set; } public int NumeroLeitura { get; set; } public virtual Lote Lote { get; set; } public virtual Consumo Consumo { get; set; } } public class Consumo { [Key, ForeignKey("Leitura")] public int Id { get; set; } public Double Valor { get; set; } public DateTime? DataPagamento { get; set; } public virtual Leitura Leitura { get; set; } } A parte de create da controller é essa
      [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "Id,LoteId,DataLeitura,NumeroLeitura")] Leitura leitura) { if (ModelState.IsValid) { //aki tudo que ja tentei /* * var leitura2 = from l in db.Leitura select l; leitura2 = leitura2.OrderByDescending(l => l.Id); db.Leitura.Where(l => l.LoteId == leitura.LoteId).OrderByDescending(l=> l.NumeroLeitura); // db.Leitura.leitura2.NumeroLeitura = db.Leitura.Where(l => l.LoteId == leitura.LoteId).FirstAsync; // db2.Leitura.Find(leitura2.LoteId).; var sql = db.Leitura.SqlQuery("select ID from Leitura Order by ID DESC;"); */ var consumo = new Consumo(); consumo.Leitura = leitura; //Essa parte que faz a conta apra salvar o consumo consumo.Valor =( leitura.NumeroLeitura) * 0.71; //quero fazer +- isso //consumo.Valor = (leitura.NumeroLeitura< <- ESSE SERIA O VALOR DA LEITURA ANTERIOR> - leitura.NumeroLeitura) * 0.71; db.Leitura.Add(leitura); db.Consumo.Add(consumo); db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.LoteId = new SelectList(db.Lote, "Id", "CPF", leitura.LoteId); return View(leitura); }
    • By Packman1001
      Olá, senhores, estou com dificuldades em 6 questões.
      Irei mandar uma agora apenas para ver se conseguem me explicar ou criar um código e comentar linha por linha. Tenho dificuldade extrema de entender, mas não tenho vergonha de admitir. Estou correndo atrás do prejuízo e aprendendo da maneira que posso.
      Eis a questão:
      Motivação
      Flavinho acabou de chegar do supermercado com K produtos na sacola, mas perdeu o recibo da compra. Ele está tentando lembrar dos preços de cada um dos produtos e precisa da sua ajuda. Por enquanto ele consegue se lembrar das seguintes informações:
      ·         O valor total da compra foi de R reais;
      ·         Os valores dos produtos eram números inteiros distintos.
      Por exemplo, se R=12 e K=3, temos as seguintes possíveis combinações de preços para os três produtos: {1,2,9}, {1,3,8}, {1,4,7}, {1,5,6}, {2,3,7}, {2,4,6} ou {3,4,5}.
       
      Ação
      Seu programa deve computar a quantidade de possíveis combinações de preços para os K produtos.
       
      Entrada 
      A primeira linha da entrada contém dois inteiros R e K, indicando respectivamente o valor total do recibo e o número de produtos comprados.
       
      Saída
      Imprima uma linha contendo um inteiro representando a quantidade de possíveis combinações de preços para os K produtos.
       
      Restrições
      ·         1 ≤ R ≤ 100
      ·         1 ≤ K ≤ 20
       
      Exemplos

       
      >>
      12 3
      <<
      7
      >>
      10 5
      <<
      0
      >>
      10 2
      <<
      4
       
      Preciso do código que passe nesses casos de testes e que por ventura, me expliquem o que cada linha significa.
      Não tenho muito mais a dizer. Obrigado por vossas atenções, de verdade.
       
       
    • By Leon Martin
      Boa tarde pessoal, preciso de uma ajuda urgente. Vcs tem alguma ideia de como eu faço esse programa? 
       
      Enunciado:
      Na teoria dos sistemas define-se o elemento MINMAX de uma matriz como sendo o maior elemento da linha onde se encontra o menor elemento da matriz. Faça um programa que carregue uma matriz 4 x 7 com números reais, calcule e mostre seu MINMAX e sua posição (linha e coluna).
       
      Exemplo: int MAT[4][7]
      Min elemento da matriz esta na MAT[1][3] = -19 (Linha Posição 1; Coluna Posição 3)
      Max elemento da linha onde esta o min elemento da matriz esta na MAT[1][5] = 101 (Linha Posição 1; Coluna Posição 5)
       
        0
      1
      2
      3
      4
      5
      6
      0
      3
      33
      9
      2
      15
      3
      22
      1
      5
      4
      76
      -19
      93
      101
      32
      2
      3
      -1
      43
      1
      554
      21
      53
      3
      55
      34
      1231
      212
      664
      234
      13413
       
    • By guiarodrigues1
      Alguém poderia me ajudar em como colocar calculo de dilatação linear / superficial / volumétrica e de sólidos no DevC?
      Não estou conseguindo sair do lugar.
       
      Caso alguém queira mais informações segue em anexo link para baixar.
      Grato.
      Baixar PDF.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.