Commit 5de24bed343fcc2b6d2e6abbc292402b2207abbc

Authored by ROGERIO CASSIMIRO DE SOUZA
2 parents 228297d5 2d27bd0b
Exists in master

redmine #4463 merge para desenvolvimento

Showing 20 changed files with 492 additions and 691 deletions   Show diff stats
cit-ecm-api/src/main/java/br/com/centralit/api/dao/ProcessoDao.java
@@ -155,5 +155,5 @@ public interface ProcessoDao extends CitGenericDAO { @@ -155,5 +155,5 @@ public interface ProcessoDao extends CitGenericDAO {
155 * @return <RT> SearchResult<RT> 155 * @return <RT> SearchResult<RT>
156 */ 156 */
157 <RT> SearchResult<RT> searchAndCountPorSigilo(ISearch search); 157 <RT> SearchResult<RT> searchAndCountPorSigilo(ISearch search);
158 - 158 +
159 } 159 }
cit-ecm-api/src/main/java/br/com/centralit/api/dao/UnidadeProcessoDao.java
@@ -2,9 +2,13 @@ package br.com.centralit.api.dao; @@ -2,9 +2,13 @@ package br.com.centralit.api.dao;
2 2
3 import java.util.Collection; 3 import java.util.Collection;
4 4
  5 +import com.googlecode.genericdao.search.ISearch;
  6 +import com.googlecode.genericdao.search.SearchResult;
  7 +
5 import br.com.centralit.api.model.Processo; 8 import br.com.centralit.api.model.Processo;
6 import br.com.centralit.api.model.UnidadeProcesso; 9 import br.com.centralit.api.model.UnidadeProcesso;
7 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;
8 12
9 /** 13 /**
10 * <p> 14 * <p>
@@ -114,5 +118,15 @@ public interface UnidadeProcessoDao extends CitGenericDAO { @@ -114,5 +118,15 @@ public interface UnidadeProcessoDao extends CitGenericDAO {
114 * @return UnidadeProcesso 118 * @return UnidadeProcesso
115 */ 119 */
116 UnidadeProcesso obterPorUnidadeEProcesso(Long idProcesso, Long idUnidade); 120 UnidadeProcesso obterPorUnidadeEProcesso(Long idProcesso, Long idUnidade);
117 - 121 +
  122 + /**
  123 + * Método responsável por listar processos através da unidade do usuário
  124 + * @author rogerio.cassimiro
  125 + * @param search
  126 + * @param usuario
  127 + * @param idStatus
  128 + * @return <RT> SearchResult<RT>
  129 + */
  130 + <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search, Usuario usuario, Long idStatus);
  131 +
118 } 132 }
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/ProcessoDaoHibernate.java
@@ -211,5 +211,5 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD @@ -211,5 +211,5 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD
211 211
212 return super.searchAndCount(search); 212 return super.searchAndCount(search);
213 } 213 }
214 - 214 +
215 } 215 }
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/UnidadeProcessoDaoHibernate.java
@@ -2,15 +2,24 @@ package br.com.centralit.api.dao.impl; @@ -2,15 +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.hibernate.Criteria;
  6 +import org.hibernate.criterion.Projections;
  7 +import org.hibernate.criterion.Restrictions;
5 import org.springframework.stereotype.Repository; 8 import org.springframework.stereotype.Repository;
6 9
7 import br.com.centralit.api.dao.UnidadeProcessoDao; 10 import br.com.centralit.api.dao.UnidadeProcessoDao;
8 import br.com.centralit.api.model.Processo; 11 import br.com.centralit.api.model.Processo;
  12 +import br.com.centralit.api.model.SigiloPrivilegio;
9 import br.com.centralit.api.model.UnidadeProcesso; 13 import br.com.centralit.api.model.UnidadeProcesso;
10 import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; 14 import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl;
11 import br.com.centralit.framework.dao.arquitetura.SearchSeven; 15 import br.com.centralit.framework.dao.arquitetura.SearchSeven;
  16 +import br.com.centralit.framework.model.Usuario;
12 import br.com.centralit.framework.util.UtilColecao; 17 import br.com.centralit.framework.util.UtilColecao;
13 18
  19 +import com.googlecode.genericdao.search.Filter;
  20 +import com.googlecode.genericdao.search.ISearch;
  21 +import com.googlecode.genericdao.search.SearchResult;
  22 +
14 /** 23 /**
15 * <p> 24 * <p>
16 * <img src="http://centralit.com.br/images/logo_central.png"> 25 * <img src="http://centralit.com.br/images/logo_central.png">
@@ -167,4 +176,35 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un @@ -167,4 +176,35 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un
167 176
168 } 177 }
169 178
  179 + /**
  180 + * Método responsável por listar processos através da unidade do usuário
  181 + * @author rogerio.cassimiro
  182 + * @param search
  183 + * @param usuario
  184 + * @param idStatus
  185 + * @return <RT> SearchResult<RT>
  186 + */
  187 + @Override
  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.isNotNull("processo.idProcessInstance"));
  203 +// search.getFilters().add(Filter.or(
  204 +// Filter.in("processo.autor.id", usuario.getId()),
  205 +// Filter.in("unidade.id", usuario.getUnidade().getId()),
  206 +// Filter.in("processo.sigilo.id", criteriaPrivilegio.list())));
  207 +//
  208 + return super.searchAndCount(search);
  209 + }
170 } 210 }
cit-ecm-api/src/main/java/br/com/centralit/api/framework/json/ViewsEcm.java
@@ -109,4 +109,6 @@ public class ViewsEcm extends Views { @@ -109,4 +109,6 @@ public class ViewsEcm extends Views {
109 public static class TarjaAssinaturaListview extends Views.GenericView{}; 109 public static class TarjaAssinaturaListview extends Views.GenericView{};
110 110
111 public static class TarjaAssinaturaEditview extends ViewsEcm.TarjaAssinaturaListview{}; 111 public static class TarjaAssinaturaEditview extends ViewsEcm.TarjaAssinaturaListview{};
  112 +
  113 +
112 } 114 }
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/PlanoClassificacao.java
@@ -100,7 +100,7 @@ public class PlanoClassificacao extends PersistentObjectAuditOrganizacao impleme @@ -100,7 +100,7 @@ public class PlanoClassificacao extends PersistentObjectAuditOrganizacao impleme
100 private Boolean permitirUsarComoClassificacao; 100 private Boolean permitirUsarComoClassificacao;
101 101
102 @Transient 102 @Transient
103 - @JsonView({ ViewsEcm.PlanoCLassificacaoAutoComplete.class, ViewsEcm.TipoDocumentoEdit.class, ViewsEcm.TipoProcessoEdit.class, Views.ProcessoList.class, Views.DocumentoGedEdit.class, ViewsEcm.TipoDocumentoPlanoClassificacaoAutoCompleteView.class }) 103 + @JsonView({ ViewsEcm.PlanoCLassificacaoAutoComplete.class, ViewsEcm.TipoDocumentoEdit.class, ViewsEcm.TipoProcessoEdit.class, Views.ProcessoList.class, Views.DocumentoGedEdit.class, ViewsEcm.TipoDocumentoPlanoClassificacaoAutoCompleteView.class, Views.UnidadeProcessoListView.class })
104 private String assunto; 104 private String assunto;
105 105
106 /** Atributo tipoDestinacao. */ 106 /** Atributo tipoDestinacao. */
cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java
@@ -69,23 +69,28 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -69,23 +69,28 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
69 @JsonIgnoreProperties({ "sugestao", "assuntoPlanoClassificacao" }) 69 @JsonIgnoreProperties({ "sugestao", "assuntoPlanoClassificacao" })
70 public class Processo extends PersistentObjectUnidade { 70 public class Processo extends PersistentObjectUnidade {
71 71
  72 + public static final String GRID_PROCESSO_NA_UNIDADE = "GRID_PROCESSO_NA_UNIDADE";
  73 +
  74 + public static final String GRID_CLASSIFICACAO_PROCESSO_DOCUMENTO = "GRID_CLASSIFICACAO_PROCESSO_DOCUMENTO";
  75 +
72 /** Atributo serialVersionUID. */ 76 /** Atributo serialVersionUID. */
73 private static final long serialVersionUID = -6167513900417461697L; 77 private static final long serialVersionUID = -6167513900417461697L;
74 78
75 /** Atributo id. */ 79 /** Atributo id. */
76 @Id 80 @Id
77 @GeneratedValue(strategy = GenerationType.AUTO) 81 @GeneratedValue(strategy = GenerationType.AUTO)
78 - @JsonView({ Views.GenericView.class }) 82 + @JsonView({ Views.GenericView.class, Views.UnidadeProcessoListView.class })
79 private Long id; 83 private Long id;
80 84
81 /** Atributo assuntoComplementar. */ 85 /** Atributo assuntoComplementar. */
82 - @JsonView({ Views.ProcessoList.class }) 86 + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class })
83 private String assuntoComplementar; 87 private String assuntoComplementar;
84 88
85 /** Atributo dataReferencia. */ 89 /** Atributo dataReferencia. */
86 @Temporal(TemporalType.TIMESTAMP) 90 @Temporal(TemporalType.TIMESTAMP)
87 @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class) 91 @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
88 @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class) 92 @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
  93 + @JsonView({Views.UnidadeProcessoListView.class})
