Commit 43cd5d456014a2af3e2cab878e114cd84c80215b

Authored by ROGERIO CASSIMIRO DE SOUZA
1 parent 25d5149a
Exists in master

redmine #4583 exibição assinaturas por versões; criação de histórico de alteraçã…

…o de processo para assinaturas de documentos;
cit-ecm-api/src/main/java/br/com/centralit/api/model/AcaoHistoricoAlteracaoProcesso.java
@@ -59,6 +59,10 @@ public class AcaoHistoricoAlteracaoProcesso extends PersistentObject { @@ -59,6 +59,10 @@ public class AcaoHistoricoAlteracaoProcesso extends PersistentObject {
59 private String acao; 59 private String acao;
60 60
61 private String descricao; 61 private String descricao;
  62 +
  63 + public static String ASSINAR_DOCUMENTO_CHAVE = "ASSINAR_DOCUMENTO";
  64 + public static String ASSINAR_DOCUMENTO_ACAO = "Assinatura de documento";
  65 + public static String ASSINAR_DOCUMENTO_DESCRICAO = "O documento <<tipo_documento>> <<numero_documento>> foi assinado por <<usuario>>.";
62 66
63 public AcaoHistoricoAlteracaoProcesso() { 67 public AcaoHistoricoAlteracaoProcesso() {
64 68
cit-ecm-api/src/main/java/br/com/centralit/api/model/Assinatura.java
@@ -6,7 +6,9 @@ import javax.persistence.GeneratedValue; @@ -6,7 +6,9 @@ import javax.persistence.GeneratedValue;
6 import javax.persistence.GenerationType; 6 import javax.persistence.GenerationType;
7 import javax.persistence.Id; 7 import javax.persistence.Id;
8 import javax.persistence.ManyToOne; 8 import javax.persistence.ManyToOne;
  9 +import javax.persistence.Transient;
9 10
  11 +import br.com.centralit.api.framework.json.ViewsEcm;
10 import br.com.centralit.framework.json.Views; 12 import br.com.centralit.framework.json.Views;
11 import br.com.centralit.framework.model.Dominio; 13 import br.com.centralit.framework.model.Dominio;
12 import br.com.centralit.framework.model.Usuario; 14 import br.com.centralit.framework.model.Usuario;
@@ -59,7 +61,7 @@ public class Assinatura extends PersistentObjectAudit { @@ -59,7 +61,7 @@ public class Assinatura extends PersistentObjectAudit {
59 private Long id; 61 private Long id;
60 62
61 /** Atributo usuario. */ 63 /** Atributo usuario. */
62 - @JsonView({ Views.DocumentoGedEdit.class }) 64 + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class })
63 @ManyToOne(fetch = FetchType.LAZY) 65 @ManyToOne(fetch = FetchType.LAZY)
64 private Usuario usuario; 66 private Usuario usuario;
65 67
@@ -68,15 +70,18 @@ public class Assinatura extends PersistentObjectAudit { @@ -68,15 +70,18 @@ public class Assinatura extends PersistentObjectAudit {
68 private DocumentoGed documentoGed; 70 private DocumentoGed documentoGed;
69 71
70 /** Atributo tipoAssinatura. */ 72 /** Atributo tipoAssinatura. */
71 - @JsonView({ Views.DocumentoGedEdit.class }) 73 + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class })
72 @ManyToOne(fetch = FetchType.LAZY) 74 @ManyToOne(fetch = FetchType.LAZY)
73 private Dominio tipoAssinatura; 75 private Dominio tipoAssinatura;
74 76
75 /** Atributo funcao. */ 77 /** Atributo funcao. */
76 @ManyToOne(fetch = FetchType.LAZY) 78 @ManyToOne(fetch = FetchType.LAZY)
77 - @JsonView({ Views.DocumentoGedEdit.class }) 79 + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class })
78 private Funcao funcao; 80 private Funcao funcao;
79 81
  82 + @Transient
  83 + private Long idTask;
  84 +
80 /** 85 /**
81 * Retorna o valor do atributo <code>id</code> 86 * Retorna o valor do atributo <code>id</code>
82 * 87 *
@@ -177,4 +182,24 @@ public class Assinatura extends PersistentObjectAudit { @@ -177,4 +182,24 @@ public class Assinatura extends PersistentObjectAudit {
177 this.funcao = funcao; 182 this.funcao = funcao;
178 } 183 }
179 184
  185 + /**
  186 + * Retorna o valor do atributo <code>idTask</code>
  187 + *
  188 + * @return <code>Long</code>
  189 + */
  190 + public Long getIdTask() {
  191 +
  192 + return idTask;
  193 + }
  194 +
  195 + /**
  196 + * Define o valor do atributo <code>idTask</code>.
  197 + *
  198 + * @param idTask
  199 + */
  200 + public void setIdTask(Long idTask) {
  201 +
  202 + this.idTask = idTask;
  203 + }
  204 +
180 } 205 }
cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java
@@ -95,7 +95,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { @@ -95,7 +95,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable {
95 private Boolean novaVersao; 95 private Boolean novaVersao;
96 96
97 /** Atributo versaoDocumento. */ 97 /** Atributo versaoDocumento. */
98 - @JsonView({ Views.DocumentoGedEdit.class }) 98 + @JsonView({ Views.DocumentoGedEdit.class, Views.ProcessoEdit.class })
99 private Double versaoDocumento; 99 private Double versaoDocumento;
100 100
101 /** Atributo cancelado. */ 101 /** Atributo cancelado. */
@@ -235,8 +235,8 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { @@ -235,8 +235,8 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable {
235 @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) 235 @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class })
236 private Collection<InteressadoDocumento> interessados; 236 private Collection<InteressadoDocumento> interessados;
237 237
238 - @OneToMany(fetch = FetchType.LAZY, mappedBy = "documentoGed", cascade = CascadeType.ALL, orphanRemoval = true)  
239 - @JsonView({ Views.DocumentoGedEdit.class }) 238 + @OneToMany(fetch = FetchType.LAZY, mappedBy = "documentoGed")
  239 + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class })
