public void CompletarConfiguracao(ConfiguracaoRelatorio configuracao)
        {
            configuracao.FonteDados = _fatoBus.Obter(configuracao.FonteDadosId);

            foreach (var campo in configuracao.CamposSelecionados)
            {
                campo.Campo = configuracao.FonteDados.Campos.SingleOrDefault(c => c.Id == campo.CampoId);
            }

            foreach (var campo in configuracao.Ordenacoes)
            {
                campo.Campo = configuracao.FonteDados.Campos.SingleOrDefault(c => c.Id == campo.CampoId);
            }

            foreach (var termo in configuracao.Termos)
            {
                if ((eTipoTermo)termo.Tipo == eTipoTermo.Filtro)
                {
                    termo.Campo = configuracao.FonteDados.Campos.SingleOrDefault(c => c.Id == termo.CampoId);
                }
            }

            foreach (var campo in configuracao.Sumarios)
            {
                campo.Campo = configuracao.FonteDados.Campos.SingleOrDefault(c => c.Id == campo.CampoId);
            }

            foreach (var campo in configuracao.Agrupamentos)
            {
                campo.Campo = configuracao.FonteDados.Campos.SingleOrDefault(c => c.Id == campo.CampoId);
            }
        }
        public ActionResult ObterOrdenarColunas(ConfiguracaoRelatorio configuracao)
        {
            PersonalizadoVM vm = new PersonalizadoVM();

            vm.ConfiguracaoRelatorio = configuracao;
            vm.ConfiguracaoRelatorio.CamposSelecionados = vm.ConfiguracaoRelatorio.CamposSelecionados.OrderBy(x => x.Posicao).ToList();
            return(PartialView("OrdenarColunas", vm));
        }
        public ActionResult ObterOrdenarValores(ConfiguracaoRelatorio configuracao)
        {
            PersonalizadoVM vm = new PersonalizadoVM();

            vm.ConfiguracaoRelatorio            = configuracao;
            vm.ConfiguracaoRelatorio.FonteDados = _fatoBus.Obter(vm.ConfiguracaoRelatorio.FonteDados.Id);
            vm.DimensoesLst = ViewModelHelper.CriarSelectList(configuracao.FonteDados.DimensoesLst, false, false);
            return(PartialView("OrdenarValores", vm));
        }
        public ActionResult ObterFiltros(ConfiguracaoRelatorio configuracao)
        {
            PersonalizadoVM vm = new PersonalizadoVM();

            vm.ConfiguracaoRelatorio            = configuracao;
            vm.ConfiguracaoRelatorio.FonteDados = _fatoBus.Obter(vm.ConfiguracaoRelatorio.FonteDados.Id);
            vm.OperadoresLst = ViewModelHelper.CriarSelectList(_bus.ObterOperadores(null), false, false);
            return(PartialView("Filtros", vm));
        }
Beispiel #5
0
 public RelTratamento(VO.Ciclos ciclo, int opcao, string empresa, string comentario, ConfiguracaoRelatorio configRelatorio)
 {
     InitializeComponent();
     this.ciclo           = ciclo;
     this.opcao           = opcao;
     this.empresa         = empresa;
     this.comentario      = comentario;
     this.configRelatorio = configRelatorio;
 }
        public ActionResult ObterSumarizar(ConfiguracaoRelatorio configuracao)
        {
            PersonalizadoVM vm = new PersonalizadoVM();

            vm.ConfiguracaoRelatorio = configuracao;
            vm.ConfiguracaoRelatorio.CamposSelecionados = vm.ConfiguracaoRelatorio.CamposSelecionados
                                                          .Where(x => x.Campo.TipoDados == (int)eTipoDados.Inteiro || x.Campo.TipoDados == (int)eTipoDados.Real)
                                                          .OrderBy(x => x.Campo.Alias).OrderBy(x => x.Campo.DimensaoNome).ToList();

            return(PartialView("Sumarizar", vm));
        }
