Пример #1
0
        public List <ArquivosModel> GetArquivosParaExpurgo(DateTime pData)
        {
            SqlConnection        _Conn = new SqlConnection(Global.ConnectionsString);
            SqlCommand           cmd   = null;
            List <ArquivosModel> lst   = null;
            string script = $"select * from tb_arquivos where CONVERT(datetime,data_criacao,103)<=CONVERT(datetime,'{pData.ToString("dd/MM/yyyy")} 23:59:59',103) and (ArqExcluido='NÃO' or ArqExcluido is null)";

            try
            {
                _Conn.Open();
                cmd = new SqlCommand(script, _Conn);
                cmd.CommandTimeout = Global.CommandTimeOut;
                lst = new ArquivosModel().LstArquivos(cmd.ExecuteReader());
            }
            catch (Exception ex)
            {
                Global.EnviarParaLog($"Erro ao executar o Script {script}. Motivo: {ex.Message}", "GetArqToExpurgo");
            }
            finally
            {
                _Conn.Close();
            }

            return(lst);
        }
Пример #2
0
        public List <ArquivosModel> GetArquivos(int pIdArquivo)
        {
            SqlConnection        _Conn = new SqlConnection(Global.ConnectionsString);
            SqlCommand           cmd   = null;
            List <ArquivosModel> lst   = null;

            try
            {
                _Conn.Open();
                cmd = new SqlCommand($"select * from tb_arquivos where id_arquivo = {pIdArquivo.ToString()} and lower(status)='ativo' ", _Conn);
                cmd.CommandTimeout = Global.CommandTimeOut;
                lst = new ArquivosModel().LstArquivos(cmd.ExecuteReader());
            }
            finally
            {
                _Conn.Close();
            }

            return(lst);
        }
