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 5d8ba64..40ad1b8 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 @@ -97,21 +97,15 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD @Override public Boolean isProcessoAbertoEmOutrasUnidades(Processo processo) { - Session session = (Session) this.em().getDelegate(); - - Criteria criteria = session.createCriteria(persistentClass); + Criteria criteria = this.newCriteria(); criteria.setProjection(Projections.rowCount()); criteria.add(Restrictions.eq("id", processo.getId())); criteria.add(Restrictions.ne("unidade.id", processo.getUnidade().getId())); - Long quantidade = (Long) criteria.uniqueResult(); - - if (quantidade > 0) - return Boolean.TRUE; + return (Long) criteria.uniqueResult() > 0; - return Boolean.FALSE; } /** @@ -178,27 +172,27 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD @Override public SearchResult searchAndCount(ISearch search) { - - Long idUsuario = ((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId(); - + + 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.isNull("grupoUsuario.dataInativo")); 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/service/impl/EstruturaOrganizacionalECMServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/EstruturaOrganizacionalECMServiceImpl.java index 9de4681..a4af6ff 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/EstruturaOrganizacionalECMServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/EstruturaOrganizacionalECMServiceImpl.java @@ -15,7 +15,11 @@ import br.com.centralit.api.model.EstruturaOrganizacionalECM; import br.com.centralit.api.service.ConfiguracaoUsuarioUnidadeService; import br.com.centralit.api.service.EstruturaOrganizacionalECMService; import br.com.centralit.api.service.GrupoService; +import br.com.centralit.api.service.UnidadeService; +import br.com.centralit.framework.exception.BusinessException; +import br.com.centralit.framework.exception.CodigoErro; import br.com.centralit.framework.model.GrupoUnidade; +import br.com.centralit.framework.model.Unidade; import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; import br.com.centralit.framework.util.UtilColecao; import br.com.centralit.framework.util.UtilObjeto; @@ -55,6 +59,8 @@ import br.com.centralit.framework.util.UtilObjeto; @Service("estruturaOrganizacionalECMService") public class EstruturaOrganizacionalECMServiceImpl extends GenericServiceImpl implements EstruturaOrganizacionalECMService { + private static final String VALIDACAO_GRUPO_PADRAO_EM_OUTRA_UNIDADE = "ECM.VALIDACAO.GRUPO_PADRAO_EM_OUTRA_UNIDADE"; + /** Atributo estruturaOrganizacionalECMDao. */ private EstruturaOrganizacionalECMDao estruturaOrganizacionalECMDao; @@ -66,6 +72,10 @@ public class EstruturaOrganizacionalECMServiceImpl extends GenericServiceImpl impl * @param processo */ @Override - public Boolean concluir(final Long idProcesso, final Long idTask) { + public Boolean concluir(Long idProcesso, Long idTask) { - final Boolean concluidoEmTodasUnidades = this.unidadeProcessoService.isProcessoConcluidoEmTodasUnidades(idProcesso); - - final Processo processo = this.getReference(idProcesso); + Processo processo = this.getReference(idProcesso); this.unidadeProcessoService.executarConcluirProcessoNaUnidade(idTask, processo); + Boolean concluidoEmTodasUnidades = this.unidadeProcessoService.isProcessoConcluidoEmTodasUnidades(idProcesso); + // Verifica se o processo foi concluído em todas unidades. if (concluidoEmTodasUnidades) { + processo.setStatus(this.dominioService.findByChaveAndCodigo("statusProcesso", 1L)); processo.getTemporalidade().setDataFimTemporalidade(this.executarCalculoTemporalidade(processo)); processo.setDataConclusao(UtilDate.getDataAtualCalendar()); 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 1d57b9b..7ff48e5 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 @@ -221,25 +221,28 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl grupos = new ArrayList(); + unidadeProcesso.setConcluido(Boolean.TRUE); - List users = new ArrayList(); + List grupos = new ArrayList(); - users.add(processo.getAutor().getUsername()); + List users = new ArrayList(); - Unidade unidade = this.unidadeService.getReference(this.getUsuario().getUnidade().getId()); + users.add(processo.getAutor().getUsername()); - grupos.add(unidade.getGrupo().getSigla()); + Unidade unidade = this.unidadeService.getReference(this.getUsuario().getUnidade().getId()); - this.removeUserTaskDelegation(idTask, grupos, null); - this.removeUserTaskDelegation(idTask, null, users); + grupos.add(unidade.getGrupo().getSigla()); - this.save(unidadeProcesso); + this.removeUserTaskDelegation(idTask, grupos, null); + + this.removeUserTaskDelegation(idTask, null, users); + + this.save(unidadeProcesso); + } } /** 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 0bbbd98..194d004 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 @@ -200,6 +200,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen list.add(new Dominio("formaNumeracao", "Sequencial por ano", "SEQUENCIAL_ANO", 1L)); list.add(new Dominio("formaNumeracao", "Sequencial único", "SEQUENCIAL_UNICO", 2L)); + + list.add(new Dominio("statusProcesso", "Concluído", "CONCLUIDO", 1L)); + list.add(new Dominio("statusProcesso", "Em andamento", "EM_ANDAMENTO", 2L)); this.dominioService.saveListIfNotExist(list); @@ -432,7 +435,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.ERRO_CONFIGURACAO_GRUPO_PADRAO_USUARIO", "O grupo padrão não foi configurado para unidade vigente", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.REMOCAO_COM_VINCULO", "Não é possível excluir pois o mesmo encontra-se em uso por outro cadastro no sistema!", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.PERMISSAO_OPERACAO", "Você não tem permissão para executar a operação.", dominio, modulo)); - + internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.GRUPO_PADRAO_EM_OUTRA_UNIDADE", "O grupo selecionado como padrão está sendo usado como grupo padrão da unidade ", dominio, modulo)); + } /** @@ -501,8 +505,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DESEJA_CAPTURAR", "Desejá capturar o processo?", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CAPTURADO_SUCESSO", "Processo capturado com sucesso!", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.LEGENDA_CAMPO_DINAMICO_NUMERO_DOCUMENTO", "Use: @numeroDocumento@ para adicionar o número do documento", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_CONCLUIDO_SUCESSO", "Processo concluído com sucesso!", 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 c773756..20c2280 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 @@ -153,10 +153,7 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim } else { $scope.closeWidget(); - DocumentoGedRepository.existeVinculo( { - 'joinClass' : 'processo.id', - 'id' : $scope.processo.id - } ).then( function ( result ) { + DocumentoGedRepository.existeVinculo( {'joinClass' : 'processo.id', 'id' : $scope.processo.id} ).then( function ( result ) { if ( !result ) { var mensagem = $translate.instant( 'ECM.MSG.PROCESSO_SEM_DOCUMENTO' ) + $scope.flowAction.name; $scope.showAlert( "warning", mensagem ); @@ -201,11 +198,9 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim // Conclui o proceso $scope.concluir = function () { - DocumentoGedRepository.existeVinculo( { - 'joinClass' : 'processo.id', - 'id' : $scope.processo.id - } ).then( function ( result ) { - if ( !result ) { + DocumentoGedRepository.existeVinculo({'joinClass' : 'processo.id', 'id' : $scope.processo.id} ).then(function(result) { + + if (!result) { var mensagem = $translate.instant( 'ECM.MSG.PROCESSO_SEM_DOCUMENTO' ) + " " + $translate.instant( 'ECM.LABEL.CONCLUIR' ); $scope.showAlert( "warning", mensagem ); } else { @@ -218,23 +213,33 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim } ); }; + //Concluir processo $scope.saveConcluir = function () { ProcessoRepository.concluir( {"idProcesso" : $scope.processo.id, "idTask" : $scope.task.id} ).then( function ( result ) { // Verifica se foi concluido em todas unidades. - $timeout( function () { - if ( result ) { - if ( $scope.task.flowElement.actions && $scope.task.flowElement.actions.length == 1 ) { + $timeout(function () { + if (result) { + if ($scope.task.flowElement.actions && $scope.task.flowElement.actions.length == 1 ) { $scope.executarProcesso( $scope.task.flowElement.actions[ 0 ] ); } } else { - var workspace = angular.element( '#editProcessoEcm' ).scope().workspace; - if ( workspace ) { + var workspace = angular.element( '#searchGerenciarProcesso' ).scope().workspace; + //Fechar workspace de gerenciamento de processo + if (workspace) { + $scope.$modalConfirmInstance.dismiss( 'cancel' ); - angular.element( "#citapp-controller" ).scope().removeWorkspace( workspace.id ); + + angular.element("#citapp-controller").scope().removeWorkspace(workspace.id); - angular.element( "#citapp-controller" ).scope().showAlert( "success", $translate.instant( 'MSG.PROCESSO_ENVIADO_SUCESSO' ) ); + angular.element("#citapp-controller").scope().showAlert("success", $translate.instant('ECM.MSG.PROCESSO_CONCLUIDO_SUCESSO')); + + //Atualizar grid de gerenciamento de tarefas do bpe/esi + if(angular.element( '#idGerenciamentoTarefas' )){ + + angular.element( '#idGerenciamentoTarefas' ).scope().fetchResult(); + } } } @@ -489,6 +494,10 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim } else { $scope.execute( complete ); } + + $timeout( function () { + angular.element( '#idGerenciamentoTarefas' ).scope().fetchResult(); + } ); }; @@ -601,9 +610,9 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim ProcessoRepository.getProcessoGerenciamento($scope.idProcesso).then( function ( result ) { $scope.processo = result.originalElement; - $scope.apresentarCabecalho = true; - $scope.processo.idTask = $scope.task.id; - + $scope.apresentarCabecalho = true; + $scope.processo.idTask = $scope.task.id; + ProcessoRepository.verificarAtribuicaoProcessoPrimeiroAcesso($scope.idProcesso).then( function ( result ) { if(result){ diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/UnidadeProcessoController.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/UnidadeProcessoController.js index ff0f4f1..c307df8 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/UnidadeProcessoController.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/UnidadeProcessoController.js @@ -139,16 +139,21 @@ citApp.controller('UnidadeProcessoController', ['$scope', 'UnidadeProcessoReposi }); - var historicoAlteracaoProcesso = { - descricaoAcao : $translate.instant('ECM.MSG_HISTORICO_ECM.CONCLUSAO_PROCESSO_UNIDADE'), - processo : processo, - autor : $scope.usuarioLogado, - acaoAlteracao : "CONCLUSAO_PROCESSO_UNIDADE" - }; + //Verifica se o processo foi concluído na unidade, caso sejá verdadeiro gera o histórico de conclusão + if($scope.enviarProcessoVH.concluirProcesso){ - HistoricoAlteracaoProcessoRepository.saveParams(historicoAlteracaoProcesso).then(function(result){ + var historicoAlteracaoProcesso = { + descricaoAcao : $translate.instant('ECM.MSG_HISTORICO_ECM.CONCLUSAO_PROCESSO_UNIDADE'), + processo : processo, + autor : $scope.usuarioLogado, + acaoAlteracao : "CONCLUSAO_PROCESSO_UNIDADE" + }; + + HistoricoAlteracaoProcessoRepository.saveParams(historicoAlteracaoProcesso).then(function(result){ + + }); - }); + } }; -- libgit2 0.21.2