From ad86a75b4ad131aaf43078d3e2fafc2a5240b540 Mon Sep 17 00:00:00 2001 From: rogerio.costa Date: Fri, 29 Apr 2016 10:15:31 -0300 Subject: [PATCH] #268 Pesquisar Documentos e Processos --- cit-ecm-api/src/main/java/br/com/centralit/api/dao/UnidadeProcessoDao.java | 19 +++++++++++++++++++ cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/UnidadeProcessoDaoHibernate.java | 31 +++++++++++++++++++++++++++++++ cit-ecm-api/src/main/java/br/com/centralit/api/model/AnexoGed.java | 2 +- cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java | 24 ++++++++++++------------ cit-ecm-api/src/main/java/br/com/centralit/api/model/HipoteseLegal.java | 3 ++- cit-ecm-api/src/main/java/br/com/centralit/api/model/InteressadoProcesso.java | 2 +- cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoDocumento.java | 2 +- cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoProcesso.java | 2 +- cit-ecm-api/src/main/java/br/com/centralit/api/model/PlanoClassificacao.java | 6 ++++-- cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java | 25 +++++++++++++------------ cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoDocumento.java | 2 +- cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoProcesso.java | 4 ++-- cit-ecm-api/src/main/java/br/com/centralit/api/model/UnidadeProcesso.java | 4 ++-- cit-ecm-api/src/main/java/br/com/centralit/api/security/CustomWebSecurityExpresssionRoot.java | 22 ++++++++++++++++++++++ cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java | 36 ++++++++++++++++++++++++++++++++++++ cit-ecm-api/src/main/java/br/com/centralit/api/service/ProcessoService.java | 19 +++++++++++++++++++ cit-ecm-api/src/main/java/br/com/centralit/api/service/UnidadeProcessoService.java | 19 +++++++++++++++++++ cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/SolrServiceImpl.java | 7 +++++-- cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/UnidadeProcessoServiceImpl.java | 28 ++++++++++++++++++++++++++++ cit-ecm-api/src/main/resources/scripts/v1.0.0-alpha9/01-cit-ecm-1.0.0-ALFA-3-postgres.sql | 7 ++++++- cit-ecm-web/src/main/java/br/com/centralit/controller/CredencialProcessoController.java | 13 ++++++++++++- cit-ecm-web/src/main/java/br/com/centralit/controller/ProcessoController.java | 13 +++++++++++-- cit-ecm-web/src/main/java/br/com/centralit/controller/UnidadeProcessoController.java | 37 +++++++++++++++++++++++++++++++------ cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java | 2 ++ cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js | 31 +++++++++++++++++++++++++++---- cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/CredencialProcessoRepository.js | 8 ++++++-- cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/ProcessoRepository.js | 5 +++++ cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/UnidadeProcessoRepository.js | 5 +++++ cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeInformacaoProcesso.html | 8 +++++++- cit-ecm-web/src/main/webapp/html/pesquisa/pesquisa.html | 30 ++++++++++++++++++++++-------- 33 files changed, 644 insertions(+), 78 deletions(-) diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/UnidadeProcessoDao.java b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/UnidadeProcessoDao.java index 2760975..d2e4a32 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/UnidadeProcessoDao.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/UnidadeProcessoDao.java @@ -149,4 +149,23 @@ public interface UnidadeProcessoDao extends CitGenericDAO { */ Boolean isProcessoEnviado(Long idProcesso); + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por verificar se o processo pertence a unidade + * + * @author rogerio.costa + * + * @param idProcesso + * @param idUnidade + * @return boolean + */ + boolean isProcessoNaUnidadeUsuarioLogado(Long idProcesso, Long idUnidade); + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/UnidadeProcessoDaoHibernate.java b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/UnidadeProcessoDaoHibernate.java index e702058..7f1fb68 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/UnidadeProcessoDaoHibernate.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/UnidadeProcessoDaoHibernate.java @@ -321,4 +321,35 @@ public class UnidadeProcessoDaoHibernate extends CitGenericDAOImpl implements Un return detachedCriteriaPrivilegio; } + + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por verificar se o processo pertence a unidade + * + * @author rogerio.costa + * + * @param idProcesso + * @param idUnidade + * @return boolean + */ + public boolean isProcessoNaUnidadeUsuarioLogado(Long idProcesso, Long idUnidade) { + + Criteria criteria = this.newCriteria(); + + criteria.setProjection(Projections.id()); + criteria.add(Restrictions.eq("processo.id", idProcesso)); + criteria.add(Restrictions.eq("unidade.id", idUnidade)); + criteria.add(Restrictions.isNull("dataInativo")); + criteria.setMaxResults(1); + + return UtilObjeto.isReferencia(criteria.uniqueResult()); + + } } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/AnexoGed.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/AnexoGed.java index e4ab535..f3e42d1 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/AnexoGed.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/AnexoGed.java @@ -94,7 +94,7 @@ public class AnexoGed extends PersistentObjectUnidade implements DocumentoGedInt /** Atributo dominioTipoAnexo. */ @ManyToOne(fetch = FetchType.EAGER, optional = true) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, Views.processoVHview.class}) private Dominio dominioTipoAnexo; /** Atributo MultipartFile. */ diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java index 156eb81..eaf3308 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java @@ -79,11 +79,11 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { private Long id; /** Atributo assuntoComplementar. */ - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class, Views.processoVHview.class}) private String assuntoComplementar; /** Atributo numero. */ - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class, Views.processoVHview.class}) private String numero; /** Atributo idRaiz. */ @@ -95,23 +95,23 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { private Boolean novaVersao; /** Atributo versaoDocumento. */ - @JsonView({ Views.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ Views.DocumentoGedEdit.class, Views.ProcessoEdit.class, Views.processoVHview.class}) private Double versaoDocumento; /** Atributo cancelado. */ - @JsonView({ Views.ProcessoEdit.class }) + @JsonView({ Views.ProcessoEdit.class, Views.processoVHview.class}) private Boolean cancelado; @JsonView({ Views.DocumentoGedEdit.class }) private String localizacao; /** Atributo conteudo. */ - @JsonView({ ViewsEcm.DocumentoGedEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.processoVHview.class}) @Transient private String conteudo; /** Atributo tipoAssunto. */ - @JsonView({ Views.DocumentoGedEdit.class }) + @JsonView({ Views.DocumentoGedEdit.class, Views.processoVHview.class }) private String tipoAssunto; /** Atributo conteudoCriptografado. */ @@ -121,7 +121,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { private byte[] conteudoCriptografado; /** Atributo icon. */ - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class, Views.processoVHview.class}) private String icon; @Temporal(TemporalType.TIMESTAMP) @@ -143,7 +143,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { /** Atributo formaCriacao. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, Views.processoVHview.class}) private Dominio formaCriacao; /** Atributo status. */ @@ -177,12 +177,12 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { /** Atributo tipoDocumento. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, Views.processoVHview.class}) private TipoDocumento tipoDocumento; /** Atributo nivelAcesso. */ @ManyToOne(fetch = FetchType.EAGER) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class, Views.processoVHview.class }) private NivelAcessoTipoDocumento nivelAcesso; @ManyToOne(fetch = FetchType.EAGER) @@ -191,7 +191,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { /** Atributo sigilo. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class, Views.processoVHview.class}) private Sigilo sigilo; @ManyToOne(fetch = FetchType.LAZY) @@ -220,7 +220,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { /** Atributo anexo. */ @OneToOne(mappedBy = "documentoGed", fetch = FetchType.EAGER) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class, Views.processoVHview.class}) private AnexoGed anexo; /** Atributo versaoAnterior. */ diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/HipoteseLegal.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/HipoteseLegal.java index ac9743a..95cd3e0 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/HipoteseLegal.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/HipoteseLegal.java @@ -69,7 +69,8 @@ public class HipoteseLegal extends PersistentObjectAudit { private String descricao; /** Atributo nome. */ - @JsonView({ ViewsEcm.HipoteseLegalList.class, ViewsEcm.TipoProcessoList.class, ViewsEcm.TipoDocumentoEdit.class, ViewsEcm.NivelAcessoTipoDocumentoEdit.class, ViewsEcm.DocumentoGedEdit.class, ViewsEcm.ProcessoEdit.class, ViewsEcm.NivelAcessoTipoProcessoEdit.class }) + @JsonView({ ViewsEcm.HipoteseLegalList.class, ViewsEcm.TipoProcessoList.class, ViewsEcm.TipoDocumentoEdit.class, ViewsEcm.NivelAcessoTipoDocumentoEdit.class, ViewsEcm.DocumentoGedEdit.class, ViewsEcm.ProcessoEdit.class, ViewsEcm.NivelAcessoTipoProcessoEdit.class, + Views.processoVHview.class}) private String nome; /** Atributo fundamentacaoLegal. */ diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/InteressadoProcesso.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/InteressadoProcesso.java index 1c237da..1b67a03 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/InteressadoProcesso.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/InteressadoProcesso.java @@ -63,7 +63,7 @@ public class InteressadoProcesso extends PersistentObjectAudit { /** Atributo interessado. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ ViewsEcm.ProcessoEdit.class }) + @JsonView({ ViewsEcm.ProcessoEdit.class, Views.processoVHview.class}) private Pessoa interessado; /** diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoDocumento.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoDocumento.java index 723c264..0b4b30d 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoDocumento.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoDocumento.java @@ -64,7 +64,7 @@ public class NivelAcessoTipoDocumento extends PersistentObjectAudit { /** Atributo tipoAcesso. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ ViewsEcm.TipoDocumentoEdit.class, ViewsEcm.NivelAcessoTipoDocumentoEdit.class, ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.TipoDocumentoEdit.class, ViewsEcm.NivelAcessoTipoDocumentoEdit.class, ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, Views.processoVHview.class }) private Dominio nivelAcesso; /** Atributo tipoDocumento. */ diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoProcesso.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoProcesso.java index f21d772..e1c67e4 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoProcesso.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/NivelAcessoTipoProcesso.java @@ -72,7 +72,7 @@ public class NivelAcessoTipoProcesso extends PersistentObjectAudit { /** Atributo tipoAcesso. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ ViewsEcm.TipoProcessoEdit.class, ViewsEcm.NivelAcessoTipoProcessoEdit.class, Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) + @JsonView({ ViewsEcm.TipoProcessoEdit.class, ViewsEcm.NivelAcessoTipoProcessoEdit.class, Views.ProcessoList.class, Views.UnidadeProcessoListView.class, Views.processoVHview.class}) private Dominio nivelAcesso; @OneToMany(fetch = FetchType.LAZY, mappedBy = "nivelAcessoTipoProcesso", cascade = CascadeType.ALL) diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/PlanoClassificacao.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/PlanoClassificacao.java index 435af69..356ef10 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/PlanoClassificacao.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/PlanoClassificacao.java @@ -77,7 +77,8 @@ public class PlanoClassificacao extends PersistentObjectAuditOrganizacao impleme private String codigo; /** Atributo nome. */ - @JsonView({ ViewsEcm.PlanoClassificacaoListView.class, ViewsEcm.PlanoClassificacaoParent.class, ViewsEcm.PlanoClassificacaoAutocompleteRecursive.class, ViewsEcm.PlanoCLassificacaoAutoComplete.class, ViewsEcm.TipoDocumentoEdit.class, ViewsEcm.PlanoCLassificacaoAutoComplete.class, ViewsEcm.TipoProcessoEdit.class, ViewsEcm.DocumentoGedEdit.class, ViewsEcm.ProcessoEdit.class }) + @JsonView({ ViewsEcm.PlanoClassificacaoListView.class, ViewsEcm.PlanoClassificacaoParent.class, ViewsEcm.PlanoClassificacaoAutocompleteRecursive.class, ViewsEcm.PlanoCLassificacaoAutoComplete.class, ViewsEcm.TipoDocumentoEdit.class, ViewsEcm.PlanoCLassificacaoAutoComplete.class, ViewsEcm.TipoProcessoEdit.class, ViewsEcm.DocumentoGedEdit.class, ViewsEcm.ProcessoEdit.class, + Views.processoVHview.class}) private String nome; /** Atributo observacao. */ @@ -100,7 +101,8 @@ public class PlanoClassificacao extends PersistentObjectAuditOrganizacao impleme private Boolean permitirUsarComoClassificacao; @Transient - @JsonView({ ViewsEcm.PlanoCLassificacaoAutoComplete.class, ViewsEcm.TipoDocumentoEdit.class, ViewsEcm.TipoProcessoEdit.class, Views.ProcessoList.class, Views.DocumentoGedEdit.class, ViewsEcm.TipoDocumentoPlanoClassificacaoAutoCompleteView.class, Views.UnidadeProcessoListView.class }) + @JsonView({ ViewsEcm.PlanoCLassificacaoAutoComplete.class, ViewsEcm.TipoDocumentoEdit.class, ViewsEcm.TipoProcessoEdit.class, Views.ProcessoList.class, Views.DocumentoGedEdit.class, ViewsEcm.TipoDocumentoPlanoClassificacaoAutoCompleteView.class, Views.UnidadeProcessoListView.class, + Views.processoVHview.class}) private String assunto; /** Atributo tipoDestinacao. */ diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java index 097feed..42643aa 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/Processo.java @@ -80,11 +80,11 @@ public class Processo extends PersistentObjectUnidade { /** Atributo id. */ @Id @GeneratedValue(strategy = GenerationType.AUTO) - @JsonView({ Views.GenericView.class, Views.UnidadeProcessoListView.class }) + @JsonView({ Views.GenericView.class }) private Long id; /** Atributo assuntoComplementar. */ - @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class, Views.processoVHview.class }) private String assuntoComplementar; /** Atributo dataReferencia. */ @@ -101,7 +101,7 @@ public class Processo extends PersistentObjectUnidade { private Calendar dataConclusao; /** Atributo nup. */ - @JsonView({ Views.ProcessoList.class, Views.ProcessoRelacionadoList.class, Views.AnexarProcesso.class, Views.ProcessoAutoCompleteView.class, Views.UnidadeProcessoListView.class }) + @JsonView({ Views.ProcessoList.class, Views.ProcessoRelacionadoList.class, Views.AnexarProcesso.class, Views.ProcessoAutoCompleteView.class, Views.UnidadeProcessoListView.class, Views.processoVHview.class }) private String nup; /** Atributo nome. */ @@ -112,14 +112,14 @@ public class Processo extends PersistentObjectUnidade { private Long idTask; /** Atributo observacaoGeral. */ - @JsonView({ Views.ProcessoEdit.class }) + @JsonView({ Views.ProcessoEdit.class, Views.processoVHview.class }) private String observacaoGeral; @JsonView({ Views.ProcessoEdit.class }) private String tipoAssunto; /** Atributo idProcessInstance. */ - @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class, Views.processoVHview.class }) private Long idProcessInstance; /** Atributo aprovado. */ @@ -140,7 +140,7 @@ public class Processo extends PersistentObjectUnidade { /** Atributo status. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ Views.ProcessoEdit.class, Views.UnidadeProcessoListView.class }) + @JsonView({ Views.ProcessoEdit.class, Views.UnidadeProcessoListView.class, Views.processoVHview.class }) private Dominio status; /** Atributo tramitarDocumento. */ @@ -149,18 +149,18 @@ public class Processo extends PersistentObjectUnidade { private TramitarDocumento tramitarDocumento; /** Atributo tipoProcesso. */ - @JsonView({ Views.ProcessoList.class, Views.ProcessoRelacionadoList.class, Views.AnexarProcesso.class, Views.UnidadeProcessoListView.class }) + @JsonView({ Views.ProcessoList.class, Views.ProcessoRelacionadoList.class, Views.AnexarProcesso.class, Views.UnidadeProcessoListView.class, Views.processoVHview.class }) @ManyToOne(fetch = FetchType.LAZY) private TipoProcesso tipoProcesso; /** Atributo assunto. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class, Views.processoVHview.class }) private PlanoClassificacao assunto; /** Atributo nivelAcesso. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class }) + @JsonView({ Views.ProcessoList.class, Views.UnidadeProcessoListView.class, Views.processoVHview.class }) private NivelAcessoTipoProcesso nivelAcesso; @ManyToOne(fetch = FetchType.LAZY) @@ -174,7 +174,7 @@ public class Processo extends PersistentObjectUnidade { /** Atributo hipoteseLegal. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ Views.ProcessoEdit.class }) + @JsonView({ Views.ProcessoEdit.class, Views.processoVHview.class }) private HipoteseLegal hipoteseLegal; /** Atributo cienciaProcesso. */ @@ -199,12 +199,12 @@ public class Processo extends PersistentObjectUnidade { /** Atributo Interessados. */ @OneToMany(fetch = FetchType.LAZY, mappedBy = "processo", cascade = CascadeType.ALL, orphanRemoval = true) - @JsonView({ Views.ProcessoEdit.class }) + @JsonView({ Views.ProcessoEdit.class, Views.processoVHview.class }) private Collection interessados; /** Atributo documentos. */ @OneToMany(fetch = FetchType.LAZY, mappedBy = "processo", cascade = CascadeType.ALL) - @JsonView({ Views.ProcessoEdit.class }) + @JsonView({ Views.ProcessoEdit.class, Views.processoVHview.class}) private Collection documentos; /** Atributo relacionados. */ @@ -226,6 +226,7 @@ public class Processo extends PersistentObjectUnidade { private Collection credenciais; /** Atributo unidadesProcesso. */ + @JsonView({ Views.processoVHview.class }) @OneToMany(fetch = FetchType.LAZY, mappedBy = "processo", cascade = CascadeType.ALL) private Collection unidadesProcesso; diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoDocumento.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoDocumento.java index 2f228c8..3e90764 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoDocumento.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoDocumento.java @@ -67,7 +67,7 @@ public class TipoDocumento extends PersistentObjectAudit { private String descricao; /** Atributo nome. */ - @JsonView({ ViewsEcm.TipoDocumentoList.class, ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.TipoDocumentoList.class, ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, Views.processoVHview.class }) private String nome; /** Atributo formaCriacao. */ diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoProcesso.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoProcesso.java index 1a02942..1de8902 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoProcesso.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/TipoProcesso.java @@ -63,11 +63,11 @@ public class TipoProcesso extends PersistentObjectUnidade { private Long id; /** Atributo descricao. */ - @JsonView({ ViewsEcm.TipoProcessoList.class, Views.UnidadeProcessoListView.class }) + @JsonView({ ViewsEcm.TipoProcessoList.class, Views.UnidadeProcessoListView.class}) private String descricao; /** Atributo nome. */ - @JsonView({ ViewsEcm.TipoProcessoList.class, Views.ProcessoList.class, Views.ProcessoRelacionadoList.class }) + @JsonView({ ViewsEcm.TipoProcessoList.class, Views.ProcessoList.class, Views.ProcessoRelacionadoList.class, Views.processoVHview.class}) private String nome; /** Atributo nome. */ diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/model/UnidadeProcesso.java b/cit-ecm-api/src/main/java/br/com/centralit/api/model/UnidadeProcesso.java index 568c355..84a6f38 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/model/UnidadeProcesso.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/model/UnidadeProcesso.java @@ -77,12 +77,12 @@ public class UnidadeProcesso extends PersistentObjectAudit { /** Atributo grupo. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ Views.EnviarProcessoView.class}) + @JsonView({ Views.EnviarProcessoView.class, Views.processoVHview.class}) private Unidade unidade; /** Atributo usuarioResponsavel. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ Views.EnviarProcessoView.class, Views.UnidadeProcessoListView.class }) + @JsonView({ Views.EnviarProcessoView.class, Views.UnidadeProcessoListView.class, Views.processoVHview.class}) private Usuario usuarioResponsavel; /** diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/security/CustomWebSecurityExpresssionRoot.java b/cit-ecm-api/src/main/java/br/com/centralit/api/security/CustomWebSecurityExpresssionRoot.java index eafd839..a32ac74 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/security/CustomWebSecurityExpresssionRoot.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/security/CustomWebSecurityExpresssionRoot.java @@ -100,5 +100,27 @@ public class CustomWebSecurityExpresssionRoot extends WebSecurityExpressionRoot return this.credencialProcessoService.permiteRenunciar(idProcesso); } + + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por verificar se o usuario tem permissão para executar o processo + * + * @author rogerio.costa + * + * @return boolean + */ + public boolean permiteExecutar() { + + Long idProcesso = (Long) this.request.getSession().getAttribute("idProcesso"); + + return this.credencialProcessoService.permiteExecutar(idProcesso); + } } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java index 03a13ed..68fdcd7 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/CredencialProcessoService.java @@ -221,4 +221,40 @@ public interface CredencialProcessoService extends GenericService findGrupoPorSigilo(Sigilo sigilo); + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por validar acesso para o processo + * + * @author rogerio.costa + * + * @param idProcessInstance + */ + void validarAcessoPesquisa(Long idProcessInstance); + + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por verificar se o usuario tem permissão para executar o processo + * + * @author rogerio.costa + * + * @param idProcesso + * + * @return Boolean + */ + Boolean permiteExecutar(Long idProcesso); + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/ProcessoService.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/ProcessoService.java index 9c866f5..884bcec 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/ProcessoService.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/ProcessoService.java @@ -2,6 +2,7 @@ package br.com.centralit.api.service; import br.com.centralit.api.model.PlanoClassificacao; import br.com.centralit.api.model.Processo; +import br.com.centralit.api.viewHelper.ProcessoVH; import br.com.centralit.framework.service.arquitetura.GenericService; import com.googlecode.genericdao.search.ISearch; @@ -222,4 +223,22 @@ public interface ProcessoService extends GenericService { */ SearchResult searchAndCountPorSigilo(ISearch search); + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por obter o processo. + * + * @author rogerio.costa + * + * @param id + * @return + */ + ProcessoVH getProcessoView(Long id); + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/UnidadeProcessoService.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/UnidadeProcessoService.java index 5dc652b..a493942 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/UnidadeProcessoService.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/UnidadeProcessoService.java @@ -200,4 +200,23 @@ public interface UnidadeProcessoService extends GenericService + * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por verificar se o processo pertence a unidade + * + * @author rogerio.costa + * + * @param idProcesso + * @param idUnidade + * @return boolean + */ + boolean isProcessoNaUnidadeUsuarioLogado(Long idProcesso); + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java index 6a5ec7e..ce2e13c 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/CredencialProcessoServiceImpl.java @@ -5,6 +5,8 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; +import javax.servlet.http.HttpServletRequest; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,6 +21,7 @@ import br.com.centralit.api.service.GrupoService; import br.com.centralit.api.service.HistoricoCredencialProcessoService; import br.com.centralit.api.service.ProcessoService; import br.com.centralit.api.service.SigiloService; +import br.com.centralit.api.service.UnidadeProcessoService; import br.com.centralit.api.service.UsuarioService; import br.com.centralit.api.viewHelper.GrupoUsuarioVH; import br.com.centralit.api.viewHelper.HerancaSistemaVH; @@ -89,6 +92,14 @@ public class CredencialProcessoServiceImpl extends GenericServiceImpl + * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por verificar se o usuario tem permissão para executar o processo + * + * @author rogerio.costa + * + * @param idProcesso + * + * @return Boolean + */ + public Boolean permiteExecutar(Long idProcesso) { + + Processo processo = this.processoService.find(idProcesso); + + if (processo.getNivelAcesso().getNivelAcesso().getCodigo().equals(2L)) { + + return Boolean.TRUE; + + } + + return this.unidadeProcessoService.isProcessoNaUnidadeUsuarioLogado(idProcesso); + + } + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java index db230b3..4e313ff 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java @@ -42,6 +42,7 @@ import br.com.centralit.api.service.SolrService; import br.com.centralit.api.service.TemporalidadeService; import br.com.centralit.api.service.UnidadeProcessoService; import br.com.centralit.api.service.UnidadeService; +import br.com.centralit.api.viewHelper.ProcessoVH; import br.com.centralit.framework.esi.enumerated.VariableTypeEnum; import br.com.centralit.framework.esi.environment.EnvironmentOutput; import br.com.centralit.framework.esi.environment.EnvironmentVariable; @@ -95,6 +96,8 @@ import com.googlecode.genericdao.search.SearchResult; @Service("processoService") public class ProcessoServiceImpl extends GenericServiceImpl implements ProcessoService { + private static final String ECM_VALIDACAO_PERMISSAO_OPERACAO = "ECM.VALIDACAO.PERMISSAO_OPERACAO"; + /** Cosntante VALIDAR_OUTRAS_UNIDADES. */ private static final String VALIDAR_OUTRAS_UNIDADES = "ECM.VALIDACAO.VALIDAR_ALTERACAO_NIVEL_ACESSO_OUTRAS_UNIDADES"; @@ -176,12 +179,13 @@ public class ProcessoServiceImpl extends GenericServiceImpl impl this.gerarNUP(processo); } - this.saveSolr(processo); - // Verifica se o processo é sigiloso, verdadeiro sejá estarta o businessProcess, falso envia uma notificação para os grupos responsáeis. if (!UtilObjeto.isReferencia(processo.getSigilo())) { this.startBusinessProcess(processo); + + this.saveSolr(processo); + } else { this.enviarNotificacaoProcessoSigiloso(processo); @@ -275,10 +279,7 @@ public class ProcessoServiceImpl extends GenericServiceImpl impl try { - if (!UtilObjeto.isReferencia(processo.getSigilo())) { - - this.solrService.addProcesso(processo); - } + this.solrService.addProcesso(processo); } catch (final Exception e) { @@ -697,6 +698,72 @@ public class ProcessoServiceImpl extends GenericServiceImpl impl * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO *

* + * Método responsável por obter o processo. + * + * @author rogerio.costa + * + * @param id + * @return + */ + public ProcessoVH getProcessoView(Long id) { + + Processo processo = super.getReference(id); + + this.verificarPermissaoAcessoProcesso(id, processo); + + processo.setDocumentos(this.documentoGedService.findByIdProcessoUltimaVersao(id)); + + ProcessoVH processoVH = new ProcessoVH(); + + processoVH.setProcesso(processo); + + return processoVH; + } + + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por verificar se o usuario contem permissão para acessar o processo + * + * @author rogerio.costa + * + * @param id + * @param processo + */ + private void verificarPermissaoAcessoProcesso(Long id, Processo processo) { + + if (processo.getNivelAcesso().getNivelAcesso().getCodigo().equals(0L)) { + + if (!this.credencialProcessoService.contemPermissaoProcesso(id)) { + + throw new BusinessException(ECM_VALIDACAO_PERMISSAO_OPERACAO, CodigoErro.REGRA_NEGOCIO.getValue()); + } + + } else if (processo.getNivelAcesso().getNivelAcesso().getCodigo().equals(1L)) { + + if (!this.unidadeProcessoService.isProcessoNaUnidadeUsuarioLogado(id)) { + + throw new BusinessException(ECM_VALIDACAO_PERMISSAO_OPERACAO, CodigoErro.REGRA_NEGOCIO.getValue()); + + } + } + } + + /** + *

+ * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * * Método responsável por iniciar o gerenciamento do processo * * @author rogerio.costa diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/SolrServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/SolrServiceImpl.java index b6f12cf..ed3b9d3 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/SolrServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/SolrServiceImpl.java @@ -78,7 +78,7 @@ public class SolrServiceImpl implements SolrService { // Add some example docs SolrInputDocument processoDoc = new SolrInputDocument(); - processoDoc.setField("id", "proc_" + processo.getId()); + processoDoc.setField("id", processo.getId()); processoDoc.setField("nup", processo.getNup()); processoDoc.setField("objeto", "Processo"); processoDoc.setField("tipoProcesso", processo.getTipoProcesso().getNome()); @@ -93,6 +93,7 @@ public class SolrServiceImpl implements SolrService { processoDoc.setField("situacao", ""); processoDoc.setField("nivelAcesso", processo.getNivelAcesso().getNivelAcesso().getDescricao()); processoDoc.setField("formatoDocumento", ""); + processoDoc.setField("idProcessInstance", processo.getIdProcessInstance().toString()); solrClient.add(processoDoc); @@ -117,7 +118,7 @@ public class SolrServiceImpl implements SolrService { sb.append("doc_").append(documentoGed.getIdRaiz() != null ? documentoGed.getIdRaiz() : documentoGed.getId()); - documentoDoc.setField("id", "doc_" + sb.toString()); + documentoDoc.setField("id", sb.toString()); documentoDoc.setField("nup", documentoGed.getNumero()); documentoDoc.setField("objeto", "Documento"); documentoDoc.setField("tipoDocumento", documentoGed.getTipoDocumento().getNome()); @@ -131,6 +132,8 @@ public class SolrServiceImpl implements SolrService { documentoDoc.setField("situacao", ""); documentoDoc.setField("nivelAcesso", documentoGed.getNivelAcesso().getNivelAcesso().getDescricao()); documentoDoc.setField("formatoDocumento", documentoGed.getFormaCriacao().getDescricao()); + documentoDoc.setField("idProcessInstance", documentoGed.getProcesso().getIdProcessInstance().toString()); + documentoDoc.setField("idProcesso", documentoGed.getProcesso().getId().toString()); // verifica se o nivel de acesso é restrito if (!documentoGed.getNivelAcesso().getNivelAcesso().getCodigo().equals(1L)) { diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/UnidadeProcessoServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/UnidadeProcessoServiceImpl.java index e9b6ab6..a03edfb 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/UnidadeProcessoServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/UnidadeProcessoServiceImpl.java @@ -364,4 +364,32 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl + * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por verificar se o processo pertence a unidade + * + * @author rogerio.costa + * + * @param idProcesso + * @param idUnidade + * @return boolean + */ + public boolean isProcessoNaUnidadeUsuarioLogado(Long idProcesso) { + + if (UtilObjeto.isReferencia(this.getUsuario().getUnidade())) { + + return this.unidadeProcessoDao.isProcessoNaUnidadeUsuarioLogado(idProcesso, this.getUsuario().getUnidade().getId()); + } + + return Boolean.FALSE; + + } + } diff --git a/cit-ecm-api/src/main/resources/scripts/v1.0.0-alpha9/01-cit-ecm-1.0.0-ALFA-3-postgres.sql b/cit-ecm-api/src/main/resources/scripts/v1.0.0-alpha9/01-cit-ecm-1.0.0-ALFA-3-postgres.sql index 8f8fc67..24d821f 100644 --- a/cit-ecm-api/src/main/resources/scripts/v1.0.0-alpha9/01-cit-ecm-1.0.0-ALFA-3-postgres.sql +++ b/cit-ecm-api/src/main/resources/scripts/v1.0.0-alpha9/01-cit-ecm-1.0.0-ALFA-3-postgres.sql @@ -36,4 +36,9 @@ INSERT INTO tarjaassinatura(id, databloqueio, datainativo, datacriacao, dataedic VALUES (NEXTVAL('hibernate_sequence'), LOCALTIMESTAMP, NULL, LOCALTIMESTAMP, LOCALTIMESTAMP, 0, '', '', null, (select id from seguranca_usuario where username = 'admin'), null, null, (select id from dominio where chave = 'tipoAssinatura' and codigo = 1)); INSERT INTO tarjaassinatura(id, databloqueio, datainativo, datacriacao, dataedicao, version, conteudo, descricao, inativador_id, autor_id, editor_id, anexoimagem_id, tipoassinatura_id) VALUES (NEXTVAL('hibernate_sequence'), LOCALTIMESTAMP, NULL, LOCALTIMESTAMP, LOCALTIMESTAMP, 0, '', '', null, (select id from seguranca_usuario where username = 'admin'), null, null, (select id from dominio where chave = 'tipoAssinatura' and codigo = 2)); --- CIRO - 18/04/2016 - FIM \ No newline at end of file + +update dominio set chave='estadoDocumentoGed' where chave = 'statusDocumentoGed'; +-- CIRO - 18/04/2016 - FIM + + + diff --git a/cit-ecm-web/src/main/java/br/com/centralit/controller/CredencialProcessoController.java b/cit-ecm-web/src/main/java/br/com/centralit/controller/CredencialProcessoController.java index 7d81b67..5b0ad38 100644 --- a/cit-ecm-web/src/main/java/br/com/centralit/controller/CredencialProcessoController.java +++ b/cit-ecm-web/src/main/java/br/com/centralit/controller/CredencialProcessoController.java @@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; -import br.com.centralit.api.framework.json.ViewsEcm; import br.com.centralit.api.model.CredencialProcesso; import br.com.centralit.api.service.CredencialProcessoService; import br.com.centralit.api.viewHelper.GrupoUsuarioVH; @@ -167,6 +166,18 @@ public class CredencialProcessoController extends GenericController getEditView() { diff --git a/cit-ecm-web/src/main/java/br/com/centralit/controller/ProcessoController.java b/cit-ecm-web/src/main/java/br/com/centralit/controller/ProcessoController.java index 1810353..f71f103 100644 --- a/cit-ecm-web/src/main/java/br/com/centralit/controller/ProcessoController.java +++ b/cit-ecm-web/src/main/java/br/com/centralit/controller/ProcessoController.java @@ -122,6 +122,15 @@ public class ProcessoController extends GenericController { return responseBody; } + @RequestMapping(method = RequestMethod.GET, value = "/getProcessoVH") + @ResponseBody + public ResponseBodyWrapper getProcessoVH(@RequestParam(value = "idProcesso") Long idProcesso) { + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.processoService.getProcessoView(idProcesso), Views.processoVHview.class); + + return responseBody; + } + /** *

* Iniciativa(s): NUMERO_INICIATIVA @@ -159,9 +168,9 @@ public class ProcessoController extends GenericController { search.setResultMode(Search.RESULT_MAP); SearchResult searchResult = null; - + String nomeGrid = UtilString.isNullOrEmpty(searchParams.getNome()) ? "" : searchParams.getNome(); - + switch (nomeGrid) { case Processo.GRID_CLASSIFICACAO_PROCESSO_DOCUMENTO: searchResult = this.processoService.searchAndCountPorSigilo(search); diff --git a/cit-ecm-web/src/main/java/br/com/centralit/controller/UnidadeProcessoController.java b/cit-ecm-web/src/main/java/br/com/centralit/controller/UnidadeProcessoController.java index 070aee4..cd65a94 100644 --- a/cit-ecm-web/src/main/java/br/com/centralit/controller/UnidadeProcessoController.java +++ b/cit-ecm-web/src/main/java/br/com/centralit/controller/UnidadeProcessoController.java @@ -58,7 +58,7 @@ import br.com.centralit.framework.view.ResultResponseVH; * @author rogerio.costa * */ -@SuppressWarnings({"unchecked", "rawtypes"}) +@SuppressWarnings({ "unchecked", "rawtypes" }) @Controller @RequestMapping("/rest/unidadeProcesso") public class UnidadeProcessoController extends GenericController { @@ -127,6 +127,32 @@ public class UnidadeProcessoController extends GenericController + * Iniciativa(s): NUMERO_INICIATIVA + *

+ * + *

+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *

+ * + * Método responsável por + * + * @author rogerio.costa + * + * @param idProcesso + * @param idUnidade + * @return + */ + @RequestMapping(value = "/isProcessoNaUnidadeUsuarioLogado", method = RequestMethod.GET, produces = "application/json") + @ResponseBody + public ResponseBodyWrapper isProcessoNaUnidadeUsuarioLogado(@RequestParam(value = "idProcesso") Long idProcesso) { + + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.unidadeProcessoService.isProcessoNaUnidadeUsuarioLogado(idProcesso), Views.GenericView.class); + + return responseBody; + } + @RequestMapping(value = "/getPage", method = RequestMethod.POST) @ResponseBody public ResponseBodyWrapper findGrid(@RequestBody SearchParams searchParams) { @@ -138,13 +164,13 @@ public class UnidadeProcessoController extends GenericController getEditView() { diff --git a/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java b/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java index e4b8d2c..6505ce4 100644 --- a/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java +++ b/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java @@ -454,6 +454,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ECM.ASSINADO_SUCESSO", "Documento assinado com sucesso!", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ASSINATURA_DO_DOCUMENTO", "Assinatura do Documento", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DOCUMENTO_SEM_ASSINATURA", "Documento sem assinaturas!", dominio, modulo)); + } @@ -573,5 +574,6 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.USUARIO_SEM_PESSOA", "Usuário não está presente no Cadastro de Pessoa!", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DOCUMENTO_SEM_ASSINATURAS", "Esta versão do Documento não possui assinaturas!", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DOCUMENTO_JA_ASSINADO", "Documento já foi assinado por este usuário!", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.INFORMACAO_RESTRITA", "Informação restrita", dominio, modulo)); } } diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js index 1cc601a..aa88579 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js @@ -615,7 +615,7 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim $scope.siglas = []; // CARREGA O PROCESSO VINCULADO A TAREFA - $timeout( function () { + $timeout(function() { ProcessoRepository.getProcessoGerenciamento($scope.idProcesso).then( function ( result ) { $scope.processo = result.originalElement; @@ -638,10 +638,10 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim $scope.setLoading( false ); - } ); + }); - }, 400 ); - } ); + }, 400); + }); }; // FIM EXECUTAR BPE @@ -689,6 +689,29 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim }; + //Obter o processoVH + $scope.getProcessoVH = function (idProcesso) { + + $scope.setLoadingGet(true); + + ProcessoRepository.getProcessoVH(idProcesso).then(function(result) { + //Processo do scopo do gerenciamento + $scope.processoVH = result.originalElement; + + $scope.processo = $scope.processoVH.processo; + $scope.idProcesso = $scope.processo.id; + + $scope.fecharPagina(); + + $scope.apresentarCabecalho = true; + + $scope.widgetExemploIsCollapsed = false; + + $scope.setLoading(false); + }); + + }; + $scope.atualizarAtribuicaoProcesso = function (idProcesso){ ProcessoRepository.verificarAtribuicaoProcessoPrimeiroAcesso(idProcesso).then( function ( result ) { diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js index 9be00e0..e762b9e 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js @@ -26,11 +26,13 @@ * @param Utils */ -citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route','$routeParams','$window','$timeout','SolrSearchService','Utils', "$compile", 'DominioRepository', '$filter', - function SolrSearchController($scope, $attrs, $location, $route, $routeParams, $window, $timeout, SolrSearchService, Utils, $compile, DominioRepository, $filter) { +citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route','$routeParams','$window','$timeout','SolrSearchService','Utils', "$compile", 'DominioRepository', '$filter', "workflowFilterCriteriaService", + "BusinessProcessRepository", "appService", "$rootScope", "$translate", 'UnidadeProcessoRepository', 'CredencialProcessoRepository', + function SolrSearchController($scope, $attrs, $location, $route, $routeParams, $window, $timeout, SolrSearchService, Utils, $compile, DominioRepository, $filter, workflowFilterCriteriaService, BusinessProcessRepository, + appService, $rootScope, $translate, UnidadeProcessoRepository, CredencialProcessoRepository) { $scope.searchHintsField = 'tipoProcesso,tipoDocumento,objeto,assunto,autor,atribuidoA,destinatario,unidadeGeradora,situacao,nivelAcesso,dataCriacao'; - + // instructional message to aid the user in constructing a query $scope.messages = [ "Enter one or more search terms. Press Enter to search.", @@ -123,7 +125,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route $scope.handleSetPage = function() { $scope.timeout = $timeout(function () { - var query = SolrSearchService.createQuery("https://172.20.0.74:8983/solr/jcg"); + var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); query.setOption("rows", "10"); query.setOption("facet", "true"); query.setOption("facet.limit", $scope.maxHints); @@ -187,6 +189,8 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route results.docs[i].conteudo = results.docs[i].conteudo + item; }); + }else{ + results.docs[i].conteudo = ""; } } @@ -330,7 +334,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route if ($scope.userQuery && $scope.userQuery.length >= $scope.minSearchLength) { if ($scope.timeout) $timeout.cancel($scope.timeout); $scope.timeout = $timeout(function () { - var query = SolrSearchService.createQuery("https://172.20.0.74:8983/solr/jcg"); + var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); query.setOption("rows", "10"); query.setOption("facet", "true"); query.setOption("facet.limit", $scope.maxHints); @@ -409,7 +413,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route $scope.userQuery = "*:*"; } $scope.timeout = $timeout(function () { - var query = SolrSearchService.createQuery("https://172.20.0.74:8983/solr/jcg"); + var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); query.setOption("rows", "10"); query.setOption("facet", "true"); query.setOption("facet.limit", $scope.maxHints); @@ -440,7 +444,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route valueFilter = "*:*"; } $scope.timeout = $timeout(function () { - var query = SolrSearchService.createQuery("https://172.20.0.74:8983/solr/jcg"); + var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); query.setOption("rows", "10"); query.setOption("facet", "true"); query.setOption("facet.limit", $scope.maxHints); @@ -600,8 +604,162 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route $scope.parameterDatePesquisa = $.grep($scope.filtroDateList, function(e){ return e.codigo == 0; })[0].originalElement; }); - - + + $scope.obterTransclude = function(doc) { + + doc.$show = !doc.$show; + $scope.documents.forEach(function(item){ + if(item.id != doc.id){ + item.$expandido = false; + item.$show = false; + } + }); + + $scope.docSelecionado = doc; + if(doc.$show){ + _getFilterCriteriaTarefa(); + _fetchBusinessProcess(doc); + }else{ + doc.$expandido = false; + doc.$show = false; + }; + }; + + function _getFilterCriteriaTarefa(){ + var filterService = workflowFilterCriteriaService.getDefaultFilterCriteria(); + $scope.filterCriteriaBusinessProcess = { + start : 1, + sort : 'workItem.processInstance.id', + limit : 10, + deadline : 1, + processDeadline : 1, + timeManagementStatus : "", + fields : [ 'workItem.id', 'workItem.processInstance.id'], + filters : [{type: 'numeric', field: 'workItem.processInstance.id', value : $scope.docSelecionado.idProcessInstance} + , {type: 'string', field: 'workItem.flowElement.name'} + , {type: 'string', field: 'workItem.processInstance.businessProcess.description'} + , {type: 'string', field: 'workItem.processInstance.flowStatus.name'}] + }; + $scope.filterCriteriaBusinessProcess.username = filterService.username; + $scope.filterCriteriaBusinessProcess.groups = filterService.groups; + } + + function _fetchBusinessProcess(doc) { + $scope.assignments = []; + $scope.btnAction = false; + $scope.workItem = null; + $scope.setLoadingGet(true); + BusinessProcessRepository.tasksByParam($scope.filterCriteriaBusinessProcess).then(function(result) { + $scope.assignments = result.originalElement.objects; + + if($scope.docSelecionado.idProcessInstance){ + CredencialProcessoRepository.validarAcessoPesquisa($scope.docSelecionado.idProcessInstance).then(function(result) { + + $scope.urlInclude= '/cit-ecm-web/html/pesquisa/tarefasProcesso.jsp?i=' + $scope.docSelecionado.id; + doc.$expandido = !doc.$expandido; + }); + + } + if($scope.assignments.length > 0){ + _recuperarPermissoes($scope.assignments[0].id, doc); + }; + $scope.setLoadingGet(false); + }); + }; + + function _recuperarPermissoes(idAssignment, doc){ + BusinessProcessRepository.getPermissions({id: idAssignment}).then(function(result) { + $scope.workItem = result.originalElement; + vincularWorkItemAssignments(); + $scope.btnAction = !(!$scope.workItem.execute && !$scope.workItem.suspend && !$scope.workItem.delegate && !$scope.workItem.restart && !$scope.workItem.visualize); + $scope.docSelecionado.workItem = $scope.workItem; + $scope.setLoadingGet(false); + }); + }; + + function vincularWorkItemAssignments(){ + $scope.assignments.forEach(function(assignment){ + assignment.workItem = $scope.workItem; + assignment.checked = false; + }); + if($scope.assignments.length > 0){ + $scope.assignments[0].checked = true; + } + }; + + $scope.executarTarefa = function(){ + _getAssignmentSelected(); + if($scope.workItem){ + var pagina = '/cit-esi-web/assets/js/angular/custom/directive/html/userTask.html'; + if ($scope.workItem.flowElement.userInterface && $scope.workItem.flowElement.userInterface.executeCustomPage) { + pagina = $scope.workItem.flowElement.userInterface.URLCustomPage; + _abrirPaginaTarefa(pagina); + }else if ($scope.workItem.flowElement.userInterface && $scope.workItem.flowElement.userInterface.resource && $scope.workItem.flowElement.userInterface.resourceName) { + FormBuilderRepository.getByName($scope.workItem.flowElement.userInterface.resourceName).then(function(result) { + pagina = '/cit-esi-web/forms/'+result.originalElement.path+'/'+result.originalElement.resource.name+"_task.html"; + _abrirPaginaTarefa(pagina); + }); + }else{ + _abrirPaginaTarefa(pagina); + } + } + }; + + function _abrirPaginaTarefa(pagina){ + if (appService.existsWorkspace(pagina)) { + $scope.showAlert('warning', $translate.instant('ESI.MSG.JA_EXISTE_TELA_TAREFA')); + return ; + } + $scope.processInstance = $scope.docSelecionado.workItem.processInstance; + $scope.processInstance.collapsed = true; + $scope.processInstance.collapsedError = true; + $rootScope.task = $scope.workItem; + $rootScope.processInstance = $scope.processInstance; + $rootScope.controllerScope = $scope; + + var nome = $scope.task.flowElement.description; + if (!nome || nome == '') + nome = $scope.workItem.flowElement.name; + + $scope.addNewWorkspace($translate.instant('ESI.PERMISSAO.EXECUTAR')+" "+$translate.instant('ESI.TAREFA').toLowerCase()+" '"+nome+"'", pagina, true, 'mod-red-dark', $scope.workItem); + }; + + function _getAssignmentSelected() { + for(var pos = 0; pos < $scope.assignments.length; pos++){ + if($scope.assignments[pos].checked){ + $scope.docSelecionado.workItem = $scope.assignments[pos]; + break; + } + } + }; + + //Abre a tela de visualização de processo e documentos + $scope.abreVisualizar = function(){ + + var pagina = '/cit-ecm-web/html/processoVisualizacao/processoView.html'; + + var paginaGerenciamento = '/cit-ecm-web/html/gerenciarProcesso/gerenciarProcesso.html'; + + if (appService.existsWorkspace(paginaGerenciamento)) { + $scope.$openModalConfirm({message:$translate.instant('ECM.MSG.EXISTE_PROCESSO_ABERTO'), callback: function(){ + $scope.$modalConfirmInstance.dismiss('cancel'); + $scope.setLoading(true); + $scope.openWorkspaceIfNotOpen($translate.instant('ECM.LABEL.PROCESSO'), pagina, 'mod-orange'); + $timeout(function() { + angular.element('#visualizarGerenciarProcesso').scope().getProcessoVH($scope.docSelecionado.objeto === 'Processo'? $scope.docSelecionado.id : $scope.docSelecionado.idProcesso); + + }, 100); + $scope.setLoading(false); + }}); + }else{ + $scope.openWorkspaceIfNotOpen($translate.instant('ECM.LABEL.PROCESSO'), pagina, 'mod-orange'); + $timeout(function() { + angular.element('#visualizarGerenciarProcesso').scope().getProcessoVH($scope.docSelecionado.objeto === 'Processo'? $scope.docSelecionado.id : $scope.docSelecionado.idProcesso); + + }, 100); + }; + }; + $scope.init(); }]); diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/CredencialProcessoRepository.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/CredencialProcessoRepository.js index daf3594..348de1b 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/CredencialProcessoRepository.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/CredencialProcessoRepository.js @@ -21,8 +21,12 @@ citApp.factory('CredencialProcessoRepository', ['RestangularEcm', 'AbstractRepos return restangularEcm.one(this.route).getList("findByIdProcesso", {idProcesso : idProcesso}).then(); }; - this.renunciar = function (idProcesso) { - return restangularEcm.one(this.route + "/renunciar", idProcesso).remove(); + this.findByIdProcesso = function(idProcesso) { + return restangularEcm.one(this.route).getList("findByIdProcesso", {idProcesso : idProcesso}).then(); + }; + + this.validarAcessoPesquisa = function (idProcessInstance) { + return restangularEcm.all(this.route + '/validarAcessoPesquisa').post(idProcessInstance); }; } diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/ProcessoRepository.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/ProcessoRepository.js index 3a266e3..a204a46 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/ProcessoRepository.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/ProcessoRepository.js @@ -32,6 +32,11 @@ citApp.factory('ProcessoRepository', ['RestangularEcm', 'AbstractRepository', fu }; + this.getProcessoVH = function (idProcesso){ + return restangularEcm.one(this.route + '/getProcessoVH').get({"idProcesso": idProcesso}); + + }; + this.verificarAtribuicaoProcessoPrimeiroAcesso = function (idProcesso){ return restangularEcm.one(this.route + '/verificarAtribuicaoProcessoPrimeiroAcesso').get({"idProcesso": idProcesso}); diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/UnidadeProcessoRepository.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/UnidadeProcessoRepository.js index 3e08bb1..b5f45ae 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/UnidadeProcessoRepository.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/UnidadeProcessoRepository.js @@ -18,6 +18,11 @@ citApp.factory('UnidadeProcessoRepository', ['RestangularEcm', 'AbstractReposito }; + this.isProcessoNaUnidadeUsuarioLogado = function(idProcesso) { + return restangularEcm.one(this.route + "/isProcessoNaUnidadeUsuarioLogado").get({"idProcesso" : idProcesso}); + + }; + } AbstractRepository.extend(UnidadeProcessoRepository); diff --git a/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeInformacaoProcesso.html b/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeInformacaoProcesso.html index 2390fcf..793c69c 100644 --- a/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeInformacaoProcesso.html +++ b/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeInformacaoProcesso.html @@ -142,12 +142,18 @@

-
+
  • {{processoUnidade.unidade.sigla}} - {{processoUnidade.usuarioResponsavel.username}}
+
+
    +
  • {{processoUnidade.unidade.sigla}} - {{processoUnidade.usuarioResponsavel.username}}
  • +
+ +
diff --git a/cit-ecm-web/src/main/webapp/html/pesquisa/pesquisa.html b/cit-ecm-web/src/main/webapp/html/pesquisa/pesquisa.html index 540e511..940b147 100644 --- a/cit-ecm-web/src/main/webapp/html/pesquisa/pesquisa.html +++ b/cit-ecm-web/src/main/webapp/html/pesquisa/pesquisa.html @@ -22,8 +22,7 @@
- +
-
+
{{doc.assuntoComplementar}}
+ +
+
+
+ + + +
+
+
-- libgit2 0.21.2