89 private Calendar dataReferencia; 94 private Calendar dataReferencia;
90 95
91 /** Atributo dataConclusao. */ 96 /** Atributo dataConclusao. */
@@ -95,7 +100,7 @@ public class Processo extends PersistentObjectUnidade { @@ -95,7 +100,7 @@ public class Processo extends PersistentObjectUnidade {
95 private Calendar dataConclusao; 100 private Calendar dataConclusao;
96 101
97 /** Atributo nup. */ 102 /** Atributo nup. */
98 - @JsonView({ Views.ProcessoList.class, Views.ProcessoRelacionadoList.class, Views.AnexarProcesso.class, Views.ProcessoAutoCompleteView.class }) 103 + @JsonView({ Views.ProcessoList.class, Views.ProcessoRelacionadoList.class, Views.AnexarProcesso.class, Views.ProcessoAutoCompleteView.class, Views.UnidadeProcessoListView.class })
99 private String nup; 104 private String nup;
100 105
101 /** Atributo nome. */ 106 /** Atributo nome. */
@@ -105,36 +110,17 @@ public class Processo extends PersistentObjectUnidade { @@ -105,36 +110,17 @@ public class Processo extends PersistentObjectUnidade {
105 @Transient 110 @Transient
106 private Long idTask; 111 private Long idTask;
107 112
108 - /** Atributo prazoSigilo. */  
109 - @Temporal(TemporalType.TIMESTAMP)  
110 - @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)  
111 - @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)  
112 - @JsonView({ ViewsEcm.ProcessoList.class })  
113 - private Calendar prazoSigilo;  
114 -  
115 - /** Atributo aprovado. */  
116 - @JsonView({ ViewsEcm.ProcessoList.class })  
117 - private Boolean aprovado; 113 + /** Atributo nup. */
  114 + @JsonView({ Views.ProcessoEdit.class})
  115 + private Dominio tipoProtocolo;
118 116
119 /** Atributo observacaoGeral. */ 117 /** Atributo observacaoGeral. */
120 @JsonView({ Views.ProcessoEdit.class }) 118 @JsonView({ Views.ProcessoEdit.class })
121 private String observacaoGeral; 119 private String observacaoGeral;
122 120
123 - /** Atributo tipoAssunto. */  
124 - @JsonView({ Views.ProcessoEdit.class })  
125 - private String tipoAssunto;  
126 -  
127 - /** Atributo idProcessInstance. */  
128 - @JsonView({ Views.ProcessoList.class })  
129 - private Long idProcessInstance;  
130 -  
131 - /** Atributo nup. */  
132 - @JsonView({ Views.ProcessoEdit.class })  
133 - private Dominio tipoProtocolo;  
134 -  
135 /** Atributo status. */ 121 /** Atributo status. */
136 @ManyToOne(fetch = FetchType.LAZY) 122 @ManyToOne(fetch = FetchType.LAZY)
137 - @JsonView({ Views.ProcessoEdit.class }) 123 + @JsonView({ Views.ProcessoEdit.class, Views.UnidadeProcessoListView.class })
138 private Dominio status; 124 private Dominio status;
139 125
140 /** Atributo tramitarDocumento. */ 126 /** Atributo tramitarDocumento. */
@@ -143,18 +129,25 @@ public class Processo extends PersistentObjectUnidade { @@ -143,18 +129,25 @@ public class Processo extends PersistentObjectUnidade {
143 private TramitarDocumento tramitarDocumento; 129 private TramitarDocumento tramitarDocumento;
144 130
145 /** Atributo tipoProcesso. */ 131 /** Atributo tipoProcesso. */
146 - @JsonView({ Views.ProcessoList.class, Views.ProcessoRelacionadoList.class, Views.AnexarProcesso.class }) 132 + @JsonView({ Views.ProcessoList.class, Views.ProcessoRelacionadoList.class, Views.AnexarProcesso.class, Views.UnidadeProcessoListView.class })
147 @ManyToOne(fetch = FetchType.LAZY) 133 @ManyToOne(fetch = FetchType.LAZY)
148 private TipoProcesso tipoProcesso; 134 private TipoProcesso tipoProcesso;
149 135
150 /** Atributo assunto. */ 136 /** Atributo assunto. */
151 @ManyToOne(fetch = FetchType.LAZY) 137 @ManyToOne(fetch = FetchType.LAZY)
152 - @JsonView({ Views.ProcessoList.class }) 138 + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class })
153 private PlanoClassificacao assunto; 139 private PlanoClassificacao assunto;
154 140
  141 + @JsonView({ Views.ProcessoEdit.class })
  142 + private String tipoAssunto;
  143 +
  144 + /** Atributo idProcessInstance. */
  145 + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class })
  146 + private Long idProcessInstance;
  147 +
