private bool ProcessarRotaFinalizada(long cdRota)
        {
            bool retorno = false;

            var     rota                             = _dbContext.RotaRepository.GetRotaIndicadoresFluxoLES(cdRota);
            var     ocorrenciasRota                  = _dbContext.OcorrenciaRepository.GetOcorrenciasCompletasOrdenadoDtInclusao(cdRota);
            var     metaPainelIndicadores            = _dbContext.MetasPainelIndicadoresRepository.GetByUnidadeNegocio(rota.CdUnidadeNegocio);
            var     baldeiosEntregaRota              = _dbContext.BaldeioEntregaRepository.GetBaldeiosMultiTransporteByRotaDestino(cdRota);
            var     unidadesNegocio                  = _dbContext.UnidadeNegocioRepository.GetAll();
            var     depositosUnidadeNegocioRota      = _dbContext.DepositoRepository.GetDepositosComGeoCoordenadas(rota.CdUnidadeNegocio);
            var     depositos                        = _dbContext.DepositoRepository.GetDepositosComGeoCoordenadas();
            var     veiculoRota                      = _dbContext.VeiculoRepository.GetVeiculos(rota.CdPlacaVeiculo).FirstOrDefault();
            var     tipoVeiculoRota                  = _dbContext.TipoVeiculoRepository.GetTipoVeiculo(veiculoRota.CdTipoVeiculo).FirstOrDefault();
            var     deslocamentosAlmoco              = _dbContext.DeslocamentoAlmocoRotaRepository.GetDeslocamentosPIM(cdRota);
            var     deslocamentosAbastecimento       = _dbContext.DeslocamentoAbastecimentoRotaRepository.GetDeslocamentosPIM(cdRota);
            var     deslocamentosPernoite            = _dbContext.DeslocamentoPernoiteRotaRepository.GetDeslocamentosPIM(cdRota);
            var     paradas                          = _dbContext.ParadasTratadasAnaliticoRepository.Get(cdRota);
            decimal valorMetaAderenciaUnidadeNegocio = metaPainelIndicadores?.VlMetaAderencia ?? 0;

            rota.Entregas = _dbContext.EntregaRepository.EntregasComUnidadeNegocio(rota.Entregas).ToList();
            rota.Entregas = _dbContext.EntregaRepository.EntregasComCliente(rota.Entregas).ToList();

            if (rota.CdSituacao == (long)SituacaoMonitoramento.Finalizada)
            {
                try
                {
                    Integracao integracaoXml = new Integracao();

                    integracaoXml.NumeroRota = rota.CdRotaNegocio;

                    // MultiTransporte
                    integracaoXml.MultiTransporte = MultiTransporteNode.Processar(baldeiosEntregaRota, rota);

                    integracaoXml.Data = rota.DtRota.ToString("yyyy-MM-ddTHH:mm:ssZ");
                    integracaoXml.SetDtData(rota.DtRota);
                    integracaoXml.Placa = rota.CdPlacaVeiculo;

                    // BRF não envia código do motorista
                    integracaoXml.CpfMotorista = string.Empty;

                    integracaoXml.CnpjTransportador = rota.Transportadora?.NrCnpj ?? string.Empty;
                    integracaoXml.UnidadeNegocio    = rota.CdUnidadeNegocio;

                    // Indicadores Fluxo LES
                    integracaoXml.Ocorrencias.AdicionarOcorrencia(DivergenciaDiariaOcorrencia.Processar(rota));
                    integracaoXml.Ocorrencias.AdicionarOcorrencia(DivergenciaPernoiteOcorrencia.Processar(rota, ocorrenciasRota, depositos));
                    integracaoXml.Ocorrencias.AdicionarOcorrencia(CustoDescargaOcorrencia.Processar(rota));
                    integracaoXml.Ocorrencias.AdicionarOcorrencia(DevolucaoTransportadorOcorrencia.Processar(rota));
                    integracaoXml.Ocorrencias.AdicionarOcorrencia(ReentregaOcorrencia.Processar(rota));
                    integracaoXml.Ocorrencias.AdicionarOcorrencia(AdicionalBalsaOcorrencia.Processar(ocorrenciasRota));

                    integracaoXml.Ocorrencias.AdicionarOcorrencia(DivergenciaKmOcorrencia.Processar(rota, ocorrenciasRota,
                                                                                                    deslocamentosAlmoco,
                                                                                                    deslocamentosAbastecimento,
                                                                                                    deslocamentosPernoite,
                                                                                                    paradas,
                                                                                                    valorMetaAderenciaUnidadeNegocio));

                    integracaoXml.Ocorrencias.AdicionarOcorrencia(AdicionalMeiaPernoiteOcorrencia.Processar(ocorrenciasRota, depositosUnidadeNegocioRota, rota));
                    integracaoXml.Ocorrencias.AdicionarOcorrencia(DiariaClienteOcorrencia.Processar(rota, tipoVeiculoRota));

                    var objRequest = ConverterObjetoRequisicaoWS(integracaoXml);

                    #region Criação do arquivo XML
                    var xml = XmlParser.ObjectToXml(objRequest);
                    Console.Write(xml + "\n\n");
                    XmlParser.CreateXmlFile(xml, @"C:\FluxoLES\xml", rota.CdRotaNegocio.ToString());
                    #endregion

                    _integrator.Enviar(objRequest);
                    //Execute(xml);

                    retorno = true;
                }

                catch (Exception ex)
                {
                    throw ex;
                }

                return(retorno);
            }

            return(retorno);
        }