Beispiel #7
0
        private void SumarizarTotal(ConfiguracaoRelatorio configuracao, DadosRelatorio dados)
        {
            foreach (var sumarioConfig in configuracao.Sumarios)
            {
                ConfiguracaoCampo campo = configuracao.CamposSelecionados.Single(x => x.CampoId == sumarioConfig.CampoId);
                var listaSumarios       = sumarioConfig.ListarSumarios();

                foreach (var sumarioLinha in dados.Sumarizacoes.Linhas.OrderBy(x => x))
                {
                    var  itens       = dados.Dados.Itens(campo.Posicao).Concat(dados.Grupos.SelectMany(g => g.Dados.Itens(campo.Posicao)));
                    bool possuiItens = itens != null && itens.Count() > 0;

                    if (itens == null || itens.Count() == 0)
                    {
                        dados.Sumarizacoes[sumarioLinha, campo.Posicao] = 0;
                        continue;
                    }

                    if (listaSumarios.Keys.Any(y => y == (eTipoSumario)sumarioLinha))
                    {
                        switch ((eTipoSumario)sumarioLinha)
                        {
                        case eTipoSumario.Contar:
                            dados.Sumarizacoes[sumarioLinha, campo.Posicao] = itens.Distinct().Count();
                            break;

                        case eTipoSumario.Somar:
                            dados.Sumarizacoes[sumarioLinha, campo.Posicao] = possuiItens ? itens.Sum(x => Convert.ToDouble(((x != null && x.ToString() != string.Empty) ? x : 0))) : 0;
                            break;

                        case eTipoSumario.Media:
                            dados.Sumarizacoes[sumarioLinha, campo.Posicao] = (possuiItens ? itens.Average(x => Convert.ToDouble(((x != null && x.ToString() != string.Empty) ? x : 0))) : 0).ToString("N2").Replace(".", string.Empty);
                            break;

                        case eTipoSumario.Maximo:
                            dados.Sumarizacoes[sumarioLinha, campo.Posicao] = possuiItens ? itens.Max(x => Convert.ToDouble(((x != null && x.ToString() != string.Empty) ? x : 0))) : 0;
                            break;

                        case eTipoSumario.Minimo:
                            dados.Sumarizacoes[sumarioLinha, campo.Posicao] = possuiItens ? itens.Min(x => Convert.ToDouble(((x != null && x.ToString() != string.Empty) ? x : 0))) : 0;
                            break;
                        }
                    }
                    else
                    {
                        dados.Sumarizacoes[sumarioLinha, campo.Posicao] = null;
                    }
                }
            }
        }
        private void LimparConfiguracao(ConfiguracaoRelatorio configuracao)
        {
            Fato resultado = ObterFato(configuracao.FonteDados.Id, false);

            if (resultado != null && resultado.Id > 0)
            {
                configuracao.FonteDadosId  = resultado.Id;
                configuracao.FonteDadosTid = resultado.Tid;
            }

            configuracao.FonteDados = null;

            foreach (var campo in configuracao.CamposSelecionados)
            {
                campo.CampoId     = campo.Campo.Id;
                campo.CampoCodigo = resultado.Campos.SingleOrDefault(x => x.Id == campo.CampoId).Codigo;
                campo.Campo       = null;
            }

            foreach (var campo in configuracao.Ordenacoes)
            {
                campo.CampoId     = campo.Campo.Id;
                campo.CampoCodigo = resultado.Campos.SingleOrDefault(x => x.Id == campo.CampoId).Codigo;
                campo.Campo       = null;
            }

            foreach (var termo in configuracao.Termos)
            {
                if (termo.Tipo == (int)eTipoTermo.Filtro)
                {
                    termo.CampoId     = termo.Campo.Id;
                    termo.CampoCodigo = resultado.Campos.SingleOrDefault(x => x.Id == termo.CampoId).Codigo;
                    termo.Campo       = null;
                }
            }

            foreach (var campo in configuracao.Sumarios)
            {
                campo.CampoId     = campo.Campo.Id;
                campo.CampoCodigo = resultado.Campos.SingleOrDefault(x => x.Id == campo.CampoId).Codigo;
                campo.Campo       = null;
            }

            foreach (var campo in configuracao.Agrupamentos)
            {
                campo.CampoId     = campo.Campo.Id;
                campo.CampoCodigo = resultado.Campos.SingleOrDefault(x => x.Id == campo.CampoId).Codigo;
                campo.Campo       = null;
            }
        }
        public ActionResult ObterOpcoes(ConfiguracaoRelatorio configuracao, bool obterCamposFato = false)
        {
            PersonalizadoVM vm = new PersonalizadoVM(_fatoBus.ObterFonteDados());

            vm.ConfiguracaoRelatorio = configuracao;

            vm.ConfiguracaoRelatorio.FonteDados = _fatoBus.Obter(vm.ConfiguracaoRelatorio.FonteDados.Id);

            if (obterCamposFato)
            {
                vm.ConfiguracaoRelatorio.CamposSelecionados.Clear();
            }

            return(PartialView("Opcoes", vm));
        }
Beispiel #10
0
        private void PrepararSumarios(DadosRelatorio dados, ConfiguracaoRelatorio configuracao)
        {
            foreach (var item in configuracao.Sumarios)
            {
                var sumarios = item.ListarSumarios();

                foreach (var sum in sumarios)
                {
                    if (!dados.Sumarizacoes.Linhas.Contains((int)sum.Key))
                    {
                        dados.Sumarizacoes.Linhas.Add((int)sum.Key);
                    }
                }
            }
        }
Beispiel #11
0
        private void Executar(ConfiguracaoRelatorio config)
        {
            #region Obter Eleitos

            List <Dictionary <string, object> > eleitos;
            List <Dictionary <string, object> > aux;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                eleitos = _da.Eleitos(config.DadosAte, bancoDeDados);
            }

            if (eleitos == null || eleitos.Count == 0)
            {
                return;
            }

            #endregion

            #region Atualizar Fato / Dimensao

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(_configSys.UsuarioRelatorio))
            {
                try
                {
                    bancoDeDados.IniciarTransacao();

                    aux = eleitos.Where(x => x["Acao"].ToString() == "3").ToList();

                    _da.Excluir(aux, bancoDeDados);

                    aux = eleitos.Where(x => !aux.Exists(y => y["Id"] == x["Id"])).ToList();

                    _da.Salvar(aux, bancoDeDados);

                    bancoDeDados.Commit();
                }
                catch
                {
                    bancoDeDados.Rollback();
                    throw;
                }
            }

            #endregion
        }
