Esempio n. 1
0
        private void AdicionaOperacaoAPR(APR apr, APRItemSAPModelo item, DadosOperacao dadosOperacao, DB_APRPTEntities entities)
        {
            //TODO: É NECESSÁRIO APAGAR TODAS AS OPERACOES E INSERIR DE NOVO

            OPERACAO_APR operacao = new OPERACAO_APR();

            operacao.CodAPR        = apr.CodAPR;
            operacao.CodStatusAPR  = (long)Constantes.StatusAPR.Criado;
            operacao.Codigo        = item.Operacao;
            operacao.CodLI         = dadosOperacao.CodLI;
            operacao.CodDisciplina = dadosOperacao.CodDisciplina;
            operacao.CodAtvPadrao  = dadosOperacao.CodAtividadePadrao;
            operacao.Ativo         = true;

            apr.OPERACAO_APR.Add(operacao);

            //Salva a operação no APR
            operacaoAprPersistencia.InsereOuEditaOperacaoAPR(apr.CodAPR, operacao, entities);

            //Salva os riscos

            //Riscos de Ambiente
            aprPersistencia.InserirRiscosAmbienteAPR(apr.CodAPR, dadosOperacao.CodLI, entities);
            aprPersistencia.InserirRiscosAtividadeAPR(apr.CodAPR, dadosOperacao.CodLI, dadosOperacao.CodDisciplina, dadosOperacao.CodAtividadePadrao, entities);
        }
Esempio n. 2
0
        private int CalculaRiscoGeral(DadosOperacao dadosOperacao, DB_APRPTEntities entities)
        {
            FiltroUnicoInventarioAtividadeModelo filtroVRG = new FiltroUnicoInventarioAtividadeModelo();

            filtroVRG.AprAtiva      = true;
            filtroVRG.CodAtividade  = dadosOperacao.CodAtividadePadrao;
            filtroVRG.CodDisciplina = dadosOperacao.CodDisciplina;
            filtroVRG.CodLi         = dadosOperacao.CodLI;

            int riscoGeral = aprNegocio.CalcularRiscoAprPorAtividadeDisciplinaLI(filtroVRG);

            return(riscoGeral);
        }
Esempio n. 3
0
        private DadosOperacao VerificaValoresNaBase(APRItemSAPModelo item, DB_APRPTEntities entities)
        {
            DadosOperacao result = new DadosOperacao();

            //Verifica se o local de instalação existe na base
            var localExistente = this.localInstalacaoPersistencia.ListarLocalInstalacaoPorNome(item.Local_Instalacao_Operacao, entities);

            if (localExistente == null)
            {
                throw new Exception($"O local informado para a ordem-operação {item.Numero_Ordem}-{item.Operacao} não existe na base de dados");
            }
            else
            {
                result.CodLI = localExistente.CodLocalInstalacao;
            }

            //Verifica se a disciplina(Caracteristica da classe) existe na base
            var disciplinaExistente = this.disciplinaPersistencia.ListarDisciplinaPorNome(item.Valor_Centro_Trabalho, entities);

            if (disciplinaExistente == null)
            {
                throw new Exception($"A característica da classe informada para a ordem-operação {item.Numero_Ordem}-{item.Operacao} não existe na base de dados");
            }
            else
            {
                result.CodDisciplina = disciplinaExistente.CodDisciplina;
            }

            //Verifica se a atividade padrão (Chave modelo) existe na base
            var atvPadraoExistente = this.atividadePadraoPersistencia.ListarAtividadePorNome(item.Chave_Modelo_Operacao, entities);

            if (atvPadraoExistente == null)
            {
                throw new Exception($"A atividade informada para a ordem-operação {item.Numero_Ordem}-{item.Operacao} não existe na base de dados");
            }
            else
            {
                result.CodAtividadePadrao = atvPadraoExistente.CodAtividadePadrao;
            }

            return(result);
        }
