Commit 11abffc18a3f87188a022995580302cf4fce235d

Authored by erick.sato
1 parent 6ebbdd8b
Exists in master

[Redmine Atendimento #4377] Correção Notificacao

cit-almoxarifado-api/src/main/java/br/com/centralit/api/job/NotificacaoRessuprimentoJob.java
1 1 package br.com.centralit.api.job;
2 2  
3 3 import java.math.BigDecimal;
  4 +import java.util.Arrays;
4 5 import java.util.Collection;
  6 +import java.util.List;
5 7  
6 8 import org.apache.commons.logging.Log;
7 9 import org.apache.commons.logging.LogFactory;
... ... @@ -10,6 +12,8 @@ import org.quartz.JobExecutionContext;
10 12 import org.quartz.JobExecutionException;
11 13 import org.quartz.SchedulerException;
12 14  
  15 +import com.googlecode.genericdao.search.Field;
  16 +
13 17 import br.com.centralit.api.model.ConfiguracaoNotificacaoRessuprimento;
14 18 import br.com.centralit.api.model.ConfiguracaoNotificacaoRessuprimentoGrupo;
15 19 import br.com.centralit.api.model.ConfiguracaoNotificacaoRessuprimentoUsuario;
... ... @@ -19,9 +23,13 @@ import br.com.centralit.api.service.ConfiguracaoNotificacaoRessuprimentoUsuarioS
19 23 import br.com.centralit.api.service.MaterialConsumoService;
20 24 import br.com.centralit.api.service.NotificacaoUsuarioService;
21 25 import br.com.centralit.api.service.impl.NotificacaoGrupoService;
  26 +import br.com.centralit.framework.dao.arquitetura.SearchSeven;
22 27 import br.com.centralit.framework.mail.HTMLMail;
  28 +import br.com.centralit.framework.model.Filter;
23 29 import br.com.centralit.framework.model.NotificacaoGrupo;
24 30 import br.com.centralit.framework.model.NotificacaoUsuario;
  31 +import br.com.centralit.framework.model.SearchParams;
  32 +import br.com.centralit.framework.util.ConstantsQuery;
25 33 import br.com.centralit.framework.util.UtilColecao;
26 34 import br.com.centralit.framework.util.UtilObjeto;
27 35  
... ... @@ -153,16 +161,42 @@ public class NotificacaoRessuprimentoJob implements Job {
153 161  
154 162 final Collection<ConfiguracaoNotificacaoRessuprimentoUsuario> listaUsuarios = this.configuracaoUsuarioService.findPorIdConfiguracaoNotificacao(configuracao.getId());
155 163  
  164 + String emailDestinatario = "";
  165 + String nomeDestinatario = "";
  166 + String mensagem = "";
  167 +
156 168 if (!UtilColecao.isVazio(listaGrupos)) {
157 169  
158 170 for (final ConfiguracaoNotificacaoRessuprimentoGrupo configuracaoGrupo : listaGrupos) {
159 171  
160   - final NotificacaoGrupo notificacaoGrupo = new NotificacaoGrupo(configuracaoGrupo.getGrupo(), configuracao.getNotificacao());
  172 + NotificacaoGrupo notificacaoGrupo = null;
  173 +
  174 + SearchParams params = new SearchParams();
  175 + params.setFilters(Arrays.asList(new Filter[]{new Filter("notificacao.id", ConstantsQuery.TYPE_NUMERIC, configuracao.getNotificacao().getId().toString(), ConstantsQuery.COMPARE_EQUALS)}));
  176 + params.setStart(0);
  177 + params.setLimit(Integer.MAX_VALUE);
  178 +
  179 + params.setFields(Arrays.asList(new String[]{"grupo.email", "grupo.nome", "notificacao.mensagem"}));
161 180  
162   - this.notificacaoGrupoService.save(notificacaoGrupo);
  181 + List<Object> search = this.notificacaoGrupoService.search(new SearchSeven(params));
  182 +
  183 + if(UtilColecao.isVazio(search)){
  184 + notificacaoGrupo = new NotificacaoGrupo(configuracaoGrupo.getGrupo(), configuracao.getNotificacao());
  185 + this.notificacaoGrupoService.save(notificacaoGrupo);
  186 +
  187 + emailDestinatario = notificacaoGrupo.getGrupo().getEmail();
  188 + nomeDestinatario = notificacaoGrupo.getGrupo().getNome();
  189 + mensagem = notificacaoGrupo.getNotificacao().getMensagem();
  190 +
  191 + }else{
  192 + Object[] values = (Object[]) search.get(0);
  193 + emailDestinatario = (String) values[0];
  194 + nomeDestinatario = (String) values[1];
  195 + mensagem = (String) values[2];
  196 + }
163 197  
164 198 if(HTMLMail.permiteEnvioEmail){
165   - this.notificacaoUsuarioService.sendNotificacaoEmailGrupo(notificacaoGrupo);
  199 + this.notificacaoUsuarioService.sendNotificacaoEmailGrupo(emailDestinatario, nomeDestinatario, mensagem);
166 200 }
167 201  
168 202 NotificacaoRessuprimentoJob.logger.info("Inclusão da Notificação para o grupo: " + configuracaoGrupo.getGrupo().getNome());
... ... @@ -174,12 +208,32 @@ public class NotificacaoRessuprimentoJob implements Job {
174 208  
175 209 for (final ConfiguracaoNotificacaoRessuprimentoUsuario configuracaoUsuario : listaUsuarios) {
176 210  
177   - final NotificacaoUsuario notificacaoUsuario = new NotificacaoUsuario(configuracao.getNotificacao(), configuracaoUsuario.getUsuario());
  211 + NotificacaoUsuario notificacaoUsuario = null;
178 212  
179   - this.notificacaoUsuarioService.save(notificacaoUsuario);
  213 + SearchParams params = new SearchParams();
  214 + params.setFilters(Arrays.asList(new Filter[]{new Filter("notificacao.id", ConstantsQuery.TYPE_NUMERIC, configuracao.getNotificacao().getId().toString(), ConstantsQuery.COMPARE_EQUALS)}));
  215 + params.setStart(0);
  216 + params.setLimit(Integer.MAX_VALUE);
  217 + params.setFields(Arrays.asList(new String[]{"usuario.email", "usuario.username", "notificacao.mensagem"}));
  218 + List<Object> search = this.notificacaoUsuarioService.search(new SearchSeven(params));
  219 +
  220 + if(UtilColecao.isVazio(search)){
  221 + notificacaoUsuario = new NotificacaoUsuario(configuracao.getNotificacao(), configuracaoUsuario.getUsuario());
  222 + this.notificacaoUsuarioService.save(notificacaoUsuario);
  223 +
  224 + emailDestinatario = notificacaoUsuario.getUsuario().getEmail();
  225 + nomeDestinatario = notificacaoUsuario.getUsuario().getUsername();
  226 + mensagem = notificacaoUsuario.getNotificacao().getMensagem();
  227 +
  228 + }else{
  229 + Object[] values = (Object[]) search.get(0);
  230 + emailDestinatario = (String) values[0];
  231 + nomeDestinatario = (String) values[1];
  232 + mensagem = (String) values[2];
  233 + }
180 234  
181 235 if(HTMLMail.permiteEnvioEmail){
182   - this.notificacaoUsuarioService.sendNotificacaoEmail(notificacaoUsuario);
  236 + this.notificacaoUsuarioService.sendNotificacaoEmailGrupo(emailDestinatario, nomeDestinatario, mensagem);
183 237 }
184 238  
185 239 NotificacaoRessuprimentoJob.logger.info("Inclusão da Notificação para o usuario:" + configuracaoUsuario.getUsuario().getUsername());
... ... @@ -197,13 +251,13 @@ public class NotificacaoRessuprimentoJob implements Job {
197 251 *
198 252 * @param context
199 253 * @param configuracao
200   - *
  254 + *
201 255 * @return {@link Boolean}
202 256 */
203 257 private Boolean validarQtdAtualMaterial(JobExecutionContext context, ConfiguracaoNotificacaoRessuprimento configuracao) {
204 258  
205 259 BigDecimal qtdMaterialEstoque = BigDecimal.ZERO;
206   -
  260 +
207 261 try {
208 262 urlScheme = (String) context.getScheduler().getContext().get("scheme");
209 263 urlHost = (String) context.getScheduler().getContext().get("host");
... ... @@ -212,7 +266,7 @@ public class NotificacaoRessuprimentoJob implements Job {
212 266 } catch (SchedulerException e) {
213 267 e.printStackTrace();
214 268 }
215   -
  269 +
216 270 return qtdMaterialEstoque.compareTo(BigDecimal.ZERO) > 0 && qtdMaterialEstoque.compareTo(configuracao.getLimiteEstoque()) <= 0;
217 271 }
218 272  
... ...
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;
20 20 import br.com.centralit.api.service.DominioService;
21 21 import br.com.centralit.api.service.EntradaAlmoxarifadoItemService;
22 22 import br.com.centralit.api.service.EstruturaOrganizacionalService;
  23 +import br.com.centralit.api.service.InternacionalizacaoService;
23 24 import br.com.centralit.api.service.MaterialConsumoService;
24 25 import br.com.centralit.api.service.MaterialEstoqueSaldoMedioService;
25 26 import br.com.centralit.api.service.MovimentoEstoqueService;
... ... @@ -106,15 +107,20 @@ public class BaixaAlmoxarifadoServiceImpl extends GenericServiceImpl&lt;BaixaAlmoxa
106 107 /** Atributo baixaAlmoxarifadoItemService. */
107 108 @Autowired
108 109 private BaixaAlmoxarifadoItemService baixaAlmoxarifadoItemService;
109   -
  110 +
110 111 @Autowired
111   - private EntradaAlmoxarifadoItemService entradaAlmoxarifadoItemService;
112   -
  112 + private EntradaAlmoxarifadoItemService entradaAlmoxarifadoItemService;
  113 +
113 114 @Autowired
114 115 private MaterialEstoqueSaldoMedioService materialEstoqueSaldoMedioService;
115 116  
116 117 @Autowired
117   - private ConfiguracaoParametroSistemaService configuracaoParametroSistemaService;
  118 + private ConfiguracaoParametroSistemaService configuracaoParametroSistemaService;
  119 +
  120 + @Autowired
  121 + private InternacionalizacaoService internacionalizacaoService;
  122 +
  123 + private Dominio idioma;
118 124  
119 125 @Autowired
120 126 public BaixaAlmoxarifadoServiceImpl( final BaixaAlmoxarifadoDao baixaAlmoxarifadoDao, @Qualifier("baixaAlmoxarifadoValidator") final Validator validator ) {
... ... @@ -132,12 +138,12 @@ public class BaixaAlmoxarifadoServiceImpl extends GenericServiceImpl&lt;BaixaAlmoxa
132 138 this.montarObjetoBaixa(entity);
133 139  
134 140 entity = super.save(entity);
135   -
  141 +
136 142 configurarNumeroBaixa(entity);
137   -
  143 +
138 144 salvaTotaisBaixaItem(entity);
139   -
140   - entity = super.save(entity);
  145 +
  146 + entity = super.save(entity);
141 147  
142 148 //Esse metodo gera os movimentos no estoque no contabil
143 149 this.movimentoEstoqueService.gerarMovimentoBaixa(entity);
... ... @@ -152,11 +158,9 @@ public class BaixaAlmoxarifadoServiceImpl extends GenericServiceImpl&lt;BaixaAlmoxa
152 158  
153 159 this.montarObjetoBaixa(entity);
154 160  
155   - entity = super.merge(entity);
156   -
157 161 salvaTotaisBaixaItem(entity);
158   -
159   - entity = super.merge(entity);
  162 +
  163 + entity = super.merge(entity);
160 164  
161 165 this.movimentoEstoqueService.atualizarMovimentoBaixa(entity);
162 166  
... ... @@ -257,11 +261,15 @@ public class BaixaAlmoxarifadoServiceImpl extends GenericServiceImpl&lt;BaixaAlmoxa
257 261 this.validarQtdItemAlmoxarifado(baixaItem);
258 262  
259 263 baixaItem.setBaixaAlmoxarifado(baixa);
260   -
  264 +
261 265 baixaItem.setMaterialConsumo(this.materialConsumoService.getReference(baixaItem.getMaterialConsumo().getId()));
262 266 }
263 267 }
264 268  
  269 + if(UtilObjeto.isReferencia(baixa.getId()) && baixa.getOrganizacao() == null){
  270 + baixa.setOrganizacao(this.find(baixa.getId()).getOrganizacao());
  271 + }
  272 +
265 273 }
266 274  
267 275 /**
... ... @@ -289,23 +297,23 @@ public class BaixaAlmoxarifadoServiceImpl extends GenericServiceImpl&lt;BaixaAlmoxa
289 297  
290 298 if (itemAtual.getQuantidade().add(baixaItem.getQtdEstoque()).compareTo(baixaItem.getQuantidade()) > 0) {
291 299  
292   - throw new BusinessException(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, CodigoErro.REGRA_NEGOCIO.getValue());
  300 + throw new BusinessException(this.internacionalizacaoService.getTranslate(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, this.getIdioma()), CodigoErro.REGRA_NEGOCIO.getValue());
293 301  
294 302 } else {
295 303 if (baixaItem.getQuantidade().compareTo(itemAtual.getQuantidade().add(baixaItem.getQtdEstoque())) > 0) {
296 304  
297   - throw new BusinessException(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, CodigoErro.REGRA_NEGOCIO.getValue());
  305 + throw new BusinessException(this.internacionalizacaoService.getTranslate(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, this.getIdioma()), CodigoErro.REGRA_NEGOCIO.getValue());
298 306 }
299 307 }
300 308 } else if (baixaItem.getQuantidade().compareTo(baixaItem.getQtdEstoque()) > 0 && baixaItem.getQuantidade().compareTo(itemAtual.getQuantidade().add(baixaItem.getQtdEstoque())) > 0) {
301 309  
302   - throw new BusinessException(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, CodigoErro.REGRA_NEGOCIO.getValue());
  310 + throw new BusinessException(this.internacionalizacaoService.getTranslate(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, this.getIdioma()), CodigoErro.REGRA_NEGOCIO.getValue());
303 311 }
304 312 } else {
305 313  
306 314 if (baixaItem.getQuantidade().compareTo(baixaItem.getQtdEstoque()) > 0) {
307 315  
308   - throw new BusinessException(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, CodigoErro.REGRA_NEGOCIO.getValue());
  316 + throw new BusinessException(this.internacionalizacaoService.getTranslate(BaixaAlmoxarifadoServiceImpl.VALIDACAO_QUANTIDADE_SUPERIOR_SALDO, this.getIdioma()), CodigoErro.REGRA_NEGOCIO.getValue());
309 317 }
310 318 }
311 319 }
... ... @@ -407,15 +415,15 @@ public class BaixaAlmoxarifadoServiceImpl extends GenericServiceImpl&lt;BaixaAlmoxa
407 415  
408 416 entity.setNumeroBaixa(codigo);
409 417 }
410   -
  418 +
411 419 private void salvaTotaisBaixaItem(BaixaAlmoxarifado baixa){
412 420 if (!UtilColecao.isVazio(baixa.getBaixaItens())) {
413 421  
414 422 // salva os totais na baixa conforme metodo de avalicao monetaria
415   - for (final BaixaAlmoxarifadoItem baixaItem : baixa.getBaixaItens()) {
416   -
  423 + for (final BaixaAlmoxarifadoItem baixaItem : baixa.getBaixaItens()) {
  424 +
417 425 String tipoAvaliacao = this.configuracaoParametroSistemaService.getParametro("TIPO_AVALIACAO_MONETARIA_ESTOQUE", baixa.getOrganizacao().getId()).getValor();
418   -
  426 +
419 427 if (tipoAvaliacao.equals(DominioAlmoxarifado.TIPO_AVALIACAO_MONETARIA_FIFO_NOME)){
420 428 BigDecimal valorMovimentoFIFO = this.entradaAlmoxarifadoItemService.realizaMovimentoSaida(baixaItem.getMaterialConsumo(), baixaItem.getQuantidade());
421 429 baixaItem.setTotal(valorMovimentoFIFO);
... ... @@ -424,7 +432,14 @@ public class BaixaAlmoxarifadoServiceImpl extends GenericServiceImpl&lt;BaixaAlmoxa
424 432 baixaItem.setTotal(valorMovimentoMediaMovel);
425 433 }
426 434 }
427   - }
  435 + }
  436 + }
  437 +
  438 + public Dominio getIdioma() {
  439 + if(!UtilObjeto.isReferencia(idioma)){
  440 + idioma = this.dominioService.findByChaveAndCodigo("tipoIdioma", Dominio.TIPO_IDIOMA_PT_BR_CODIGO);
  441 + }
  442 + return idioma;
428 443 }
429 444  
430 445 }
... ...