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 155 * @return <RT> SearchResult<RT>
156 156 */
157 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 2  
3 3 import java.util.Collection;
4 4  
  5 +import com.googlecode.genericdao.search.ISearch;
  6 +import com.googlecode.genericdao.search.SearchResult;
  7 +
5 8 import br.com.centralit.api.model.Processo;
6 9 import br.com.centralit.api.model.UnidadeProcesso;
7 10 import br.com.centralit.framework.dao.arquitetura.CitGenericDAO;
  11 +import br.com.centralit.framework.model.Usuario;
8 12  
9 13 /**
10 14 * <p>
... ... @@ -114,5 +118,15 @@ public interface UnidadeProcessoDao extends CitGenericDAO {
114 118 * @return UnidadeProcesso
115 119 */
116 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 211  
212 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 2  
3 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 8 import org.springframework.stereotype.Repository;
6 9  
7 10 import br.com.centralit.api.dao.UnidadeProcessoDao;
8 11 import br.com.centralit.api.model.Processo;
  12 +import br.com.centralit.api.model.SigiloPrivilegio;
9 13 import br.com.centralit.api.model.UnidadeProcesso;
10 14 import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl;
11 15 import br.com.centralit.framework.dao.arquitetura.SearchSeven;
  16 +import br.com.centralit.framework.model.Usuario;
12 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 24 * <p>
16 25 * <img src="http://centralit.com.br/images/logo_central.png">
... ... @@ -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 109 public static class TarjaAssinaturaListview extends Views.GenericView{};
110 110  
111 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 72  
73 73 /** Atributo tipoAcesso. */
74 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 76 private Dominio nivelAcesso;
77 77  
78 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 100 private Boolean permitirUsarComoClassificacao;
101 101  
102 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 104 private String assunto;
105 105  
106 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 69 @JsonIgnoreProperties({ "sugestao", "assuntoPlanoClassificacao" })
70 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 76 /** Atributo serialVersionUID. */
73 77 private static final long serialVersionUID = -6167513900417461697L;
74 78  
75 79 /** Atributo id. */
76 80 @Id
77 81 @GeneratedValue(strategy = GenerationType.AUTO)
78   - @JsonView({ Views.GenericView.class })
  82 + @JsonView({ Views.GenericView.class, Views.UnidadeProcessoListView.class })
79 83 private Long id;
80 84  
81 85 /** Atributo assuntoComplementar. */
82   - @JsonView({ Views.ProcessoList.class })
  86 + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class })
83 87 private String assuntoComplementar;
84 88  
85 89 /** Atributo dataReferencia. */
86 90 @Temporal(TemporalType.TIMESTAMP)
87 91 @JsonSerialize(using = JsonCalendarSimpleDateSerializer.class)
88 92 @JsonDeserialize(using = JsonCalendarSimpleDateDeserializer.class)
  93 + @JsonView({Views.UnidadeProcessoListView.class})
89 94 private Calendar dataReferencia;
90 95  
91 96 /** Atributo dataConclusao. */
... ... @@ -95,7 +100,7 @@ public class Processo extends PersistentObjectUnidade {
95 100 private Calendar dataConclusao;
96 101  
97 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 104 private String nup;
100 105  
101 106 /** Atributo nome. */
... ... @@ -105,36 +110,17 @@ public class Processo extends PersistentObjectUnidade {
105 110 @Transient
106 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 117 /** Atributo observacaoGeral. */
120 118 @JsonView({ Views.ProcessoEdit.class })
121 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 121 /** Atributo status. */
136 122 @ManyToOne(fetch = FetchType.LAZY)
137   - @JsonView({ Views.ProcessoEdit.class })
  123 + @JsonView({ Views.ProcessoEdit.class, Views.UnidadeProcessoListView.class })
138 124 private Dominio status;
139 125  
140 126 /** Atributo tramitarDocumento. */
... ... @@ -143,18 +129,25 @@ public class Processo extends PersistentObjectUnidade {
143 129 private TramitarDocumento tramitarDocumento;
144 130  
145 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 133 @ManyToOne(fetch = FetchType.LAZY)
148 134 private TipoProcesso tipoProcesso;
149 135  
150 136 /** Atributo assunto. */
151 137 @ManyToOne(fetch = FetchType.LAZY)
152   - @JsonView({ Views.ProcessoList.class })
  138 + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class })
153 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 148 /** Atributo nivelAcesso. */
156 149 @ManyToOne(fetch = FetchType.LAZY)
157   - @JsonView({ Views.ProcessoList.class })
  150 + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class })
