Commit 05ebd335278ec7f22836feb552777f28ebde18bb

Authored by Ronan Tavares Camargo
2 parents 19bdd101 65144306
Exists in master

Merge branch 'tarefa-3822' of http://ferramentasgo.centralit.com.br:8080/scm/git…

…/cit-grp-almoxarifado into tarefa-3822
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItemEndereco.java
@@ -11,12 +11,17 @@ import javax.persistence.JoinColumn; @@ -11,12 +11,17 @@ import javax.persistence.JoinColumn;
11 import javax.persistence.ManyToOne; 11 import javax.persistence.ManyToOne;
12 import javax.persistence.Table; 12 import javax.persistence.Table;
13 13
  14 +import org.hibernate.envers.AuditTable;
  15 +import org.hibernate.envers.Audited;
  16 +
14 import br.com.centralit.api.framework.json.ViewsAlmoxarifado; 17 import br.com.centralit.api.framework.json.ViewsAlmoxarifado;
15 import br.com.centralit.framework.json.Views; 18 import br.com.centralit.framework.json.Views;
16 import br.com.centralit.framework.model.arquitetura.PersistentObject; 19 import br.com.centralit.framework.model.arquitetura.PersistentObject;
17 20
18 import com.fasterxml.jackson.annotation.JsonView; 21 import com.fasterxml.jackson.annotation.JsonView;
19 22
  23 +@Audited
  24 +@AuditTable(value = "alm_rc_at_item_end_aud")
20 @Entity 25 @Entity
21 @Table(name = "alm_rc_at_item_endereco") 26 @Table(name = "alm_rc_at_item_endereco")
22 public class AtendimentoRequisicaoConsumoItemEndereco extends PersistentObject { 27 public class AtendimentoRequisicaoConsumoItemEndereco extends PersistentObject {
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoService.java
@@ -131,4 +131,6 @@ public interface RequisicaoConsumoService extends GenericService<RequisicaoConsu @@ -131,4 +131,6 @@ public interface RequisicaoConsumoService extends GenericService<RequisicaoConsu
131 131
132 Boolean atualizarSituacaoAtendimento(Long idRequisicao, boolean situacaoAtendimento); 132 Boolean atualizarSituacaoAtendimento(Long idRequisicao, boolean situacaoAtendimento);
133 133
  134 + Boolean atualizarSituacaoAtendimentoRequisicoes(RequisicaoVH requisicaoVH);
  135 +
134 } 136 }
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java
@@ -165,6 +165,8 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< @@ -165,6 +165,8 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl<
165 super.save(atendimento); 165 super.save(atendimento);
166 166
167 this.movimentoEstoqueService.gerarMovimentoAtendimento(atendimento); 167 this.movimentoEstoqueService.gerarMovimentoAtendimento(atendimento);
  168 +
  169 + this.requisicaoConsumoService.atualizarSituacaoAtendimento(atendimento.getRequisicaoConsumo().getId(), false);
168 170
169 } 171 }
170 172
@@ -253,6 +255,8 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< @@ -253,6 +255,8 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl<
253 this.contaContabilMovimentoService.removerMovimentosAtendimento(atendimentoItem.getId()); 255 this.contaContabilMovimentoService.removerMovimentosAtendimento(atendimentoItem.getId());
254 } 256 }
255 this.movimentoEstoqueService.gerarMovimentoAtendimento(atendimentoRequisicaoConsumo); 257 this.movimentoEstoqueService.gerarMovimentoAtendimento(atendimentoRequisicaoConsumo);
  258 +
  259 + this.requisicaoConsumoService.atualizarSituacaoAtendimento(atendimento.getRequisicaoConsumo().getId(), false);
256 } 260 }
257 261
258 } 262 }
@@ -418,6 +422,8 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< @@ -418,6 +422,8 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl<
418 422
419 //Remove movimentos estoque 423 //Remove movimentos estoque
420 this.movimentoEstoqueService.removerMovimentosAtendimento(entity); 424 this.movimentoEstoqueService.removerMovimentosAtendimento(entity);
  425 +
  426 + this.requisicaoConsumoService.atualizarSituacaoAtendimento(entity.getRequisicaoConsumo().getId(), false);
