Commit 5a58e3dc1bf2f79e345dffe34d251bd0d3550722

Authored by ROGERIO CASSIMIRO DE SOUZA
1 parent f55c1435
Exists in master

redmine #4463 subtabela listagem processos

cit-ecm-api/src/main/java/br/com/centralit/api/dao/UnidadeProcessoDao.java
@@ -8,6 +8,7 @@ import com.googlecode.genericdao.search.SearchResult; @@ -8,6 +8,7 @@ import com.googlecode.genericdao.search.SearchResult;
8 import br.com.centralit.api.model.Processo; 8 import br.com.centralit.api.model.Processo;
9 import br.com.centralit.api.model.UnidadeProcesso; 9 import br.com.centralit.api.model.UnidadeProcesso;
10 import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; 10 import br.com.centralit.framework.dao.arquitetura.CitGenericDAO;
  11 +import br.com.centralit.framework.model.Usuario;
11 12
12 /** 13 /**
13 * <p> 14 * <p>
@@ -122,8 +123,10 @@ public interface UnidadeProcessoDao extends CitGenericDAO { @@ -122,8 +123,10 @@ public interface UnidadeProcessoDao extends CitGenericDAO {
122 * Método responsável por listar processos através da unidade do usuário 123 * Método responsável por listar processos através da unidade do usuário
123 * @author rogerio.cassimiro 124 * @author rogerio.cassimiro
124 * @param search 125 * @param search
  126 + * @param usuario
  127 + * @param idStatus
125 * @return <RT> SearchResult<RT> 128 * @return <RT> SearchResult<RT>
126 */ 129 */
127 - <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search); 130 + <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search, Usuario usuario, Long idStatus);
128 131
129 } 132 }
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/UnidadeProcessoDaoHibernate.java
@@ -2,21 +2,24 @@ package br.com.centralit.api.dao.impl; @@ -2,21 +2,24 @@ package br.com.centralit.api.dao.impl;
2 2
3 import java.util.Collection; 3 import java.util.Collection;
4 4
5 -import org.springframework.security.core.context.SecurityContextHolder; 5 +import org.hibernate.Criteria;
  6 +import org.hibernate.criterion.Projections;
  7 +import org.hibernate.criterion.Restrictions;
6 import org.springframework.stereotype.Repository; 8 import org.springframework.stereotype.Repository;
7 9
8 -import com.googlecode.genericdao.search.Filter;  
9 -import com.googlecode.genericdao.search.ISearch;  
10 -import com.googlecode.genericdao.search.SearchResult;  
11 -  
12 import br.com.centralit.api.dao.UnidadeProcessoDao; 10 import br.com.centralit.api.dao.UnidadeProcessoDao;
13 import br.com.centralit.api.model.Processo; 11 import br.com.centralit.api.model.Processo;
  12 +import br.com.centralit.api.model.SigiloPrivilegio;
14 import br.com.centralit.api.model.UnidadeProcesso; 13 import br.com.centralit.api.model.UnidadeProcesso;
15 import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; 14 import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl;
16 import br.com.centralit.framework.dao.arquitetura.SearchSeven; 15 import br.com.centralit.framework.dao.arquitetura.SearchSeven;
17 import br.com.centralit.framework.model.Usuario; 16 import br.com.centralit.framework.model.Usuario;
18 import br.com.centralit.framework.util.UtilColecao; 17 import br.com.centralit.framework.util.UtilColecao;
19 18
  19 +import com.googlecode.genericdao.search.Filter;
  20 +import com.googlecode.genericdao.search.ISearch;
  21 +import com.googlecode.genericdao.search.SearchResult;
  22 +
