/// <summary>
        /// Compara as duas listas
        /// </summary>
        /// <param name="pCaminho1"></param>
        /// <param name="pCaminho2"></param>
        /// <param name="resultado"></param>
        /// <returns></returns>
        public bool CompararListas(string pCaminho1, string pCaminho2, out ObjetoResultadoComparacao resultado)
        {
            ObjetoCabecalho cabecalho = new ObjetoCabecalho(pCaminho1, pCaminho2);

            Dictionary <string, List <ObjetoComparacaoLista> > listaMateriais1 = CriaObjetosComparacaoLista(pCaminho1);
            Dictionary <string, List <ObjetoComparacaoLista> > listaMateriais2 = CriaObjetosComparacaoLista(pCaminho2);

            List <DivergenciaEntreEstruturaLista> divergenciasMesmaLista = new List <DivergenciaEntreEstruturaLista>();

            divergenciasMesmaLista.AddRange(ComparaEstruturasUmaLista(listaMateriais1, "Lista Original"));
            divergenciasMesmaLista.AddRange(ComparaEstruturasUmaLista(listaMateriais2, "Lista Nova"));

            List <string> estruturasComuns = EstruturasComuns(listaMateriais1, listaMateriais2, out List <string> soNa1, out List <string> soNa2);

            resultado = new ObjetoResultadoComparacao(cabecalho, soNa1, soNa2, divergenciasMesmaLista);

            foreach (string estrutura in estruturasComuns)
            {
                var objeto1 = listaMateriais1.FirstOrDefault(x => FuncoesUteis.ComparaNomeEstruturas(x.Key, estrutura));

                var objeto2 = listaMateriais2.FirstOrDefault(x => FuncoesUteis.ComparaNomeEstruturas(x.Key, estrutura));

                resultado.ListaEstruturasComparadas.Add(ComparaEstruturas(objeto1.Value, objeto2.Value, estrutura));
            }

            return(true);
        }
Esempio n. 2
0
        public static void EscreveExcel(string pNomeArquivo, ObjetoResultadoComparacao pResultadoComparacao)
        {
            //object[][] saida = new object[3][] { new string[2] { "A", "B" }, new string[2] { "C", "D" }, new string[2] { "E", "F" } };

            string nomeComExt = pNomeArquivo;

            Stream k = GetResourceFileStream("Template");

            using (var fileStream = File.Create(nomeComExt))
            {
                k.Seek(0, SeekOrigin.Begin);
                k.CopyTo(fileStream);
            }

            WorkBook wb = WorkBook.ReadExcelFile(nomeComExt);

            WorkSheet abaNcs       = wb.GetWorksheetByName("PMV-NCs");
            WorkSheet abaMelhorias = wb.GetWorksheetByName("PMV-Melhorias");

            //dados = lista de listas onde cada lista é uma linha
            var dados = abaNcs.Data;

            //aba.WriteData(0, 0, saida);
            EscreveDivergenciasExcel(abaNcs, pResultadoComparacao, _primeiraLinhaNCExcel, true);

            EscreveDivergenciasExcel(abaMelhorias, pResultadoComparacao, _primeiraLinhaMelhoriaExcel, false);

            wb.Save();
        }