421 427
422 return super.remove(entity); 428 return super.remove(entity);
423 } 429 }
@@ -519,10 +525,12 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< @@ -519,10 +525,12 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl<
519 arrayLong[i] = Long.parseLong(array[i]); 525 arrayLong[i] = Long.parseLong(array[i]);
520 } 526 }
521 } 527 }
522 - for (Long idRequisicao : arrayLong) {  
523 - List<AtendimentoRequisicaoConsumo> listaAtendimentoPorRequisicaoConsumo = this.listaAtendimentoPorRequisicaoConsumo(idRequisicao, idOrganizacao);  
524 - for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) {  
525 - this.remove(atendimentoRequisicaoConsumo); 528 + if(arrayLong != null){
  529 + for (Long idRequisicao : arrayLong) {
  530 + List<AtendimentoRequisicaoConsumo> listaAtendimentoPorRequisicaoConsumo = this.listaAtendimentoPorRequisicaoConsumo(idRequisicao, idOrganizacao);
  531 + for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) {
  532 + this.remove(atendimentoRequisicaoConsumo);
  533 + }
526 } 534 }
527 } 535 }
528 return true; 536 return true;
@@ -535,6 +543,7 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl&lt; @@ -535,6 +543,7 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl&lt;
535 for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) { 543 for (AtendimentoRequisicaoConsumo atendimentoRequisicaoConsumo : listaAtendimentoPorRequisicaoConsumo) {
536 atendimentoRequisicaoConsumo.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_FINALIZADA)); 544 atendimentoRequisicaoConsumo.getRequisicaoConsumo().setTipoStatusRequisicao(this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_FINALIZADA));
537 super.merge(atendimentoRequisicaoConsumo); 545 super.merge(atendimentoRequisicaoConsumo);
  546 + this.requisicaoConsumoService.atualizarSituacaoAtendimento(atendimentoRequisicaoConsumo.getRequisicaoConsumo().getId(), false);
538 } 547 }
539 } 548 }
540 return true; 549 return true;
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/ConfiguracaoNotificacaoRessuprimentoServiceImpl.java
@@ -321,13 +321,17 @@ public class ConfiguracaoNotificacaoRessuprimentoServiceImpl extends GenericServ @@ -321,13 +321,17 @@ public class ConfiguracaoNotificacaoRessuprimentoServiceImpl extends GenericServ
321 Date previousExecution = cron.getTimeAfter(date); 321 Date previousExecution = cron.getTimeAfter(date);
322 long timeMili = previousExecution.getTime() - date.getTime(); 322 long timeMili = previousExecution.getTime() - date.getTime();
323 if(timeMili <= 0 || timeMili > (horasDia * minutoHora * segundoMinuto * milisegundos)){ 323 if(timeMili <= 0 || timeMili > (horasDia * minutoHora * segundoMinuto * milisegundos)){
324 - timeMili = 4 * minutoHora * segundoMinuto * milisegundos; 324 + timeMili = getMilisegundosCron(minutoHora, segundoMinuto, milisegundos);
325 } 325 }
326 entity.setMilissegundoCron(timeMili + (5 * 1000)); 326 entity.setMilissegundoCron(timeMili + (5 * 1000));
327 } catch (ParseException e) { 327 } catch (ParseException e) {
328 - entity.setMilissegundoCron(4l * minutoHora * segundoMinuto * milisegundos); 328 + entity.setMilissegundoCron(getMilisegundosCron(minutoHora, segundoMinuto, milisegundos));
329 } 329 }
330 } 330 }
  331 +
  332 + private long getMilisegundosCron(int minutoHora, int segundoMinuto, int milisegundos){
  333 + return new Long((4 * minutoHora * segundoMinuto * milisegundos));
  334 + }
