Commit 8e59a33e1ed2797879ba5de70dca1bc3dcfc8c14

Authored by rogerio.costa
1 parent c0fe18cc
Exists in master

#4393 Correção de defeitos encontrados em homologação

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
97 97 @Override
98 98 public Boolean isProcessoAbertoEmOutrasUnidades(Processo processo) {
99 99  
100   - Session session = (Session) this.em().getDelegate();
101   -
102   - Criteria criteria = session.createCriteria(persistentClass);
  100 + Criteria criteria = this.newCriteria();
103 101  
104 102 criteria.setProjection(Projections.rowCount());
105 103  
106 104 criteria.add(Restrictions.eq("id", processo.getId()));
107 105 criteria.add(Restrictions.ne("unidade.id", processo.getUnidade().getId()));
108 106  
109   - Long quantidade = (Long) criteria.uniqueResult();
110   -
111   - if (quantidade > 0)
112   - return Boolean.TRUE;
  107 + return (Long) criteria.uniqueResult() > 0;
113 108  
114   - return Boolean.FALSE;
115 109 }
116 110  
117 111 /**
... ... @@ -178,27 +172,27 @@ public class ProcessoDaoHibernate extends CitGenericDAOImpl implements ProcessoD
178 172  
179 173 @Override
180 174 public <RT> SearchResult<RT> searchAndCount(ISearch search) {
181   -
182   - Long idUsuario = ((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId();
183   -
  175 +
  176 + Long idUsuario = ( (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal() ).getId();
  177 +
184 178 Criteria criteriaPrivilegio = this.newCriteria(SigiloPrivilegio.class);
185   -
  179 +
186 180 criteriaPrivilegio.setProjection(Projections.property("sigilo.id"));
187   -
  181 +
188 182 criteriaPrivilegio.createAlias("privilegio", "privilegio");
189   -
  183 +
190 184 criteriaPrivilegio.createAlias("privilegio.grupoPrivilegios", "grupoPrivilegio");
191 185  
192 186 criteriaPrivilegio.add(Restrictions.isNull("grupoPrivilegio.dataInativo"));
193   -
  187 +
194 188 criteriaPrivilegio.createCriteria("grupoPrivilegio.grupo").createAlias("grupoUsuarios", "grupoUsuario");
195   -
  189 +
196 190 criteriaPrivilegio.add(Restrictions.isNull("grupoUsuario.dataInativo"));
197 191  
198 192 criteriaPrivilegio.add(Restrictions.eq("grupoUsuario.usuario.id", idUsuario));
199   -
  193 +
200 194 search.getFilters().add(Filter.in("sigilo.id", criteriaPrivilegio.list()));
201   -
  195 +
202 196 return super.searchAndCount(search);
203 197 }
204 198  
... ...
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;
15 15 import br.com.centralit.api.service.ConfiguracaoUsuarioUnidadeService;
16 16 import br.com.centralit.api.service.EstruturaOrganizacionalECMService;
17 17 import br.com.centralit.api.service.GrupoService;
  18 +import br.com.centralit.api.service.UnidadeService;
  19 +import br.com.centralit.framework.exception.BusinessException;
  20 +import br.com.centralit.framework.exception.CodigoErro;
18 21 import br.com.centralit.framework.model.GrupoUnidade;
  22 +import br.com.centralit.framework.model.Unidade;
19 23 import br.com.centralit.framework.service.arquitetura.GenericServiceImpl;
20 24 import br.com.centralit.framework.util.UtilColecao;
21 25 import br.com.centralit.framework.util.UtilObjeto;
... ... @@ -55,6 +59,8 @@ import br.com.centralit.framework.util.UtilObjeto;
55 59 @Service("estruturaOrganizacionalECMService")
56 60 public class EstruturaOrganizacionalECMServiceImpl extends GenericServiceImpl<EstruturaOrganizacionalECM, Long> implements EstruturaOrganizacionalECMService {
57 61  
  62 + private static final String VALIDACAO_GRUPO_PADRAO_EM_OUTRA_UNIDADE = "ECM.VALIDACAO.GRUPO_PADRAO_EM_OUTRA_UNIDADE";
  63 +
58 64 /** Atributo estruturaOrganizacionalECMDao. */
59 65 private EstruturaOrganizacionalECMDao estruturaOrganizacionalECMDao;
60 66  
... ... @@ -66,6 +72,10 @@ public class EstruturaOrganizacionalECMServiceImpl extends GenericServiceImpl&lt;Es
66 72 @Autowired
67 73 private GrupoService grupoService;
68 74  
  75 + /** Atributo unidadeService. */
  76 + @Autowired
  77 + private UnidadeService unidadeService;
  78 +