155 /** Atributo nivelAcesso. */ 148 /** Atributo nivelAcesso. */
156 @ManyToOne(fetch = FetchType.LAZY) 149 @ManyToOne(fetch = FetchType.LAZY)
157 - @JsonView({ Views.ProcessoList.class }) 150 + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class })
158 private NivelAcessoTipoProcesso nivelAcesso; 151 private NivelAcessoTipoProcesso nivelAcesso;
159 152
160 @ManyToOne(fetch = FetchType.LAZY) 153 @ManyToOne(fetch = FetchType.LAZY)
@@ -215,6 +208,17 @@ public class Processo extends PersistentObjectUnidade { @@ -215,6 +208,17 @@ public class Processo extends PersistentObjectUnidade {
215 @JoinTable(name = "processo_anexado", joinColumns = { @JoinColumn(name = "processo_id") }, inverseJoinColumns = { @JoinColumn(name = "processo_anexado_id") }) 208 @JoinTable(name = "processo_anexado", joinColumns = { @JoinColumn(name = "processo_id") }, inverseJoinColumns = { @JoinColumn(name = "processo_anexado_id") })
216 private Collection<AnexoProcesso> anexados; 209 private Collection<AnexoProcesso> anexados;
217 210
  211 + /** Atributo prazoSigilo. */
  212 + @Temporal(TemporalType.TIMESTAMP)
  213 + @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
  214 + @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
  215 + @JsonView({ ViewsEcm.ProcessoList.class })
  216 + private Calendar prazoSigilo;
  217 +
  218 + /** Atributo aprovado. */
  219 + @JsonView({ ViewsEcm.ProcessoList.class })
  220 + private Boolean aprovado;
  221 +
218 /** Atributo credenciais. */ 222 /** Atributo credenciais. */
219 @OneToMany(fetch = FetchType.LAZY, mappedBy = "processo", cascade = CascadeType.ALL) 223 @OneToMany(fetch = FetchType.LAZY, mappedBy = "processo", cascade = CascadeType.ALL)
220 private Collection<CredencialProcesso> credenciais; 224 private Collection<CredencialProcesso> credenciais;
@@ -849,21 +853,17 @@ public class Processo extends PersistentObjectUnidade { @@ -849,21 +853,17 @@ public class Processo extends PersistentObjectUnidade {
849 } 853 }
850 854
851 /** 855 /**
852 - * <p>  
853 - * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>  
854 - * </p>  
855 - *  
856 - * <p>  
857 - * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>  
858 - * </p>  
859 - * 856 + * <p><b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a></p>
  857 + *
  858 + * <p><b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a></p>
  859 + *
860 * Verifica se o processo foi tramitado. Levando em consideração a unidadeProcesso criada apartir da criação do processo. 860 * Verifica se o processo foi tramitado. Levando em consideração a unidadeProcesso criada apartir da criação do processo.
861 - * 861 + *
862 * @author maycon.silva 862 * @author maycon.silva
863 - * 863 + *
864 * @return boolean 864 * @return boolean
865 */ 865 */
866 - /* @JsonView({ Views.ProcessoEdit.class }) */ 866 + /*@JsonView({ Views.ProcessoEdit.class })*/
867 public boolean isTramitado() { 867 public boolean isTramitado() {
868 868
869 return !UtilColecao.isVazio(this.getUnidadesProcesso()) && this.getUnidadesProcesso().size() > 1; 869 return !UtilColecao.isVazio(this.getUnidadesProcesso()) && this.getUnidadesProcesso().size() > 1;
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 }) 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/model/TipoProcesso.java
@@ -63,7 +63,7 @@ public class TipoProcesso extends PersistentObjectUnidade { @@ -63,7 +63,7 @@ public class TipoProcesso extends PersistentObjectUnidade {
63 private Long id; 63 private Long id;
64 64
65 /** Atributo descricao. */ 65 /** Atributo descricao. */
66 - @JsonView({ ViewsEcm.TipoProcessoList.class }) 66 + @JsonView({ ViewsEcm.TipoProcessoList.class, Views.UnidadeProcessoListView.class })
67 private String descricao; 67 private String descricao;
68 68
69 /** Atributo nome. */ 69 /** Atributo nome. */
cit-ecm-api/src/main/java/br/com/centralit/api/model/UnidadeProcesso.java
@@ -72,17 +72,17 @@ public class UnidadeProcesso extends PersistentObjectAudit { @@ -72,17 +72,17 @@ public class UnidadeProcesso extends PersistentObjectAudit {
72 72
73 /** Atributo processo. */ 73 /** Atributo processo. */
74 @ManyToOne(fetch = FetchType.LAZY) 74 @ManyToOne(fetch = FetchType.LAZY)
75 - @JsonView({ Views.EnviarProcessoView.class }) 75 + @JsonView({ Views.EnviarProcessoView.class, Views.UnidadeProcessoListView.class })
76 private Processo processo; 76 private Processo processo;
77 77
78 /** Atributo grupo. */ 78 /** Atributo grupo. */
79 @ManyToOne(fetch = FetchType.LAZY) 79 @ManyToOne(fetch = FetchType.LAZY)
80 - @JsonView({ Views.EnviarProcessoView.class }) 80 + @JsonView({ Views.EnviarProcessoView.class})
81 private Unidade unidade; 81 private Unidade unidade;
82 82
83 /** Atributo usuarioResponsavel. */ 83 /** Atributo usuarioResponsavel. */
84 @ManyToOne(fetch = FetchType.LAZY) 84 @ManyToOne(fetch = FetchType.LAZY)
85 - @JsonView({ Views.EnviarProcessoView.class }) 85 + @JsonView({ Views.EnviarProcessoView.class, Views.UnidadeProcessoListView.class })
86 private Usuario usuarioResponsavel; 86 private Usuario usuarioResponsavel;
87 87
88 /** 88 /**
cit-ecm-api/src/main/java/br/com/centralit/api/service/UnidadeProcessoService.java
@@ -7,6 +7,9 @@ import br.com.centralit.api.model.UnidadeProcesso; @@ -7,6 +7,9 @@ import br.com.centralit.api.model.UnidadeProcesso;
7 import br.com.centralit.api.viewHelper.EnviarProcessoVH; 7 import br.com.centralit.api.viewHelper.EnviarProcessoVH;
8 import br.com.centralit.framework.service.arquitetura.GenericService; 8 import br.com.centralit.framework.service.arquitetura.GenericService;
9 9
  10 +import com.googlecode.genericdao.search.ISearch;
  11 +import com.googlecode.genericdao.search.SearchResult;
  12 +
10 /** 13 /**
11 * <p> 14 * <p>
12 * <img src="http://centralit.com.br/images/logo_central.png"> 15 * <img src="http://centralit.com.br/images/logo_central.png">
@@ -169,4 +172,12 @@ public interface UnidadeProcessoService extends GenericService&lt;UnidadeProcesso, @@ -169,4 +172,12 @@ public interface UnidadeProcessoService extends GenericService&lt;UnidadeProcesso,
169 */ 172 */
170 void saveUnidadeProcesso(Processo processo); 173 void saveUnidadeProcesso(Processo processo);
171 174
  175 + /**
  176 + * Método responsável por listar processos através da unidade do usuário
  177 + * @author rogerio.cassimiro
  178 + * @param search
  179 + * @return <RT> SearchResult<RT>
  180 + */
  181 + <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch search);
  182 +
172 } 183 }
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java
@@ -19,9 +19,6 @@ import org.springframework.beans.factory.annotation.Qualifier; @@ -19,9 +19,6 @@ import org.springframework.beans.factory.annotation.Qualifier;
19 import org.springframework.stereotype.Service; 19 import org.springframework.stereotype.Service;
20 import org.springframework.validation.Validator; 20 import org.springframework.validation.Validator;
21 21
22 -import com.googlecode.genericdao.search.ISearch;  
23 -import com.googlecode.genericdao.search.SearchResult;  
24 -  
25 import br.com.centralit.api.dao.ProcessoDao; 22 import br.com.centralit.api.dao.ProcessoDao;
26 import br.com.centralit.api.model.DocumentoGed; 23 import br.com.centralit.api.model.DocumentoGed;
27 import br.com.centralit.api.model.EstruturaOrganizacionalECM; 24 import br.com.centralit.api.model.EstruturaOrganizacionalECM;
@@ -56,6 +53,9 @@ import br.com.centralit.framework.util.UtilColecao; @@ -56,6 +53,9 @@ import br.com.centralit.framework.util.UtilColecao;
56 import br.com.centralit.framework.util.UtilDate; 53 import br.com.centralit.framework.util.UtilDate;
57 import br.com.centralit.framework.util.UtilObjeto; 54 import br.com.centralit.framework.util.UtilObjeto;
58 55
  56 +import com.googlecode.genericdao.search.ISearch;
  57 +import com.googlecode.genericdao.search.SearchResult;
  58 +
59 /** 59 /**
60 * <p> 60 * <p>
61 * <img src="http://centralit.com.br/images/logo_central.png"> 61 * <img src="http://centralit.com.br/images/logo_central.png">
@@ -168,7 +168,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl @@ -168,7 +168,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
168 168
169 try { 169 try {
170 170
171 - this.solrService.addProcesso(processo); 171 +// this.solrService.addProcesso(processo);
172 } catch (final Exception e) { 172 } catch (final Exception e) {
173 173
174 e.printStackTrace(); 174 e.printStackTrace();
@@ -232,7 +232,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl @@ -232,7 +232,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
232 this.montarEntidade(processo); 232 this.montarEntidade(processo);
233 233
234 try { 234 try {
235 - this.solrService.addProcesso(processo); 235 +// this.solrService.addProcesso(processo);
236 } catch (Exception e) { 236 } catch (Exception e) {
237 e.printStackTrace(); 237 e.printStackTrace();
238 } 238 }
@@ -1067,5 +1067,5 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl @@ -1067,5 +1067,5 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
1067 1067
1068 return this.processoDao.getProcessoByProtocolo(nup); 1068 return this.processoDao.getProcessoByProtocolo(nup);
1069 } 1069 }
1070 - 1070 +
1071 } 1071 }
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,11 +22,16 @@ import br.com.centralit.api.service.UnidadeProcessoService; @@ -21,11 +22,16 @@ 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;
28 31
  32 +import com.googlecode.genericdao.search.ISearch;
  33 +import com.googlecode.genericdao.search.SearchResult;
  34 +
29 /** 35 /**
30 * <p> 36 * <p>
31 * <img src="http://centralit.com.br/images/logo_central.png"> 37 * <img src="http://centralit.com.br/images/logo_central.png">
@@ -99,7 +105,7 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl&lt;UnidadeProces @@ -99,7 +105,7 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl&lt;UnidadeProces
99 /** Atributo historicoAtribuicaoProcessoService. */ 105 /** Atributo historicoAtribuicaoProcessoService. */
100 @Autowired 106 @Autowired
101 private HistoricoAtribuicaoProcessoService historicoAtribuicaoProcessoService; 107 private HistoricoAtribuicaoProcessoService historicoAtribuicaoProcessoService;
102 - 108 +
103 /** 109 /**
104 * Responsável pela criação de novas instâncias desta classe. 110 * Responsável pela criação de novas instâncias desta classe.
105 * 111 *
@@ -319,5 +325,18 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl&lt;UnidadeProces @@ -319,5 +325,18 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl&lt;UnidadeProces
319 325
320 return this.unidadeProcessoDao.obterPorUnidadeEProcesso(idProcesso, idUnidade); 326 return this.unidadeProcessoDao.obterPorUnidadeEProcesso(idProcesso, idUnidade);
321 } 327 }
322 -  
323 -} 328 +
  329 + /**
  330 + * Método responsável por listar processos através da unidade do usuário
  331 + * @author rogerio.cassimiro
  332 + * @param search
  333 + * @return <RT> SearchResult<RT>
  334 + */
  335 + @Override
  336 + public <RT> SearchResult<RT> searchAndCountPorUnidade(ISearch 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());
  340 + }
  341 +
  342 +}
324 \ No newline at end of file 343 \ No newline at end of file
cit-ecm-web/src/main/java/br/com/centralit/controller/ProcessoController.java
1 package br.com.centralit.controller; 1 package br.com.centralit.controller;
2 2
3 import org.springframework.beans.factory.annotation.Autowired; 3 import org.springframework.beans.factory.annotation.Autowired;
4 -import org.springframework.security.core.context.SecurityContextHolder;  
5 import org.springframework.stereotype.Controller; 4 import org.springframework.stereotype.Controller;
6 import org.springframework.web.bind.annotation.RequestBody; 5 import org.springframework.web.bind.annotation.RequestBody;
7 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.RequestMapping;
@@ -18,7 +17,6 @@ import br.com.centralit.framework.json.ResponseBodyWrapper; @@ -18,7 +17,6 @@ import br.com.centralit.framework.json.ResponseBodyWrapper;
18 import br.com.centralit.framework.json.Views; 17 import br.com.centralit.framework.json.Views;
19 import br.com.centralit.framework.json.Views.GenericView; 18 import br.com.centralit.framework.json.Views.GenericView;
20 import br.com.centralit.framework.model.SearchParams; 19 import br.com.centralit.framework.model.SearchParams;
21 -import br.com.centralit.framework.model.Usuario;  
22 import br.com.centralit.framework.util.UtilString; 20 import br.com.centralit.framework.util.UtilString;
23 import br.com.centralit.framework.view.GridVH; 21 import br.com.centralit.framework.view.GridVH;
24 import br.com.centralit.framework.view.ResultResponseVH; 22 import br.com.centralit.framework.view.ResultResponseVH;
@@ -26,6 +24,7 @@ import br.com.centralit.framework.view.ResultResponseVH; @@ -26,6 +24,7 @@ import br.com.centralit.framework.view.ResultResponseVH;
26 import com.googlecode.genericdao.search.Search; 24 import com.googlecode.genericdao.search.Search;
27 import com.googlecode.genericdao.search.SearchResult; 25 import com.googlecode.genericdao.search.SearchResult;
28 26
  27 +@SuppressWarnings("unchecked")
29 @Controller 28 @Controller
30 @RequestMapping("/rest/processo") 29 @RequestMapping("/rest/processo")
31 public class ProcessoController extends GenericController<Processo> { 30 public class ProcessoController extends GenericController<Processo> {
@@ -160,14 +159,17 @@ public class ProcessoController extends GenericController&lt;Processo&gt; { @@ -160,14 +159,17 @@ public class ProcessoController extends GenericController&lt;Processo&gt; {
160 search.setResultMode(Search.RESULT_MAP); 159 search.setResultMode(Search.RESULT_MAP);
161 160
162 SearchResult searchResult = null; 161 SearchResult searchResult = null;
163 -  
164 - if (!UtilString.isNullOrEmpty(searchParams.getNome()) && searchParams.getNome().equals("GRID_CLASSIFICACAO_PROCESSO_DOCUMENTO")) {  
165 -  
166 - searchResult = this.processoService.searchAndCountPorSigilo(search);  
167 -  
168 - } else {  
169 -  
170 - searchResult = genericService.searchAndCount(search); 162 +
  163 + String nomeGrid = UtilString.isNullOrEmpty(searchParams.getNome()) ? "" : searchParams.getNome();
  164 +
  165 + switch (nomeGrid) {
  166 + case Processo.GRID_CLASSIFICACAO_PROCESSO_DOCUMENTO:
  167 + searchResult = this.processoService.searchAndCountPorSigilo(search);
  168 + break;
  169 +
  170 + default:
  171 + searchResult = genericService.searchAndCount(search);
  172 + break;
171 } 173 }
172 174
173 // DETERMINA QUAIS OS CAMPOS VAI CONSULTAR 175 // DETERMINA QUAIS OS CAMPOS VAI CONSULTAR
cit-ecm-web/src/main/java/br/com/centralit/controller/UnidadeProcessoController.java
@@ -10,12 +10,20 @@ import org.springframework.web.bind.annotation.RequestMethod; @@ -10,12 +10,20 @@ import org.springframework.web.bind.annotation.RequestMethod;
10 import org.springframework.web.bind.annotation.RequestParam; 10 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.bind.annotation.ResponseBody; 11 import org.springframework.web.bind.annotation.ResponseBody;
12 12
  13 +import com.googlecode.genericdao.search.Search;
  14 +import com.googlecode.genericdao.search.SearchResult;
  15 +
  16 +import br.com.centralit.api.model.Processo;
13 import br.com.centralit.api.model.UnidadeProcesso; 17 import br.com.centralit.api.model.UnidadeProcesso;
14 import br.com.centralit.api.service.UnidadeProcessoService; 18 import br.com.centralit.api.service.UnidadeProcessoService;
15 import br.com.centralit.api.viewHelper.EnviarProcessoVH; 19 import br.com.centralit.api.viewHelper.EnviarProcessoVH;
16 import br.com.centralit.framework.controller.GenericController; 20 import br.com.centralit.framework.controller.GenericController;
  21 +import br.com.centralit.framework.dao.arquitetura.SearchSeven;
17 import br.com.centralit.framework.json.ResponseBodyWrapper; 22 import br.com.centralit.framework.json.ResponseBodyWrapper;
18 import br.com.centralit.framework.json.Views; 23 import br.com.centralit.framework.json.Views;
  24 +import br.com.centralit.framework.model.SearchParams;
  25 +import br.com.centralit.framework.util.UtilString;
  26 +import br.com.centralit.framework.view.GridVH;
19 import br.com.centralit.framework.view.ResultResponseVH; 27 import br.com.centralit.framework.view.ResultResponseVH;
20 28
21 /** 29 /**
@@ -50,6 +58,7 @@ import br.com.centralit.framework.view.ResultResponseVH; @@ -50,6 +58,7 @@ import br.com.centralit.framework.view.ResultResponseVH;
50 * @author rogerio.costa 58 * @author rogerio.costa
51 * 59 *
52 */ 60 */
  61 +@SuppressWarnings({"unchecked", "rawtypes"})
53 @Controller 62 @Controller
54 @RequestMapping("/rest/unidadeProcesso") 63 @RequestMapping("/rest/unidadeProcesso")
55 public class UnidadeProcessoController extends GenericController<UnidadeProcesso> { 64 public class UnidadeProcessoController extends GenericController<UnidadeProcesso> {
@@ -118,6 +127,42 @@ public class UnidadeProcessoController extends GenericController&lt;UnidadeProcesso @@ -118,6 +127,42 @@ public class UnidadeProcessoController extends GenericController&lt;UnidadeProcesso
118 return responseBody; 127 return responseBody;
119 } 128 }
120 129
  130 + @RequestMapping(value = "/getPage", method = RequestMethod.POST)
  131 + @ResponseBody
  132 + public ResponseBodyWrapper findGrid(@RequestBody SearchParams searchParams) {
  133 +
  134 + SearchSeven search;
  135 +
  136 + search = new SearchSeven(searchParams);
  137 +
  138 + search.setResultMode(Search.RESULT_MAP);
  139 +
  140 + SearchResult searchResult = null;
  141 +
  142 + String nomeGrid = UtilString.isNullOrEmpty(searchParams.getNome()) ? "" : searchParams.getNome();
  143 +
  144 + switch (nomeGrid) {
  145 + case Processo.GRID_PROCESSO_NA_UNIDADE:
  146 + searchResult = this.unidadeProcessoService.searchAndCountPorUnidade(search);
  147 + break;
  148 + default:
  149 + searchResult = genericService.searchAndCount(search);
  150 + break;
  151 + }
  152 +
  153 + // DETERMINA QUAIS OS CAMPOS VAI CONSULTAR
  154 + GridVH gridVH = new GridVH();
  155 + gridVH.setObjects(searchResult.getResult());
  156 + gridVH.addTotalItensTotalPages(searchParams, Long.valueOf(searchResult.getTotalCount()));
  157 +
  158 + ResultResponseVH resultResponseVH = new ResultResponseVH(gridVH);
  159 +
  160 + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, Views.UnidadeProcessoListView.class);
  161 +
  162 + return responseBody;
  163 + }
  164 +
  165 +
121 @Override 166 @Override
122 public Class<Views.EnviarProcessoView> getEditView() { 167 public Class<Views.EnviarProcessoView> getEditView() {
123 168
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
@@ -405,6 +405,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen @@ -405,6 +405,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
405 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOME_NOVO_SUPORTE ", "Nome do suporte", dominio, modulo)); 405 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOME_NOVO_SUPORTE ", "Nome do suporte", dominio, modulo));
406 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOVO_TIPO_SUPORTE ", "Novo tipo suporte de documento", dominio, modulo)); 406 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOVO_TIPO_SUPORTE ", "Novo tipo suporte de documento", dominio, modulo));
407 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TIPO_SUPORTE_DOCUMENTO ", "Tipo suporte de documento", dominio, modulo)); 407 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TIPO_SUPORTE_DOCUMENTO ", "Tipo suporte de documento", dominio, modulo));
  408 +
