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); }
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); }
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)); } } }