diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/DocumentoGedDaoHibernate.java b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/DocumentoGedDaoHibernate.java index afa7b45..de99726 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/DocumentoGedDaoHibernate.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/DocumentoGedDaoHibernate.java @@ -7,15 +7,17 @@ import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Repository; import br.com.centralit.api.dao.DocumentoGedDao; import br.com.centralit.api.model.DocumentoGed; +import br.com.centralit.api.model.SigiloPrivilegio; import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; import br.com.centralit.framework.dao.arquitetura.SearchSeven; +import br.com.centralit.framework.model.Usuario; import com.googlecode.genericdao.search.Filter; -import com.googlecode.genericdao.search.Search; import com.googlecode.genericdao.search.Sort; @Repository("documentoGedDao") @@ -49,16 +51,6 @@ public class DocumentoGedDaoHibernate extends CitGenericDAOImpl implements Docum } @Override - public Collection findByProcessoSigilo(Long idProcesso) { - - Search searchSeven = new Search(); - - searchSeven.addFilterEqual("processo.id", idProcesso); - searchSeven.addFilterNotEmpty("processo.sigilo"); - return this.search(searchSeven); - } - - @Override public Collection findByIdDocumentoTodasVersoes(Long id) { SearchSeven searchSeven = new SearchSeven(); @@ -193,4 +185,35 @@ public class DocumentoGedDaoHibernate extends CitGenericDAOImpl implements Docum return (Long) criteria.uniqueResult() > 0; } + + @SuppressWarnings("unchecked") + @Override + public Collection findByProcessoSigilo(Long idProcesso) { + + Long idUsuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId(); + + Criteria criteriaPrivilegio = this.newCriteria(SigiloPrivilegio.class); + + criteriaPrivilegio.setProjection(Projections.property("sigilo.id")); + + criteriaPrivilegio.createAlias("privilegio", "privilegio"); + + criteriaPrivilegio.createAlias("privilegio.grupoPrivilegios", "grupoPrivilegio"); + + criteriaPrivilegio.add(Restrictions.isNull("grupoPrivilegio.dataInativo")); + + criteriaPrivilegio.createCriteria("grupoPrivilegio.grupo").createAlias("grupoUsuarios", "grupoUsuario"); + + criteriaPrivilegio.add(Restrictions.eq("grupoUsuario.usuario.id", idUsuario)); + + Session session = (Session) this.em().getDelegate(); + + Criteria criteria = session.createCriteria(persistentClass); + + criteria.add(Restrictions.eq("processo.id", idProcesso)); + criteria.add(Restrictions.in("sigilo.id", criteriaPrivilegio.list())); + + return criteria.list(); + } + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/ProcessoDaoHibernate.java b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/ProcessoDaoHibernate.java index 7c03b04..f27b9dc 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/ProcessoDaoHibernate.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/ProcessoDaoHibernate.java @@ -7,12 +7,19 @@ import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Repository; import br.com.centralit.api.dao.ProcessoDao; import br.com.centralit.api.model.Processo; +import br.com.centralit.api.model.SigiloPrivilegio; import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; import br.com.centralit.framework.dao.arquitetura.SearchSeven; +import br.com.centralit.framework.model.Usuario; + +import com.googlecode.genericdao.search.Filter; +import com.googlecode.genericdao.search.ISearch; +import com.googlecode.genericdao.search.SearchResult; /** *

@@ -169,4 +176,32 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD return searchUnique(search); } + @Override + public SearchResult searchAndCount(ISearch search) { + + Long idUsuario = ((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId(); + + Criteria criteriaPrivilegio = this.newCriteria(SigiloPrivilegio.class); + + criteriaPrivilegio.setProjection(Projections.property("sigilo.id")); + + criteriaPrivilegio.createAlias("privilegio", "privilegio"); + + criteriaPrivilegio.createAlias("privilegio.grupoPrivilegios", "grupoPrivilegio"); + + criteriaPrivilegio.add(Restrictions.isNull("grupoPrivilegio.dataInativo")); + + criteriaPrivilegio.createCriteria("grupoPrivilegio.grupo").createAlias("grupoUsuarios", "grupoUsuario"); + + criteriaPrivilegio.add(Restrictions.eq("grupoUsuario.usuario.id", idUsuario)); + + + search.getFilters().add(Filter.in("sigilo.id", criteriaPrivilegio.list())); + + + + + return super.searchAndCount(search); + } + } diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/framework/json/ViewsEcm.java b/cit-ecm-api/src/main/java/br/com/centralit/api/framework/json/ViewsEcm.java index 617fc7e..b432267 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/framework/json/ViewsEcm.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/framework/json/ViewsEcm.java @@ -98,5 +98,7 @@ public class ViewsEcm extends Views { public static class TipoDocumentoPlanoClassificacaoAutoCompleteView extends Views.GenericView{}; + public static class ClassificacaoDocumentoGedView extends Views.GenericView{}; + } 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 2443154..7f125dc 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 }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class }) private String assuntoComplementar; /** Atributo numero. */ - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class }) private String numero; /** Atributo idRaiz. */ @@ -121,7 +121,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { private byte[] conteudoCriptografado; /** Atributo icon. */ - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class }) private String icon; @Temporal(TemporalType.TIMESTAMP) @@ -167,20 +167,20 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { /** Atributo nivelAcesso. */ @ManyToOne(fetch = FetchType.EAGER) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class, ViewsEcm.ClassificacaoDocumentoGedView.class}) private NivelAcessoTipoDocumento nivelAcesso; @ManyToOne(fetch = FetchType.EAGER) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class , ViewsEcm.ClassificacaoDocumentoGedView.class}) private NivelAcessoTipoDocumento nivelAcessoOriginal; /** Atributo sigilo. */ @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class , ViewsEcm.ClassificacaoDocumentoGedView.class}) private Sigilo sigilo; @ManyToOne(fetch = FetchType.LAZY) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class , ViewsEcm.ClassificacaoDocumentoGedView.class}) private Sigilo sigiloOriginal; /** Atributo planoClassificacao. */ @@ -205,7 +205,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { /** Atributo anexo. */ @OneToOne(mappedBy = "documentoGed", fetch = FetchType.EAGER) - @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class ,ViewsEcm.ClassificacaoDocumentoGedView.class}) private AnexoGed anexo; /** Atributo versaoAnterior. */ @@ -228,7 +228,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { private Calendar prazoSigilo; /** Atributo aprovado. */ - @JsonView({ ViewsEcm.DocumentoGedList.class }) + @JsonView({ ViewsEcm.DocumentoGedEdit.class }) private Boolean aprovado; diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java index 73f10ee..acaf00d 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/DocumentoGedServiceImpl.java @@ -177,7 +177,7 @@ public class DocumentoGedServiceImpl extends GenericServiceImpl impl try { - this.solrService.addProcesso(processo); +// this.solrService.addProcesso(processo); } catch (final Exception e) { e.printStackTrace(); 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 865d42a..536cae0 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 @@ -310,6 +310,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.FUNDAMENTACAO_LEGAL", "Fundamentação legal", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NIVEL_ACESSO", "Nível Acesso", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NIVEL_SIGILO", "Nível de sigilo", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NIVEL_SIGILO_ORIGINAL", "Nível de sigilo original", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.PLANO_CLASSIFICACAO_SUPERIOR", "Elemento superior", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.SUGESTOES_ASSUNTO", "Sugestões de assunto", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TIPODOCUMENTO", "Tipo Documento", dominio, modulo)); diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoController.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoController.js index 77c0c78..93b23da 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoController.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/ClassificarDocumentoProcessoController.js @@ -13,6 +13,8 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo $scope.idPainelItem = 0; $scope.tabAtual = 0; + + $scope.aprovado = null; $scope.tabs = [ {active: true} ,{active: false} @@ -98,22 +100,42 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo }); }; - + $scope.removerAtributos = function(){ + angular.forEach($scope.processo.documentos, function (item) { + delete item.autorUserName; + delete item.unidadeNome; + delete item.documentoVersao; + delete item.originalElement; + angular.forEach(item.nivelAcesso.sigilos, function (item) { + delete item.tipoSigiloDescricao; + }); + + angular.forEach(item.nivelAcessoOriginal.sigilos, function (item) { + delete item.tipoSigiloDescricao; + }); + + }); + + }; // SALVA O Processo $scope.saveOrUpdate = function(){ $scope.classificarDocumentoProcessoForm.$submitted = true; - //verifica se o formulario está valido para salvar if($scope.classificarDocumentoProcessoForm.$valid){ $scope.setLoadingSalva(true); - - + + $scope.removerAtributos(); + + $scope.processo.aprovado = $scope.aprovado; ProcessoRepository.atualizarSigiloProcesso($scope.processo).then(function(result) { $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); + $scope.historicoAlteracao(result.originalElement); ProcessoRepository.get($scope.processo.id).then(function(result){ - $scope.processo = result; + $scope.processo = result.originalElement; + $scope.aprovado = result.originalElement.aprovado; + $scope.carregarListaDocumentos($scope.processo.id); }); $scope.classificarDocumentoProcessoForm.$submitted = false; $scope.atualizaProcesso(); @@ -140,19 +162,10 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo HistoricoAlteracaoProcessoRepository.saveParams(historicoAlteracaoProcesso).then(function(result){ }); }; - -/* $scope.historicoAlteracao = function (documentos){ - - angular.forEach(documentos, function(item, key) { - - var documento = item.documentoGed; - - $scope.AddHistoricoAlteracao(documento); - - }); - };*/ - - + //Fechar widget + $scope.closeWidget = function() { + angular.element("#searchGerenciarProcesso").scope().closeWidget(); + }; $scope.initializeNivelAcessoDocumento = function(){ $scope.nivelAcessoTipoDocumentoList = []; @@ -168,13 +181,35 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo $scope.sigilos = result; }); }; + + $scope.iniciar = function(processo){ + + ProcessoRepository.get(processo.id).then(function(result) { + $scope.processo = result.originalElement; + $scope.aprovado = result.originalElement.aprovado; + $scope.carregarListaDocumentos(processo.id); + }); + + $scope.findNivelPorIdProcesso(processo.tipoProcesso.id); + + }; + + $scope.carregarListaDocumentos = function(idProcesso){ + $scope.processo.documentos = []; + DocumentoGedRepository.findByProcessoSigilo(idProcesso).then(function(result) { + angular.forEach(result, function(item) { + + var documento = item.originalElement; + $scope.processo.documentos.push(documento); + + }); + }); + } ; - $scope.constroiRelacionamentoTipoProcesso = function(tipoProcesso){ + $scope.findNivelPorIdProcesso = function(idTipoProcesso){ - $scope.nivelAcessoList = []; - - NivelAcessoTipoProcessoRepository.findPorIdTipoProcesso(tipoProcesso.id).then(function(result) { + NivelAcessoTipoProcessoRepository.findPorIdTipoProcesso(idTipoProcesso).then(function(result) { $scope.nivelAcessoList = result; }); }; @@ -186,6 +221,7 @@ citApp.controller('ClassificarDocumentoProcessoController', ['$scope', 'Processo ProcessoRepository.get(processo.id).then(function(result) { $scope.processo = result.originalElement; + $scope.aprovado = result.originalElement.aprovado; $scope.setLoading(false); $scope.constroiRelacionamentoTipoProcesso($scope.processo.tipoProcesso); 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 1677e07..99534a1 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 @@ -598,12 +598,27 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim $scope.getProcesso = function ( processo ) { $scope.setLoadingGet( true ); - - $scope.isHistoricoProcesso = true; - - $scope.processo = processo; - $scope.idProcesso = $scope.processo.id; - + + ProcessoRepository.get(processo.id).then(function(result) { + $scope.processo = result.originalElement; + + + DocumentoGedRepository.findByProcessoSigilo(processo.id).then(function(result) { + $scope.processo.documentos = result; + }); + + $scope.setLoading(false); + }); + + $timeout( function () { + angular.element( "#classificarDocumento" ).scope().iniciar(processo); + } ); + + + $scope.isHistoricoProcesso = false; + $scope.isClassificarProcessoDocumento = true; + $scope.apresentarCabecalho = true; + $scope.idProcesso = processo.id; $scope.setLoading( false ); }; diff --git a/cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumento.html b/cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumento.html index f528f80..aa8735f 100644 --- a/cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumento.html +++ b/cit-ecm-web/src/main/webapp/html/classificarProcessoDocumento/classificarProcessoDocumento.html @@ -39,7 +39,7 @@

- ECM.LABEL.NIVEL_SIGILO   + ECM.LABEL.NIVEL_SIGILO_ORIGINAL   {{processo.sigiloOriginal.tipoSigilo.descricao}}
@@ -48,8 +48,23 @@

+ +
+
+
+ ECM.LABEL.NIVEL_ACESSO   + {{processo.nivelAcesso.nivelAcesso.descricao}} +
+ +
+ ECM.LABEL.NIVEL_SIGILO   + {{processo.sigilo.tipoSigilo.descricao}} +
+ +
+
-
+
-
- -
+
+ +
@@ -109,7 +124,8 @@ {{processo.nup}} {{processo.id}} - + {{documento.nivelAcesso.nivelAcesso.descricao}} +