240 private Collection<Assinatura> assinaturas; 240 private Collection<Assinatura> assinaturas;
241 241
242 /** 242 /**
cit-ecm-api/src/main/java/br/com/centralit/api/model/HistoricoAlteracaoProcesso.java
@@ -101,6 +101,24 @@ public class HistoricoAlteracaoProcesso extends PersistentObjectAudit { @@ -101,6 +101,24 @@ public class HistoricoAlteracaoProcesso extends PersistentObjectAudit {
101 101
102 @Transient 102 @Transient
103 private Map<String, String> mapaAtributos; 103 private Map<String, String> mapaAtributos;
  104 +
  105 + public HistoricoAlteracaoProcesso(){
  106 + super();
  107 + }
  108 +
  109 + public HistoricoAlteracaoProcesso( Processo processo, Calendar dataRegistro, String nomeUnidadeVigente, String nomeUsuario, Long idTask, String descricaoAcao, String acaoAlteracao, DocumentoGed documentoGed, Map<String, String> mapaAtributos) {
  110 +
  111 + super();
  112 + this.processo = processo;
  113 + this.dataRegistro = dataRegistro;
  114 + this.nomeUnidadeVigente = nomeUnidadeVigente;
  115 + this.nomeUsuario = nomeUsuario;
  116 + this.idTask = idTask;
  117 + this.descricaoAcao = descricaoAcao;
  118 + this.acaoAlteracao = acaoAlteracao;
  119 + this.documentoGed = documentoGed;
  120 + this.mapaAtributos = mapaAtributos;
  121 + }
104 122
105 public Calendar getDataRegistro() { 123 public Calendar getDataRegistro() {
106 124
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaServiceImpl.java
1 package br.com.centralit.api.service.impl; 1 package br.com.centralit.api.service.impl;
2 2
  3 +import java.util.Calendar;
  4 +import java.util.HashMap;
  5 +import java.util.Map;
  6 +
3 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.security.core.context.SecurityContextHolder; 8 import org.springframework.security.core.context.SecurityContextHolder;
5 import org.springframework.stereotype.Service; 9 import org.springframework.stereotype.Service;
6 10
7 import br.com.centralit.api.dao.AssinaturaDao; 11 import br.com.centralit.api.dao.AssinaturaDao;
  12 +import br.com.centralit.api.model.AcaoHistoricoAlteracaoProcesso;
8 import br.com.centralit.api.model.Assinatura; 13 import br.com.centralit.api.model.Assinatura;
  14 +import br.com.centralit.api.model.HistoricoAlteracaoProcesso;
9 import br.com.centralit.api.service.AssinaturaService; 15 import br.com.centralit.api.service.AssinaturaService;
10 import br.com.centralit.api.service.DocumentoGedService; 16 import br.com.centralit.api.service.DocumentoGedService;
11 import br.com.centralit.api.service.DominioService; 17 import br.com.centralit.api.service.DominioService;
12 import br.com.centralit.api.service.FuncaoService; 18 import br.com.centralit.api.service.FuncaoService;
  19 +import br.com.centralit.api.service.HistoricoAlteracaoProcessoService;
13 import br.com.centralit.api.service.UsuarioService; 20 import br.com.centralit.api.service.UsuarioService;
14 import br.com.centralit.framework.model.Dominio; 21 import br.com.centralit.framework.model.Dominio;
15 import br.com.centralit.framework.model.Usuario; 22 import br.com.centralit.framework.model.Usuario;
@@ -43,17 +50,39 @@ public class AssinaturaServiceImpl extends GenericServiceImpl&lt;Assinatura, Long&gt; @@ -43,17 +50,39 @@ public class AssinaturaServiceImpl extends GenericServiceImpl&lt;Assinatura, Long&gt;
43 private FuncaoService funcaoService; 50 private FuncaoService funcaoService;
44 51
45 @Autowired 52 @Autowired
  53 + private HistoricoAlteracaoProcessoService historicoAlteracaoProcessoService;
  54 +
  55 + @Autowired
46 public AssinaturaServiceImpl( AssinaturaDao assinaturaDao) { 56 public AssinaturaServiceImpl( AssinaturaDao assinaturaDao) {
47 this.dao = assinaturaDao; 57 this.dao = assinaturaDao;
48 } 58 }
49 59
50 @Override 60 @Override
51 - public Assinatura saveAssinaturaInterna(Assinatura entity) {  
52 - entity.setDocumentoGed(this.documentoGedService.getReference(entity.getDocumentoGed().getId()));  
53 - entity.setUsuario((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal());  
54 - entity.setTipoAssinatura(dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA));  
55 - entity.setFuncao(funcaoService.getReference(entity.getFuncao().getId()));  
56 - return super.save(entity); 61 + public Assinatura saveAssinaturaInterna(Assinatura assinatura) {
  62 + assinatura.setDocumentoGed(this.documentoGedService.getReference(assinatura.getDocumentoGed().getId()));
  63 + assinatura.setUsuario((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal());
  64 + assinatura.setTipoAssinatura(dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA));
  65 + assinatura.setFuncao(funcaoService.getReference(assinatura.getFuncao().getId()));
  66 + gerarHistorico(assinatura);
  67 + return super.save(assinatura);
  68 + }
  69 +
  70 + /**
  71 + * Método responsável por gerar histórico de alteração do processo
  72 + * @author rogerio.cassimiro
  73 + * @param assinatura
  74 + */
  75 + private void gerarHistorico(Assinatura assinatura) {
  76 +
  77 + Usuario usuario = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
  78 + Map<String, String> mapaAtributos = new HashMap<String, String>();
  79 + mapaAtributos.put("tipo_documento", null);
  80 + mapaAtributos.put("numero_documento", null);
  81 + HistoricoAlteracaoProcesso hap = new HistoricoAlteracaoProcesso(assinatura.getDocumentoGed().getProcesso(), Calendar.getInstance(),
  82 + usuario.getUnidade().getNome(), usuario.getUsername(), assinatura.getIdTask(), AcaoHistoricoAlteracaoProcesso.ASSINAR_DOCUMENTO_DESCRICAO,
  83 + AcaoHistoricoAlteracaoProcesso.ASSINAR_DOCUMENTO_CHAVE, assinatura.getDocumentoGed(), mapaAtributos);
  84 + hap.setAutor(usuario);
  85 + historicoAlteracaoProcessoService.saveWithParams(hap);
57 } 86 }
58 87
59 /** 88 /**
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/HistoricoAlteracaoProcessoServiceImpl.java
@@ -105,6 +105,7 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl&lt;Hi @@ -105,6 +105,7 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl&lt;Hi
105 toSave.setIdTask(historicoView.getIdTask()); 105 toSave.setIdTask(historicoView.getIdTask());
106 toSave.setAcaoAlteracao(acao.getAcao()); 106 toSave.setAcaoAlteracao(acao.getAcao());
107 toSave.setDataRegistro(Calendar.getInstance()); 107 toSave.setDataRegistro(Calendar.getInstance());
  108 + toSave.setDocumentoGed(historicoView.getDocumentoGed());
108 109
109 toSave = (HistoricoAlteracaoProcesso) historicoAlteracaoProcessoDao.save(toSave); 110 toSave = (HistoricoAlteracaoProcesso) historicoAlteracaoProcessoDao.save(toSave);
110 111
@@ -118,7 +119,7 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl&lt;Hi @@ -118,7 +119,7 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl&lt;Hi
118 119
119 return ( (HistoricoAlteracaoProcesso) historicoAlteracaoProcessoDao.save(toSave) ) != null ? true : false; 120 return ( (HistoricoAlteracaoProcesso) historicoAlteracaoProcessoDao.save(toSave) ) != null ? true : false;
120 } 121 }
121 - 122 +
122 private void produceViewParams(HistoricoAlteracaoProcesso historico, HistoricoAlteracaoProcesso toSave) { 123 private void produceViewParams(HistoricoAlteracaoProcesso historico, HistoricoAlteracaoProcesso toSave) {
123 124
124 Map<String, String> mapaAtributos; 125 Map<String, String> mapaAtributos;
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/InicializarEcmServiceImpl.java
@@ -140,7 +140,8 @@ public class InicializarEcmServiceImpl extends UtilStartup { @@ -140,7 +140,8 @@ public class InicializarEcmServiceImpl extends UtilStartup {
140 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/ConfiguracaoUsuarioUnidadeRepository.js", this.dominioJS, menuCadastroProcesso)); 140 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/ConfiguracaoUsuarioUnidadeRepository.js", this.dominioJS, menuCadastroProcesso));
141 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/EstruturaOrganizacionalECMRepository.js", this.dominioJS, menuCadastroProcesso)); 141 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/EstruturaOrganizacionalECMRepository.js", this.dominioJS, menuCadastroProcesso));
142 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/ConfiguracaoUsuarioUnidadeRepository.min.js", this.dominioJS, menuCadastroProcesso)); 142 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/ConfiguracaoUsuarioUnidadeRepository.min.js", this.dominioJS, menuCadastroProcesso));
143 - 143 +
  144 + filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/controller/AssinarDocumentoController.js", this.dominioJS, menuCadastroProcesso));
144 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/AssinaturaRepository.js", this.dominioJS, menuCadastroProcesso)); 145 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/AssinaturaRepository.js", this.dominioJS, menuCadastroProcesso));
145 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/DocumentoGedRepository.js", this.dominioJS, menuCadastroProcesso)); 146 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/DocumentoGedRepository.js", this.dominioJS, menuCadastroProcesso));
146 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/DocumentoGedRepository.min.js", this.dominioJS, menuCadastroProcesso)); 147 filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/DocumentoGedRepository.min.js", this.dominioJS, menuCadastroProcesso));
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
@@ -141,6 +141,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen @@ -141,6 +141,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
141 list.add(new AcaoHistoricoAlteracaoProcesso("ACAO_PROCESSO", "Ação", "<<acao>> , protocolo <<protocolo>>.")); 141 list.add(new AcaoHistoricoAlteracaoProcesso("ACAO_PROCESSO", "Ação", "<<acao>> , protocolo <<protocolo>>."));
142 list.add(new AcaoHistoricoAlteracaoProcesso("VALIDAR_PROCESSO", "Validar Processo", "O processo <<protocolo>> foi validado e seus documentos.")); 142 list.add(new AcaoHistoricoAlteracaoProcesso("VALIDAR_PROCESSO", "Validar Processo", "O processo <<protocolo>> foi validado e seus documentos."));
143 list.add(new AcaoHistoricoAlteracaoProcesso("ATRIBUICAO_PROCESSO", "Atribuição de processo", "O processo <<protocolo>> foi atribuido para <<usuario>>.")); 143 list.add(new AcaoHistoricoAlteracaoProcesso("ATRIBUICAO_PROCESSO", "Atribuição de processo", "O processo <<protocolo>> foi atribuido para <<usuario>>."));
  144 + list.add(new AcaoHistoricoAlteracaoProcesso("ASSINAR_DOCUMENTO", "Assinatura de documento", "O documento <<tipo_documento>> <<numero_documento>> foi assinado por <<usuario>>."));
144 145
145 try { 146 try {
146 this.acaoHistoricoAlteracaoProcessoService.saveListIfNotExist(list); 147 this.acaoHistoricoAlteracaoProcessoService.saveListIfNotExist(list);
@@ -418,6 +419,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen @@ -418,6 +419,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
418 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_DA_ASSINATURA", "Data da assinatura", dominio, modulo)); 419 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_DA_ASSINATURA", "Data da assinatura", dominio, modulo));
419 internacionalizacaoList.add(new Internacionalizacao("ECM.ASSINADO_SUCESSO", "Documento assinado com sucesso!", dominio, modulo)); 420 internacionalizacaoList.add(new Internacionalizacao("ECM.ASSINADO_SUCESSO", "Documento assinado com sucesso!", dominio, modulo));
420 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ASSINATURA_DO_DOCUMENTO", "Assinatura do Documento", dominio, modulo)); 421 internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ASSINATURA_DO_DOCUMENTO", "Assinatura do Documento", dominio, modulo));
  422 + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DOCUMENTO_SEM_ASSINATURA", "Documento sem assinaturas!", dominio, modulo));
421 423
422 } 424 }
423 425
@@ -529,7 +531,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen @@ -529,7 +531,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen
529 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_REATIVADA", "Tarefa reativada com sucesso", dominio, modulo)); 531 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_REATIVADA", "Tarefa reativada com sucesso", dominio, modulo));
530 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.ERRO_PERMISSAO_ASSINAR", "Erro! Para assinar documentos é necessário possuir o papel “Servidor” ou “Terceirizado” com “Função” preenchida no Cadastro de Pessoas!", dominio, modulo)); 532 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.ERRO_PERMISSAO_ASSINAR", "Erro! Para assinar documentos é necessário possuir o papel “Servidor” ou “Terceirizado” com “Função” preenchida no Cadastro de Pessoas!", dominio, modulo));
531 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.USUARIO_SEM_PESSOA", "Usuário não está presente no Cadastro de Pessoa!", dominio, modulo)); 533 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.USUARIO_SEM_PESSOA", "Usuário não está presente no Cadastro de Pessoa!", dominio, modulo));
532 - internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DOCUMENTO_SEM_ASSINATURAS", "Documento selecionado não possui assinaturas!", dominio, modulo)); 534 + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DOCUMENTO_SEM_ASSINATURAS", "Esta versão do Documento não possui assinaturas!", dominio, modulo));
533 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DOCUMENTO_JA_ASSINADO", "Documento já foi assinado por este usuário!", dominio, modulo)); 535 internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DOCUMENTO_JA_ASSINADO", "Documento já foi assinado por este usuário!", dominio, modulo));
534 } 536 }
535 } 537 }
cit-ecm-web/src/main/webapp/assets/css/gerenciarProcesso.css
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 * Os códigos abaixo devem ser colocados nos devidos lugares e/ou utilizados dos css corretos do template, utilizem assim por não conhecer onde estão os css da arquitetura. 4 * Os códigos abaixo devem ser colocados nos devidos lugares e/ou utilizados dos css corretos do template, utilizem assim por não conhecer onde estão os css da arquitetura.
5 */ 5 */
6 .itemdiv { 6 .itemdiv {
7 - min-height: 66px; 7 + min-height: 80px;
8 border: 1px solid #ccc; 8 border: 1px solid #ccc;
9 padding: 10px; 9 padding: 10px;
10 position: relative; 10 position: relative;
@@ -143,3 +143,9 @@ @@ -143,3 +143,9 @@
143 margin-top: 10px; 143 margin-top: 10px;
144 } 144 }
145 145
  146 +.versoes {
  147 + font-size : x-small;
  148 + font-weight : bold;
  149 + text-align : right !important;
  150 +}
  151 +
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoController.js
1 'use strict'; 1 'use strict';
2 2
3 3
4 -citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$timeout','GerenciarProcessoRepository', 'ProcessoRepository', 'RuntimeManagerRepository','$rootScope', 'DocumentoGedRepository', 'HistoricoAlteracaoProcessoRepository','UnidadeRepository','UnidadeProcessoRepository','CredencialProcessoRepository', 'PessoaRepository', '$q', 'AssinaturaRepository',  
5 - function GerenciarProcessoController($scope, $translate, $timeout, GerenciarProcessoRepository, ProcessoRepository, RuntimeManagerRepository,$rootScope, DocumentoGedRepository, HistoricoAlteracaoProcessoRepository,UnidadeRepository, UnidadeProcessoRepository,CredencialProcessoRepository, PessoaRepository, $q, AssinaturaRepository) { 4 +citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$timeout','GerenciarProcessoRepository', 'ProcessoRepository', 'RuntimeManagerRepository','$rootScope', 'DocumentoGedRepository', 'HistoricoAlteracaoProcessoRepository','UnidadeRepository','UnidadeProcessoRepository','CredencialProcessoRepository', 'PessoaRepository',
  5 + function GerenciarProcessoController($scope, $translate, $timeout, GerenciarProcessoRepository, ProcessoRepository, RuntimeManagerRepository,$rootScope, DocumentoGedRepository, HistoricoAlteracaoProcessoRepository,UnidadeRepository, UnidadeProcessoRepository,CredencialProcessoRepository, PessoaRepository) {
6 6
7 $scope.processo = {}; 7 $scope.processo = {};
8 $scope.iconAnexo = {}; 8 $scope.iconAnexo = {};
@@ -695,60 +695,8 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim @@ -695,60 +695,8 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
695 }); 695 });
696 }; 696 };
697 697
698 - /*  
699 - * Abre panel assinar documento  
700 - */  
701 $scope.abrirAssinarDocumento = function(documento) { 698 $scope.abrirAssinarDocumento = function(documento) {
702 $scope.fecharPagina(); 699 $scope.fecharPagina();
703 - $scope.numeroDocumento = documento.numero ? documento.numero : '';  
704 - $scope.exibirAssinarDocAnexo = false;  
705 - $scope.documentoSelecionado = null;  
706 - $scope.exibirDocJaAssinado = false;  
707 - if(documento.formaCriacao.codigo === 1){  
708 - __abrirAssinarDocOnline(documento)  
709 - } else if(documento.formaCriacao.codigo === 2){  
710 - __abrirAssinarDocAnexo(documento)  
711 - }  
712 - };  
713 -  
714 - function __abrirAssinarDocOnline(documento){  
715 - _obterAssinaturasDocumento(documento.id).then(function(documentoSelecionado){  
716 - $scope.documentoSelecionado = documentoSelecionado;  
717 - _validarAssinaturaPorUsuario(documento.id).then(function(exibirIncluirAssinatura){  
718 - $scope.exibirIncluirAssinatura = !(exibirIncluirAssinatura == true);  
719 - _obterPermissaoAssinaturaDocumentoExterno();  
720 - });  
721 - });  
722 - }  
723 -  
724 - function __abrirAssinarDocAnexo(documento){  
725 - _obterAssinaturasDocumento(documento.id).then(function(documentoSelecionado){  
726 - $scope.documentoSelecionado = documentoSelecionado;  
727 - _validarAssinaturaPorUsuario(documento.id).then(function(exibirIncluirAssinatura){  
728 - $scope.exibirIncluirAssinatura = !(exibirIncluirAssinatura == true);  
729 - $scope.exibirDocJaAssinado = !$scope.exibirIncluirAssinatura;  
730 - _obterPermissaoAssinaturaDocumentoExterno();  
731 - });  
732 - });  
733 - };  
734 -  
735 - function _validarAssinaturaPorUsuario(idDocumento){  
736 - var deferred = $q.defer();  
737 - AssinaturaRepository.validarAssinaturaPorUsuario(idDocumento).then(function(result){  
738 - deferred.resolve(result);  
739 - });  
740 - return deferred.promise;  
741 - }  
742 -  
743 - function _obterAssinaturasDocumento(idDocumento) {  
744 - var deferred = $q.defer();  
745 - DocumentoGedRepository.get(idDocumento).then(function(result){  
746 - deferred.resolve(result.originalElement);  
747 - });  
748 - return deferred.promise;  
749 - }  
750 -  
751 - function _obterPermissaoAssinaturaDocumentoExterno(){  
752 $scope.pessoa = {}; 700 $scope.pessoa = {};
753 PessoaRepository.getPermissaoAssinaturaDocumento().then(function(result){ 701 PessoaRepository.getPermissaoAssinaturaDocumento().then(function(result){
754 $scope.exibirAssinarDocAnexo = result.originalElement.exibirAssinarDocAnexo; 702 $scope.exibirAssinarDocAnexo = result.originalElement.exibirAssinarDocAnexo;
@@ -758,6 +706,9 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim @@ -758,6 +706,9 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
758 return; 706 return;
759 } 707 }
760 _montarParceiros(); 708 _montarParceiros();
  709 + $timeout( function () {
  710 + angular.element( "#documentoAssinatura" ).scope().abrirAssinarDocumento(documento);
  711 + } );
761 }); 712 });
762 }; 713 };
763 714
@@ -786,51 +737,15 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim @@ -786,51 +737,15 @@ citApp.controller(&#39;GerenciarProcessoController&#39;, [ &#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
786 else 737 else
787 funcao.nome = funcao.nome.concat(parceiro.funcao.nome); 738 funcao.nome = funcao.nome.concat(parceiro.funcao.nome);
788 return funcao; 739 return funcao;
789 - }  
790 -  
791 - $scope.assinar = function() {  
792 - if(!$scope.autenticacao){  
793 - $scope.showAlert("error", $translate.instant('ECM.VALIDACAO.SENHA_ASSINATURA'));  
794 - return;  
795 - }  
796 -  
797 - AssinaturaRepository.saveAssinaturaInterna(_getAssinatura()).then(function(result){  
798 - if($scope.documentoSelecionado.assinaturas)  
799 - $scope.documentoSelecionado.assinaturas.push(result.originalElement);  
800 - $scope.autenticacao = null;  
801 - $scope.exibirIncluirAssinatura = false;  
802 - $scope.showAlert("success", $translate.instant('ECM.ASSINADO_SUCESSO'));  
803 - });  
804 - };  
805 -  
806 - function _getAssinatura(){  
807 - return {documentoGed : { id : $scope.documentoSelecionado.id }, funcao : {id : _getFuncaoChecked()} };  
808 }; 740 };
809 741
810 - function _getFuncaoChecked(){  
811 - for(var pos = 0; pos < $scope.funcoes.length; pos++){  
812 - if($scope.funcoes[pos].isServidor)  
813 - return $scope.funcoes[pos].id;  
814 - }  
815 - };  
816 -  
817 - /*  
818 - * Abre panel visualizar assinaturas  
819 - */  
820 $scope.visualizarAssinaturasDocumento = function(documento){ 742 $scope.visualizarAssinaturasDocumento = function(documento){
821 $scope.fecharPagina(); 743 $scope.fecharPagina();
822 - $scope.numeroDocumento = documento.numero ? documento.numero : '';  
823 - $scope.exibirAssinarDocAnexo = false;  
824 - $scope.documentoSelecionado = null;  
825 - $scope.exibirIncluirAssinatura = false;  
826 - $scope.exibirDocJaAssinado = false;  
827 - _obterAssinaturasDocumento(documento.id).then(function(documentoSelecionado){  
828 - $scope.documentoSelecionado = documentoSelecionado;  
829 - if($scope.documentoSelecionado.assinaturas.length >0)  
830 - $scope.exibirAssinarDocAnexo = true;  
831 - else  
832 - $scope.showAlert("warning", $translate.instant('ECM.MSG.DOCUMENTO_SEM_ASSINATURAS'));  
833 - }); 744 + $scope.exibirAssinarDocAnexo = true;
  745 + $timeout( function () {
  746 + angular.element( "#documentoAssinatura" ).scope().visualizarAssinaturasDocumento(documento);
  747 + } );
834 }; 748 };
835 749
  750 +