158 151 private NivelAcessoTipoProcesso nivelAcesso;
159 152  
160 153 @ManyToOne(fetch = FetchType.LAZY)
... ... @@ -215,6 +208,17 @@ public class Processo extends PersistentObjectUnidade {
215 208 @JoinTable(name = "processo_anexado", joinColumns = { @JoinColumn(name = "processo_id") }, inverseJoinColumns = { @JoinColumn(name = "processo_anexado_id") })
216 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 222 /** Atributo credenciais. */
219 223 @OneToMany(fetch = FetchType.LAZY, mappedBy = "processo", cascade = CascadeType.ALL)
220 224 private Collection<CredencialProcesso> credenciais;
... ... @@ -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 860 * Verifica se o processo foi tramitado. Levando em consideração a unidadeProcesso criada apartir da criação do processo.
861   - *
  861 + *
862 862 * @author maycon.silva
863   - *
  863 + *
864 864 * @return boolean
865 865 */
866   - /* @JsonView({ Views.ProcessoEdit.class }) */
  866 + /*@JsonView({ Views.ProcessoEdit.class })*/
867 867 public boolean isTramitado() {
868 868  
869 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 65  
66 66 /** Atributo tipoSigilo. */
67 67 @ManyToOne(fetch = FetchType.LAZY)
68   - @JsonView({ Views.GenericView.class })
  68 + @JsonView({ Views.GenericView.class})
69 69 private Dominio tipoSigilo;
70 70  
71 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 63 private Long id;
64 64  
65 65 /** Atributo descricao. */
66   - @JsonView({ ViewsEcm.TipoProcessoList.class })
  66 + @JsonView({ ViewsEcm.TipoProcessoList.class, Views.UnidadeProcessoListView.class })
67 67 private String descricao;
68 68  
69 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 72  
73 73 /** Atributo processo. */
74 74 @ManyToOne(fetch = FetchType.LAZY)
75   - @JsonView({ Views.EnviarProcessoView.class })
  75 + @JsonView({ Views.EnviarProcessoView.class, Views.UnidadeProcessoListView.class })
76 76 private Processo processo;
77 77  
78 78 /** Atributo grupo. */
79 79 @ManyToOne(fetch = FetchType.LAZY)
80   - @JsonView({ Views.EnviarProcessoView.class })
  80 + @JsonView({ Views.EnviarProcessoView.class})
81 81 private Unidade unidade;
82 82  
83 83 /** Atributo usuarioResponsavel. */
84 84 @ManyToOne(fetch = FetchType.LAZY)
85   - @JsonView({ Views.EnviarProcessoView.class })
  85 + @JsonView({ Views.EnviarProcessoView.class, Views.UnidadeProcessoListView.class })
86 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 7 import br.com.centralit.api.viewHelper.EnviarProcessoVH;
8 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 14 * <p>
12 15 * <img src="http://centralit.com.br/images/logo_central.png">
... ... @@ -169,4 +172,12 @@ public interface UnidadeProcessoService extends GenericService&lt;UnidadeProcesso,
169 172 */
170 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 19 import org.springframework.stereotype.Service;
20 20 import org.springframework.validation.Validator;
21 21  
22   -import com.googlecode.genericdao.search.ISearch;
23   -import com.googlecode.genericdao.search.SearchResult;
24   -
25 22 import br.com.centralit.api.dao.ProcessoDao;
26 23 import br.com.centralit.api.model.DocumentoGed;
27 24 import br.com.centralit.api.model.EstruturaOrganizacionalECM;
... ... @@ -56,6 +53,9 @@ import br.com.centralit.framework.util.UtilColecao;
56 53 import br.com.centralit.framework.util.UtilDate;
57 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 60 * <p>
61 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 168  
169 169 try {
170 170  
171   - this.solrService.addProcesso(processo);
  171 +// this.solrService.addProcesso(processo);
172 172 } catch (final Exception e) {
173 173  
174 174 e.printStackTrace();
... ... @@ -232,7 +232,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
232 232 this.montarEntidade(processo);
233 233  
234 234 try {
235   - this.solrService.addProcesso(processo);
  235 +// this.solrService.addProcesso(processo);
236 236 } catch (Exception e) {
237 237 e.printStackTrace();
238 238 }
... ... @@ -1067,5 +1067,5 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
1067 1067  
1068 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 5 import java.util.List;
6 6  
7 7 import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.security.core.context.SecurityContextHolder;
8 9 import org.springframework.stereotype.Service;
9 10  
10 11 import br.com.centralit.api.dao.UnidadeProcessoDao;
... ... @@ -21,11 +22,16 @@ import br.com.centralit.api.service.UnidadeProcessoService;
21 22 import br.com.centralit.api.service.UnidadeService;
22 23 import br.com.centralit.api.service.UsuarioService;
23 24 import br.com.centralit.api.viewHelper.EnviarProcessoVH;
  25 +import br.com.centralit.framework.model.Dominio;
24 26 import br.com.centralit.framework.model.Unidade;
  27 +import br.com.centralit.framework.model.Usuario;
25 28 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
26 29 import br.com.centralit.framework.util.UtilColecao;
27 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 36 * <p>
31 37 * <img src="http://centralit.com.br/images/logo_central.png">
... ... @@ -99,7 +105,7 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl&lt;UnidadeProces
99 105 /** Atributo historicoAtribuicaoProcessoService. */
100 106 @Autowired
101 107 private HistoricoAtribuicaoProcessoService historicoAtribuicaoProcessoService;
102   -
  108 +
103 109 /**
104 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 325  
320 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 343 \ No newline at end of file
... ...
cit-ecm-web/src/main/java/br/com/centralit/controller/ProcessoController.java
1 1 package br.com.centralit.controller;
2 2  
3 3 import org.springframework.beans.factory.annotation.Autowired;
4   -import org.springframework.security.core.context.SecurityContextHolder;
5 4 import org.springframework.stereotype.Controller;
6 5 import org.springframework.web.bind.annotation.RequestBody;
7 6 import org.springframework.web.bind.annotation.RequestMapping;
... ... @@ -18,7 +17,6 @@ import br.com.centralit.framework.json.ResponseBodyWrapper;
18 17 import br.com.centralit.framework.json.Views;
19 18 import br.com.centralit.framework.json.Views.GenericView;
20 19 import br.com.centralit.framework.model.SearchParams;
21   -import br.com.centralit.framework.model.Usuario;
22 20 import br.com.centralit.framework.util.UtilString;
23 21 import br.com.centralit.framework.view.GridVH;
24 22 import br.com.centralit.framework.view.ResultResponseVH;
... ... @@ -26,6 +24,7 @@ import br.com.centralit.framework.view.ResultResponseVH;
26 24 import com.googlecode.genericdao.search.Search;
27 25 import com.googlecode.genericdao.search.SearchResult;
28 26  
  27 +@SuppressWarnings("unchecked")
29 28 @Controller
30 29 @RequestMapping("/rest/processo")
31 30 public class ProcessoController extends GenericController<Processo> {
... ... @@ -160,14 +159,17 @@ public class ProcessoController extends GenericController&lt;Processo&gt; {
160 159 search.setResultMode(Search.RESULT_MAP);
161 160  
162 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 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 10 import org.springframework.web.bind.annotation.RequestParam;
11 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 17 import br.com.centralit.api.model.UnidadeProcesso;
14 18 import br.com.centralit.api.service.UnidadeProcessoService;
15 19 import br.com.centralit.api.viewHelper.EnviarProcessoVH;
16 20 import br.com.centralit.framework.controller.GenericController;
  21 +import br.com.centralit.framework.dao.arquitetura.SearchSeven;
17 22 import br.com.centralit.framework.json.ResponseBodyWrapper;
18 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 27 import br.com.centralit.framework.view.ResultResponseVH;
20 28  
21 29 /**
... ... @@ -50,6 +58,7 @@ import br.com.centralit.framework.view.ResultResponseVH;
50 58 * @author rogerio.costa
51 59 *
52 60 */
  61 +@SuppressWarnings({"unchecked", "rawtypes"})
53 62 @Controller
54 63 @RequestMapping("/rest/unidadeProcesso")
55 64 public class UnidadeProcessoController extends GenericController<UnidadeProcesso> {
... ... @@ -118,6 +127,42 @@ public class UnidadeProcessoController extends GenericController&lt;UnidadeProcesso
118 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 166 @Override
122 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 405 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOME_NOVO_SUPORTE ", "Nome do suporte", dominio, modulo));
406 406 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOVO_TIPO_SUPORTE ", "Novo tipo suporte de documento", dominio, modulo));
407 407 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TIPO_SUPORTE_DOCUMENTO ", "Tipo suporte de documento", dominio, modulo));
  408 +
408 409 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TARJAS_ASSINATURA", "Tarjas de assinatura", dominio, modulo));
409 410 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.LOGO_TARJA_ASSINATURA", "Logotipo da tarja de assinatura", dominio, modulo));
410 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 517 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_CONCLUIDO_SUCESSO", "Processo concluído com sucesso!", dominio, modulo));
517 518 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.O_PROCESSO", "O processo", dominio, modulo));
518 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 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 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 29 $scope.filterCriteria = {
  30 + nome : 'GRID_PROCESSO_NA_UNIDADE',
31 31 start : 1,
32   - sort : 'workItem.id',
  32 + dir : 'asc',
  33 + sort : 'processo.nup',
33 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 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 177 if (appService.existsWorkspace(pagina)) {
214 178 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_TAREFA'));
215 179 return ;
216 180 }
217   -
218   - $scope.processInstance = $scope.task.processInstance;
  181 + $scope.processInstance = $scope.modelSelecionado.workItem.processInstance;
219 182 $scope.processInstance.collapsed = true;
220 183 $scope.processInstance.collapsedError = true;
221   -
222   - $rootScope.task = $scope.task;
  184 + $rootScope.task = $scope.workItem;
223 185 $rootScope.processInstance = $scope.processInstance;
224 186 $rootScope.controllerScope = $scope;
225 187  
226 188 var nome = $scope.task.flowElement.description;
227 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 197 $scope.$openModalConfirm({
281   - message: $translate.instant('ESI.MSG.CONFIRMA_SUSPENSAO'),
  198 + message: $translate.instant('ECM.MSG.CONFIRMA_SOBRESTAMENTO_TAREFA'),
282 199 callback: function () {
283 200 $scope.$modalConfirmInstance.dismiss('cancel');
284   -
285 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 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 214 $scope.$openModalConfirm({
297   - message: $translate.instant('ESI.MSG.CONFIRMA_REATIVACAO'),
  215 + message: $translate.instant('ECM.MSG.CONFIRMA_REATIVACAO_TAREFA'),
298 216 callback: function () {
299 217 $scope.$modalConfirmInstance.dismiss('cancel');
300   -
301 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 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 231 var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/visualizacaoEsi.html';
313   -
314 232 if (appService.existsWorkspace(pagina)) {
315 233 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_VISUALIZACAO'));
316 234 return ;
317 235 }
318   -
319   - $scope.tarefa = assignment.workItem;
  236 + $scope.tarefa = $scope.modelSelecionado.workItem;
320 237 $scope.instancia = $scope.tarefa.processInstance;
321 238 $rootScope.tarefa = $scope.tarefa;
322 239 $rootScope.instancia = $scope.instancia;
323 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 246 var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/consultaLog.html';
329   -
330 247 if (appService.existsWorkspace(pagina)) {
331 248 $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_HISTORICO'));
332 249 return ;
333 250 }
334   -
335   - $scope.processInstance = assignment.workItem.processInstance;
  251 + $scope.processInstance = $scope.modelSelecionado.workItem.processInstance;
336 252 $rootScope.processInstance = $scope.processInstance;
337 253 $rootScope.controllerScope = $scope;
338   -
339 254 $scope.processInstance.collapsed = true;
340 255 $scope.processInstance.collapsedError = true;
341 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 262 \ No newline at end of file
... ...
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/gerenciarProcessoListUnidade.html
1 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 3 <div class="bar-buttons-action fixed">
4 4 <div class="row">
5 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 12 <i class="fa fa-refresh purple"></i>
8 13 <translate>LABEL.ATUALIZAR</translate>
9 14 </button>
10 15 </div>
11   -
12 16 <div class="col-sm-3 text-right">
13 17 <favorito />
14   -
15 18 <help-button workspace="workspace" />
16 19 </div>
17   - <!-- .col -->
18 20 </div>
19   - <!-- .row -->
20 21 </div>
21   - <!-- .bar-buttons-action -->
22 22  
23 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 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 31 \ No newline at end of file
... ...
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/tarefasPorProcesso.html 0 → 100644
... ... @@ -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 96 \ No newline at end of file
... ...