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