コード例 #1
0
ファイル: Executor.cs プロジェクト: rodrigofigueiredo9/SIMLAM
        private void SumarizarGrupo(ConfiguracaoRelatorio configuracao, GrupoDados grupo)
        {
            ColecaoDados sumario = new ColecaoDados();

            foreach (var sumarioConfig in configuracao.Sumarios)
            {
                ConfiguracaoCampo campo = configuracao.CamposSelecionados.Single(x => x.CampoId == sumarioConfig.CampoId);

                sumario.Colunas.Add(campo.Posicao, campo.Alias);
                var listaSumarios = sumarioConfig.ListarSumarios();

                foreach (var sumarioLinha in grupo.Sumarizacoes.Linhas)
                {
                    if (listaSumarios.Keys.Any(y => y == (eTipoSumario)sumarioLinha))
                    {
                        switch ((eTipoSumario)sumarioLinha)
                        {
                        case eTipoSumario.Contar:
                            sumario[sumarioLinha, campo.Posicao] = grupo.Dados.ItensDistintos(campo.Posicao);
                            break;

                        case eTipoSumario.Somar:
                            sumario[sumarioLinha, campo.Posicao] = grupo.Dados.Somar(campo.Posicao);
                            break;

                        case eTipoSumario.Media:
                            sumario[sumarioLinha, campo.Posicao] = grupo.Dados.Media(campo.Posicao);
                            break;

                        case eTipoSumario.Maximo:
                            sumario[sumarioLinha, campo.Posicao] = grupo.Dados.Maximo(campo.Posicao);
                            break;

                        case eTipoSumario.Minimo:
                            sumario[sumarioLinha, campo.Posicao] = grupo.Dados.Minimo(campo.Posicao);
                            break;
                        }
                    }
                    else
                    {
                        sumario[sumarioLinha, campo.Posicao] = null;
                    }
                }
                grupo.Sumarizacoes = sumario;
            }
        }
コード例 #2
0
ファイル: Executor.cs プロジェクト: rodrigofigueiredo9/SIMLAM
        private DadosRelatorio CarregarDados(ConfiguracaoRelatorio configuracao, List <List <ValoresBanco> > dados)
        {
            Dictionary <int, string> colunas = new Dictionary <int, string>();

            configuracao.CamposSelecionados.OrderBy(x => x.Posicao).ToList().ForEach(x => {
                colunas.Add(x.Posicao, x.Alias);
            });

            DadosRelatorio retorno = new DadosRelatorio(colunas);

            retorno.Nome           = configuracao.Nome;
            retorno.Totalizar      = configuracao.ContarRegistros;
            retorno.ComAgrupamento = configuracao.Agrupamentos.Count > 0;
            string     grupo      = null;
            GrupoDados grupoDados = null;
            int        linha      = 0;

            foreach (var item in dados)
            {
                int c = 0;
                foreach (var coluna in item)
                {
                    if (!retorno.ComAgrupamento)
                    {
                        retorno.Dados[linha, c] = coluna.Valor.ToString();
                    }
                    else
                    {
                        if (c == 0)
                        {
                            string grupoAtual = coluna.Valor.ToString();
                            if (grupo != grupoAtual)
                            {
                                grupo            = grupoAtual;
                                grupoDados       = retorno.CriarGrupo();
                                grupoDados.Campo = configuracao.Agrupamentos.Single(x => x.Alias == coluna.Chave).Campo.Alias;
                                grupoDados.Valor = grupo;
                                linha            = 0;
                            }
                        }
                        else
                        {
                            grupoDados.Dados[linha, (c - configuracao.Agrupamentos.Count)] = coluna.Valor.ToString();
                        }
                    }

                    c++;
                }
                linha++;
            }

            foreach (var campo in configuracao.CamposSelecionados.OrderBy(x => x.Posicao))
            {
                try
                {
                    retorno.Campos.Add(new ValoresBanco()
                    {
                        Chave = campo.Alias, Valor = campo.Tamanho.ToString(), DimensaoColuna = campo.Campo.DimensaoNome + "@" + campo.Campo.Nome
                    });
                }
                catch (Exception e)
                {
                    throw new Exception(campo.CampoId + " - " + campo.Alias + " - " + campo.Posicao + " - " + campo.Tamanho, e);
                }
            }

            return(retorno);
        }