836 }] ); 751 }] );
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoListUnidadeController.js
@@ -29,8 +29,8 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow @@ -29,8 +29,8 @@ citApp.controller(&#39;GerenciarProcessoListUnidadeController&#39;, [&#39;$scope&#39;, &#39;workflow
29 $scope.filterCriteria = { 29 $scope.filterCriteria = {
30 nome : 'GRID_PROCESSO_NA_UNIDADE', 30 nome : 'GRID_PROCESSO_NA_UNIDADE',
31 start : 1, 31 start : 1,
32 - dir : 'asc',  
33 - sort : 'processo.nup', 32 + dir : 'desc',
  33 + sort : 'processo.dataCriacao',
34 limit : 10, 34 limit : 10,
35 fields: ['id', 'processo.nup', 'processo.tipoProcesso.descricao', 'processo.assuntoComplementar','usuarioResponsavel.username', 'processo.status.descricao', 'processo.nivelAcesso.nivelAcesso.descricao', 'processo.dataCriacao', 'processo.idProcessInstance', 'processo.dataReferencia', 'processo.assunto'], 35 fields: ['id', 'processo.nup', 'processo.tipoProcesso.descricao', 'processo.assuntoComplementar','usuarioResponsavel.username', 'processo.status.descricao', 'processo.nivelAcesso.nivelAcesso.descricao', 'processo.dataCriacao', 'processo.idProcessInstance', 'processo.dataReferencia', 'processo.assunto'],
36 filters : [ 36 filters : [
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaView.html
1 -<div id="documentoAssinatura" class="widget-box margin-bottom" ng-controller="GerenciarProcessoController"> 1 +<div id="documentoAssinatura" class="widget-box margin-bottom" ng-controller="AssinarDocumentoController as assinarDocumentoController">
2 <div class="widget-header"> 2 <div class="widget-header">
3 <h2 class="widget-title"> 3 <h2 class="widget-title">
4 <div ng-if="exibirIncluirAssinatura"> 4 <div ng-if="exibirIncluirAssinatura">
5 - <translate>ECM.LABEL.ASSINATURA_DO_DOCUMENTO</translate> : {{numeroDocumento}} 5 + <translate>ECM.LABEL.ASSINATURA_DO_DOCUMENTO</translate> : {{documentoSelecionado.numero}}
  6 + <translate style="margin-left: 20px;">ECM.LABEL.VERSAO_ATUAL</translate> : {{documentoSelecionado.versaoDocumento | limitTo:3}}
6 </div> 7 </div>
7 <div ng-if="!exibirIncluirAssinatura"> 8 <div ng-if="!exibirIncluirAssinatura">
8 - <translate>ECM.LABEL.ASSINATURAS_DOCUMENTO</translate> : {{numeroDocumento}} 9 + <translate>ECM.LABEL.ASSINATURAS_DOCUMENTO</translate> : {{documentoSelecionado.numero}}
  10 + <translate style="margin-left: 20px;">ECM.LABEL.VERSAO_ATUAL</translate> : {{documentoSelecionado.versaoDocumento | limitTo:3}}
9 </div> 11 </div>
10 </h2> 12 </h2>
11 <div class="widget-toolbar"> 13 <div class="widget-toolbar">
12 <a href="#void" ng-click="widgetAssinarDocIsCollapsed = !widgetAssinarDocIsCollapsed"> 14 <a href="#void" ng-click="widgetAssinarDocIsCollapsed = !widgetAssinarDocIsCollapsed">
13 <i class="fa" ng-class="{'fa-chevron-up': !widgetAssinarDocIsCollapsed, 'fa-chevron-down': widgetAssinarDocIsCollapsed}"></i> 15 <i class="fa" ng-class="{'fa-chevron-up': !widgetAssinarDocIsCollapsed, 'fa-chevron-down': widgetAssinarDocIsCollapsed}"></i>
14 </a> 16 </a>
  17 + <a href="#void" ng-click="$parent.closeWidget('documentoAssinatura');"> <i class="fa fa-close"></i></a>
15 </div> 18 </div>
16 </div> 19 </div>
  20 +
17 <div class="widget-body" collapse="widgetAssinarDocIsCollapsed"> 21 <div class="widget-body" collapse="widgetAssinarDocIsCollapsed">
18 <div class="widget-main clearfix"> 22 <div class="widget-main clearfix">
19 <div class="page-content clearfix"> 23 <div class="page-content clearfix">
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturas.html
1 -<div class="row" ng-if="documentoSelecionado.assinaturas.length > 0"> 1 +<div class="row" ng-if="documentosSelecionados.length > 0">
2 <div class="col-sm-12"> 2 <div class="col-sm-12">
3 <table class="table table-striped table-bordered table-hover"> 3 <table class="table table-striped table-bordered table-hover">
4 <thead> 4 <thead>
@@ -11,10 +11,10 @@ @@ -11,10 +11,10 @@
11 <th><small><translate>ECM.LABEL.DATA_DA_ASSINATURA</translate></small></th> 11 <th><small><translate>ECM.LABEL.DATA_DA_ASSINATURA</translate></small></th>
12 </tr> 12 </tr>
13 </thead> 13 </thead>
14 - <tbody>  
15 - <tr ng-repeat="assinatura in documentoSelecionado.assinaturas"> 14 + <tbody ng-repeat="docSelecionado in documentosSelecionados">
  15 + <tr ng-repeat="assinatura in docSelecionado.assinaturas">
16 <td> 16 <td>
17 - <small>{{documentoSelecionado.versaoDocumento}}</small> 17 + <small>{{docSelecionado.versaoDocumento}}</small>
18 </td> 18 </td>
19 <td> 19 <td>
20 <small>{{assinatura.usuario.username}}</small> 20 <small>{{assinatura.usuario.username}}</small>
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 <small>{{assinatura.funcao.nome}}</small> 23 <small>{{assinatura.funcao.nome}}</small>
24 </td> 24 </td>
25 <td> 25 <td>
26 - <small>{{documentoSelecionado.unidadeNome}}</small> 26 + <small>{{docSelecionado.unidadeNome}}</small>
27 </td> 27 </td>
28 <td> 28 <td>
29 <small>{{assinatura.tipoAssinatura.descricao}}</small> 29 <small>{{assinatura.tipoAssinatura.descricao}}</small>
@@ -31,8 +31,15 @@ @@ -31,8 +31,15 @@
31 <td> 31 <td>
32 <small>{{assinatura.dataCriacao | date : 'dd/MM/yyyy HH:mm:ss'}}</small> 32 <small>{{assinatura.dataCriacao | date : 'dd/MM/yyyy HH:mm:ss'}}</small>
33 </td> 33 </td>
34 - </tr> 34 + </tr>
35 </tbody> 35 </tbody>
  36 + <tfoot>
  37 + <tr ng-hide="nenhumaAssinatura">
  38 + <td colspan="6">
  39 + <strong><translate>ECM.LABEL.DOCUMENTO_SEM_ASSINATURA</translate></strong>
  40 + </td>
  41 + </tr>
  42 + </tfoot>
36 </table> 43 </table>
37 </div> 44 </div>
38 </div> 45 </div>
39 \ No newline at end of file 46 \ No newline at end of file
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeAcaoProcesso.html
@@ -23,8 +23,6 @@ @@ -23,8 +23,6 @@
23 23
24 <div ng-include src="'/cit-ecm-web/html/atribuirProcesso/atribuir.html'" ng-show="isAtribuirProcesso" /> 24 <div ng-include src="'/cit-ecm-web/html/atribuirProcesso/atribuir.html'" ng-show="isAtribuirProcesso" />
25 25
26 -<div ng-include src="'/cit-ecm-web/html/atribuirProcesso/atribuir.html'" ng-show="isAtribuirProcesso" />  
27 -  
28 <!-- Assinatura documento --> 26 <!-- Assinatura documento -->
29 <div ng-include src="'/cit-ecm-web/html/assinatura/documentoAssinaturaView.html'" ng-show="exibirAssinarDocAnexo" /> 27 <div ng-include src="'/cit-ecm-web/html/assinatura/documentoAssinaturaView.html'" ng-show="exibirAssinarDocAnexo" />
30 28
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeDocumentosProcesso.html
@@ -21,12 +21,13 @@ @@ -21,12 +21,13 @@
21 ng-show="documento.sigilo.tipoSigilo.codigo == 1 ">{{documento.sigilo.tipoSigilo.descricao}}</span> <span class="label label-black" ng-show="documento.sigilo.tipoSigilo.codigo == 2 ">{{documento.sigilo.tipoSigilo.descricao}}</span> 21 ng-show="documento.sigilo.tipoSigilo.codigo == 1 ">{{documento.sigilo.tipoSigilo.descricao}}</span> <span class="label label-black" ng-show="documento.sigilo.tipoSigilo.codigo == 2 ">{{documento.sigilo.tipoSigilo.descricao}}</span>
22 <span class="label label-warning" ng-show="documento.nivelAcesso.nivelAcesso.codigo == 1">{{documento.nivelAcesso.nivelAcesso.descricao}}</span> <span class="label label-success" 22 <span class="label label-warning" ng-show="documento.nivelAcesso.nivelAcesso.codigo == 1">{{documento.nivelAcesso.nivelAcesso.descricao}}</span> <span class="label label-success"
23 ng-show="documento.nivelAcesso.nivelAcesso.codigo == 2">{{documento.nivelAcesso.nivelAcesso.descricao}}</span> <span class="label label-info" ng-show="documento.origem">Anexado</span> <span 23 ng-show="documento.nivelAcesso.nivelAcesso.codigo == 2">{{documento.nivelAcesso.nivelAcesso.descricao}}</span> <span class="label label-info" ng-show="documento.origem">Anexado</span> <span
24 - class="label label-info" ng-show="false">Assinado</span> <span class="label label-success" ng-show="false">Habilitado</span> <span class="label label-warning" ng-show="false">Ci&#xEA;ncia</span> <span 24 + class="label label-info" ng-show="documento.assinaturas && documento.assinaturas.length > 0">Assinado</span> <span class="label label-success" ng-show="false">Habilitado</span> <span class="label label-warning" ng-show="false">Ci&#xEA;ncia</span> <span
25 class="label label-danger" ng-show="documento.cancelado">Cancelado</span> 25 class="label label-danger" ng-show="documento.cancelado">Cancelado</span>
  26 +
26 </div> 27 </div>
  28 +
27 </div> 29 </div>
28 30
29 -  
30 <div ng-if="!isProcessoView" class="tools btn-group dropdown" role="group" dropdown> 31 <div ng-if="!isProcessoView" class="tools btn-group dropdown" role="group" dropdown>
31 <button type="button" class="btn btn-success btn-xs" dropdown-toggle> 32 <button type="button" class="btn btn-success btn-xs" dropdown-toggle>
32 <translate>LABEL.ACOES</translate> 33 <translate>LABEL.ACOES</translate>
@@ -44,4 +45,8 @@ @@ -44,4 +45,8 @@
44 </ul> 45 </ul>
45 46
46 </div> 47 </div>
  48 +
  49 + <div class="versoes">
  50 + <span><translate>ECM.LABEL.VERSAO_ATUAL</translate>: {{documento.versaoDocumento | limitTo:3}}</span>
  51 + </div>
47 </div> 52 </div>
48 \ No newline at end of file 53 \ No newline at end of file