408 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TARJAS_ASSINATURA", "Tarjas de assinatura", dominio, modulo)); 409 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TARJAS_ASSINATURA", "Tarjas de assinatura", dominio, modulo));
409 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.LOGO_TARJA_ASSINATURA", "Logotipo da tarja de assinatura", dominio, modulo)); 410 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.LOGO_TARJA_ASSINATURA", "Logotipo da tarja de assinatura", dominio, modulo));
410 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DADOS_TARJA_ASSINATURA", "Dados da tarja de assinatura", dominio, modulo)); 411 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DADOS_TARJA_ASSINATURA", "Dados da tarja de assinatura", dominio, modulo));
@@ -516,6 +517,10 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen @@ -516,6 +517,10 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
516 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_CONCLUIDO_SUCESSO", "Processo concluído com sucesso!", dominio, modulo)); 517 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_CONCLUIDO_SUCESSO", "Processo concluído com sucesso!", dominio, modulo));
517 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.O_PROCESSO", "O processo", dominio, modulo)); 518 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.O_PROCESSO", "O processo", dominio, modulo));
518 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.SALVO_SUCESSO", "Foi salvo com sucesso!", dominio, modulo)); 519 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.SALVO_SUCESSO", "Foi salvo com sucesso!", dominio, modulo));
519 - 520 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.NAO_EXISTE_TAREFA_EXECUTAR", "Não existem tarefas a serem executadas!", dominio, modulo));
  521 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CONFIRMA_SOBRESTAMENTO_TAREFA", "Confirma o sobrestamento da tarefa?", dominio, modulo));
  522 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_SOBRESTADA_SUCESSO", "Tarefa sobrestada com sucesso!", dominio, modulo));
  523 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CONFIRMA_REATIVACAO_TAREFA", "Confirma reativação da tarefa?", dominio, modulo));
  524 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_REATIVADA", "Tarefa reativada com sucesso", dominio, modulo));
