From 11abffc18a3f87188a022995580302cf4fce235d Mon Sep 17 00:00:00 2001 From: erick.sato Date: Thu, 7 Apr 2016 11:55:16 -0300 Subject: [PATCH] [Redmine Atendimento #4377] Correção Notificacao --- cit-almoxarifado-api/src/main/java/br/com/centralit/api/job/NotificacaoRessuprimentoJob.java | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/BaixaAlmoxarifadoServiceImpl.java | 59 +++++++++++++++++++++++++++++++++++++---------------------- 2 files changed, 100 insertions(+), 31 deletions(-) diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/job/NotificacaoRessuprimentoJob.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/job/NotificacaoRessuprimentoJob.java index 8464f8a..848d2c4 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/job/NotificacaoRessuprimentoJob.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/job/NotificacaoRessuprimentoJob.java @@ -1,7 +1,9 @@ package br.com.centralit.api.job; import java.math.BigDecimal; +import java.util.Arrays; import java.util.Collection; +import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -10,6 +12,8 @@ import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.SchedulerException; +import com.googlecode.genericdao.search.Field; + import br.com.centralit.api.model.ConfiguracaoNotificacaoRessuprimento; import br.com.centralit.api.model.ConfiguracaoNotificacaoRessuprimentoGrupo; import br.com.centralit.api.model.ConfiguracaoNotificacaoRessuprimentoUsuario; @@ -19,9 +23,13 @@ import br.com.centralit.api.service.ConfiguracaoNotificacaoRessuprimentoUsuarioS import br.com.centralit.api.service.MaterialConsumoService; import br.com.centralit.api.service.NotificacaoUsuarioService; import br.com.centralit.api.service.impl.NotificacaoGrupoService; +import br.com.centralit.framework.dao.arquitetura.SearchSeven; import br.com.centralit.framework.mail.HTMLMail; +import br.com.centralit.framework.model.Filter; import br.com.centralit.framework.model.NotificacaoGrupo; import br.com.centralit.framework.model.NotificacaoUsuario; +import br.com.centralit.framework.model.SearchParams; +import br.com.centralit.framework.util.ConstantsQuery; import br.com.centralit.framework.util.UtilColecao; import br.com.centralit.framework.util.UtilObjeto; @@ -153,16 +161,42 @@ public class NotificacaoRessuprimentoJob implements Job { final Collection listaUsuarios = this.configuracaoUsuarioService.findPorIdConfiguracaoNotificacao(configuracao.getId()); + String emailDestinatario = ""; + String nomeDestinatario = ""; + String mensagem = ""; + if (!UtilColecao.isVazio(listaGrupos)) { for (final ConfiguracaoNotificacaoRessuprimentoGrupo configuracaoGrupo : listaGrupos) { - final NotificacaoGrupo notificacaoGrupo = new NotificacaoGrupo(configuracaoGrupo.getGrupo(), configuracao.getNotificacao()); + NotificacaoGrupo notificacaoGrupo = null; + + SearchParams params = new SearchParams(); + params.setFilters(Arrays.asList(new Filter[]{new Filter("notificacao.id", ConstantsQuery.TYPE_NUMERIC, configuracao.getNotificacao().getId().toString(), ConstantsQuery.COMPARE_EQUALS)})); + params.setStart(0); + params.setLimit(Integer.MAX_VALUE); + + params.setFields(Arrays.asList(new String[]{"grupo.email", "grupo.nome", "notificacao.mensagem"})); - this.notificacaoGrupoService.save(notificacaoGrupo); + List search = this.notificacaoGrupoService.search(new SearchSeven(params)); + + if(UtilColecao.isVazio(search)){ + notificacaoGrupo = new NotificacaoGrupo(configuracaoGrupo.getGrupo(), configuracao.getNotificacao()); + this.notificacaoGrupoService.save(notificacaoGrupo); + + emailDestinatario = notificacaoGrupo.getGrupo().getEmail(); + nomeDestinatario = notificacaoGrupo.getGrupo().getNome(); + mensagem = notificacaoGrupo.getNotificacao().getMensagem(); + + }else{ + Object[] values = (Object[]) search.get(0); + emailDestinatario = (String) values[0]; + nomeDestinatario = (String) values[1]; + mensagem = (String) values[2]; + } if(HTMLMail.permiteEnvioEmail){ - this.notificacaoUsuarioService.sendNotificacaoEmailGrupo(notificacaoGrupo); + this.notificacaoUsuarioService.sendNotificacaoEmailGrupo(emailDestinatario, nomeDestinatario, mensagem); } NotificacaoRessuprimentoJob.logger.info("Inclusão da Notificação para o grupo: " + configuracaoGrupo.getGrupo().getNome()); @@ -174,12 +208,32 @@ public class NotificacaoRessuprimentoJob implements Job { for (final ConfiguracaoNotificacaoRessuprimentoUsuario configuracaoUsuario : listaUsuarios) { - final NotificacaoUsuario notificacaoUsuario = new NotificacaoUsuario(configuracao.getNotificacao(), configuracaoUsuario.getUsuario()); + NotificacaoUsuario notificacaoUsuario = null; - this.notificacaoUsuarioService.save(notificacaoUsuario); + SearchParams params = new SearchParams(); + params.setFilters(Arrays.asList(new Filter[]{new Filter("notificacao.id", ConstantsQuery.TYPE_NUMERIC, configuracao.getNotificacao().getId().toString(), ConstantsQuery.COMPARE_EQUALS)})); + params.setStart(0); + params.setLimit(Integer.MAX_VALUE); + params.setFields(Arrays.asList(new String[]{"usuario.email", "usuario.username", "notificacao.mensagem"})); + List search = this.notificacaoUsuarioService.search(new SearchSeven(params)); + + if(UtilColecao.isVazio(search)){ + notificacaoUsuario = new NotificacaoUsuario(configuracao.getNotificacao(), configuracaoUsuario.getUsuario()); + this.notificacaoUsuarioService.save(notificacaoUsuario); + + emailDestinatario = notificacaoUsuario.getUsuario().getEmail(); + nomeDestinatario = notificacaoUsuario.getUsuario().getUsername(); + mensagem = notificacaoUsuario.getNotificacao().getMensagem(); + + }else{ + Object[] values = (Object[]) search.get(0); + emailDestinatario = (String) values[0]; + nomeDestinatario = (String) values[1]; + mensagem = (String) values[2]; + } if(HTMLMail.permiteEnvioEmail){ - this.notificacaoUsuarioService.sendNotificacaoEmail(notificacaoUsuario); + this.notificacaoUsuarioService.sendNotificacaoEmailGrupo(emailDestinatario, nomeDestinatario, mensagem); } NotificacaoRessuprimentoJob.logger.info("Inclusão da Notificação para o usuario:" + configuracaoUsuario.getUsuario().getUsername()); @@ -197,13 +251,13 @@ public class NotificacaoRessuprimentoJob implements Job { * * @param context * @param configuracao - * + * * @return {@link Boolean} */ private Boolean validarQtdAtualMaterial(JobExecutionContext context, ConfiguracaoNotificacaoRessuprimento configuracao) { BigDecimal qtdMaterialEstoque = BigDecimal.ZERO; - + try { urlScheme = (String) context.getScheduler().getContext().get("scheme"); urlHost = (String) context.getScheduler().getContext().get("host"); @@ -212,7 +266,7 @@ public class NotificacaoRessuprimentoJob implements Job { } catch (SchedulerException e) { e.printStackTrace(); } - + return qtdMaterialEstoque.compareTo(BigDecimal.ZERO) > 0 && qtdMaterialEstoque.compareTo(configuracao.getLimiteEstoque()) <= 0; } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/BaixaAlmoxarifadoServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/BaixaAlmoxarifadoServiceImpl.java index 7bcec71..2e858f2 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/BaixaAlmoxarifadoServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/BaixaAlmoxarifadoServiceImpl.java @@ -20,6 +20,7 @@ import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; import br.com.centralit.api.service.DominioService; import br.com.centralit.api.service.EntradaAlmoxarifadoItemService; import br.com.centralit.api.service.EstruturaOrganizacionalService; +import br.com.centralit.api.service.InternacionalizacaoService; import br.com.centralit.api.service.MaterialConsumoService; import br.com.centralit.api.service.MaterialEstoqueSaldoMedioService; import br.com.centralit.api.service.MovimentoEstoqueService; @@ -106,15 +107,20 @@ public class BaixaAlmoxarifadoServiceImpl extends GenericServiceImpl 0) { - throw new BusinessException(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, CodigoErro.REGRA_NEGOCIO.getValue()); + throw new BusinessException(this.internacionalizacaoService.getTranslate(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, this.getIdioma()), CodigoErro.REGRA_NEGOCIO.getValue()); } else { if (baixaItem.getQuantidade().compareTo(itemAtual.getQuantidade().add(baixaItem.getQtdEstoque())) > 0) { - throw new BusinessException(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, CodigoErro.REGRA_NEGOCIO.getValue()); + throw new BusinessException(this.internacionalizacaoService.getTranslate(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, this.getIdioma()), CodigoErro.REGRA_NEGOCIO.getValue()); } } } else if (baixaItem.getQuantidade().compareTo(baixaItem.getQtdEstoque()) > 0 && baixaItem.getQuantidade().compareTo(itemAtual.getQuantidade().add(baixaItem.getQtdEstoque())) > 0) { - throw new BusinessException(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, CodigoErro.REGRA_NEGOCIO.getValue()); + throw new BusinessException(this.internacionalizacaoService.getTranslate(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, this.getIdioma()), CodigoErro.REGRA_NEGOCIO.getValue()); } } else { if (baixaItem.getQuantidade().compareTo(baixaItem.getQtdEstoque()) > 0) { - throw new BusinessException(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, CodigoErro.REGRA_NEGOCIO.getValue()); + throw new BusinessException(this.internacionalizacaoService.getTranslate(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, this.getIdioma()), CodigoErro.REGRA_NEGOCIO.getValue()); } } } @@ -407,15 +415,15 @@ public class BaixaAlmoxarifadoServiceImpl extends GenericServiceImpl