Esempio n. 4
0
        public APRSAPResponse ProcessaOrdem(APRSAPModelo modelo)
        {
            APRSAPResponse response = new APRSAPResponse();

            response.Itens = new List <APRItemSAPResponse>();

            this.ValidaModelo(modelo);
            var statusApr = modelo.Itens.First().Status_Ordem;

            using (var entities = new DB_APRPTEntities())
            {
                using (var transaction = entities.Database.BeginTransaction(System.Data.IsolationLevel.ReadCommitted))
                {
                    APRItemSAPResponse itemResponse = new APRItemSAPResponse();
                    itemResponse.Endereco_Rede = "";
                    APR apr = new APR();
                    try
                    {
                        if (statusApr == Enum.GetName(typeof(Constantes.StatusOrdem), Constantes.StatusOrdem.IMPR))
                        {
                            AtualizaStatusApr(modelo.Itens.First().Numero_Ordem, (long)Constantes.StatusOrdem.IMPR, entities);
                        }
                        else
                        {
                            if (statusApr == Enum.GetName(typeof(Constantes.StatusOrdem), Constantes.StatusOrdem.ASAP))
                            {
                                var aprBase = aprPersistencia.PesquisarPorOrdemManutencao(modelo.Itens.First().Numero_Ordem, entities);
                                apr = aprBase;
                                var aprBase64 = GerarAprSerializada(aprBase.NumeroSerie);
                                itemResponse.Endereco_Rede = aprBase64;
                                //EnviarDadosSAP(aprBase64, apr.OrdemManutencao);
                            }
                            else
                            {
                                //Verifica se já existe APR para ordem
                                var aprExistente = aprPersistencia.PesquisarPorOrdemManutencaoExistentesEInexistentes(modelo.Itens.First().Numero_Ordem, entities);
                                if (aprExistente == null)
                                {
                                    apr = aprPersistencia.InserirSomenteComNumeroSeriaViaSAP(entities);
                                    apr.OrdemManutencao = modelo.Itens.First().Numero_Ordem;
                                    apr.Descricao       = modelo.Itens.First().Descricao_Ordem;
                                    apr.LocalInstalacao = modelo.Itens.First().Local_Instalacao;
                                }
                                else
                                {
                                    apr = aprExistente;
                                    apr.CodStatusAPR    = (long)Constantes.StatusAPR.Criado;
                                    apr.LocalInstalacao = modelo.Itens.First().Local_Instalacao;
                                    apr.Descricao       = modelo.Itens.First().Descricao_Ordem;
                                    this.DesativarOperacoesApr(apr, entities);
                                }
                                var maiorRiscoGeral = int.MinValue;
                                foreach (var item in modelo.Itens)
                                {
                                    OPERACAO_APR operacao = new OPERACAO_APR();
                                    //Realiza as validações dos valores dos itens
                                    DadosOperacao dadosOperacao = this.VerificaValoresNaBase(item, entities);
                                    //Adiciona a operação na APR
                                    this.AdicionaOperacaoAPR(apr, item, dadosOperacao, entities);
                                    //Calcula o valor do risco geral da APR

                                    // Lógica para obtenção do maior risco das operações calculadas
                                    var riscoCalculado = this.CalculaRiscoGeral(dadosOperacao, entities);
                                    if (maiorRiscoGeral < riscoCalculado)
                                    {
                                        maiorRiscoGeral = riscoCalculado;
                                    }
                                }
                                itemResponse.VRG = maiorRiscoGeral.ToString();
                                apr.RiscoGeral   = maiorRiscoGeral;
                                apr.DataInicio   = DateTime.Now;
                            }
                        }
                        entities.SaveChanges();
                        transaction.Commit();

                        //if (statusApr == Enum.GetName(typeof(Constantes.StatusOrdem), Constantes.StatusOrdem.ASAP_CALC))
                        if (statusApr.ToUpper() == Constantes.StatusAPRIntegracaoOrdem.EnviarRecalcular.ToUpper())
                        {
                            var aprBase64 = GerarAprSerializada(apr.NumeroSerie);
                            itemResponse.Endereco_Rede = aprBase64;
                            //EnviarDadosSAP(aprBase64, apr.OrdemManutencao);
                        }
                        itemResponse.Status = Constantes.StatusResponseIntegracao.S.ToString();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        itemResponse.Status    = Constantes.StatusResponseIntegracao.E.ToString();
                        itemResponse.Descricao = ex.Message;

                        throw ex;
                    }
                    finally
                    {
                        itemResponse.Numero_Serie = $"{apr.NumeroSerie}";
                        response.Itens.Add(itemResponse);
                    }
                }
            }

            return(response);
        }