520 } 525 }
521 } 526 }
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoListUnidadeController.js
1 'use strict'; 1 'use strict';
2 2
3 -citApp.controller('GerenciarProcessoListUnidadeController', ['$scope', 'workflowFilterCriteriaService', 'appService', 'environmentService', 'FormBuilderRepository', 'FlowRepository', 'BusinessProcessRepository', 'RuntimeManagerRepository', 'DomainRepository', '$compile', '$translate', '$modal', '$injector', '$parse', '$rootScope', '$timeout', 'BusinessProcessCategoryRepository','ProcessoRepository',  
4 - function GerenciarProcessoListUnidadeController($scope, workflowFilterCriteriaService, appService, environmentService, FormBuilderRepository, FlowRepository, BusinessProcessRepository, RuntimeManagerRepository, DomainRepository, $compile, $translate, $modal, $injector, $parse, $rootScope, $timeout, BusinessProcessCategoryRepository, ProcessoRepository) {  
5 - $scope.compile = $compile; 3 +citApp.controller('GerenciarProcessoListUnidadeController', ['$scope', 'workflowFilterCriteriaService', 'appService', 'environmentService', 'FormBuilderRepository', 'FlowRepository', 'BusinessProcessRepository', 'RuntimeManagerRepository', 'DomainRepository', '$compile', '$translate', '$modal', '$injector', '$parse', '$rootScope', '$timeout', 'BusinessProcessCategoryRepository', 'GerenciarProcessoRepository', 'UnidadeProcessoRepository', 'DominioRepository', '$filter',
  4 + function GerenciarProcessoListUnidadeController($scope, workflowFilterCriteriaService, appService, environmentService, FormBuilderRepository, FlowRepository, BusinessProcessRepository, RuntimeManagerRepository, DomainRepository, $compile, $translate, $modal, $injector, $parse, $rootScope, $timeout, BusinessProcessCategoryRepository, GerenciarProcessoRepository, UnidadeProcessoRepository, DominioRepository, $filter) {
  5 +
6 $scope.$showAdvancedFilters = false; 6 $scope.$showAdvancedFilters = false;
7 - $scope.workflowFilterCriteriaService = workflowFilterCriteriaService; 7 + $scope.btnAction = false;
  8 +
  9 + $scope.headers = [ {
  10 + title : $translate.instant('ECM.LABEL.PROTOCOLO'),
  11 + value : 'processo.nup'
  12 + }, {
  13 + title : $translate.instant('ECM.LABEL.TIPOPROCESSO'),
  14 + value : 'processo.tipoProcesso.descricao'
  15 + }, {
  16 + title : $translate.instant('ECM.LABEL.ASSUNTO_COMPLEMENTAR'),
  17 + value : 'processo.assuntoComplementar'
  18 + }, {
  19 + title : $translate.instant('ECM.LABEL.ATRIBUIDOA'),
  20 + value : 'usuarioResponsavel.username'
  21 + }, {
  22 + title : $translate.instant('LABEL.SITUACAO'),
  23 + value : 'processo.status.descricao'
  24 + }, {
  25 + title : $translate.instant('ECM.LABEL.NIVEL_DE_ACESSO'),
  26 + value : 'processo.nivelAcesso.nivelAcesso.descricao'
  27 + }];
8 28
9 -  
10 - $scope.signalEventInput = new SignalEventInput("", "", "", "", "", 0);  
11 - $scope.totalPagesFluxo = 10;  
12 - $scope.totalItensFluxo = 0;  
13 -  
14 - $scope.totalPages = 10;  
15 - $scope.totalItens = 0;  
16 - $scope.limit = 10;  
17 - $scope.processos = [];  
18 - $scope.businessProcess = null;  
19 - $scope.indexProcessoNegocio = null;  
20 -  
21 - $scope.idPainelItem = 0;  
22 -  
23 - $scope.tabAtual = 0;  
24 -  
25 - $scope.tabs = [ {active: true}  
26 - ,{active: false}  
27 - ];  
28 -  
29 - // default criteria that will be sent to the server to request data from WorkItem  
30 $scope.filterCriteria = { 29 $scope.filterCriteria = {
  30 + nome : 'GRID_PROCESSO_NA_UNIDADE',
31 start : 1, 31 start : 1,
32 - sort : 'workItem.id', 32 + dir : 'asc',
  33 + sort : 'processo.nup',
33 limit : 10, 34 limit : 10,
34 - deadline : 1,  
35 - processDeadline : 1,  
36 - timeManagementStatus : "",  
37 - fields : [ 'workItem.id'],  
38 - filters : [{type: 'numeric', field: 'workItem.id'}  
39 - , {type: 'string', field: 'workItem.flowElement.name'}  
40 - , {type: 'numeric', field: 'workItem.processInstance.id'}  
41 - , {type: 'string', field: 'workItem.processInstance.businessProcess.description'}  
42 - , {type: 'string', field: 'workItem.processInstance.flowStatus.name'}] 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 : [
  37 + { type : 'string', field : 'processo.nup'},
  38 + { type : 'string', field : 'processo.tipoProcesso.descricao'},
  39 + { type : 'string', field : 'processo.assuntoComplementar'},
  40 + { type : 'string', field : 'usuarioResponsavel.username'},
  41 + { type : 'string', field : 'processo.status.descricao', listaDominio : []},
  42 + { type : 'string', field : 'processo.nivelAcesso.nivelAcesso.descricao'}
  43 + ]
43 }; 44 };
44 -  
45 - $scope.fetchBusinessProcess = function() {  
46 - $scope.setLoading(true);  
47 - $scope.categorias = [];  
48 - BusinessProcessCategoryRepository.findParents().then(function(result) {  
49 - for(var i = 0; i < result.length; i++) {  
50 - result[i].originalElement.sinalPositivo = result[i].originalElement.hasChildren || result[i].originalElement.hasProcesses;  
51 - $scope.categorias.push(result[i].originalElement);  
52 - }  
53 - $scope.setLoading(false);  
54 - }, function() {  
55 - $scope.setLoading(false); 45 +
  46 + function carregarDominiosStatusProcesso() {
  47 + DominioRepository.findAllDominio('statusProcesso').then(function(result) {
  48 + $scope.filterCriteria.filters[4].listaDominio = $filter('orderBy')(result, 'originalElement.descricao', true);
56 }); 49 });
57 }; 50 };
58 -  
59 - $scope.filterProcessos = {  
60 - start : 1,  
61 - dir : 'asc',  
62 - sort : 'name',  
63 - limit : 999999,  
64 - fields: ['id', 'category.name', 'description', 'flow.description'],  
65 - filters : [{type: 'numeric', field: 'category.id'}, {type: 'string', field: 'category.name'}, {type: 'string', field: 'description'}, {type: 'string', field: 'flow.description'}] 51 +
  52 + var filterCriteriaDefault = angular.copy($scope.filterCriteria);
  53 +
  54 + $scope.atualizarGrid = function() {
  55 + $scope.filterCriteria = angular.copy(filterCriteriaDefault);
  56 + carregarDominiosStatusProcesso();
  57 + $scope.filterResult();
66 }; 58 };
67 -  
68 - // Will be called when filtering the grid, will reset the page number to one  
69 - $scope.filterResult = function() {  
70 -  
71 - //Timeout adicionado para que os filtros de pesquisa funcionem  
72 - $timeout(function(){  
73 - $scope.filterCriteria.start = 1;  
74 - $scope.fetchResult().then(function() {  
75 - // The request fires correctly but sometimes the ui doesn't update,  
76 - // that's a fix  
77 - $scope.filterCriteria.start = 1;  
78 - });  
79 -  
80 - }); 59 +
  60 + $scope.abrirNovoProcesso = function() {
  61 + $scope.openWorkspaceIfNotOpen($translate.instant('ECM.LABEL.NOVOPROCESSO'), '/cit-ecm-web/html/processo/processoEdit.html', 'mod-orange');
  62 + $timeout(function() {
  63 + angular.element('#editProcessoEcm').scope().$showPageEditWorkspace(angular.element('#editProcessoEcm').scope().workspace);
  64 + $timeout(function(){
  65 + angular.element('#editProcessoEcm').scope().resetForm();
  66 + }, 1000);
  67 +
  68 + }, 300);
81 }; 69 };
82 -  
83 - // call back function that we passed to our custom directive sortBy, will be  
84 - // called when clicking on any field to sort  
85 - $scope.onSort = function(sortedBy, sortDir) {  
86 - $scope.filterCriteria.dir = sortDir;  
87 - $scope.filterCriteria.sort = sortedBy;  
88 - $scope.filterCriteria.start = 1;  
89 - $scope.fetchResult().then(function() {  
90 - // The request fires correctly but sometimes the ui doesn't update,  
91 - // that's a fix  
92 - $scope.filterCriteria.start = 1;  
93 - }); 70 +
  71 + $scope.obterTransclude = function() {
  72 + _getProcesso();
  73 + if($scope.modelSelecionado){
  74 + _getFilterCriteriaTarefa();
  75 + _fetchBusinessProcess();
  76 + }
94 }; 77 };
  78 +
  79 + function _getProcesso(){
  80 + $scope.modelSelecionado = {};
  81 + for(var count = 0; count < $scope.processos.length; count++){
  82 + if($scope.processos[count].$show) {
  83 + $scope.modelSelecionado = $scope.processos[count];
  84 + break;
  85 + }
  86 + }
95 87
96 - // RECUPERA LISTA DE TAREFAS E SETA RESULTADO NA GRID  
97 - $scope.fetchResult = function(page) {  
98 - $scope.setLoading(true);  
99 -  
100 - return BusinessProcessRepository.tasksByParam($scope.filterCriteria).then(function(result) {  
101 - var dataAtual = new Date();  
102 - 88 + };
  89 +
  90 + function _getFilterCriteriaTarefa(){
  91 + var filterService = workflowFilterCriteriaService.getDefaultFilterCriteria();
  92 + $scope.filterCriteriaBusinessProcess = {
  93 + start : 1,
  94 + sort : 'workItem.processInstance.id',
  95 + limit : 10,
  96 + deadline : 1,
  97 + processDeadline : 1,
  98 + timeManagementStatus : "",
  99 + fields : [ 'workItem.id', 'workItem.processInstance.id'],
  100 + filters : [{type: 'numeric', field: 'workItem.processInstance.id', value : $scope.modelSelecionado['processo.idProcessInstance']}
  101 + , {type: 'string', field: 'workItem.flowElement.name'}
  102 + , {type: 'string', field: 'workItem.processInstance.businessProcess.description'}
  103 + , {type: 'string', field: 'workItem.processInstance.flowStatus.name'}]
  104 + };
  105 + $scope.filterCriteriaBusinessProcess.username = filterService.username;
  106 + $scope.filterCriteriaBusinessProcess.groups = filterService.groups;
  107 + }
  108 +
  109 + function _fetchBusinessProcess() {
  110 + $scope.assignments = [];
  111 + $scope.btnAction = false;
  112 + $scope.workItem = null;
  113 + BusinessProcessRepository.tasksByParam($scope.filterCriteriaBusinessProcess).then(function(result) {
103 $scope.assignments = result.originalElement.objects; 114 $scope.assignments = result.originalElement.objects;
104 - angular.forEach($scope.assignments, function (assignment) {  
105 - assignment.classePrazoProcesso = new Date(assignment.processInstance.estimatedEndTimestamp) >= dataAtual ? 'green' : 'red';  
106 - assignment.classePrazoTarefa = new Date(assignment.estimatedEndTimestamp) >= dataAtual ? 'green' : 'red';  
107 -  
108 - ProcessoRepository.getProcessoByIdProcessInstance(assignment.processInstance.id).then(function(result) {  
109 - if( result){  
110 - assignment.processo = result.originalElement;  
111 - }  
112 - });  
113 -  
114 - });  
115 -  
116 - $scope.totalPages = result.originalElement.totalPages;  
117 - $scope.totalItens = result.originalElement.totalItens;  
118 - $scope.setLoading(false);  
119 - }, function() {  
120 - $scope.totalPages = 0;  
121 - $scope.totalItens = 0;  
122 - $scope.setLoading(false); 115 + if($scope.assignments.length > 0)
  116 + _recuperarPermissoes($scope.assignments[0].id);
  117 + else
  118 + $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido;
123 }); 119 });
124 }; 120 };
125 121
126 - $scope.filterSigad = function(){  
127 -  
128 - if($scope.processoSigad && $scope.processoSigad != ''){  
129 - ProcessoRepository.getProcessoByProtocolo($scope.processoSigad).then(function(result) {  
130 - if(result){  
131 - $scope.filterCriteria.filters[2].value = result.originalElement.idProcessInstance;  
132 - $timeout(function(){  
133 - $scope.filterResult();  
134 - });  
135 - }else{  
136 - $scope.filterCriteria.filters[2].value = null;  
137 - $scope.filterResult();  
138 - }  
139 - });  
140 - }else{  
141 - $scope.filterCriteria.filters[2].value = null;  
142 - $scope.filterResult();  
143 - } 122 + function _recuperarPermissoes(idAssignment){
  123 + BusinessProcessRepository.getPermissions({id: idAssignment}).then(function(result) {
  124 + $scope.workItem = result.originalElement;
  125 + vincularWorkItemAssignments();
  126 + $scope.btnAction = !(!$scope.workItem.execute && !$scope.workItem.suspend && !$scope.workItem.delegate && !$scope.workItem.restart && !$scope.workItem.visualize);
  127 + $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido;
  128 + $scope.modelSelecionado.workItem = $scope.workItem;
  129 + });
144 }; 130 };
145 131
146 - $scope.filterSigadProtocolo = function(){  
147 -  
148 - if($scope.sigadProtocolo && $scope.sigadProtocolo != ''){  
149 -  
150 - ProcessoRepository.getProcessoByProtocolo($scope.sigadProtocolo).then(function(result) {  
151 - if(result){  
152 - $scope.filterCriteria.filters[2].value = result.originalElement.idProcessInstance;  
153 - $timeout(function(){  
154 - $scope.filterResult();  
155 - });  
156 - }else{  
157 - $scope.filterCriteria.filters[2].value = null;  
158 - $scope.filterResult();  
159 - }  
160 -  
161 - });  
162 -  
163 - }else{  
164 - $scope.filterCriteria.filters[2].value = null;  
165 - $scope.filterResult();  
166 - } 132 + function vincularWorkItemAssignments(){
  133 + $scope.assignments.forEach(function(assignment){
  134 + assignment.workItem = $scope.workItem;
  135 + assignment.checked = false;
  136 + });
  137 + $scope.assignments[0].checked = true;
167 }; 138 };
168 139
169 - $scope.recuperarPermissoes = function(assignment){  
170 - assignment.workItem = {};  
171 - BusinessProcessRepository.getPermissions({id: assignment.id}).then(function(result) {  
172 - assignment.workItem = result.originalElement;  
173 - if (!assignment.workItem.execute && !assignment.workItem.delegate && !assignment.workItem.suspend && !assignment.workItem.restart && !assignment.workItem.visualize) {  
174 - $scope.fetchResult(); 140 + $scope.selectAssignment = function(assignmentSelect) {
  141 + $scope.assignments.forEach(function(assignment){
  142 + assignment.checked = false;
  143 + if(assignment.id == assignmentSelect.id){
  144 + assignment.checked = true;
175 } 145 }
176 }); 146 });
177 }; 147 };
178 -  
179 - $scope.init = function(filter) {  
180 - if (filter.businessProcessName) {  
181 - $scope.filterCriteria.businessProcessName = "";  
182 - var i = 0;  
183 - for (var i = 0; i < filter.businessProcessName.length; i++) {  
184 - if (i > 0) {  
185 - $scope.filterCriteria.businessProcessName += ",";  
186 - }  
187 - $scope.filterCriteria.businessProcessName += filter.businessProcessName[i]; 148 +
  149 + function _getAssignmentSelected() {
  150 + for(var pos = 0; pos < $scope.assignments.length; pos++){
  151 + if($scope.assignments[pos].checked){
  152 + $scope.modelSelecionado.workItem = $scope.assignments[pos];
  153 + break;
188 } 154 }
189 } 155 }
190 - $scope.filterCriteria.taskName = filter.taskName;  
191 - $scope.filterCriteria.username = filter.username;  
192 - $scope.filterCriteria.groups = filter.groups;  
193 }; 156 };
194 157
195 - $scope.executarTarefa = function(assignment){  
196 - $scope.task = assignment.workItem;  
197 -  
198 - var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/userTask.html';  
199 - if ($scope.task.flowElement.userInterface && $scope.task.flowElement.userInterface.executeCustomPage) {  
200 - pagina = $scope.task.flowElement.userInterface.URLCustomPage;  
201 - $scope.abrirPaginaTarefa(pagina);  
202 - }else if ($scope.task.flowElement.userInterface && $scope.task.flowElement.userInterface.resource && $scope.task.flowElement.userInterface.resourceName) {  
203 - FormBuilderRepository.getByName($scope.task.flowElement.userInterface.resourceName).then(function(result) {  
204 - pagina = '/cit-esi-web/forms/'+result.originalElement.path+'/'+result.originalElement.resource.name+"_task.html";  
205 - $scope.abrirPaginaTarefa(pagina);  
206 - });  
207 - }else{  
208 - $scope.abrirPaginaTarefa(pagina); 158 + $scope.executarTarefa = function(){
  159 + _getAssignmentSelected();
  160 + if($scope.workItem){
  161 + var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/userTask.html';
  162 + if ($scope.workItem.flowElement.userInterface && $scope.workItem.flowElement.userInterface.executeCustomPage) {
  163 + pagina = $scope.workItem.flowElement.userInterface.URLCustomPage;
  164 + _abrirPaginaTarefa(pagina);
  165 + }else if ($scope.workItem.flowElement.userInterface && $scope.workItem.flowElement.userInterface.resource && $scope.workItem.flowElement.userInterface.resourceName) {
  166 + FormBuilderRepository.getByName($scope.workItem.flowElement.userInterface.resourceName).then(function(result) {
  167 + pagina = '/cit-esi-web/forms/'+result.originalElement.path+'/'+result.originalElement.resource.name+"_task.html";
  168 + _abrirPaginaTarefa(pagina);
  169 + });
  170 + }else{
  171 + _abrirPaginaTarefa(pagina);
  172 + }
209 } 173 }
210 }; 174 };
211 -  
212 - $scope.abrirPaginaTarefa = function(pagina){ 175 +
  176 + function _abrirPaginaTarefa(pagina){
213 if (appService.existsWorkspace(pagina)) { 177 if (appService.existsWorkspace(pagina)) {
214 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_TAREFA')); 178 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_TAREFA'));
215 return ; 179 return ;
216 } 180 }
217 -  
218 - $scope.processInstance = $scope.task.processInstance; 181 + $scope.processInstance = $scope.modelSelecionado.workItem.processInstance;
219 $scope.processInstance.collapsed = true; 182 $scope.processInstance.collapsed = true;
220 $scope.processInstance.collapsedError = true; 183 $scope.processInstance.collapsedError = true;
221 -  
222 - $rootScope.task = $scope.task; 184 + $rootScope.task = $scope.workItem;
223 $rootScope.processInstance = $scope.processInstance; 185 $rootScope.processInstance = $scope.processInstance;
224 $rootScope.controllerScope = $scope; 186 $rootScope.controllerScope = $scope;
225 187
226 var nome = $scope.task.flowElement.description; 188 var nome = $scope.task.flowElement.description;
227 if (!nome || nome == '') 189 if (!nome || nome == '')
228 - nome = $scope.task.flowElement.name; 190 + nome = $scope.workItem.flowElement.name;
229 191
230 - $scope.addNewWorkspace($translate.instant('ESI.PERMISSAO.EXECUTAR')+" "+$translate.instant('ESI.TAREFA').toLowerCase()+" '"+nome+"'", pagina, true, 'mod-orange', $scope.task); 192 + $scope.addNewWorkspace($translate.instant('ESI.PERMISSAO.EXECUTAR')+" "+$translate.instant('ESI.TAREFA').toLowerCase()+" '"+nome+"'", pagina, true, 'mod-red-dark', $scope.workItem);
231 }; 193 };
232 -  
233 - $scope.delegarTarefa = function(assignment){  
234 - var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/userTaskDelegation.html';  
235 -  
236 - if (appService.existsWorkspace(pagina)) {  
237 - $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_DELEGACAO'));  
238 - return ;  
239 - }  
240 -  
241 - $scope.task = assignment.workItem;  
242 -  
243 - $scope.processInstance = $scope.task.processInstance;  
244 - $scope.processInstance.collapsed = true;  
245 - $scope.processInstance.collapsedError = true;  
246 -  
247 - $rootScope.task = $scope.task;  
248 - $rootScope.processInstance = $scope.processInstance;  
249 - $rootScope.controllerScope = $scope;  
250 -  
251 - var nome = $scope.task.flowElement.description;  
252 - if (!nome || nome == '')  
253 - nome = $scope.task.flowElement.name;  
254 -  
255 - $scope.addNewWorkspace($translate.instant('ESI.PERMISSAO.DELEGAR')+" "+$translate.instant('ESI.TAREFA').toLowerCase()+" '"+nome+"'", pagina, true, 'mod-orange', $scope.task);  
256 - };  
257 -  
258 - $scope.capturarTarefa = function(assignment){  
259 - $scope.$openModalConfirm({  
260 - message: $translate.instant('ESI.MSG.CONFIRMA_CAPTURA'),  
261 - callback: function () {  
262 - $scope.$modalConfirmInstance.dismiss('cancel');  
263 -  
264 - $scope.setLoading(true,$translate.instant('ESI.CAPTURANDO_TAREFA')+" "+assignment.workItem.flowElement.description);  
265 -  
266 - var param = new RuntimeEnvironmentInput("",[]);  
267 - param.workItemId = assignment.workItem.id;  
268 -  
269 - RuntimeManagerRepository.captureTask(param).then(function(result) {  
270 - $scope.setLoading(false);  
271 - $scope.fetchResult();  
272 - $scope.showAlert("success","ESI.MSG.TAREFA_CAPTURADA","");  
273 - });  
274 - }  
275 - });  
276 -  
277 - };  
278 -  
279 - $scope.suspenderProcesso = function(assignment){ 194 +
  195 + $scope.suspenderProcesso = function(){
  196 + _getAssignmentSelected();
280 $scope.$openModalConfirm({ 197 $scope.$openModalConfirm({
281 - message: $translate.instant('ESI.MSG.CONFIRMA_SUSPENSAO'), 198 + message: $translate.instant('ECM.MSG.CONFIRMA_SOBRESTAMENTO_TAREFA'),
282 callback: function () { 199 callback: function () {
283 $scope.$modalConfirmInstance.dismiss('cancel'); 200 $scope.$modalConfirmInstance.dismiss('cancel');
284 -  
285 $scope.setLoading(true); 201 $scope.setLoading(true);
286 - RuntimeManagerRepository.suspendProcessInstance(assignment.workItem.processInstance.id).then(function(result) { 202 + RuntimeManagerRepository.suspendProcessInstance($scope.modelSelecionado.workItem.processInstance.id).then(function(result) {
287 $scope.setLoading(false); 203 $scope.setLoading(false);
288 - $scope.fetchResult();  
289 - $scope.showAlert("success","ESI.MSG.PROCESSO_SUSPENSO",""); 204 + $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido;
  205 + $scope.modelSelecionado.$show = !$scope.modelSelecionado.$show;
  206 + $scope.showAlert("success","ECM.MSG.TAREFA_SOBRESTADA_SUCESSO","");
290 }); 207 });
291 } 208 }
292 }); 209 });
293 }; 210 };
294 -  
295 - $scope.reativarProcesso = function(assignment){ 211 +
  212 + $scope.reativarProcesso = function(){
  213 + _getAssignmentSelected();
296 $scope.$openModalConfirm({ 214 $scope.$openModalConfirm({
297 - message: $translate.instant('ESI.MSG.CONFIRMA_REATIVACAO'), 215 + message: $translate.instant('ECM.MSG.CONFIRMA_REATIVACAO_TAREFA'),
298 callback: function () { 216 callback: function () {
299 $scope.$modalConfirmInstance.dismiss('cancel'); 217 $scope.$modalConfirmInstance.dismiss('cancel');
300 -  
301 $scope.setLoading(true); 218 $scope.setLoading(true);
302 - RuntimeManagerRepository.restartProcessInstance(assignment.workItem.processInstance.id).then(function(result) { 219 + RuntimeManagerRepository.restartProcessInstance($scope.modelSelecionado.workItem.processInstance.id).then(function(result) {
303 $scope.setLoading(false); 220 $scope.setLoading(false);
304 - $scope.fetchResult();  
305 - $scope.showAlert("success","ESI.MSG.PROCESSO_REATIVADO",""); 221 + $scope.modelSelecionado.$expandido = !$scope.modelSelecionado.$expandido;
  222 + $scope.modelSelecionado.$show = !$scope.modelSelecionado.$show;
  223 + $scope.showAlert("success","ECM.MSG.TAREFA_REATIVADA","");
306 }); 224 });
307 } 225 }
308 }); 226 });
309 }; 227 };
310 228
311 - $scope.visualizarFluxo = function(assignment){ 229 + $scope.visualizarFluxo = function(){
  230 + _getAssignmentSelected();
312 var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/visualizacaoEsi.html'; 231 var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/visualizacaoEsi.html';
313 -  
314 if (appService.existsWorkspace(pagina)) { 232 if (appService.existsWorkspace(pagina)) {
315 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_VISUALIZACAO')); 233 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_VISUALIZACAO'));
316 return ; 234 return ;
317 } 235 }
318 -  
319 - $scope.tarefa = assignment.workItem; 236 + $scope.tarefa = $scope.modelSelecionado.workItem;
320 $scope.instancia = $scope.tarefa.processInstance; 237 $scope.instancia = $scope.tarefa.processInstance;
321 $rootScope.tarefa = $scope.tarefa; 238 $rootScope.tarefa = $scope.tarefa;
322 $rootScope.instancia = $scope.instancia; 239 $rootScope.instancia = $scope.instancia;
323 $rootScope.controllerScope = $scope; 240 $rootScope.controllerScope = $scope;
324 - $scope.addNewWorkspace(assignment.workItem.processInstance.businessProcess.description, pagina, true, 'mod-orange', $scope.tarefa); 241 + $scope.addNewWorkspace($scope.modelSelecionado.workItem.processInstance.businessProcess.description, pagina, true, 'mod-red-dark', $scope.tarefa);
325 }; 242 };
326 -  
327 - $scope.consultarHistorico = function(assignment){ 243 +
  244 + $scope.consultarHistorico = function(){
  245 + _getAssignmentSelected();
328 var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/consultaLog.html'; 246 var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/consultaLog.html';
329 -  
330 if (appService.existsWorkspace(pagina)) { 247 if (appService.existsWorkspace(pagina)) {
331 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_HISTORICO')); 248 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_HISTORICO'));
332 return ; 249 return ;
333 } 250 }
334 -  
335 - $scope.processInstance = assignment.workItem.processInstance; 251 + $scope.processInstance = $scope.modelSelecionado.workItem.processInstance;
336 $rootScope.processInstance = $scope.processInstance; 252 $rootScope.processInstance = $scope.processInstance;
337 $rootScope.controllerScope = $scope; 253 $rootScope.controllerScope = $scope;
338 -  
339 $scope.processInstance.collapsed = true; 254 $scope.processInstance.collapsed = true;
340 $scope.processInstance.collapsedError = true; 255 $scope.processInstance.collapsedError = true;
341 $scope.processInstance.instances = []; 256 $scope.processInstance.instances = [];
342 -  
343 - $scope.addNewWorkspace(assignment.workItem.processInstance.businessProcess.description, pagina, true, 'mod-orange', $scope.processInstance);  
344 - };  
345 -  
346 - $scope.retrieveAditionalHtml = function(assignment) {  
347 - assignment.$show = !assignment.$show;  
348 - if (!assignment.$show)  
349 - return;  
350 -  
351 - if (!assignment.workItem) {  
352 - BusinessProcessRepository.getPermissions({id: assignment.id}).then(function(result) {  
353 - assignment.workItem = result.originalElement;  
354 - $scope.showAditionalHtml(assignment.workItem);  
355 - });  
356 - }else{  
357 - $scope.showAditionalHtml(assignment.workItem);  
358 - }  
359 - };  
360 -  
361 - $scope.showAditionalHtml = function(workItem) {  
362 - var id = "divHtmlAdicional_" + $scope.idPainelItem + "_" + workItem.id;  
363 -  
364 - var el = document.getElementById(id);  
365 - if (!el || el.innerHTML != '')  
366 - return;  
367 -  
368 - var element = angular.element("#"+id);  
369 - environmentService.retrieveAditionalHtml($scope, workItem, element, $injector);  
370 - el.focus();  
371 - };  
372 -  
373 - $scope.signalEvent = function() {  
374 - $scope.setLoading(true);  
375 - RuntimeManagerRepository.signalEvent($scope.signalEventInput).then(function(result) {  
376 - $scope.setLoading(false);  
377 - });  
378 - };  
379 -  
380 - $scope.getAplicacaoFluxo = function(processoNegocio) {  
381 - return DomainRepository.getEnumDescription(processoNegocio['flow.flowApplication'], $scope.aplicacaoFluxo);  
382 - };  
383 -  
384 - $scope.getTimeManagementStatus = function(processInstance) {  
385 - if (processInstance && processInstance.timeManagementStatus) {  
386 - processInstance.backgroundColorTimeStatus = processInstance.timeManagementStatus === 'SUSPENDED' ? "red" : processInstance.timeManagementStatus === 'NOT_STARTED' ? "yellow-dark" : "green";  
387 - processInstance.textColorTimeStatus = processInstance.timeManagementStatus === 'NOT_STARTED' ? "black" : "white";  
388 - return DomainRepository.getEnumDescription(processInstance.timeManagementStatus, $scope.timeManagementStatus);  
389 - }else{  
390 - return "";  
391 - } 257 + $scope.addNewWorkspace($scope.modelSelecionado.workItem.processInstance.businessProcess.description, pagina, true, 'mod-red-dark', $scope.processInstance);
392 }; 258 };
393 259
394 -/* $scope.mostrarFilhos = function(categoriaSelecionada){  
395 -  
396 - // Valida se a estrutura possui filho  
397 - if(categoriaSelecionada.sinalPositivo) {  
398 - categoriaSelecionada.sinalPositivo = !categoriaSelecionada.sinalPositivo;  
399 -  
400 - $scope.setLoadingPesquisa(true);  
401 -  
402 - categoriaSelecionada.subCategories = [];  
403 -  
404 - var categoria = categoriaSelecionada.originalElement ? categoriaSelecionada.originalElement : categoriaSelecionada;  
405 -  
406 - $scope.scrollToCadastro('#categoria_'+categoria.id);  
407 -  
408 - $scope.recuperaProcessos(categoria);  
409 -  
410 - // busca os filhos da estrutura selecionada  
411 - BusinessProcessCategoryRepository.findChildrens(categoria.id).then(function(result) {  
412 - // Percorre as estruturas filhas setando a propriedade do sinal positivo/negativo e adiciona o filho na lista de filhos da estrutura selecionada  
413 - angular.forEach(result, function(categoriaFilha){  
414 - categoriaFilha.originalElement.sinalPositivo = categoriaFilha.originalElement.hasChildren || categoriaFilha.originalElement.hasProcesses;  
415 - categoriaSelecionada.subCategories.push(categoriaFilha.originalElement);  
416 - categoriaFilha.originalElement.subCategories = [];  
417 - //$scope.recuperaProcessos(categoriaFilha);  
418 - });  
419 - $scope.setLoadingPesquisa(false);  
420 - });  
421 -  
422 - } else {  
423 -  
424 - categoriaSelecionada.sinalPositivo = !categoriaSelecionada.sinalPositivo;  
425 -  
426 - categoriaSelecionada.subCategories = [];  
427 -  
428 - categoriaSelecionada.processos = [];  
429 - }  
430 -  
431 - };*/  
432 -  
433 - $scope.recuperaProcessos = function(categoria) {  
434 - $scope.setLoadingPesquisa(true);  
435 - categoria.processos = [];  
436 - $scope.filterProcessos.filters[0].value = categoria.id;  
437 - BusinessProcessRepository.getProcessesForStart($scope.usuarioLogado.username, $scope.filterProcessos).then(function(result) {  
438 - categoria.processos = result.originalElement.objects;  
439 - });  
440 - };  
441 -  
442 - $scope.fetchResult();  
443 -}]);  
444 -  
445 - 260 + carregarDominiosStatusProcesso();
  261 +}]);