20 /** 23 /**
21 * <p> 24 * <p>
22 * <img src="http://centralit.com.br/images/logo_central.png"> 25 * <img src="http://centralit.com.br/images/logo_central.png">
@@ -177,13 +180,30 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un @@ -177,13 +180,30 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un
177 * Método responsável por listar processos através da unidade do usuário 180 * Método responsável por listar processos através da unidade do usuário
178 * @author rogerio.cassimiro 181 * @author rogerio.cassimiro
179 * @param search 182 * @param search
  183 + * @param usuario
  184 + * @param idStatus
180 * @return <RT> SearchResult<RT> 185 * @return <RT> SearchResult<RT>
181 */ 186 */
182 @Override 187 @Override
183 - public <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search) {  
184 - Usuario usuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() );  
185 - search.getFilters().add(Filter.in("unidade.id", usuario.getUnidade().getId()));  
186 - search.getFilters().add(Filter.or(Filter.equal("concluido", Boolean.FALSE), Filter.isEmpty("concluido"))); 188 + public <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search, Usuario usuario, Long idStatus) {
  189 +
  190 + search.getFilters().add(Filter.or(Filter.not(Filter.equal("processo.status.id", idStatus)), Filter.isEmpty("processo.status.id")));
  191 +
  192 + Criteria criteriaPrivilegio = this.newCriteria(SigiloPrivilegio.class);
  193 + criteriaPrivilegio.setProjection(Projections.property("sigilo.id"));
  194 + criteriaPrivilegio.createAlias("privilegio", "privilegio");
  195 + criteriaPrivilegio.createAlias("privilegio.grupoPrivilegios", "grupoPrivilegio");
  196 + criteriaPrivilegio.add(Restrictions.isNull("grupoPrivilegio.dataInativo"));
  197 + criteriaPrivilegio.createCriteria("grupoPrivilegio.grupo").createAlias("grupoUsuarios", "grupoUsuario");
  198 + criteriaPrivilegio.add(Restrictions.isNull("grupoUsuario.dataInativo"));
  199 + criteriaPrivilegio.add(Restrictions.eq("grupoUsuario.usuario.id", usuario.getId()));
  200 +
  201 + search.getFilters().add(Filter.equal("processo.autor.id", usuario.getId()));
  202 +// search.getFilters().add(Filter.or(
  203 +// Filter.in("processo.autor.id", usuario.getId()),
  204 +// Filter.in("unidade.id", usuario.getUnidade().getId()),
  205 +// Filter.in("processo.sigilo.id", criteriaPrivilegio.list())));
  206 +//
187 return super.searchAndCount(search); 207 return super.searchAndCount(search);
188 } 208 }
189 } 209 }
cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoProcesso.java
@@ -72,7 +72,7 @@ public class NivelAcessoTipoProcesso extends PersistentObjectAudit { @@ -72,7 +72,7 @@ public class NivelAcessoTipoProcesso extends PersistentObjectAudit {
72 72
73 /** Atributo tipoAcesso. */ 73 /** Atributo tipoAcesso. */
74 @ManyToOne(fetch = FetchType.LAZY) 74 @ManyToOne(fetch = FetchType.LAZY)
75 - @JsonView({ ViewsEcm.TipoProcessoEdit.class, ViewsEcm.NivelAcessoTipoProcessoEdit.class, Views.ProcessoList.class }) 75 + @JsonView({ ViewsEcm.TipoProcessoEdit.class, ViewsEcm.NivelAcessoTipoProcessoEdit.class, Views.ProcessoList.class, Views.UnidadeProcessoListView.class })
76 private Dominio nivelAcesso; 76 private Dominio nivelAcesso;
77 77
78 @OneToMany(fetch = FetchType.LAZY, mappedBy = "nivelAcessoTipoProcesso", cascade = CascadeType.ALL) 78 @OneToMany(fetch = FetchType.LAZY, mappedBy = "nivelAcessoTipoProcesso", cascade = CascadeType.ALL)
cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java
@@ -147,7 +147,7 @@ public class Processo extends PersistentObjectUnidade { @@ -147,7 +147,7 @@ public class Processo extends PersistentObjectUnidade {
147 147
148 /** Atributo nivelAcesso. */ 148 /** Atributo nivelAcesso. */
149 @ManyToOne(fetch = FetchType.LAZY) 149 @ManyToOne(fetch = FetchType.LAZY)
150 - @JsonView({ Views.ProcessoList.class }) 150 + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class })
151 private NivelAcessoTipoProcesso nivelAcesso; 151 private NivelAcessoTipoProcesso nivelAcesso;
152 152
153 @ManyToOne(fetch = FetchType.LAZY) 153 @ManyToOne(fetch = FetchType.LAZY)
@@ -171,7 +171,7 @@ public class Processo extends PersistentObjectUnidade { @@ -171,7 +171,7 @@ public class Processo extends PersistentObjectUnidade {
171 171
172 /** Atributo sigilo. */ 172 /** Atributo sigilo. */
173 @ManyToOne(fetch = FetchType.LAZY) 173 @ManyToOne(fetch = FetchType.LAZY)
174 - @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) 174 + @JsonView({ Views.ProcessoList.class })
175 private Sigilo sigilo; 175 private Sigilo sigilo;
176 176
177 @ManyToOne(fetch = FetchType.LAZY) 177 @ManyToOne(fetch = FetchType.LAZY)
cit-ecm-api/src/main/java/br/com/centralit/api/model/Sigilo.java
@@ -65,7 +65,7 @@ public class Sigilo extends PersistentObjectAudit { @@ -65,7 +65,7 @@ public class Sigilo extends PersistentObjectAudit {
65 65
66 /** Atributo tipoSigilo. */ 66 /** Atributo tipoSigilo. */
67 @ManyToOne(fetch = FetchType.LAZY) 67 @ManyToOne(fetch = FetchType.LAZY)
68 - @JsonView({ Views.GenericView.class, Views.UnidadeProcessoListView.class }) 68 + @JsonView({ Views.GenericView.class})
69 private Dominio tipoSigilo; 69 private Dominio tipoSigilo;
70 70
71 /** Atributo sigiloPrivilegios. */ 71 /** Atributo sigiloPrivilegios. */
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/UnidadeProcessoServiceImpl.java
@@ -5,6 +5,7 @@ import java.util.Collection; @@ -5,6 +5,7 @@ import java.util.Collection;
5 import java.util.List; 5 import java.util.List;
6 6
7 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.security.core.context.SecurityContextHolder;
8 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
9 10
10 import br.com.centralit.api.dao.UnidadeProcessoDao; 11 import br.com.centralit.api.dao.UnidadeProcessoDao;
@@ -21,7 +22,9 @@ import br.com.centralit.api.service.UnidadeProcessoService; @@ -21,7 +22,9 @@ import br.com.centralit.api.service.UnidadeProcessoService;
21 import br.com.centralit.api.service.UnidadeService; 22 import br.com.centralit.api.service.UnidadeService;
22 import br.com.centralit.api.service.UsuarioService; 23 import br.com.centralit.api.service.UsuarioService;
23 import br.com.centralit.api.viewHelper.EnviarProcessoVH; 24 import br.com.centralit.api.viewHelper.EnviarProcessoVH;
  25 +import br.com.centralit.framework.model.Dominio;
24 import br.com.centralit.framework.model.Unidade; 26 import br.com.centralit.framework.model.Unidade;
  27 +import br.com.centralit.framework.model.Usuario;
25 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; 28 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
26 import br.com.centralit.framework.util.UtilColecao; 29 import br.com.centralit.framework.util.UtilColecao;
27 import br.com.centralit.framework.util.UtilObjeto; 30 import br.com.centralit.framework.util.UtilObjeto;
@@ -102,7 +105,7 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl&lt;UnidadeProces @@ -102,7 +105,7 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl&lt;UnidadeProces
102 /** Atributo historicoAtribuicaoProcessoService. */ 105 /** Atributo historicoAtribuicaoProcessoService. */
103 @Autowired 106 @Autowired
104 private HistoricoAtribuicaoProcessoService historicoAtribuicaoProcessoService; 107 private HistoricoAtribuicaoProcessoService historicoAtribuicaoProcessoService;
105 - 108 +
106 /** 109 /**
107 * Responsável pela criação de novas instâncias desta classe. 110 * Responsável pela criação de novas instâncias desta classe.
108 * 111 *
@@ -331,7 +334,9 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl&lt;UnidadeProces @@ -331,7 +334,9 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl&lt;UnidadeProces
331 */ 334 */
332 @Override 335 @Override
333 public <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search) { 336 public <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search) {
334 - return this.unidadeProcessoDao.searchAndCountPorUnidade(search); 337 + Dominio dominioStatusProcesso = dominioService.findByChaveAndCodigo(Dominio.TIPO_STATUS_PROCESSO_ECM, Dominio.TIPO_STATUS_PROCESSO_ECM_CONCLUIDO);
  338 + Usuario usuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() );
  339 + return this.unidadeProcessoDao.searchAndCountPorUnidade(search, usuario, dominioStatusProcesso.getId());
335 } 340 }
336 341
337 } 342 }
338 \ No newline at end of file 343 \ No newline at end of file
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
@@ -404,7 +404,10 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen @@ -404,7 +404,10 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
404 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TIPO_SUPORTE_DOCUMENTO ", "Tipo suporte de documento", dominio, modulo)); 404 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TIPO_SUPORTE_DOCUMENTO ", "Tipo suporte de documento", dominio, modulo));
405 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DIGITE_PROTOCOLO", "Digite o potocolo", dominio, modulo)); 405 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DIGITE_PROTOCOLO", "Digite o potocolo", dominio, modulo));
406 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.SOBRESTAR_SEM", "Sobrestar", dominio, modulo)); 406 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.SOBRESTAR_SEM", "Sobrestar", dominio, modulo));
407 - 407 + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.SOBRESTADA", "Sobrestada", dominio, modulo));
  408 + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.SITUACAO_INSTANCIA_TAREFA", "Situação instância tarefa", dominio, modulo));
  409 + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NIVEL_DE_ACESSO", "Nível de acesso", dominio, modulo));
  410 + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ASSUNTO_COMPLEMENTAR", "Assunto complementar", dominio, modulo));
