예제 #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);
        }
예제 #2
0
        public OperacaoAprModelo MapeamentoOperacao(OPERACAO_APR operacao)
        {
            OperacaoAprModelo operacaoModelo = new OperacaoAprModelo()
            {
                CodOperacaoAPR = operacao.CodOperacaoAPR,
                CodAPR         = operacao.CodAPR,
                CodStatusAPR   = operacao.CodStatusAPR,
                Codigo         = operacao.Codigo,
                Descricao      = operacao.Descricao,
                CodLI          = operacao.CodLI,
                CodDisciplina  = operacao.CodDisciplina,
                CodAtvPadrao   = operacao.CodAtvPadrao
            };

            return(operacaoModelo);
        }
예제 #3
0
        public void InsereOuEditaOperacaoAPR(long codAPR, OPERACAO_APR operacao, DB_LaborSafetyEntities entities = null)
        {
            if (entities == null)
            {
                entities = new DB_LaborSafetyEntities();
            }

            if (operacao == null)
            {
                throw new Exception($"A OPERACAO_APR não foi informada!");
            }

            APR aprExistente = entities.APR.Where(x => x.CodAPR == codAPR).FirstOrDefault();

            if (aprExistente == null)
            {
                throw new Exception($"Não foi encontrada, no sistema, uma APR com o código {codAPR} informado");
            }

            OPERACAO_APR operacaoExistente = entities.OPERACAO_APR.Where(x => x.CodOperacaoAPR == operacao.CodOperacaoAPR).FirstOrDefault();

            if (operacaoExistente == null)
            {
                aprExistente.OPERACAO_APR.Add(operacao);
            }
            else
            {
                operacaoExistente.CodAPR        = operacao.CodAPR;
                operacaoExistente.CodAtvPadrao  = operacao.CodAtvPadrao;
                operacaoExistente.CodDisciplina = operacao.CodDisciplina;
                operacaoExistente.Codigo        = operacao.Codigo;
                operacaoExistente.CodLI         = operacao.CodLI;
                operacaoExistente.CodStatusAPR  = operacao.CodStatusAPR;
                operacaoExistente.Descricao     = operacao.Descricao;
                operacaoExistente.STATUS_APR    = operacao.STATUS_APR;
            }

            entities.SaveChanges();
        }
예제 #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);
        }