Beispiel #12
0
        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;
            }
        }
        private void MergiarConfiguracao(ConfiguracaoRelatorio configuracao)
        {
            configuracao.FonteDados = _fatoBus.Obter(configuracao.FonteDadosId);

            if (configuracao.FonteDados != null && configuracao.FonteDados.Id > 0)
            {
                configuracao.CamposSelecionados = configuracao.CamposSelecionados.Where(x => configuracao.FonteDados.Campos.Exists(y => y.Id == x.CampoId)).ToList();

                configuracao.Ordenacoes = configuracao.Ordenacoes.Where(x => configuracao.FonteDados.Campos.Exists(y => y.Id == x.CampoId)).ToList();

                configuracao.Termos = configuracao.Termos.Where(x => configuracao.FonteDados.Campos.Exists(y => y.Id == x.CampoId)).ToList();

                configuracao.Sumarios = configuracao.Sumarios.Where(x => configuracao.FonteDados.Campos.Exists(y => y.Id == x.CampoId)).ToList();

                configuracao.Agrupamentos = configuracao.Agrupamentos.Where(x => configuracao.FonteDados.Campos.Exists(y => y.Id == x.CampoId)).ToList();
            }
        }
        private void ConfigurarImportacao(ConfiguracaoRelatorio configuracao)
        {
            Fato resultado = ObterFato(configuracao.FonteDadosId, false);

            if (resultado != null && resultado.Id > 0)
            {
                configuracao.FonteDados     = new Fato();
                configuracao.FonteDados.Id  = resultado.Id;
                configuracao.FonteDados.Tid = resultado.Tid;
            }

            configuracao.CamposSelecionados.RemoveAll(x => x.CampoCodigo <= 0);
            foreach (var campo in configuracao.CamposSelecionados)
            {
                campo.CampoId = resultado.Campos.SingleOrDefault(x => x.Codigo == campo.CampoCodigo).Id;
            }

            configuracao.Ordenacoes.RemoveAll(x => x.CampoCodigo <= 0);
            foreach (var campo in configuracao.Ordenacoes)
            {
                campo.CampoId = resultado.Campos.SingleOrDefault(x => x.Codigo == campo.CampoCodigo).Id;
            }

            configuracao.Termos.RemoveAll(x => (x.Tipo == (int)eTipoTermo.Filtro) && x.CampoCodigo <= 0);
            foreach (var termo in configuracao.Termos)
            {
                if (termo.Tipo == (int)eTipoTermo.Filtro)
                {
                    termo.CampoId = resultado.Campos.SingleOrDefault(x => x.Codigo == termo.CampoCodigo).Id;
                }
            }

            configuracao.Sumarios.RemoveAll(x => x.CampoCodigo <= 0);
            foreach (var campo in configuracao.Sumarios)
            {
                campo.CampoId = resultado.Campos.SingleOrDefault(x => x.Codigo == campo.CampoCodigo).Id;
            }

            configuracao.Agrupamentos.RemoveAll(x => x.CampoCodigo <= 0);
            foreach (var campo in configuracao.Agrupamentos)
            {
                campo.CampoId = resultado.Campos.SingleOrDefault(x => x.Codigo == campo.CampoCodigo).Id;
            }
        }
        public List <ConfiguracaoRelatorio> Configuracoes(eFato fato)
        {
            List <ConfiguracaoRelatorio> retorno = new List <ConfiguracaoRelatorio>();

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(_configSys.UsuarioRelatorio))
            {
                Comando comando = bancoDeDados.CriarComando(@"select t.id, t.fato, t.processo, t.intervalo, t.dados_ate, 
				sysdate execucao_inicio, t.execucao_fim, t.em_execucao, t.erro, t.tid from cnf_fato_etl t"                );

                if (fato != eFato.Todos)
                {
                    comando.DbCommand.CommandText += " where t.id = :fato";
                    comando.AdicionarParametroEntrada("fato", (int)fato, DbType.Int32);
                }

                comando.DbCommand.CommandText += " order by t.id";

                using (IDataReader reader = bancoDeDados.ExecutarReader(comando))
                {
                    ConfiguracaoRelatorio conf;
                    while (reader.Read())
                    {
                        conf                = new ConfiguracaoRelatorio();
                        conf.Id             = reader.GetValue <Int32>("id");
                        conf.Fato           = reader.GetValue <String>("fato");
                        conf.Processo       = reader.GetValue <String>("processo");
                        conf.Intervalo      = new TimeSpan(reader.GetValue <Int32>("intervalo"), 0, 0);
                        conf.DadosAte       = reader.GetValue <DateTime>("dados_ate");
                        conf.ExecucaoInicio = reader.GetValue <DateTime>("execucao_inicio");
                        conf.ExecucaoFim    = reader.GetValue <DateTime>("execucao_fim");
                        conf.EmExecucao     = reader.GetValue <Boolean>("em_execucao");
                        conf.Erro           = reader.GetValue <Boolean>("erro");
                        conf.Tid            = reader.GetValue <String>("tid");

                        retorno.Add(conf);
                    }

                    reader.Close();
                }

                return(retorno);
            }
        }
Beispiel #16
0
        private void VerificarConfiguracao(ConfiguracaoRelatorio configuracao)
        {
            if (configuracao.CamposSelecionados.Count == 0)
            {
                Validacao.Add(Mensagem.RelatorioPersonalizado.CampoSelecionarObrigatorio);
            }

            if (string.IsNullOrWhiteSpace(configuracao.Nome))
            {
                Validacao.Add(Mensagem.RelatorioPersonalizado.NomeObrigatorio);
            }

            if (string.IsNullOrWhiteSpace(configuracao.Descricao))
            {
                Validacao.Add(Mensagem.RelatorioPersonalizado.DescricaoObrigatoria);
            }

            AnalisarTermos(configuracao.Termos);
        }