446 \ No newline at end of file 262 \ No newline at end of file
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/gerenciarProcessoListUnidade.html
1 <meta charset="UTF-8"> 1 <meta charset="UTF-8">
2 -<div id="idGerenciamentoTarefas" class="page-content" ng-controller="GerenciarProcessoListUnidadeController" ng-init="init(workflowFilterCriteriaService.getSIGADFilterCriteria())"> 2 +<div id="idGerenciamentoTarefas" class="page-content" ng-controller="GerenciarProcessoListUnidadeController">
3 <div class="bar-buttons-action fixed"> 3 <div class="bar-buttons-action fixed">
4 <div class="row"> 4 <div class="row">
5 <div class="col-sm-9 text-left"> 5 <div class="col-sm-9 text-left">
6 - <button class="btn btn-clear" title="{{$translate.instant('LABEL.ATUALIZAR')}}" alt="{{$translate.instant('LABEL.ATUALIZAR')}}" ng-click="tabAtual == 0 ? fetchResult() : fetchBusinessProcess()"> 6 + <button class="btn btn-clear" title="{{$translate.instant('ECM.LABEL.NOVOPROCESSO')}}" alt="{{$translate.instant('ECM.LABEL.NOVOPROCESSO')}}"
  7 + ng-click="abrirNovoProcesso();">
  8 + <i class="fa fa-plus-circle yellow-dark"></i>
  9 + <translate>ECM.LABEL.NOVOPROCESSO</translate>
  10 + </button>
  11 + <button class="btn btn-clear" title="{{$translate.instant('LABEL.ATUALIZAR')}}" alt="{{$translate.instant('LABEL.ATUALIZAR')}}" ng-click="atualizarGrid();">
7 <i class="fa fa-refresh purple"></i> 12 <i class="fa fa-refresh purple"></i>
8 <translate>LABEL.ATUALIZAR</translate> 13 <translate>LABEL.ATUALIZAR</translate>
9 </button> 14 </button>
10 </div> 15 </div>
11 -  
12 <div class="col-sm-3 text-right"> 16 <div class="col-sm-3 text-right">
13 <favorito /> 17 <favorito />
14 -  
15 <help-button workspace="workspace" /> 18 <help-button workspace="workspace" />
16 </div> 19 </div>
17 - <!-- .col -->  
18 </div> 20 </div>
19 - <!-- .row -->  
20 </div> 21 </div>
21 - <!-- .bar-buttons-action -->  
22 22
23 <breadcrumb ng-workspace="workspace"></breadcrumb> 23 <breadcrumb ng-workspace="workspace"></breadcrumb>
24 - <div class="row">  
25 - <div class="col-sm-12">  
26 - <div class="table-container">  
27 - <div class="table-header clearfix">  
28 - <div class="table-header-right">  
29 - <button class="btn btn-primary btn-inline btn-white table-header-item" ng-click="$showAdvancedFilters = !$showAdvancedFilters">  
30 - <i class="fa fa-filter"></i>  
31 - <translate>LABEL.FILTROS_AVANCADOS</translate>  
32 - </button>  
33 - </div>  
34 - <!-- .table-header-right -->  
35 -  
36 - <div class="table-header-left">  
37 - <div class="form-group">  
38 - <div class="input-group">  
39 - <input type="text" class="form-control" placeholder="Digite o Protocolo" on-enter-blur ng-blur="filterSigadProtocolo()" ng-model="sigadProtocolo" /> <span  
40 - class="input-group-addon"> <i class="fa fa-search fa-lg"></i>  
41 - </span>  
42 - </div>  
43 - </div>  
44 - <!-- .form-group -->  
45 - </div>  
46 - <!-- .table-header-left -->  
47 - </div>  
48 - <!-- .table-header -->  
49 -  
50 - <table class="table table-striped table-bordered table-hover">  
51 - <thead>  
52 - <tr>  
53 - <th colspan="2" style="align: center; width: 30%;"><small><translate>ECM.LABEL.PROTOCOLO</translate></small></th>  
54 - <th colspan="2" style="width: 25%;"><small><translate>ESI.TAREFA</translate></small></th>  
55 - <th style="width: 25%;"><small><translate>LABEL.PROCESSO_NEGOCIO</translate></small></th>  
56 - <th class="text-center" style="width: 3%;"><small><translate>LABEL.ACOES</translate></small></th>  
57 - <th style="align: center; width: 17%;"><small><translate>PORTAL.LABEL.SITUACAO_INSTANCIA</translate></small></th>  
58 - </tr>  
59 - </thead>  
60 - <tfoot ng-show="totalItens > 0">  
61 - <tr>  
62 - <td colspan="9">  
63 - <div class="row">  
64 - <div class='col-sm-4 table-showing'>  
65 - <translate>LABEL.MOSTRANDO</translate>  
66 - {{filterCriteria.start}}  
67 - <translate>LABEL.ATE</translate>  
68 - {{filterCriteria.limit > totalItens ? totalItens : filterCriteria.limit}}  
69 - <translate>LABEL.DE</translate>  
70 - ({{totalItens}})  
71 - <translate>ESI.TAREFAS</translate>  
72 - .  
73 - </div>  
74 - <div class="col-sm-8 text-right">  
75 - <pagination rotate="true" total-items="totalItens" num-pages="totalPages" ng-model="filterCriteria.start" items-per-page="filterCriteria.limit" class="pagination-sm" boundary-links="true"  
76 - ng-change="fetchResult()"></pagination>  
77 - </div>  
78 - <!-- .col -->  
79 - </div> <!-- .row -->  
80 - </td>  
81 - </tr>  
82 - </tfoot>  
83 - <tbody>  
84 - <tr ng-show="$showAdvancedFilters">  
85 -  
86 - <td >  
87 - <div class="row">  
88 - <div class="col-sm-12">  
89 - <input class="form-control" ng-blur="filterSigad()" ng-model="processoSigad" type="text" />  
90 - </div>  
91 - <!-- .col -->  
92 - </div>  
93 - <!-- .row -->  
94 - </td>  
95 - <td>&nbsp;</td>  
96 - <td >  
97 - <div class="row">  
98 - <div class="col-sm-12">  
99 - <input class="form-control" ng-change="filterResult()" ng-model="filterCriteria.filters[0].value" type="text" integer />  
100 - </div>  
101 - <!-- .col -->  
102 - </div> <!-- .row -->  
103 - </td>  
104 -  
105 - <td>  
106 - <div class="row">  
107 - <div class="col-sm-12">  
108 - <input class="form-control" ng-change="filterResult()" ng-model="filterCriteria.filters[1].value" type="text" />  
109 - </div>  
110 - <!-- .col -->  
111 - </div> <!-- .row -->  
112 - </td>  
113 -  
114 -<!-- <td style="width: 5%;">  
115 - <div class="row">  
116 - <div class="col-sm-12">  
117 - <input class="form-control" ng-change="filterResult()" ng-model="filterCriteria.filters[2].value" type="text" integer />  
118 - </div>  
119 - .col  
120 - </div> .row  
121 - </td> -->  
122 -  
123 - <td>  
124 - <div class="row">  
125 - <div class="col-sm-12">  
126 - <input class="form-control" ng-change="filterResult()" ng-model="filterCriteria.filters[3].value" type="text" />  
127 - </div>  
128 - <!-- .col -->  
129 - </div> <!-- .row -->  
130 - </td>  
131 - <td>&nbsp;</td>  
132 -  
133 - <td>  
134 - <div class="row">  
135 - <div class="col-sm-12">  
136 - <input class="form-control" ng-change="filterResult()" ng-model="filterCriteria.filters[4].value" type="text" />  
137 - </div>  
138 - <!-- .col -->  
139 - </div> <!-- .row -->  
140 - </td>  
141 - </tr>  
142 -  
143 - <tr ng-repeat-start="assignment in assignments">  
144 - <td class="text-center" ><span class="small green">{{assignment.processo.nup}} <a href="javascript:;" class="blue" ng-click="retrieveAditionalHtml(assignment)">  
145 - <i class="fa fa-lg" ng-class="{'fa-caret-right': !assignment.$show, 'fa-caret-down': assignment.$show}"></i></a></span>  
146 - </td>  
147 - <td><span class="small green">{{assignment.processo.tipoProcesso.nome}}</span></td>  
148 - <td class="text-center"><span class="small green">{{assignment.id}}</span></td>  
149 - <td><span class="small green">{{assignment.flowElement.name}}</span></td>  
150 - <!-- <td class="text-center" ><span class="small green">{{assignment.processInstance.id}}</span></td> -->  
151 - <td><span class="small green">{{assignment.processInstance.businessProcess.description}}</span></td>  
152 - <td>  
153 - <div class="btn-group dropdown" role="group" dropdown>  
154 - <button title="{{$translate.instant('LABEL.ACOES')}}" alt="{{$translate.instant('LABEL.ACOES')}}" class="btn btn-clear" dropdown-toggle ng-click="recuperarPermissoes(assignment)">  
155 - <i class="fa fa-cog blue bigger-170"></i> <span class="fa fa-caret-down icon-on-right"></span>  
156 - </button>  
157 - <ul class="dropdown-menu-center dropdown-menu dropdown-caret" role="menu">  
158 - <li ng-show="!assignment.workItem || !assignment.workItem.id"><span class="small red">&nbsp;&nbsp;&nbsp;&nbsp;<b><translate>MSG.AGUARDE</translate></b></span></li>  
159 - <li ng-show="assignment.workItem.execute"><a href="javascript:;" ng-click="executarTarefa(assignment)"><i class="fa fa-play-circle-o green"></i> <translate>LABEL.EXECUTAR</translate></a>  
160 - </li>  
161 - <li ng-show="assignment.workItem.execute"><a href="javascript:;" ng-click="capturarTarefa(assignment)"><i class="fa fa-thumb-tack orange"></i> <translate>PORTAL.LABEL.CAPTURAR</translate></a>  
162 - </li>  
163 - <li ng-show="assignment.workItem.delegate"><a href="javascript:;" ng-click="delegarTarefa(assignment)"><i class="fa fa-users blue"></i> <translate>ESI.PERMISSAO.DELEGAR</translate></a>  
164 - </li>  
165 - <li ng-show="assignment.workItem.suspend"><a href="javascript:;" ng-click="suspenderProcesso(assignment)"><i class="fa fa-pause red"></i> <translate>ESI.PERMISSAO.SUSPENDER</translate></a>  
166 - </li>  
167 - <li ng-show="assignment.workItem.restart"><a href="javascript:;" ng-click="reativarProcesso(assignment)"><i class="fa fa-play green"></i> <translate>PORTAL.LABEL.PERMISSAO.REATIVAR</translate></a>  
168 - </li>  
169 - <li ng-show="assignment.workItem.visualize"><a href="javascript:;" ng-click="visualizarFluxo(assignment)"><i class="fa fa-search blue"></i> <translate>PORTAL.LABEL.VISUALIZAR_FLUXO</translate></a>  
170 - </li>  
171 - <li ng-show="assignment.workItem.visualize"><a href="javascript:;" ng-click="consultarHistorico(assignment)"><i class="fa fa-history yellow-dark"></i> <translate>ESI.LOG.CONSULTA_LOG</translate></a>  
172 - </li>  
173 - </ul>  
174 - </div>  
175 - </td>  
176 - <td><span ng-if="assignment.processInstance.flowStatus && assignment.processInstance.status != 'SUSPENDED'" class="badge black"  
177 - style="background-color: {{assignment.processInstance.flowStatus.backgroundColor"> <font color="{{assignment.processInstance.flowStatus.textColor}}"><b><translate>{{assignment.processInstance.flowStatus.name}}</translate></b></font>  
178 - </span> <span ng-if="assignment.processInstance.status == 'SUSPENDED'" class="badge black" style="background-color: red !important"> <font color="white"><b><translate>ESI.ENUMERADO.SITUACAO_INSTANCIA_SUSPENSA</translate></b></font>  
179 - </span></td>  
180 - </tr>  
181 -  
182 - <tr ng-show="assignment.$show" ng-repeat-end>  
183 - <td>&nbsp;</td>  
184 -  
185 - <td colspan="8">  
186 -  
187 - <div class="media media-card">  
188 -  
189 - <fieldset>  
190 - <legend style="font-size: 16px !important">  
191 - <b><translate>ESI.INFORMACOES_ADICIONAIS</translate></b>  
192 - </legend>  
193 -  
194 - <div class="row">  
195 - <div class="col-md-12">  
196 -  
197 - <label>  
198 - <div class="small bolder">  
199 - <translate>ECM.LABEL.ASSUNTO</translate>  
200 - </div> <span class="small green">{{assignment.processo.assunto.assunto}}</span>  
201 - </label>  
202 - </div>  
203 - </div>  
204 -  
205 - <div class="row">  
206 - <div class="col-md-12">  
207 - <label>  
208 - <div class="small bolder">  
209 - <translate>ECM.LABEL.ASSUNTOCOMPLEMENTAR</translate>  
210 - </div> <span class="small green">{{assignment.processo.assuntoComplementar}}</span>  
211 - </label>  
212 - </div>  
213 - </div>  
214 -  
215 - <div class="row">  
216 - <div class="col-md-12">  
217 - <label>  
218 - <div class="small bolder">  
219 - <translate>ECM.LABEL.NIVELACESSO</translate>  
220 - </div> <span class="label label-success" ng-show="assignment.processo.nivelAcesso.nivelAcesso.nome =='PUBLICO'">{{assignment.processo.nivelAcesso.nivelAcesso.descricao}}</span> <span  
221 - class="label label-warning" ng-show="assignment.processo.nivelAcesso.nivelAcesso.nome =='RESTRITO'">{{assignment.processo.nivelAcesso.nivelAcesso.descricao}}</span> <span  
222 - class="label label-danger" ng-show="assignment.processo.nivelAcesso.nivelAcesso.nome =='SIGILOSO'">{{assignment.processo.sigilo.descricao}}</span>  
223 -  
224 - </label>  
225 - </div>  
226 - </div>  
227 -  
228 - <div class="row" ng-show='assignment.processo.hipoteseLegal.nome'>  
229 - <div class="col-md-12">  
230 - <label>  
231 - <div class="small bolder">  
232 - <translate>ECM.LABEL.HIPOTESELEGAL</translate>  
233 - </div> <span class="small green">{{assignment.processo.hipoteseLegal.nome}}</span>  
234 - </label>  
235 - </div>  
236 - </div>  
237 -  
238 - <div class="row">  
239 -  
240 -  
241 - <div class='col-md-3'>  
242 - <label>  
243 - <div class="small bolder">  
244 - <translate>ECM.LABEL.DATACRIACAO</translate>  
245 - </div> <span class="small green">{{assignment.processo.dataCriacao | date: 'dd/MM/yyyy HH:mm:ss' }}</span>  
246 - </label>  
247 - </div>  
248 -  
249 - <div class='col-md-3'>  
250 - <label>  
251 - <div class="small bolder">  
252 - <translate>ECM.LABEL.DATAEDICAO</translate>  
253 - </div> <span class="small green">{{assignment.processo.dataEdicao | date: 'dd/MM/yyyy HH:mm:ss' }}</span>  
254 - </label>  
255 - </div>  
256 - </div>  
257 -  
258 -  
259 - </fieldset>  
260 -  
261 - </div> <!-- .media -->  
262 - </td>  
263 - </tr>  
264 - <tr ng-show="totalItens <= 0">  
265 - <td colspan="9"><strong><translate>MSG.NENHUM_REGISTRO_ENCONTRADO</translate></strong></td>  
266 - </tr>  
267 - </tbody>  
268 - </table>  
269 -  
270 - </div>  
271 - </div>  
272 - </div>  
273 - </tabset>  
274 -</div>  
275 -<!-- .table-container -->  
276 -</div>  
277 -<!-- .page-content -->  
278 \ No newline at end of file 24 \ No newline at end of file
  25 +
  26 + <list-view ng-lista="processos" ng-repository="UnidadeProcessoRepository" ng-headers="headers" ng-filter-criteria="filterCriteria" ng-item-selecionado="tarefa"
  27 + ng-exibir-coluna-selecao="false" transclude="tarefasPorProcesso.html" ng-custom-transclude="obterTransclude()" ng-model-parent="modelSelecionado">
  28 + <div ng-include src="'/cit-ecm-web/html/gerenciarProcesso/tarefasPorProcesso.html'"></div>
  29 + </list-view>
  30 +</div>
