Commit 52dc0c10d4eb9e3df449a5210dc7e3f2c32c08ea
1 parent
4c092b18
Exists in
master
[Redmine #5011]Impedimento para atendimento simultâneos na mesma requisição
Showing
9 changed files
with
131 additions
and
29 deletions
Show diff stats
cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/RequisicaoConsumo.java
@@ -10,6 +10,7 @@ import javax.persistence.FetchType; | @@ -10,6 +10,7 @@ import javax.persistence.FetchType; | ||
10 | import javax.persistence.GeneratedValue; | 10 | import javax.persistence.GeneratedValue; |
11 | import javax.persistence.GenerationType; | 11 | import javax.persistence.GenerationType; |
12 | import javax.persistence.Id; | 12 | import javax.persistence.Id; |
13 | +import javax.persistence.JoinColumn; | ||
13 | import javax.persistence.ManyToOne; | 14 | import javax.persistence.ManyToOne; |
14 | import javax.persistence.OneToMany; | 15 | import javax.persistence.OneToMany; |
15 | import javax.persistence.Table; | 16 | import javax.persistence.Table; |
@@ -26,6 +27,7 @@ import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; | @@ -26,6 +27,7 @@ import br.com.centralit.framework.json.JsonCalendarSimpleDateDeserializer; | ||
26 | import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; | 27 | import br.com.centralit.framework.json.JsonCalendarSimpleDateSerializer; |
27 | import br.com.centralit.framework.json.Views; | 28 | import br.com.centralit.framework.json.Views; |
28 | import br.com.centralit.framework.model.Dominio; | 29 | import br.com.centralit.framework.model.Dominio; |
30 | +import br.com.centralit.framework.model.Usuario; | ||
29 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; | 31 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAuditOrganizacao; |
30 | 32 | ||
31 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | 33 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
@@ -68,8 +70,8 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; | @@ -68,8 +70,8 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; | ||
68 | @Audited | 70 | @Audited |
69 | @AuditTable(value = "alm_requisicaoconsumo_aud") | 71 | @AuditTable(value = "alm_requisicaoconsumo_aud") |
70 | @Entity | 72 | @Entity |
71 | -@Table(name="alm_requisicaoconsumo") | ||
72 | -@JsonIgnoreProperties({"$checked"}) | 73 | +@Table(name = "alm_requisicaoconsumo") |
74 | +@JsonIgnoreProperties({ "$checked" }) | ||
73 | public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | 75 | public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { |
74 | 76 | ||
75 | public static final Long TIPO_STATUS_REQUISICAO_NAO_CONCLUIDA_CODIGO = 1L; | 77 | public static final Long TIPO_STATUS_REQUISICAO_NAO_CONCLUIDA_CODIGO = 1L; |
@@ -88,17 +90,22 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | @@ -88,17 +90,22 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | ||
88 | /** Atributo id. */ | 90 | /** Atributo id. */ |
89 | @Id | 91 | @Id |
90 | @GeneratedValue(strategy = GenerationType.AUTO) | 92 | @GeneratedValue(strategy = GenerationType.AUTO) |
91 | - @JsonView({ Views.GenericView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class }) | 93 | + @JsonView({ Views.GenericView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, |
94 | + ViewsAlmoxarifado.DevolucaoEditView.class }) | ||
92 | private Long id; | 95 | private Long id; |
93 | 96 | ||
94 | /** Atributo almoxaifado. */ | 97 | /** Atributo almoxaifado. */ |
95 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 98 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
96 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 99 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
100 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | ||
101 | + ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, | ||
102 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
97 | private EstruturaOrganizacional almoxarifado; | 103 | private EstruturaOrganizacional almoxarifado; |
98 | 104 | ||
99 | /** Atributo centroCusto. */ | 105 | /** Atributo centroCusto. */ |
100 | @ManyToOne(fetch = FetchType.LAZY) | 106 | @ManyToOne(fetch = FetchType.LAZY) |
101 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 107 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class, |
108 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
102 | private CentroCusto centroCusto; | 109 | private CentroCusto centroCusto; |
103 | 110 | ||
104 | /** Atributo dataRequisicao. */ | 111 | /** Atributo dataRequisicao. */ |
@@ -106,28 +113,33 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | @@ -106,28 +113,33 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | ||
106 | @Temporal(TemporalType.TIMESTAMP) | 113 | @Temporal(TemporalType.TIMESTAMP) |
107 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) | 114 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) |
108 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) | 115 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) |
109 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
110 | - ViewsAlmoxarifado.DevolucaoListView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 116 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
117 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
118 | + ViewsAlmoxarifado.DevolucaoListView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
111 | private Calendar dataRequisicao; | 119 | private Calendar dataRequisicao; |
112 | 120 | ||
113 | @Column(name = "dataFinalizacaoAtendimento", nullable = true) | 121 | @Column(name = "dataFinalizacaoAtendimento", nullable = true) |
114 | @Temporal(TemporalType.TIMESTAMP) | 122 | @Temporal(TemporalType.TIMESTAMP) |
115 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) | 123 | @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) |
116 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) | 124 | @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) |
117 | - @JsonView({ ViewsAlmoxarifado.DevolucaoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | ||
118 | - Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 125 | + @JsonView({ ViewsAlmoxarifado.DevolucaoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, |
126 | + ViewsAlmoxarifado.DevolucaoListView.class, Views.MaterialConsultaInfo.class, | ||
127 | + ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
119 | private Calendar dataFinalizacaoAtendimento; | 128 | private Calendar dataFinalizacaoAtendimento; |
120 | 129 | ||
121 | /** Atributo materiais. */ | 130 | /** Atributo materiais. */ |
122 | @OneToMany(fetch = FetchType.LAZY, mappedBy = "requisicaoConsumo", cascade = CascadeType.ALL, orphanRemoval = true) | 131 | @OneToMany(fetch = FetchType.LAZY, mappedBy = "requisicaoConsumo", cascade = CascadeType.ALL, orphanRemoval = true) |
123 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
124 | - Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 132 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
133 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
134 | + Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
125 | private Collection<RequisicaoConsumoItem> requisicaoConsumoItens; | 135 | private Collection<RequisicaoConsumoItem> requisicaoConsumoItens; |
126 | 136 | ||
127 | /** Atributo numeroRequisicao. */ | 137 | /** Atributo numeroRequisicao. */ |
128 | @Column(length = 30) | 138 | @Column(length = 30) |
129 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
130 | - ViewsAlmoxarifado.DevolucaoListView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 139 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
140 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoEditView.class, | ||
141 | + ViewsAlmoxarifado.DevolucaoListView.class, Views.MaterialConsultaInfo.class, | ||
142 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
131 | private String numeroRequisicao; | 143 | private String numeroRequisicao; |
132 | 144 | ||
133 | /** Atributo observacoes. */ | 145 | /** Atributo observacoes. */ |
@@ -138,16 +150,27 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | @@ -138,16 +150,27 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | ||
138 | 150 | ||
139 | /** Atributo statusRequisicao. */ | 151 | /** Atributo statusRequisicao. */ |
140 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 152 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
141 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAdmMateriais.AtendimentoRequisicaoConsumoItemView.class, Views.MaterialConsultaInfo.class, | ||
142 | - ViewsAdmMateriais.RequisicaoConsumo.class }) | 153 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
154 | + ViewsAdmMateriais.AtendimentoRequisicaoConsumoItemView.class, Views.MaterialConsultaInfo.class, | ||
155 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
143 | private Dominio tipoStatusRequisicao; | 156 | private Dominio tipoStatusRequisicao; |
144 | 157 | ||
145 | /** Atributo unidadeRequisitante. */ | 158 | /** Atributo unidadeRequisitante. */ |
146 | @ManyToOne(fetch = FetchType.LAZY, optional = false) | 159 | @ManyToOne(fetch = FetchType.LAZY, optional = false) |
147 | - @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | ||
148 | - ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, ViewsAdmMateriais.RequisicaoConsumo.class }) | 160 | + @JsonView({ ViewsAdmMateriais.RequisicaoConsumoEditView.class, |
161 | + ViewsAlmoxarifado.RequisicaoConsumoAutoCompleteView.class, ViewsAlmoxarifado.DevolucaoListView.class, | ||
162 | + ViewsAlmoxarifado.DevolucaoEditView.class, Views.MaterialConsultaInfo.class, | ||
163 | + ViewsAdmMateriais.RequisicaoConsumo.class }) | ||
149 | private EstruturaOrganizacional unidadeRequisitante; | 164 | private EstruturaOrganizacional unidadeRequisitante; |
150 | 165 | ||
166 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | ||
167 | + private boolean emAtendimento; | ||
168 | + | ||
169 | + @ManyToOne(fetch = FetchType.LAZY) | ||
170 | + @JoinColumn(name = "atendente_id") | ||
171 | + @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class }) | ||
172 | + private Usuario atendente; | ||
173 | + | ||
151 | /** | 174 | /** |
152 | * Retorna o valor do atributo <code>id</code> | 175 | * Retorna o valor do atributo <code>id</code> |
153 | * | 176 | * |
@@ -351,4 +374,20 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | @@ -351,4 +374,20 @@ public class RequisicaoConsumo extends PersistentObjectAuditOrganizacao { | ||
351 | this.dataFinalizacaoAtendimento = dataFinalizacaoAtendimento; | 374 | this.dataFinalizacaoAtendimento = dataFinalizacaoAtendimento; |
352 | } | 375 | } |
353 | 376 | ||
377 | + public boolean isEmAtendimento() { | ||
378 | + return emAtendimento; | ||
379 | + } | ||
380 | + | ||
381 | + public void setEmAtendimento(boolean emAtendimento) { | ||
382 | + this.emAtendimento = emAtendimento; | ||
383 | + } | ||
384 | + | ||
385 | + public Usuario getAtendente() { | ||
386 | + return atendente; | ||
387 | + } | ||
388 | + | ||
389 | + public void setAtendente(Usuario atendente) { | ||
390 | + this.atendente = atendente; | ||
391 | + } | ||
392 | + | ||
354 | } | 393 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoService.java
@@ -129,4 +129,6 @@ public interface RequisicaoConsumoService extends GenericService<RequisicaoConsu | @@ -129,4 +129,6 @@ public interface RequisicaoConsumoService extends GenericService<RequisicaoConsu | ||
129 | 129 | ||
130 | List<RequisicaoConsumo> findRequisicoesParaAtendimento(AtendimentoVH atendimentoVH); | 130 | List<RequisicaoConsumo> findRequisicoesParaAtendimento(AtendimentoVH atendimentoVH); |
131 | 131 | ||
132 | + Boolean atualizarSituacaoAtendimento(Long idRequisicao, boolean situacaoAtendimento); | ||
133 | + | ||
132 | } | 134 | } |
cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoServiceImpl.java
@@ -522,7 +522,31 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | @@ -522,7 +522,31 @@ public class RequisicaoConsumoServiceImpl extends GenericServiceImpl<RequisicaoC | ||
522 | 522 | ||
523 | @Override | 523 | @Override |
524 | public List<RequisicaoConsumo> findRequisicoesParaAtendimento(AtendimentoVH atendimentoVH) { | 524 | public List<RequisicaoConsumo> findRequisicoesParaAtendimento(AtendimentoVH atendimentoVH) { |
525 | - return this.requisicaoConsumoDao.findRequisicoesParaAtendimento(atendimentoVH); | 525 | + List<RequisicaoConsumo> requisicoes = this.requisicaoConsumoDao.findRequisicoesParaAtendimento(atendimentoVH); |
526 | + this.atualizarStatusAtendimento(requisicoes); | ||
527 | + return requisicoes; | ||
528 | + } | ||
529 | + | ||
530 | + private void atualizarStatusAtendimento(List<RequisicaoConsumo> requisicoes) { | ||
531 | + Usuario usuarioLogado = (Usuario) usuarioService.find(( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId()); | ||
532 | + for (RequisicaoConsumo requisicaoConsumo : requisicoes) { | ||
533 | + requisicaoConsumo.setEmAtendimento(Boolean.TRUE); | ||
534 | + requisicaoConsumo.setAtendente(usuarioLogado); | ||
535 | + super.merge(requisicaoConsumo); | ||
536 | + flush(); | ||
537 | + } | ||
538 | + | ||
539 | + } | ||
540 | + | ||
541 | + @Override | ||
542 | + public Boolean atualizarSituacaoAtendimento(Long idRequisicao, boolean situacaoAtendimento) { | ||
543 | + RequisicaoConsumo requisicaoConsumo = this.find(idRequisicao); | ||
544 | + requisicaoConsumo.setEmAtendimento(situacaoAtendimento); | ||
545 | + if(!situacaoAtendimento){ | ||
546 | + requisicaoConsumo.setAtendente(null); | ||
547 | + } | ||
548 | + super.merge(requisicaoConsumo); | ||
549 | + return true; | ||
526 | } | 550 | } |
527 | 551 | ||
528 | } | 552 | } |
cit-almoxarifado-web/src/main/java/br/com/centralit/controller/RequisicaoConsumoController.java
@@ -239,4 +239,14 @@ public class RequisicaoConsumoController extends GenericController<RequisicaoCon | @@ -239,4 +239,14 @@ public class RequisicaoConsumoController extends GenericController<RequisicaoCon | ||
239 | return responseBody; | 239 | return responseBody; |
240 | } | 240 | } |
241 | 241 | ||
242 | + @RequestMapping(value = "/atualizarSituacaoAtendimento", method = RequestMethod.GET, produces = "application/json") | ||
243 | + @ResponseBody | ||
244 | + public ResponseBodyWrapper atualizarSituacaoAtendimento(@RequestParam(value = "idRequisicao") Long idRequisicao, @RequestParam(value = "situacaoAtendimento") boolean situacaoAtendimento) { | ||
245 | + | ||
246 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.requisicaoConsumoService.atualizarSituacaoAtendimento(idRequisicao, situacaoAtendimento), getEditView()); | ||
247 | + | ||
248 | + return responseBody; | ||
249 | + } | ||
250 | + | ||
251 | + | ||
242 | } | 252 | } |
cit-almoxarifado-web/src/main/java/br/com/centralit/listener/StartupListenerAlmoxarifado.java
@@ -329,6 +329,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | @@ -329,6 +329,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | ||
329 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.LIMPAR_BUSCA_AVANCADA", "Limpar busca avançada", dominio, modulo)); | 329 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.LIMPAR_BUSCA_AVANCADA", "Limpar busca avançada", dominio, modulo)); |
330 | 330 | ||
331 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_REQUISICAO", "Atendimento de requisição consumo", dominio, modulo)); | 331 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_REQUISICAO", "Atendimento de requisição consumo", dominio, modulo)); |
332 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.ATENDIMENTO_INICIADO", "Atendimento iniciado", dominio, modulo)); | ||
333 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.LABEL.INTERROMPER_ATENDIMENTO_INICIADO", "Interromper atendimento iniciado", dominio, modulo)); | ||
332 | } | 334 | } |
333 | 335 | ||
334 | private void gerarValidacao(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { | 336 | private void gerarValidacao(Dominio dominio, Modulo modulo, List<Internacionalizacao> internacionalizacaoList) { |
@@ -417,6 +419,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | @@ -417,6 +419,8 @@ public class StartupListenerAlmoxarifado extends UtilStartup implements Applicat | ||
417 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INFO_FILTRO_MATERIAL_REQUISICAO", "O atendimento será realizado para os materiais selecionados na busca avançada.", dominio, modulo)); | 419 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.INFO_FILTRO_MATERIAL_REQUISICAO", "O atendimento será realizado para os materiais selecionados na busca avançada.", dominio, modulo)); |
418 | 420 | ||
419 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REMOVER_REQUISICAO_ATENDIMENTO", "Remover requisição deste atendimento", dominio, modulo)); | 421 | internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REMOVER_REQUISICAO_ATENDIMENTO", "Remover requisição deste atendimento", dominio, modulo)); |
422 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.REQUISICAO_EM_ATENDIMENTO", "está em atendimento pelo atendente ", dominio, modulo)); | ||
423 | + internacionalizacaoList.add(new Internacionalizacao("ALMOXARIFADO.MSG.DESMARQUE_REQUISICAO_EM_ATENDIMENTO", "Desmarque esta requisição de consumo para prosseguir o atendimento.", dominio, modulo)); | ||
420 | 424 | ||
421 | } | 425 | } |
422 | } | 426 | } |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js
@@ -90,14 +90,16 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | @@ -90,14 +90,16 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', | ||
90 | $scope.$openModalConfirm({ | 90 | $scope.$openModalConfirm({ |
91 | message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'), | 91 | message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'), |
92 | callback: function(){ | 92 | callback: function(){ |
93 | - $scope.atendimentos.splice(index, 1); | 93 | + var requisicaoRemover = $scope.atendimentos[index]; |
94 | + RequisicaoConsumoRepository.atualizarSituacaoAtendimento(requisicaoRemover.requisicaoConsumo.id, false).then(function(result) { | ||
95 | + $scope.atendimentos.splice(index, 1); | ||
96 | + $scope.$modalConfirmInstance.dismiss('cancel'); | ||
97 | + if($scope.atendimentos.length == 0){ | ||
98 | + $scope.$showPageSearchWorkspace($scope.workspace); | ||
99 | + $scope.atualizaPaginaPesquisa(); | ||
100 | + } | ||
101 | + }); | ||
94 | 102 | ||
95 | - $scope.$modalConfirmInstance.dismiss('cancel'); | ||
96 | - | ||
97 | - if($scope.atendimentos.length == 0){ | ||
98 | - $scope.$showPageSearchWorkspace($scope.workspace); | ||
99 | - $scope.atualizaPaginaPesquisa(); | ||
100 | - } | ||
101 | } | 103 | } |
102 | }); | 104 | }); |
103 | }; | 105 | }; |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js
@@ -6,6 +6,7 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | @@ -6,6 +6,7 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | ||
6 | function AtendimentoRequisicaoConsumoListController($scope, AtendimentoRequisicaoConsumoRepository, $translate, | 6 | function AtendimentoRequisicaoConsumoListController($scope, AtendimentoRequisicaoConsumoRepository, $translate, |
7 | $timeout, DominioRepository, RequisicaoConsumoRepository, EstruturaOrganizacionalAlmoxarifadoRepository, MaterialConsumoRepository, $filter) { | 7 | $timeout, DominioRepository, RequisicaoConsumoRepository, EstruturaOrganizacionalAlmoxarifadoRepository, MaterialConsumoRepository, $filter) { |
8 | $scope.$showAdvancedFilters = false; | 8 | $scope.$showAdvancedFilters = false; |
9 | + $scope.permiteInterromperAtendimento = false; | ||
9 | $scope.listaSelecionados = []; | 10 | $scope.listaSelecionados = []; |
10 | $scope.resetForm = function() { | 11 | $scope.resetForm = function() { |
11 | angular.element("#editAtendimentoRequisicaoConsumo").scope().resetForm(); | 12 | angular.element("#editAtendimentoRequisicaoConsumo").scope().resetForm(); |
@@ -22,19 +23,22 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | @@ -22,19 +23,22 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | ||
22 | {title : $translate.instant('ALMOXARIFADO.LABEL.STATUS_REQUISICAO'), value : 'tipoStatusRequisicao.descricao' } , | 23 | {title : $translate.instant('ALMOXARIFADO.LABEL.STATUS_REQUISICAO'), value : 'tipoStatusRequisicao.descricao' } , |
23 | {title : $translate.instant('ALMOXARIFADO.LABEL.DATA_REQUISICAO'), value : 'dataRequisicao' , filter : 'dateBR', tamanho : 28} , | 24 | {title : $translate.instant('ALMOXARIFADO.LABEL.DATA_REQUISICAO'), value : 'dataRequisicao' , filter : 'dateBR', tamanho : 28} , |
24 | {title : $translate.instant('ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE'), value : 'unidadeRequisitante.nome' } , | 25 | {title : $translate.instant('ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE'), value : 'unidadeRequisitante.nome' } , |
25 | - {title : $translate.instant('ALMOXARIFADO.LABEL.ALMOXARIFADO'), value : 'almoxarifado.nome' } ]; | 26 | + {title : $translate.instant('ALMOXARIFADO.LABEL.ALMOXARIFADO'), value : 'almoxarifado.nome' }, |
27 | + {title : $translate.instant('ALMOXARIFADO.LABEL.ATENDIMENTO_INICIADO'), value : 'emAtendimento'}]; | ||
26 | // DIFINE FILTROS DE PESQUISA E CAMPOS QUE DEVEM SER APRESENTADOS NA LISTAGEM | 28 | // DIFINE FILTROS DE PESQUISA E CAMPOS QUE DEVEM SER APRESENTADOS NA LISTAGEM |
27 | $scope.filterCriteria = { | 29 | $scope.filterCriteria = { |
28 | start : 1, | 30 | start : 1, |
29 | dir : 'asc', | 31 | dir : 'asc', |
30 | sort : 'desc:numeroRequisicao;tipoStatusRequisicao.codigo', | 32 | sort : 'desc:numeroRequisicao;tipoStatusRequisicao.codigo', |
31 | limit : 10, | 33 | limit : 10, |
32 | - fields: ['id', 'numeroRequisicao', 'tipoStatusRequisicao.descricao', 'dataRequisicao', 'unidadeRequisitante.nome', 'almoxarifado.nome', 'tipoStatusRequisicao.codigo'], | 34 | + fields: ['id', 'numeroRequisicao', 'tipoStatusRequisicao.descricao', 'dataRequisicao', 'unidadeRequisitante.nome', 'almoxarifado.nome', 'tipoStatusRequisicao.codigo', |
35 | + 'emAtendimento', 'atendente.id', 'atendente.username'], | ||
33 | filters : [ {type : 'numeric-range', field : 'numeroRequisicao' } , | 36 | filters : [ {type : 'numeric-range', field : 'numeroRequisicao' } , |
34 | {type : 'dominio', field : 'tipoStatusRequisicao.descricao', listaDominio : []} , | 37 | {type : 'dominio', field : 'tipoStatusRequisicao.descricao', listaDominio : []} , |
35 | {type : 'date-range', field : 'dataRequisicao' } , | 38 | {type : 'date-range', field : 'dataRequisicao' } , |
36 | {type : 'string', field : 'unidadeRequisitante.nome' } , | 39 | {type : 'string', field : 'unidadeRequisitante.nome' } , |
37 | - {type : 'string', field : 'almoxarifado.nome' } ] | 40 | + {type : 'string', field : 'almoxarifado.nome' }, |
41 | + {type : 'boolean', field : 'emAtendimento' }] | ||
38 | }; | 42 | }; |
39 | 43 | ||
40 | $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}); |
@@ -108,6 +112,13 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | @@ -108,6 +112,13 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | ||
108 | permiteAtender = false; | 112 | permiteAtender = false; |
109 | $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.NAO_PERMITIDO_ATENDER_REQUISICAO_FINALIZADA')); | 113 | $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.MSG.NAO_PERMITIDO_ATENDER_REQUISICAO_FINALIZADA')); |
110 | } | 114 | } |
115 | + if(requisicaoSelecionado.emAtendimento && requisicaoSelecionado['atendente.id'] != $scope.usuarioLogado.id){ | ||
116 | + permiteAtender = false; | ||
117 | + $scope.showAlert('warning', $translate.instant('ALMOXARIFADO.LABEL.REQUISICAO_CONSUMO') + ' ' + requisicaoSelecionado.numeroRequisicao | ||
118 | + + ' ' + $translate.instant('ALMOXARIFADO.MSG.REQUISICAO_EM_ATENDIMENTO') + ' ' + requisicaoSelecionado['atendente.username'] | ||
119 | + + ' ' + $translate.instant('ALMOXARIFADO.MSG.DESMARQUE_REQUISICAO_EM_ATENDIMENTO')); | ||
120 | + return; | ||
121 | + } | ||
111 | }); | 122 | }); |
112 | 123 | ||
113 | if(permiteAtender){ | 124 | if(permiteAtender){ |
@@ -323,4 +334,5 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | @@ -323,4 +334,5 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten | ||
323 | 334 | ||
324 | }; | 335 | }; |
325 | 336 | ||
337 | + | ||
326 | }]); | 338 | }]); |
327 | \ No newline at end of file | 339 | \ No newline at end of file |
cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/RequisicaoConsumoRepository.js
@@ -26,6 +26,10 @@ citApp.factory('RequisicaoConsumoRepository', ['RestangularAlmoxarifado', 'Abstr | @@ -26,6 +26,10 @@ citApp.factory('RequisicaoConsumoRepository', ['RestangularAlmoxarifado', 'Abstr | ||
26 | this.filtrarRequisicoesAtendimento = function(atendimentoVH) { | 26 | this.filtrarRequisicoesAtendimento = function(atendimentoVH) { |
27 | return this.restangular.all(this.route+ "/filtrarRequisicoesAtendimento").post(atendimentoVH); | 27 | return this.restangular.all(this.route+ "/filtrarRequisicoesAtendimento").post(atendimentoVH); |
28 | }; | 28 | }; |
29 | + | ||
30 | + this.atualizarSituacaoAtendimento = function(idRequisicao, situacaoAtendimento){ | ||
31 | + return this.restangular.one(this.route + "/atualizarSituacaoAtendimento").get({'idRequisicao': idRequisicao, 'situacaoAtendimento': situacaoAtendimento}).then(); | ||
32 | + }; | ||
29 | } | 33 | } |
30 | 34 | ||
31 | AbstractRepository.extend(RequisicaoConsumoRepository); | 35 | AbstractRepository.extend(RequisicaoConsumoRepository); |
cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html
@@ -23,6 +23,11 @@ | @@ -23,6 +23,11 @@ | ||
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()"> | ||
27 | + <i class="fa fa-times-circle-o orange"></i> | ||
28 | + <translate>ALMOXARIFADO.LABEL.INTERROMPER_ATENDIMENTO_INICIADO</translate> | ||
29 | + </button> | ||
30 | + | ||
26 | <span class="divider-vertical"></span> | 31 | <span class="divider-vertical"></span> |
27 | 32 | ||
28 | <filtros ng-filter="filterCriteria" ng-workspace="workspace"></filtros> | 33 | <filtros ng-filter="filterCriteria" ng-workspace="workspace"></filtros> |
@@ -58,7 +63,7 @@ | @@ -58,7 +63,7 @@ | ||
58 | 63 | ||
59 | <list-view ng-lista="atendimentoRequisicaoConsumoList" ng-repository="RequisicaoConsumoRepository" ng-use-custom-remove="false" | 64 | <list-view ng-lista="atendimentoRequisicaoConsumoList" ng-repository="RequisicaoConsumoRepository" ng-use-custom-remove="false" |
60 | ng-headers="headers" ng-filter-criteria="filterCriteria" ng-item-selecionado="atendimentoRequisicaoConsumoChecked" | 65 | ng-headers="headers" ng-filter-criteria="filterCriteria" ng-item-selecionado="atendimentoRequisicaoConsumoChecked" |
61 | - ng-lista-itens-selecionados="listaSelecionados" ng-check-on="true" | 66 | + ng-lista-itens-selecionados="listaSelecionados" ng-check-on="true" ng-exibir-boolean-sim-nao="true" |
62 | set-total-pages="setTotalPages" set-total-itens="setTotalItens" | 67 | set-total-pages="setTotalPages" set-total-itens="setTotalItens" |
63 | use-custom-filter-temp="filtrarCustomizado" ng-custom-filter="filtrarRequisicoes()"></list-view> | 68 | use-custom-filter-temp="filtrarCustomizado" ng-custom-filter="filtrarRequisicoes()"></list-view> |
64 | 69 |