コード例 #1
0
        private void geraLogMetodoAPR(APRSAPModelo modelo, StreamWriter sw)
        {
            sw.WriteLine($@"-----MÉTODO PROCESSA APR-----");
            int i = 0;

            foreach (var APR in modelo.Itens)
            {
                sw.WriteLine("");
                sw.WriteLine($@"___ITEM {i} da lista___");
                sw.WriteLine($@"Propriedade Número da Ordem - {APR.Numero_Ordem}");
                sw.WriteLine($@"Propriedade Descrição da Ordem - {APR.Descricao_Ordem}");
                sw.WriteLine($@"Propriedade Local de Instalação - {APR.Local_Instalacao}");
                sw.WriteLine($@"Propriedade Operação- {APR.Operacao}");
                sw.WriteLine($@"Propriedade Descrição da Operação - {APR.Descricao_Operacao}");
                sw.WriteLine($@"Propriedade Centro de Trabalho - {APR.Centro_Trabalho}");
                sw.WriteLine($@"Propriedade Valor do Centro de Trabalho - {APR.Valor_Centro_Trabalho}");
                sw.WriteLine($@"Propriedade Chave do Modelo de Operação - {APR.Chave_Modelo_Operacao}");
                sw.WriteLine($@"Propriedade Local de Instalação da Operação - {APR.Local_Instalacao_Operacao}");
                sw.WriteLine($@"Propriedade Status - {APR.Status_Ordem}");
            }
        }
コード例 #2
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);
        }
コード例 #3
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);
        }
コード例 #4
0
ファイル: APRSAPNegocio.cs プロジェクト: M4N0V3Y/LaborSafety
        private void ValidaModelo(APRSAPModelo modelo)
        {
            try
            {
                if (modelo == null)
                {
                    throw new Exception("O modelo de APR não foi informado!");
                }

                if (modelo.Itens == null)
                {
                    throw new Exception("A(s) ordem(ordens) não foi(ram) informada(s)!");
                }

                if (modelo.Itens.Count == 0)
                {
                    throw new Exception("A(s) ordem(ordens) não foi(ram) informada(s)!");
                }
                else
                {
                    foreach (var item in modelo.Itens)
                    {
                        if (String.IsNullOrEmpty(item.Numero_Ordem))
                        {
                            throw new Exception($"O número da ordem não foi informado!");
                        }

                        if (String.IsNullOrEmpty(item.Descricao_Ordem))
                        {
                            throw new Exception($"A descrição da ordem {item.Numero_Ordem} não foi informada!");
                        }

                        if (String.IsNullOrEmpty(item.Local_Instalacao))
                        {
                            throw new Exception($"O local de instalação da ordem {item.Numero_Ordem} não foi informado!");
                        }

                        if (String.IsNullOrEmpty(item.Operacao))
                        {
                            throw new Exception($"A operação da ordem {item.Numero_Ordem} não foi informada!");
                        }

                        if (String.IsNullOrEmpty(item.Descricao_Operacao))
                        {
                            throw new Exception($"A descrição da operação da ordem {item.Numero_Ordem} não foi informada!");
                        }

                        if (String.IsNullOrEmpty(item.Centro_Trabalho))
                        {
                            throw new Exception($"O centro de trabalho da ordem {item.Numero_Ordem} não foi informado!");
                        }

                        if (String.IsNullOrEmpty(item.Valor_Centro_Trabalho))
                        {
                            throw new Exception($"A característica do centro de trabalho da ordem {item.Numero_Ordem} não foi informada!");
                        }

                        if (String.IsNullOrEmpty(item.Chave_Modelo_Operacao))
                        {
                            throw new Exception($"A chave de modelo da ordem {item.Numero_Ordem} não foi informada!");
                        }

                        if (String.IsNullOrEmpty(item.Local_Instalacao_Operacao))
                        {
                            throw new Exception($"O local de instalação da operação da ordem {item.Numero_Ordem} não foi informado!");
                        }

                        if (String.IsNullOrEmpty(item.Status_Ordem))
                        {
                            throw new Exception($"O status da ordem {item.Numero_Ordem} não foi informado!");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }