Commit e3e6c05b967a39ddab26cfb2f8d10368e2913496
1 parent
f45a2eca
Exists in
master
redmine #4583 assinatura em documento anexo e online; visualizacao de assinatura…
…s de doc anexo e online;
Showing
13 changed files
with
346 additions
and
89 deletions
Show diff stats
cit-ecm-api/src/main/java/br/com/centralit/api/model/Assinatura.java
| @@ -68,6 +68,7 @@ public class Assinatura extends PersistentObjectAudit { | @@ -68,6 +68,7 @@ public class Assinatura extends PersistentObjectAudit { | ||
| 68 | private Usuario usuario; | 68 | private Usuario usuario; |
| 69 | 69 | ||
| 70 | /** Atributo documentoGed. */ | 70 | /** Atributo documentoGed. */ |
| 71 | + @JsonView({ ViewsEcm.AssinaturaEdit.class }) | ||
| 71 | @ManyToOne(fetch = FetchType.LAZY) | 72 | @ManyToOne(fetch = FetchType.LAZY) |
| 72 | private DocumentoGed documentoGed; | 73 | private DocumentoGed documentoGed; |
| 73 | 74 | ||
| @@ -91,7 +92,7 @@ public class Assinatura extends PersistentObjectAudit { | @@ -91,7 +92,7 @@ public class Assinatura extends PersistentObjectAudit { | ||
| 91 | 92 | ||
| 92 | /** Atributo conteudoTarja. */ | 93 | /** Atributo conteudoTarja. */ |
| 93 | @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) | 94 | @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) |
| 94 | - @JsonView({ Views.DocumentoGedEdit.class }) | 95 | + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.AssinaturaEdit.class }) |
| 95 | private ConteudoTarja conteudoTarja; | 96 | private ConteudoTarja conteudoTarja; |
| 96 | 97 | ||
| 97 | /** Atributo pessoa. */ | 98 | /** Atributo pessoa. */ |
cit-ecm-api/src/main/java/br/com/centralit/api/model/ConteudoTarja.java
| @@ -7,11 +7,14 @@ import javax.persistence.GeneratedValue; | @@ -7,11 +7,14 @@ import javax.persistence.GeneratedValue; | ||
| 7 | import javax.persistence.GenerationType; | 7 | import javax.persistence.GenerationType; |
| 8 | import javax.persistence.Id; | 8 | import javax.persistence.Id; |
| 9 | import javax.persistence.Lob; | 9 | import javax.persistence.Lob; |
| 10 | +import javax.persistence.OneToOne; | ||
| 10 | import javax.persistence.Transient; | 11 | import javax.persistence.Transient; |
| 11 | 12 | ||
| 12 | import org.hibernate.annotations.Type; | 13 | import org.hibernate.annotations.Type; |
| 13 | 14 | ||
| 15 | +import br.com.centralit.api.framework.json.ViewsEcm; | ||
| 14 | import br.com.centralit.framework.json.Views; | 16 | import br.com.centralit.framework.json.Views; |
| 17 | +import br.com.centralit.framework.model.AnexoImagem; | ||
| 15 | 18 | ||
| 16 | import com.fasterxml.jackson.annotation.JsonView; | 19 | import com.fasterxml.jackson.annotation.JsonView; |
| 17 | 20 | ||
| @@ -36,7 +39,7 @@ public class ConteudoTarja { | @@ -36,7 +39,7 @@ public class ConteudoTarja { | ||
| 36 | @JsonView({ Views.GenericView.class }) | 39 | @JsonView({ Views.GenericView.class }) |
| 37 | private Long id; | 40 | private Long id; |
| 38 | 41 | ||
| 39 | - @JsonView({ Views.DocumentoGedEdit.class }) | 42 | + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.AssinaturaEdit.class }) |
| 40 | @Transient | 43 | @Transient |
| 41 | private String conteudo; | 44 | private String conteudo; |
| 42 | 45 | ||
| @@ -45,6 +48,13 @@ public class ConteudoTarja { | @@ -45,6 +48,13 @@ public class ConteudoTarja { | ||
| 45 | @Type(type = "org.hibernate.type.BinaryType") | 48 | @Type(type = "org.hibernate.type.BinaryType") |
| 46 | private byte[] conteudoCriptografado; | 49 | private byte[] conteudoCriptografado; |
| 47 | 50 | ||
| 51 | + @OneToOne | ||
| 52 | + @JsonView({ ViewsEcm.AssinaturaEdit.class }) | ||
| 53 | + private AnexoImagem anexoImagem; | ||
| 54 | + | ||
| 55 | + @Transient | ||
| 56 | + private Long idTarjaAssinatura; | ||
| 57 | + | ||
| 48 | /** | 58 | /** |
| 49 | * Retorna o valor do atributo <code>id</code> | 59 | * Retorna o valor do atributo <code>id</code> |
| 50 | * | 60 | * |
| @@ -105,4 +115,44 @@ public class ConteudoTarja { | @@ -105,4 +115,44 @@ public class ConteudoTarja { | ||
| 105 | this.conteudoCriptografado = conteudoCriptografado; | 115 | this.conteudoCriptografado = conteudoCriptografado; |
| 106 | } | 116 | } |
| 107 | 117 | ||
| 118 | + /** | ||
| 119 | + * Retorna o valor do atributo <code>idTarjaAssinatura</code> | ||
| 120 | + * | ||
| 121 | + * @return <code>Long</code> | ||
| 122 | + */ | ||
| 123 | + public Long getIdTarjaAssinatura() { | ||
| 124 | + | ||
| 125 | + return idTarjaAssinatura; | ||
| 126 | + } | ||
| 127 | + | ||
| 128 | + /** | ||
| 129 | + * Define o valor do atributo <code>idTarjaAssinatura</code>. | ||
| 130 | + * | ||
| 131 | + * @param idTarjaAssinatura | ||
| 132 | + */ | ||
| 133 | + public void setIdTarjaAssinatura(Long idTarjaAssinatura) { | ||
| 134 | + | ||
| 135 | + this.idTarjaAssinatura = idTarjaAssinatura; | ||
| 136 | + } | ||
| 137 | + | ||
| 138 | + /** | ||
| 139 | + * Retorna o valor do atributo <code>anexoImagem</code> | ||
| 140 | + * | ||
| 141 | + * @return <code>AnexoImagem</code> | ||
| 142 | + */ | ||
| 143 | + public AnexoImagem getAnexoImagem() { | ||
| 144 | + | ||
| 145 | + return anexoImagem; | ||
| 146 | + } | ||
| 147 | + | ||
| 148 | + /** | ||
| 149 | + * Define o valor do atributo <code>anexoImagem</code>. | ||
| 150 | + * | ||
| 151 | + * @param anexoImagem | ||
| 152 | + */ | ||
| 153 | + public void setAnexoImagem(AnexoImagem anexoImagem) { | ||
| 154 | + | ||
| 155 | + this.anexoImagem = anexoImagem; | ||
| 156 | + } | ||
| 157 | + | ||
| 108 | } | 158 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/model/DocumentoGed.java
| @@ -245,7 +245,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | @@ -245,7 +245,7 @@ public class DocumentoGed extends PersistentObjectUnidade implements Cloneable { | ||
| 245 | private Collection<Assinatura> assinaturas; | 245 | private Collection<Assinatura> assinaturas; |
| 246 | 246 | ||
| 247 | @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) | 247 | @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) |
| 248 | - @JsonView({ Views.DocumentoGedEdit.class }) | 248 | + @JsonView({ Views.DocumentoGedEdit.class, ViewsEcm.AssinaturaEdit.class }) |
| 249 | private ConteudoTarja conteudoTarja; | 249 | private ConteudoTarja conteudoTarja; |
| 250 | 250 | ||
| 251 | @Transient | 251 | @Transient |
cit-ecm-api/src/main/java/br/com/centralit/api/model/TarjaAssinatura.java
| @@ -46,8 +46,8 @@ public class TarjaAssinatura extends PersistentObjectAudit{ | @@ -46,8 +46,8 @@ public class TarjaAssinatura extends PersistentObjectAudit{ | ||
| 46 | 46 | ||
| 47 | public static String LOGO = "@logo@"; | 47 | public static String LOGO = "@logo@"; |
| 48 | public static String NOME_ASSINANTE = "@nome_assinante@"; | 48 | public static String NOME_ASSINANTE = "@nome_assinante@"; |
| 49 | - public static String FUNCAO_ASSINANTE = " @funcao_assinante@"; | ||
| 50 | - public static String DATA_ASSINATURA = " @data_assinatura@"; | 49 | + public static String FUNCAO_ASSINANTE = "@funcao_assinante@"; |
| 50 | + public static String DATA_ASSINATURA = "@data_assinatura@"; | ||
| 51 | public static String HORA_ASSINATURA = "@hora_assinatura@"; | 51 | public static String HORA_ASSINATURA = "@hora_assinatura@"; |
| 52 | public static String CODIGO_ASSINATURA = "@codigo_assinatura@"; | 52 | public static String CODIGO_ASSINATURA = "@codigo_assinatura@"; |
| 53 | 53 |
cit-ecm-api/src/main/java/br/com/centralit/api/service/TarjaAssinaturaService.java
| @@ -7,26 +7,32 @@ import br.com.centralit.api.model.TarjaAssinatura; | @@ -7,26 +7,32 @@ import br.com.centralit.api.model.TarjaAssinatura; | ||
| 7 | import br.com.centralit.framework.service.arquitetura.GenericService; | 7 | import br.com.centralit.framework.service.arquitetura.GenericService; |
| 8 | 8 | ||
| 9 | /** | 9 | /** |
| 10 | - * <p><img src="http://centralit.com.br/images/logo_central.png"></p> | ||
| 11 | - * | ||
| 12 | - * <p><b>Company: </b> Central IT - Governança Corporativa - </p> | ||
| 13 | - * | ||
| 14 | - * <p><b>Description: </b></p> | 10 | + * <p> |
| 11 | + * <img src="http://centralit.com.br/images/logo_central.png"> | ||
| 12 | + * </p> | ||
| 13 | + * | ||
| 14 | + * <p> | ||
| 15 | + * <b>Company: </b> Central IT - Governança Corporativa - | ||
| 16 | + * </p> | ||
| 17 | + * | ||
| 18 | + * <p> | ||
| 19 | + * <b>Description: </b> | ||
| 20 | + * </p> | ||
| 15 | * Classe de serviços para a entidade TarjaAssinatura, a qual mantém as regras de negócio. | 21 | * Classe de serviços para a entidade TarjaAssinatura, a qual mantém as regras de negócio. |
| 16 | - * | 22 | + * |
| 17 | * @since 13 de abr de 2016 - 13:40:36 | 23 | * @since 13 de abr de 2016 - 13:40:36 |
| 18 | * @version 1.0.0 | 24 | * @version 1.0.0 |
| 19 | * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) | 25 | * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) |
| 20 | - * | 26 | + * |
| 21 | */ | 27 | */ |
| 22 | public interface TarjaAssinaturaService extends GenericService<TarjaAssinatura, Long> { | 28 | public interface TarjaAssinaturaService extends GenericService<TarjaAssinatura, Long> { |
| 23 | 29 | ||
| 24 | /** | 30 | /** |
| 25 | - * | 31 | + * |
| 26 | * Método responsável por fazer o upload da imagem do logotipo de uma tarja de assinatura. | 32 | * Método responsável por fazer o upload da imagem do logotipo de uma tarja de assinatura. |
| 27 | - * | 33 | + * |
| 28 | * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) | 34 | * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) |
| 29 | - * | 35 | + * |
| 30 | * @param file | 36 | * @param file |
| 31 | * @param idOrganizacao | 37 | * @param idOrganizacao |
| 32 | * @param idConfiguracao | 38 | * @param idConfiguracao |
| @@ -34,30 +40,30 @@ public interface TarjaAssinaturaService extends GenericService<TarjaAssinatura, | @@ -34,30 +40,30 @@ public interface TarjaAssinaturaService extends GenericService<TarjaAssinatura, | ||
| 34 | void uploadAnexoImagemTarja(MultipartFile file, Long idOrganizacao, Long idConfiguracao); | 40 | void uploadAnexoImagemTarja(MultipartFile file, Long idOrganizacao, Long idConfiguracao); |
| 35 | 41 | ||
| 36 | /** | 42 | /** |
| 37 | - * | 43 | + * |
| 38 | * Método responsável por salvar os dois tipos de tarjas de assinatura ao mesmo tempo | 44 | * Método responsável por salvar os dois tipos de tarjas de assinatura ao mesmo tempo |
| 39 | - * | 45 | + * |
| 40 | * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) | 46 | * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) |
| 41 | - * | 47 | + * |
| 42 | * @param tarjaAssinaturaVH | 48 | * @param tarjaAssinaturaVH |
| 43 | * @return | 49 | * @return |
| 44 | */ | 50 | */ |
| 45 | - TarjaAssinatura save (TarjaAssinatura tarjaAssinatura); | ||
| 46 | - | 51 | + TarjaAssinatura save(TarjaAssinatura tarjaAssinatura); |
| 47 | 52 | ||
| 48 | /** | 53 | /** |
| 49 | - * | 54 | + * |
| 50 | * Método responsável por remover a imagem associada a uma tarja de assinatura. | 55 | * Método responsável por remover a imagem associada a uma tarja de assinatura. |
| 51 | - * | 56 | + * |
| 52 | * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) | 57 | * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) |
| 53 | - * | 58 | + * |
| 54 | * @param tarjaAssinatura | 59 | * @param tarjaAssinatura |
| 55 | * @return | 60 | * @return |
| 56 | */ | 61 | */ |
| 57 | - TarjaAssinatura removeImagem (TarjaAssinatura tarjaAssinatura); | ||
| 58 | - | 62 | + TarjaAssinatura removeImagem(TarjaAssinatura tarjaAssinatura); |
| 63 | + | ||
| 59 | /** | 64 | /** |
| 60 | * Método responsável por obter tarja assinatura interna | 65 | * Método responsável por obter tarja assinatura interna |
| 66 | + * | ||
| 61 | * @author rogerio.cassimiro | 67 | * @author rogerio.cassimiro |
| 62 | * @return {@link TarjaAssinatura} | 68 | * @return {@link TarjaAssinatura} |
| 63 | */ | 69 | */ |
| @@ -65,8 +71,26 @@ public interface TarjaAssinaturaService extends GenericService<TarjaAssinatura, | @@ -65,8 +71,26 @@ public interface TarjaAssinaturaService extends GenericService<TarjaAssinatura, | ||
| 65 | 71 | ||
| 66 | /** | 72 | /** |
| 67 | * Método responsável por gerar assinatura interna por usuário e por documento | 73 | * Método responsável por gerar assinatura interna por usuário e por documento |
| 74 | + * | ||
| 68 | * @author rogerio.cassimiro | 75 | * @author rogerio.cassimiro |
| 69 | * @param assinatura | 76 | * @param assinatura |
| 77 | + * @param formaCriacao | ||
| 78 | + */ | ||
| 79 | + void gerarAssinaturaInternaUsuario(Assinatura assinatura, Long formaCriacao); | ||
| 80 | + | ||
| 81 | + /** | ||
| 82 | + * Método responsável por criptografar o texto através da chave | ||
| 83 | + * @author rogerio.cassimiro | ||
| 84 | + * @param text | ||
| 85 | + * @return {@link Byte} | ||
| 86 | + */ | ||
| 87 | + byte[] encrypted(String text); | ||
| 88 | + | ||
| 89 | + /** | ||
| 90 | + * Método responsável por descriptografar texto | ||
| 91 | + * @author rogerio.cassimiro | ||
| 92 | + * @param text | ||
| 93 | + * @return {@link String} | ||
| 70 | */ | 94 | */ |
| 71 | - void gerarAssinaturaInternaUsuario(Assinatura assinatura); | 95 | + String decrypted(byte[] text); |
| 72 | } | 96 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/AssinaturaServiceImpl.java
| @@ -73,24 +73,26 @@ public class AssinaturaServiceImpl extends GenericServiceImpl<Assinatura, Long> | @@ -73,24 +73,26 @@ public class AssinaturaServiceImpl extends GenericServiceImpl<Assinatura, Long> | ||
| 73 | @Override | 73 | @Override |
| 74 | public Assinatura saveAssinaturaInterna(Assinatura assinatura) { | 74 | public Assinatura saveAssinaturaInterna(Assinatura assinatura) { |
| 75 | Usuario usuario = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); | 75 | Usuario usuario = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); |
| 76 | - this.validarSenha(assinatura.getPassword(), usuario); | 76 | + validarSenha(assinatura.getPassword(), usuario); |
| 77 | + montarTransients(assinatura, usuario); | ||
| 78 | + historicoAlteracaoProcessoService.gerarHistoricoAssinatura(assinatura); | ||
| 79 | + tarjaAssinaturaService.gerarAssinaturaInternaUsuario(assinatura,assinatura.getDocumentoGed().getFormaCriacao().getCodigo()); | ||
| 80 | + return super.save(assinatura); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + /** | ||
| 84 | + * Método responsável por montar transients da assinatura | ||
| 85 | + * @author rogerio.cassimiro | ||
| 86 | + * @param assinatura | ||
| 87 | + * @param usuario | ||
| 88 | + */ | ||
| 89 | + private void montarTransients(Assinatura assinatura, Usuario usuario) { | ||
| 90 | + | ||
| 77 | assinatura.setDocumentoGed(this.documentoGedService.getReference(assinatura.getDocumentoGed().getId())); | 91 | assinatura.setDocumentoGed(this.documentoGedService.getReference(assinatura.getDocumentoGed().getId())); |
| 78 | assinatura.setUsuario(usuario); | 92 | assinatura.setUsuario(usuario); |
| 79 | assinatura.setPessoa(this.pessoaService.getReference(assinatura.getPessoa().getId())); | 93 | assinatura.setPessoa(this.pessoaService.getReference(assinatura.getPessoa().getId())); |
| 80 | assinatura.setTipoAssinatura(dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA)); | 94 | assinatura.setTipoAssinatura(dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA)); |
| 81 | assinatura.setFuncao(funcaoService.getReference(assinatura.getFuncao().getId())); | 95 | assinatura.setFuncao(funcaoService.getReference(assinatura.getFuncao().getId())); |
| 82 | - historicoAlteracaoProcessoService.gerarHistoricoAssinatura(assinatura); | ||
| 83 | - salvarTarjaAssinaturaPorTipoDocumento(assinatura); | ||
| 84 | - return super.save(assinatura); | ||
| 85 | - } | ||
| 86 | - | ||
| 87 | - private void salvarTarjaAssinaturaPorTipoDocumento(Assinatura assinatura) { | ||
| 88 | - //OnLine | ||
| 89 | - if(assinatura.getDocumentoGed().getFormaCriacao().getCodigo() == 1){ | ||
| 90 | - //TODO ON LINE | ||
| 91 | - }else { | ||
| 92 | - this.tarjaAssinaturaService.gerarAssinaturaInternaUsuario(assinatura); | ||
| 93 | - } | ||
| 94 | } | 96 | } |
| 95 | 97 | ||
| 96 | /** | 98 | /** |
| @@ -123,4 +125,14 @@ public class AssinaturaServiceImpl extends GenericServiceImpl<Assinatura, Long> | @@ -123,4 +125,14 @@ public class AssinaturaServiceImpl extends GenericServiceImpl<Assinatura, Long> | ||
| 123 | public Boolean validarAssinaturaPorUsuario(Long idDocumento) { | 125 | public Boolean validarAssinaturaPorUsuario(Long idDocumento) { |
| 124 | return this.assinaturaDao.validarAssinaturaPorUsuario(idDocumento, ((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId()); | 126 | return this.assinaturaDao.validarAssinaturaPorUsuario(idDocumento, ((Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getId()); |
| 125 | } | 127 | } |
| 128 | + | ||
| 129 | + @Override | ||
| 130 | + public Assinatura getReference(Long id) { | ||
| 131 | + Assinatura assinatura = (Assinatura) this.assinaturaDao.getReference(id); | ||
| 132 | + assinatura.getConteudoTarja().setConteudo(tarjaAssinaturaService.decrypted(assinatura.getConteudoTarja().getConteudoCriptografado())); | ||
| 133 | + if(UtilObjeto.isReferencia(assinatura.getDocumentoGed().getConteudoTarja())){ | ||
| 134 | + assinatura.getDocumentoGed().getConteudoTarja().setConteudo(tarjaAssinaturaService.decrypted(assinatura.getDocumentoGed().getConteudoTarja().getConteudoCriptografado())); | ||
| 135 | + } | ||
| 136 | + return assinatura; | ||
| 137 | + } | ||
| 126 | } | 138 | } |
cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/TarjaAssinaturaServiceImpl.java
| 1 | package br.com.centralit.api.service.impl; | 1 | package br.com.centralit.api.service.impl; |
| 2 | 2 | ||
| 3 | import java.io.IOException; | 3 | import java.io.IOException; |
| 4 | +import java.security.Key; | ||
| 5 | + | ||
| 6 | +import javax.crypto.Cipher; | ||
| 7 | +import javax.crypto.spec.SecretKeySpec; | ||
| 4 | 8 | ||
| 5 | import org.apache.log4j.Logger; | 9 | import org.apache.log4j.Logger; |
| 6 | import org.springframework.beans.factory.annotation.Autowired; | 10 | import org.springframework.beans.factory.annotation.Autowired; |
| 7 | import org.springframework.beans.factory.annotation.Qualifier; | 11 | import org.springframework.beans.factory.annotation.Qualifier; |
| 12 | +import org.springframework.beans.factory.annotation.Value; | ||
| 8 | import org.springframework.stereotype.Service; | 13 | import org.springframework.stereotype.Service; |
| 9 | import org.springframework.validation.Validator; | 14 | import org.springframework.validation.Validator; |
| 10 | import org.springframework.web.multipart.MultipartFile; | 15 | import org.springframework.web.multipart.MultipartFile; |
| 11 | 16 | ||
| 12 | -import com.ibm.icu.util.Calendar; | ||
| 13 | - | ||
| 14 | import br.com.centralit.api.dao.TarjaAssinaturaDao; | 17 | import br.com.centralit.api.dao.TarjaAssinaturaDao; |
| 15 | import br.com.centralit.api.model.Assinatura; | 18 | import br.com.centralit.api.model.Assinatura; |
| 19 | +import br.com.centralit.api.model.ConteudoTarja; | ||
| 16 | import br.com.centralit.api.model.TarjaAssinatura; | 20 | import br.com.centralit.api.model.TarjaAssinatura; |
| 17 | import br.com.centralit.api.service.AnexoImagemService; | 21 | import br.com.centralit.api.service.AnexoImagemService; |
| 18 | import br.com.centralit.api.service.DominioService; | 22 | import br.com.centralit.api.service.DominioService; |
| @@ -22,19 +26,30 @@ import br.com.centralit.framework.model.AnexoImagem; | @@ -22,19 +26,30 @@ import br.com.centralit.framework.model.AnexoImagem; | ||
| 22 | import br.com.centralit.framework.model.Dominio; | 26 | import br.com.centralit.framework.model.Dominio; |
| 23 | import br.com.centralit.framework.model.Organizacao; | 27 | import br.com.centralit.framework.model.Organizacao; |
| 24 | import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; | 28 | import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; |
| 29 | +import br.com.centralit.framework.util.UtilDate; | ||
| 30 | +import br.com.centralit.framework.util.UtilObjeto; | ||
| 31 | + | ||
| 32 | +import com.ibm.icu.util.Calendar; | ||
| 33 | +import com.lowagie.text.DocumentException; | ||
| 25 | 34 | ||
| 26 | /** | 35 | /** |
| 27 | - * <p><img src="http://centralit.com.br/images/logo_central.png"></p> | ||
| 28 | - * | ||
| 29 | - * <p><b>Company: </b> Central IT - Governança Corporativa - </p> | ||
| 30 | - * | ||
| 31 | - * <p><b>Description: </b></p> | 36 | + * <p> |
| 37 | + * <img src="http://centralit.com.br/images/logo_central.png"> | ||
| 38 | + * </p> | ||
| 39 | + * | ||
| 40 | + * <p> | ||
| 41 | + * <b>Company: </b> Central IT - Governança Corporativa - | ||
| 42 | + * </p> | ||
| 43 | + * | ||
| 44 | + * <p> | ||
| 45 | + * <b>Description: </b> | ||
| 46 | + * </p> | ||
| 32 | * Classe de serviços para a entidade TarjaAssinatura, a qual mantém as regras de negócio. | 47 | * Classe de serviços para a entidade TarjaAssinatura, a qual mantém as regras de negócio. |
| 33 | - * | 48 | + * |
| 34 | * @since 13 de abr de 2016 - 13:40:36 | 49 | * @since 13 de abr de 2016 - 13:40:36 |
| 35 | * @version 1.0.0 | 50 | * @version 1.0.0 |
| 36 | * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) | 51 | * @author ciro.junior (<a href="mailto:ciro.junior@centralit.com.br">ciro.junior@centralit.com.br</a>) |
| 37 | - * | 52 | + * |
| 38 | */ | 53 | */ |
| 39 | @Service("tarjaAssinaturaService") | 54 | @Service("tarjaAssinaturaService") |
| 40 | public class TarjaAssinaturaServiceImpl extends GenericServiceImpl<TarjaAssinatura, Long> implements TarjaAssinaturaService { | 55 | public class TarjaAssinaturaServiceImpl extends GenericServiceImpl<TarjaAssinatura, Long> implements TarjaAssinaturaService { |
| @@ -48,41 +63,48 @@ public class TarjaAssinaturaServiceImpl extends GenericServiceImpl<TarjaAssinatu | @@ -48,41 +63,48 @@ public class TarjaAssinaturaServiceImpl extends GenericServiceImpl<TarjaAssinatu | ||
| 48 | private AnexoImagemService anexoImagemService; | 63 | private AnexoImagemService anexoImagemService; |
| 49 | 64 | ||
| 50 | private TarjaAssinaturaDao tarjaAssinaturaDao; | 65 | private TarjaAssinaturaDao tarjaAssinaturaDao; |
| 51 | - | 66 | + |
| 52 | @Autowired | 67 | @Autowired |
| 53 | private DominioService dominioService; | 68 | private DominioService dominioService; |
| 54 | 69 | ||
| 70 | + @Value("${ecm.doc.key.decrypted.document}") | ||
| 71 | + public String keyDocument; | ||
| 72 | + | ||
| 55 | @Autowired | 73 | @Autowired |
| 56 | - public TarjaAssinaturaServiceImpl (TarjaAssinaturaDao tarjaAssinaturaDao, @Qualifier("tarjaAssinaturaValidator") Validator validator) { | 74 | + public TarjaAssinaturaServiceImpl( TarjaAssinaturaDao tarjaAssinaturaDao, @Qualifier("tarjaAssinaturaValidator") Validator validator ) { |
| 75 | + | ||
| 57 | this.dao = tarjaAssinaturaDao; | 76 | this.dao = tarjaAssinaturaDao; |
| 58 | this.tarjaAssinaturaDao = tarjaAssinaturaDao; | 77 | this.tarjaAssinaturaDao = tarjaAssinaturaDao; |
| 59 | this.validator = validator; | 78 | this.validator = validator; |
| 60 | } | 79 | } |
| 61 | 80 | ||
| 62 | - public TarjaAssinatura save (TarjaAssinatura tarjaAssinatura){ | 81 | + public TarjaAssinatura save(TarjaAssinatura tarjaAssinatura) { |
| 82 | + | ||
| 63 | return this.merge(tarjaAssinatura); | 83 | return this.merge(tarjaAssinatura); |
| 64 | } | 84 | } |
| 65 | 85 | ||
| 66 | @Override | 86 | @Override |
| 67 | public TarjaAssinatura merge(TarjaAssinatura tarjaAssinatura) { | 87 | public TarjaAssinatura merge(TarjaAssinatura tarjaAssinatura) { |
| 88 | + | ||
| 68 | this.validarEntidade(tarjaAssinatura, this.validator); | 89 | this.validarEntidade(tarjaAssinatura, this.validator); |
| 69 | return super.merge(tarjaAssinatura); | 90 | return super.merge(tarjaAssinatura); |
| 70 | } | 91 | } |
| 71 | 92 | ||
| 72 | @Override | 93 | @Override |
| 73 | - public TarjaAssinatura removeImagem (TarjaAssinatura tarjaAssinatura) { | ||
| 74 | - if(tarjaAssinatura.getAnexoImagem() != null) { | 94 | + public TarjaAssinatura removeImagem(TarjaAssinatura tarjaAssinatura) { |
| 95 | + | ||
| 96 | + if (tarjaAssinatura.getAnexoImagem() != null) { | ||
| 75 | anexoImagemService.removeById(tarjaAssinatura.getAnexoImagem().getId()); | 97 | anexoImagemService.removeById(tarjaAssinatura.getAnexoImagem().getId()); |
| 76 | tarjaAssinatura.setAnexoImagem(null); | 98 | tarjaAssinatura.setAnexoImagem(null); |
| 77 | } | 99 | } |
| 78 | return this.merge(tarjaAssinatura); | 100 | return this.merge(tarjaAssinatura); |
| 79 | } | 101 | } |
| 80 | 102 | ||
| 81 | - /**{@inheritDoc}*/ | 103 | + /** {@inheritDoc} */ |
| 82 | @Override | 104 | @Override |
| 83 | public void uploadAnexoImagemTarja(MultipartFile file, Long idOrganizacao, Long idTarjaAssinatura) { | 105 | public void uploadAnexoImagemTarja(MultipartFile file, Long idOrganizacao, Long idTarjaAssinatura) { |
| 84 | 106 | ||
| 85 | - AnexoImagem anexoImagem = new AnexoImagem (); | 107 | + AnexoImagem anexoImagem = new AnexoImagem(); |
| 86 | try { | 108 | try { |
| 87 | Organizacao organizacao = (Organizacao) this.organizacaoService.find(idOrganizacao); | 109 | Organizacao organizacao = (Organizacao) this.organizacaoService.find(idOrganizacao); |
| 88 | anexoImagem.setAnexo(file.getBytes()); | 110 | anexoImagem.setAnexo(file.getBytes()); |
| @@ -94,35 +116,143 @@ public class TarjaAssinaturaServiceImpl extends GenericServiceImpl<TarjaAssinatu | @@ -94,35 +116,143 @@ public class TarjaAssinaturaServiceImpl extends GenericServiceImpl<TarjaAssinatu | ||
| 94 | tarjaAssinatura.setAnexoImagem(anexoImagemSaved); | 116 | tarjaAssinatura.setAnexoImagem(anexoImagemSaved); |
| 95 | this.merge(tarjaAssinatura); | 117 | this.merge(tarjaAssinatura); |
| 96 | } catch (IOException ioe) { | 118 | } catch (IOException ioe) { |
| 97 | - LOG.error("N\u00e3o consegui anexar a imagem \u00e0 entidade TarjaAssinatura. Verifique a exce\u00e7\u00e3o para " | ||
| 98 | - + "identificar a causa: ", ioe.getCause()); | 119 | + LOG.error("N\u00e3o consegui anexar a imagem \u00e0 entidade TarjaAssinatura. Verifique a exce\u00e7\u00e3o para " + "identificar a causa: ", ioe.getCause()); |
| 99 | } | 120 | } |
| 100 | } | 121 | } |
| 101 | - | 122 | + |
| 102 | /** | 123 | /** |
| 103 | * Método responsável por obter tarja assinatura interna | 124 | * Método responsável por obter tarja assinatura interna |
| 125 | + * | ||
| 104 | * @author rogerio.cassimiro | 126 | * @author rogerio.cassimiro |
| 105 | * @return {@link TarjaAssinatura} | 127 | * @return {@link TarjaAssinatura} |
| 106 | */ | 128 | */ |
| 107 | @Override | 129 | @Override |
| 108 | public TarjaAssinatura getTarjaAssinaturaInterna() { | 130 | public TarjaAssinatura getTarjaAssinaturaInterna() { |
| 131 | + | ||
| 109 | Dominio dominio = dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA); | 132 | Dominio dominio = dominioService.findByChaveAndCodigo(Dominio.TIPO_ASSINATURA, Dominio.TIPO_ASSINATURA_INTERNA); |
| 110 | return this.tarjaAssinaturaDao.getTarjaAssinaturaInterna(dominio); | 133 | return this.tarjaAssinaturaDao.getTarjaAssinaturaInterna(dominio); |
| 111 | } | 134 | } |
| 112 | - | 135 | + |
| 113 | /** | 136 | /** |
| 114 | * Método responsável por gerar assinatura interna por usuário e por documento | 137 | * Método responsável por gerar assinatura interna por usuário e por documento |
| 138 | + * | ||
| 115 | * @author rogerio.cassimiro | 139 | * @author rogerio.cassimiro |
| 116 | * @param assinatura | 140 | * @param assinatura |
| 141 | + * @param formaCriacao | ||
| 117 | */ | 142 | */ |
| 118 | @Override | 143 | @Override |
| 119 | - public void gerarAssinaturaInternaUsuario(Assinatura assinatura) { | ||
| 120 | - String conteudo = assinatura.getConteudoTarja().getConteudo(); | ||
| 121 | - conteudo = conteudo.replaceAll(TarjaAssinatura.DATA_ASSINATURA, Calendar.getInstance().toString()) | ||
| 122 | - .replaceAll(TarjaAssinatura.FUNCAO_ASSINANTE, assinatura.getPessoa().getNome()) | ||
| 123 | - .replaceAll(TarjaAssinatura.FUNCAO_ASSINANTE, assinatura.getPessoa().getNome()) | ||
| 124 | - .replaceAll(TarjaAssinatura.FUNCAO_ASSINANTE, assinatura.getPessoa().getNome()) | ||
| 125 | - .replaceAll(TarjaAssinatura.FUNCAO_ASSINANTE, assinatura.getPessoa().getNome()); | ||
| 126 | - | 144 | + public void gerarAssinaturaInternaUsuario(Assinatura assinatura, Long formaCriacao) { |
| 145 | + | ||
| 146 | + TarjaAssinatura tarjaAssinatura = (TarjaAssinatura) tarjaAssinaturaDao.getReference(assinatura.getConteudoTarja().getIdTarjaAssinatura()); | ||
| 147 | + String conteudoAssinatura = getConteudoTarja(assinatura, tarjaAssinatura.getConteudo()); | ||
| 148 | + | ||
| 149 | + gerarAssinaturaDocAnexo(assinatura, tarjaAssinatura.getAnexoImagem(), conteudoAssinatura); | ||
| 150 | + if (formaCriacao == 1) | ||
| 151 | + gerarAssinaturaDocOnline(assinatura, tarjaAssinatura.getAnexoImagem(), conteudoAssinatura); | ||
| 152 | + } | ||
| 153 | + | ||
| 154 | + /** | ||
| 155 | + * Método responsável por montar o conteúdo substituindo as chaves | ||
| 156 | + * | ||
| 157 | + * @author rogerio.cassimiro | ||
| 158 | + * @param assinatura | ||
| 159 | + * @param conteudo | ||
| 160 | + * @return {@link String} | ||
| 161 | + */ | ||
| 162 | + private String getConteudoTarja(Assinatura assinatura, String conteudo) { | ||
| 163 | + | ||
| 164 | + conteudo = conteudo.replaceAll(TarjaAssinatura.NOME_ASSINANTE, assinatura.getPessoa().getNome()).replaceAll(TarjaAssinatura.FUNCAO_ASSINANTE, assinatura.getFuncao().getNome()).replaceAll(TarjaAssinatura.DATA_ASSINATURA, UtilDate.getDataSemHorasString(Calendar.getInstance().getTime())).replaceAll(TarjaAssinatura.HORA_ASSINATURA, UtilDate.getHoraAtualHHMMSS()).replaceAll(TarjaAssinatura.CODIGO_ASSINATURA, "TODO ASSINATURA"); | ||
| 165 | + return conteudo; | ||
| 166 | + } | ||
| 167 | + | ||
| 168 | + /** | ||
| 169 | + * Método responsável por gerar assinatura em documento anexo | ||
| 170 | + * | ||
| 171 | + * @author rogerio.cassimiro | ||
| 172 | + * @param assinatura | ||
| 173 | + * @param tarjaAssinatura | ||
| 174 | + * @param conteudo | ||
| 175 | + * @throws DocumentException | ||
| 176 | + * @throws IOException | ||
| 177 | + */ | ||
| 178 | + private void gerarAssinaturaDocAnexo(Assinatura assinatura, AnexoImagem anexoImagem, String conteudo) { | ||
| 179 | + | ||
| 180 | + assinatura.getConteudoTarja().setConteudoCriptografado(this.encrypted(conteudo)); | ||
| 181 | + assinatura.getConteudoTarja().setAnexoImagem(anexoImagem); | ||
| 182 | + } | ||
| 183 | + | ||
| 184 | + /** | ||
| 185 | + * Método responsável por gerar assinatura em documento online | ||
| 186 | + * | ||
| 187 | + * @author rogerio.cassimiro | ||
| 188 | + * @param assinatura | ||
| 189 | + * @param tarjaAssinatura | ||
| 190 | + * @param conteudo | ||
| 191 | + */ | ||
| 192 | + private void gerarAssinaturaDocOnline(Assinatura assinatura, AnexoImagem anexoImagem, String conteudo) { | ||
| 193 | + | ||
| 194 | + String conteudoOriginalDocOnLine = new String(); | ||
| 195 | + | ||
| 196 | + if (UtilObjeto.isReferencia(assinatura.getDocumentoGed().getConteudoTarja())) { | ||
| 197 | + conteudoOriginalDocOnLine = decrypted(assinatura.getDocumentoGed().getConteudoTarja().getConteudoCriptografado()); | ||
| 198 | + } else { | ||
| 199 | + assinatura.getDocumentoGed().setConteudoTarja(new ConteudoTarja()); | ||
| 200 | + conteudoOriginalDocOnLine = decrypted(assinatura.getDocumentoGed().getConteudoCriptografado()); | ||
| 201 | + } | ||
| 202 | + | ||
| 203 | + conteudoOriginalDocOnLine = conteudoOriginalDocOnLine.concat("<br/>"); | ||
| 204 | + conteudoOriginalDocOnLine = conteudoOriginalDocOnLine.concat(conteudo); | ||
| 205 | + | ||
| 206 | + assinatura.getDocumentoGed().getConteudoTarja().setConteudoCriptografado(this.encrypted(conteudoOriginalDocOnLine)); | ||
| 207 | + } | ||
| 208 | + | ||
| 209 | + /** | ||
| 210 | + * Método responsável por criptografar o texto através da chave | ||
| 211 | + * | ||
| 212 | + * @author rogerio.costa | ||
| 213 | + * @param text | ||
| 214 | + * @return {@link Byte} | ||
| 215 | + */ | ||
| 216 | + @Override | ||
| 217 | + public byte[] encrypted(String text) { | ||
| 218 | + | ||
| 219 | + try { | ||
| 220 | + byte[] encrypted = null; | ||
| 221 | + Key aesKey = new SecretKeySpec(this.keyDocument.getBytes(), "AES"); | ||
| 222 | + Cipher cipher = Cipher.getInstance("AES"); | ||
| 223 | + cipher.init(Cipher.ENCRYPT_MODE, aesKey); | ||
| 224 | + encrypted = cipher.doFinal(text.getBytes()); | ||
| 225 | + | ||
| 226 | + return encrypted; | ||
| 227 | + | ||
| 228 | + } catch (Exception e) { | ||
| 229 | + e.printStackTrace(); | ||
| 230 | + } | ||
| 231 | + return null; | ||
| 232 | + } | ||
| 233 | + | ||
| 234 | + /** | ||
| 235 | + * Método responsável por descriptografar texto | ||
| 236 | + * | ||
| 237 | + * @author rogerio.cassimiro | ||
| 238 | + * @param text | ||
| 239 | + * @return {@link String} | ||
| 240 | + */ | ||
| 241 | + @Override | ||
| 242 | + public String decrypted(byte[] text) { | ||
| 243 | + | ||
| 244 | + try { | ||
| 245 | + Cipher cipher = Cipher.getInstance("AES"); | ||
| 246 | + Key aesKey = new SecretKeySpec(this.keyDocument.getBytes(), "AES"); | ||
| 247 | + | ||
| 248 | + cipher.init(Cipher.DECRYPT_MODE, aesKey); | ||
| 249 | + String decrypted = new String(cipher.doFinal(text)); | ||
| 250 | + | ||
| 251 | + return decrypted; | ||
| 252 | + | ||
| 253 | + } catch (Exception e) { | ||
| 254 | + e.printStackTrace(); | ||
| 255 | + } | ||
| 256 | + return null; | ||
| 127 | } | 257 | } |
| 128 | } | 258 | } |
cit-ecm-web/src/main/java/br/com/centralit/controller/AssinaturaController.java
| @@ -2,6 +2,7 @@ package br.com.centralit.controller; | @@ -2,6 +2,7 @@ package br.com.centralit.controller; | ||
| 2 | 2 | ||
| 3 | import org.springframework.beans.factory.annotation.Autowired; | 3 | import org.springframework.beans.factory.annotation.Autowired; |
| 4 | import org.springframework.stereotype.Controller; | 4 | import org.springframework.stereotype.Controller; |
| 5 | +import org.springframework.web.bind.annotation.PathVariable; | ||
| 5 | import org.springframework.web.bind.annotation.RequestBody; | 6 | import org.springframework.web.bind.annotation.RequestBody; |
| 6 | import org.springframework.web.bind.annotation.RequestMapping; | 7 | import org.springframework.web.bind.annotation.RequestMapping; |
| 7 | import org.springframework.web.bind.annotation.RequestMethod; | 8 | import org.springframework.web.bind.annotation.RequestMethod; |
| @@ -69,4 +70,14 @@ public class AssinaturaController extends GenericController<Assinatura>{ | @@ -69,4 +70,14 @@ public class AssinaturaController extends GenericController<Assinatura>{ | ||
| 69 | return ViewsEcm.DocumentoGedEdit.class; | 70 | return ViewsEcm.DocumentoGedEdit.class; |
| 70 | } | 71 | } |
| 71 | 72 | ||
| 73 | + @RequestMapping(value = "/{id}", method = RequestMethod.GET) | ||
| 74 | + @ResponseBody | ||
| 75 | + public ResponseBodyWrapper getObject(@PathVariable("id") Long id) { | ||
| 76 | + ResultResponseVH<Assinatura> resultResponseVH = new ResultResponseVH<Assinatura>(genericService.getReference(id)); | ||
| 77 | + ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, ViewsEcm.AssinaturaEdit.class); | ||
| 78 | + return responseBody; | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + | ||
| 82 | + | ||
| 72 | } | 83 | } |
cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java
| @@ -573,5 +573,6 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | @@ -573,5 +573,6 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen | ||
| 573 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.USUARIO_SEM_PESSOA", "Usuário não está presente no Cadastro de Pessoa!", 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)); | 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)); | 575 | internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.DOCUMENTO_JA_ASSINADO", "Documento já foi assinado por este usuário!", dominio, modulo)); |
| 576 | + internacionalizacaoList.add(new Internacionalizacao("ECM.MSG.CONFIRMAR_ASSINATURA", "Deseja realmente assinar este documento? Após esta ação, não será possível cancelar!", dominio, modulo)); | ||
| 576 | } | 577 | } |
| 577 | } | 578 | } |
cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/AssinarDocumentoController.js
| @@ -27,6 +27,7 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | @@ -27,6 +27,7 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | ||
| 27 | _validarAssinaturaPorUsuario(documento.id).then(function(exibirIncluirAssinatura){ | 27 | _validarAssinaturaPorUsuario(documento.id).then(function(exibirIncluirAssinatura){ |
| 28 | $scope.exibirIncluirAssinatura = !(exibirIncluirAssinatura == true); | 28 | $scope.exibirIncluirAssinatura = !(exibirIncluirAssinatura == true); |
| 29 | $scope.exibirDocJaAssinado = !$scope.exibirIncluirAssinatura; | 29 | $scope.exibirDocJaAssinado = !$scope.exibirIncluirAssinatura; |
| 30 | + _getTarjaAssinaturaInterna(); | ||
| 30 | }); | 31 | }); |
| 31 | }); | 32 | }); |
| 32 | } | 33 | } |
| @@ -73,13 +74,22 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | @@ -73,13 +74,22 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | ||
| 73 | $scope.showAlert("error", $translate.instant('ECM.VALIDACAO.SENHA_ASSINATURA')); | 74 | $scope.showAlert("error", $translate.instant('ECM.VALIDACAO.SENHA_ASSINATURA')); |
| 74 | return; | 75 | return; |
| 75 | } | 76 | } |
| 76 | - | ||
| 77 | - AssinaturaRepository.saveAssinaturaInterna(_getAssinatura()).then(function(result){ | ||
| 78 | - _atualizarDocumentoSelecionadoAposAssinar(result.originalElement); | ||
| 79 | - _resetAssinar(); | ||
| 80 | - _atualizarDocDoProcessoAposAssinar(); | ||
| 81 | - $scope.showAlert("success", $translate.instant('ECM.ASSINADO_SUCESSO')); | 77 | + |
| 78 | + $scope.$openModalConfirm({ | ||
| 79 | + message: $translate.instant("ECM.MSG.CONFIRMAR_ASSINATURA"), | ||
| 80 | + callback: function () { | ||
| 81 | + $scope.setLoadingRemove(true); | ||
| 82 | + AssinaturaRepository.saveAssinaturaInterna(_getAssinatura()).then(function(result){ | ||
| 83 | + _atualizarDocumentoSelecionadoAposAssinar(result.originalElement); | ||
| 84 | + _resetAssinar(); | ||
| 85 | + _atualizarDocDoProcessoAposAssinar(); | ||
| 86 | + $scope.$modalConfirmInstance.dismiss('cancel'); | ||
| 87 | + $scope.setLoading(false); | ||
| 88 | + $scope.showAlert("success", $translate.instant('ECM.ASSINADO_SUCESSO')); | ||
| 89 | + }); | ||
| 90 | + } | ||
| 82 | }); | 91 | }); |
| 92 | + | ||
| 83 | }; | 93 | }; |
| 84 | 94 | ||
| 85 | function _getAssinatura(){ | 95 | function _getAssinatura(){ |
| @@ -89,7 +99,7 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | @@ -89,7 +99,7 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | ||
| 89 | idTask : $scope.$parent.task.id, | 99 | idTask : $scope.$parent.task.id, |
| 90 | password : $scope.autenticacao, | 100 | password : $scope.autenticacao, |
| 91 | pessoa : { id : $scope.pessoa.id}, | 101 | pessoa : { id : $scope.pessoa.id}, |
| 92 | - conteudoTarja : { id : $scope.tarjaAssinatura.id}}; | 102 | + conteudoTarja : { idTarjaAssinatura : $scope.tarjaAssinatura.id}}; |
| 93 | }; | 103 | }; |
| 94 | 104 | ||
| 95 | function _atualizarDocumentoSelecionadoAposAssinar(assinatura){ | 105 | function _atualizarDocumentoSelecionadoAposAssinar(assinatura){ |
| @@ -146,12 +156,13 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | @@ -146,12 +156,13 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | ||
| 146 | 156 | ||
| 147 | function _exibirNenhumaAssinatura(){ | 157 | function _exibirNenhumaAssinatura(){ |
| 148 | $scope.nenhumaAssinatura = $scope.documentosSelecionados.some(function(doc){ | 158 | $scope.nenhumaAssinatura = $scope.documentosSelecionados.some(function(doc){ |
| 149 | - return doc.assinaturas.length > 0; | 159 | + return doc.assinaturas.length == 0; |
| 150 | }); | 160 | }); |
| 151 | }; | 161 | }; |
| 152 | 162 | ||
| 153 | $scope.visualizarAssinatura = function(docSelecionado, assinatura){ | 163 | $scope.visualizarAssinatura = function(docSelecionado, assinatura){ |
| 154 | var valorOriginal = assinatura.isVisualizarAssinatura; | 164 | var valorOriginal = assinatura.isVisualizarAssinatura; |
| 165 | + var idAssinaturaSelecionada = null; | ||
| 155 | if(valorOriginal) | 166 | if(valorOriginal) |
| 156 | assinatura.isVisualizarAssinatura = false; | 167 | assinatura.isVisualizarAssinatura = false; |
| 157 | else | 168 | else |
| @@ -165,12 +176,18 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | @@ -165,12 +176,18 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | ||
| 165 | doc.assinaturas.forEach(function(ass){ | 176 | doc.assinaturas.forEach(function(ass){ |
| 166 | if(ass.id != assinatura.id) | 177 | if(ass.id != assinatura.id) |
| 167 | ass.isVisualizarAssinatura = false; | 178 | ass.isVisualizarAssinatura = false; |
| 168 | - else | 179 | + else { |
| 169 | ass.isVisualizarAssinatura = valorOriginal != true; | 180 | ass.isVisualizarAssinatura = valorOriginal != true; |
| 181 | + idAssinaturaSelecionada = angular.copy(ass.id); | ||
| 182 | + } | ||
| 170 | }); | 183 | }); |
| 171 | }); | 184 | }); |
| 172 | 185 | ||
| 173 | - $scope.visualizarAssinaturaOnLine = $scope.doc.formaCriacao.codigo == 1; | 186 | + $scope.visualizarAssinaturaOnLine = $scope.doc.formaCriacao.codigo == 1; |
| 187 | + _getTarjaDaAssinatura(idAssinaturaSelecionada); | ||
| 188 | +// if($scope.visualizarAssinaturaOnLine) { | ||
| 189 | +// //TODO TARJA DOC ON | ||
| 190 | +// } else | ||
| 174 | }); | 191 | }); |
| 175 | }; | 192 | }; |
| 176 | 193 | ||
| @@ -182,4 +199,11 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | @@ -182,4 +199,11 @@ citApp.controller('AssinarDocumentoController', [ '$scope', '$translate', 'Geren | ||
| 182 | }); | 199 | }); |
| 183 | }); | 200 | }); |
| 184 | }; | 201 | }; |
| 202 | + | ||
| 203 | + function _getTarjaDaAssinatura(idAssinaturaSelecionada){ | ||
| 204 | + AssinaturaRepository.get(idAssinaturaSelecionada).then(function(result){ | ||
| 205 | + $scope.assinaturaSelecionada = result.originalElement; | ||
| 206 | + }); | ||
| 207 | + } | ||
| 208 | + | ||
| 185 | }] ); | 209 | }] ); |
| 186 | \ No newline at end of file | 210 | \ No newline at end of file |
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturaEdit.html
| @@ -42,8 +42,4 @@ | @@ -42,8 +42,4 @@ | ||
| 42 | <!-- </div> --> | 42 | <!-- </div> --> |
| 43 | </div> | 43 | </div> |
| 44 | 44 | ||
| 45 | -<div class="row"> | ||
| 46 | - <div class="col-sm-12"> | ||
| 47 | - <div ng-include src="'/cit-ecm-web/html/assinatura/documentoTarjaAssinaturaInterna.html'" ng-show="exibirIncluirAssinatura"/> | ||
| 48 | - </div> | ||
| 49 | -</div> | ||
| 50 | \ No newline at end of file | 45 | \ No newline at end of file |
| 46 | +<div ng-include src="'/cit-ecm-web/html/assinatura/documentoTarjaAssinaturaInterna.html'" ng-show="exibirIncluirAssinatura"/> |
cit-ecm-web/src/main/webapp/html/assinatura/documentoAssinaturas.html
| @@ -41,15 +41,22 @@ | @@ -41,15 +41,22 @@ | ||
| 41 | </tr> | 41 | </tr> |
| 42 | <tr ng-repeat-end ng-show="assinatura.isVisualizarAssinatura"> | 42 | <tr ng-repeat-end ng-show="assinatura.isVisualizarAssinatura"> |
| 43 | <td colspan="7"> | 43 | <td colspan="7"> |
| 44 | - <iframe id="visualizacaoConteudoDoc" srcdoc="{{doc.conteudo}}" allowfullscreen class="iframe-assinatura" ng-if="visualizarAssinaturaOnLine"></iframe> | ||
| 45 | - <div ng-hide="visualizarAssinaturaOnLine"> | ||
| 46 | - doc anexo | 44 | + <iframe id="conteudoPrototipo" srcdoc="{{assinaturaSelecionada.documentoGed.conteudoTarja.conteudo}}" allowfullscreen class="iframe-assinatura" ng-if="visualizarAssinaturaOnLine"></iframe> |
| 45 | + <div class="row" style="margin-top: 10px; margin-bottom: 10px;" ng-hide="visualizarAssinaturaOnLine"> | ||
| 46 | + <div class="col-sm-2" ng-show="assinaturaSelecionada.conteudoTarja.anexoImagem.anexo"> | ||
| 47 | + <img ng-src="data:image/JPEG;base64,{{assinaturaSelecionada.conteudoTarja.anexoImagem.anexo}}" class="img-thumbnail" style="max-width: 80px; height: 80px;"> | ||
| 48 | + </div> | ||
| 49 | + <div class="col-md-10"> | ||
| 50 | + <iframe id="conteudoAssinado" srcdoc="{{assinaturaSelecionada.conteudoTarja.conteudo}}" allowfullscreen class="iframe-assinatura" | ||
| 51 | + style="min-height: 80px !important; max-height: 120px !important;"> | ||
| 52 | + </iframe> | ||
| 53 | + </div> | ||
| 47 | </div> | 54 | </div> |
| 48 | </td> | 55 | </td> |
| 49 | </tr> | 56 | </tr> |
| 50 | </tbody> | 57 | </tbody> |
| 51 | <tfoot> | 58 | <tfoot> |
| 52 | - <tr ng-hide="nenhumaAssinatura"> | 59 | + <tr ng-show="nenhumaAssinatura"> |
| 53 | <td colspan="7"> | 60 | <td colspan="7"> |
| 54 | <strong><translate>ECM.LABEL.DOCUMENTO_SEM_ASSINATURA</translate></strong> | 61 | <strong><translate>ECM.LABEL.DOCUMENTO_SEM_ASSINATURA</translate></strong> |
| 55 | </td> | 62 | </td> |
cit-ecm-web/src/main/webapp/html/assinatura/documentoTarjaAssinaturaInterna.html
| 1 | <div class="row" style="margin-bottom: 10px;"> | 1 | <div class="row" style="margin-bottom: 10px;"> |
| 2 | - <div class="col-sm-2" ng-show="tarjaAssinatura.anexoImagem.anexo"> | ||
| 3 | - <img ng-src="data:image/JPEG;base64,{{tarjaAssinatura.anexoImagem.anexo}}" class="img-thumbnail" style="max-width: 80px; height: 80px;"> | 2 | + <div class="col-sm-2"> |
| 3 | + <img ng-src="data:image/JPEG;base64,{{tarjaAssinatura.anexoImagem.anexo}}" class="img-thumbnail" style="max-width: 80px; height: 80px;" | ||
| 4 | + ng-show="tarjaAssinatura.anexoImagem.anexo"> | ||
| 4 | </div> | 5 | </div> |
| 5 | <div class="col-md-10"> | 6 | <div class="col-md-10"> |
| 6 | <iframe id="visualizacaoConteudoTarjaAssinaturaDocumento" srcdoc="{{tarjaAssinatura.conteudo}}" | 7 | <iframe id="visualizacaoConteudoTarjaAssinaturaDocumento" srcdoc="{{tarjaAssinatura.conteudo}}" |
| 7 | - allowfullscreen class="iframe-report" ng-show="!edit" style="min-height: 80px !important; max-height: 120px !important;" /> | 8 | + allowfullscreen class="iframe-assinatura" ng-show="!edit" style="min-height: 80px !important; max-height: 120px !important;" /> |
| 8 | </div> | 9 | </div> |
| 9 | </div> | 10 | </div> |
| 10 | \ No newline at end of file | 11 | \ No newline at end of file |