279 \ No newline at end of file 31 \ No newline at end of file
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/tarefasPorProcesso.html 0 → 100644
@@ -0,0 +1,95 @@ @@ -0,0 +1,95 @@
  1 +
  2 +<fieldset style="margin-left: 5%; width: 90%; margin-top: 10px;" ng-if="modelSelecionado.$expandido">
  3 +
  4 + <legend>
  5 + <div class="pull-left" style="font-size : 14px; !important">
  6 + {{modelSelecionado['processo.assunto']['assunto']}}
  7 + </div>
  8 + <div class="pull-right" style="font-size : 12px; !important">
  9 + <div>
  10 + <translate>LABEL.DATA_DE_CRIACAO</translate>: {{modelSelecionado['processo.dataCriacao'] | date : 'dd/MM/yyyy'}} &nbsp;&nbsp;
  11 + <translate>LABEL.DATA_RECEBIMENTO</translate>: {{modelSelecionado['processo.dataReferencia'] | date : 'dd/MM/yyyy'}}
  12 + </div>
  13 + </div>
  14 + </legend>
  15 +
  16 + <div class="row" style="margin-top: 6px; margin-bottom: -25px;">
  17 + <div class="panel panel-default">
  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"
  20 + ng-click="executarTarefa();" ng-if="modelSelecionado.workItem.processInstance.status != 'SUSPENDED'" >
  21 + <i class="fa fa-play-circle-o green"></i>
  22 + <translate>LABEL.EXECUTAR</translate>
  23 + </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="suspenderProcesso();" ng-if="modelSelecionado.workItem.processInstance.status != 'SUSPENDED'">
  26 + <i class="fa fa-pause red"></i>
  27 + <translate>ECM.LABEL.SOBRESTAR_SEM</translate>
  28 + </button>
  29 + <button class="btn btn-clear" title="{{$translate.instant('LABEL.REATIVAR')}}" alt="{{$translate.instant('LABEL.REATIVAR')}}" type="button"
  30 + ng-click="reativarProcesso();" ng-if="modelSelecionado.workItem.processInstance.status == 'SUSPENDED'">
  31 + <i class="fa fa-play green"></i>
  32 + <translate>LABEL.REATIVAR</translate>
  33 + </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="visualizarFluxo();" >
  36 + <i class="fa fa-search blue"></i>
  37 + <translate>PORTAL.LABEL.VISUALIZAR_FLUXO</translate>
  38 + </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="consultarHistorico();" >
  41 + <i class="fa fa-history yellow-dark"></i>
  42 + <translate>ESI.LOG.CONSULTA_LOG</translate>
  43 + </button>
  44 + </div>
  45 + <div class="panel-body">
  46 +
  47 + <table class="table table-striped table-bordered table-hover" style="width: 100%; margin-left: 0%; margin-right: 1%; margin-bottom: 1%; margin-top: 1%">
  48 + <thead>
  49 + <tr>
  50 + <th style="width: 5%;"></th>
  51 + <th colspan="2" style="width: 60%;"><small><translate>ESI.TAREFA</translate></small></th>
  52 + <th style="align:center;"><small><translate>ECM.LABEL.SITUACAO_INSTANCIA_TAREFA</translate></small></th>
  53 + </tr>
  54 + </thead>
  55 + <tbody>
  56 + <tr ng-repeat="assignment in assignments">
  57 + <td class="text-center" style="width: 5%;">
  58 + <input type="radio" id="{{assignment.id}}" name="assignments" ng-checked="assignment.checked === true" ng-click="selectAssignment(assignment);" />
  59 + </td>
  60 + <td class="text-center" style="width: 5%;">
  61 + <span class="small green" >{{assignment.id}}</span>
  62 + </td>
  63 + <td>
  64 + <span class="small green">{{assignment.flowElement.name}}</span>
  65 + </td>
  66 + <td>
  67 + <label ng-show="assignment.workItem.processInstance.status != 'SUSPENDED' && assignment.workItem.processInstance.flowStatus">
  68 + <span class="small badge black" style="background-color: {{assignment.workItem.processInstance.flowStatus.backgroundColor}} !important">
  69 + <b><font color="{{assignment.workItem.processInstance.flowStatus.textColor}}">
  70 + <translate>{{assignment.workItem.processInstance.flowStatus.name}}</translate>
  71 + </b></font>
  72 + </span>
  73 + </label>
  74 + <label ng-show="assignment.workItem.processInstance.status == 'SUSPENDED'">
  75 + <span class="small badge black" style="background-color: red !important">
  76 + <b><font color="white">
  77 + <translate>ECM.LABEL.SOBRESTADA</translate>
  78 + </b></font>
  79 + </span>
  80 + </label>
  81 + </td>
  82 + </tr>
  83 + <tr ng-show="assignments <= 0">
  84 + <td colspan="{{modelSelecionado.colspanTransclude}}">
  85 + <strong><translate>ECM.MSG.NAO_EXISTE_TAREFA_EXECUTAR</translate></strong>
  86 + </td>
  87 + </tr>
  88 + </tbody>
  89 + </table>
  90 +
  91 + </div>
  92 + </div>
  93 + </div>
  94 +
  95 +</fieldset>
0 \ No newline at end of file 96 \ No newline at end of file