コード例 #1
0
        public APRSAPResponse DT_ORDEM_LaborSafety_IW32_IW38_ProcessaOrdem(APRSAPModelo modelo)
        {
            APRSAPResponse result = new APRSAPResponse();

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

            try
            {
                //Grava o que chegou na integração, em um arquivo texto
                this.GeraLogRecebimentoIntegracao(modelo, TipoIntegracao.Ordem);

                result = aprSapNegocio.ProcessaOrdem(modelo);
            }
            catch (Exception e)
            {
                APRItemSAPResponse itemResponse = new APRItemSAPResponse();
                itemResponse.Status    = Constantes.StatusResponseIntegracao.E.ToString();
                itemResponse.Descricao = e.Message;

                result.Itens.Add(itemResponse);
            }

            return(result);
        }
コード例 #2
0
ファイル: APRSAPNegocio.cs プロジェクト: M4N0V3Y/LaborSafety
        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);
        }