Beispiel #17
0
        private ConfiguracaoRelatorio Eleger(List <ConfiguracaoRelatorio> eleitos)
        {
            ConfiguracaoRelatorio eleito = null;
            TimeSpan menor = TimeSpan.MaxValue;

            foreach (var c in eleitos)
            {
                if (c.DadosAte == null)
                {
                    throw new Exception(c.Fato + " - DadosAte não pode ser nula.");
                }

                if ((DateTime.Now - c.DadosAte) < menor)
                {
                    eleito = c;
                }
            }

            return(eleito);
        }
        public void AtualizarConfiguracao(ConfiguracaoRelatorio configuracao, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, _configSys.UsuarioRelatorio))
            {
                bancoDeDados.IniciarTransacao();

                Comando comando = bancoDeDados.CriarComando(@"update cnf_fato_etl c set c.dados_ate = :dados_ate,  c.execucao_inicio = :execucao_inicio, 
				c.execucao_fim = sysdate, c.em_execucao = :em_execucao, c.erro = :erro, c.tid = :tid where c.id = :id"                );

                comando.AdicionarParametroEntrada("dados_ate", configuracao.DadosAte, DbType.Date);
                comando.AdicionarParametroEntrada("execucao_inicio", configuracao.ExecucaoInicio, DbType.Date);
                comando.AdicionarParametroEntrada("em_execucao", (configuracao.EmExecucao ? 1 : 0), DbType.Int32);
                comando.AdicionarParametroEntrada("erro", (configuracao.Erro ? 1 : 0), DbType.Int32);
                comando.AdicionarParametroEntrada("tid", configuracao.Tid, DbType.String);
                comando.AdicionarParametroEntrada("id", configuracao.Id, DbType.Int32);

                bancoDeDados.ExecutarNonQuery(comando);
                bancoDeDados.Commit();
            }
        }
Beispiel #19
0
        internal void AtualizarETL()
        {
            ConfiguracaoRelatorio config = _daRelatorio.Configuracao(eFato.Processo);

            config.Tid        = Guid.NewGuid().ToString();
            config.EmExecucao = true;
            _daRelatorio.AtualizarConfiguracao(config);
            config.EmExecucao = false;

            try
            {
                Executar(config);

                config.Erro     = false;
                config.DadosAte = config.DadosAte.AddDays((config.ExecucaoInicio - config.DadosAte).Days);
                _daRelatorio.AtualizarConfiguracao(config);
            }
            catch
            {
                config.Erro = true;
                _daRelatorio.AtualizarConfiguracao(config);
                throw;
            }
        }
Beispiel #20
0
        /// <summary>
        /// Exporta o relatório.
        /// </summary>
        /// <param name="exportType"></param>
        /// <param name="mimeType"></param>
        /// <param name="encoding"></param>
        /// <param name="fileNameExtension"></param>
        /// <param name="warnings"></param>
        /// <returns></returns>
        public override System.IO.Stream Export(Colosoft.Reports.Web.ExportType exportType, out string mimeType, out string encoding, out string fileNameExtension, out Colosoft.Reports.Warning[] warnings)
        {
            if (_alteraStatus != null)
            {
                _alteraStatus("Criando relatório");
            }

            var userInfo = Glass.Data.Helper.UserInfo.GetUserInfo;

            if (!Document.Parameters.ContainsKey("Logotipo"))
            {
                int?idLoja = null;

                if (Document is Glass.Relatorios.IRelatorioLoja)
                {
                    idLoja = ((Glass.Relatorios.IRelatorioLoja)Document).IdLoja;
                }

                // Recupera o caminho físico do arquivo do logotipo
                var caminhoLogotipo = Configuracoes.Logotipo.GetReportLogo(DiretorioLogotipos, (uint?)idLoja);

                Document.Parameters.Add("Logotipo", caminhoLogotipo);
            }

            if (!Document.Parameters.ContainsKey("TextoRodape"))
            {
                Document.Parameters.Add("TextoRodape", ConfiguracaoRelatorio.TextoRodapeRelatorio(NomeFuncionario));
            }

            if (!Document.Parameters.ContainsKey("CorRodape"))
            {
                Document.Parameters.Add("CorRodape", "DimGray");
            }

            return(base.Export(exportType, out mimeType, out encoding, out fileNameExtension, out warnings));
        }
 public ActionResult ValidarFiltros(ConfiguracaoRelatorio configuracao)
 {
     _validar.AnalisarTermos(configuracao.Termos);
     return(Json(new { EhValido = Validacao.EhValido, Msg = Validacao.Erros }, JsonRequestBehavior.AllowGet));
 }
