Commit 506a3c81e4b563c50285eaa4fa94a2ae344ca775
Exists in
master
Merge branch 'tarefa-4583' into desenvolvimento
Showing
24 changed files
with
818 additions
and
70 deletions
Show diff stats
cit-ecm-api/src/main/java/br/com/centralit/api/dao/AssinaturaDao.java
0 → 100644
@@ -0,0 +1,25 @@ | @@ -0,0 +1,25 @@ | ||
1 | +package br.com.centralit.api.dao; | ||
2 | + | ||
3 | +import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; | ||
4 | + | ||
5 | + | ||
6 | +/** | ||
7 | + * <p><b>Title: </b></p> | ||
8 | + * <p><b>Description: </b></p> | ||
9 | + * | ||
10 | + * @since 22/04/2016 - 11:52:08 | ||
11 | + * @author rogerio.cassimiro | ||
12 | + * | ||
13 | + */ | ||
14 | +public interface AssinaturaDao extends CitGenericDAO{ | ||
15 | + | ||
16 | + /** | ||
17 | + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado | ||
18 | + * @author rogerio.cassimiro | ||
19 | + * @param idDocumento | ||
20 | + * @param idUsuario | ||
21 | + * @return {@link Boolean} | ||
22 | + */ | ||
23 | + Boolean validarAssinaturaPorUsuario(Long idDocumento, Long idUsuario); | ||
24 | + | ||
25 | +} |
cit-ecm-api/src/main/java/br/com/centralit/api/dao/impl/AssinaturaDaoHibernate.java
0 → 100644
@@ -0,0 +1,41 @@ | @@ -0,0 +1,41 @@ | ||
1 | +package br.com.centralit.api.dao.impl; | ||
2 | + | ||
3 | +import org.springframework.stereotype.Repository; | ||
4 | + | ||
5 | +import br.com.centralit.api.dao.AssinaturaDao; | ||
6 | +import br.com.centralit.api.model.Assinatura; | ||
7 | +import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; | ||
8 | +import br.com.centralit.framework.dao.arquitetura.SearchSeven; | ||
9 | + | ||
10 | + | ||
11 | +/** | ||
12 | + * <p><b>Title: </b></p> | ||
13 | + * <p><b>Description: </b></p> | ||
14 | + * | ||
15 | + * @since 22/04/2016 - 11:54:06 | ||
16 | + * @author rogerio.cassimiro | ||
17 | + * | ||
18 | + */ | ||
19 | +@Repository("assinaturaDao") | ||
20 | +public class AssinaturaDaoHibernate extends CitGenericDAOImpl implements AssinaturaDao{ | ||
21 | + | ||
22 | + public AssinaturaDaoHibernate() { | ||
23 | + super(Assinatura.class); | ||
24 | + } | ||
25 | + | ||
26 | + /** | ||
27 | + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado | ||
28 | + * @author rogerio.cassimiro | ||
29 | + * @param idDocumento | ||
30 | + * @param idUsuario | ||
31 | + * @return {@link Boolean} | ||
32 | + */ | ||
33 | + @Override | ||
34 | + public Boolean validarAssinaturaPorUsuario(Long idDocumento, Long idUsuario) { | ||
35 | + SearchSeven searchSeven = new SearchSeven(); | ||
36 | + searchSeven.addFilterEqual("documentoGed.id", idDocumento); | ||
37 | + searchSeven.addFilterEqual("usuario.id", idUsuario); | ||
38 | + return this.count(searchSeven) > 0; | ||
39 | + } | ||
40 | + | ||
41 | +} | ||
0 | \ No newline at end of file | 42 | \ No newline at end of file |
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,8 +6,11 @@ import javax.persistence.GeneratedValue; | @@ -6,8 +6,11 @@ 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; |
13 | +import br.com.centralit.framework.model.Dominio; | ||
11 | import br.com.centralit.framework.model.Usuario; | 14 | import br.com.centralit.framework.model.Usuario; |
12 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit; | 15 | import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit; |
13 | 16 | ||
@@ -58,12 +61,26 @@ public class Assinatura extends PersistentObjectAudit { | @@ -58,12 +61,26 @@ public class Assinatura extends PersistentObjectAudit { | ||
58 | private Long id; | 61 | private Long id; |
59 | 62 | ||
60 | /** Atributo usuario. */ | 63 | /** Atributo usuario. */ |
64 | + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class }) | ||
61 | @ManyToOne(fetch = FetchType.LAZY) | 65 | @ManyToOne(fetch = FetchType.LAZY) |
62 | private Usuario usuario; | 66 | private Usuario usuario; |
63 | 67 | ||
64 | - /** Atributo documento. */ | 68 | + /** Atributo documentoGed. */ |
65 | @ManyToOne(fetch = FetchType.LAZY) | 69 | @ManyToOne(fetch = FetchType.LAZY) |
66 | - private Documento documento; | 70 | + private DocumentoGed documentoGed; |
71 | + | ||
72 | + /** Atributo tipoAssinatura. */ | ||
73 | + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class }) | ||
74 | + @ManyToOne(fetch = FetchType.LAZY) | ||
75 | + private Dominio tipoAssinatura; | ||
76 | + | ||
77 | + /** Atributo funcao. */ | ||
78 | + @ManyToOne(fetch = FetchType.LAZY) | ||
79 | + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class }) | ||
80 | + private Funcao funcao; | ||
81 | + | ||
82 | + @Transient | ||
83 | + private Long idTask; | ||
67 | 84 | ||
68 | /** | 85 | /** |
69 | * Retorna o valor do atributo <code>id</code> | 86 | * Retorna o valor do atributo <code>id</code> |
@@ -106,23 +123,83 @@ public class Assinatura extends PersistentObjectAudit { | @@ -106,23 +123,83 @@ public class Assinatura extends PersistentObjectAudit { | ||
106 | } | 123 | } |
107 | 124 | ||
108 | /** | 125 | /** |
109 | - * Retorna o valor do atributo <code>documento</code> | 126 | + * Retorna o valor do atributo <code>documentoGed</code> |
127 | + * | ||
128 | + * @return <code>DocumentoGed</code> | ||
129 | + */ | ||
130 | + public DocumentoGed getDocumentoGed() { | ||
131 | + | ||
132 | + return documentoGed; | ||
133 | + } | ||
134 | + | ||
135 | + /** | ||
136 | + * Define o valor do atributo <code>documentoGed</code>. | ||
137 | + * | ||
138 | + * @param documentoGed | ||
139 | + */ | ||
140 | + public void setDocumentoGed(DocumentoGed documentoGed) { | ||
141 | + | ||
142 | + this.documentoGed = documentoGed; | ||
143 | + } | ||
144 | + | ||
145 | + /** | ||
146 | + * Retorna o valor do atributo <code>tipoAssinatura</code> | ||
147 | + * | ||
148 | + * @return <code>Dominio</code> | ||
149 | + */ | ||
150 | + public Dominio getTipoAssinatura() { | ||
151 | + | ||
152 | + return tipoAssinatura; | ||
153 | + } | ||
154 | + | ||
155 | + /** | ||
156 | + * Define o valor do atributo <code>tipoAssinatura</code>. | ||
110 | * | 157 | * |
111 | - * @return <code>Documento</code> | 158 | + * @param tipoAssinatura |
159 | + */ | ||
160 | + public void setTipoAssinatura(Dominio tipoAssinatura) { | ||
161 | + | ||
162 | + this.tipoAssinatura = tipoAssinatura; | ||
163 | + } | ||
164 | + | ||
165 | + /** | ||
166 | + * Retorna o valor do atributo <code>funcao</code> | ||
167 | + * | ||
168 | + * @return <code>Funcao</code> | ||
169 | + */ | ||
170 | + public Funcao getFuncao() { | ||
171 | + | ||
172 | + return funcao; | ||
173 | + } | ||
174 | + | ||
175 | + /** | ||
176 | + * Define o valor do atributo <code>funcao</code>. | ||
177 | + * | ||
178 | + * @param funcao | ||
179 | + */ | ||
180 | + public void setFuncao(Funcao funcao) { | ||
181 | + | ||
182 | + this.funcao = funcao; | ||
183 | + } | ||
184 | + | ||
185 | + /** | ||
186 | + * Retorna o valor do atributo <code>idTask</code> | ||
187 | + * | ||
188 | + * @return <code>Long</code> | ||
112 | */ | 189 | */ |
113 | - public Documento getDocumento() { | 190 | + public Long getIdTask() { |
114 | 191 | ||
115 | - return documento; | 192 | + return idTask; |
116 | } | 193 | } |
117 | 194 | ||
118 | /** | 195 | /** |
119 | - * Define o valor do atributo <code>documento</code>. | 196 | + * Define o valor do atributo <code>idTask</code>. |
120 | * | 197 | * |
121 | - * @param documento | 198 | + * @param idTask |
122 | */ | 199 | */ |
123 | - public void setDocumento(Documento documento) { | 200 | + public void setIdTask(Long idTask) { |
124 | 201 | ||
125 | - this.documento = documento; | 202 | + this.idTask = idTask; |
126 | } | 203 | } |
127 | 204 | ||
128 | } | 205 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/model/Assunto.java
1 | package br.com.centralit.api.model; | 1 | package br.com.centralit.api.model; |
2 | 2 | ||
3 | -import javax.persistence.Entity; | ||
4 | import javax.persistence.FetchType; | 3 | import javax.persistence.FetchType; |
5 | import javax.persistence.GeneratedValue; | 4 | import javax.persistence.GeneratedValue; |
6 | import javax.persistence.GenerationType; | 5 | import javax.persistence.GenerationType; |
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. */ |
@@ -240,6 +240,10 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | @@ -240,6 +240,10 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | ||
240 | @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) | 240 | @JsonView({ ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) |
241 | private Collection<InteressadoDocumento> interessados; | 241 | private Collection<InteressadoDocumento> interessados; |
242 | 242 | ||
243 | + @OneToMany(fetch = FetchType.LAZY, mappedBy = "documentoGed") | ||
244 | + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.DocumentoGedEdit.class, Views.ProcessoEdit.class }) | ||
245 | + private Collection<Assinatura> assinaturas; | ||
246 | + | ||
243 | /** | 247 | /** |
244 | * @return the novaVersao | 248 | * @return the novaVersao |
245 | */ | 249 | */ |
@@ -986,6 +990,14 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | @@ -986,6 +990,14 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | ||
986 | public Dominio getEstado() { | 990 | public Dominio getEstado() { |
987 | 991 | ||
988 | return estado; | 992 | return estado; |
993 | + /** | ||
994 | + * Retorna o valor do atributo <code>assinaturas</code> | ||
995 | + * | ||
996 | + * @return <code>Collection<Assinatura></code> | ||
997 | + */ | ||
998 | + public Collection<Assinatura> getAssinaturas() { | ||
999 | + | ||
1000 | + return assinaturas; | ||
989 | } | 1001 | } |
990 | 1002 | ||
991 | /** | 1003 | /** |
@@ -999,3 +1011,15 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | @@ -999,3 +1011,15 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | ||
999 | } | 1011 | } |
1000 | 1012 | ||
1001 | } | 1013 | } |
1014 | + | ||
1015 | + /** | ||
1016 | + * Define o valor do atributo <code>assinaturas</code>. | ||
1017 | + * | ||
1018 | + * @param assinaturas | ||
1019 | + */ | ||
1020 | + public void setAssinaturas(Collection<Assinatura> assinaturas) { | ||
1021 | + | ||
1022 | + this.assinaturas = assinaturas; | ||
1023 | + } | ||
1024 | + | ||
1025 | +} |
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/AssinaturaService.java
0 → 100644
@@ -0,0 +1,25 @@ | @@ -0,0 +1,25 @@ | ||
1 | +package br.com.centralit.api.service; | ||
2 | + | ||
3 | +import br.com.centralit.api.model.Assinatura; | ||
4 | +import br.com.centralit.framework.service.arquitetura.GenericService; | ||
5 | + | ||
6 | + | ||
7 | +/** | ||
8 | + * <p><b>Title: </b></p> | ||
9 | + * <p><b>Description: </b></p> | ||
10 | + * | ||
11 | + * @since 22/04/2016 - 11:48:53 | ||
12 | + * @author rogerio.cassimiro | ||
13 | + * | ||
14 | + */ | ||
15 | +public interface AssinaturaService extends GenericService<Assinatura, Long>{ | ||
16 | + | ||
17 | + Assinatura saveAssinaturaInterna(Assinatura entity); | ||
18 | + | ||
19 | + /** | ||
20 | + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado | ||
21 | + * @author rogerio.cassimiro | ||
22 | + * @return {@link Boolean} | ||
23 | + */ | ||
24 | + Boolean validarAssinaturaPorUsuario(Long idDocumento); | ||
25 | +} | ||
0 | \ No newline at end of file | 26 | \ No newline at end of file |
cit-ecm-api/src/main/java/br/com/centralit/api/service/HistoricoAlteracaoProcessoService.java
@@ -2,6 +2,7 @@ package br.com.centralit.api.service; | @@ -2,6 +2,7 @@ package br.com.centralit.api.service; | ||
2 | 2 | ||
3 | import java.util.Collection; | 3 | import java.util.Collection; |
4 | 4 | ||
5 | +import br.com.centralit.api.model.Assinatura; | ||
5 | import br.com.centralit.api.model.HistoricoAlteracaoProcesso; | 6 | import br.com.centralit.api.model.HistoricoAlteracaoProcesso; |
6 | import br.com.centralit.framework.service.arquitetura.GenericService; | 7 | import br.com.centralit.framework.service.arquitetura.GenericService; |
7 | 8 | ||
@@ -95,4 +96,10 @@ public interface HistoricoAlteracaoProcessoService extends GenericService<Histor | @@ -95,4 +96,10 @@ public interface HistoricoAlteracaoProcessoService extends GenericService<Histor | ||
95 | */ | 96 | */ |
96 | boolean saveWithParams(HistoricoAlteracaoProcesso historicoView); | 97 | boolean saveWithParams(HistoricoAlteracaoProcesso historicoView); |
97 | 98 | ||
99 | + /** | ||
100 | + * Método responsável por gerar histórico de alteração do processo por assinatura de documento | ||
101 | + * @author rogerio.cassimiro | ||
102 | + * @param assinatura | ||
103 | + */ | ||
104 | + void gerarHistoricoAssinatura(Assinatura assinatura); | ||
98 | } | 105 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaServiceImpl.java
0 → 100644
@@ -0,0 +1,76 @@ | @@ -0,0 +1,76 @@ | ||
1 | +package br.com.centralit.api.service.impl; | ||
2 | + | ||
3 | +import org.springframework.beans.factory.annotation.Autowired; | ||
4 | +import org.springframework.security.core.context.SecurityContextHolder; | ||
5 | +import org.springframework.stereotype.Service; | ||
6 | + | ||
7 | +import br.com.centralit.api.dao.AssinaturaDao; | ||
8 | +import br.com.centralit.api.model.Assinatura; | ||
9 | +import br.com.centralit.api.service.AssinaturaService; | ||
10 | +import br.com.centralit.api.service.DocumentoGedService; | ||
11 | +import br.com.centralit.api.service.DominioService; | ||
12 | +import br.com.centralit.api.service.FuncaoService; | ||
13 | +import br.com.centralit.api.service.HistoricoAlteracaoProcessoService; | ||
14 | +import br.com.centralit.api.service.UsuarioService; | ||
15 | +import br.com.centralit.framework.model.Dominio; | ||
16 | +import br.com.centralit.framework.model.Usuario; | ||
17 | +import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; | ||
18 | + | ||
19 | + | ||
20 | +/** | ||
21 | + * <p><b>Title: </b></p> | ||
22 | + * <p><b>Description: </b></p> | ||
23 | + * | ||
24 | + * @since 22/04/2016 - 11:50:56 | ||
25 | + * @author rogerio.cassimiro | ||
26 | + * | ||
27 | + */ | ||
28 | +@Service("assinaturaService") | ||
29 | +public class AssinaturaServiceImpl extends GenericServiceImpl<Assinatura, Long> implements AssinaturaService { | ||
30 | + | ||
31 | + @Autowired | ||
32 | + private AssinaturaDao assinaturaDao; | ||
33 | + | ||
34 | + @Autowired | ||
35 | + private DocumentoGedService documentoGedService; | ||
36 | + | ||
37 | + @Autowired | ||
38 | + private UsuarioService usuarioService; | ||
39 | + | ||
40 | + @Autowired | ||
41 | + private DominioService dominioService; | ||
42 | + | ||
43 | + @Autowired | ||
44 | + private FuncaoService funcaoService; | ||
45 | + | ||
46 | + @Autowired | ||
47 | + private HistoricoAlteracaoProcessoService historicoAlteracaoProcessoService; | ||
48 | + | ||
49 | + @Autowired | ||
50 | + public AssinaturaServiceImpl( AssinaturaDao assinaturaDao) { | ||
51 | + this.dao = assinaturaDao; | ||
52 | + } | ||
53 | + | ||
54 | + /** | ||
55 | + * Salva assinatura do documento e gera histórico | ||
56 | + */ | ||
57 | + @Override | ||
58 | + public Assinatura saveAssinaturaInterna(Assinatura assinatura) { | ||
59 | + assinatura.setDocumentoGed(this.documentoGedService.getReference(assinatura.getDocumentoGed().getId())); | ||
60 | + assinatura.setUsuario((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()); | ||
61 | + assinatura.setTipoAssinatura(dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA)); | ||
62 | + assinatura.setFuncao(funcaoService.getReference(assinatura.getFuncao().getId())); | ||
63 | + historicoAlteracaoProcessoService.gerarHistoricoAssinatura(assinatura); | ||
64 | + return super.save(assinatura); | ||
65 | + } | ||
66 | + | ||
67 | + /** | ||
68 | + * Método responsável por validar se o usuário já teve assinatura anterior para o documento informado | ||
69 | + * @author rogerio.cassimiro | ||
70 | + * @return {@link Boolean} | ||
71 | + */ | ||
72 | + @Override | ||
73 | + public Boolean validarAssinaturaPorUsuario(Long idDocumento) { | ||
74 | + return this.assinaturaDao.validarAssinaturaPorUsuario(idDocumento, ((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId()); | ||
75 | + } | ||
76 | +} |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/HistoricoAlteracaoProcessoServiceImpl.java
@@ -8,14 +8,17 @@ import java.util.Map.Entry; | @@ -8,14 +8,17 @@ import java.util.Map.Entry; | ||
8 | 8 | ||
9 | import org.apache.commons.lang.StringUtils; | 9 | import org.apache.commons.lang.StringUtils; |
10 | import org.springframework.beans.factory.annotation.Autowired; | 10 | import org.springframework.beans.factory.annotation.Autowired; |
11 | +import org.springframework.security.core.context.SecurityContextHolder; | ||
11 | import org.springframework.stereotype.Service; | 12 | import org.springframework.stereotype.Service; |
12 | 13 | ||
13 | import br.com.centralit.api.dao.HistoricoAlteracaoProcessoDao; | 14 | import br.com.centralit.api.dao.HistoricoAlteracaoProcessoDao; |
14 | import br.com.centralit.api.model.AcaoHistoricoAlteracaoProcesso; | 15 | import br.com.centralit.api.model.AcaoHistoricoAlteracaoProcesso; |
16 | +import br.com.centralit.api.model.Assinatura; | ||
15 | import br.com.centralit.api.model.HistoricoAlteracaoProcesso; | 17 | import br.com.centralit.api.model.HistoricoAlteracaoProcesso; |
16 | import br.com.centralit.api.service.AcaoHistoricoAlteracaoProcessoService; | 18 | import br.com.centralit.api.service.AcaoHistoricoAlteracaoProcessoService; |
17 | import br.com.centralit.api.service.HistoricoAlteracaoProcessoService; | 19 | import br.com.centralit.api.service.HistoricoAlteracaoProcessoService; |
18 | import br.com.centralit.api.service.ProcessoService; | 20 | import br.com.centralit.api.service.ProcessoService; |
21 | +import br.com.centralit.framework.model.Usuario; | ||
19 | import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; | 22 | import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; |
20 | import br.com.centralit.framework.util.UtilObjeto; | 23 | import br.com.centralit.framework.util.UtilObjeto; |
21 | 24 | ||
@@ -105,6 +108,7 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl<Hi | @@ -105,6 +108,7 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl<Hi | ||
105 | toSave.setIdTask(historicoView.getIdTask()); | 108 | toSave.setIdTask(historicoView.getIdTask()); |
106 | toSave.setAcaoAlteracao(acao.getAcao()); | 109 | toSave.setAcaoAlteracao(acao.getAcao()); |
107 | toSave.setDataRegistro(Calendar.getInstance()); | 110 | toSave.setDataRegistro(Calendar.getInstance()); |
111 | + toSave.setDocumentoGed(historicoView.getDocumentoGed()); | ||
108 | 112 | ||
109 | toSave = (HistoricoAlteracaoProcesso) historicoAlteracaoProcessoDao.save(toSave); | 113 | toSave = (HistoricoAlteracaoProcesso) historicoAlteracaoProcessoDao.save(toSave); |
110 | 114 | ||
@@ -118,7 +122,7 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl<Hi | @@ -118,7 +122,7 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl<Hi | ||
118 | 122 | ||
119 | return ( (HistoricoAlteracaoProcesso) historicoAlteracaoProcessoDao.save(toSave) ) != null ? true : false; | 123 | return ( (HistoricoAlteracaoProcesso) historicoAlteracaoProcessoDao.save(toSave) ) != null ? true : false; |
120 | } | 124 | } |
121 | - | 125 | + |
122 | private void produceViewParams(HistoricoAlteracaoProcesso historico, HistoricoAlteracaoProcesso toSave) { | 126 | private void produceViewParams(HistoricoAlteracaoProcesso historico, HistoricoAlteracaoProcesso toSave) { |
123 | 127 | ||
124 | Map<String, String> mapaAtributos; | 128 | Map<String, String> mapaAtributos; |
@@ -195,5 +199,23 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl<Hi | @@ -195,5 +199,23 @@ public class HistoricoAlteracaoProcessoServiceImpl extends GenericServiceImpl<Hi | ||
195 | } | 199 | } |
196 | historico.setDescricaoAcao(descricaoAcao); | 200 | historico.setDescricaoAcao(descricaoAcao); |
197 | } | 201 | } |
198 | - | 202 | + |
203 | + /** | ||
204 | + * Método responsável por gerar histórico de alteração do processo por assinatura de documento | ||
205 | + * @author rogerio.cassimiro | ||
206 | + * @param assinatura | ||
207 | + */ | ||
208 | + @Override | ||
209 | + public void gerarHistoricoAssinatura(Assinatura assinatura) { | ||
210 | + | ||
211 | + Usuario usuario = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); | ||
212 | + Map<String, String> mapaAtributos = new HashMap<String, String>(); | ||
213 | + mapaAtributos.put("tipo_documento", null); | ||
214 | + mapaAtributos.put("numero_documento", null); | ||
215 | + HistoricoAlteracaoProcesso hap = new HistoricoAlteracaoProcesso(assinatura.getDocumentoGed().getProcesso(), Calendar.getInstance(), | ||
216 | + usuario.getUnidade().getNome(), usuario.getUsername(), assinatura.getIdTask(), AcaoHistoricoAlteracaoProcesso.ASSINAR_DOCUMENTO_DESCRICAO, | ||
217 | + AcaoHistoricoAlteracaoProcesso.ASSINAR_DOCUMENTO_CHAVE, assinatura.getDocumentoGed(), mapaAtributos); | ||
218 | + hap.setAutor(usuario); | ||
219 | + this.saveWithParams(hap); | ||
220 | + } | ||
199 | } | 221 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/InicializarEcmServiceImpl.java
@@ -140,7 +140,9 @@ public class InicializarEcmServiceImpl extends UtilStartup { | @@ -140,7 +140,9 @@ 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)); | ||
145 | + filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/repository/AssinaturaRepository.js", this.dominioJS, menuCadastroProcesso)); | ||
144 | 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)); |
145 | 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)); |
146 | filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/controller/GerenciarProcessoController.js", this.dominioJS, menuCadastroProcesso)); | 148 | filesProcesso.add(new MenuFile("/cit-ecm-web/assets/js/angular/custom/controller/GerenciarProcessoController.js", this.dominioJS, menuCadastroProcesso)); |
cit-ecm-web/src/main/java/br/com/centralit/controller/AssinaturaController.java
0 → 100644
@@ -0,0 +1,72 @@ | @@ -0,0 +1,72 @@ | ||
1 | +package br.com.centralit.controller; | ||
2 | + | ||
3 | +import org.springframework.beans.factory.annotation.Autowired; | ||
4 | +import org.springframework.stereotype.Controller; | ||
5 | +import org.springframework.web.bind.annotation.RequestBody; | ||
6 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
7 | +import org.springframework.web.bind.annotation.RequestMethod; | ||
8 | +import org.springframework.web.bind.annotation.RequestParam; | ||
9 | +import org.springframework.web.bind.annotation.ResponseBody; | ||
10 | + | ||
11 | +import br.com.centralit.api.framework.json.ViewsEcm; | ||
12 | +import br.com.centralit.api.model.Assinatura; | ||
13 | +import br.com.centralit.api.service.AssinaturaService; | ||
14 | +import br.com.centralit.framework.controller.GenericController; | ||
15 | +import br.com.centralit.framework.json.ResponseBodyWrapper; | ||
16 | +import br.com.centralit.framework.json.Views.GenericView; | ||
17 | +import br.com.centralit.framework.view.ResultResponseVH; | ||
18 | + | ||
19 | +/** | ||
20 | + * <p><b>Title: </b>AssinaturaController</p> | ||
21 | + * <p><b>Description: </b></p> | ||
22 | + * | ||
23 | + * @since 22/04/2016 - 11:47:45 | ||
24 | + * @author rogerio.cassimiro | ||
25 | + * | ||
26 | + */ | ||
27 | +@Controller | ||
28 | +@RequestMapping("/rest/assinatura") | ||
29 | +public class AssinaturaController extends GenericController<Assinatura>{ | ||
30 | + | ||
31 | + private AssinaturaService assinaturaService; | ||
32 | + | ||
33 | + @Autowired | ||
34 | + public AssinaturaController(AssinaturaService assinaturaService){ | ||
35 | + super(assinaturaService); | ||
36 | + this.assinaturaService = assinaturaService; | ||
37 | + } | ||
38 | + | ||
39 | + /** | ||
40 | + * Método responsável por salvar assinatura interna | ||
41 | + * @author rogerio.cassimiro | ||
42 | + * @param assinatura | ||
43 | + * @return {@link ResponseBody} | ||
44 | + * @throws Exception | ||
45 | + */ | ||
46 | + @RequestMapping(method = RequestMethod.POST, value = "/saveAssinaturaInterna") | ||
47 | + @ResponseBody | ||
48 | + public ResponseBodyWrapper saveAssinaturaInterna(@RequestBody Assinatura assinatura) throws Exception { | ||
49 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(this.assinaturaService.saveAssinaturaInterna(assinatura), getEditView()); | ||
50 | + return responseBody; | ||
51 | + } | ||
52 | + | ||
53 | + /** | ||
54 | + * Método responsável por validar se o usuário já teve uma assinatura para o documento selecionado | ||
55 | + * @author rogerio.cassimiro | ||
56 | + * @param idDocumento | ||
57 | + * @return {@link Boolean} | ||
58 | + */ | ||
59 | + @RequestMapping(value = "/validarAssinaturaPorUsuario", method = RequestMethod.GET) | ||
60 | + @ResponseBody | ||
61 | + public ResponseBodyWrapper validarAssinaturaPorUsuario(@RequestParam(value = "idDocumento") Long idDocumento) { | ||
62 | + ResultResponseVH<Boolean> resultResponseVH = new ResultResponseVH<Boolean>(this.assinaturaService.validarAssinaturaPorUsuario(idDocumento)); | ||
63 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, this.getEditView()); | ||
64 | + return responseBody; | ||
65 | + } | ||
66 | + | ||
67 | + @Override | ||
68 | + public Class<? extends GenericView> getEditView() { | ||
69 | + return ViewsEcm.DocumentoGedEdit.class; | ||
70 | + } | ||
71 | + | ||
72 | +} |
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
@@ -76,15 +76,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -76,15 +76,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
76 | * <p> | 76 | * <p> |
77 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | 77 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> |
78 | * </p> | 78 | * </p> |
79 | - * | 79 | + * |
80 | * <p> | 80 | * <p> |
81 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | 81 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> |
82 | * </p> | 82 | * </p> |
83 | - * | 83 | + * |
84 | * Método responsável por criar as regras de acesso | 84 | * Método responsável por criar as regras de acesso |
85 | - * | 85 | + * |
86 | * @author rogerio.costa | 86 | * @author rogerio.costa |
87 | - * | 87 | + * |
88 | */ | 88 | */ |
89 | private void criarRegraDeAcesso() { | 89 | private void criarRegraDeAcesso() { |
90 | 90 | ||
@@ -107,9 +107,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -107,9 +107,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
107 | 107 | ||
108 | /** | 108 | /** |
109 | * Método responsável por criar domínios específicos ECM | 109 | * Método responsável por criar domínios específicos ECM |
110 | - * | 110 | + * |
111 | * @author halan.lima | 111 | * @author halan.lima |
112 | - * | 112 | + * |
113 | */ | 113 | */ |
114 | protected void popularAcoesAlteracaoProcesso() { | 114 | protected void popularAcoesAlteracaoProcesso() { |
115 | 115 | ||
@@ -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); |
@@ -153,15 +154,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -153,15 +154,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
153 | * <p> | 154 | * <p> |
154 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | 155 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> |
155 | * </p> | 156 | * </p> |
156 | - * | 157 | + * |
157 | * <p> | 158 | * <p> |
158 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | 159 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> |
159 | * </p> | 160 | * </p> |
160 | - * | 161 | + * |
161 | * Método responsável por incluir dominios | 162 | * Método responsável por incluir dominios |
162 | - * | 163 | + * |
163 | * @author rogerio.costa | 164 | * @author rogerio.costa |
164 | - * | 165 | + * |
165 | */ | 166 | */ |
166 | private void criarDominios() { | 167 | private void criarDominios() { |
167 | 168 | ||
@@ -197,7 +198,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -197,7 +198,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
197 | 198 | ||
198 | list.add(new Dominio("tipoProtocoloNup", "Automático", "EXTERNO", 1L, Boolean.FALSE)); | 199 | list.add(new Dominio("tipoProtocoloNup", "Automático", "EXTERNO", 1L, Boolean.FALSE)); |
199 | list.add(new Dominio("tipoProtocoloNup", "Informado", "NUP_NOVO", 2L, Boolean.FALSE)); | 200 | list.add(new Dominio("tipoProtocoloNup", "Informado", "NUP_NOVO", 2L, Boolean.FALSE)); |
200 | - | 201 | + |
201 | list.add(new Dominio("formaNumeracao", "Sequencial por ano", "SEQUENCIAL_ANO", 1L)); | 202 | list.add(new Dominio("formaNumeracao", "Sequencial por ano", "SEQUENCIAL_ANO", 1L)); |
202 | list.add(new Dominio("formaNumeracao", "Sequencial único", "SEQUENCIAL_UNICO", 2L)); | 203 | list.add(new Dominio("formaNumeracao", "Sequencial único", "SEQUENCIAL_UNICO", 2L)); |
203 | 204 | ||
@@ -205,7 +206,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -205,7 +206,7 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
205 | list.add(new Dominio("statusProcesso", "Em andamento", "EM_ANDAMENTO", 2L)); | 206 | list.add(new Dominio("statusProcesso", "Em andamento", "EM_ANDAMENTO", 2L)); |
206 | list.add(new Dominio("statusProcesso", "Aguardando Validação", "AGUARDANDO_VALIDACAO", 3L)); | 207 | list.add(new Dominio("statusProcesso", "Aguardando Validação", "AGUARDANDO_VALIDACAO", 3L)); |
207 | list.add(new Dominio("statusProcesso", "Validado", "VALIDADO", 4L)); | 208 | list.add(new Dominio("statusProcesso", "Validado", "VALIDADO", 4L)); |
208 | - | 209 | + |
209 | list.add(new Dominio("statusDocumentoGed", "Aguardando Validação", "AGUARDANDO_VALIDACAO", 0L)); | 210 | list.add(new Dominio("statusDocumentoGed", "Aguardando Validação", "AGUARDANDO_VALIDACAO", 0L)); |
210 | list.add(new Dominio("statusDocumentoGed", "Validado", "VALIDADO", 1L)); | 211 | list.add(new Dominio("statusDocumentoGed", "Validado", "VALIDADO", 1L)); |
211 | 212 | ||
@@ -229,11 +230,11 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -229,11 +230,11 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
229 | } | 230 | } |
230 | 231 | ||
231 | /** | 232 | /** |
232 | - * | 233 | + * |
233 | * Método responsável por gerar internacionalização do módulo ECM | 234 | * Método responsável por gerar internacionalização do módulo ECM |
234 | - * | 235 | + * |
235 | * @author rogerio.cassimiro | 236 | * @author rogerio.cassimiro |
236 | - * | 237 | + * |
237 | */ | 238 | */ |
238 | private void gerarInternacionalizacao() { | 239 | private void gerarInternacionalizacao() { |
239 | 240 | ||
@@ -253,15 +254,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -253,15 +254,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
253 | * <p> | 254 | * <p> |
254 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | 255 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> |
255 | * </p> | 256 | * </p> |
256 | - * | 257 | + * |
257 | * <p> | 258 | * <p> |
258 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | 259 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> |
259 | * </p> | 260 | * </p> |
260 | - * | 261 | + * |
261 | * Método responsável por criar labels | 262 | * Método responsável por criar labels |
262 | - * | 263 | + * |
263 | * @author Rogério Gomes | 264 | * @author Rogério Gomes |
264 | - * | 265 | + * |
265 | * @param dominio | 266 | * @param dominio |
266 | * @param modulo | 267 | * @param modulo |
267 | * @param internacionalizacaoList | 268 | * @param internacionalizacaoList |
@@ -449,6 +450,10 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -449,6 +450,10 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
449 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ESTADO", "Estado", dominio, modulo)); | 450 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ESTADO", "Estado", dominio, modulo)); |
450 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.VALIDAR", "Validar", dominio, modulo)); | 451 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.VALIDAR", "Validar", dominio, modulo)); |
451 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NAO_CONTEM_DOCUMENTOS", "Não contém documentos", dominio, modulo)); | 452 | internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NAO_CONTEM_DOCUMENTOS", "Não contém documentos", dominio, modulo)); |
453 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_DA_ASSINATURA", "Data da assinatura", dominio, modulo)); | ||
454 | + internacionalizacaoList.add(new Internacionalizacao("ECM.ASSINADO_SUCESSO", "Documento assinado com sucesso!", dominio, modulo)); | ||
455 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.ASSINATURA_DO_DOCUMENTO", "Assinatura do Documento", dominio, modulo)); | ||
456 | + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DOCUMENTO_SEM_ASSINATURA", "Documento sem assinaturas!", dominio, modulo)); | ||
452 | 457 | ||
453 | } | 458 | } |
454 | 459 | ||
@@ -456,15 +461,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -456,15 +461,15 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
456 | * <p> | 461 | * <p> |
457 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | 462 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> |
458 | * </p> | 463 | * </p> |
459 | - * | 464 | + * |
460 | * <p> | 465 | * <p> |
461 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | 466 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> |
462 | * </p> | 467 | * </p> |
463 | - * | 468 | + * |
464 | * Método responsável por | 469 | * Método responsável por |
465 | - * | 470 | + * |
466 | * @author Rogério Gomes | 471 | * @author Rogério Gomes |
467 | - * | 472 | + * |
468 | * @param dominio | 473 | * @param dominio |
469 | * @param modulo | 474 | * @param modulo |
470 | * @param internacionalizacaoList | 475 | * @param internacionalizacaoList |
@@ -485,21 +490,22 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -485,21 +490,22 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
485 | internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.VALIDAR_ALTERACAO_NIVEL_ACESSO_OUTRAS_UNIDADES", "Não é possível alterar o nível de acesso para sigiloso, pois o processo foi enviado para outra unidade.", dominio, modulo)); | 490 | internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.VALIDAR_ALTERACAO_NIVEL_ACESSO_OUTRAS_UNIDADES", "Não é possível alterar o nível de acesso para sigiloso, pois o processo foi enviado para outra unidade.", dominio, modulo)); |
486 | internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.VALIDAR_NIVEL_ACESSO", "Não é possível incluir documento com o nível de acesso menor que o do processo.", dominio, modulo)); | 491 | internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.VALIDAR_NIVEL_ACESSO", "Não é possível incluir documento com o nível de acesso menor que o do processo.", dominio, modulo)); |
487 | 492 | ||
493 | + internacionalizacaoList.add(new Internacionalizacao("ECM.VALIDACAO.SENHA_ASSINATURA", "Informe sua senha para assinar!", dominio, modulo)); | ||
488 | } | 494 | } |
489 | 495 | ||
490 | /** | 496 | /** |
491 | * <p> | 497 | * <p> |
492 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> | 498 | * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a> |
493 | * </p> | 499 | * </p> |
494 | - * | 500 | + * |
495 | * <p> | 501 | * <p> |
496 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> | 502 | * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a> |
497 | * </p> | 503 | * </p> |
498 | - * | 504 | + * |
499 | * Método responsável por | 505 | * Método responsável por |
500 | - * | 506 | + * |
501 | * @author Rogério Gomes | 507 | * @author Rogério Gomes |
502 | - * | 508 | + * |
503 | * @param dominio | 509 | * @param dominio |
504 | * @param modulo | 510 | * @param modulo |
505 | * @param internacionalizacaoList | 511 | * @param internacionalizacaoList |
@@ -563,5 +569,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -563,5 +569,9 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
563 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_REATIVADA", "Tarefa reativada com sucesso", dominio, modulo)); | 569 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.TAREFA_REATIVADA", "Tarefa reativada com sucesso", dominio, modulo)); |
564 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.VALIDADO", "Validado com sucesso!", dominio, modulo)); | 570 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.VALIDADO", "Validado com sucesso!", dominio, modulo)); |
565 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.SELECIONE_UM_ITEM_PARA_VALIDACAO", "Selecione um item para validar.", dominio, modulo)); | 571 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.SELECIONE_UM_ITEM_PARA_VALIDACAO", "Selecione um item para validar.", dominio, modulo)); |
572 | + 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)); | ||
573 | + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.USUARIO_SEM_PESSOA", "Usuário não está presente no Cadastro de Pessoa!", dominio, modulo)); | ||
574 | + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DOCUMENTO_SEM_ASSINATURAS", "Esta versão do Documento não possui assinaturas!", dominio, modulo)); | ||
575 | + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DOCUMENTO_JA_ASSINADO", "Documento já foi assinado por este usuário!", dominio, modulo)); | ||
566 | } | 576 | } |
567 | } | 577 | } |
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; |
@@ -212,4 +212,9 @@ background-color: #f2f2f2; | @@ -212,4 +212,9 @@ background-color: #f2f2f2; | ||
212 | background-color: rgba(245, 245, 245, 0.61); | 212 | background-color: rgba(245, 245, 245, 0.61); |
213 | } | 213 | } |
214 | 214 | ||
215 | - | ||
216 | \ No newline at end of file | 215 | \ No newline at end of file |
216 | + .versoes { | ||
217 | + font-size : x-small; | ||
218 | + font-weight : bold; | ||
219 | + text-align : right !important; | ||
220 | +} | ||
221 | + |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/AssinarDocumentoController.js
0 → 100644
@@ -0,0 +1,127 @@ | @@ -0,0 +1,127 @@ | ||
1 | +'use strict'; | ||
2 | + | ||
3 | + | ||
4 | +citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'GerenciarProcessoRepository', 'DocumentoGedRepository', 'HistoricoAlteracaoProcessoRepository', 'PessoaRepository', '$q', 'AssinaturaRepository', | ||
5 | + function AssinarDocumentoController($scope, $translate, GerenciarProcessoRepository, DocumentoGedRepository, HistoricoAlteracaoProcessoRepository, PessoaRepository, $q, AssinaturaRepository) { | ||
6 | + | ||
7 | + /* | ||
8 | + * Abre panel assinar documento | ||
9 | + */ | ||
10 | + $scope.abrirAssinarDocumento = function(documento) { | ||
11 | + $scope.documentoSelecionado = null; | ||
12 | + $scope.exibirDocJaAssinado = false; | ||
13 | + DocumentoGedRepository.get(documento.id).then(function(result) { | ||
14 | + $scope.documentoSelecionado = result.originalElement; | ||
15 | + if(documento.formaCriacao.codigo === 1){ | ||
16 | + __abrirAssinarDocOnline(documento); | ||
17 | + } else if(documento.formaCriacao.codigo === 2){ | ||
18 | + __abrirAssinarDocAnexo(documento); | ||
19 | + } | ||
20 | + }); | ||
21 | + }; | ||
22 | + | ||
23 | + function __abrirAssinarDocOnline(documento){ | ||
24 | + _obterAssinaturasDocumento(documento).then(function(documentosSelecionados){ | ||
25 | + $scope.documentosSelecionados = documentosSelecionados; | ||
26 | + _exibirNenhumaAssinatura(); | ||
27 | + _validarAssinaturaPorUsuario(documento.id).then(function(exibirIncluirAssinatura){ | ||
28 | + $scope.exibirIncluirAssinatura = !(exibirIncluirAssinatura == true); | ||
29 | + //_obterPermissaoAssinaturaDocumentoExterno(); | ||
30 | + }); | ||
31 | + }); | ||
32 | + } | ||
33 | + | ||
34 | + function __abrirAssinarDocAnexo(documento){ | ||
35 | + _obterAssinaturasDocumento(documento).then(function(documentosSelecionados){ | ||
36 | + $scope.documentosSelecionados = documentosSelecionados; | ||
37 | + _exibirNenhumaAssinatura(); | ||
38 | + _validarAssinaturaPorUsuario(documento.id).then(function(exibirIncluirAssinatura){ | ||
39 | + $scope.exibirIncluirAssinatura = !(exibirIncluirAssinatura == true); | ||
40 | + $scope.exibirDocJaAssinado = !$scope.exibirIncluirAssinatura; | ||
41 | + //_obterPermissaoAssinaturaDocumentoExterno(); | ||
42 | + }); | ||
43 | + }); | ||
44 | + }; | ||
45 | + | ||
46 | + function _validarAssinaturaPorUsuario(idDocumento){ | ||
47 | + var deferred = $q.defer(); | ||
48 | + AssinaturaRepository.validarAssinaturaPorUsuario(idDocumento).then(function(result){ | ||
49 | + deferred.resolve(result); | ||
50 | + }); | ||
51 | + return deferred.promise; | ||
52 | + } | ||
53 | + | ||
54 | + function _obterAssinaturasDocumento(documento) { | ||
55 | + var deferred = $q.defer(); | ||
56 | + var idRaiz = documento.idRaiz; | ||
57 | + if ( !idRaiz ) | ||
58 | + idRaiz = documento.id; | ||
59 | + DocumentoGedRepository.findByIdDocumentoTodasVersoes(idRaiz).then(function(result) { | ||
60 | + var results = []; | ||
61 | + if(result.length>0){ | ||
62 | + result.forEach(function(item){ | ||
63 | + results.push(item.originalElement); | ||
64 | + }); | ||
65 | + } | ||
66 | + deferred.resolve(results); | ||
67 | + }); | ||
68 | + return deferred.promise; | ||
69 | + } | ||
70 | + | ||
71 | + $scope.assinar = function() { | ||
72 | + if(!$scope.autenticacao){ | ||
73 | + $scope.showAlert("error", $translate.instant('ECM.VALIDACAO.SENHA_ASSINATURA')); | ||
74 | + return; | ||
75 | + } | ||
76 | + | ||
77 | + AssinaturaRepository.saveAssinaturaInterna(_getAssinatura()).then(function(result){ | ||
78 | + if($scope.documentoSelecionado.assinaturas) | ||
79 | + $scope.documentoSelecionado.assinaturas.push(result.originalElement); | ||
80 | + $scope.autenticacao = null; | ||
81 | + $scope.exibirIncluirAssinatura = false; | ||
82 | + $scope.nenhumaAssinatura = false; | ||
83 | + $scope.documentosSelecionados.forEach(function(doc){ | ||
84 | + if(doc.id == $scope.documentoSelecionado.id) | ||
85 | + doc.assinaturas = $scope.documentoSelecionado.assinaturas; | ||
86 | + }); | ||
87 | + $scope.showAlert("success", $translate.instant('ECM.ASSINADO_SUCESSO')); | ||
88 | + }); | ||
89 | + }; | ||
90 | + | ||
91 | + function _getAssinatura(){ | ||
92 | + return {documentoGed : { id : $scope.documentoSelecionado.id }, funcao : {id : _getFuncaoChecked()}, idTask : $scope.$parent.task.id }; | ||
93 | + }; | ||
94 | + | ||
95 | + function _getFuncaoChecked(){ | ||
96 | + for(var pos = 0; pos < $scope.funcoes.length; pos++){ | ||
97 | + if($scope.funcoes[pos].isServidor) | ||
98 | + return $scope.funcoes[pos].id; | ||
99 | + } | ||
100 | + }; | ||
101 | + | ||
102 | + /* | ||
103 | + * Abre panel visualizar assinaturas | ||
104 | + */ | ||
105 | + $scope.visualizarAssinaturasDocumento = function(documento){ | ||
106 | + $scope.documentoSelecionado = documento; | ||
107 | + $scope.exibirIncluirAssinatura = false; | ||
108 | + $scope.exibirDocJaAssinado = false; | ||
109 | + _obterAssinaturasDocumento(documento).then(function(documentosSelecionados){ | ||
110 | + $scope.documentosSelecionados = documentosSelecionados; | ||
111 | + $scope.documentosSelecionados.forEach(function(doc){ | ||
112 | + if(doc.id == $scope.documentoSelecionado.id) | ||
113 | + $scope.documentoSelecionado = doc; | ||
114 | + }); | ||
115 | + _exibirNenhumaAssinatura(); | ||
116 | + if($scope.documentoSelecionado.assinaturas && $scope.documentoSelecionado.assinaturas.length == 0) | ||
117 | + $scope.showAlert("warning", $translate.instant('ECM.MSG.DOCUMENTO_SEM_ASSINATURAS')); | ||
118 | + }); | ||
119 | + }; | ||
120 | + | ||
121 | + function _exibirNenhumaAssinatura(){ | ||
122 | + $scope.nenhumaAssinatura = $scope.documentosSelecionados.some(function(doc){ | ||
123 | + return doc.assinaturas.length > 0; | ||
124 | + }); | ||
125 | + }; | ||
126 | + | ||
127 | +}] ); | ||
0 | \ No newline at end of file | 128 | \ No newline at end of file |
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', | ||
5 | - function GerenciarProcessoController($scope, $translate, $timeout, GerenciarProcessoRepository, ProcessoRepository, RuntimeManagerRepository,$rootScope, DocumentoGedRepository, HistoricoAlteracaoProcessoRepository,UnidadeRepository, UnidadeProcessoRepository,CredencialProcessoRepository ) { | 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 = {}; |
@@ -29,6 +29,7 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | @@ -29,6 +29,7 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | ||
29 | $scope.isGerenciarCredencialProcesso = false; | 29 | $scope.isGerenciarCredencialProcesso = false; |
30 | $scope.isClassificarProcessoDocumento = false; | 30 | $scope.isClassificarProcessoDocumento = false; |
31 | $scope.isAtribuirProcesso = false; | 31 | $scope.isAtribuirProcesso = false; |
32 | + $scope.exibirAssinarDocAnexo = false; | ||
32 | }; | 33 | }; |
33 | 34 | ||
34 | // CRIAR RELACIONAMENTO DE PROCESSO | 35 | // CRIAR RELACIONAMENTO DE PROCESSO |
@@ -618,23 +619,25 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | @@ -618,23 +619,25 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | ||
618 | 619 | ||
619 | ProcessoRepository.getProcessoGerenciamento($scope.idProcesso).then( function ( result ) { | 620 | ProcessoRepository.getProcessoGerenciamento($scope.idProcesso).then( function ( result ) { |
620 | $scope.processo = result.originalElement; | 621 | $scope.processo = result.originalElement; |
621 | - $scope.apresentarCabecalho = true; | ||
622 | - $scope.processo.idTask = $scope.task.id; | ||
623 | - | ||
624 | - $scope.atualizarAtribuicaoProcesso($scope.idProcesso); | ||
625 | - | ||
626 | - if ( $scope.$parent != undefined ) { | ||
627 | - $scope.$parent.idProcesso = $scope.idProcesso; | ||
628 | - } | ||
629 | - | ||
630 | - if ( angular.element( '#viewGerenciarProcesso' ).scope() != undefined ) { | ||
631 | - var workspace = angular.element( '#viewGerenciarProcesso' ).scope().workspace; | ||
632 | - angular.element( "#citapp-controller" ).scope().removeWorkspace( workspace.id ); | ||
633 | - } | ||
634 | - | ||
635 | - $scope.tratimitado(); | ||
636 | - | ||
637 | - $scope.setLoading( false ); | 622 | + |
623 | + $scope.apresentarCabecalho = true; | ||
624 | + $scope.processo.idTask = $scope.task.id; | ||
625 | + | ||
626 | + $scope.atualizarAtribuicaoProcesso($scope.idProcesso); | ||
627 | + | ||
628 | + if ( $scope.$parent != undefined ) { | ||
629 | + $scope.$parent.idProcesso = $scope.idProcesso; | ||
630 | + } | ||
631 | + | ||
632 | + if ( angular.element( '#viewGerenciarProcesso' ).scope() != undefined ) { | ||
633 | + var workspace = angular.element( '#viewGerenciarProcesso' ).scope().workspace; | ||
634 | + angular.element( "#citapp-controller" ).scope().removeWorkspace( workspace.id ); | ||
635 | + } | ||
636 | + | ||
637 | + $scope.tratimitado(); | ||
638 | + | ||
639 | + $scope.setLoading( false ); | ||
640 | + | ||
638 | } ); | 641 | } ); |
639 | 642 | ||
640 | }, 400 ); | 643 | }, 400 ); |
@@ -709,6 +712,59 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | @@ -709,6 +712,59 @@ citApp.controller('GerenciarProcessoController', [ '$scope', '$translate', '$tim | ||
709 | } | 712 | } |
710 | 713 | ||
711 | }); | 714 | }); |
715 | + }; | ||
716 | + | ||
717 | + $scope.abrirAssinarDocumento = function(documento) { | ||
718 | + $scope.fecharPagina(); | ||
719 | + $scope.pessoa = {}; | ||
720 | + PessoaRepository.getPermissaoAssinaturaDocumento().then(function(result){ | ||
721 | + $scope.exibirAssinarDocAnexo = result.originalElement.exibirAssinarDocAnexo; | ||
722 | + $scope.pessoa = result.originalElement; | ||
723 | + if(!$scope.exibirAssinarDocAnexo) { | ||
724 | + $scope.showAlert("error", $translate.instant('ECM.MSG.ERRO_PERMISSAO_ASSINAR')); | ||
725 | + return; | ||
726 | + } | ||
727 | + _montarParceiros(); | ||
728 | + $timeout( function () { | ||
729 | + angular.element( "#documentoAssinatura" ).scope().abrirAssinarDocumento(documento); | ||
730 | + } ); | ||
731 | + }); | ||
732 | + }; | ||
733 | + | ||
734 | + function _montarParceiros() { | ||
735 | + delete $scope.isFuncaoServidor; | ||
736 | + $scope.funcoes =[]; | ||
737 | + $scope.pessoa.parceiros.forEach(function(parceiro){ | ||
738 | + if(parceiro.dataInativo === null && parceiro.classeParceiro.dominioTipoParceiro.codigo == 1){ | ||
739 | + $scope.funcoes.push(_getFuncao(parceiro, true)); | ||
740 | + } else if(parceiro.dataInativo === null && parceiro.classeParceiro.dominioTipoParceiro.codigo == 6){ | ||
741 | + $scope.funcoes.push(_getFuncao(parceiro, false)); | ||
742 | + } | ||
743 | + }); | ||
744 | + | ||
745 | + if($scope.funcoes.length === 1) { | ||
746 | + $scope.funcoes.forEach(function(funcao){ | ||
747 | + funcao.isServidor = true; | ||
748 | + }); | ||
749 | + } | ||
712 | } | 750 | } |
713 | - | 751 | + |
752 | + function _getFuncao(parceiro, isServidor) { | ||
753 | + var funcao = {id : parceiro.funcao.id, nome : '', isServidor : isServidor}; | ||
754 | + if(parceiro.cargo) | ||
755 | + funcao.nome = funcao.nome.concat(parceiro.cargo).concat(' / ').concat(parceiro.funcao.nome); | ||
756 | + else | ||
757 | + funcao.nome = funcao.nome.concat(parceiro.funcao.nome); | ||
758 | + return funcao; | ||
759 | + }; | ||
760 | + | ||
761 | + $scope.visualizarAssinaturasDocumento = function(documento){ | ||
762 | + $scope.fecharPagina(); | ||
763 | + $scope.exibirAssinarDocAnexo = true; | ||
764 | + $timeout( function () { | ||
765 | + angular.element( "#documentoAssinatura" ).scope().visualizarAssinaturasDocumento(documento); | ||
766 | + } ); | ||
767 | + }; | ||
768 | + | ||
769 | + | ||
714 | }] ); | 770 | }] ); |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/GerenciarProcessoListUnidadeController.js
@@ -29,8 +29,8 @@ citApp.controller('GerenciarProcessoListUnidadeController', ['$scope', 'workflow | @@ -29,8 +29,8 @@ citApp.controller('GerenciarProcessoListUnidadeController', ['$scope', '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 : [ |
@@ -134,7 +134,9 @@ citApp.controller('GerenciarProcessoListUnidadeController', ['$scope', 'workflow | @@ -134,7 +134,9 @@ citApp.controller('GerenciarProcessoListUnidadeController', ['$scope', 'workflow | ||
134 | assignment.workItem = $scope.workItem; | 134 | assignment.workItem = $scope.workItem; |
135 | assignment.checked = false; | 135 | assignment.checked = false; |
136 | }); | 136 | }); |
137 | - $scope.assignments[0].checked = true; | 137 | + if($scope.assignments.length > 0){ |
138 | + $scope.assignments[0].checked = true; | ||
139 | + } | ||
138 | }; | 140 | }; |
139 | 141 | ||
140 | $scope.selectAssignment = function(assignmentSelect) { | 142 | $scope.selectAssignment = function(assignmentSelect) { |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/repository/AssinaturaRepository.js
0 → 100644
@@ -0,0 +1,20 @@ | @@ -0,0 +1,20 @@ | ||
1 | +'use strict'; | ||
2 | + | ||
3 | +citApp.factory('AssinaturaRepository', ['RestangularEcm', 'AbstractRepository', function (restangularEcm, AbstractRepository) { | ||
4 | + | ||
5 | + function AssinaturaRepository() { | ||
6 | + AbstractRepository.call(this, restangularEcm, 'rest/assinatura'); | ||
7 | + | ||
8 | + this.saveAssinaturaInterna = function(assinatura) { | ||
9 | + return this.restangular.all(this.route + '/saveAssinaturaInterna').post(assinatura); | ||
10 | + }; | ||
11 | + | ||
12 | + this.validarAssinaturaPorUsuario = function(idDocumento) { | ||
13 | + return this.restangular.one(this.route + '/validarAssinaturaPorUsuario').get({idDocumento:idDocumento}); | ||
14 | + }; | ||
15 | + } | ||
16 | + | ||
17 | + AbstractRepository.extend(AssinaturaRepository); | ||
18 | + | ||
19 | + return new AssinaturaRepository(); | ||
20 | +}]); |
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaEdit.html
0 → 100644
@@ -0,0 +1,40 @@ | @@ -0,0 +1,40 @@ | ||
1 | +<div class="row"> | ||
2 | + <div class="col-sm-12"> | ||
3 | + <label-input ng-type="text" ng-id="assinante" ng-label="ECM.LABEL.ASSINANTE" ng-disabled="true" ng-model="pessoa.nome" /> | ||
4 | + </div> | ||
5 | +</div> | ||
6 | +<div class="row"> | ||
7 | + <div class="col-sm-12"> | ||
8 | + <strong><label><translate>ECM.LABEL.CARGO_FUNCAO</translate></label></strong> | ||
9 | + </div> | ||
10 | +</div> | ||
11 | +<div class="row"> | ||
12 | + <div class="col-sm-12"> | ||
13 | + <div class="form-group" style="padding: 4px;"> | ||
14 | + <label data-ng-repeat="funcao in funcoes"> | ||
15 | + <input type="radio" name="response" data-ng-model="funcao.isServidor" data-ng-value="true" class="radio-group-inline" style="margin-left: 20px;"/> | ||
16 | + {{funcao.nome}} | ||
17 | + </label> | ||
18 | + </div> | ||
19 | + </div> | ||
20 | +</div> | ||
21 | + | ||
22 | +<div class="row"> | ||
23 | + <div class="col-sm-1" style="margin-top: 5px; !important"> | ||
24 | + <label> | ||
25 | + <translate>PORTAL.LABEL.SENHA</translate> | ||
26 | + </label> | ||
27 | + </div> | ||
28 | + <div class="col-sm-4" > | ||
29 | + <label-input ng-type="password" ng-id="autenticacao" ng-disabled="false" ng-model="$parent.autenticacao" /> | ||
30 | + </div> | ||
31 | +<!-- <div class="col-sm-4" style="margin-top: 5px; !important"> --> | ||
32 | +<!-- <label> --> | ||
33 | +<!-- <translate>ECM.LABEL.OU</translate> --> | ||
34 | +<!-- </label> --> | ||
35 | +<!-- <label style="margin-left: 5px; font-weight: bold"> --> | ||
36 | +<!-- <translate>ECM.LABEL.CERTIFICADO_DIGITAL</translate> --> | ||
37 | +<!-- <i class="glyphicon glyphicon-info-sign blue" tooltip="{{$translate.instant('ECM.LABEL.CERTIFICADO_DIGITAL')}}" style="margin-left: 5px;"></i> --> | ||
38 | +<!-- </label> --> | ||
39 | +<!-- </div> --> | ||
40 | +</div> | ||
0 | \ No newline at end of file | 41 | \ No newline at end of file |
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaView.html
0 → 100644
@@ -0,0 +1,43 @@ | @@ -0,0 +1,43 @@ | ||
1 | +<div id="documentoAssinatura" class="widget-box margin-bottom" ng-controller="AssinarDocumentoController as assinarDocumentoController"> | ||
2 | + <div class="widget-header"> | ||
3 | + <h2 class="widget-title"> | ||
4 | + <div ng-if="exibirIncluirAssinatura"> | ||
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}} | ||
7 | + </div> | ||
8 | + <div ng-if="!exibirIncluirAssinatura"> | ||
9 | + <translate>ECM.LABEL.ASSINATURAS_DOCUMENTO</translate> : {{documentoSelecionado.numero}} | ||
10 | + <translate style="margin-left: 20px;">ECM.LABEL.VERSAO_ATUAL</translate> : {{documentoSelecionado.versaoDocumento | limitTo:3}} | ||
11 | + </div> | ||
12 | + </h2> | ||
13 | + <div class="widget-toolbar"> | ||
14 | + <a href="#void" ng-click="widgetAssinarDocIsCollapsed = !widgetAssinarDocIsCollapsed"> | ||
15 | + <i class="fa" ng-class="{'fa-chevron-up': !widgetAssinarDocIsCollapsed, 'fa-chevron-down': widgetAssinarDocIsCollapsed}"></i> | ||
16 | + </a> | ||
17 | + <a href="#void" ng-click="$parent.closeWidget('documentoAssinatura');"> <i class="fa fa-close"></i></a> | ||
18 | + </div> | ||
19 | + </div> | ||
20 | + | ||
21 | + <div class="widget-body" collapse="widgetAssinarDocIsCollapsed"> | ||
22 | + <div class="widget-main clearfix"> | ||
23 | + <div class="page-content clearfix"> | ||
24 | + <div ng-if="exibirDocJaAssinado" class="alert alert-success" role="alert"> | ||
25 | + <span class="small"><translate>ECM.MSG.DOCUMENTO_JA_ASSINADO</translate></span> | ||
26 | + </div> | ||
27 | + | ||
28 | + <div ng-include src="'/cit-ecm-web/html/assinatura/documentoAssinaturaEdit.html'" ng-show="exibirIncluirAssinatura"/> | ||
29 | + | ||
30 | + <div ng-include src="'/cit-ecm-web/html/assinatura/documentoAssinaturas.html'" /> | ||
31 | + | ||
32 | + <div class="row" ng-if="exibirIncluirAssinatura"> | ||
33 | + <div class="col-md-12"> | ||
34 | + <button ng-click="assinar()" title="{{$translate.instant('ECM.LABEL.ASSINAR')}}" alt="{{$translate.instant('ECM.LABEL.ASSINAR')}}" type="button" class="btn btn-sm btn-primary"> | ||
35 | + <translate>ECM.LABEL.ASSINAR</translate> | ||
36 | + </button> | ||
37 | + </div> | ||
38 | + </div> | ||
39 | + | ||
40 | + </div> | ||
41 | + </div> | ||
42 | + </div> | ||
43 | +</div> | ||
0 | \ No newline at end of file | 44 | \ No newline at end of file |
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturas.html
0 → 100644
@@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
1 | +<div class="row" ng-if="documentosSelecionados.length > 0"> | ||
2 | + <div class="col-sm-12"> | ||
3 | + <table class="table table-striped table-bordered table-hover"> | ||
4 | + <thead> | ||
5 | + <tr> | ||
6 | + <th><small><translate>LABEL.VERSAO</translate></small></th> | ||
7 | + <th><small><translate>LABEL.USUARIO</translate></small></th> | ||
8 | + <th><small><translate>CORPORATIVO.LABEL.FUNCAO</translate></small></th> | ||
9 | + <th><small><translate>LABEL.UNIDADE</translate></small></th> | ||
10 | + <th><small><translate>ECM.LABEL.TIPO_ASSINATURA</translate></small></th> | ||
11 | + <th><small><translate>ECM.LABEL.DATA_DA_ASSINATURA</translate></small></th> | ||
12 | + </tr> | ||
13 | + </thead> | ||
14 | + <tbody ng-repeat="docSelecionado in documentosSelecionados"> | ||
15 | + <tr ng-repeat="assinatura in docSelecionado.assinaturas"> | ||
16 | + <td> | ||
17 | + <small>{{docSelecionado.versaoDocumento}}</small> | ||
18 | + </td> | ||
19 | + <td> | ||
20 | + <small>{{assinatura.usuario.username}}</small> | ||
21 | + </td> | ||
22 | + <td> | ||
23 | + <small>{{assinatura.funcao.nome}}</small> | ||
24 | + </td> | ||
25 | + <td> | ||
26 | + <small>{{docSelecionado.unidadeNome}}</small> | ||
27 | + </td> | ||
28 | + <td> | ||
29 | + <small>{{assinatura.tipoAssinatura.descricao}}</small> | ||
30 | + </td> | ||
31 | + <td> | ||
32 | + <small>{{assinatura.dataCriacao | date : 'dd/MM/yyyy HH:mm:ss'}}</small> | ||
33 | + </td> | ||
34 | + </tr> | ||
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> | ||
43 | + </table> | ||
44 | + </div> | ||
45 | +</div> | ||
0 | \ No newline at end of file | 46 | \ No newline at end of file |
cit-ecm-web/src/main/webapp/html/gerenciarProcesso/includeAcaoProcesso.html
@@ -23,7 +23,8 @@ | @@ -23,7 +23,8 @@ | ||
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 | - | 26 | +<!-- Assinatura documento --> |
27 | +<div ng-include src="'/cit-ecm-web/html/assinatura/documentoAssinaturaView.html'" ng-show="exibirAssinarDocAnexo" /> | ||
27 | 28 | ||
28 | <div id="widget-processo" ng-show="isProcessoEdit" class="widget-box margin-bottom"> | 29 | <div id="widget-processo" ng-show="isProcessoEdit" class="widget-box margin-bottom"> |
29 | <div class="widget-header"> | 30 | <div class="widget-header"> |
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ê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ê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> |
@@ -39,7 +40,13 @@ | @@ -39,7 +40,13 @@ | ||
39 | <li ng-if='processo.isTramitado && (!documento.cancelado && documento.unidade.id === usuarioLogado.unidade.id)'><a href="#void" ng-click='cancelarDocumento(documento)'> <translate>ECM.LABEL.CANCELARDOCUMENTO</translate></a></li> | 40 | <li ng-if='processo.isTramitado && (!documento.cancelado && documento.unidade.id === usuarioLogado.unidade.id)'><a href="#void" ng-click='cancelarDocumento(documento)'> <translate>ECM.LABEL.CANCELARDOCUMENTO</translate></a></li> |
40 | <li ng-if='!documento.cancelado'><a href="#void" ng-click="visualizarVersoes(documento);"> <translate>ECM.LABEL.VERSOESDODOCUMENTO</translate></a></li> | 41 | <li ng-if='!documento.cancelado'><a href="#void" ng-click="visualizarVersoes(documento);"> <translate>ECM.LABEL.VERSOESDODOCUMENTO</translate></a></li> |
41 | <li ><a ng-if='documento.cancelado'href="#void" ng-click="getCancelamentoDocumento(documento);"> <translate>ECM.LABEL.JUSTIFICATIVA_CANCELAMENTO</translate></a></li> | 42 | <li ><a ng-if='documento.cancelado'href="#void" ng-click="getCancelamentoDocumento(documento);"> <translate>ECM.LABEL.JUSTIFICATIVA_CANCELAMENTO</translate></a></li> |
43 | + <li ><a href="#void" ng-click="abrirAssinarDocumento(documento)"> <translate>ECM.LABEL.ASSINARDOCUMENTO</translate></a></li> | ||
44 | + <li ><a href="#void" ng-click="visualizarAssinaturasDocumento(documento)"> <translate>ECM.LABEL.ASSINATURAS_DOCUMENTO</translate></a></li> | ||
42 | </ul> | 45 | </ul> |
43 | 46 | ||
44 | </div> | 47 | </div> |
48 | + | ||
49 | + <div class="versoes"> | ||
50 | + <span><translate>ECM.LABEL.VERSAO_ATUAL</translate>: {{documento.versaoDocumento | limitTo:3}}</span> | ||
51 | + </div> | ||
45 | </div> | 52 | </div> |
46 | \ No newline at end of file | 53 | \ No newline at end of file |