69 79 /**
70 80 * Responsável pela criação de novas instâncias desta classe.
71 81 *
... ... @@ -111,9 +121,9 @@ public class EstruturaOrganizacionalECMServiceImpl extends GenericServiceImpl&lt;Es
111 121 this.configuracaoUsuarioUnidadeService.verificarRemocaoConfiguracaoUsuarioUnidade(entity);
112 122  
113 123 this.resolveTransiente(entity);
114   -
  124 +
115 125 EstruturaOrganizacional estruturaOrganizacional = entity.getEstruturaOrganizacional();
116   -
  126 +
117 127 entity.setNome(estruturaOrganizacional.getNome());
118 128 entity.setSigla(estruturaOrganizacional.getSigla());
119 129  
... ... @@ -156,6 +166,13 @@ public class EstruturaOrganizacionalECMServiceImpl extends GenericServiceImpl&lt;Es
156 166  
157 167 if (UtilObjeto.isReferencia(entity.getGrupo()) && UtilObjeto.isReferencia(entity.getGrupo().getId())) {
158 168  
  169 + Unidade unidadeUtilizandoGrupoPadrao = this.unidadeService.obterPorGrupoPadrao(entity.getGrupo().getId());
  170 +
  171 + if (UtilObjeto.isReferencia(unidadeUtilizandoGrupoPadrao) && !entity.isNew() && unidadeUtilizandoGrupoPadrao.getId().longValue() != entity.getId().longValue()) {
  172 +
  173 + throw new BusinessException(VALIDACAO_GRUPO_PADRAO_EM_OUTRA_UNIDADE, CodigoErro.REGRA_NEGOCIO.getValue(), unidadeUtilizandoGrupoPadrao.getNome());
  174 + }
  175 +
159 176 entity.setGrupo(this.grupoService.getReference(entity.getGrupo().getId()));
160 177  
161 178 } else {
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/ProcessoServiceImpl.java
... ... @@ -650,17 +650,18 @@ public class ProcessoServiceImpl extends GenericServiceImpl&lt;Processo, Long&gt; impl
650 650 * @param processo
651 651 */
652 652 @Override
653   - public Boolean concluir(final Long idProcesso, final Long idTask) {
  653 + public Boolean concluir(Long idProcesso, Long idTask) {
654 654  
655   - final Boolean concluidoEmTodasUnidades = this.unidadeProcessoService.isProcessoConcluidoEmTodasUnidades(idProcesso);
656   -
657   - final Processo processo = this.getReference(idProcesso);
  655 + Processo processo = this.getReference(idProcesso);
658 656  
659 657 this.unidadeProcessoService.executarConcluirProcessoNaUnidade(idTask, processo);
660 658  
  659 + Boolean concluidoEmTodasUnidades = this.unidadeProcessoService.isProcessoConcluidoEmTodasUnidades(idProcesso);
  660 +
661 661 // Verifica se o processo foi concluído em todas unidades.
662 662 if (concluidoEmTodasUnidades) {
663 663  
  664 + processo.setStatus(this.dominioService.findByChaveAndCodigo("statusProcesso", 1L));
664 665 processo.getTemporalidade().setDataFimTemporalidade(this.executarCalculoTemporalidade(processo));
665 666 processo.setDataConclusao(UtilDate.getDataAtualCalendar());
666 667  
... ...
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/UnidadeProcessoServiceImpl.java
... ... @@ -221,25 +221,28 @@ public class UnidadeProcessoServiceImpl extends GenericServiceImpl&lt;UnidadeProces
221 221 */
222 222 public void executarConcluirProcessoNaUnidade(Long idTask, Processo processo) {
223 223  
224   - UnidadeProcesso unidadeProcesso = new UnidadeProcesso();
225   - unidadeProcesso.setProcesso(processo);
226   - unidadeProcesso.setUnidade(this.getUsuario().getUnidade());
227   - unidadeProcesso.setConcluido(Boolean.TRUE);
  224 + UnidadeProcesso unidadeProcesso = this.unidadeProcessoDao.obterPorUnidadeEProcesso(processo.getId(), this.getUsuario().getUnidade().getId());
  225 +
  226 + if (UtilObjeto.isReferencia(unidadeProcesso)) {
228 227  
229   - List<String> grupos = new ArrayList<String>();
  228 + unidadeProcesso.setConcluido(Boolean.TRUE);
230 229  
231   - List<String> users = new ArrayList<String>();
  230 + List<String> grupos = new ArrayList<String>();
232 231  
233   - users.add(processo.getAutor().getUsername());
  232 + List<String> users = new ArrayList<String>();
234 233  
235   - Unidade unidade = this.unidadeService.getReference(this.getUsuario().getUnidade().getId());
  234 + users.add(processo.getAutor().getUsername());
236 235  
237   - grupos.add(unidade.getGrupo().getSigla());
  236 + Unidade unidade = this.unidadeService.getReference(this.getUsuario().getUnidade().getId());
238 237  
239   - this.removeUserTaskDelegation(idTask, grupos, null);
240   - this.removeUserTaskDelegation(idTask, null, users);
  238 + grupos.add(unidade.getGrupo().getSigla());
241 239  
242   - this.save(unidadeProcesso);
  240 + this.removeUserTaskDelegation(idTask, grupos, null);
  241 +
  242 + this.removeUserTaskDelegation(idTask, null, users);
  243 +
  244 + this.save(unidadeProcesso);
  245 + }
243 246 }
244 247  
245 248 /**
... ...
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
... ... @@ -200,6 +200,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
200 200  
201 201 list.add(new Dominio("formaNumeracao", "Sequencial por ano", "SEQUENCIAL_ANO", 1L));
202 202 list.add(new Dominio("formaNumeracao", "Sequencial único", "SEQUENCIAL_UNICO", 2L));
  203 +
  204 + list.add(new Dominio("statusProcesso", "Concluído", "CONCLUIDO", 1L));
  205 + list.add(new Dominio("statusProcesso", "Em andamento", "EM_ANDAMENTO", 2L));
203 206  
204 207 this.dominioService.saveListIfNotExist(list);
205 208  
... ... @@ -432,7 +435,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
432 435 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.ERRO_CONFIGURACAO_GRUPO_PADRAO_USUARIO", "O grupo padrão não foi configurado para unidade vigente", dominio, modulo));
433 436 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));
434 437 internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.PERMISSAO_OPERACAO", "Você não tem permissão para executar a operação.", dominio, modulo));
435   -
  438 + 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));
  439 +
436 440 }
437 441  
438 442 /**
... ... @@ -501,8 +505,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
501 505 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DESEJA_CAPTURAR", "Desejá capturar o processo?", dominio, modulo));
502 506 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CAPTURADO_SUCESSO", "Processo capturado com sucesso!", dominio, modulo));
503 507 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.LEGENDA_CAMPO_DINAMICO_NUMERO_DOCUMENTO", "Use: @numeroDocumento@ para adicionar o número do documento", dominio, modulo));
  508 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.PROCESSO_CONCLUIDO_SUCESSO", "Processo concluído com sucesso!", dominio, modulo));
504 509  
505   -
506   -
507 510 }
508 511 }
... ...
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js
... ... @@ -153,10 +153,7 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
153 153 } else {
154 154 $scope.closeWidget();
155 155  
156   - DocumentoGedRepository.existeVinculo( {
157   - 'joinClass' : 'processo.id',
158   - 'id' : $scope.processo.id
159   - } ).then( function ( result ) {
  156 + DocumentoGedRepository.existeVinculo( {'joinClass' : 'processo.id', 'id' : $scope.processo.id} ).then( function ( result ) {
160 157 if ( !result ) {
161 158 var mensagem = $translate.instant( 'ECM.MSG.PROCESSO_SEM_DOCUMENTO' ) + $scope.flowAction.name;
162 159 $scope.showAlert( "warning", mensagem );
... ... @@ -201,11 +198,9 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
201 198 // Conclui o proceso
202 199 $scope.concluir = function () {
203 200  
204   - DocumentoGedRepository.existeVinculo( {
205   - 'joinClass' : 'processo.id',
206   - 'id' : $scope.processo.id
207   - } ).then( function ( result ) {
208   - if ( !result ) {
  201 + DocumentoGedRepository.existeVinculo({'joinClass' : 'processo.id', 'id' : $scope.processo.id} ).then(function(result) {
  202 +
  203 + if (!result) {
209 204 var mensagem = $translate.instant( 'ECM.MSG.PROCESSO_SEM_DOCUMENTO' ) + " " + $translate.instant( 'ECM.LABEL.CONCLUIR' );
210 205 $scope.showAlert( "warning", mensagem );
211 206 } else {
... ... @@ -218,23 +213,33 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
218 213 } );
219 214 };
220 215  
  216 + //Concluir processo
221 217 $scope.saveConcluir = function () {
222 218  
223 219 ProcessoRepository.concluir( {"idProcesso" : $scope.processo.id, "idTask" : $scope.task.id} ).then( function ( result ) {
224 220  
225 221 // Verifica se foi concluido em todas unidades.
226   - $timeout( function () {
227   - if ( result ) {
228   - if ( $scope.task.flowElement.actions && $scope.task.flowElement.actions.length == 1 ) {
  222 + $timeout(function () {
  223 + if (result) {
  224 + if ($scope.task.flowElement.actions && $scope.task.flowElement.actions.length == 1 ) {
229 225 $scope.executarProcesso( $scope.task.flowElement.actions[ 0 ] );
230 226 }
231 227 } else {
232   - var workspace = angular.element( '#editProcessoEcm' ).scope().workspace;
233   - if ( workspace ) {
  228 + var workspace = angular.element( '#searchGerenciarProcesso' ).scope().workspace;
  229 + //Fechar workspace de gerenciamento de processo
  230 + if (workspace) {
  231 +
234 232 $scope.$modalConfirmInstance.dismiss( 'cancel' );
235   - angular.element( "#citapp-controller" ).scope().removeWorkspace( workspace.id );
  233 +
  234 + angular.element("#citapp-controller").scope().removeWorkspace(workspace.id);
236 235  
237   - angular.element( "#citapp-controller" ).scope().showAlert( "success", $translate.instant( 'MSG.PROCESSO_ENVIADO_SUCESSO' ) );
  236 + angular.element("#citapp-controller").scope().showAlert("success", $translate.instant('ECM.MSG.PROCESSO_CONCLUIDO_SUCESSO'));
  237 +
  238 + //Atualizar grid de gerenciamento de tarefas do bpe/esi
  239 + if(angular.element( '#idGerenciamentoTarefas' )){
  240 +
  241 + angular.element( '#idGerenciamentoTarefas' ).scope().fetchResult();
  242 + }
238 243 }
239 244 }
240 245  
... ... @@ -489,6 +494,10 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
489 494 } else {
490 495 $scope.execute( complete );
491 496 }
  497 +
  498 + $timeout( function () {
  499 + angular.element( '#idGerenciamentoTarefas' ).scope().fetchResult();
  500 + } );
492 501  
493 502 };
494 503  
... ... @@ -601,9 +610,9 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
601 610  
602 611 ProcessoRepository.getProcessoGerenciamento($scope.idProcesso).then( function ( result ) {
603 612 $scope.processo = result.originalElement;
604   - $scope.apresentarCabecalho = true;
605   - $scope.processo.idTask = $scope.task.id;
606   -
  613 + $scope.apresentarCabecalho = true;
  614 + $scope.processo.idTask = $scope.task.id;
  615 +
607 616 ProcessoRepository.verificarAtribuicaoProcessoPrimeiroAcesso($scope.idProcesso).then( function ( result ) {
608 617  
609 618 if(result){
... ...
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/UnidadeProcessoController.js
... ... @@ -139,16 +139,21 @@ citApp.controller(&#39;UnidadeProcessoController&#39;, [&#39;$scope&#39;, &#39;UnidadeProcessoReposi
139 139  
140 140 });
141 141  
142   - var historicoAlteracaoProcesso = {
143   - descricaoAcao : $translate.instant('ECM.MSG_HISTORICO_ECM.CONCLUSAO_PROCESSO_UNIDADE'),
144   - processo : processo,
145   - autor : $scope.usuarioLogado,
146   - acaoAlteracao : "CONCLUSAO_PROCESSO_UNIDADE"
147   - };
  142 + //Verifica se o processo foi concluído na unidade, caso sejá verdadeiro gera o histórico de conclusão
  143 + if($scope.enviarProcessoVH.concluirProcesso){
148 144  
149   - HistoricoAlteracaoProcessoRepository.saveParams(historicoAlteracaoProcesso).then(function(result){
  145 + var historicoAlteracaoProcesso = {
  146 + descricaoAcao : $translate.instant('ECM.MSG_HISTORICO_ECM.CONCLUSAO_PROCESSO_UNIDADE'),
  147 + processo : processo,
  148 + autor : $scope.usuarioLogado,
  149 + acaoAlteracao : "CONCLUSAO_PROCESSO_UNIDADE"
  150 + };
  151 +
  152 + HistoricoAlteracaoProcessoRepository.saveParams(historicoAlteracaoProcesso).then(function(result){
  153 +
  154 + });
150 155  
151   - });
  156 + }
152 157  
153 158 };
154 159  
... ...