Esempio n. 3
0
        public static void EscreveTxt(string pNomeArquivo, ObjetoResultadoComparacao pResultadoComparacao)
        {
            string nome = pNomeArquivo + ".txt";

            StringBuilder strBuilder = new StringBuilder();

            strBuilder.AppendLine(pResultadoComparacao.ObjetoCabecalho.EscreveCabecalho());

            foreach (EstruturaComparacao estrutura in pResultadoComparacao.ListaEstruturasComparadas)
            {
                strBuilder.AppendLine(estrutura.NomeEstruturaSaida);
                strBuilder.AppendLine();

                if (estrutura.PosicoesSomenteListaOriginal.Count > 0)
                {
                    strBuilder.AppendLine(string.Format("   Posições não encontradas na lista original: {0}", string.Join(", ", estrutura.PosicoesSomenteListaOriginal.Distinct())));
                    strBuilder.AppendLine();
                }

                if (estrutura.PosicoesSomenteListaNova.Count > 0)
                {
                    strBuilder.AppendLine(string.Format("   Posições não encontradas na lista nova: {0}", string.Join(", ", estrutura.PosicoesSomenteListaNova.Distinct())));
                    strBuilder.AppendLine();
                }

                StringBuilder divergencias = new StringBuilder();

                StringBuilder melhorias = new StringBuilder();

                bool temDivergencia = false;
                bool temMelhoria    = false;

                foreach (PosicaoComparacao posicao in estrutura.ListaPosicoesComErros)
                {
                    if (posicao.EscreveAlteracoes(true, out string alteracoes))
                    {
                        divergencias.AppendLine(alteracoes);
                        temDivergencia = true;
                    }
                }

                foreach (PosicaoComparacao posicao in estrutura.ListaPosicoesComErros)
                {
                    if (posicao.EscreveAlteracoes(false, out string alteracoes))
                    {
                        melhorias.AppendLine(alteracoes);
                        temMelhoria = true;
                    }
                }

                if (temDivergencia)
                {
                    strBuilder.AppendLine("   Divergências:");
                    strBuilder.AppendLine();

                    strBuilder.Append(divergencias.ToString());
                }

                if (temMelhoria)
                {
                    strBuilder.AppendLine("   Melhorias:");
                    strBuilder.AppendLine();

                    strBuilder.AppendLine(melhorias.ToString());
                }

                if (!temMelhoria && !temDivergencia)
                {
                    strBuilder.AppendLine("   Todas as posições na estrutura estão iguais entre as listas");
                }
            }

            if (pResultadoComparacao.ListaDivergenciasMesmaLista.Count > 0)
            {
                strBuilder.AppendLine();
                strBuilder.AppendLine("Posições que estão com informações divergente entre estruturas de uma mesma lista:");

                foreach (DivergenciaEntreEstruturaLista divergencia in pResultadoComparacao.ListaDivergenciasMesmaLista)
                {
                    strBuilder.AppendLine(string.Format("   • {0} na {1} : {2}", divergencia.Posicao, divergencia.ListaErrada, string.Join(", ", divergencia.EstruturasQueContem)));
                }
            }

            if (pResultadoComparacao.EstruturasSomenteListaOriginal.Count > 0)
            {
                strBuilder.AppendLine("Estruturas que estão na Lista Original e não foram encontradas na Lista Nova:");

                foreach (string estrutura in pResultadoComparacao.EstruturasSomenteListaOriginal)
                {
                    strBuilder.AppendLine(string.Format("   • {0}", estrutura));
                }
            }

            if (pResultadoComparacao.EstruturasSomenteListaNova.Count > 0)
            {
                strBuilder.AppendLine("Estruturas que estão na Lista Nova e não foram encontradas na Lista Original:");

                foreach (string estrutura in pResultadoComparacao.EstruturasSomenteListaNova)
                {
                    strBuilder.AppendLine(string.Format("   • {0}", estrutura));
                }
            }

            using (StreamWriter outputFile = new StreamWriter(nome, false))
            {
                outputFile.Write(strBuilder.ToString());
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Escreve os resultados contidos no ObjetoResultadoComparacao no arquivo Excel
        /// </summary>
        /// <param name="pAbaNcs"></param>
        /// <param name="pResultado"></param>
        /// <param name="pIndexPrimeiraLinha"></param>
        /// <param name="pNCOuMelhoria"></param>
        public static void EscreveDivergenciasExcel(WorkSheet pAbaNcs, ObjetoResultadoComparacao pResultado, int pIndexPrimeiraLinha, bool pNCOuMelhoria)
        {
            List <string[]> listaTextosLinhas = new List <string[]>();

            foreach (EstruturaComparacao estrutura in pResultado.ListaEstruturasComparadas)
            {
                //string codigoEstrutura = estrutura.NomeEstruturaSaida.Split('-').First();
                string codigoEstrutura = estrutura.NomeEstruturaSaida;

                foreach (PosicaoComparacao posicao in estrutura.ListaPosicoesComErros)
                {
                    List <ErroPosicao> errosConsiderar = posicao.ListaErrosPosicao.Where(x => x.NcOuMelhoria == pNCOuMelhoria).ToList();

                    if (errosConsiderar.Count > 0)
                    {
                        List <string> linha = new List <string>();

                        linha.Add(posicao.NumeracaoString);

                        string descricaoErro = string.Join("; ", errosConsiderar.Select(x => x.EscreveErroExcel()));

                        linha.Add(descricaoErro);

                        linha.Add("");
                        linha.Add(codigoEstrutura);

                        listaTextosLinhas.Add(linha.ToArray());
                    }
                }

                if (pNCOuMelhoria)
                {
                    foreach (string posicao in estrutura.PosicoesSomenteListaOriginal.Distinct())
                    {
                        List <string> linha = new List <string>();

                        linha.Add(posicao);

                        string descricaoErro = string.Format("Posição {0} eliminada", posicao);

                        linha.Add(descricaoErro);

                        linha.Add("");
                        linha.Add(codigoEstrutura);

                        listaTextosLinhas.Add(linha.ToArray());
                    }

                    foreach (string posicao in estrutura.PosicoesSomenteListaNova.Distinct())
                    {
                        List <string> linha = new List <string>();

                        linha.Add(posicao);

                        string descricaoErro = string.Format("Criada posição {0}", posicao);

                        linha.Add(descricaoErro);

                        linha.Add("");
                        linha.Add(codigoEstrutura);

                        listaTextosLinhas.Add(linha.ToArray());
                    }
                }
            }

            if (pNCOuMelhoria)
            {
                foreach (DivergenciaEntreEstruturaLista divergenciaMesmaLista in pResultado.ListaDivergenciasMesmaLista)
                {
                    List <string> linha = new List <string>();

                    linha.Add(divergenciaMesmaLista.Posicao);

                    string descricaoErro = string.Format(divergenciaMesmaLista.EscreveErroExcel());

                    linha.Add(descricaoErro);

                    listaTextosLinhas.Add(linha.ToArray());
                }

                int erro = 1;
                foreach (string estrutura in pResultado.EstruturasSomenteListaOriginal)
                {
                    List <string> linha = new List <string>();

                    linha.Add(string.Format("ENE-{0}", erro));
                    erro++;

                    string descricaoErro = string.Format("Estrutura {0} não encontrada na lista nova", estrutura);

                    linha.Add(descricaoErro);

                    listaTextosLinhas.Add(linha.ToArray());
                }

                foreach (string estrutura in pResultado.EstruturasSomenteListaNova)
                {
                    List <string> linha = new List <string>();

                    linha.Add(string.Format("ENE-{0}", erro));
                    erro++;

                    string descricaoErro = string.Format("Estrutura {0} não encontrada na lista original", estrutura);

                    linha.Add(descricaoErro);

                    listaTextosLinhas.Add(linha.ToArray());
                }



                pAbaNcs.WriteData(pIndexPrimeiraLinha, 2, listaTextosLinhas.ToArray());
            }
            else
            {
                pAbaNcs.WriteData(pIndexPrimeiraLinha, 0, listaTextosLinhas.ToArray());
            }
        }