Пример #3
0
        public void OrquestraProcessamento(string pIdServico)
        {
            bool FoiProcessado = false;

            try
            {
                string DirAplicacao = GetDir_Aplicacao();
                Global.PathInputError = DirAplicacao + "ETL\\INPUT_ERROR";
                Global.PathFormatFile = DirAplicacao + "ETL\\BCPFORMAT";

                MonitoramentosModel        monitoramentos = new MonitoramentosModel();
                List <MonitoramentosModel> lstMonitor     = processArqController.GetMonitoramentos(pIdServico);
                //string NomeDoPacote = processArqController.GetNomePacote(1);

                if (lstMonitor.Count() > 0)
                {
                    processArqController.AtualizaSituacaoThread(pIdServico, "Processando");
                    foreach (var drMonitoramentos in lstMonitor)
                    {
                        ArquivosModel arquivosModal = new ArquivosModel();
                        int           IdArquivo     = drMonitoramentos.id_arquivo;
                        //Global.IdDoArquivo = ProcessArq.IdArquivo.ToString();
                        string NomeTabelaSTG = "STAGE_ETL_" + drMonitoramentos.id_arquivo.ToString();

                        List <ArquivosModel> drArq = processArqController.GetArquivos(drMonitoramentos.id_arquivo);
                        if (drArq.Count() > 0)
                        {
                            foreach (var drArquivos in drArq)
                            {
                                if (string.IsNullOrEmpty(drArquivos.ConexaoBusiness))
                                {
                                    //Se ConexaoBusiness estiver vazio, popula com o BI padrao
                                    string ds = ""; string ic = ""; string uid = ""; string p = ""; bool apw = false;
                                    processArqController.GetDadosdoBancoDST("", ref ds, ref ic, ref uid, ref p, ref apw);
                                    drArquivos.ConexaoBusiness = ic;
                                }

                                if (!processArqController.DataBaseCriada(drArquivos.ConexaoBusiness))
                                {
                                    Global.EnviarParaLog($"Preparando para criar o Banco de Dados {drArquivos.ConexaoBusiness}.", "OrquestraProcmto", true, IdArquivo);
                                    processArqController.CriarDataBaseDst(drArquivos.ConexaoBusiness, drArquivos.id_arquivo);
                                }

                                if (!processArqController.DataBaseCriada(drArquivos.ConexaoBusiness))
                                {
                                    Global.EnviarParaLog($"Banco de dados {drArquivos.ConexaoBusiness} não foi criado.", "OrquestraProcmto", true, IdArquivo);
                                    return;
                                }
                                else
                                {
                                    Global.EnviarParaLog($"Banco de Dados {drArquivos.ConexaoBusiness} criado.", "OrquestraProcmto", true, IdArquivo);
                                }

                                processArqController.CriarTabela_ArquivosCarregados(drArquivos.ConexaoBusiness, drArquivos.id_arquivo);

                                string        NomeTabelaDST = GetNomeTabelaDST(drArquivos.tb_destino.ToString(), drArquivos.id_arquivo);// drArquivos.tb_destino.ToString()+"_"+ drArquivos.id_arquivo.ToString();
                                List <string> lstArquivos   = new List <string>();
                                //DirectoryInfo dir = new DirectoryInfo($"{drArquivos.dir_entrada.ToString()}");
                                lstArquivos = ProcessArq.GetListaArquivos(drArquivos.dir_entrada.ToString(), drArquivos.mascara_arquivo, IdArquivo);//BuscaArquivosPelaMascara(drArquivos.dir_entrada.ToString() , drArquivos.mascara_arquivo, IdArquivo);//BuscaArquivos(dir);
                                foreach (var lArq in lstArquivos)
                                {
                                    if (drArquivos.tp_carga.ToUpper() == "FULL")
                                    {
                                        if (ProcessArq.TabelaCriada(drArquivos.ConexaoBusiness, NomeTabelaDST))
                                        {
                                            try
                                            {
                                                DropTabela(drArquivos.ConexaoBusiness, NomeTabelaDST, IdArquivo);
                                                Global.EnviarParaLog($"Tabela {NomeTabelaDST}) apagada com sucesso.", true, IdArquivo);
                                            }
                                            catch (Exception ex)
                                            {
                                                Global.EnviarParaLog($"Erro ao apagar a tabela: {NomeTabelaDST}. MOTIVO: {ex.Message}", true, IdArquivo);
                                            }
                                        }
                                    }

                                    string NomeArquivo = lArq;
                                    string Delimitador = drArquivos.delimitador.ToString();
                                    Global.EnviarParaLog($"ATENÇÃO: Arquivo que será executado: {NomeArquivo}.", "OrquestraProcmto", true, IdArquivo);
                                    //Altera o Banco para utilizar Opçoes bulk_logged
                                    ProcessArq.AlterDatabaseToBulk_logged(drArquivos.ConexaoBusiness);
                                    bool Result = false;
                                    //ProcessArq.LineFeed = drArquivos.LineFeed;
                                    //ProcessArq.FirstLine = drArquivos.FirstLine;
                                    Global.EnviarParaLog($"Dados do LineFeed({drArquivos.LineFeed}) utilizado.", "OrquestraProcmto", true, IdArquivo);
                                    switch (drArquivos.tp_arquivo.ToUpper())
                                    {
                                    case "DBF":
                                        //Processa arquivos DBF
                                        ProcessArq.TipoArquivo = Global.TipoArquivo.DBF;
                                        Result        = ProcessArq.ProcessaEmLoteDBF(drArquivos.ConexaoBusiness, NomeTabelaDST, NomeArquivo, IdArquivo);
                                        FoiProcessado = true;
                                        break;

                                    case "EXCEL":
                                        //Processa arquivos EXCEL
                                        string NomePlanilha = drArquivos.nm_Planilha.ToString();
                                        ProcessArq.TipoArquivo = Global.TipoArquivo.EXCEL;
                                        Result        = ProcessArq.ProcessaEmLoteXLSX(drArquivos.ConexaoBusiness, NomeTabelaDST, NomePlanilha, NomeArquivo, IdArquivo);
                                        FoiProcessado = true;
                                        break;

                                    case "DELIMITADO":
                                        //Processa arquivos DELIMITADO
                                        Result        = ProcessarArqDelimitadoOuFixo(true, drArquivos.ConexaoBusiness, NomeTabelaSTG, NomeTabelaDST, Global.PathFormatFile, Delimitador, drArquivos.cercador, NomeArquivo, IdArquivo, Global.Behavior.DELIMITADO, drArquivos.FirstLine, drArquivos.LineFeed);
                                        FoiProcessado = true;
                                        break;

                                    case "FIXO":
                                        //Processa arquivos FIXO
                                        Result        = ProcessarArqDelimitadoOuFixo(true, drArquivos.ConexaoBusiness, NomeTabelaSTG, NomeTabelaDST, Global.PathFormatFile, Delimitador, drArquivos.cercador, NomeArquivo, IdArquivo, Global.Behavior.FIXO, drArquivos.FirstLine, drArquivos.LineFeed);
                                        FoiProcessado = true;
                                        break;
                                    }
                                    Global.EnviarParaLog($"Processamento do Arquivo {NomeArquivo} Concluído", "OrquestraProcmto", true, IdArquivo);
                                    Global.EnviarParaLog($"Move Para Processados({Result.ToString()})", "OrquestraProcmto", true, IdArquivo);
                                    if (drArquivos.tp_arquivo != "EXCEL")
                                    {
                                        ProcessArq.MoveParaProcessados(NomeArquivo, IdArquivo, Result);
                                    }
                                    else
                                    {
                                        //Tratativa quando for Excel
                                        if ((drArquivos.FlagPlanTemVariasAbas == "NAO") || (drArquivos.FlagPlanTemVariasAbas == "SIM" && drArquivos.FlagUltimaAbaPlanilha == "SIM"))
                                        {
                                            ProcessArq.MoveParaProcessados(NomeArquivo, IdArquivo, Result);
                                        }
                                    }

                                    if (Result)
                                    {
                                        processArqController.PopulaARQUIVOSCARREGADOS(drArquivos.ConexaoBusiness, drArquivos.tb_destino, drArquivos.dir_entrada, Path.GetFileName(NomeArquivo), IdArquivo);
                                        if (drArquivos.tp_arquivo.ToUpper() == "DELIMITADO" || drArquivos.tp_arquivo.ToUpper() == "FIXO")
                                        {
                                            try
                                            {
                                                processArqController.DropTabela(NomeTabelaSTG, processArqController.ConnectionsStringDST(drArquivos.ConexaoBusiness));
                                                Global.EnviarParaLog($"Tabela stage {NomeTabelaSTG}) apagada com sucesso.", "OrquestraProcmto", true, IdArquivo);
                                            }
                                            catch (Exception ex)
                                            {
                                                Global.EnviarParaLog($"Erro ao apagar a tabela stage: {NomeTabelaSTG}. MOTIVO: {ex.Message}", "OrquestraProcmto", true, IdArquivo);
                                            }
                                        }
                                        if (drArquivos.dir_saida.Length > 0)
                                        {
                                            SqlConnection _Conn = new SqlConnection(Global.ConnectionsString);
                                            _Conn.Open();
                                            try
                                            {
                                                processArqController.GeraSaidaDoArquivo(_Conn, NomeTabelaDST, drArquivos.dir_saida, drArquivos.ConexaoBusiness, IdArquivo);
                                            }
                                            finally
                                            {
                                                _Conn.Close();
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    Global.EnviarParaLog($"Erro: Não foi encontrado Código do Arquivo para o Serviço {pIdServico}.", "OrquestraProcmto");
                }
            }
            catch (Exception ex)
            {
                Global.EnviarParaLog($"Erro: {ex.Message}.", "OrquestraProcmto");
            }
            finally
            {
                processArqController.AtualizaSituacaoThread(pIdServico, "Ocioso");
                if (FoiProcessado)
                {
                    EnviarEmail(Global.Strtoint(pIdServico));
                }
            }
        }