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}"); } }
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); }
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); }
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; } }