Beispiel #22
0
        private Comando MontarSQL(ConfiguracaoRelatorio configuracao, BancoDeDados banco)
        {
            #region Alias de tabelas

            List <ConfiguracaoCampo> campos = configuracao.CamposSelecionados.Where(c => c.Campo != null).ToList();

            List <string> tabelas = campos.Select(x => x.Campo.Tabela).Union(
                configuracao.Agrupamentos.Select(a => a.Campo.Tabela).Union(
                    configuracao.Termos.Where(t => (eTipoTermo)t.Tipo == eTipoTermo.Filtro).Select(t => t.Campo.Tabela)).Union(
                    configuracao.Ordenacoes.Select(o => o.Campo.Tabela))
                ).Distinct().ToList();

            if (!tabelas.Contains(configuracao.FonteDados.Tabela))
            {
                tabelas.Add(configuracao.FonteDados.Tabela);
            }

            Dictionary <string, string> aliasesTabelas = new Dictionary <string, string>();

            int i = 0;
            foreach (var tab in tabelas)
            {
                aliasesTabelas.Add(tab, string.Format("t{0}", i));
                i++;
            }

            #endregion

            #region SQL - SELECT

            string selectSql = "";

            foreach (var a in configuracao.Agrupamentos.OrderBy(x => x.Prioridade))
            {
                a.Alias    = a.Campo.Nome;
                selectSql += string.Format(@"{0}.{1} ""{2}"", ", aliasesTabelas[a.Campo.Tabela], a.Campo.Nome, a.CampoId);
            }

            foreach (var a in campos.OrderBy(x => x.Posicao))
            {
                selectSql += string.Format(@"{0}.{1} ""{2}"", ", aliasesTabelas[a.Campo.Tabela], a.Campo.Nome, a.CampoId);
            }

            selectSql = selectSql.Substring(0, selectSql.Length - 2);

            #endregion

            #region SQL - FROM

            string tabelasSql = string.Join(", ", aliasesTabelas.Select(x => string.Format("{0} {1}", x.Key, x.Value)));

            #endregion

            #region SQL - WHERE (joins)

            string joinSql   = "";
            string aliasFato = aliasesTabelas[configuracao.FonteDados.Tabela];

            foreach (var tab in aliasesTabelas)
            {
                if (configuracao.FonteDados.Tabela == tab.Key)
                {
                    continue;
                }

                joinSql += string.Format("{0}.id = {1}.fato (+) and ", aliasesTabelas[configuracao.FonteDados.Tabela], tab.Value);
            }

            #endregion

            Comando comando = banco.CriarComando("");

            #region SQL - WHERE (filtros)

            string filtros = "";

            i = 0;
            foreach (var termo in configuracao.Termos.OrderBy(x => x.Ordem))
            {
                if ((eTipoTermo)termo.Tipo != eTipoTermo.Filtro)
                {
                    filtros += TermoSimples(termo);
                    continue;
                }

                filtros += TermoFiltro(termo, aliasesTabelas, comando, i);
                i++;
            }

            #endregion

            #region SQL - ORDERBY

            string orderSql = "";

            foreach (var campo in configuracao.Agrupamentos.OrderBy(c => c.Prioridade))
            {
                orderSql += string.Format("{0}.{1}, ", aliasesTabelas[campo.Campo.Tabela], campo.Campo.Nome);
            }

            foreach (var campo in configuracao.Ordenacoes.Where(y => y.Campo.CampoOrdenacao).OrderBy(o => o.Prioridade))
            {
                orderSql += string.Format("{0}.{1} {2}, ", aliasesTabelas[campo.Campo.Tabela], campo.Campo.Nome, campo.Crescente ? "" : "desc");
            }

            if (!string.IsNullOrEmpty(orderSql))
            {
                orderSql = orderSql.Substring(0, orderSql.Length - 2);
            }

            #endregion

            #region SQL final

            bool   possuiWhere = !string.IsNullOrEmpty(joinSql) || !string.IsNullOrEmpty(filtros);
            string sql         = string.Format("select {0} from {1}", selectSql, tabelasSql);

            if (possuiWhere)
            {
                if (!string.IsNullOrEmpty(joinSql))
                {
                    sql = string.Format("{0} where {1}", sql, joinSql);

                    if (!string.IsNullOrEmpty(filtros))
                    {
                        sql = string.Format("{0} ({1})", sql, filtros);
                    }
                }
                else if (!string.IsNullOrEmpty(filtros))
                {
                    sql = string.Format("{0} where ({1})", sql, filtros);
                }
            }

            if (sql.Substring(sql.Length - 5, 4).Contains("and"))
            {
                sql = sql.Substring(0, sql.Length - 5);
            }

            if (!string.IsNullOrEmpty(orderSql))
            {
                sql = string.Format("{0} order by {1}", sql, orderSql);
            }

            comando.DbCommand.CommandText = string.Format(sql);

            #endregion

            return(comando);
        }
Beispiel #23
0
        public DadosRelatorio Executar(ConfiguracaoRelatorio configuracao)
        {
            List <List <ValoresBanco> > dados = new List <List <ValoresBanco> >();
            DadosRelatorio retorno            = null;

            using (BancoDeDados banco = BancoDeDados.ObterInstancia(UsuarioRelatorio))
            {
                // Montar o comando
                Comando comando = MontarSQL(configuracao, banco);

                // Executar
                using (IDataReader reader = banco.ExecutarReader(comando))
                {
                    while (reader.Read())
                    {
                        if (reader.FieldCount > 0)
                        {
                            List <ValoresBanco> lista = new List <ValoresBanco>();
                            for (var i = 0; i < reader.FieldCount; i++)
                            {
                                lista.Add(new ValoresBanco()
                                {
                                    Chave = (configuracao.Agrupamentos.FirstOrDefault(x => x.CampoId == Convert.ToInt32(reader.GetName(i))) ?? new ConfiguracaoAgrupamento()).Alias,
                                    Valor = reader.GetValue(i)
                                });

                                lista.Where(x => string.IsNullOrEmpty(x.Chave)).ToList().ForEach(r => {
                                    r.Chave = configuracao.CamposSelecionados.First(x => x.CampoId == Convert.ToInt32(reader.GetName(i))).Alias;
                                });

                                if (lista.Last().Valor is DateTime)
                                {
                                    DateTime dataAux = Convert.ToDateTime(lista.Last().Valor);

                                    if (dataAux.ToLongTimeString() == DateTime.MinValue.ToLongTimeString())
                                    {
                                        lista.Last().Valor = dataAux.ToShortDateString();
                                    }
                                }
                            }
                            dados.Add(lista);
                        }
                    }
                    reader.Close();
                }

                // Agrupar
                retorno = CarregarDados(configuracao, dados);

                //Data de execução
                comando = banco.CriarComando(@"select t.execucao_fim data from cnf_fato_etl t, tab_fato f where t.id = f.id_fato_etl and f.nome = :nome");
                comando.AdicionarParametroEntrada("nome", configuracao.FonteDados.Nome, DbType.String);

                retorno.Data = banco.ExecutarScalar(comando).ToString();

                // Sumarizar
                Sumarizar(configuracao, retorno);
            }

            return(retorno);
        }
Beispiel #24
0
        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);
        }