331 335
332 /** 336 /**
333 * <p> 337 * <p>
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MaterialLocalEstoqueServiceImpl.java
@@ -68,7 +68,7 @@ public class MaterialLocalEstoqueServiceImpl extends GenericServiceImpl&lt;Material @@ -68,7 +68,7 @@ public class MaterialLocalEstoqueServiceImpl extends GenericServiceImpl&lt;Material
68 }else{ 68 }else{
69 if(entity.getLocalPrincipal()){ 69 if(entity.getLocalPrincipal()){
70 for (MaterialLocalEstoque materialLocalEstoque : locaisParMaterial) { 70 for (MaterialLocalEstoque materialLocalEstoque : locaisParMaterial) {
71 - if(materialLocalEstoque.getId() != entity.getId()){ 71 + if(materialLocalEstoque.getId().doubleValue() != entity.getId().doubleValue()){
72 materialLocalEstoque.setLocalPrincipal(Boolean.FALSE); 72 materialLocalEstoque.setLocalPrincipal(Boolean.FALSE);
73 this.merge(materialLocalEstoque); 73 this.merge(materialLocalEstoque);
74 } 74 }
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoServiceImpl.java
@@ -549,4 +549,12 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl&lt;RequisicaoC @@ -549,4 +549,12 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl&lt;RequisicaoC
549 return true; 549 return true;
550 } 550 }
551 551
  552 + @Override
  553 + public Boolean atualizarSituacaoAtendimentoRequisicoes(RequisicaoVH requisicaoVH) {
  554 + for (Long idRequisicao : requisicaoVH.getIdsRequisicoes()) {
  555 + this.atualizarSituacaoAtendimento(idRequisicao, requisicaoVH.getStatusAtendimentoRequsicao());
  556 + }
  557 + return true;
  558 + }
  559 +
552 } 560 }
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/RequisicaoConsumoController.java
@@ -248,5 +248,11 @@ public class RequisicaoConsumoController extends GenericController&lt;RequisicaoCon @@ -248,5 +248,11 @@ public class RequisicaoConsumoController extends GenericController&lt;RequisicaoCon
248 return responseBody; 248 return responseBody;
249 } 249 }
250 250
251 - 251 + @RequestMapping(value = "/atualizarSituacaoAtendimentoRequisicoes", method = RequestMethod.POST, produces = "application/json")
  252 + @ResponseBody
  253 + public Boolean atualizarSituacaoAtendimentoRequisicoes(@RequestBody RequisicaoVH requisicaoVH) {
  254 +
  255 + return this.requisicaoConsumoService.atualizarSituacaoAtendimentoRequisicoes(requisicaoVH);
  256 +
  257 + }
252 } 258 }
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
@@ -426,6 +426,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat @@ -426,6 +426,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat
426 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REQUISICAO_EM_ATENDIMENTO", "está em atendimento pelo atendente ", dominio, modulo)); 426 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REQUISICAO_EM_ATENDIMENTO", "está em atendimento pelo atendente ", dominio, modulo));
427 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.DESMARQUE_REQUISICAO_EM_ATENDIMENTO", "Desmarque esta requisição de consumo para prosseguir o atendimento.", dominio, modulo)); 427 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.DESMARQUE_REQUISICAO_EM_ATENDIMENTO", "Desmarque esta requisição de consumo para prosseguir o atendimento.", dominio, modulo));
428 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ATENDER_MAIS_DE_UM_ENDERECO", "Atender utilizando mais de um endereco", dominio, modulo)); 428 internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.ATENDER_MAIS_DE_UM_ENDERECO", "Atender utilizando mais de um endereco", dominio, modulo));
  429 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_NAO_INICIADO", "Somente é permitido realizar essa ação para requisições que foram iniciadas o atendimento por você. Desmarque as requisições que não foram iniciadas o atendimento para prosseguir.", dominio, modulo));
  430 + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_INICIADO_OUTRO_ATENDENTE", "Somente é permitido realizar essa ação para requisições que foram iniciadas o atendimento por você. Desmarque as requisições que foram iniciadas por outros atendentes para prosseguir.", dominio, modulo));
429 431
430 } 432 }
431 } 433 }
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js
@@ -58,7 +58,13 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;, @@ -58,7 +58,13 @@ citApp.controller( &#39;AtendimentoRequisicaoConsumoController&#39;,
58 58
59 // Atualiza pagina de pesquisa 59 // Atualiza pagina de pesquisa
60 $scope.atualizaPaginaPesquisa = function () { 60 $scope.atualizaPaginaPesquisa = function () {
  61 +
  62 + var requisicaoVH = { idsRequisicoes : $scope.idsRequisicoesSelecionados, statusAtendimentoRequsicao : false};
  63 +
  64 + RequisicaoConsumoRepository.atualizarSituacaoAtendimentoRequisicoes(requisicaoVH).then(function(result) {
61 angular.element('#searchAtendimentoRequisicaoConsumo').scope().fetchResult(); 65 angular.element('#searchAtendimentoRequisicaoConsumo').scope().fetchResult();
  66 + });
  67 +
62 }; 68 };
63 69
64 $scope.removerAtendimentoRequisicao = function(){ 70 $scope.removerAtendimentoRequisicao = function(){
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js
@@ -43,6 +43,7 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten @@ -43,6 +43,7 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
43 43
44 $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'DEVOLVIDA', comparison: 'ne', notFilter : true}); 44 $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'DEVOLVIDA', comparison: 'ne', notFilter : true});
45 $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'NAO_CONCLUIDA', comparison: 'ne', notFilter : true}); 45 $scope.filterCriteria.filters.push({type: 'string', field: 'tipoStatusRequisicao.nome', value: 'NAO_CONCLUIDA', comparison: 'ne', notFilter : true});
  46 +
46 }; 47 };
47 48
48 $scope.recarregar(); 49 $scope.recarregar();
@@ -334,5 +335,43 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten @@ -334,5 +335,43 @@ citApp.controller(&#39;AtendimentoRequisicaoConsumoListController&#39;, [&#39;$scope&#39;, &#39;Aten
334 335
335 }; 336 };
336 337
  338 + $scope.interromperAtendimentoIniciado = function(){
  339 +
  340 + if($scope.listaSelecionados && $scope.listaSelecionados.length == 0) {
  341 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM'));
  342 + return;
  343 + }
  344 +
  345 + var permiteInterromperAtendimentoIniciado = true;
  346 + angular.forEach($scope.listaSelecionados, function (requisicaoSelecionado) {
  347 + if(!requisicaoSelecionado.emAtendimento){
  348 + permiteInterromperAtendimentoIniciado = false;
  349 + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_NAO_INICIADO'));
  350 + }
  351 + if(requisicaoSelecionado.emAtendimento && requisicaoSelecionado['atendente.id'] != $scope.usuarioLogado.id){
  352 + permiteInterromperAtendimentoIniciado = false;
  353 + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.INTERROMPER_ATENDIMENTO_INICIADO_OUTRO_ATENDENTE'));
  354 + return;
  355 + }
  356 + });
  357 +
  358 + $scope.setLoading(true);
  359 + if(permiteInterromperAtendimentoIniciado){
  360 +
  361 + var idsRequisicoesSelecionados = [];
  362 + $scope.listaSelecionados.forEach(function(requisicao){
  363 + idsRequisicoesSelecionados.push(requisicao.id);
  364 + });
  365 +
  366 + var requisicaoVH = { idsRequisicoes : idsRequisicoesSelecionados, statusAtendimentoRequsicao : false};
  367 +
  368 + RequisicaoConsumoRepository.atualizarSituacaoAtendimentoRequisicoes(requisicaoVH).then(function(result) {
  369 + $scope.setLoading(false);
  370 + $scope.recarregar();
  371 + angular.element("#searchAtendimentoRequisicaoConsumo").scope().fetchResult();
  372 + });
  373 + }
  374 + };
  375 +
337 376
338 }]); 377 }]);
339 \ No newline at end of file 378 \ No newline at end of file
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/RequisicaoConsumoRepository.js
@@ -30,6 +30,10 @@ citApp.factory(&#39;RequisicaoConsumoRepository&#39;, [&#39;RestangularAlmoxarifado&#39;, &#39;Abstr @@ -30,6 +30,10 @@ citApp.factory(&#39;RequisicaoConsumoRepository&#39;, [&#39;RestangularAlmoxarifado&#39;, &#39;Abstr
30 this.atualizarSituacaoAtendimento = function(idRequisicao, situacaoAtendimento){ 30 this.atualizarSituacaoAtendimento = function(idRequisicao, situacaoAtendimento){
31 return this.restangular.one(this.route + "/atualizarSituacaoAtendimento").get({'idRequisicao': idRequisicao, 'situacaoAtendimento': situacaoAtendimento}).then(); 31 return this.restangular.one(this.route + "/atualizarSituacaoAtendimento").get({'idRequisicao': idRequisicao, 'situacaoAtendimento': situacaoAtendimento}).then();
32 }; 32 };
  33 +
  34 + this.atualizarSituacaoAtendimentoRequisicoes = function(requisicaoVH) {
  35 + return restangularAlmoxarifado.all(this.route + "/atualizarSituacaoAtendimentoRequisicoes").post(requisicaoVH).then();
  36 + };
33 } 37 }
34 38
35 AbstractRepository.extend(RequisicaoConsumoRepository); 39 AbstractRepository.extend(RequisicaoConsumoRepository);
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 <translate>LABEL.VISUALIZAR</translate> 23 <translate>LABEL.VISUALIZAR</translate>
24 </button> 24 </button>
25 25
26 - <button ng-show="permiteInterromperAtendimento" class="btn btn-clear" ng-click="interromperAtendimentoIniciado()"> 26 + <button class="btn btn-clear" ng-click="interromperAtendimentoIniciado()">
27 <i class="fa fa-times-circle-o orange"></i> 27 <i class="fa fa-times-circle-o orange"></i>
28 <translate>ALMOXARIFADO.LABEL.INTERROMPER_ATENDIMENTO_INICIADO</translate> 28 <translate>ALMOXARIFADO.LABEL.INTERROMPER_ATENDIMENTO_INICIADO</translate>
29 </button> 29 </button>