408 } 411 }
409 412
410 /** 413 /**
@@ -509,6 +512,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen @@ -509,6 +512,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
509 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_CONCLUIDO_SUCESSO", "Processo concluído com sucesso!", dominio, modulo)); 512 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_CONCLUIDO_SUCESSO", "Processo concluído com sucesso!", dominio, modulo));
510 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_SALVO_SUCESSO", "O processo !", dominio, modulo)); 513 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_SALVO_SUCESSO", "O processo !", dominio, modulo));
511 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.NAO_EXISTE_TAREFA_EXECUTAR", "Não existem tarefas a serem executadas!", dominio, modulo)); 514 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.NAO_EXISTE_TAREFA_EXECUTAR", "Não existem tarefas a serem executadas!", dominio, modulo));
512 - 515 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CONFIRMA_SOBRESTAMENTO_TAREFA", "Confirma o sobrestamento da tarefa?", dominio, modulo));
  516 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_SOBRESTADA_SUCESSO", "Tarefa sobrestada com sucesso!", dominio, modulo));
  517 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CONFIRMA_REATIVACAO_TAREFA", "Confirma reativação da tarefa?", dominio, modulo));
  518 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_REATIVADA", "Tarefa reativada com sucesso", dominio, modulo));
513 } 519 }
514 } 520 }
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoListUnidadeController.js
@@ -13,7 +13,7 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -13,7 +13,7 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
13 title : $translate.instant('ECM.LABEL.TIPOPROCESSO'), 13 title : $translate.instant('ECM.LABEL.TIPOPROCESSO'),
14 value : 'processo.tipoProcesso.descricao' 14 value : 'processo.tipoProcesso.descricao'
15 }, { 15 }, {
16 - title : $translate.instant('ECM.LABEL.ASSUNTOCOMPLEMENTAR'), 16 + title : $translate.instant('ECM.LABEL.ASSUNTO_COMPLEMENTAR'),
17 value : 'processo.assuntoComplementar' 17 value : 'processo.assuntoComplementar'
18 }, { 18 }, {
19 title : $translate.instant('ECM.LABEL.ATRIBUIDOA'), 19 title : $translate.instant('ECM.LABEL.ATRIBUIDOA'),
@@ -22,8 +22,8 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -22,8 +22,8 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
22 title : $translate.instant('LABEL.SITUACAO'), 22 title : $translate.instant('LABEL.SITUACAO'),
23 value : 'processo.status.descricao' 23 value : 'processo.status.descricao'
24 }, { 24 }, {
25 - title : $translate.instant('ECM.LABEL.NIVEL_SIGILO'),  
26 - value : 'processo.sigilo.tipoSigilo.descricao' 25 + title : $translate.instant('ECM.LABEL.NIVEL_DE_ACESSO'),
  26 + value : 'processo.nivelAcesso.nivelAcesso.descricao'
27 }]; 27 }];
28 28
29 $scope.filterCriteria = { 29 $scope.filterCriteria = {
@@ -32,14 +32,14 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -32,14 +32,14 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
32 dir : 'asc', 32 dir : 'asc',
33 sort : 'processo.nup', 33 sort : 'processo.nup',
34 limit : 10, 34 limit : 10,
35 - fields: ['id', 'processo.nup', 'processo.tipoProcesso.descricao', 'processo.assuntoComplementar','usuarioResponsavel.username', 'processo.status.descricao', 'processo.sigilo.tipoSigilo.descricao', 'processo.dataCriacao', 'processo.idProcessInstance', 'processo.dataReferencia', 'processo.assunto'], 35 + fields: ['id', 'processo.nup', 'processo.tipoProcesso.descricao', 'processo.assuntoComplementar','usuarioResponsavel.username', 'processo.status.descricao', 'processo.nivelAcesso.nivelAcesso.descricao', 'processo.dataCriacao', 'processo.idProcessInstance', 'processo.dataReferencia', 'processo.assunto'],
36 filters : [ 36 filters : [
37 { type : 'string', field : 'processo.nup'}, 37 { type : 'string', field : 'processo.nup'},
38 { type : 'string', field : 'processo.tipoProcesso.descricao'}, 38 { type : 'string', field : 'processo.tipoProcesso.descricao'},
39 { type : 'string', field : 'processo.assuntoComplementar'}, 39 { type : 'string', field : 'processo.assuntoComplementar'},
40 { type : 'string', field : 'usuarioResponsavel.username'}, 40 { type : 'string', field : 'usuarioResponsavel.username'},
41 { type : 'string', field : 'processo.status.descricao', listaDominio : []}, 41 { type : 'string', field : 'processo.status.descricao', listaDominio : []},
42 - { type : 'string', field : 'processo.sigilo.tipoSigilo.descricao'} 42 + { type : 'string', field : 'processo.nivelAcesso.nivelAcesso.descricao'}
43 ] 43 ]
44 }; 44 };
45 45
@@ -102,7 +102,6 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -102,7 +102,6 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
102 , {type: 'string', field: 'workItem.processInstance.businessProcess.description'} 102 , {type: 'string', field: 'workItem.processInstance.businessProcess.description'}
103 , {type: 'string', field: 'workItem.processInstance.flowStatus.name'}] 103 , {type: 'string', field: 'workItem.processInstance.flowStatus.name'}]
104 }; 104 };
105 -  
106 $scope.filterCriteriaBusinessProcess.username = filterService.username; 105 $scope.filterCriteriaBusinessProcess.username = filterService.username;
107 $scope.filterCriteriaBusinessProcess.groups = filterService.groups; 106 $scope.filterCriteriaBusinessProcess.groups = filterService.groups;
108 } 107 }
@@ -121,27 +120,44 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -121,27 +120,44 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
121 }); 120 });
122 }; 121 };
123 122
124 - $scope.selecionarTarefa = function(tarefaSelecionada) {  
125 - //$scope.tarefaSelecionada = tarefaSelecionada;  
126 - };  
127 -  
128 function _recuperarPermissoes(idAssignment){ 123 function _recuperarPermissoes(idAssignment){
129 - $scope.assignments[0].$checked = true;  
130 BusinessProcessRepository.getPermissions({id: idAssignment}).then(function(result) { 124 BusinessProcessRepository.getPermissions({id: idAssignment}).then(function(result) {
131 $scope.workItem = result.originalElement; 125 $scope.workItem = result.originalElement;
132 vincularWorkItemAssignments(); 126 vincularWorkItemAssignments();
133 $scope.btnAction = !(!$scope.workItem.execute && !$scope.workItem.suspend && !$scope.workItem.delegate && !$scope.workItem.restart && !$scope.workItem.visualize); 127 $scope.btnAction = !(!$scope.workItem.execute && !$scope.workItem.suspend && !$scope.workItem.delegate && !$scope.workItem.restart && !$scope.workItem.visualize);
134 $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido; 128 $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido;
  129 + $scope.modelSelecionado.workItem = $scope.workItem;
135 }); 130 });
136 }; 131 };
137 132
138 function vincularWorkItemAssignments(){ 133 function vincularWorkItemAssignments(){
139 - $scope.assignments.forEach(function(assignments){  
140 - assignments.workItem = $scope.workItem; 134 + $scope.assignments.forEach(function(assignment){
  135 + assignment.workItem = $scope.workItem;
  136 + assignment.checked = false;
  137 + });
  138 + $scope.assignments[0].checked = true;
  139 + };
  140 +
  141 + $scope.selectAssignment = function(assignmentSelect) {
  142 + $scope.assignments.forEach(function(assignment){
  143 + assignment.checked = false;
  144 + if(assignment.id == assignmentSelect.id){
  145 + assignment.checked = true;
  146 + }
141 }); 147 });
142 }; 148 };
143 149
  150 + function _getAssignmentSelected() {
  151 + for(var pos = 0; pos < $scope.assignments.length; pos++){
  152 + if($scope.assignments[pos].checked){
  153 + $scope.modelSelecionado.workItem = $scope.assignments[pos];
  154 + break;
  155 + }
  156 + }
  157 + };
  158 +
144 $scope.executarTarefa = function(){ 159 $scope.executarTarefa = function(){
  160 + _getAssignmentSelected();
145 if($scope.workItem){ 161 if($scope.workItem){
146 var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/userTask.html'; 162 var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/userTask.html';
147 if ($scope.workItem.flowElement.userInterface && $scope.workItem.flowElement.userInterface.executeCustomPage) { 163 if ($scope.workItem.flowElement.userInterface && $scope.workItem.flowElement.userInterface.executeCustomPage) {
@@ -163,11 +179,9 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -163,11 +179,9 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
163 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_TAREFA')); 179 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_TAREFA'));
164 return ; 180 return ;
165 } 181 }
166 -  
167 - $scope.processInstance = $scope.workItem.processInstance; 182 + $scope.processInstance = $scope.modelSelecionado.workItem.processInstance;
168 $scope.processInstance.collapsed = true; 183 $scope.processInstance.collapsed = true;
169 $scope.processInstance.collapsedError = true; 184 $scope.processInstance.collapsedError = true;
170 -  
171 $rootScope.task = $scope.workItem; 185 $rootScope.task = $scope.workItem;
172 $rootScope.processInstance = $scope.processInstance; 186 $rootScope.processInstance = $scope.processInstance;
173 $rootScope.controllerScope = $scope; 187 $rootScope.controllerScope = $scope;
@@ -179,5 +193,70 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -179,5 +193,70 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
179 $scope.addNewWorkspace($translate.instant('ESI.PERMISSAO.EXECUTAR')+" "+$translate.instant('ESI.TAREFA').toLowerCase()+" '"+nome+"'", pagina, true, 'mod-red-dark', $scope.workItem); 193 $scope.addNewWorkspace($translate.instant('ESI.PERMISSAO.EXECUTAR')+" "+$translate.instant('ESI.TAREFA').toLowerCase()+" '"+nome+"'", pagina, true, 'mod-red-dark', $scope.workItem);
180 }; 194 };
181 195
  196 + $scope.suspenderProcesso = function(){
  197 + _getAssignmentSelected();
  198 + $scope.$openModalConfirm({
  199 + message: $translate.instant('ECM.MSG.CONFIRMA_SOBRESTAMENTO_TAREFA'),
  200 + callback: function () {
  201 + $scope.$modalConfirmInstance.dismiss('cancel');
  202 + $scope.setLoading(true);
  203 + RuntimeManagerRepository.suspendProcessInstance($scope.modelSelecionado.workItem.processInstance.id).then(function(result) {
  204 + $scope.setLoading(false);
  205 + $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido;
  206 + $scope.modelSelecionado.$show = !$scope.modelSelecionado.$show;
  207 + $scope.showAlert("success","ECM.MSG.TAREFA_SOBRESTADA_SUCESSO","");
  208 + });
  209 + }
  210 + });
  211 + };
  212 +
  213 + $scope.reativarProcesso = function(){
  214 + _getAssignmentSelected();
  215 + $scope.$openModalConfirm({
  216 + message: $translate.instant('ECM.MSG.CONFIRMA_REATIVACAO_TAREFA'),
  217 + callback: function () {
  218 + $scope.$modalConfirmInstance.dismiss('cancel');
  219 + $scope.setLoading(true);
  220 + RuntimeManagerRepository.restartProcessInstance($scope.modelSelecionado.workItem.processInstance.id).then(function(result) {
  221 + $scope.setLoading(false);
  222 + $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido;
  223 + $scope.modelSelecionado.$show = !$scope.modelSelecionado.$show;
  224 + $scope.showAlert("success","ECM.MSG.TAREFA_REATIVADA","");
  225 + });
  226 + }
  227 + });
  228 + };
  229 +
  230 + $scope.visualizarFluxo = function(){
  231 + _getAssignmentSelected();
  232 + var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/visualizacaoEsi.html';
  233 + if (appService.existsWorkspace(pagina)) {
  234 + $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_VISUALIZACAO'));
  235 + return ;
  236 + }
  237 + $scope.tarefa = $scope.modelSelecionado.workItem;
  238 + $scope.instancia = $scope.tarefa.processInstance;
  239 + $rootScope.tarefa = $scope.tarefa;
  240 + $rootScope.instancia = $scope.instancia;
  241 + $rootScope.controllerScope = $scope;
  242 + $scope.addNewWorkspace($scope.modelSelecionado.workItem.processInstance.businessProcess.description, pagina, true, 'mod-red-dark', $scope.tarefa);
  243 + };
  244 +
  245 + $scope.consultarHistorico = function(){
  246 + _getAssignmentSelected();
  247 + var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/consultaLog.html';
  248 + if (appService.existsWorkspace(pagina)) {
  249 + $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_HISTORICO'));
  250 + return ;
  251 + }
  252 + $scope.processInstance = $scope.modelSelecionado.workItem.processInstance;
  253 + $rootScope.processInstance = $scope.processInstance;
  254 + $rootScope.controllerScope = $scope;
  255 + $scope.processInstance.collapsed = true;
  256 + $scope.processInstance.collapsedError = true;
  257 + $scope.processInstance.instances = [];
  258 + $scope.addNewWorkspace($scope.modelSelecionado.workItem.processInstance.businessProcess.description, pagina, true, 'mod-red-dark', $scope.processInstance);
  259 + };
  260 +
182 carregarDominiosStatusProcesso(); 261 carregarDominiosStatusProcesso();
183 }]); 262 }]);
184 \ No newline at end of file 263 \ No newline at end of file
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/tarefasPorProcesso.html
1 1
2 -<fieldset style="margin-left: 5%; width: 90%" ng-if="modelSelecionado.$expandido"> 2 +<fieldset style="margin-left: 5%; width: 90%; margin-top: 10px;" ng-if="modelSelecionado.$expandido">
3 3
4 <legend> 4 <legend>
5 <div class="pull-left" style="font-size : 14px; !important"> 5 <div class="pull-left" style="font-size : 14px; !important">
@@ -17,27 +17,27 @@ @@ -17,27 +17,27 @@
17 <div class="panel panel-default"> 17 <div class="panel panel-default">
18 <div class="panel-heading clearfix" ng-if="btnAction"> 18 <div class="panel-heading clearfix" ng-if="btnAction">
19 <button class="btn btn-clear" title="{{$translate.instant('LABEL.EXECUTAR')}}" alt="{{$translate.instant('LABEL.EXECUTAR')}}" type="button" 19 <button class="btn btn-clear" title="{{$translate.instant('LABEL.EXECUTAR')}}" alt="{{$translate.instant('LABEL.EXECUTAR')}}" type="button"
20 - ng-click="executarTarefa();" > 20 + ng-click="executarTarefa();" ng-if="modelSelecionado.workItem.processInstance.status != 'SUSPENDED'" >
21 <i class="fa fa-play-circle-o green"></i> 21 <i class="fa fa-play-circle-o green"></i>
22 <translate>LABEL.EXECUTAR</translate> 22 <translate>LABEL.EXECUTAR</translate>
23 </button> 23 </button>
24 <button class="btn btn-clear" title="{{$translate.instant('ECM.LABEL.SOBRESTAR_SEM')}}" alt="{{$translate.instant('ECM.LABEL.SOBRESTAR_SEM')}}" type="button" 24 <button class="btn btn-clear" title="{{$translate.instant('ECM.LABEL.SOBRESTAR_SEM')}}" alt="{{$translate.instant('ECM.LABEL.SOBRESTAR_SEM')}}" type="button"
25 - ng-click="" > 25 + ng-click="suspenderProcesso();" ng-if="modelSelecionado.workItem.processInstance.status != 'SUSPENDED'">
26 <i class="fa fa-pause red"></i> 26 <i class="fa fa-pause red"></i>
27 <translate>ECM.LABEL.SOBRESTAR_SEM</translate> 27 <translate>ECM.LABEL.SOBRESTAR_SEM</translate>
28 </button> 28 </button>
29 <button class="btn btn-clear" title="{{$translate.instant('LABEL.REATIVAR')}}" alt="{{$translate.instant('LABEL.REATIVAR')}}" type="button" 29 <button class="btn btn-clear" title="{{$translate.instant('LABEL.REATIVAR')}}" alt="{{$translate.instant('LABEL.REATIVAR')}}" type="button"
30 - ng-click="" > 30 + ng-click="reativarProcesso();" ng-if="modelSelecionado.workItem.processInstance.status == 'SUSPENDED'">
31 <i class="fa fa-play green"></i> 31 <i class="fa fa-play green"></i>
32 <translate>LABEL.REATIVAR</translate> 32 <translate>LABEL.REATIVAR</translate>
33 </button> 33 </button>
34 <button class="btn btn-clear" title="{{$translate.instant('PORTAL.LABEL.VISUALIZAR_FLUXO')}}" alt="{{$translate.instant('PORTAL.LABEL.VISUALIZAR_FLUXO')}}" type="button" 34 <button class="btn btn-clear" title="{{$translate.instant('PORTAL.LABEL.VISUALIZAR_FLUXO')}}" alt="{{$translate.instant('PORTAL.LABEL.VISUALIZAR_FLUXO')}}" type="button"
35 - ng-click="" > 35 + ng-click="visualizarFluxo();" >
36 <i class="fa fa-search blue"></i> 36 <i class="fa fa-search blue"></i>
37 <translate>PORTAL.LABEL.VISUALIZAR_FLUXO</translate> 37 <translate>PORTAL.LABEL.VISUALIZAR_FLUXO</translate>
38 </button> 38 </button>
39 <button class="btn btn-clear" title="{{$translate.instant('ESI.LOG.CONSULTA_LOG')}}" alt="{{$translate.instant('ESI.LOG.CONSULTA_LOG')}}" type="button" 39 <button class="btn btn-clear" title="{{$translate.instant('ESI.LOG.CONSULTA_LOG')}}" alt="{{$translate.instant('ESI.LOG.CONSULTA_LOG')}}" type="button"
40 - ng-click="" > 40 + ng-click="consultarHistorico();" >
41 <i class="fa fa-history yellow-dark"></i> 41 <i class="fa fa-history yellow-dark"></i>
42 <translate>ESI.LOG.CONSULTA_LOG</translate> 42 <translate>ESI.LOG.CONSULTA_LOG</translate>
43 </button> 43 </button>
@@ -49,13 +49,13 @@ @@ -49,13 +49,13 @@
49 <tr> 49 <tr>
50 <th style="width: 5%;"></th> 50 <th style="width: 5%;"></th>
51 <th colspan="2" style="width: 60%;"><small><translate>ESI.TAREFA</translate></small></th> 51 <th colspan="2" style="width: 60%;"><small><translate>ESI.TAREFA</translate></small></th>
52 - <th style="align:center;"><small><translate>PORTAL.LABEL.SITUACAO_INSTANCIA</translate></small></th> 52 + <th style="align:center;"><small><translate>ECM.LABEL.SITUACAO_INSTANCIA_TAREFA</translate></small></th>
53 </tr> 53 </tr>
54 </thead> 54 </thead>
55 <tbody> 55 <tbody>
56 <tr ng-repeat="assignment in assignments"> 56 <tr ng-repeat="assignment in assignments">
57 <td class="text-center" style="width: 5%;"> 57 <td class="text-center" style="width: 5%;">
58 - <input type="radio" name="modelChecked" ng-value="true" ng-model="$parent.tarefaSelecionada" ng-click="selecionarTarefa(assigment)"/> 58 + <input type="radio" id="{{assignment.id}}" name="assignments" ng-checked="assignment.checked === true" ng-click="selectAssignment(assignment);" />
59 </td> 59 </td>
60 <td class="text-center" style="width: 5%;"> 60 <td class="text-center" style="width: 5%;">
61 <span class="small green" >{{assignment.id}}</span> 61 <span class="small green" >{{assignment.id}}</span>
@@ -74,7 +74,7 @@ @@ -74,7 +74,7 @@
74 <label ng-show="assignment.workItem.processInstance.status == 'SUSPENDED'"> 74 <label ng-show="assignment.workItem.processInstance.status == 'SUSPENDED'">
75 <span class="small badge black" style="background-color: red !important"> 75 <span class="small badge black" style="background-color: red !important">
76 <b><font color="white"> 76 <b><font color="white">
77 - <translate>ESI.ENUMERADO.SITUACAO_INSTANCIA_SUSPENSA</translate> 77 + <translate>ECM.LABEL.SOBRESTADA</translate>
78 </b></font> 78 </b></font>
79 </span> 79 </span>
80 </label> 80 </label>