Beispiel #25
0
        private void Continuar_Click(object sender, EventArgs e)
        {
            var linhasAntes      = Convert.ToInt32(txtLinhasAntes.Value);
            var linhasTratamento = Convert.ToInt32(txtLinhasTratamento.Value);
            var linhasDepois     = Convert.ToInt32(txtLinhasDepois.Value);
            var config           = new ConfiguracaoRelatorio(linhasAntes, linhasTratamento, linhasDepois);

            ConfiguracaoDAO.GravarConfigRelatorio(config.LeiturasAntes, config.LeiturasTrat, config.LeiturasDepois);
            if (Tratamento.Checked)
            {
                if (Todos.Checked)
                {
                    RelTratamento relatorio = new RelTratamento(ciclo, 1, "", txtComentario.Text, config);
                    relatorio.ShowDialog(this);
                    this.Close();
                }
                else if (Individual.Checked)
                {
                    RelTratamento relatorio = new RelTratamento(ciclo, 2, cmbEmpresas.SelectedItem.ToString(), txtComentario.Text, config);
                    relatorio.ShowDialog(this);
                    this.Close();
                }
            }
            else if (Geral.Checked)
            {
                bool continua = false;
                if (Todos.Checked)
                {
                    if (txtFiltro.Text != "")
                    {
                        string aux = txtFiltro.Text;
                        aux = aux.Replace('-', 'X');
                        aux = aux.Replace(';', 'X');
                        string[] compara = aux.Split('X');
                        int      maior   = 0;
                        for (int i = 0; i < compara.Length; i++)
                        {
                            if (compara[i] != "" && Convert.ToInt32(compara[i]) > maior)
                            {
                                maior    = Convert.ToInt32(compara[i]);
                                continua = true;
                            }
                            else if (compara[i] != "")
                            {
                                continua = false;
                                i        = compara.Length;
                            }
                        }
                        int n;
                        if (txtFiltro.Text.Substring(txtFiltro.Text.Length - 1, 1) != ";")
                        {
                            if (Int32.TryParse(txtFiltro.Text.Substring(txtFiltro.Text.Length - 1, 1), out n))
                            {
                                txtFiltro.Text = txtFiltro.Text + ";";
                            }
                            else if (txtFiltro.Text.Substring(txtFiltro.Text.Length - 1, 1) == "-")
                            {
                                txtFiltro.Text = txtFiltro.Text.Substring(0, txtFiltro.Text.Length - 1) + ";";
                            }
                        }
                    }
                    else
                    {
                        continua = true;
                    }
                    if (continua)
                    {
                        RelGeral relatorio = new RelGeral(ciclo, 1, "", txtComentario.Text, txtFiltro.Text, config);
                        relatorio.ShowDialog(this);
                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show("O filtro só pode ser ordenado em ordem crescente.", "Atenção",
                                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (Individual.Checked)
                {
                    if (txtFiltro.Text != "")
                    {
                        string aux = txtFiltro.Text;
                        aux = aux.Replace('-', 'X');
                        aux = aux.Replace(';', 'X');
                        string[] compara = aux.Split('X');
                        int      maior   = 0;
                        for (int i = 0; i < compara.Length; i++)
                        {
                            if (compara[i] != "" && Convert.ToInt32(compara[i]) > maior)
                            {
                                maior    = Convert.ToInt32(compara[i]);
                                continua = true;
                            }
                            else if (compara[i] != "")
                            {
                                continua = false;
                                i        = compara.Length;
                            }
                        }
                        int n;
                        if (txtFiltro.Text.Substring(txtFiltro.Text.Length - 1, 1) != ";")
                        {
                            if (Int32.TryParse(txtFiltro.Text.Substring(txtFiltro.Text.Length - 1, 1), out n))
                            {
                                txtFiltro.Text = txtFiltro.Text + ";";
                            }
                            else if (txtFiltro.Text.Substring(txtFiltro.Text.Length - 1, 1) == "-")
                            {
                                txtFiltro.Text = txtFiltro.Text.Substring(0, txtFiltro.Text.Length - 1) + ";";
                            }
                        }
                    }
                    else
                    {
                        continua = true;
                    }
                    if (continua)
                    {
                        RelGeral relatorio = new RelGeral(ciclo, 2, cmbEmpresas.SelectedItem.ToString(),
                                                          txtComentario.Text, txtFiltro.Text, config);
                        relatorio.ShowDialog(this);
                        this.Close();
                    }
                    else
                    {
                        MessageBox.Show("O filtro só pode ser ordenado em ordem crescente.", "Atenção",
                                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }
Beispiel #26
0
 public PersonalizadoVM(List <Lista> fontesDados)
 {
     ConfiguracaoRelatorio = new ConfiguracaoRelatorio();
     FonteDadosLst         = ViewModelHelper.CriarSelectList(fontesDados, true);
 }
Beispiel #27
0
        public static List <ListaCiclosTratGrafico> populaTratamento(VO.Ciclos ciclo, List <LeiturasCiclo> leiturasCiclo,
                                                                     List <LeiturasTrat> leiturasTrat, ConfiguracaoRelatorio configRelatorio)
        {
            return(GerarListaTratamento(ciclo, leiturasCiclo, leiturasTrat, configRelatorio));

            /*if (leiturasTrat == null || leiturasTrat.Count == 0)
             * {
             *  return listaRetorno;
             * }
             * var nl = 1;
             * var nlt = 1;
             * var leiturainicial = ciclo.NLIniTrat;
             * var jmp = (leiturainicial - 1) / 9;
             * var i = 0;
             *
             * for (i = 0; i < ciclo.NLIniTrat - 1; i += jmp, nl += jmp)
             * {
             *  listaRetorno.Add(new ListaCiclosTratGrafico()
             *  {
             *      NLT = nlt,
             *      NL = nl,
             *      horario = leiturasCiclo[i].horario,
             *      T1 = leiturasCiclo[i].T1,
             *      T2 = leiturasCiclo[i].T2,
             *      T3 = leiturasCiclo[i].T3,
             *      T4 = leiturasCiclo[i].T4
             *  });
             *  nlt++;
             * }
             * if (i <= ciclo.NLIniTrat - 1)
             * {
             *  nl = leiturainicial - 1;
             *  nlt = 10;
             *  listaRetorno.Add(new ListaCiclosTratGrafico()
             *  {
             *      NLT = nlt,
             *      NL = nl,
             *      horario = leiturasCiclo[ciclo.NLIniTrat-2].horario,
             *      T1 = leiturasCiclo[ciclo.NLIniTrat - 2].T1,
             *      T2 = leiturasCiclo[ciclo.NLIniTrat - 2].T2,
             *      T3 = leiturasCiclo[ciclo.NLIniTrat - 2].T3,
             *      T4 = leiturasCiclo[ciclo.NLIniTrat - 2].T4
             *  });
             *  nlt = 11;
             * }
             *
             *
             * nl = ciclo.NLIniTrat;
             *
             * for (i = 0; i <= leiturasTrat.Count - 1; i += 2, nl += 2)
             * {
             *  listaRetorno.Add(new ListaCiclosTratGrafico()
             *  {
             *      NLT = nlt,
             *      NL = nl,
             *      horario = leiturasTrat[i].horario,
             *      T1 = leiturasTrat[i].T1,
             *      T2 = leiturasTrat[i].T2,
             *      T3 = leiturasTrat[i].T3,
             *      T4 = leiturasTrat[i].T4
             *  });
             *  if (i == 0)
             *  {
             *      listaRetorno[listaRetorno.Count - 1].demarca_tratamento = true;
             *  }
             *  nlt++;
             * }
             * if (i == leiturasTrat.Count)
             * {
             *  nl = ciclo.NLIniTrat + leiturasTrat.Count - 1;
             *  listaRetorno.Add(new ListaCiclosTratGrafico()
             *  {
             *      NLT = nlt,
             *      NL = nl,
             *      horario = leiturasTrat[leiturasTrat.Count - 1].horario,
             *      T1 = leiturasTrat[leiturasTrat.Count - 1].T1,
             *      T2 = leiturasTrat[leiturasTrat.Count - 1].T2,
             *      T3 = leiturasTrat[leiturasTrat.Count - 1].T3,
             *      T4 = leiturasTrat[leiturasTrat.Count - 1].T4
             *  });
             *  nlt++;
             * }
             *
             * listaRetorno[listaRetorno.Count - 1].demarca_tratamento = true;
             *
             * nl = ciclo.NLIniTrat + ciclo.nlt;
             *
             * var countFim = ciclo.nlPostTrat;
             * jmp = countFim / 9;
             *
             * for (i = 0; i < countFim; i += 2, nl += 2)
             * {
             *  listaRetorno.Add(new ListaCiclosTratGrafico()
             *  {
             *      NLT = nlt,
             *      NL = nl,
             *      horario = leiturasCiclo[nl - 1].horario,
             *      T1 = leiturasCiclo[nl - 1].T1,
             *      T2 = leiturasCiclo[nl - 1].T2,
             *      T3 = leiturasCiclo[nl - 1].T3,
             *      T4 = leiturasCiclo[nl - 1].T4
             *  });
             *  nlt++;
             * }
             * if (i < leiturasCiclo.Count - 1)
             * {
             *  nl = leiturasCiclo.Count;
             *  listaRetorno.Add(new ListaCiclosTratGrafico()
             *  {
             *      NLT = nlt,
             *      NL = nl,
             *      horario = leiturasCiclo[leiturasCiclo.Count - 1].horario,
             *      T1 = leiturasCiclo[leiturasCiclo.Count - 1].T1,
             *      T2 = leiturasCiclo[leiturasCiclo.Count - 1].T2,
             *      T3 = leiturasCiclo[leiturasCiclo.Count - 1].T3,
             *      T4 = leiturasCiclo[leiturasCiclo.Count - 1].T4
             *  });
             * }
             * return listaRetorno;*/
        }
Beispiel #28
0
        private void Executar(ConfiguracaoRelatorio config)
        {
            #region Obter Eleitos

            List <Dictionary <string, object> > eleitos;
            List <Dictionary <string, object> > eleitosUC;
            List <Dictionary <string, object> > eleitosUP;
            List <Dictionary <string, object> > aux;

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
            {
                eleitos = _da.Eleitos(config.DadosAte, bancoDeDados);
            }

            if (eleitos == null || eleitos.Count == 0)
            {
                return;
            }

            #endregion

            #region Atualizar Fato / Dimensao

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(_configSys.UsuarioRelatorio))
            {
                try
                {
                    bancoDeDados.IniciarTransacao();

                    #region UP - Unidade de Produção
                    // Código 51 - Modelo: Abertura de livro de unidade de produção
                    eleitosUP = eleitos.Where(x => x["cod_modelo"].ToString() == "51").ToList();

                    aux = eleitosUP.Where(x => x["Acao"].ToString() == "3").ToList();

                    _da.ExcluirUP(aux, bancoDeDados);

                    aux = eleitosUP.Where(x => !aux.Exists(y => y["hst_titulo_id"] == x["hst_titulo_id"])).ToList();

                    _da.SalvarUP(aux, bancoDeDados);

                    #endregion

                    #region UC - Unidade de Consolidação

                    // Código 52 - Modelo: Abertura de livro de unidade de consolidação
                    eleitosUC = eleitos.Where(x => x["cod_modelo"].ToString() == "52").ToList();

                    aux = eleitosUC.Where(x => x["Acao"].ToString() == "3").ToList();

                    _da.ExcluirUC(aux, bancoDeDados);

                    aux = eleitosUC.Where(x => !aux.Exists(y => y["hst_titulo_id"] == x["hst_titulo_id"])).ToList();

                    _da.SalvarUC(aux, bancoDeDados);
                    #endregion

                    bancoDeDados.Commit();
                }
                catch
                {
                    bancoDeDados.Rollback();
                    throw;
                }
            }

            #endregion
        }
Beispiel #29
0
        public static List <ListaCiclosTratGrafico> GerarListaTratamento(VO.Ciclos ciclo,
                                                                         List <LeiturasCiclo> leiturasCiclo,
                                                                         List <LeiturasTrat> leiturasTrat, ConfiguracaoRelatorio configRelatorio)
        {
            var listaRetorno     = new List <ListaCiclosTratGrafico>();
            var linhasAntesTrat  = configRelatorio.LeiturasAntes;
            var linhasTrat       = configRelatorio.LeiturasTrat;
            var linhasDepoisTrat = configRelatorio.LeiturasDepois;

            if (leiturasTrat == null || leiturasTrat.Count == 0)
            {
                return(listaRetorno);
            }

            var totalCiclo      = leiturasCiclo.Count;
            var totalAntesTrat  = ciclo.NLIniTrat - 1;
            var inicioTrat      = ciclo.NLIniTrat;
            var totalTrat       = leiturasTrat.Count;
            var fimTrat         = inicioTrat + totalTrat - 1;
            var totalDepoisTrat = totalCiclo - fimTrat;
            var nlt             = 0;


            /// POPULA DADOS DO AQUECIMENTO

            //if (totalAntesTrat <= linhasAntesTrat)
            //{
            //    for (var i = 0; i < totalAntesTrat; i++)
            //    {
            //        nlt++;
            //        listaRetorno.Add(new ListaCiclosTratGrafico()
            //        {
            //            NLT = nlt,
            //            NL = i + 1,
            //            horario = leiturasCiclo[i].horario,
            //            T1 = leiturasCiclo[i].T1,
            //            T2 = leiturasCiclo[i].T2,
            //            T3 = leiturasCiclo[i].T3,
            //            T4 = leiturasCiclo[i].T4
            //        });
            //    }
            //}
            //else
            //{
            var indicesAntesTrat = PegarIndicesPorDivisao(0, totalAntesTrat - 1, linhasAntesTrat);

            foreach (var indice in indicesAntesTrat.ToList())
            {
                nlt++;
                listaRetorno.Add(new ListaCiclosTratGrafico()
                {
                    NLT     = nlt,
                    NL      = indice + 1,
                    horario = leiturasCiclo[indice].horario,
                    T1      = leiturasCiclo[indice].T1,
                    T2      = leiturasCiclo[indice].T2,
                    T3      = leiturasCiclo[indice].T3,
                    T4      = leiturasCiclo[indice].T4
                });
            }
            //}

            /// POPULA DADOS DO TRATAMENTO

            //if (totalTrat < linhasTrat)
            //{
            //    for (var i = 0; i < totalTrat; i++)
            //    {
            //        nlt++;
            //        listaRetorno.Add(new ListaCiclosTratGrafico()
            //        {
            //            NLT = nlt,
            //            NL = inicioTrat + i,
            //            horario = leiturasCiclo[i].horario,
            //            T1 = leiturasCiclo[i].T1,
            //            T2 = leiturasCiclo[i].T2,
            //            T3 = leiturasCiclo[i].T3,
            //            T4 = leiturasCiclo[i].T4
            //        });
            //    }
            //}
            //else
            //{
            var indicesTrat = PegarIndicesPorDivisao(0, totalTrat - 1, linhasTrat);

            foreach (var indice in indicesTrat.ToList())
            {
                nlt++;
                listaRetorno.Add(new ListaCiclosTratGrafico()
                {
                    NLT                = nlt,
                    NL                 = inicioTrat + indice,
                    horario            = leiturasTrat[indice].horario,
                    T1                 = leiturasTrat[indice].T1,
                    T2                 = leiturasTrat[indice].T2,
                    T3                 = leiturasTrat[indice].T3,
                    T4                 = leiturasTrat[indice].T4,
                    demarca_tratamento = indice == 0 || indice == (totalTrat - 1)
                });
            }
            //}


            /// POPULA DADOS DO RESFRIAMENTO

            //if (totalDepoisTrat <= linhasDepoisTrat)
            //{
            //    for (var i = fimTrat; i < totalCiclo; i++)
            //    {
            //        nlt++;
            //        listaRetorno.Add(new ListaCiclosTratGrafico()
            //        {
            //            NLT = nlt,
            //            NL = i + 1,
            //            horario = leiturasCiclo[i].horario,
            //            T1 = leiturasCiclo[i].T1,
            //            T2 = leiturasCiclo[i].T2,
            //            T3 = leiturasCiclo[i].T3,
            //            T4 = leiturasCiclo[i].T4
            //        });
            //    }
            //}
            //else
            //{
            var indicesDepoisTrat = PegarIndicesPorDivisao(fimTrat, totalCiclo - 1, linhasDepoisTrat);

            foreach (var indice in indicesDepoisTrat.ToList())
            {
                nlt++;
                listaRetorno.Add(new ListaCiclosTratGrafico()
                {
                    NLT     = nlt,
                    NL      = indice + 1,
                    horario = leiturasCiclo[indice].horario,
                    T1      = leiturasCiclo[indice].T1,
                    T2      = leiturasCiclo[indice].T2,
                    T3      = leiturasCiclo[indice].T3,
                    T4      = leiturasCiclo[indice].T4
                });
            }
            //}

            return(listaRetorno);
        }